void QgsMapCanvasAnnotationItem::updateBoundingRect() { prepareGeometryChange(); QgsRenderContext rc = QgsRenderContext::fromQPainter( nullptr ); double fillSymbolBleed = mAnnotation && mAnnotation->fillSymbol() ? QgsSymbolLayerUtils::estimateMaxSymbolBleed( mAnnotation->fillSymbol(), rc ) : 0; if ( mAnnotation && !mAnnotation->hasFixedMapPosition() ) { mBoundingRect = QRectF( - fillSymbolBleed, -fillSymbolBleed, mAnnotation->frameSize().width() + fillSymbolBleed * 2, mAnnotation->frameSize().height() + fillSymbolBleed * 2 ); } else { double halfSymbolSize = 0.0; if ( mAnnotation && mAnnotation->markerSymbol() ) { halfSymbolSize = scaledSymbolSize() / 2.0; } QPointF offset = mAnnotation ? mAnnotation->frameOffsetFromReferencePoint() : QPointF( 0, 0 ); QSizeF frameSize = mAnnotation ? mAnnotation->frameSize() : QSizeF( 0.0, 0.0 ); double xMinPos = std::min( -halfSymbolSize, offset.x() - fillSymbolBleed ); double xMaxPos = std::max( halfSymbolSize, offset.x() + frameSize.width() + fillSymbolBleed ); double yMinPos = std::min( -halfSymbolSize, offset.y() - fillSymbolBleed ); double yMaxPos = std::max( halfSymbolSize, offset.y() + frameSize.height() + fillSymbolBleed ); mBoundingRect = QRectF( xMinPos, yMinPos, xMaxPos - xMinPos, yMaxPos - yMinPos ); } }
void QgsAnnotationItem::updateBoundingRect() { prepareGeometryChange(); double halfSymbolSize = 0.0; if ( mMarkerSymbol ) { halfSymbolSize = scaledSymbolSize() / 2.0; } double xMinPos = qMin( -halfSymbolSize, mOffsetFromReferencePoint.x() - mFrameBorderWidth ); double xMaxPos = qMax( halfSymbolSize, mOffsetFromReferencePoint.x() + mFrameSize.width() + mFrameBorderWidth ); double yMinPos = qMin( -halfSymbolSize, mOffsetFromReferencePoint.y() - mFrameBorderWidth ); double yMaxPos = qMax( halfSymbolSize, mOffsetFromReferencePoint.y() + mFrameSize.height() + mFrameBorderWidth ); mBoundingRect = QRectF( xMinPos, yMinPos, xMaxPos - xMinPos, yMaxPos - yMinPos ); }