summaryrefslogtreecommitdiff
path: root/src/graphics.c
diff options
context:
space:
mode:
authorJacob1 <jfu614@gmail.com>2012-03-14 23:06:37 (GMT)
committer Jacob1 <jfu614@gmail.com>2012-03-14 23:06:37 (GMT)
commitafbe8cf38e298176e61d1125297393f7f9d5c73f (patch)
treed1e9bbff870fd77de18c076a91dda376a7a6f991 /src/graphics.c
parent021209904110fd8668271c2e024de039c6500bc1 (diff)
downloadpowder-afbe8cf38e298176e61d1125297393f7f9d5c73f.zip
powder-afbe8cf38e298176e61d1125297393f7f9d5c73f.tar.gz
Added smudge tool
Diffstat (limited to 'src/graphics.c')
-rw-r--r--src/graphics.c23
1 files changed, 22 insertions, 1 deletions
diff --git a/src/graphics.c b/src/graphics.c
index 410617c..0601394 100644
--- a/src/graphics.c
+++ b/src/graphics.c
@@ -2917,7 +2917,7 @@ void create_decorations(int x, int y, int rx, int ry, int r, int g, int b, int c
}
void create_decoration(int x, int y, int r, int g, int b, int click, int tool)
{
- int rp, tr,tg,tb;
+ int rp, tr = 0, tg = 0, tb = 0;
rp = pmap[y][x];
if (!rp)
return;
@@ -2946,6 +2946,27 @@ void create_decoration(int x, int y, int r, int g, int b, int click, int tool)
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));
}
+ else if (tool == DECO_SMUDGE)
+ {
+ int rx, ry, num = 0;
+ for (rx=-2; rx<3; rx++)
+ for (ry=-2; ry<3; ry++)
+ {
+ if ((pmap[y+ry][x+rx]&0xFF) && parts[pmap[y+ry][x+rx]>>8].dcolour)
+ {
+ num++;
+ tr += (parts[pmap[y+ry][x+rx]>>8].dcolour>>16)&0xFF;
+ tg += (parts[pmap[y+ry][x+rx]>>8].dcolour>>8)&0xFF;
+ tb += (parts[pmap[y+ry][x+rx]>>8].dcolour)&0xFF;
+ }
+ }
+ if (num == 0)
+ return;
+ tr = (int)((float)tr/num+.5);
+ tg = (int)((float)tg/num+.5);
+ tb = (int)((float)tb/num+.5);
+ parts[rp>>8].dcolour = ((255<<24)|(tr<<16)|(tg<<8)|tb);
+ }
}
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)
{