Qwt User's Guide 5.2.3

- Main Page
- Related Pages
- Classes

qwt_layout_metrics.h
1 /* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
2 * Qwt Widget Library
3 * Copyright (C) 1997 Josef Wilgen
4 * Copyright (C) 2002 Uwe Rathmann
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the Qwt License, Version 1.0
8 *****************************************************************************/
9
10 #ifndef QWT_LAYOUT_METRICS_H
11 #define QWT_LAYOUT_METRICS_H
12
13 #include <qsize.h>
14 #include <qrect.h>
15 #include "qwt_polygon.h"
16 #include "qwt_global.h"
17
18 class QPainter;
19 class QString;
20 class QFontMetrics;
21 #if QT_VERSION < 0x040000
22 class QWMatrix;
23 #else
24 class QMatrix;
25 #endif
26 class QPaintDevice;
27
43 class QWT_EXPORT QwtMetricsMap
44 {
45 public:
46 QwtMetricsMap();
47
48 bool isIdentity() const;
49
50 void setMetrics(const QPaintDevice *layoutMetrics,
51 const QPaintDevice *deviceMetrics);
52
53 int layoutToDeviceX(int x) const;
54 int deviceToLayoutX(int x) const;
55 int screenToLayoutX(int x) const;
56 int layoutToScreenX(int x) const;
57
58 int layoutToDeviceY(int y) const;
59 int deviceToLayoutY(int y) const;
60 int screenToLayoutY(int y) const;
61 int layoutToScreenY(int y) const;
62
63 QPoint layoutToDevice(const QPoint &, const QPainter * = NULL) const;
64 QPoint deviceToLayout(const QPoint &, const QPainter * = NULL) const;
65 QPoint screenToLayout(const QPoint &) const;
66 QPoint layoutToScreen(const QPoint &point) const;
67
68
69 QSize layoutToDevice(const QSize &) const;
70 QSize deviceToLayout(const QSize &) const;
71 QSize screenToLayout(const QSize &) const;
72 QSize layoutToScreen(const QSize &) const;
73
74 QRect layoutToDevice(const QRect &, const QPainter * = NULL) const;
75 QRect deviceToLayout(const QRect &, const QPainter * = NULL) const;
76 QRect screenToLayout(const QRect &) const;
77 QRect layoutToScreen(const QRect &) const;
78
79 QwtPolygon layoutToDevice(const QwtPolygon &,
80 const QPainter * = NULL) const;
81 QwtPolygon deviceToLayout(const QwtPolygon &,
82 const QPainter * = NULL) const;
83
84 #if QT_VERSION < 0x040000
85 static QwtPolygon translate(const QWMatrix &, const QwtPolygon &);
86 static QRect translate(const QWMatrix &, const QRect &);
87 #else
88 static QwtPolygon translate(const QMatrix &, const QwtPolygon &);
89 static QRect translate(const QMatrix &, const QRect &);
90 #endif
91
92 private:
93 double d_screenToLayoutX;
94 double d_screenToLayoutY;
95
96 double d_deviceToLayoutX;
97 double d_deviceToLayoutY;
98 };
99
100 inline bool QwtMetricsMap::isIdentity() const
101 {
102 return d_deviceToLayoutX == 1.0 && d_deviceToLayoutY == 1.0;
103 }
104
105 inline int QwtMetricsMap::layoutToDeviceX(int x) const
106 {
107 return qRound(x / d_deviceToLayoutX);
108 }
109
110 inline int QwtMetricsMap::deviceToLayoutX(int x) const
111 {
112 return qRound(x * d_deviceToLayoutX);
113 }
114
115 inline int QwtMetricsMap::screenToLayoutX(int x) const
116 {
117 return qRound(x * d_screenToLayoutX);
118 }
119
120 inline int QwtMetricsMap::layoutToScreenX(int x) const
121 {
122 return qRound(x / d_screenToLayoutX);
123 }
124
125 inline int QwtMetricsMap::layoutToDeviceY(int y) const
126 {
127 return qRound(y / d_deviceToLayoutY);
128 }
129
130 inline int QwtMetricsMap::deviceToLayoutY(int y) const
131 {
132 return qRound(y * d_deviceToLayoutY);
133 }
134
135 inline int QwtMetricsMap::screenToLayoutY(int y) const
136 {
137 return qRound(y * d_screenToLayoutY);
138 }
139
140 inline int QwtMetricsMap::layoutToScreenY(int y) const
141 {
142 return qRound(y / d_screenToLayoutY);
143 }
144
145 inline QSize QwtMetricsMap::layoutToDevice(const QSize &size) const
146 {
147 return QSize(layoutToDeviceX(size.width()),
148 layoutToDeviceY(size.height()));
149 }
150
151 inline QSize QwtMetricsMap::deviceToLayout(const QSize &size) const
152 {
153 return QSize(deviceToLayoutX(size.width()),
154 deviceToLayoutY(size.height()));
155 }
156
157 inline QSize QwtMetricsMap::screenToLayout(const QSize &size) const
158 {
159 return QSize(screenToLayoutX(size.width()),
160 screenToLayoutY(size.height()));
161 }
162
163 inline QSize QwtMetricsMap::layoutToScreen(const QSize &size) const
164 {
165 return QSize(layoutToScreenX(size.width()),
166 layoutToScreenY(size.height()));
167 }
168
169 #endif