F:/KPlato/koffice/libs/kofficeui/KoZoomHandler.h

Aller à la documentation de ce fichier.
00001 /* This file is part of the KDE project
00002    Copyright (C) 2001-2005 David Faure <faure@kde.org>
00003 
00004    This library is free software; you can redistribute it and/or
00005    modify it under the terms of the GNU Library General Public
00006    License as published by the Free Software Foundation; either
00007    version 2 of the License, or (at your option) any later version.
00008 
00009    This library is distributed in the hope that it will be useful,
00010    but WITHOUT ANY WARRANTY; without even the implied warranty of
00011    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00012    Library General Public License for more details.
00013 
00014    You should have received a copy of the GNU Library General Public License
00015    along with this library; see the file COPYING.LIB.  If not, write to
00016    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
00017    Boston, MA 02110-1301, USA.
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     // Input: pt. Output: pixels. Resolution and zoom are applied.
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     // Input: pixels. Output: pt.
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     // KoViewConverter-interface methods
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

Généré le Wed Nov 22 23:41:05 2006 pour KPlato par  doxygen 1.5.1-p1