Implemented zoom to fit.

This commit is contained in:
Jim Evins
2013-12-08 21:56:24 -05:00
parent 4d7b19056d
commit 0a6d41bd7e
3 changed files with 26 additions and 1 deletions
+1 -1
View File
@@ -828,7 +828,7 @@ namespace glabels
void MainWindow::viewZoomToFit() void MainWindow::viewZoomToFit()
{ {
std::cout << "ACTION: edit->Zoom to fit" << std::endl; view->zoomToFit();
} }
+21
View File
@@ -21,12 +21,15 @@
#include "View.h" #include "View.h"
#include <cmath> #include <cmath>
#include <iostream>
namespace namespace
{ {
const int nZoomLevels = 14; const int nZoomLevels = 14;
const double zoomLevels[nZoomLevels] = { 8, 6, 4, 3, 2, 1.5, 1, 0.75, 0.67, 0.50, 0.33, 0.25, 0.15, 0.10 }; const double zoomLevels[nZoomLevels] = { 8, 6, 4, 3, 2, 1.5, 1, 0.75, 0.67, 0.50, 0.33, 0.25, 0.15, 0.10 };
const double ZOOM_TO_FIT_PAD = 16;
} }
@@ -107,6 +110,15 @@ namespace glabels
void View::zoomToFit() void View::zoomToFit()
{ {
double x_scale = (72.0/physicalDpiY()) * ( width() - ZOOM_TO_FIT_PAD ) / mModel->w();
double y_scale = (72.0/physicalDpiY()) * ( height() - ZOOM_TO_FIT_PAD ) / mModel->h();
double newZoom = min( x_scale, y_scale );
// Limits
newZoom = min( newZoom, zoomLevels[0] );
newZoom = max( newZoom, zoomLevels[nZoomLevels-1] );
setZoomReal( newZoom, true );
} }
@@ -133,4 +145,13 @@ namespace glabels
emit zoomChanged(); emit zoomChanged();
} }
void View::resizeEvent( QResizeEvent *event )
{
if ( mZoomToFitFlag )
{
zoomToFit();
}
}
} }
+4
View File
@@ -57,6 +57,10 @@ namespace glabels
void setZoomReal( double zoom, bool zoomToFitFlag ); void setZoomReal( double zoom, bool zoomToFitFlag );
protected:
void resizeEvent( QResizeEvent *event );
private: private:
QGraphicsScene* mScene; QGraphicsScene* mScene;