00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef kozoomhandler_h
00021 #define kozoomhandler_h
00022
00023 #include <KoRect.h>
00024 #include <koffice_export.h>
00025 #include <KoZoomMode.h>
00026 #include <KoViewConverter.h>
00027
00033 class KOFFICEUI_EXPORT KoZoomHandler : public KoViewConverter
00034 {
00035 public:
00036 KoZoomHandler();
00037 virtual ~KoZoomHandler() {}
00038
00046 virtual void setZoomAndResolution( int zoom, int dpiX, int dpiY );
00047
00053 double zoomedResolutionX() const { return m_zoomedResolutionX; }
00054 double zoomedResolutionY() const { return m_zoomedResolutionY; }
00055
00056 double resolutionX() const { return m_resolutionX; }
00057 double resolutionY() const { return m_resolutionY; }
00058
00062 double zoomFactorX() const { return m_zoomedResolutionX / m_resolutionX; }
00066 double zoomFactorY() const { return m_zoomedResolutionY / m_resolutionY; }
00067
00068
00075 void setResolution( double resolutionX, double resolutionY );
00076
00082 virtual void setZoomedResolution( double zoomedResolutionX, double zoomedResolutionY );
00083
00089 void setZoom( int zoom );
00094 void setZoom( double zoom );
00095
00100 void setZoomMode( KoZoomMode::Mode zoomMode ) { m_zoomMode = zoomMode; }
00105 int zoomInPercent() const { return qRound(m_zoom * 100); }
00110 KoZoomMode::Mode zoomMode() const { return m_zoomMode; }
00111
00112
00113 int zoomItXOld( double z ) const {
00114 return qRound( m_zoomedResolutionX * z );
00115 }
00116 int zoomItYOld( double z ) const {
00117 return qRound( m_zoomedResolutionY * z );
00118 }
00119 double zoomItX( double z ) const {
00120 return m_zoomedResolutionX * z;
00121 }
00122 double zoomItY( double z ) const {
00123 return m_zoomedResolutionY * z ;
00124 }
00125
00126 QPoint zoomPointOld( const KoPoint & p ) const {
00127 return QPoint( zoomItXOld( p.x() ), zoomItYOld( p.y() ) );
00128 }
00129 QRect zoomRectOld( const KoRect & r ) const {
00130 QRect _r;
00131 _r.setCoords( zoomItXOld( r.left() ), zoomItYOld( r.top() ),
00132 zoomItXOld( r.right() ), zoomItYOld( r.bottom() ) );
00133 return _r;
00134 }
00145 QSize zoomSizeOld( const KoSize & s ) const {
00146 return QSize( zoomItXOld( s.width() ), zoomItYOld( s.height() ) );
00147 }
00148
00149
00150 double unzoomItXOld( int x ) const {
00151 return static_cast<double>( x ) / m_zoomedResolutionX;
00152 }
00153 double unzoomItYOld( int y ) const {
00154 return static_cast<double>( y ) / m_zoomedResolutionY;
00155 }
00156 double unzoomItX( double x ) const {
00157 return x / m_zoomedResolutionX;
00158 }
00159 double unzoomItY( double y ) const {
00160 return y / m_zoomedResolutionY;
00161 }
00162 KoPoint unzoomPointOld( const QPoint & p ) const {
00163 return KoPoint( unzoomItXOld( p.x() ), unzoomItYOld( p.y() ) );
00164 }
00165 KoRect unzoomRectOld (const QRect & r ) const {
00166 KoRect _r;
00167 _r.setCoords( unzoomItXOld( r.left() ), unzoomItYOld( r.top() ),
00168 unzoomItXOld( r.right() ), unzoomItYOld( r.bottom() ) );
00169 return _r;
00170 }
00171
00172
00173
00178 QPointF documentToView( const QPointF &documentPoint ) const;
00179
00184 QPointF viewToDocument( const QPointF &viewPoint ) const;
00185
00190 QRectF documentToView( const QRectF &documentRect ) const;
00191
00196 QRectF viewToDocument( const QRectF &viewRect ) const;
00197
00203 virtual double documentToViewX( double documentX ) const;
00204
00210 virtual double documentToViewY( double documentY ) const;
00211
00217 virtual double viewToDocumentX( double viewX ) const;
00218
00224 virtual double viewToDocumentY( double viewY ) const;
00225
00231 void zoom(double *zoomX, double *zoomY) const;
00232
00233
00234 protected:
00235 double m_zoom;
00236 KoZoomMode::Mode m_zoomMode;
00237
00238 double m_resolutionX;
00239 double m_resolutionY;
00240 double m_zoomedResolutionX;
00241 double m_zoomedResolutionY;
00242 };
00243
00244 #endif