2 // (c) 2003 Yann Dirson
3 // Derived from GtkDasherCanvas.cc
4 // (c) 2002 Philip Cowans
6 #include "../Common/Common.h"
11 #include <qpointarray.h>
14 #include "QtDasherScreen.h"
15 #include "DasherScreen.h"
16 #include "SettingsStore.h"
18 #define MAXFONTSIZE 25
24 QtDasherScreen::QtDasherScreen(int _width
, int _height
, CDasherInterface
*_interface
, QWidget
*_parent
, Dasher::CDashEditbox
*edit
):QWidget(_parent
), interface(_interface
), fontname("fixed"), // fontsize(12),
25 Dasher::CDasherScreen(_width
, _height
) {
26 // font = new QFont (fontname, fontsize);
27 painter
= new QPainter();
29 pixmap
= new QPixmap(_width
, _height
);
30 pixmap
->setOptimization(QPixmap::BestOptim
);
31 interface
->SetSettingsStore(new CSettingsStore
);
33 interface
->ChangeLanguageModel(0);
34 interface
->ChangeView(0);
35 interface
->ChangeEdit(edit
);
37 interface
->GetFontSizes(&FontSizes
);
39 for(int i
= 0; i
< FontSizes
.size(); i
++) {
40 if(FontSizes
[i
] > Fonts
.size())
41 Fonts
.resize((FontSizes
[i
]) + 1);
42 Fonts
[FontSizes
[i
]] = QFont(fontname
.c_str(), FontSizes
[i
]);
43 Fonts
[FontSizes
[i
]].setPixelSize(FontSizes
[i
]);
46 interface
->ChangeScreen(this);
50 QTimer
*tmr
= new QTimer(this);
51 connect(tmr
, SIGNAL(timeout()), SLOT(timer()));
56 long QtDasherScreen::get_time() {
63 gettimeofday(&tv
, &tz
);
65 s_now
= tv
.tv_sec
- 1054487600;
67 ms_now
= tv
.tv_usec
/ 1000;
69 return (long (s_now
* 1000 + ms_now
));
73 QtDasherScreen::~QtDasherScreen() {
79 QColor
QtDasherScreen::getColor(int Color
, const Opts::ColorSchemes ColorScheme
) const {
80 switch (ColorScheme
) {
81 case Dasher::Opts::Nodes1
:
84 return QColor(180, 245, 180);
86 return QColor(160, 200, 160);
88 return QColor(0, 255, 255);
92 case Dasher::Opts::Nodes2
:
95 return QColor(255, 185, 255);
97 return QColor(140, 200, 255);
99 return QColor(255, 175, 175);
103 case Dasher::Opts::Special1
:
104 return QColor(240, 240, 240);
105 case Dasher::Opts::Special2
:
106 return QColor(255, 255, 255);
107 case Dasher::Opts::Groups
:
110 return QColor(255, 255, 0);
112 return QColor(255, 100, 100);
114 return QColor(0, 255, 0);
118 case Dasher::Opts::Objects
:
119 return QColor(0, 0, 0);
125 void QtDasherScreen::DrawRectangle(int x1
, int y1
, int x2
, int y2
, int Color
, Opts::ColorSchemes ColorScheme
) const {
127 painter
->setBrush(getColor(Color
, ColorScheme
));
128 painter
->drawRect(x1
, y1
, x2
- x1
, y2
- y1
);
132 static void Points_to_QPointArray(const Dasher::CDasherScreen::point
*const points
, int number
, QPointArray
&qpa
) {
133 for(int i
= 0; i
< number
; i
++) {
134 qpa
.setPoint(i
, points
[i
].x
, points
[i
].y
);
138 void QtDasherScreen::Polyline(point
*Points
, int Number
) const {
139 QPointArray
qpa(Number
);
140 Points_to_QPointArray(Points
, Number
, qpa
);
141 painter
->setPen(SolidLine
);
142 painter
->drawPolyline(qpa
);
143 painter
->setPen(NoPen
);
146 void QtDasherScreen::DrawPolygon(point
*Points
, int Number
, int Color
, Opts::ColorSchemes ColorScheme
) const {
147 painter
->setBrush(getColor(Color
, ColorScheme
));
148 QPointArray
qpa(Number
);
149 Points_to_QPointArray(Points
, Number
, qpa
);
150 painter
->drawPolygon(qpa
);
153 void QtDasherScreen::mousePressEvent(QMouseEvent
*e
) {
155 interface
->Unpause(get_time());
158 void QtDasherScreen::mouseReleaseEvent(QMouseEvent
*e
) {
160 interface
->PauseAt(p
.x(), p
.y());
164 void QtDasherScreen::timer() {
165 if(paused
== false) {
167 cursorpos
= this->cursor().pos();
168 cursorpos
= mapFromGlobal(cursorpos
);
170 interface
->TapOn(cursorpos
.x(), cursorpos
.y(), get_time());