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
|
/***************************************************************************
imagemap.h - description
-------------------
begin : Wed Apr 4 2001
copyright : (C) 2001 by Jan Schäfer
email : janschaefer@users.sourceforge.net
***************************************************************************/
/***************************************************************************
* *
* This program 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. *
* *
***************************************************************************/
#ifndef IMAGEMAP_H
#define IMAGEMAP_H
#include <tqscrollview.h>
#include <tqimage.h>
#include <tqpoint.h>
#include <tqrect.h>
#include <tqcursor.h>
#include "kdeversion.h"
class KImageMapEditor;
class Area;
/**
*@short Draws the image and areas and handle the draw actions
*@author Jan Schäfer
*@internal
*@see Area
*/
class DrawZone : public TQScrollView {
public:
DrawZone(TQWidget *parent,KImageMapEditor* _imageMapEditor);
~DrawZone();
TQImage picture() const;
void repaintArea(const Area & a);
void repaintRect(const TQRect & r);
void cancelDrawing();
void setPicture(const TQImage &_image);
void setZoom(double z);
TQPoint translateFromZoom(const TQPoint & p) const;
TQRect translateFromZoom(const TQRect & p) const;
TQPoint translateToZoom(const TQPoint & p) const;
TQRect translateToZoom(const TQRect & p) const;
TQRect getImageRect() const { return image.rect(); }
protected:
virtual void contentsMouseDoubleClickEvent(TQMouseEvent*);
virtual void contentsMousePressEvent(TQMouseEvent*);
virtual void contentsMouseReleaseEvent(TQMouseEvent*);
virtual void contentsMouseMoveEvent(TQMouseEvent*);
virtual void resizeEvent(TQResizeEvent*);
virtual void drawContents(TQPainter*,int,int,int,int);
virtual void viewportDropEvent(TQDropEvent*);
virtual void contentsDragEnterEvent(TQDragEnterEvent*);
virtual void contentsDropEvent(TQDropEvent*);
/**
* Represents whats currently going on
* @li None : Nothing
* @li DrawCircle : The user is drawing a circle
* @li DrawRectangle : The user is drawing a rectangle
* @li MoveSelectionPoint : The user is resizing an @ref Area or moving a polygon point
* @li MoveArea : The user is moving an @ref Area
* @li DoSelect : The user makes a selection rectangle
*/
enum DrawAction { None, DrawCircle, DrawRectangle, DrawPolygon, DrawFreehand, MoveSelectionPoint, MoveArea, DoSelect, RemovePoint, AddPoint };
void createBorderRectangles(const TQRect & r,TQRect & rb,TQRect & lb,TQRect & tb,TQRect & bb);
private:
DrawAction currentAction;
// The currently drawing area
Area *currentArea;
// Needed when moving selectionpoints
TQRect *currentSelectionPoint;
// The point where the user clicked the mouse
TQPoint drawStart;
TQPoint drawCurrent;
// The original image
TQImage image;
KImageMapEditor *imageMapEditor;
// Only the rect of the zoomed image, perhaps redundant
TQRect imageRect;
// Only for tqrepaint issues
Area *oldArea;
TQRect oldSelectionRect;
// Holds the zoomed image for efficiency reasons
TQPixmap zoomedImage;
// The current zoom-factor
double _zoom;
TQCursor RectangleCursor;
TQCursor CircleCursor;
TQCursor PolygonCursor;
TQCursor FreehandCursor;
TQCursor AddPointCursor;
TQCursor RemovePointCursor;
};
inline TQImage DrawZone::picture() const {
return image;
}
#endif
|