Skip to content

Commit

Permalink
Move setRenderContext() method to mapcanvas item class
Browse files Browse the repository at this point in the history
git-svn-id: http://svn.osgeo.org/qgis/trunk/qgis@13332 c8812cc2-4d05-0410-92ff-de0c093fc19c
  • Loading branch information
mhugent committed Apr 20, 2010
1 parent 708dc7c commit 44c916f
Show file tree
Hide file tree
Showing 5 changed files with 54 additions and 45 deletions.
6 changes: 6 additions & 0 deletions python/gui/qgsmapcanvasitem.sip
Expand Up @@ -23,6 +23,12 @@ class QgsMapCanvasItem : QGraphicsItem
//! schedules map canvas for repaint
void updateCanvas();

/**Sets render context parameters
@param p painter for rendering
@param context out: configured context
@return true in case of success
@note added in version 1.5*/
bool setRenderContextVariables( QPainter* p, QgsRenderContext& context ) const;

public:

Expand Down
39 changes: 0 additions & 39 deletions src/gui/qgsannotationitem.cpp
Expand Up @@ -17,7 +17,6 @@

#include "qgsannotationitem.h"
#include "qgsmapcanvas.h"
#include "qgsmaprenderer.h"
#include "qgsrendercontext.h"
#include "qgssymbollayerv2utils.h"
#include "qgssymbolv2.h"
Expand Down Expand Up @@ -248,44 +247,6 @@ void QgsAnnotationItem::drawSelectionBoxes( QPainter* p )
p->drawRect( QRectF( mBoundingRect.left(), mBoundingRect.bottom() - handlerSize, handlerSize, handlerSize ) );
}

bool QgsAnnotationItem::setRenderContextVariables( QPainter* p, QgsRenderContext& context ) const
{
if ( !mMapCanvas || !p )
{
return false;
}
QgsMapRenderer* mapRenderer = mMapCanvas->mapRenderer();
if ( !mapRenderer )
{
return false;
}

context.setPainter( p );
context.setRendererScale( mMapCanvas->scale() );

int dpi = mapRenderer->outputDpi();
int painterDpi = p->device()->logicalDpiX();
double scaleFactor = 1.0;
double rasterScaleFactor = 1.0;

//little trick to find out if painting origines from composer or main map canvas
if ( data( 0 ).toString() == "composer" )
{
rasterScaleFactor = painterDpi / 25.4;
scaleFactor = dpi / 25.4;
}
else
{
if ( mapRenderer->outputUnits() == QgsMapRenderer::Millimeters )
{
scaleFactor = dpi / 25.4;
}
}
context.setScaleFactor( scaleFactor );
context.setRasterScaleFactor( rasterScaleFactor );
return true;
}

QLineF QgsAnnotationItem::segment( int index )
{
switch ( index )
Expand Down
6 changes: 0 additions & 6 deletions src/gui/qgsannotationitem.h
Expand Up @@ -23,7 +23,6 @@
class QDomDocument;
class QDomElement;
class QDialog;
class QgsRenderContext;
class QgsVectorLayer;
class QgsMarkerSymbolV2;

Expand Down Expand Up @@ -129,11 +128,6 @@ class GUI_EXPORT QgsAnnotationItem: public QgsMapCanvasItem
void drawFrame( QPainter* p );
void drawMarkerSymbol( QPainter* p );
void drawSelectionBoxes( QPainter* p );
/**Sets render context parameters
@param p painter for rendering
@param context out: configured context
@return true in case of success*/
bool setRenderContextVariables( QPainter* p, QgsRenderContext& context ) const;
/**Returns frame width in painter units*/
//double scaledFrameWidth( QPainter* p) const;
/**Gets the frame line (0 is the top line, 1 right, 2 bottom, 3 left)*/
Expand Down
40 changes: 40 additions & 0 deletions src/gui/qgsmapcanvasitem.cpp
Expand Up @@ -17,7 +17,9 @@

#include "qgsmapcanvasitem.h"
#include "qgsmapcanvas.h"
#include "qgsmaprenderer.h"
#include "qgsmaptopixel.h"
#include "qgsrendercontext.h"
#include <QGraphicsScene>
#include <QRect>
#include <QPen>
Expand Down Expand Up @@ -101,6 +103,44 @@ void QgsMapCanvasItem::updateCanvas()
//mMapCanvas->scene()->update(); //Contents();
}

bool QgsMapCanvasItem::setRenderContextVariables( QPainter* p, QgsRenderContext& context ) const
{
if ( !mMapCanvas || !p )
{
return false;
}
QgsMapRenderer* mapRenderer = mMapCanvas->mapRenderer();
if ( !mapRenderer )
{
return false;
}

context.setPainter( p );
context.setRendererScale( mMapCanvas->scale() );

int dpi = mapRenderer->outputDpi();
int painterDpi = p->device()->logicalDpiX();
double scaleFactor = 1.0;
double rasterScaleFactor = 1.0;

//little trick to find out if painting origines from composer or main map canvas
if ( data( 0 ).toString() == "composer" )
{
rasterScaleFactor = painterDpi / 25.4;
scaleFactor = dpi / 25.4;
}
else
{
if ( mapRenderer->outputUnits() == QgsMapRenderer::Millimeters )
{
scaleFactor = dpi / 25.4;
}
}
context.setScaleFactor( scaleFactor );
context.setRasterScaleFactor( rasterScaleFactor );
return true;
}

void QgsMapCanvasItem::updatePosition()
{
// default implementation: recalculate position of the item
Expand Down
8 changes: 8 additions & 0 deletions src/gui/qgsmapcanvasitem.h
Expand Up @@ -21,6 +21,7 @@
#include "qgsrectangle.h"

class QgsMapCanvas;
class QgsRenderContext;
class QPainter;

/** \ingroup gui
Expand All @@ -47,6 +48,13 @@ class GUI_EXPORT QgsMapCanvasItem : public QGraphicsItem
//! schedules map canvas for repaint
void updateCanvas();

/**Sets render context parameters
@param p painter for rendering
@param context out: configured context
@return true in case of success
@note added in version 1.5*/
bool setRenderContextVariables( QPainter* p, QgsRenderContext& context ) const;


public:

Expand Down

0 comments on commit 44c916f

Please sign in to comment.