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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
|
/*
Copyright (C) 1997 Mathias Mueller <in5y158@public.uni-hamburg.de>
Kmahjongg is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#include "FrameImage.h"
#include <kcomponentdata.h>
#include <kfiledialog.h>
#include <klocale.h>
#include <kmessagebox.h>
#include <kpushbutton.h>
#include <kstandarddirs.h>
#include <KStandardGuiItem>
#include <kimageio.h>
#include <qevent.h>
#include <qimage.h>
#include <qpainter.h>
#include <qtextstream.h>
#include <kvbox.h>
#include "prefs.h"
FrameImage::FrameImage (QWidget *parent, const QSize& initialImageSize)
: KGameCanvasWidget(parent)
{
rx = -1;
thePixmap = new QPixmap(initialImageSize);
}
FrameImage::~FrameImage()
{
delete thePixmap;
}
void FrameImage::resizeEvent( QResizeEvent* ev )
{
*thePixmap = QPixmap(ev->size());
}
void FrameImage::paintEvent( QPaintEvent* pa )
{
//QFrame::paintEvent(pa);
QPainter p(this);
QPen line;
line.setStyle(Qt::DotLine);
line.setWidth(2);
line.setColor(Qt::yellow);
p.setPen(line);
p.setBackgroundMode(Qt::OpaqueMode);
p.setBackground(Qt::black);
int x = pa->rect().left();
int y = pa->rect().top();
int h = pa->rect().height();
int w = pa->rect().width();
//p.drawPixmap(x+frameWidth(),y+frameWidth(),*thePixmap,x+frameWidth(),y+frameWidth(),w-(2*frameWidth()),h-(2*frameWidth()));
p.drawPixmap(x,y,*thePixmap,x,y,w-(2),h-(2));
if (rx >=0) {
p.drawRect(rx, ry, rw, rh);
p.drawRect(rx+rs, ry, rw-rs, rh-rs);
p.drawLine(rx, ry+rh, rx+rs, ry+rh-rs);
int midX = rx+rs+((rw-rs)/2);
int midY = ry+((rh-rs)/2);
switch (rt) {
case 0: // delete mode cursor
p.drawLine(rx+rs, ry, rx+rw, ry+rh-rs);
p.drawLine(rx+rw, ry, rx+rs, ry+rh-rs);
break;
case 1: // insert cursor
p.drawLine(midX, ry, midX, ry+rh-rs);
p.drawLine(rx+rs, midY, rx+rw, midY);
break;
case 2: // move mode cursor
p.drawLine(midX, ry, rx+rw, midY);
p.drawLine(rx+rw, midY, midX, ry+rh-rs);
p.drawLine(midX, ry+rh-rs, rx+rs, midY);
p.drawLine(rx+rs, midY, midX, ry);
break;
}
}
}
void FrameImage::setRect(int x,int y,int w,int h, int s, int t)
{
rx = x;
ry = y;
rw = w;
rh = h;
rt = t;
rs = s;
}
// Pass on the mouse presed event to our owner
void FrameImage::mousePressEvent(QMouseEvent *m) {
emit mousePressed(m);
}
void FrameImage::mouseMoveEvent(QMouseEvent *e) {
emit mouseMoved(e);
}
#include "FrameImage.moc"
|