summaryrefslogtreecommitdiff
path: root/inputmethods/dasher/QtDasherScreen.cc
Unidiff
Diffstat (limited to 'inputmethods/dasher/QtDasherScreen.cc') (more/less context) (ignore whitespace changes)
-rw-r--r--inputmethods/dasher/QtDasherScreen.cc180
1 files changed, 180 insertions, 0 deletions
diff --git a/inputmethods/dasher/QtDasherScreen.cc b/inputmethods/dasher/QtDasherScreen.cc
new file mode 100644
index 0000000..6820105
--- a/dev/null
+++ b/inputmethods/dasher/QtDasherScreen.cc
@@ -0,0 +1,180 @@
1// QtDasherScreen.cc
2// (c) 2003 Yann Dirson
3// Derived from GtkDasherCanvas.cc
4// (c) 2002 Philip Cowans
5
6#include <iostream>
7#include <string>
8
9#include <qpointarray.h>
10#include <qpoint.h>
11
12#include "QtDasherScreen.h"
13#include "DasherScreen.h"
14#include "SettingsStore.h"
15
16#define MAXFONTSIZE 25
17#define MINFONTSIZE 8
18
19#include <iconv.h>
20#include <iostream>
21
22QtDasherScreen::QtDasherScreen (int _width, int _height,
23 CDasherInterface *_interface,
24 QWidget * _parent, Dasher::CDashEditbox *edit):
25 QWidget(_parent), interface( _interface ),
26 fontname( "fixed" ), // fontsize(12),
27 Dasher::CDasherScreen(_width, _height)
28{
29 // font = new QFont (fontname, fontsize);
30 painter = new QPainter ();
31
32 pixmap = new QPixmap (_width, _height);
33 pixmap->setOptimization(QPixmap::BestOptim);
34 interface->SetSettingsStore(new CSettingsStore);
35
36 interface->ChangeLanguageModel(0);
37 interface->ChangeView(0);
38 interface->ChangeEdit(edit);
39
40 interface->GetFontSizes(&FontSizes);
41
42 for (int i=0; i<FontSizes.size(); i++) {
43 if (FontSizes[i]>Fonts.size())
44 Fonts.resize((FontSizes[i])+1);
45 Fonts[FontSizes[i]]= QFont (fontname.c_str(), FontSizes[i]);
46 Fonts[FontSizes[i]].setPixelSize(FontSizes[i]);
47 }
48
49 interface->ChangeScreen(this);
50
51 paused=true;
52
53 QTimer *tmr = new QTimer(this);
54 connect (tmr, SIGNAL(timeout()), SLOT(timer()));
55 tmr->start(200);
56
57}
58
59long QtDasherScreen::get_time()
60{
61 long s_now;
62 long ms_now;
63
64 struct timeval tv;
65 struct timezone tz;
66
67 gettimeofday( &tv, &tz );
68
69 s_now = tv.tv_sec-1054487600;
70
71 ms_now = tv.tv_usec / 1000;
72
73 return( long(s_now*1000 + ms_now) );
74
75}
76
77QtDasherScreen::~QtDasherScreen()
78{
79 delete painter;
80 delete interface;
81 delete edit;
82}
83
84QColor QtDasherScreen::getColor(int Color, const Opts::ColorSchemes ColorScheme) const
85{
86 switch (ColorScheme) {
87 case Dasher::Opts::Nodes1:
88 switch (Color) {
89 case 0: return QColor (180, 245, 180);
90 case 1: return QColor (160, 200, 160);
91 case 2: return QColor (0, 255, 255);
92 default: abort ();
93 }
94 case Dasher::Opts::Nodes2:
95 switch (Color) {
96 case 0: return QColor (255, 185, 255);
97 case 1: return QColor (140, 200, 255);
98 case 2: return QColor (255, 175, 175);
99 default: abort ();
100 }
101 case Dasher::Opts::Special1: return QColor (240, 240, 240);
102 case Dasher::Opts::Special2: return QColor (255, 255, 255);
103 case Dasher::Opts::Groups:
104 switch (Color) {
105 case 0: return QColor (255, 255, 0);
106 case 1: return QColor (255, 100, 100);
107 case 2: return QColor (0, 255, 0);
108 default: abort ();
109 }
110 case Dasher::Opts::Objects: return QColor (0, 0, 0);
111 default: abort();
112 }
113}
114
115void QtDasherScreen::DrawRectangle(int x1, int y1, int x2, int y2,
116 int Color, Opts::ColorSchemes ColorScheme) const
117{
118 painter->setBrush (getColor (Color, ColorScheme));
119 painter->drawRect (x1, y1, x2-x1, y2-y1);
120}
121
122static void Points_to_QPointArray(const Dasher::CDasherScreen::point* const points,
123 int number,
124 QPointArray &qpa)
125{
126 for (int i = 0; i < number; i++) {
127 qpa.setPoint (i, points[i].x, points[i].y);
128 }
129}
130
131void QtDasherScreen::Polyline(point* Points, int Number) const
132{
133 QPointArray qpa(Number);
134 Points_to_QPointArray (Points, Number, qpa);
135 painter->setPen (SolidLine);
136 painter->drawPolyline (qpa);
137 painter->setPen (NoPen);
138}
139
140void QtDasherScreen::DrawPolygon(point* Points, int Number, int Color,
141 Opts::ColorSchemes ColorScheme) const
142{
143 painter->setBrush (getColor (Color, ColorScheme));
144 QPointArray qpa(Number);
145 Points_to_QPointArray (Points, Number, qpa);
146 painter->drawPolygon (qpa);
147}
148
149void QtDasherScreen::mousePressEvent (QMouseEvent *e)
150{
151 paused=false;
152 interface->Unpause(get_time());
153}
154
155void QtDasherScreen::mouseReleaseEvent(QMouseEvent *e)
156{
157 QPoint p = e->pos();
158 interface->PauseAt(p.x(), p.y());
159 paused=true;
160}
161
162void QtDasherScreen::timer()
163{
164 if (paused==false) {
165 QPoint cursorpos;
166 cursorpos=this->cursor().pos();
167 cursorpos=mapFromGlobal(cursorpos);
168
169 interface->TapOn(cursorpos.x(), cursorpos.y(), get_time());
170 }
171}
172
173
174
175
176
177
178
179
180