• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright Vladimir Prus 2004.
2 // Distributed under the Boost Software License, Version 1.0.
3 // (See accompanying file LICENSE_1_0.txt
4 // or copy at http://www.boost.org/LICENSE_1_0.txt)
5 
6 #include "canvas.h"
7 
8 #include <qlabel.h>
9 #include <qcanvas.h>
10 #include <qlayout.h>
11 
Canvas(QWidget * parent)12 Canvas::Canvas(QWidget* parent)
13 : QWidget(parent)
14 {
15     m_pen = QPen(QColor(255, 128, 128));
16     m_brushes = new QBrush[2];
17     m_brushes[0] = QBrush(QColor(255, 0, 0));
18     m_brushes[1] = QBrush(QColor(0, 255, 0));
19     m_current_brush = 0;
20 
21     m_canvas = new QCanvas(this);
22     m_canvas->resize(4*1600, 600);
23 
24     redraw();
25 
26     QVBoxLayout* l = new QVBoxLayout(this);
27 
28     m_canvas_view = new QCanvasView(m_canvas, this);
29     l->addWidget(m_canvas_view);
30     m_canvas_view->resize(rect().size());
31     m_canvas_view->show();
32 }
33 
~Canvas()34 Canvas::~Canvas()
35 {
36     delete m_brushes;
37 }
38 
redraw()39 void Canvas::redraw()
40 {
41     QCanvasItemList l = m_canvas->allItems();
42     for(QCanvasItemList::iterator i = l.begin(),
43             e = l.end(); i != e; ++i)
44     {
45         delete *i;
46     }
47 
48     unsigned count = 0;
49     for (unsigned x = 10; x < 4*1600; x += 20)
50         for (unsigned y = 10; y < 600; y += 20) {
51             QCanvasRectangle* r = new QCanvasRectangle(x, y, 10, 10, m_canvas);
52             r->setPen(m_pen);
53             r->setBrush(m_brushes[m_current_brush]);
54             r->show();
55             ++count;
56             QCanvasText* t = new QCanvasText("D", m_canvas);
57             t->move(x, y);
58             t->show();
59             ++count;
60         }
61 
62     (new QCanvasText(QString::number(count), m_canvas))->show();
63     m_canvas->setAllChanged();
64 
65 }
66 
change_color()67 void Canvas::change_color()
68 {
69     m_current_brush = (m_current_brush + 1)%2;
70     redraw();
71     m_canvas->update();
72 }
73 
74