@@ -91,4 +91,353 @@ Q_DECL_EXPORT StringSizeResult inetqpainter_getStringSize(INetQPainter* painter,
9191 return result;
9292}
9393
94+
95+ Q_DECL_EXPORT void inetqpainter_drawArc (INetQPainter* painter, int x, int y, int width, int height, int startAngle, int spanAngle) {
96+ painter->drawArc (x, y, width, height, startAngle, spanAngle);
97+ }
98+
99+ Q_DECL_EXPORT void inetqpainter_drawChord (INetQPainter* painter, int x, int y, int width, int height, int startAngle, int spanAngle) {
100+ painter->drawChord (x, y, width, height, startAngle, spanAngle);
101+ }
102+
103+ struct INetQPainter_Point {
104+ int x;
105+ int y;
106+ };
107+
108+ struct INetQPainter_Rect {
109+ int x;
110+ int y;
111+ int width;
112+ int height;
113+ };
114+
115+ Q_DECL_EXPORT void inetqpainter_drawConvexPolygon (INetQPainter* painter, INetQPainter_Point* points, int pointCount) {
116+ std::vector<QPoint> pointVector (pointCount);
117+ for (int i=0 ; i<pointCount; i++) {
118+ pointVector.push_back (QPoint (points[i].x , points[i].y ));
119+ }
120+ painter->drawConvexPolygon (&pointVector[0 ], pointVector.size ());
121+ }
122+
123+ Q_DECL_EXPORT void inetqpainter_drawEllipse (INetQPainter* painter, int x, int y, int width, int height) {
124+ painter->drawEllipse (x, y, width, height);
125+ }
126+
127+ Q_DECL_EXPORT void inetqpainter_drawImage (INetQPainter* painter, INetQPainter_Point point, uchar* imgData, int imgDataSize, INetQPainter_Rect sourceRect, int flags) {
128+ QImage img;
129+ img.loadFromData (imgData, imgDataSize);
130+ QPoint p (point.x , point.y );
131+ QRect sr (sourceRect.x , sourceRect.y , sourceRect.width , sourceRect.height );
132+
133+ painter->drawImage (p, img, sr, (Qt::ImageConversionFlags)flags);
134+ }
135+
136+ Q_DECL_EXPORT void inetqpainter_drawLine (INetQPainter* painter, int x1, int y1, int x2, int y2) {
137+ painter->drawLine (x1, y1, x2, y2);
138+ }
139+
140+ // void drawPath(const QPainterPath &path) override;
141+ // void fillPath(const QPainterPath &path, int colorId) override;
142+ // void strokePath(const QPainterPath &path, int colorId) override;
143+
144+ Q_DECL_EXPORT void inetqpainter_drawPie (INetQPainter* painter, int x, int y, int width, int height, int startAngle, int spanAngle) {
145+ painter->drawPie (x, y, width, height, startAngle, spanAngle);
146+ }
147+
148+ Q_DECL_EXPORT void inetqpainter_drawPoint (INetQPainter* painter, int x, int y) {
149+ painter->drawPoint (x, y);
150+ }
151+
152+ Q_DECL_EXPORT void inetqpainter_drawPolygon (INetQPainter* painter, INetQPainter_Point* points, int pointCount, bool oddFill) {
153+ std::vector<QPoint> pointVector (pointCount);
154+ for (int i=0 ; i<pointCount; i++) {
155+ pointVector.push_back (QPoint (points[i].x , points[i].y ));
156+ }
157+
158+ Qt::FillRule fillRule = oddFill ? Qt::FillRule::OddEvenFill : Qt::FillRule::WindingFill;
159+ painter->drawPolygon (&pointVector[0 ], pointVector.size (), fillRule);
160+ }
161+
162+ Q_DECL_EXPORT void inetqpainter_drawPolyline (INetQPainter* painter, INetQPainter_Point* points, int pointCount) {
163+ std::vector<QPoint> pointVector (pointCount);
164+ for (int i=0 ; i<pointCount; i++) {
165+ pointVector.push_back (QPoint (points[i].x , points[i].y ));
166+ }
167+
168+ painter->drawPolyline (&pointVector[0 ], pointVector.size ());
169+ }
170+
171+ Q_DECL_EXPORT void inetqpainter_drawRoundedRect (INetQPainter* painter, int x, int y, int w, int h, qreal xRadius, qreal yRadius, bool absoluteSize) {
172+ painter->drawRoundedRect (x, y, w, h, xRadius, yRadius, absoluteSize ? Qt::SizeMode::AbsoluteSize : Qt::SizeMode::RelativeSize);
173+ }
174+
175+ Q_DECL_EXPORT void inetqpainter_eraseRect (INetQPainter* painter, int x, int y, int width, int height) {
176+ painter->eraseRect (x, y, width, height);
177+ }
178+
179+ Q_DECL_EXPORT void inetqpainter_setBackground (INetQPainter* painter, int colorId) {
180+ painter->setBackground (colorId);
181+ }
182+
183+ Q_DECL_EXPORT void inetqpainter_setBackgroundMode (INetQPainter* painter, bool opaque) {
184+ painter->setBackgroundMode (opaque ? Qt::BGMode::OpaqueMode : Qt::BGMode::TransparentMode);
185+ }
186+
187+ // void setClipPath(const QPainterPath &path, Qt::ClipOperation operation = Qt::ReplaceClip) override;
188+
189+ enum INetQPainter_ClipOperation {
190+ NoClip = 1 ,
191+ ReplaceClip,
192+ IntersectClip
193+ };
194+
195+ Q_DECL_EXPORT void inetqpainter_setClipRect (INetQPainter* painter, int x, int y, int width, int height, INetQPainter_ClipOperation operation) {
196+ Qt::ClipOperation cop = Qt::ClipOperation::NoClip;
197+ switch (operation) {
198+ case INetQPainter_ClipOperation::NoClip:
199+ cop = Qt::ClipOperation::NoClip;
200+ break ;
201+ case INetQPainter_ClipOperation::ReplaceClip:
202+ cop = Qt::ClipOperation::ReplaceClip;
203+ break ;
204+ case INetQPainter_ClipOperation::IntersectClip:
205+ cop = Qt::ClipOperation::IntersectClip;
206+ break ;
207+ }
208+
209+ painter->setClipRect (x, y, width, height, cop);
210+ }
211+
212+ Q_DECL_EXPORT void inetqpainter_setClipping (INetQPainter* painter, bool enable) {
213+ painter->setClipping (enable);
214+ }
215+
216+ enum INetQPainter_CompositionMode {
217+ CompositionMode_SourceOver = 1 ,
218+ CompositionMode_DestinationOver,
219+ CompositionMode_Clear,
220+ CompositionMode_Source,
221+ CompositionMode_Destination,
222+ CompositionMode_SourceIn,
223+ CompositionMode_DestinationIn,
224+ CompositionMode_SourceOut,
225+ CompositionMode_DestinationOut,
226+ CompositionMode_SourceAtop,
227+ CompositionMode_DestinationAtop,
228+ CompositionMode_Xor,
229+
230+ // svg 1.2 blend modes
231+ CompositionMode_Plus,
232+ CompositionMode_Multiply,
233+ CompositionMode_Screen,
234+ CompositionMode_Overlay,
235+ CompositionMode_Darken,
236+ CompositionMode_Lighten,
237+ CompositionMode_ColorDodge,
238+ CompositionMode_ColorBurn,
239+ CompositionMode_HardLight,
240+ CompositionMode_SoftLight,
241+ CompositionMode_Difference,
242+ CompositionMode_Exclusion,
243+
244+ // ROPs
245+ RasterOp_SourceOrDestination,
246+ RasterOp_SourceAndDestination,
247+ RasterOp_SourceXorDestination,
248+ RasterOp_NotSourceAndNotDestination,
249+ RasterOp_NotSourceOrNotDestination,
250+ RasterOp_NotSourceXorDestination,
251+ RasterOp_NotSource,
252+ RasterOp_NotSourceAndDestination,
253+ RasterOp_SourceAndNotDestination,
254+ RasterOp_NotSourceOrDestination,
255+ RasterOp_SourceOrNotDestination,
256+ RasterOp_ClearDestination,
257+ RasterOp_SetDestination,
258+ RasterOp_NotDestination
259+ };
260+
261+ Q_DECL_EXPORT void inetqpainter_setCompositionMode (INetQPainter* painter, INetQPainter_CompositionMode mode) {
262+ QPainter::CompositionMode cmode;
263+ switch (mode)
264+ {
265+ case INetQPainter_CompositionMode::CompositionMode_SourceOver:
266+ cmode = QPainter::CompositionMode::CompositionMode_SourceOver;
267+ break ;
268+ case INetQPainter_CompositionMode::CompositionMode_DestinationOver:
269+ cmode = QPainter::CompositionMode::CompositionMode_DestinationOver;
270+ break ;
271+ case INetQPainter_CompositionMode::CompositionMode_Clear:
272+ cmode = QPainter::CompositionMode::CompositionMode_Clear;
273+ break ;
274+ case INetQPainter_CompositionMode::CompositionMode_Source:
275+ cmode = QPainter::CompositionMode::CompositionMode_Source;
276+ break ;
277+ case INetQPainter_CompositionMode::CompositionMode_Destination:
278+ cmode = QPainter::CompositionMode::CompositionMode_Destination;
279+ break ;
280+ case INetQPainter_CompositionMode::CompositionMode_SourceIn:
281+ cmode = QPainter::CompositionMode::CompositionMode_SourceIn;
282+ break ;
283+ case INetQPainter_CompositionMode::CompositionMode_DestinationIn:
284+ cmode = QPainter::CompositionMode::CompositionMode_DestinationIn;
285+ break ;
286+ case INetQPainter_CompositionMode::CompositionMode_SourceOut:
287+ cmode = QPainter::CompositionMode::CompositionMode_SourceOut;
288+ break ;
289+ case INetQPainter_CompositionMode::CompositionMode_DestinationOut:
290+ cmode = QPainter::CompositionMode::CompositionMode_DestinationOut;
291+ break ;
292+ case INetQPainter_CompositionMode::CompositionMode_SourceAtop:
293+ cmode = QPainter::CompositionMode::CompositionMode_SourceAtop;
294+ break ;
295+ case INetQPainter_CompositionMode::CompositionMode_DestinationAtop:
296+ cmode = QPainter::CompositionMode::CompositionMode_DestinationAtop;
297+ break ;
298+ case INetQPainter_CompositionMode::CompositionMode_Xor:
299+ cmode = QPainter::CompositionMode::CompositionMode_Xor;
300+ break ;
301+ case INetQPainter_CompositionMode::CompositionMode_Plus:
302+ cmode = QPainter::CompositionMode::CompositionMode_Plus;
303+ break ;
304+ case INetQPainter_CompositionMode::CompositionMode_Multiply:
305+ cmode = QPainter::CompositionMode::CompositionMode_Multiply;
306+ break ;
307+ case INetQPainter_CompositionMode::CompositionMode_Screen:
308+ cmode = QPainter::CompositionMode::CompositionMode_Screen;
309+ break ;
310+ case INetQPainter_CompositionMode::CompositionMode_Overlay:
311+ cmode = QPainter::CompositionMode::CompositionMode_Overlay;
312+ break ;
313+ case INetQPainter_CompositionMode::CompositionMode_Darken:
314+ cmode = QPainter::CompositionMode::CompositionMode_Darken;
315+ break ;
316+ case INetQPainter_CompositionMode::CompositionMode_Lighten:
317+ cmode = QPainter::CompositionMode::CompositionMode_Lighten;
318+ break ;
319+ case INetQPainter_CompositionMode::CompositionMode_ColorDodge:
320+ cmode = QPainter::CompositionMode::CompositionMode_ColorDodge;
321+ break ;
322+ case INetQPainter_CompositionMode::CompositionMode_ColorBurn:
323+ cmode = QPainter::CompositionMode::CompositionMode_ColorBurn;
324+ break ;
325+ case INetQPainter_CompositionMode::CompositionMode_HardLight:
326+ cmode = QPainter::CompositionMode::CompositionMode_HardLight;
327+ break ;
328+ case INetQPainter_CompositionMode::CompositionMode_SoftLight:
329+ cmode = QPainter::CompositionMode::CompositionMode_SoftLight;
330+ break ;
331+ case INetQPainter_CompositionMode::CompositionMode_Difference:
332+ cmode = QPainter::CompositionMode::CompositionMode_Difference;
333+ break ;
334+ case INetQPainter_CompositionMode::CompositionMode_Exclusion:
335+ cmode = QPainter::CompositionMode::CompositionMode_Exclusion;
336+ break ;
337+ case INetQPainter_CompositionMode::RasterOp_SourceOrDestination:
338+ cmode = QPainter::CompositionMode::RasterOp_SourceOrDestination;
339+ break ;
340+ case INetQPainter_CompositionMode::RasterOp_SourceAndDestination:
341+ cmode = QPainter::CompositionMode::RasterOp_SourceAndDestination;
342+ break ;
343+ case INetQPainter_CompositionMode::RasterOp_SourceXorDestination:
344+ cmode = QPainter::CompositionMode::RasterOp_SourceXorDestination;
345+ break ;
346+ case INetQPainter_CompositionMode::RasterOp_NotSourceAndNotDestination:
347+ cmode = QPainter::CompositionMode::RasterOp_NotSourceAndNotDestination;
348+ break ;
349+ case INetQPainter_CompositionMode::RasterOp_NotSourceOrNotDestination:
350+ cmode = QPainter::CompositionMode::RasterOp_NotSourceOrNotDestination;
351+ break ;
352+ case INetQPainter_CompositionMode::RasterOp_NotSourceXorDestination:
353+ cmode = QPainter::CompositionMode::RasterOp_NotSourceXorDestination;
354+ break ;
355+ case INetQPainter_CompositionMode::RasterOp_NotSource:
356+ cmode = QPainter::CompositionMode::RasterOp_NotSource;
357+ break ;
358+ case INetQPainter_CompositionMode::RasterOp_NotSourceAndDestination:
359+ cmode = QPainter::CompositionMode::RasterOp_NotSourceAndDestination;
360+ break ;
361+ case INetQPainter_CompositionMode::RasterOp_SourceAndNotDestination:
362+ cmode = QPainter::CompositionMode::RasterOp_SourceAndNotDestination;
363+ break ;
364+ case INetQPainter_CompositionMode::RasterOp_NotSourceOrDestination:
365+ cmode = QPainter::CompositionMode::RasterOp_NotSourceOrDestination;
366+ break ;
367+ case INetQPainter_CompositionMode::RasterOp_SourceOrNotDestination:
368+ cmode = QPainter::CompositionMode::RasterOp_SourceOrNotDestination;
369+ break ;
370+ case INetQPainter_CompositionMode::RasterOp_ClearDestination:
371+ cmode = QPainter::CompositionMode::RasterOp_ClearDestination;
372+ break ;
373+ case INetQPainter_CompositionMode::RasterOp_SetDestination:
374+ cmode = QPainter::CompositionMode::RasterOp_SetDestination;
375+ break ;
376+ case INetQPainter_CompositionMode::RasterOp_NotDestination:
377+ cmode = QPainter::CompositionMode::RasterOp_NotDestination;
378+ break ;
379+ }
380+
381+ painter->setCompositionMode (cmode);
382+ }
383+
384+ enum INetQPainter_LayoutDirection {
385+ LeftToRight = 1 ,
386+ RightToLeft,
387+ LayoutDirectionAuto
388+ };
389+
390+
391+ Q_DECL_EXPORT void inetqpainter_setLayoutDirection (INetQPainter* painter, INetQPainter_LayoutDirection dir) {
392+ Qt::LayoutDirection lDir = Qt::LayoutDirection::LeftToRight;
393+ switch (dir)
394+ {
395+ case INetQPainter_LayoutDirection::LeftToRight:
396+ lDir = Qt::LayoutDirection::LeftToRight;
397+ break ;
398+ case INetQPainter_LayoutDirection::RightToLeft:
399+ lDir = Qt::LayoutDirection::RightToLeft;
400+ break ;
401+ case INetQPainter_LayoutDirection::LayoutDirectionAuto:
402+ lDir = Qt::LayoutDirection::LayoutDirectionAuto;
403+ break ;
404+ }
405+
406+ painter->setLayoutDirection (lDir);
407+ }
408+
409+ Q_DECL_EXPORT void inetqpainter_setOpacity (INetQPainter* painter, double opacity) {
410+ painter->setOpacity (opacity);
411+ }
412+
413+ Q_DECL_EXPORT void inetqpainter_setRenderHint (INetQPainter* painter, QPainter::RenderHint hint, bool on) {
414+ painter->setRenderHint (hint, on);
415+ }
416+
417+ Q_DECL_EXPORT void inetqpainter_setTransform (INetQPainter* painter, double h11, double h12, double h13, double h21, double h22, double h23, double h31, double h32, double h33, bool combine) {
418+ QTransform transform (h11, h12, h13, h21, h22, h23, h31, h32, h33);
419+ painter->setTransform (transform, combine);
420+ }
421+
422+ Q_DECL_EXPORT void inetqpainter_setViewTransformEnabled (INetQPainter* painter, bool enabled) {
423+ painter->setViewTransformEnabled (enabled);
424+ }
425+
426+ Q_DECL_EXPORT void inetqpainter_setWorldTransform (INetQPainter* painter, double h11, double h12, double h13, double h21, double h22, double h23, double h31, double h32, double h33, bool combine) {
427+ QTransform transform (h11, h12, h13, h21, h22, h23, h31, h32, h33);
428+ painter->setWorldTransform (transform, combine);
429+ }
430+
431+ Q_DECL_EXPORT void inetqpainter_setWorldMatrixEnabled (INetQPainter* painter, bool enabled) {
432+ painter->setWorldMatrixEnabled (enabled);
433+ }
434+
435+ Q_DECL_EXPORT void inetqpainter_shear (INetQPainter* painter, double sh, double sv) {
436+ painter->shear (sh, sv);
437+ }
438+
439+ Q_DECL_EXPORT void inetqpainter_translate (INetQPainter* painter, double dx, double dy) {
440+ painter->translate (dx, dy);
441+ }
442+
94443}
0 commit comments