Skip to content

Commit e29bbeb

Browse files
author
wonder
committedDec 7, 2006
Fix for #340.
Do correct translation in world matrix after every zoom in composer. Also does full zoom when composer window gets resized. git-svn-id: http://svn.osgeo.org/qgis/trunk@6197 c8812cc2-4d05-0410-92ff-de0c093fc19c
1 parent 622d34a commit e29bbeb

File tree

4 files changed

+29
-4
lines changed

4 files changed

+29
-4
lines changed
 

‎src/composer/qgscomposer.cpp

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -231,18 +231,34 @@ void QgsComposer::on_mActionZoomAll_activated(void)
231231
zoomFull();
232232
}
233233

234+
QMatrix QgsComposer::updateMatrix(double scaleChange)
235+
{
236+
double scale = mView->worldMatrix().m11() * scaleChange; // get new scale
237+
238+
double dx = ( mView->width() - scale * mComposition->canvas()->width() ) / 2;
239+
double dy = ( mView->height() - scale * mComposition->canvas()->height() ) / 2;
240+
241+
// don't translate if composition is bigger than view
242+
if (dx < 0) dx = 0;
243+
if (dy < 0) dy = 0;
244+
245+
// create new world matrix:
246+
QMatrix m;
247+
m.translate ( dx, dy );
248+
m.scale ( scale, scale );
249+
return m;
250+
}
251+
234252
void QgsComposer::on_mActionZoomIn_activated(void)
235253
{
236-
QMatrix m = mView->worldMatrix();
237-
m.scale( 2.0, 2.0 );
254+
QMatrix m = updateMatrix(2);
238255
mView->setWorldMatrix( m );
239256
mView->repaintContents();
240257
}
241258

242259
void QgsComposer::on_mActionZoomOut_activated(void)
243260
{
244-
QMatrix m = mView->worldMatrix();
245-
m.scale( 0.5, 0.5 );
261+
QMatrix m = updateMatrix(0.5);
246262
mView->setWorldMatrix( m );
247263
mView->repaintContents();
248264
}

‎src/composer/qgscomposer.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,9 @@ public slots:
169169
//! Set buttons up
170170
void setToolActionsOff (void);
171171

172+
//! returns new world matrix for canvas view after zoom with factor scaleChange
173+
QMatrix updateMatrix(double scaleChange);
174+
172175
//! Pointer to composer view
173176
QgsComposerView *mView;
174177

‎src/composer/qgscomposerview.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,3 +60,8 @@ void QgsComposerView::keyPressEvent ( QKeyEvent * e )
6060
{
6161
mComposer->composition()->keyPressEvent ( e );
6262
}
63+
64+
void QgsComposerView::resizeEvent ( QResizeEvent * )
65+
{
66+
mComposer->zoomFull();
67+
}

‎src/composer/qgscomposerview.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ class QgsComposerView: public Q3CanvasView
3838
void contentsMouseMoveEvent(QMouseEvent*);
3939

4040
void keyPressEvent ( QKeyEvent * e );
41+
void resizeEvent ( QResizeEvent * );
4142

4243
private:
4344
QgsComposer *mComposer;

0 commit comments

Comments
 (0)
Please sign in to comment.