1
1
#include " floodfillaction.h"
2
+ #include " ../state.h"
2
3
#include " ../image.h"
3
4
4
5
FloodFillAction::FloodFillAction ()
@@ -20,29 +21,37 @@ void FloodFillActionFactory::MouseMove(Image* image, int x, int y)
20
21
void FloodFillActionFactory::PrimaryMouseButtonDown (Image* image, bool shift, bool ctrl, bool alt, bool super)
21
22
{ }
22
23
23
- void FloodFillActionFactory::PrimaryMouseButtonUp (Image* image, bool shift, bool ctrl, bool alt, bool super )
24
+ void FloodFillActionFactory::floodFill ( class Layer * layer, float color[] )
24
25
{
25
- static float foreColor[4 ] = { 0 .0f , 0 .0f , 0 .0f , 1 .0f };
26
- auto layer = image->_layers [image->_selectedLayer ];
27
26
for (int y = 0 ; y < layer->_size [1 ]; ++y)
28
27
{
29
28
for (int x = 0 ; x < layer->_size [0 ]; ++x)
30
29
{
31
30
auto p = (x * layer->_size [1 ] + y);
32
31
for (int b = 0 ; b < layer->_bpp ; b++)
33
32
{
34
- layer->_data [p * layer->_bpp + b] = foreColor [b] * 255 ;
33
+ layer->_data [p * layer->_bpp + b] = color [b] * 255 ;
35
34
}
36
35
}
37
36
}
37
+ }
38
+
39
+ void FloodFillActionFactory::PrimaryMouseButtonUp (Image* image, bool shift, bool ctrl, bool alt, bool super)
40
+ {
41
+ auto layer = image->_layers [image->_selectedLayer ];
42
+ floodFill (layer, foreColor);
38
43
layer->setDirty ();
39
44
}
40
45
41
46
void FloodFillActionFactory::SecondaryMouseButtonDown (Image* image, bool shift, bool ctrl, bool alt, bool super)
42
47
{ }
43
48
44
49
void FloodFillActionFactory::SecondaryMouseButtonUp (Image* image, bool shift, bool ctrl, bool alt, bool super)
45
- { }
50
+ {
51
+ auto layer = image->_layers [image->_selectedLayer ];
52
+ floodFill (layer, backColor);
53
+ layer->setDirty ();
54
+ }
46
55
47
56
GLuint FloodFillActionFactory::ToolHelperImage ()
48
57
{
0 commit comments