summaryrefslogtreecommitdiff
path: root/core/apps/calibrate/calibrate.cpp
Unidiff
Diffstat (limited to 'core/apps/calibrate/calibrate.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--core/apps/calibrate/calibrate.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/core/apps/calibrate/calibrate.cpp b/core/apps/calibrate/calibrate.cpp
index 5f52bdc..53388f1 100644
--- a/core/apps/calibrate/calibrate.cpp
+++ b/core/apps/calibrate/calibrate.cpp
@@ -103,49 +103,49 @@ void Calibrate::reset()
103 location = QWSPointerCalibrationData::TopLeft; 103 location = QWSPointerCalibrationData::TopLeft;
104 crossPos = fromDevice( cd.screenPoints[ location ] ); 104 crossPos = fromDevice( cd.screenPoints[ location ] );
105#endif 105#endif
106} 106}
107 107
108QPoint Calibrate::fromDevice( const QPoint &p ) 108QPoint Calibrate::fromDevice( const QPoint &p )
109{ 109{
110#ifdef QWS 110#ifdef QWS
111 return qt_screen->mapFromDevice ( p, QSize( qt_screen->deviceWidth ( ), qt_screen->deviceHeight() ) ); 111 return qt_screen->mapFromDevice ( p, QSize( qt_screen->deviceWidth ( ), qt_screen->deviceHeight() ) );
112#else 112#else
113 return QPoint(); 113 return QPoint();
114#endif 114#endif
115 115
116} 116}
117 117
118bool Calibrate::sanityCheck() 118bool Calibrate::sanityCheck()
119{ 119{
120#ifdef QWS 120#ifdef QWS
121 QPoint tl = cd.devPoints[QWSPointerCalibrationData::TopLeft]; 121 QPoint tl = cd.devPoints[QWSPointerCalibrationData::TopLeft];
122 QPoint tr = cd.devPoints[QWSPointerCalibrationData::TopRight]; 122 QPoint tr = cd.devPoints[QWSPointerCalibrationData::TopRight];
123 QPoint bl = cd.devPoints[QWSPointerCalibrationData::BottomLeft]; 123 QPoint bl = cd.devPoints[QWSPointerCalibrationData::BottomLeft];
124 QPoint br = cd.devPoints[QWSPointerCalibrationData::BottomRight]; 124 QPoint br = cd.devPoints[QWSPointerCalibrationData::BottomRight];
125 125
126 // not needed anywhere .. just calculate it, so it's there 126 // not needed anywhere .. just calculate it, so it's there
127 cd.devPoints[QWSPointerCalibrationData::Center] = QRect( tl, br ).normalize().center(); 127 //cd.devPoints[QWSPointerCalibrationData::Center] = QRect( tl, br ).normalize().center();
128 128
129 int dlx = QABS( bl. x ( ) - tl. x ( )); 129 int dlx = QABS( bl. x ( ) - tl. x ( ));
130 int dly = QABS( bl. y ( ) - tl. y ( )); 130 int dly = QABS( bl. y ( ) - tl. y ( ));
131 int drx = QABS( br. x ( ) - tr. x ( )); 131 int drx = QABS( br. x ( ) - tr. x ( ));
132 int dry = QABS( br. y ( ) - tr. y ( )); 132 int dry = QABS( br. y ( ) - tr. y ( ));
133 int dtx = QABS( tr. x ( ) - tl. x ( )); 133 int dtx = QABS( tr. x ( ) - tl. x ( ));
134 int dty = QABS( tr. y ( ) - tl. y ( )); 134 int dty = QABS( tr. y ( ) - tl. y ( ));
135 int dbx = QABS( br. x ( ) - bl. x ( )); 135 int dbx = QABS( br. x ( ) - bl. x ( ));
136 int dby = QABS( br. y ( ) - bl. y ( )); 136 int dby = QABS( br. y ( ) - bl. y ( ));
137 137
138 int dl = (int) ::sqrt (( dlx * dlx ) + ( dly * dly )); // calculate vector lengths for all sides 138 int dl = (int) ::sqrt (( dlx * dlx ) + ( dly * dly )); // calculate vector lengths for all sides
139 int dr = (int) ::sqrt (( drx * drx ) + ( dry * dry )); 139 int dr = (int) ::sqrt (( drx * drx ) + ( dry * dry ));
140 int dt = (int) ::sqrt (( dtx * dtx ) + ( dty * dty )); 140 int dt = (int) ::sqrt (( dtx * dtx ) + ( dty * dty ));
141 int db = (int) ::sqrt (( dbx * dbx ) + ( dby * dby )); 141 int db = (int) ::sqrt (( dbx * dbx ) + ( dby * dby ));
142 142
143 // Calculate leeway for x/y (we do not care if diff1/diff2 is for x or y here !) 143 // Calculate leeway for x/y (we do not care if diff1/diff2 is for x or y here !)
144 int diff1 = QABS( dl - dr ); 144 int diff1 = QABS( dl - dr );
145 int avg1 = ( dl + dr ) / 2; 145 int avg1 = ( dl + dr ) / 2;
146 int diff2 = QABS( dt - db ); 146 int diff2 = QABS( dt - db );
147 int avg2 = ( dt + db ) / 2; 147 int avg2 = ( dt + db ) / 2;
148 148
149 // Calculate leeway for "real" vector length against "manhattan" vector length 149 // Calculate leeway for "real" vector length against "manhattan" vector length
150 // This is a check, if the rect is rotated (other then 0/90/180/270) 150 // This is a check, if the rect is rotated (other then 0/90/180/270)
151 // It needs to be performed only for the triange (bl, tl, tr) 151 // It needs to be performed only for the triange (bl, tl, tr)
@@ -154,97 +154,97 @@ bool Calibrate::sanityCheck()
154 154
155 if (( diff1 > ( avg1 / 20 )) || // 5% leeway 155 if (( diff1 > ( avg1 / 20 )) || // 5% leeway
156 ( diff2 > ( avg2 / 20 )) || 156 ( diff2 > ( avg2 / 20 )) ||
157 ( diff3 > ( avg3 / 20 ))) 157 ( diff3 > ( avg3 / 20 )))
158 return false; 158 return false;
159 else 159 else
160 return true; 160 return true;
161#else 161#else
162return true; 162return true;
163#endif 163#endif
164} 164}
165 165
166void Calibrate::moveCrosshair( QPoint pt ) 166void Calibrate::moveCrosshair( QPoint pt )
167{ 167{
168 showCross = FALSE; 168 showCross = FALSE;
169 repaint( crossPos.x() - 14, crossPos.y() - 14, 28, 28 ); 169 repaint( crossPos.x() - 14, crossPos.y() - 14, 28, 28 );
170 showCross = TRUE; 170 showCross = TRUE;
171 crossPos = pt; 171 crossPos = pt;
172 repaint( crossPos.x() - 14, crossPos.y() - 14, 28, 28 ); 172 repaint( crossPos.x() - 14, crossPos.y() - 14, 28, 28 );
173} 173}
174 174
175void Calibrate::paintEvent( QPaintEvent * ) 175void Calibrate::paintEvent( QPaintEvent * )
176{ 176{
177 QPainter p( this ); 177 QPainter p( this );
178 int y = height() / 3; 178 int y = height() / 2;
179 179
180 p.drawText( 0, y + height() / 8, width(), height() - y, AlignHCenter, 180 p.drawText( 0, y + height() / 8, width(), height() - y, AlignHCenter,
181 tr( "Touch the crosshairs firmly and\n" 181 tr( "Touch the crosshairs firmly and\n"
182 "accurately to calibrate your screen." ) ); 182 "accurately to calibrate your screen." ) );
183 183
184 if ( !showCross ) return; 184 if ( !showCross ) return;
185 185
186#if 0 186#if 0
187 if ( crosshair.isNull() ) { 187 if ( crosshair.isNull() ) {
188#endif 188#endif
189 p.setPen( QColor( 0, 0, 155 ) ); 189 p.setPen( QColor( 0, 0, 155 ) );
190 p.drawEllipse( crossPos.x()-8, crossPos.y()-8, 16, 16 ); 190 p.drawEllipse( crossPos.x()-8, crossPos.y()-8, 16, 16 );
191 p.setPen( QColor( 250, 220, 220 ) ); 191 p.setPen( QColor( 250, 220, 220 ) );
192 p.drawRoundRect( crossPos.x()-12, crossPos.y()-12, 24, 24, 75, 75 ); 192 p.drawRoundRect( crossPos.x()-12, crossPos.y()-12, 24, 24, 75, 75 );
193 p.setPen( QColor( 0, 0, 120 ) ); 193 p.setPen( QColor( 0, 0, 120 ) );
194 p.drawRect( crossPos.x() - 1, crossPos.y() - 14, 2, 13 ); 194 p.drawRect( crossPos.x() - 1, crossPos.y() - 14, 2, 13 );
195 p.drawRect( crossPos.x() - 1, crossPos.y() + 1, 2, 13 ); 195 p.drawRect( crossPos.x() - 1, crossPos.y() + 1, 2, 13 );
196 p.drawRect( crossPos.x() - 14, crossPos.y() - 1, 13, 2 ); 196 p.drawRect( crossPos.x() - 14, crossPos.y() - 1, 13, 2 );
197 p.drawRect( crossPos.x() + 1, crossPos.y() - 1, 13, 2 ); 197 p.drawRect( crossPos.x() + 1, crossPos.y() - 1, 13, 2 );
198#if 0 198#if 0
199 } 199 }
200 else p.drawPixmap( crossPos.x(), crossPos.y(), crosshair ); 200 else p.drawPixmap( crossPos.x(), crossPos.y(), crosshair );
201#endif 201#endif
202} 202}
203 203
204void Calibrate::mousePressEvent( QMouseEvent *e ) 204void Calibrate::mousePressEvent( QMouseEvent *e )
205{ 205{
206#ifdef QWS 206#ifdef QWS
207 // map to device coordinates 207 // map to device coordinates
208 QPoint devPos = qt_screen->mapToDevice( e->pos(), QSize( qt_screen->width(), qt_screen->height() ) ); 208 QPoint devPos = qt_screen->mapToDevice( e->pos(), QSize( qt_screen->width(), qt_screen->height() ) );
209 if ( penPos.isNull() ) 209 if ( penPos.isNull() )
210 penPos = devPos; 210 penPos = devPos;
211 else 211 else
212 penPos = QPoint( ( penPos.x() + devPos.x() ) / 2, 212 penPos = QPoint( ( penPos.x() + devPos.x() ) / 2,
213 ( penPos.y() + devPos.y() ) / 2 ); 213 ( penPos.y() + devPos.y() ) / 2 );
214#endif 214#endif
215} 215}
216 216
217void Calibrate::mouseReleaseEvent( QMouseEvent * ) 217void Calibrate::mouseReleaseEvent( QMouseEvent * )
218{ 218{
219#ifdef QWS 219#ifdef QWS
220 if ( timer->isActive() ) 220 if ( timer->isActive() )
221 return ; 221 return ;
222 222
223 bool doMove = TRUE; 223 bool doMove = TRUE;
224 224
225 cd.devPoints[ location ] = penPos; 225 cd.devPoints[ location ] = penPos;
226 if ( location < QWSPointerCalibrationData::TopRight ) { 226 if ( location < QWSPointerCalibrationData::Center ) {
227 location = (QWSPointerCalibrationData::Location) ( int( location ) + 1 ); 227 location = (QWSPointerCalibrationData::Location) ( int( location ) + 1 );
228 } 228 }
229 else { 229 else {
230 if ( sanityCheck() ) { 230 if ( sanityCheck() ) {
231 reset(); 231 reset();
232 goodcd = cd; 232 goodcd = cd;
233 hide(); 233 hide();
234 emit accept(); 234 emit accept();
235 doMove = FALSE; 235 doMove = FALSE;
236 } 236 }
237 else { 237 else {
238 location = QWSPointerCalibrationData::TopLeft; 238 location = QWSPointerCalibrationData::TopLeft;
239 } 239 }
240 } 240 }
241 241
242 if ( doMove ) { 242 if ( doMove ) {
243 QPoint target = fromDevice( cd.screenPoints[ location ] ); 243 QPoint target = fromDevice( cd.screenPoints[ location ] );
244 dx = ( target.x() - crossPos.x() ) / 10; 244 dx = ( target.x() - crossPos.x() ) / 10;
245 dy = ( target.y() - crossPos.y() ) / 10; 245 dy = ( target.y() - crossPos.y() ) / 10;
246 timer->start( 30 ); 246 timer->start( 30 );
247 } 247 }
248#endif 248#endif
249} 249}
250 250