30 return QPainter::CompositionMode_SourceOver;
32 return QPainter::CompositionMode_Lighten;
34 return QPainter::CompositionMode_Screen;
36 return QPainter::CompositionMode_ColorDodge;
38 return QPainter::CompositionMode_Plus;
40 return QPainter::CompositionMode_Darken;
42 return QPainter::CompositionMode_Multiply;
44 return QPainter::CompositionMode_ColorBurn;
46 return QPainter::CompositionMode_Overlay;
48 return QPainter::CompositionMode_SoftLight;
50 return QPainter::CompositionMode_HardLight;
52 return QPainter::CompositionMode_Difference;
54 return QPainter::CompositionMode_Exclusion;
56 return QPainter::CompositionMode_Source;
58 return QPainter::CompositionMode_DestinationOver;
60 return QPainter::CompositionMode_Clear;
62 return QPainter::CompositionMode_Destination;
64 return QPainter::CompositionMode_SourceIn;
66 return QPainter::CompositionMode_DestinationIn;
68 return QPainter::CompositionMode_SourceOut;
70 return QPainter::CompositionMode_DestinationOut;
72 return QPainter::CompositionMode_SourceAtop;
74 return QPainter::CompositionMode_DestinationAtop;
76 return QPainter::CompositionMode_Xor;
79 return QPainter::CompositionMode_SourceOver;
89 case QPainter::CompositionMode_SourceOver:
91 case QPainter::CompositionMode_Lighten:
93 case QPainter::CompositionMode_Screen:
95 case QPainter::CompositionMode_ColorDodge:
97 case QPainter::CompositionMode_Plus:
99 case QPainter::CompositionMode_Darken:
101 case QPainter::CompositionMode_Multiply:
103 case QPainter::CompositionMode_ColorBurn:
105 case QPainter::CompositionMode_Overlay:
107 case QPainter::CompositionMode_SoftLight:
109 case QPainter::CompositionMode_HardLight:
111 case QPainter::CompositionMode_Difference:
113 case QPainter::CompositionMode_Exclusion:
115 case QPainter::CompositionMode_Source:
117 case QPainter::CompositionMode_DestinationOver:
119 case QPainter::CompositionMode_Clear:
121 case QPainter::CompositionMode_Destination:
123 case QPainter::CompositionMode_SourceIn:
125 case QPainter::CompositionMode_DestinationIn:
127 case QPainter::CompositionMode_SourceOut:
129 case QPainter::CompositionMode_DestinationOut:
131 case QPainter::CompositionMode_SourceAtop:
133 case QPainter::CompositionMode_DestinationAtop:
135 case QPainter::CompositionMode_Xor:
138 QgsDebugError( QStringLiteral(
"Composition mode %1 mapped to Normal" ).arg( blendMode ) );
178QTransform
QgsPainting::triangleToTriangleTransform(
double inX1,
double inY1,
double inX2,
double inY2,
double inX3,
double inY3,
double outX1,
double outY1,
double outX2,
double outY2,
double outX3,
double outY3,
bool &ok )
195 return ( U.inverted( &ok ) ) * V;
198bool QgsPainting::drawTriangleUsingTexture( QPainter *painter,
const QPolygonF &triangle,
const QImage &textureImage,
float textureX1,
float textureY1,
float textureX2,
float textureY2,
float textureX3,
float textureY3 )
202 textureX1 * ( textureImage.width() - 1 ), textureY1 * ( textureImage.height() - 1 ),
203 textureX2 * ( textureImage.width() - 1 ), textureY2 * ( textureImage.height() - 1 ),
204 textureX3 * ( textureImage.width() - 1 ), textureY3 * ( textureImage.height() - 1 ),
205 triangle.at( 0 ).x(), triangle.at( 0 ).y(),
206 triangle.at( 1 ).x(), triangle.at( 1 ).y(),
207 triangle.at( 2 ).x(), triangle.at( 2 ).y(),
214 const QBrush previousBrush = painter->brush();
216 QBrush textureBrush( textureImage );
217 textureBrush.setTransform( brushTransform );
219 painter->setBrush( textureBrush );
220 painter->drawPolygon( triangle );
221 painter->setBrush( previousBrush );
254 painter->scale( xScale, yScale );
255 painter->drawPicture( QPointF( point.x() / xScale, point.y() / yScale ), picture );
256 painter->scale( 1 / xScale, 1 / yScale );
BlendMode
Blending modes defining the available composition modes that can be used when painting.
@ Destination
Destination.
@ DestinationOut
Destination out.
@ DestinationIn
Destination in.
@ DestinationOver
Destination over.
@ DestinationAtop
Destination atop.
static bool drawTriangleUsingTexture(QPainter *painter, const QPolygonF &triangle, const QImage &textureImage, float textureX1, float textureY1, float textureX2, float textureY2, float textureX3, float textureY3)
Draws a triangle onto a painter using a mapped texture image.
static int qtDefaultDpiY()
Returns the default Qt vertical DPI.
static Qgis::BlendMode getBlendModeEnum(QPainter::CompositionMode blendMode)
Returns a Qgis::BlendMode corresponding to a QPainter::CompositionMode.
static bool isClippingMode(Qgis::BlendMode mode)
Returns true if mode is a clipping blend mode.
static int qtDefaultDpiX()
Returns the default Qt horizontal DPI.
static QTransform triangleToTriangleTransform(double inX1, double inY1, double inX2, double inY2, double inX3, double inY3, double outX1, double outY1, double outX2, double outY2, double outX3, double outY3, bool &ok)
Calculates the QTransform which maps the triangle defined by the points (inX1, inY1),...
static QPainter::CompositionMode getCompositionMode(Qgis::BlendMode blendMode)
Returns a QPainter::CompositionMode corresponding to a Qgis::BlendMode.
static void applyScaleFixForQPictureDpi(QPainter *painter)
Applies a workaround to a painter to avoid an issue with incorrect scaling when drawing QPictures.
static void drawPicture(QPainter *painter, const QPointF &point, const QPicture &picture)
Draws a picture onto a painter, correctly applying workarounds to avoid issues with incorrect scaling...
QString qgsEnumValueToKey(const T &value, bool *returnOk=nullptr)
Returns the value for the given key of an enum.
#define QgsDebugError(str)
Q_GUI_EXPORT int qt_defaultDpiX()
Q_GUI_EXPORT int qt_defaultDpiY()