Eneboo - Documentación para desarrolladores
|
00001 /* -*- mode: C++ ; c-file-style: "stroustrup" -*- ***************************** 00002 * Qwt Widget Library 00003 * Copyright (C) 1997 Josef Wilgen 00004 * Copyright (C) 2002 Uwe Rathmann 00005 * 00006 * This library is free software; you can redistribute it and/or 00007 * modify it under the terms of the Qwt License, Version 1.0 00008 *****************************************************************************/ 00009 00010 #ifndef QWT_LAYOUT_METRICS_H 00011 #define QWT_LAYOUT_METRICS_H 00012 00013 #include <qsize.h> 00014 #include <qrect.h> 00015 #include "qwt_polygon.h" 00016 #include "qwt_global.h" 00017 00018 class QPainter; 00019 class QString; 00020 class QFontMetrics; 00021 #if QT_VERSION < 0x040000 00022 class QWMatrix; 00023 #else 00024 class QMatrix; 00025 #endif 00026 class QPaintDevice; 00027 00031 class QWT_EXPORT QwtMetricsMap 00032 { 00033 public: 00034 QwtMetricsMap(); 00035 00036 bool isIdentity() const; 00037 00038 void setMetrics(const QPaintDevice *layoutMetrics, 00039 const QPaintDevice *deviceMetrics); 00040 00041 int layoutToDeviceX(int x) const; 00042 int deviceToLayoutX(int x) const; 00043 int screenToLayoutX(int x) const; 00044 int layoutToScreenX(int x) const; 00045 00046 int layoutToDeviceY(int y) const; 00047 int deviceToLayoutY(int y) const; 00048 int screenToLayoutY(int y) const; 00049 int layoutToScreenY(int y) const; 00050 00051 QPoint layoutToDevice(const QPoint &, const QPainter * = NULL) const; 00052 QPoint deviceToLayout(const QPoint &, const QPainter * = NULL) const; 00053 QPoint screenToLayout(const QPoint &) const; 00054 QPoint layoutToScreen(const QPoint &point) const; 00055 00056 00057 QSize layoutToDevice(const QSize &) const; 00058 QSize deviceToLayout(const QSize &) const; 00059 QSize screenToLayout(const QSize &) const; 00060 QSize layoutToScreen(const QSize &) const; 00061 00062 QRect layoutToDevice(const QRect &, const QPainter * = NULL) const; 00063 QRect deviceToLayout(const QRect &, const QPainter * = NULL) const; 00064 QRect screenToLayout(const QRect &) const; 00065 QRect layoutToScreen(const QRect &) const; 00066 00067 QwtPolygon layoutToDevice(const QwtPolygon &, 00068 const QPainter * = NULL) const; 00069 QwtPolygon deviceToLayout(const QwtPolygon &, 00070 const QPainter * = NULL) const; 00071 00072 #if QT_VERSION < 0x040000 00073 static QwtPolygon translate(const QWMatrix &, const QwtPolygon &); 00074 static QRect translate(const QWMatrix &, const QRect &); 00075 #else 00076 static QwtPolygon translate(const QMatrix &, const QwtPolygon &); 00077 static QRect translate(const QMatrix &, const QRect &); 00078 #endif 00079 00080 private: 00081 double d_screenToLayoutX; 00082 double d_screenToLayoutY; 00083 00084 double d_deviceToLayoutX; 00085 double d_deviceToLayoutY; 00086 }; 00087 00088 inline bool QwtMetricsMap::isIdentity() const 00089 { 00090 return d_deviceToLayoutX == 1.0 && d_deviceToLayoutY == 1.0; 00091 } 00092 00093 inline int QwtMetricsMap::layoutToDeviceX(int x) const 00094 { 00095 return qRound(x / d_deviceToLayoutX); 00096 } 00097 00098 inline int QwtMetricsMap::deviceToLayoutX(int x) const 00099 { 00100 return qRound(x * d_deviceToLayoutX); 00101 } 00102 00103 inline int QwtMetricsMap::screenToLayoutX(int x) const 00104 { 00105 return qRound(x * d_screenToLayoutX); 00106 } 00107 00108 inline int QwtMetricsMap::layoutToScreenX(int x) const 00109 { 00110 return qRound(x / d_screenToLayoutX); 00111 } 00112 00113 inline int QwtMetricsMap::layoutToDeviceY(int y) const 00114 { 00115 return qRound(y / d_deviceToLayoutY); 00116 } 00117 00118 inline int QwtMetricsMap::deviceToLayoutY(int y) const 00119 { 00120 return qRound(y * d_deviceToLayoutY); 00121 } 00122 00123 inline int QwtMetricsMap::screenToLayoutY(int y) const 00124 { 00125 return qRound(y * d_screenToLayoutY); 00126 } 00127 00128 inline int QwtMetricsMap::layoutToScreenY(int y) const 00129 { 00130 return qRound(y / d_screenToLayoutY); 00131 } 00132 00133 inline QSize QwtMetricsMap::layoutToDevice(const QSize &size) const 00134 { 00135 return QSize(layoutToDeviceX(size.width()), 00136 layoutToDeviceY(size.height())); 00137 } 00138 00139 inline QSize QwtMetricsMap::deviceToLayout(const QSize &size) const 00140 { 00141 return QSize(deviceToLayoutX(size.width()), 00142 deviceToLayoutY(size.height())); 00143 } 00144 00145 inline QSize QwtMetricsMap::screenToLayout(const QSize &size) const 00146 { 00147 return QSize(screenToLayoutX(size.width()), 00148 screenToLayoutY(size.height())); 00149 } 00150 00151 inline QSize QwtMetricsMap::layoutToScreen(const QSize &size) const 00152 { 00153 return QSize(layoutToScreenX(size.width()), 00154 layoutToScreenY(size.height())); 00155 } 00156 00157 #endif