Diffstat (limited to 'inputmethods/dasher/QtDasherScreen.cc') (more/less context) (ignore whitespace changes)
-rw-r--r-- | inputmethods/dasher/QtDasherScreen.cc | 180 |
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 | |||
22 | QtDasherScreen::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 | |||
59 | long 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 | |||
77 | QtDasherScreen::~QtDasherScreen() | ||
78 | { | ||
79 | delete painter; | ||
80 | delete interface; | ||
81 | delete edit; | ||
82 | } | ||
83 | |||
84 | QColor 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 | |||
115 | void 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 | |||
122 | static 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 | |||
131 | void 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 | |||
140 | void 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 | |||
149 | void QtDasherScreen::mousePressEvent (QMouseEvent *e) | ||
150 | { | ||
151 | paused=false; | ||
152 | interface->Unpause(get_time()); | ||
153 | } | ||
154 | |||
155 | void QtDasherScreen::mouseReleaseEvent(QMouseEvent *e) | ||
156 | { | ||
157 | QPoint p = e->pos(); | ||
158 | interface->PauseAt(p.x(), p.y()); | ||
159 | paused=true; | ||
160 | } | ||
161 | |||
162 | void 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 | |||