33 void QgsMapCanvasMap::setContent(
const QImage &image,
const QgsRectangle &
rect )
35 mPreviewImages.clear();
40 if (
mMapCanvas->property(
"retro" ).toBool() )
41 mImage = mImage.scaled( mImage.width() / 3, mImage.height() / 3 )
42 .convertToFormat( QImage::Format_Indexed8, Qt::OrderedDither | Qt::OrderedAlphaDither );
47 void QgsMapCanvasMap::addPreviewImage(
const QImage &image,
const QgsRectangle &rect )
49 mPreviewImages.append( qMakePair( image, rect ) );
53 QRectF QgsMapCanvasMap::boundingRect()
const 58 return QRectF( -width, -height, 3 * width, 3 * height );
61 void QgsMapCanvasMap::paint( QPainter *painter )
64 if ( mImage.size() != QSize( w, h ) )
66 QgsDebugMsg( QString(
"map paint DIFFERENT SIZE: img %1,%2 item %3,%4" ).arg( mImage.width() ).arg( mImage.height() ).arg( w ).arg( h ) );
78 QList< QPair< QImage, QgsRectangle > >::const_iterator imIt = mPreviewImages.constBegin();
79 for ( ; imIt != mPreviewImages.constEnd(); ++imIt )
83 painter->drawImage( QRectF( ul.x(), ul.y(), lr.x() - ul.x(), lr.y() - ul.y() ), imIt->first, QRect( 0, 0, imIt->first.width(), imIt->first.height() ) );
86 painter->drawImage( QRect( 0, 0, w, h ), mImage );
91 QPointF c = br.center();
92 double rad = std::max( br.width(), br.height() ) / 10;
93 painter->drawRoundedRect( br, rad, rad );
94 painter->drawLine( QLineF( 0, 0, br.width(), br.height() ) );
95 painter->drawLine( QLineF( br.width(), 0, 0, br.height() ) );
97 double nw = br.width() * 0.5;
98 double nh = br.height() * 0.5;
99 br = QRectF( c - QPointF( nw / 2, nh / 2 ), QSize( nw, nh ) );
100 painter->drawRoundedRect( br, rad, rad );
102 nw = br.width() * 0.5;
103 nh = br.height() * 0.5;
104 br = QRectF( c - QPointF( nw / 2, nh / 2 ), QSize( nw, nh ) );
105 painter->drawRoundedRect( br, rad, rad );
A rectangle specified with double values.
QgsRectangle rect() const
returns canvas item rectangle in map units
QgsPointXY toMapCoordinates(QPoint point) const
transformation from screen coordinates to map coordinates
A class to represent a 2D point.
An abstract class for items that can be placed on the map canvas.
Map canvas is a class for displaying all GIS data types on a canvas.
QSizeF mItemSize
cached size of the item (to return in boundingRect())
QRectF boundingRect() const override
void setRect(const QgsRectangle &r, bool resetRotation=true)
sets canvas item rectangle in map units
QgsRectangle mRect
cached canvas item rectangle in map coordinates encodes position (xmin,ymax) and size (width/height) ...
Point geometry type, with support for z-dimension and m-values.
QgsMapCanvas * mMapCanvas
pointer to map canvas
double xMinimum() const
Returns the x minimum value (left side of rectangle).
double yMaximum() const
Returns the y maximum value (top side of rectangle).
QPointF toCanvasCoordinates(const QgsPointXY &point) const
transformation from map coordinates to screen coordinates