Skip to content

Commit 959244d

Browse files
devmilpauldotknopf
authored andcommitted
Adds a lot of the QPainter interface
1 parent 4e19b75 commit 959244d

File tree

4 files changed

+645
-1
lines changed

4 files changed

+645
-1
lines changed

QmlNet/controls/INetQPainter.cpp

Lines changed: 349 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)