summaryrefslogtreecommitdiff
path: root/noncore/graphics/drawpad/filltool.cpp
authorleseb <leseb>2002-03-27 17:09:29 (UTC)
committer leseb <leseb>2002-03-27 17:09:29 (UTC)
commit4372bb8e59eb4b0d2fa5fba8f6525dc14873f239 (patch) (unidiff)
tree6947938ca5d22d3a373741ba3acfc20e8dd67729 /noncore/graphics/drawpad/filltool.cpp
parentfb056735d9a021787f83c6a791225a7ca70c1eb5 (diff)
downloadopie-4372bb8e59eb4b0d2fa5fba8f6525dc14873f239.zip
opie-4372bb8e59eb4b0d2fa5fba8f6525dc14873f239.tar.gz
opie-4372bb8e59eb4b0d2fa5fba8f6525dc14873f239.tar.bz2
Import/export dialogs, improved new page dialog, new tools, ...
Diffstat (limited to 'noncore/graphics/drawpad/filltool.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/graphics/drawpad/filltool.cpp88
1 files changed, 88 insertions, 0 deletions
diff --git a/noncore/graphics/drawpad/filltool.cpp b/noncore/graphics/drawpad/filltool.cpp
new file mode 100644
index 0000000..3297d21
--- a/dev/null
+++ b/noncore/graphics/drawpad/filltool.cpp
@@ -0,0 +1,88 @@
1/***************************************************************************
2 * *
3 * DrawPad - a drawing program for Opie Environment *
4 * *
5 * (C) 2002 by S. Prud'homme <prudhomme@laposte.net> *
6 * *
7 * This program is free software; you can redistribute it and/or modify *
8 * it under the terms of the GNU General Public License as published by *
9 * the Free Software Foundation; either version 2 of the License, or *
10 * (at your option) any later version. *
11 * *
12 ***************************************************************************/
13
14#include "filltool.h"
15
16#include "drawpad.h"
17#include "drawpadcanvas.h"
18
19#include <qimage.h>
20#include <qpixmap.h>
21
22FillTool::FillTool(DrawPad* drawPad, DrawPadCanvas* drawPadCanvas)
23 : Tool(drawPad, drawPadCanvas)
24{
25}
26
27FillTool::~FillTool()
28{
29}
30
31void FillTool::mousePressEvent(QMouseEvent* e)
32{
33 int x = e->x();
34 int y = e->y();
35
36 m_image = m_pDrawPadCanvas->currentPage()->convertToImage();
37 m_fillRgb = m_pDrawPad->brush().color().rgb();
38 m_oldRgb = m_image.pixel(x, y);
39
40 if (m_oldRgb != m_fillRgb) {
41 fillLine(x, y);
42
43 m_pDrawPadCanvas->currentPage()->convertFromImage(m_image);
44 m_pDrawPadCanvas->viewport()->update();
45 }
46}
47
48void FillTool::mouseReleaseEvent(QMouseEvent* e)
49{
50 Q_UNUSED(e)
51}
52
53void FillTool::mouseMoveEvent(QMouseEvent* e)
54{
55 Q_UNUSED(e)
56}
57
58void FillTool::fillLine(int x, int y)
59{
60 if ((x >= 0) && (x < m_image.width()) && (y >= 0) && (y < m_image.height())) {
61 if (m_image.pixel(x, y) == m_oldRgb) {
62 int x1, x2;
63
64 x1 = x - 1;
65 x2 = x + 1;
66
67 while ((x1 >= 0) && (m_image.pixel(x1, y) == m_oldRgb)) {
68 x1--;
69 }
70
71 while ((x2 < m_image.width()) && (m_image.pixel(x2, y) == m_oldRgb)) {
72 x2++;
73 }
74
75 for (int i = x1 + 1; i < x2; i++) {
76 m_image.setPixel(i, y, m_fillRgb);
77 }
78
79 for (int i = x1 + 1; i < x2; i++) {
80 fillLine(i, y - 1);
81 }
82
83 for (int i = x1 + 1; i < x2; i++) {
84 fillLine(i, y + 1);
85 }
86 }
87 }
88}