summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjacksonmj <mj-pt@jacksonmj.co.uk>2011-09-25 21:16:08 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2011-09-26 15:53:37 (GMT)
commit820871e92b549c23ca645f1c959cc5aeb8b19fe5 (patch)
tree2370e2d1ee53df1e9a795305e575eca58729c071 /src
parent1be8ce6c5d4f2da653f4331584f0edcd2ab3abde (diff)
downloadpowder-820871e92b549c23ca645f1c959cc5aeb8b19fe5.zip
powder-820871e92b549c23ca645f1c959cc5aeb8b19fe5.tar.gz
Fix lighten/darken tools so they work with different display pixel formats
Diffstat (limited to 'src')
-rw-r--r--src/graphics.c16
-rw-r--r--src/interface.c4
2 files changed, 10 insertions, 10 deletions
diff --git a/src/graphics.c b/src/graphics.c
index 8b63dc5..152a099 100644
--- a/src/graphics.c
+++ b/src/graphics.c
@@ -3968,19 +3968,19 @@ void create_decoration(int x, int y, int r, int g, int b, int click, int tool)
{//maybe get a better lighten/darken?
if (parts[rp>>8].dcolour == 0)
return;
- tr = PIXR(parts[rp>>8].dcolour)&0xFF;
- tg = PIXG(parts[rp>>8].dcolour);
- tb = PIXB(parts[rp>>8].dcolour);
- parts[rp>>8].dcolour = ((255<<24)|(clamp_flt(tr+(255-tr)*0.02+1, 0,255)<<16)|(clamp_flt(tg+(255-tg)*0.02+1, 0,255)<<8)|clamp_flt(tb+(255-tb)*0.02+1, 0,255));
+ tr = (parts[rp>>8].dcolour>>16)&0xFF;
+ tg = (parts[rp>>8].dcolour>>8)&0xFF;
+ tb = (parts[rp>>8].dcolour)&0xFF;
+ parts[rp>>8].dcolour = ((parts[rp>>8].dcolour&0xFF000000)|(clamp_flt(tr+(255-tr)*0.02+1, 0,255)<<16)|(clamp_flt(tg+(255-tg)*0.02+1, 0,255)<<8)|clamp_flt(tb+(255-tb)*0.02+1, 0,255));
}
else if (tool == DECO_DARKEN)
{
if (parts[rp>>8].dcolour == 0)
return;
- tr = PIXR(parts[rp>>8].dcolour)&0xFF;
- tg = PIXG(parts[rp>>8].dcolour);
- tb = PIXB(parts[rp>>8].dcolour);
- parts[rp>>8].dcolour = ((255<<24)|(clamp_flt(tr-(tr)*0.02, 0,255)<<16)|(clamp_flt(tg-(tg)*0.02, 0,255)<<8)|clamp_flt(tb-(tb)*0.02, 0,255));
+ tr = (parts[rp>>8].dcolour>>16)&0xFF;
+ tg = (parts[rp>>8].dcolour>>8)&0xFF;
+ tb = (parts[rp>>8].dcolour)&0xFF;
+ parts[rp>>8].dcolour = ((parts[rp>>8].dcolour&0xFF000000)|(clamp_flt(tr-(tr)*0.02, 0,255)<<16)|(clamp_flt(tg-(tg)*0.02, 0,255)<<8)|clamp_flt(tb-(tb)*0.02, 0,255));
}
}
void line_decorations(int x1, int y1, int x2, int y2, int rx, int ry, int r, int g, int b, int click, int tool)
diff --git a/src/interface.c b/src/interface.c
index d15eb9b..8bfaa3b 100644
--- a/src/interface.c
+++ b/src/interface.c
@@ -2229,9 +2229,9 @@ int color_menu_ui(pixel *vid_buf, int i, int *cr, int *cg, int *cb, int b, int b
for (c=1; c<27; c++)
{
if (n == DECO_LIGHTEN)
- vid_buf[(XRES+BARSIZE)*(y+a)+((x-xoff)+c)] = toollist[n].colour - a*0x0A0A0A;
+ vid_buf[(XRES+BARSIZE)*(y+a)+((x-xoff)+c)] = PIXRGB(PIXR(toollist[n].colour)-10*a, PIXG(toollist[n].colour)-10*a, PIXB(toollist[n].colour)-10*a);
else if (n == DECO_DARKEN)
- vid_buf[(XRES+BARSIZE)*(y+a)+((x-xoff)+c)] = toollist[n].colour + a*0x0A0A0A;
+ vid_buf[(XRES+BARSIZE)*(y+a)+((x-xoff)+c)] = PIXRGB(PIXR(toollist[n].colour)+10*a, PIXG(toollist[n].colour)+10*a, PIXB(toollist[n].colour)+10*a);
else if (n == DECO_DRAW)
vid_buf[(XRES+BARSIZE)*(y+a)+((x-xoff)+c)] = PIXRGB(*cr,*cg,*cb);
else