blob: 7d537bde4d274933edc8c7779bdf73373ad14840 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
/*
* TriangleBrush.h
*
* Created on: Jan 26, 2012
* Author: Savely Skresanov
*/
#ifndef TRIANGLEBRUSH_H_
#define TRIANGLEBRUSH_H_
#include <cmath>
#include "Brush.h"
class TriangleBrush: public Brush
{
public:
TriangleBrush(ui::Point size_):
Brush(size_)
{
SetRadius(size_);
};
virtual void GenerateBitmap()
{
if(bitmap)
delete[] bitmap;
bitmap = new unsigned char[size.X*size.Y];
int rx = radius.X;
int ry = radius.Y;
for(int x = -rx; x <= rx; x++)
{
for(int y = -ry; y <= ry; y++)
{
if ((abs((rx+2*x)*ry+rx*y) + abs(2*rx*(y-ry)) + abs((rx-2*x)*ry+rx*y))<=(4*rx*ry))
{
bitmap[(y+ry)*(size.X)+x+rx] = 255;
}
else
{
bitmap[(y+ry)*(size.X)+x+rx] = 0;
}
}
}
}
};
#endif /* TRIANGLEBRUSH_H_ */
|