This repository has been archived by the owner on Apr 17, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathScatteredCircleBrush.hpp
67 lines (57 loc) · 1.9 KB
/
ScatteredCircleBrush.hpp
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#if !defined(__SCATTERED_CIRCLE_BRUSH_H_)
#define __SCATTERED_CIRCLE_BRUSH_H_
#include "CircleBrush.hpp"
#include "gl_helper.h"
#include "impressionistDoc.h"
#include "impressionistUI.h"
#include <functional>
using namespace GLHelper;
using namespace std;
extern float frand();
class ScatteredCircleBrush : public CircleBrush {
public:
ScatteredCircleBrush(ImpressionistDoc *pDoc = NULL, char *name = NULL)
: CircleBrush(pDoc, name) {}
void BrushBegin(const Point source, const Point target, int rad, GLubyte* color) {
glPointSize(1);
BrushMove(source, target);
}
bool within_circle(float x, float y, float r) {
float dx = abs(x);
if (dx > r)
return false;
float dy = abs(y);
if (dy > r)
return false;
if (dx + dy <= r)
return true;
return (dx * dx + dy * dy <= r * r);
return true;
}
void BrushMove(const Point source, const Point target, GLubyte* color = nullptr, bool randomize = false) {
ImpressionistDoc *pDoc = GetDocument();
if (source.x <= 0 || source.x >= pDoc->m_nPaintWidth || source.y <= 0 ||
source.y >= pDoc->m_nPaintHeight) {
return;
}
const int half = pDoc->getSize() / 2;
const int num_points = 3;
for (int i = 0; i < num_points; i++) {
Point t = target + Point::rand(-half, half);
CircleBrush::BrushMove(t, t);
}
}
void select() {
ImpressionistDoc* pDoc = GetDocument();
pDoc->m_pUI->m_BrushWidthSlider->deactivate();
pDoc->m_pUI->m_BrushAngleSlider->deactivate();
pDoc->m_pUI->m_StrokeDirection->deactivate();
pDoc->m_pUI->m_BrushSizeSlider->activate();
pDoc->m_pUI->m_BrushAlphaSlider->activate();
pDoc->m_pUI->m_BrushBlurSlider->deactivate();
pDoc->m_pUI->m_ColorBlending->activate();
pDoc->m_pUI->m_MultiResPaint->deactivate();
pDoc->m_pUI->m_BrushCurvatureSlider->deactivate();
}
};
#endif // __SCATTERED_CIRCLE_BRUSH_H_