Vidalia
0.3.1
Main Page
Namespaces
Classes
Files
File List
File Members
src
vidalia
network
ZImageView.h
Go to the documentation of this file.
1
/*
2
** This file is part of Vidalia, and is subject to the license terms in the
3
** LICENSE file, found in the top level directory of this distribution. If you
4
** did not receive the LICENSE file with this file, you may obtain it from the
5
** Vidalia source package distributed by the Vidalia Project at
6
** http://www.torproject.org/projects/vidalia.html. No part of Vidalia,
7
** including this file, may be copied, modified, propagated, or distributed
8
** except according to the terms described in the LICENSE file.
9
*/
10
11
/*
12
** \file ZImageView.h
13
** \brief Displays an image and allows zooming and panning
14
*/
15
16
#ifndef ZIMAGEVIEW_H
17
#define ZIMAGEVIEW_H
18
19
#include <QImage>
20
#include <QPixmap>
21
#include <QWidget>
22
23
24
class
ZImageView
:
public
QWidget
25
{
26
Q_OBJECT
27
28
public
:
29
/** Default constructor. */
30
ZImageView
(QWidget *parent = 0);
31
/** Sets the displayed image. */
32
void
setImage
(QImage& pixmap);
33
34
public
slots:
35
/** Resets the center zoom point back to the center of the viewport. */
36
void
resetZoomPoint
();
37
/** Sets the current zoom level to the given percent. */
38
void
zoom
(
float
pct);
39
/** Sets the current zoom level to the given percent and scrolls the window
40
* to place the specified point in the middle. */
41
void
zoom
(QPoint zoomAt,
float
pct);
42
/** Zooms into the displayed image by 5% */
43
void
zoomIn
();
44
/** Zooms away from the displayed image by 5% */
45
void
zoomOut
();
46
47
protected
:
48
/** Virtual method to let subclasses paint on the image before it's scaled. */
49
virtual
void
paintImage
(QPainter *painter) { Q_UNUSED(painter); }
50
/** Updates the viewport and repaints the displayed image. */
51
virtual
void
paintEvent
(QPaintEvent*);
52
/** Handles the user pressing a mouse button. */
53
virtual
void
mousePressEvent
(QMouseEvent* e);
54
/** Handles the user releasing a mouse button. */
55
virtual
void
mouseReleaseEvent
(QMouseEvent* e);
56
/** Handles the user moving the mouse. */
57
virtual
void
mouseMoveEvent
(QMouseEvent* e);
58
/** Handles the user double-clicking a mouse button. */
59
virtual
void
mouseDoubleClickEvent
(QMouseEvent *e);
60
/** Handles the wheel events. */
61
virtual
void
wheelEvent
(QWheelEvent *e);
62
63
/** Update the viewport. This will set _view to a region that,
64
* when copied from the image and scaled to the screen size, will
65
* show what is expected. The _view may be larger in one or more
66
* directions than the image, and you must deal with the
67
* non-overlapping regions. */
68
void
updateViewport
(
int
screendx=0,
int
screendy=0);
69
/** Redraws the scaled image in the viewport. */
70
void
drawScaledImage
();
71
72
private
:
73
float
_zoom
;
/**< The current zoom level. */
74
QImage
_image
;
/**< The displayed image. */
75
float
_padding
;
/**< Amount of padding to use on the side of the image. */
76
float
_maxZoomFactor
;
/**< Maximum amount to zoom into the image. */
77
78
int
_mouseX
;
/**< The x-coordinate of the current mouse position. */
79
int
_mouseY
;
/**< The y-coordinate of the current mouse position. */
80
81
QRect
_view
;
/**< The displayed viewport. */
82
float
_desiredX
;
/**< The X value we desire (???). */
83
float
_desiredY
;
/**< The Y value we desire (???). */
84
};
85
86
#endif
87
Generated on Mon Jan 14 2013 08:44:27 for Vidalia by
1.8.3