mirror of
https://github.com/The-Powder-Toy/The-Powder-Toy.git
synced 2025-09-03 21:12:34 +02:00
faster ellipse brush resizing that doesn't lag/freeze
This commit is contained in:
@@ -26,17 +26,35 @@ public:
|
|||||||
bitmap = new unsigned char[size.X*size.Y];
|
bitmap = new unsigned char[size.X*size.Y];
|
||||||
int rx = radius.X;
|
int rx = radius.X;
|
||||||
int ry = radius.Y;
|
int ry = radius.Y;
|
||||||
for(int x = 0; x <= radius.X*2; x++)
|
|
||||||
|
if (!rx)
|
||||||
{
|
{
|
||||||
for(int y = 0; y <= radius.Y*2; y++)
|
for (int j = 0; j <= 2*ry; j++)
|
||||||
{
|
{
|
||||||
if((pow(x-radius.X,2.0f)*pow(ry,2.0f)+pow(y-radius.Y,2.0f)*pow(rx,2.0f)<=pow(rx,2.0f)*pow(ry,2.0f)))
|
bitmap[j*(size.X)+rx] = 255;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
int yTop = ry, i, j, yBottom;
|
||||||
|
for (i = 0; i <= rx; i++)
|
||||||
|
{
|
||||||
|
while (pow(i-rx,2.0f)*pow(ry,2.0f) + pow(yTop-ry,2.0f)*pow(rx,2.0f) <= pow(rx,2.0f)*pow(ry,2.0f))
|
||||||
|
yTop = yTop + 1;
|
||||||
|
yTop = yTop - 1;
|
||||||
|
yBottom = 2*ry - yTop;
|
||||||
|
for (int j = 0; j <= ry*2; j++)
|
||||||
{
|
{
|
||||||
bitmap[y*(size.X)+x] = 255;
|
if (j >= yBottom && j <= yTop)
|
||||||
}
|
{
|
||||||
else
|
bitmap[j*(size.X)+i] = 255;
|
||||||
{
|
bitmap[j*(size.X)+2*rx-i] = 255;
|
||||||
bitmap[y*(size.X)+x] = 0;
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
bitmap[j*(size.X)+i] = 0;
|
||||||
|
bitmap[j*(size.X)+2*rx-i] = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user