summaryrefslogtreecommitdiff
path: root/noncore/graphics/drawpad
Unidiff
Diffstat (limited to 'noncore/graphics/drawpad') (more/less context) (show whitespace changes)
-rw-r--r--noncore/graphics/drawpad/drawpad.cpp11
-rw-r--r--noncore/graphics/drawpad/drawpad.h4
-rw-r--r--noncore/graphics/drawpad/ellipsetool.cpp7
-rw-r--r--noncore/graphics/drawpad/filledellipsetool.cpp8
-rw-r--r--noncore/graphics/drawpad/linetool.cpp7
-rw-r--r--noncore/graphics/drawpad/pointtool.cpp12
6 files changed, 43 insertions, 6 deletions
diff --git a/noncore/graphics/drawpad/drawpad.cpp b/noncore/graphics/drawpad/drawpad.cpp
index 45fb886..b29f5ba 100644
--- a/noncore/graphics/drawpad/drawpad.cpp
+++ b/noncore/graphics/drawpad/drawpad.cpp
@@ -90,12 +90,18 @@ DrawPad::DrawPad(QWidget* parent, const char* name)
90 thumbnailViewAction->addTo(toolsPopupMenu); 90 thumbnailViewAction->addTo(toolsPopupMenu);
91 91
92 QAction* pageInformationAction = new QAction(tr("Page Information"), tr("Page Information..."), 0, this); 92 QAction* pageInformationAction = new QAction(tr("Page Information"), tr("Page Information..."), 0, this);
93 connect(pageInformationAction, SIGNAL(activated()), this, SLOT(pageInformation())); 93 connect(pageInformationAction, SIGNAL(activated()), this, SLOT(pageInformation()));
94 pageInformationAction->addTo(toolsPopupMenu); 94 pageInformationAction->addTo(toolsPopupMenu);
95 95
96 toolsPopupMenu->insertSeparator();
97
98 m_pAntiAliasingAction = new QAction(tr("Anti-Aliasing"), QString::null, 0, this);
99 m_pAntiAliasingAction->setToggleAction(true);
100 m_pAntiAliasingAction->addTo(toolsPopupMenu);
101
96 menuBar->insertItem(tr("Tools"), toolsPopupMenu); 102 menuBar->insertItem(tr("Tools"), toolsPopupMenu);
97 103
98 // init page toolbar 104 // init page toolbar
99 105
100 QPEToolBar* pageToolBar = new QPEToolBar(this); 106 QPEToolBar* pageToolBar = new QPEToolBar(this);
101 107
@@ -272,12 +278,17 @@ DrawPad::~DrawPad()
272 if (file.open(IO_WriteOnly)) { 278 if (file.open(IO_WriteOnly)) {
273 m_pDrawPadCanvas->save(&file); 279 m_pDrawPadCanvas->save(&file);
274 file.close(); 280 file.close();
275 } 281 }
276} 282}
277 283
284bool DrawPad::antiAliasing()
285{
286 return (m_pAntiAliasingAction->isOn());
287}
288
278void DrawPad::newPage() 289void DrawPad::newPage()
279{ 290{
280 QRect rect = m_pDrawPadCanvas->contentsRect(); 291 QRect rect = m_pDrawPadCanvas->contentsRect();
281 292
282 NewPageDialog newPageDialog(rect.width(), rect.height(), m_pen.color(), m_brush.color(), this); 293 NewPageDialog newPageDialog(rect.width(), rect.height(), m_pen.color(), m_brush.color(), this);
283 294
diff --git a/noncore/graphics/drawpad/drawpad.h b/noncore/graphics/drawpad/drawpad.h
index ce62802..8e29c61 100644
--- a/noncore/graphics/drawpad/drawpad.h
+++ b/noncore/graphics/drawpad/drawpad.h
@@ -35,12 +35,14 @@ public:
35 ~DrawPad(); 35 ~DrawPad();
36 36
37 Tool* tool() { return m_pTool; } 37 Tool* tool() { return m_pTool; }
38 QPen pen() { return m_pen; } 38 QPen pen() { return m_pen; }
39 QBrush brush() { return m_brush; } 39 QBrush brush() { return m_brush; }
40 40
41 bool antiAliasing();
42
41private slots: 43private slots:
42 void newPage(); 44 void newPage();
43 void clearPage(); 45 void clearPage();
44 void deletePage(); 46 void deletePage();
45 47
46 void setPointTool(); 48 void setPointTool();
@@ -71,12 +73,14 @@ private:
71 DrawPadCanvas* m_pDrawPadCanvas; 73 DrawPadCanvas* m_pDrawPadCanvas;
72 74
73 Tool* m_pTool; 75 Tool* m_pTool;
74 QPen m_pen; 76 QPen m_pen;
75 QBrush m_brush; 77 QBrush m_brush;
76 78
79 QAction* m_pAntiAliasingAction;
80
77 QAction* m_pUndoAction; 81 QAction* m_pUndoAction;
78 QAction* m_pRedoAction; 82 QAction* m_pRedoAction;
79 83
80 QAction* m_pFirstPageAction; 84 QAction* m_pFirstPageAction;
81 QAction* m_pPreviousPageAction; 85 QAction* m_pPreviousPageAction;
82 QAction* m_pNextPageAction; 86 QAction* m_pNextPageAction;
diff --git a/noncore/graphics/drawpad/ellipsetool.cpp b/noncore/graphics/drawpad/ellipsetool.cpp
index 733bade..0cdb731 100644
--- a/noncore/graphics/drawpad/ellipsetool.cpp
+++ b/noncore/graphics/drawpad/ellipsetool.cpp
@@ -29,13 +29,15 @@ EllipseTool::~EllipseTool()
29} 29}
30 30
31void EllipseTool::drawFinalShape(QPainter& p) 31void EllipseTool::drawFinalShape(QPainter& p)
32{ 32{
33 p.setRasterOp(Qt::NotROP); 33 p.setRasterOp(Qt::NotROP);
34 p.drawRect(QRect(m_polyline[2], m_polyline[0])); 34 p.drawRect(QRect(m_polyline[2], m_polyline[0]));
35 p.setRasterOp(Qt::CopyROP);
35 36
37 if (m_pDrawPad->antiAliasing()) {
36 QRect r = m_polyline.boundingRect(); 38 QRect r = m_polyline.boundingRect();
37 r = r.normalize(); 39 r = r.normalize();
38 r.setLeft(r.left() - m_pDrawPad->pen().width()); 40 r.setLeft(r.left() - m_pDrawPad->pen().width());
39 r.setTop(r.top() - m_pDrawPad->pen().width()); 41 r.setTop(r.top() - m_pDrawPad->pen().width());
40 r.setRight(r.right() + m_pDrawPad->pen().width()); 42 r.setRight(r.right() + m_pDrawPad->pen().width());
41 r.setBottom(r.bottom() + m_pDrawPad->pen().width()); 43 r.setBottom(r.bottom() + m_pDrawPad->pen().width());
@@ -61,14 +63,17 @@ void EllipseTool::drawFinalShape(QPainter& p)
61 bigAreaPainter.end(); 63 bigAreaPainter.end();
62 64
63 bigAreaImage = bigAreaPixmap.convertToImage(); 65 bigAreaImage = bigAreaPixmap.convertToImage();
64 areaImage = bigAreaImage.smoothScale(bigAreaImage.width() / 3, bigAreaImage.height() / 3); 66 areaImage = bigAreaImage.smoothScale(bigAreaImage.width() / 3, bigAreaImage.height() / 3);
65 areaPixmap.convertFromImage(areaImage); 67 areaPixmap.convertFromImage(areaImage);
66 68
67 p.setRasterOp(Qt::CopyROP);
68 p.drawPixmap(r.x(), r.y(), areaPixmap); 69 p.drawPixmap(r.x(), r.y(), areaPixmap);
70 } else {
71 p.setPen(m_pDrawPad->pen());
72 p.drawEllipse(QRect(m_polyline[2], m_polyline[0]));
73 }
69} 74}
70 75
71void EllipseTool::drawTemporaryShape(QPainter& p) 76void EllipseTool::drawTemporaryShape(QPainter& p)
72{ 77{
73 p.setRasterOp(Qt::NotROP); 78 p.setRasterOp(Qt::NotROP);
74 p.drawRect(QRect(m_polyline[2], m_polyline[1])); 79 p.drawRect(QRect(m_polyline[2], m_polyline[1]));
diff --git a/noncore/graphics/drawpad/filledellipsetool.cpp b/noncore/graphics/drawpad/filledellipsetool.cpp
index 2f7ec8f..6b5bbc6 100644
--- a/noncore/graphics/drawpad/filledellipsetool.cpp
+++ b/noncore/graphics/drawpad/filledellipsetool.cpp
@@ -29,13 +29,15 @@ FilledEllipseTool::~FilledEllipseTool()
29} 29}
30 30
31void FilledEllipseTool::drawFinalShape(QPainter& p) 31void FilledEllipseTool::drawFinalShape(QPainter& p)
32{ 32{
33 p.setRasterOp(Qt::NotROP); 33 p.setRasterOp(Qt::NotROP);
34 p.drawRect(QRect(m_polyline[2], m_polyline[0])); 34 p.drawRect(QRect(m_polyline[2], m_polyline[0]));
35 p.setRasterOp(Qt::CopyROP);
35 36
37 if (m_pDrawPad->antiAliasing()) {
36 QRect r = m_polyline.boundingRect(); 38 QRect r = m_polyline.boundingRect();
37 r = r.normalize(); 39 r = r.normalize();
38 r.setLeft(r.left() - m_pDrawPad->pen().width()); 40 r.setLeft(r.left() - m_pDrawPad->pen().width());
39 r.setTop(r.top() - m_pDrawPad->pen().width()); 41 r.setTop(r.top() - m_pDrawPad->pen().width());
40 r.setRight(r.right() + m_pDrawPad->pen().width()); 42 r.setRight(r.right() + m_pDrawPad->pen().width());
41 r.setBottom(r.bottom() + m_pDrawPad->pen().width()); 43 r.setBottom(r.bottom() + m_pDrawPad->pen().width());
@@ -62,14 +64,18 @@ void FilledEllipseTool::drawFinalShape(QPainter& p)
62 bigAreaPainter.end(); 64 bigAreaPainter.end();
63 65
64 bigAreaImage = bigAreaPixmap.convertToImage(); 66 bigAreaImage = bigAreaPixmap.convertToImage();
65 areaImage = bigAreaImage.smoothScale(bigAreaImage.width() / 3, bigAreaImage.height() / 3); 67 areaImage = bigAreaImage.smoothScale(bigAreaImage.width() / 3, bigAreaImage.height() / 3);
66 areaPixmap.convertFromImage(areaImage); 68 areaPixmap.convertFromImage(areaImage);
67 69
68 p.setRasterOp(Qt::CopyROP);
69 p.drawPixmap(r.x(), r.y(), areaPixmap); 70 p.drawPixmap(r.x(), r.y(), areaPixmap);
71 } else {
72 p.setPen(m_pDrawPad->pen());
73 p.setBrush(m_pDrawPad->brush());
74 p.drawEllipse(QRect(m_polyline[2], m_polyline[0]));
75 }
70} 76}
71 77
72void FilledEllipseTool::drawTemporaryShape(QPainter& p) 78void FilledEllipseTool::drawTemporaryShape(QPainter& p)
73{ 79{
74 p.setRasterOp(Qt::NotROP); 80 p.setRasterOp(Qt::NotROP);
75 p.drawRect(QRect(m_polyline[2], m_polyline[1])); 81 p.drawRect(QRect(m_polyline[2], m_polyline[1]));
diff --git a/noncore/graphics/drawpad/linetool.cpp b/noncore/graphics/drawpad/linetool.cpp
index 99cd6de..b6baa2a 100644
--- a/noncore/graphics/drawpad/linetool.cpp
+++ b/noncore/graphics/drawpad/linetool.cpp
@@ -29,13 +29,15 @@ LineTool::~LineTool()
29} 29}
30 30
31void LineTool::drawFinalShape(QPainter& p) 31void LineTool::drawFinalShape(QPainter& p)
32{ 32{
33 p.setRasterOp(Qt::NotROP); 33 p.setRasterOp(Qt::NotROP);
34 p.drawLine(m_polyline[2], m_polyline[0]); 34 p.drawLine(m_polyline[2], m_polyline[0]);
35 p.setRasterOp(Qt::CopyROP);
35 36
37 if (m_pDrawPad->antiAliasing()) {
36 QRect r = m_polyline.boundingRect(); 38 QRect r = m_polyline.boundingRect();
37 r = r.normalize(); 39 r = r.normalize();
38 r.setLeft(r.left() - m_pDrawPad->pen().width()); 40 r.setLeft(r.left() - m_pDrawPad->pen().width());
39 r.setTop(r.top() - m_pDrawPad->pen().width()); 41 r.setTop(r.top() - m_pDrawPad->pen().width());
40 r.setRight(r.right() + m_pDrawPad->pen().width()); 42 r.setRight(r.right() + m_pDrawPad->pen().width());
41 r.setBottom(r.bottom() + m_pDrawPad->pen().width()); 43 r.setBottom(r.bottom() + m_pDrawPad->pen().width());
@@ -62,14 +64,17 @@ void LineTool::drawFinalShape(QPainter& p)
62 bigAreaPainter.end(); 64 bigAreaPainter.end();
63 65
64 bigAreaImage = bigAreaPixmap.convertToImage(); 66 bigAreaImage = bigAreaPixmap.convertToImage();
65 areaImage = bigAreaImage.smoothScale(bigAreaImage.width() / 3, bigAreaImage.height() / 3); 67 areaImage = bigAreaImage.smoothScale(bigAreaImage.width() / 3, bigAreaImage.height() / 3);
66 areaPixmap.convertFromImage(areaImage); 68 areaPixmap.convertFromImage(areaImage);
67 69
68 p.setRasterOp(Qt::CopyROP);
69 p.drawPixmap(r.x(), r.y(), areaPixmap); 70 p.drawPixmap(r.x(), r.y(), areaPixmap);
71 } else {
72 p.setPen(m_pDrawPad->pen());
73 p.drawLine(m_polyline[2], m_polyline[0]);
74 }
70} 75}
71 76
72void LineTool::drawTemporaryShape(QPainter& p) 77void LineTool::drawTemporaryShape(QPainter& p)
73{ 78{
74 p.setRasterOp(Qt::NotROP); 79 p.setRasterOp(Qt::NotROP);
75 p.drawLine(m_polyline[2], m_polyline[1]); 80 p.drawLine(m_polyline[2], m_polyline[1]);
diff --git a/noncore/graphics/drawpad/pointtool.cpp b/noncore/graphics/drawpad/pointtool.cpp
index 22bb089..a4f846e 100644
--- a/noncore/graphics/drawpad/pointtool.cpp
+++ b/noncore/graphics/drawpad/pointtool.cpp
@@ -50,22 +50,23 @@ void PointTool::mouseMoveEvent(QMouseEvent* e)
50{ 50{
51 if (m_mousePressed) { 51 if (m_mousePressed) {
52 m_polyline[2] = m_polyline[1]; 52 m_polyline[2] = m_polyline[1];
53 m_polyline[1] = m_polyline[0]; 53 m_polyline[1] = m_polyline[0];
54 m_polyline[0] = e->pos(); 54 m_polyline[0] = e->pos();
55 55
56 QPainter painter;
57 painter.begin(m_pDrawPadCanvas->currentPage());
58
59 QRect r = m_polyline.boundingRect(); 56 QRect r = m_polyline.boundingRect();
60 r = r.normalize(); 57 r = r.normalize();
61 r.setLeft(r.left() - m_pDrawPad->pen().width()); 58 r.setLeft(r.left() - m_pDrawPad->pen().width());
62 r.setTop(r.top() - m_pDrawPad->pen().width()); 59 r.setTop(r.top() - m_pDrawPad->pen().width());
63 r.setRight(r.right() + m_pDrawPad->pen().width()); 60 r.setRight(r.right() + m_pDrawPad->pen().width());
64 r.setBottom(r.bottom() + m_pDrawPad->pen().width()); 61 r.setBottom(r.bottom() + m_pDrawPad->pen().width());
65 62
63 QPainter painter;
64 painter.begin(m_pDrawPadCanvas->currentPage());
65
66 if (m_pDrawPad->antiAliasing()) {
66 QPixmap areaPixmap(r.width(), r.height()); 67 QPixmap areaPixmap(r.width(), r.height());
67 bitBlt(&areaPixmap, QPoint(0, 0), painter.device(), r); 68 bitBlt(&areaPixmap, QPoint(0, 0), painter.device(), r);
68 69
69 QImage areaImage = areaPixmap.convertToImage(); 70 QImage areaImage = areaPixmap.convertToImage();
70 QImage bigAreaImage = areaImage.smoothScale(areaImage.width() * 3, areaImage.height() * 3); 71 QImage bigAreaImage = areaImage.smoothScale(areaImage.width() * 3, areaImage.height() * 3);
71 72
@@ -89,12 +90,17 @@ void PointTool::mouseMoveEvent(QMouseEvent* e)
89 90
90 bigAreaImage = bigAreaPixmap.convertToImage(); 91 bigAreaImage = bigAreaPixmap.convertToImage();
91 areaImage = bigAreaImage.smoothScale(bigAreaImage.width() / 3, bigAreaImage.height() / 3); 92 areaImage = bigAreaImage.smoothScale(bigAreaImage.width() / 3, bigAreaImage.height() / 3);
92 areaPixmap.convertFromImage(areaImage); 93 areaPixmap.convertFromImage(areaImage);
93 94
94 painter.drawPixmap(r.x(), r.y(), areaPixmap); 95 painter.drawPixmap(r.x(), r.y(), areaPixmap);
96 } else {
97 painter.setPen(m_pDrawPad->pen());
98 painter.drawPolyline(m_polyline);
99 }
100
95 painter.end(); 101 painter.end();
96 102
97 QRect viewportRect(m_pDrawPadCanvas->contentsToViewport(r.topLeft()), 103 QRect viewportRect(m_pDrawPadCanvas->contentsToViewport(r.topLeft()),
98 m_pDrawPadCanvas->contentsToViewport(r.bottomRight())); 104 m_pDrawPadCanvas->contentsToViewport(r.bottomRight()));
99 105
100 bitBlt(m_pDrawPadCanvas->viewport(), viewportRect.x(), viewportRect.y(), 106 bitBlt(m_pDrawPadCanvas->viewport(), viewportRect.x(), viewportRect.y(),