summaryrefslogtreecommitdiff
path: root/src/powder.c
diff options
context:
space:
mode:
authorCate <cate@cate-6sh2.(none)>2011-07-12 14:55:25 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2011-07-12 15:29:22 (GMT)
commit45fe00bef96958f6f26174a6fbce6bf0498a4a98 (patch)
treef97d60db772fe7fa8f3fe1fbc98df1899a3bff40 /src/powder.c
parentd7053422f14d60daca97a3c3c321ae82fd82025a (diff)
downloadpowder-45fe00bef96958f6f26174a6fbce6bf0498a4a98.zip
powder-45fe00bef96958f6f26174a6fbce6bf0498a4a98.tar.gz
Added Cracker changes for adding a triangle brush! :DDD Seems to work without any issues.
Diffstat (limited to 'src/powder.c')
-rw-r--r--src/powder.c26
1 files changed, 20 insertions, 6 deletions
diff --git a/src/powder.c b/src/powder.c
index 853914d..6bce790 100644
--- a/src/powder.c
+++ b/src/powder.c
@@ -2687,7 +2687,7 @@ int create_parts(int x, int y, int rx, int ry, int c)
else
for (j=-ry; j<=ry; j++)
for (i=-rx; i<=rx; i++)
- if ((CURRENT_BRUSH==CIRCLE_BRUSH && (pow(i,2))/(pow(rx,2))+(pow(j,2))/(pow(ry,2))<=1)||(CURRENT_BRUSH==SQUARE_BRUSH&&i*j<=ry*rx))
+ if (InCurrentBrush(i ,j ,rx ,ry))
delete_part(x+i, y+j);
return 1;
}
@@ -2702,7 +2702,7 @@ int create_parts(int x, int y, int rx, int ry, int c)
else
for (j=-ry; j<=ry; j++)
for (i=-rx; i<=rx; i++)
- if ((CURRENT_BRUSH==CIRCLE_BRUSH && (pow(i,2))/(pow(rx,2))+(pow(j,2))/(pow(ry,2))<=1)||(CURRENT_BRUSH==SQUARE_BRUSH&&i*j<=ry*rx))
+ if (InCurrentBrush(i ,j ,rx ,ry))
{
if ( x+i<0 || y+j<0 || x+i>=XRES || y+j>=YRES)
continue;
@@ -2726,7 +2726,7 @@ int create_parts(int x, int y, int rx, int ry, int c)
else
for (j=-ry; j<=ry; j++)
for (i=-rx; i<=rx; i++)
- if ((CURRENT_BRUSH==CIRCLE_BRUSH && (pow(i,2))/(pow(rx,2))+(pow(j,2))/(pow(ry,2))<=1)||(CURRENT_BRUSH==SQUARE_BRUSH&&i*j<=ry*rx))
+ if (InCurrentBrush(i ,j ,rx ,ry))
delete_part(x+i, y+j);
SLALT = stemp;
return 1;
@@ -2748,7 +2748,7 @@ int create_parts(int x, int y, int rx, int ry, int c)
else
for (j=-ry; j<=ry; j++)
for (i=-rx; i<=rx; i++)
- if ((CURRENT_BRUSH==CIRCLE_BRUSH && (pow(i,2))/(pow(rx,2))+(pow(j,2))/(pow(ry,2))<=1)||(CURRENT_BRUSH==SQUARE_BRUSH&&i*j<=ry*rx))
+ if (InCurrentBrush(i ,j ,rx ,ry))
{
if ( x+i<0 || y+j<0 || x+i>=XRES || y+j>=YRES)
continue;
@@ -2773,12 +2773,26 @@ int create_parts(int x, int y, int rx, int ry, int c)
else
for (j=-ry; j<=ry; j++)
for (i=-rx; i<=rx; i++)
- if ((CURRENT_BRUSH==CIRCLE_BRUSH && (pow(i,2))/(pow(rx,2))+(pow(j,2))/(pow(ry,2))<=1)||(CURRENT_BRUSH==SQUARE_BRUSH&&i*j<=ry*rx))
+ if (InCurrentBrush(i ,j ,rx ,ry))
if (create_part(-2, x+i, y+j, c)==-1)
f = 1;
return !f;
}
-
+int InCurrentBrush(int i, int j, int rx, int ry)
+{
+ switch(CURRENT_BRUSH)
+ {
+ case CIRCLE_BRUSH:
+ return ((pow(i,2))/(pow(rx,2))+(pow(j,2))/(pow(ry,2))<=1);
+ break;
+ case SQUARE_BRUSH:
+ return (i*j<=ry*rx);
+ break;
+ case TRI_BRUSH:
+ return (j <= ry ) && ( j >= (((-2.0*ry)/rx)*i) -ry) && ( j >= (((-2.0*ry)/(-rx))*i)-ry ) ;
+ break;
+ }
+}
void create_line(int x1, int y1, int x2, int y2, int rx, int ry, int c)
{
int cp=abs(y2-y1)>abs(x2-x1), x, y, dx, dy, sy;