summaryrefslogtreecommitdiff
path: root/noncore/games/solitaire/canvasshapes.cpp
blob: 011958d41a5d8c88410707274410b50decbaf676 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
/**********************************************************************
** Copyright (C) 2000 Trolltech AS.  All rights reserved.
**
** This file is part of Qtopia Environment.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.trolltech.com/gpl/ for GPL licensing information.
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
#include <qgfx_qws.h>
#include "canvasshapes.h"


CanvasRoundRect::CanvasRoundRect(int x, int y, QCanvas *canvas) :
	QCanvasRectangle( x, y, ( qt_screen->deviceWidth() < 200 ) ? 20 : 23, ( qt_screen->deviceWidth() < 200 ) ? 27 : 36, canvas)
{
    setZ(0);
    show();
}


void CanvasRoundRect::redraw()
{
    hide();
    show();
}


void CanvasRoundRect::drawShape(QPainter &p)
{
    if ( qt_screen->deviceWidth() < 200 )
	p.drawRoundRect( (int)x() + 1, (int)y() + 1, 18, 25);
    else
	p.drawRoundRect( (int)x(), (int)y(), 23, 36);
}


CanvasCircleOrCross::CanvasCircleOrCross(int x, int y, QCanvas *canvas) :
	QCanvasRectangle( x, y, 21, 21, canvas), circleShape(TRUE)
{
    show();
}


void CanvasCircleOrCross::redraw()
{
    hide();
    show();
}


void CanvasCircleOrCross::setCircle()
{
    circleShape = TRUE;
    redraw();
}


void CanvasCircleOrCross::setCross()
{
    circleShape = FALSE;
    redraw();
}


void CanvasCircleOrCross::drawShape(QPainter &p)
{
    if ( qt_screen->deviceWidth() < 200 ) {
	int x1 = (int)x(), y1 = (int)y();
	// Green circle
	if (circleShape == TRUE) {
	    p.setPen( QPen( QColor(0x10, 0xE0, 0x10), 1 ) );
	    p.drawEllipse( x1 - 1, y1 - 1, 17, 17);
	    p.drawEllipse( x1 - 1, y1 - 0, 17, 15);
	    p.drawEllipse( x1 + 0, y1 + 0, 15, 15);
	    p.drawEllipse( x1 + 1, y1 + 0, 13, 15);
	    p.drawEllipse( x1 + 1, y1 + 1, 13, 13);
	// Red cross
	} else {
	    p.setPen( QPen( QColor(0xE0, 0x10, 0x10), 4 ) );
	    p.drawLine( x1, y1, x1 + 14, y1 + 14);
	    p.drawLine( x1 + 14, y1, x1, y1 + 14);
	}
    } else {
	int x1 = (int)x(), y1 = (int)y();
	// Green circle
	if (circleShape == TRUE) {
	    p.setPen( QPen( QColor(0x10, 0xE0, 0x10), 1 ) );
	    p.drawEllipse( x1 - 1, y1 - 1, 21, 21);
	    p.drawEllipse( x1 - 1, y1 - 0, 21, 19);
	    p.drawEllipse( x1 + 0, y1 + 0, 19, 19);
	    p.drawEllipse( x1 + 1, y1 + 0, 17, 19);
	    p.drawEllipse( x1 + 1, y1 + 1, 17, 17);
	// Red cross
	} else {
	    p.setPen( QPen( QColor(0xE0, 0x10, 0x10), 5 ) );
	    p.drawLine( x1, y1, x1 + 20, y1 + 20);
	    p.drawLine( x1 + 20, y1, x1, y1 + 20);
	}
    }
}