00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include "KoZoomHandler.h"
00022 #include <kdebug.h>
00023 #include <KoUnit.h>
00024 #include <KoGlobal.h>
00025
00026 KoZoomHandler::KoZoomHandler() : KoViewConverter()
00027 {
00028
00029 setZoomAndResolution( 100, KoGlobal::dpiX(), KoGlobal::dpiY() );
00030 setZoomMode( KoZoomMode::ZOOM_CONSTANT );
00031 }
00032
00033 void KoZoomHandler::setZoomAndResolution( int zoom, int dpiX, int dpiY )
00034 {
00035
00036 m_resolutionX = POINT_TO_INCH( static_cast<double>(dpiX) );
00037 m_resolutionY = POINT_TO_INCH( static_cast<double>(dpiY) );
00038 setZoom( zoom / 100.0 );
00039
00040
00041
00042
00043
00044 }
00045
00046 void KoZoomHandler::setResolution( double resolutionX, double resolutionY )
00047 {
00048 m_zoom = 1.0;
00049 m_resolutionX = resolutionX;
00050 m_resolutionY = resolutionY;
00051 m_zoomedResolutionX = resolutionX;
00052 m_zoomedResolutionY = resolutionY;
00053 }
00054
00055 void KoZoomHandler::setZoomedResolution( double zoomedResolutionX, double zoomedResolutionY )
00056 {
00057
00058
00059
00060 m_zoomedResolutionX = zoomedResolutionX;
00061 m_zoomedResolutionY = zoomedResolutionY;
00062 }
00063
00064 void KoZoomHandler::setZoom( double zoom )
00065 {
00066 m_zoom = zoom;
00067 if( m_zoom == 1.0 ) {
00068 m_zoomedResolutionX = m_resolutionX;
00069 m_zoomedResolutionY = m_resolutionY;
00070 } else {
00071 m_zoomedResolutionX = m_zoom * m_resolutionX;
00072 m_zoomedResolutionY = m_zoom * m_resolutionY;
00073 }
00074 }
00075
00076 void KoZoomHandler::setZoom( int zoom )
00077 {
00078 setZoom(zoom / 100.0);
00079 }
00080
00081 QPointF KoZoomHandler::documentToView( const QPointF &documentPoint ) const{
00082 return QPointF( zoomItX( documentPoint.x() ), zoomItY( documentPoint.y() ) );
00083 }
00084
00085 QPointF KoZoomHandler::viewToDocument( const QPointF &viewPoint ) const{
00086 return QPointF( unzoomItX( viewPoint.x() ), unzoomItY( viewPoint.y() ) );
00087 }
00088
00089 QRectF KoZoomHandler::documentToView( const QRectF &documentRect ) const{
00090 QRectF r;
00091 r.setCoords( zoomItX( documentRect.left() ), zoomItY( documentRect.top() ),
00092 zoomItX( documentRect.right() ), zoomItY( documentRect.bottom() ) );
00093 return r;
00094 }
00095
00096 QRectF KoZoomHandler::viewToDocument( const QRectF &viewRect ) const{
00097 QRectF r;
00098 r.setCoords( unzoomItX( viewRect.left() ), unzoomItY( viewRect.top() ),
00099 unzoomItX( viewRect.right() ), unzoomItY( viewRect.bottom() ) );
00100 return r;
00101 }
00102
00103 double KoZoomHandler::documentToViewX( double documentX ) const
00104 {
00105 return zoomItX( documentX );
00106 }
00107
00108 double KoZoomHandler::documentToViewY( double documentY ) const
00109 {
00110 return zoomItY( documentY );
00111 }
00112
00113 double KoZoomHandler::viewToDocumentX( double viewX ) const
00114 {
00115 return unzoomItX( viewX );
00116 }
00117
00118 double KoZoomHandler::viewToDocumentY( double viewY ) const
00119 {
00120 return unzoomItY( viewY );
00121 }
00122
00123 void KoZoomHandler::zoom(double *zoomX, double *zoomY) const {
00124 *zoomX = zoomItX(100.0) / 100.0;
00125 *zoomY = zoomItY(100.0) / 100.0;
00126 }