39 if ( !p || !mIterator || !viewPort || !qgsMapToPixel )
57 std::unique_ptr< QgsRasterBlock > block;
61 block, topLeftCol, topLeftRow ) )
65 QgsDebugMsg( QStringLiteral(
"Cannot get block" ) );
69 QImage img = block->image();
74 QPrinter *printer =
dynamic_cast<QPrinter *
>( p->device() );
75 if ( printer && printer->outputFormat() == QPrinter::PdfFormat )
79 img = img.convertToFormat( QImage::Format_ARGB32 );
80 QRgb transparentBlack = qRgba( 0, 0, 0, 0 );
81 QRgb transparentWhite = qRgba( 255, 255, 255, 0 );
82 for (
int x = 0; x < img.width(); x++ )
84 for (
int y = 0; y < img.height(); y++ )
86 if ( img.pixel( x, y ) == transparentBlack )
88 img.setPixel( x, y, transparentWhite );
100 p->setCompositionMode( QPainter::CompositionMode_Source );
103 drawImage( p, viewPort, img, topLeftCol, topLeftRow, qgsMapToPixel );
108 p->setCompositionMode( QPainter::CompositionMode_SourceOver );
120 if ( !p || !viewPort )
128 p->setRenderHint( QPainter::Antialiasing,
false );
133 p->setBrush( QBrush( QColor( Qt::white ), Qt::NoBrush ) );
146 p->translate( cx, cy );
147 p->rotate( rotation );
148 p->translate( -cx, -cy );
152 p->drawImage( tlPoint, img );
156 QRectF br = QRectF( tlPoint, img.size() );
157 QPointF
c = br.center();
158 double rad = std::max( br.width(), br.height() ) / 10;
159 p->drawRoundedRect( br, rad, rad );
160 p->drawLine( QLineF( br.x(), br.y(), br.x() + br.width(), br.y() + br.height() ) );
161 p->drawLine( QLineF( br.x() + br.width(), br.y(), br.x(), br.y() + br.height() ) );
163 double nw = br.width() * 0.5;
164 double nh = br.height() * 0.5;
165 br = QRectF(
c - QPointF( nw / 2, nh / 2 ), QSize( nw, nh ) );
166 p->drawRoundedRect( br, rad, rad );
168 nw = br.width() * 0.5;
169 nh = br.height() * 0.5;
170 br = QRectF(
c - QPointF( nw / 2, nh / 2 ), QSize( nw, nh ) );
171 p->drawRoundedRect( br, rad, rad );