1 /* 2 * DQt - D bindings for the Qt Toolkit 3 * 4 * GNU Lesser General Public License Usage 5 * This file may be used under the terms of the GNU Lesser 6 * General Public License version 3 as published by the Free Software 7 * Foundation and appearing in the file LICENSE.LGPL3 included in the 8 * packaging of this file. Please review the following information to 9 * ensure the GNU Lesser General Public License version 3 requirements 10 * will be met: https://www.gnu.org/licenses/lgpl-3.0.html. 11 */ 12 module qt.gui.painter; 13 extern(C++): 14 15 import qt.config; 16 import qt.core.flags; 17 import qt.core.global; 18 import qt.core.line; 19 import qt.core.list; 20 import qt.core.metamacros; 21 import qt.core.namespace; 22 import qt.core.point; 23 import qt.core.rect; 24 import qt.core.scopedpointer; 25 import qt.core.string; 26 import qt.gui.brush; 27 import qt.gui.color; 28 import qt.gui.font; 29 import qt.gui.fontinfo; 30 import qt.gui.fontmetrics; 31 import qt.gui.image; 32 import qt.gui.paintdevice; 33 import qt.gui.paintengine; 34 import qt.gui.painterpath; 35 import qt.gui.pen; 36 import qt.gui.pixmap; 37 import qt.gui.polygon; 38 import qt.gui.region; 39 import qt.gui.statictext; 40 import qt.gui.textoption; 41 import qt.gui.transform; 42 import qt.helpers; 43 version(QT_NO_PICTURE){}else 44 import qt.gui.picture; 45 version(QT_NO_RAWFONT){}else 46 import qt.gui.glyphrun; 47 48 /+ #ifndef QT_INCLUDE_COMPAT 49 #endif +/ 50 51 52 53 extern(C++, class) struct QPainterPrivate; 54 55 extern(C++, class) struct QPainterPrivateDeleter; 56 57 /// Binding for C++ class [QPainter](https://doc.qt.io/qt-6/qpainter.html). 58 extern(C++, class) struct /+ Q_GUI_EXPORT +/ QPainter 59 { 60 private: 61 /+ Q_DECLARE_PRIVATE(QPainter) +/ 62 mixin(Q_GADGET); 63 64 public: 65 enum RenderHint { 66 Antialiasing = 0x01, 67 TextAntialiasing = 0x02, 68 SmoothPixmapTransform = 0x04, 69 VerticalSubpixelPositioning = 0x08, 70 LosslessImageRendering = 0x40, 71 } 72 /+ Q_FLAG(RenderHint) +/ 73 74 /+ Q_DECLARE_FLAGS(RenderHints, RenderHint) +/ 75 alias RenderHints = QFlags!(RenderHint); /+ Q_FLAG(RenderHints) +/ 76 77 extern(C++, class) struct PixmapFragment { 78 public: 79 qreal x; 80 qreal y; 81 qreal sourceLeft; 82 qreal sourceTop; 83 qreal width; 84 qreal height; 85 qreal scaleX; 86 qreal scaleY; 87 qreal rotation; 88 qreal opacity; 89 /+ static PixmapFragment Q_GUI_EXPORT create(const QPointF &pos, const QRectF &sourceRect, 90 qreal scaleX = 1, qreal scaleY = 1, 91 qreal rotation = 0, qreal opacity = 1); +/ 92 } 93 94 enum PixmapFragmentHint { 95 OpaqueHint = 0x01 96 } 97 98 /+ Q_DECLARE_FLAGS(PixmapFragmentHints, PixmapFragmentHint) +/ 99 alias PixmapFragmentHints = QFlags!(PixmapFragmentHint); 100 @disable this(); 101 pragma(mangle, defaultConstructorMangling(__traits(identifier, typeof(this)))) 102 ref typeof(this) rawConstructor(); 103 static typeof(this) create() 104 { 105 typeof(this) r = typeof(this).init; 106 r.rawConstructor(); 107 return r; 108 } 109 110 /+ explicit +/this(QPaintDevice ); 111 /+ explicit +/this(QPaintDeviceInterface dev) 112 { 113 this(cast(QPaintDevice)cast(void*)dev); 114 } 115 ~this(); 116 117 QPaintDevice device() const; 118 119 bool begin(QPaintDevice ); 120 bool end(); 121 bool isActive() const; 122 123 enum CompositionMode { 124 CompositionMode_SourceOver, 125 CompositionMode_DestinationOver, 126 CompositionMode_Clear, 127 CompositionMode_Source, 128 CompositionMode_Destination, 129 CompositionMode_SourceIn, 130 CompositionMode_DestinationIn, 131 CompositionMode_SourceOut, 132 CompositionMode_DestinationOut, 133 CompositionMode_SourceAtop, 134 CompositionMode_DestinationAtop, 135 CompositionMode_Xor, 136 137 //svg 1.2 blend modes 138 CompositionMode_Plus, 139 CompositionMode_Multiply, 140 CompositionMode_Screen, 141 CompositionMode_Overlay, 142 CompositionMode_Darken, 143 CompositionMode_Lighten, 144 CompositionMode_ColorDodge, 145 CompositionMode_ColorBurn, 146 CompositionMode_HardLight, 147 CompositionMode_SoftLight, 148 CompositionMode_Difference, 149 CompositionMode_Exclusion, 150 151 // ROPs 152 RasterOp_SourceOrDestination, 153 RasterOp_SourceAndDestination, 154 RasterOp_SourceXorDestination, 155 RasterOp_NotSourceAndNotDestination, 156 RasterOp_NotSourceOrNotDestination, 157 RasterOp_NotSourceXorDestination, 158 RasterOp_NotSource, 159 RasterOp_NotSourceAndDestination, 160 RasterOp_SourceAndNotDestination, 161 RasterOp_NotSourceOrDestination, 162 RasterOp_SourceOrNotDestination, 163 RasterOp_ClearDestination, 164 RasterOp_SetDestination, 165 RasterOp_NotDestination 166 } 167 void setCompositionMode(CompositionMode mode); 168 CompositionMode compositionMode() const; 169 170 ref const(QFont) font() const; 171 void setFont(ref const(QFont) f); 172 173 QFontMetrics fontMetrics() const; 174 QFontInfo fontInfo() const; 175 176 void setPen(ref const(QColor) color); 177 void setPen(ref const(QPen) pen); 178 void setPen(/+ Qt:: +/qt.core.namespace.PenStyle style); 179 ref const(QPen) pen() const; 180 181 void setBrush(ref const(QBrush) brush); 182 void setBrush(/+ Qt:: +/qt.core.namespace.BrushStyle style); 183 ref const(QBrush) brush() const; 184 185 // attributes/modes 186 void setBackgroundMode(/+ Qt:: +/qt.core.namespace.BGMode mode); 187 /+ Qt:: +/qt.core.namespace.BGMode backgroundMode() const; 188 189 QPoint brushOrigin() const; 190 pragma(inline, true) void setBrushOrigin(int x, int y) 191 { 192 auto tmp = QPoint(x, y); setBrushOrigin(tmp); 193 } 194 pragma(inline, true) void setBrushOrigin(ref const(QPoint) p) 195 { 196 auto tmp = QPointF(p); setBrushOrigin(tmp); 197 } 198 void setBrushOrigin(ref const(QPointF) ); 199 200 void setBackground(ref const(QBrush) bg); 201 ref const(QBrush) background() const; 202 203 qreal opacity() const; 204 void setOpacity(qreal opacity); 205 206 // Clip functions 207 QRegion clipRegion() const; 208 QPainterPath clipPath() const; 209 210 void setClipRect(ref const(QRectF) , /+ Qt:: +/qt.core.namespace.ClipOperation op = /+ Qt:: +/qt.core.namespace.ClipOperation.ReplaceClip); 211 void setClipRect(ref const(QRect) , /+ Qt:: +/qt.core.namespace.ClipOperation op = /+ Qt:: +/qt.core.namespace.ClipOperation.ReplaceClip); 212 pragma(inline, true) void setClipRect(int x, int y, int w, int h, /+ Qt:: +/qt.core.namespace.ClipOperation op = /+ Qt:: +/qt.core.namespace.ClipOperation.ReplaceClip) 213 { 214 auto tmp = QRect(x, y, w, h); setClipRect(tmp, op); 215 } 216 217 void setClipRegion(ref const(QRegion) , /+ Qt:: +/qt.core.namespace.ClipOperation op = /+ Qt:: +/qt.core.namespace.ClipOperation.ReplaceClip); 218 219 void setClipPath(ref const(QPainterPath) path, /+ Qt:: +/qt.core.namespace.ClipOperation op = /+ Qt:: +/qt.core.namespace.ClipOperation.ReplaceClip); 220 221 void setClipping(bool enable); 222 bool hasClipping() const; 223 224 QRectF clipBoundingRect() const; 225 226 void save(); 227 void restore(); 228 229 // XForm functions 230 void setTransform(ref const(QTransform) transform, bool combine = false); 231 ref const(QTransform) transform() const; 232 ref const(QTransform) deviceTransform() const; 233 void resetTransform(); 234 235 void setWorldTransform(ref const(QTransform) matrix, bool combine = false); 236 ref const(QTransform) worldTransform() const; 237 238 QTransform combinedTransform() const; 239 240 void setWorldMatrixEnabled(bool enabled); 241 bool worldMatrixEnabled() const; 242 243 void scale(qreal sx, qreal sy); 244 void shear(qreal sh, qreal sv); 245 void rotate(qreal a); 246 247 void translate(ref const(QPointF) offset); 248 pragma(inline, true) void translate(ref const(QPoint) offset) 249 { 250 translate(offset.x(), offset.y()); 251 } 252 pragma(inline, true) void translate(qreal dx, qreal dy) 253 { 254 auto tmp = QPointF(dx, dy); translate(tmp); 255 } 256 257 QRect window() const; 258 void setWindow(ref const(QRect) window); 259 pragma(inline, true) void setWindow(int x, int y, int w, int h) 260 { 261 auto tmp = QRect(x, y, w, h); setWindow(tmp); 262 } 263 264 QRect viewport() const; 265 void setViewport(ref const(QRect) viewport); 266 pragma(inline, true) void setViewport(int x, int y, int w, int h) 267 { 268 auto tmp = QRect(x, y, w, h); setViewport(tmp); 269 } 270 271 void setViewTransformEnabled(bool enable); 272 bool viewTransformEnabled() const; 273 274 // drawing functions 275 void strokePath(ref const(QPainterPath) path, ref const(QPen) pen); 276 void fillPath(ref const(QPainterPath) path, ref const(QBrush) brush); 277 void drawPath(ref const(QPainterPath) path); 278 279 pragma(inline, true) void drawPoint(ref const(QPointF) p) 280 { 281 drawPoints(&p, 1); 282 } 283 pragma(inline, true) void drawPoint(ref const(QPoint) p) 284 { 285 drawPoints(&p, 1); 286 } 287 pragma(inline, true) void drawPoint(int x, int y) 288 { 289 auto p = QPoint(x, y); 290 drawPoints(&p, 1); 291 } 292 293 void drawPoints(const(QPointF)* points, int pointCount); 294 pragma(inline, true) void drawPoints(ref const(QPolygonF) points) 295 { 296 drawPoints(points.constData(), cast(int)(points.size())); 297 } 298 void drawPoints(const(QPoint)* points, int pointCount); 299 pragma(inline, true) void drawPoints(ref const(QPolygon) points) 300 { 301 drawPoints(points.constData(), cast(int)(points.size())); 302 } 303 304 // 305 // functions 306 // 307 pragma(inline, true) void drawLine(ref const(QLineF) l) 308 { 309 drawLines(&l, 1); 310 } 311 pragma(inline, true) void drawLine(ref const(QLine) line) 312 { 313 drawLines(&line, 1); 314 } 315 pragma(inline, true) void drawLine(int x1, int y1, int x2, int y2) 316 { 317 auto l = QLine(x1, y1, x2, y2); 318 drawLines(&l, 1); 319 } 320 pragma(inline, true) void drawLine(ref const(QPoint) p1, ref const(QPoint) p2) 321 { 322 auto l = QLine(p1, p2); 323 drawLines(&l, 1); 324 } 325 pragma(inline, true) void drawLine(ref const(QPointF) p1, ref const(QPointF) p2) 326 { 327 auto tmp = QLineF(p1, p2); drawLine(tmp); 328 } 329 330 void drawLines(const(QLineF)* lines, int lineCount); 331 pragma(inline, true) void drawLines(ref const(QList!(QLineF)) lines) 332 { 333 drawLines(lines.constData(), cast(int)(lines.size())); 334 } 335 void drawLines(const(QPointF)* pointPairs, int lineCount); 336 pragma(inline, true) void drawLines(ref const(QList!(QPointF)) pointPairs) 337 { 338 drawLines(pointPairs.constData(), cast(int)(pointPairs.size() / 2)); 339 } 340 void drawLines(const(QLine)* lines, int lineCount); 341 pragma(inline, true) void drawLines(ref const(QList!(QLine)) lines) 342 { 343 drawLines(lines.constData(), cast(int)(lines.size())); 344 } 345 void drawLines(const(QPoint)* pointPairs, int lineCount); 346 pragma(inline, true) void drawLines(ref const(QList!(QPoint)) pointPairs) 347 { 348 drawLines(pointPairs.constData(), cast(int)(pointPairs.size() / 2)); 349 } 350 351 pragma(inline, true) void drawRect(ref const(QRectF) rect) 352 { 353 drawRects(&rect, 1); 354 } 355 pragma(inline, true) void drawRect(int x, int y, int w, int h) 356 { 357 auto r = QRect(x, y, w, h); 358 drawRects(&r, 1); 359 } 360 pragma(inline, true) void drawRect(ref const(QRect) r) 361 { 362 drawRects(&r, 1); 363 } 364 365 void drawRects(const(QRectF)* rects, int rectCount); 366 pragma(inline, true) void drawRects(ref const(QList!(QRectF)) rects) 367 { 368 drawRects(rects.constData(), cast(int)(rects.size())); 369 } 370 void drawRects(const(QRect)* rects, int rectCount); 371 pragma(inline, true) void drawRects(ref const(QList!(QRect)) rects) 372 { 373 drawRects(rects.constData(), cast(int)(rects.size())); 374 } 375 376 void drawEllipse(ref const(QRectF) r); 377 void drawEllipse(ref const(QRect) r); 378 pragma(inline, true) void drawEllipse(int x, int y, int w, int h) 379 { 380 auto tmp = QRect(x, y, w, h); drawEllipse(tmp); 381 } 382 383 pragma(inline, true) void drawEllipse(ref const(QPointF) center, qreal rx, qreal ry) 384 { 385 auto tmp = QRectF(center.x() - rx, center.y() - ry, 2 * rx, 2 * ry); drawEllipse(tmp); 386 } 387 pragma(inline, true) void drawEllipse(ref const(QPoint) center, int rx, int ry) 388 { 389 auto tmp = QRect(center.x() - rx, center.y() - ry, 2 * rx, 2 * ry); drawEllipse(tmp); 390 } 391 392 void drawPolyline(const(QPointF)* points, int pointCount); 393 pragma(inline, true) void drawPolyline(ref const(QPolygonF) polyline) 394 { 395 drawPolyline(polyline.constData(), cast(int)(polyline.size())); 396 } 397 void drawPolyline(const(QPoint)* points, int pointCount); 398 pragma(inline, true) void drawPolyline(ref const(QPolygon) polyline) 399 { 400 drawPolyline(polyline.constData(), cast(int)(polyline.size())); 401 } 402 403 void drawPolygon(const(QPointF)* points, int pointCount, /+ Qt:: +/qt.core.namespace.FillRule fillRule = /+ Qt:: +/qt.core.namespace.FillRule.OddEvenFill); 404 pragma(inline, true) void drawPolygon(ref const(QPolygonF) polygon, /+ Qt:: +/qt.core.namespace.FillRule fillRule = /+ Qt:: +/qt.core.namespace.FillRule.OddEvenFill) 405 { 406 drawPolygon(polygon.constData(), cast(int)(polygon.size()), fillRule); 407 } 408 void drawPolygon(const(QPoint)* points, int pointCount, /+ Qt:: +/qt.core.namespace.FillRule fillRule = /+ Qt:: +/qt.core.namespace.FillRule.OddEvenFill); 409 pragma(inline, true) void drawPolygon(ref const(QPolygon) polygon, /+ Qt:: +/qt.core.namespace.FillRule fillRule = /+ Qt:: +/qt.core.namespace.FillRule.OddEvenFill) 410 { 411 drawPolygon(polygon.constData(), cast(int)(polygon.size()), fillRule); 412 } 413 414 void drawConvexPolygon(const(QPointF)* points, int pointCount); 415 pragma(inline, true) void drawConvexPolygon(ref const(QPolygonF) poly) 416 { 417 drawConvexPolygon(poly.constData(), cast(int)(poly.size())); 418 } 419 void drawConvexPolygon(const(QPoint)* points, int pointCount); 420 pragma(inline, true) void drawConvexPolygon(ref const(QPolygon) poly) 421 { 422 drawConvexPolygon(poly.constData(), cast(int)(poly.size())); 423 } 424 425 void drawArc(ref const(QRectF) rect, int a, int alen); 426 pragma(inline, true) void drawArc(ref const(QRect) r, int a, int alen) 427 { 428 auto tmp = QRectF(r); drawArc(tmp, a, alen); 429 } 430 pragma(inline, true) void drawArc(int x, int y, int w, int h, int a, int alen) 431 { 432 auto tmp = QRectF(x, y, w, h); drawArc(tmp, a, alen); 433 } 434 435 void drawPie(ref const(QRectF) rect, int a, int alen); 436 pragma(inline, true) void drawPie(int x, int y, int w, int h, int a, int alen) 437 { 438 auto tmp = QRectF(x, y, w, h); drawPie(tmp, a, alen); 439 } 440 pragma(inline, true) void drawPie(ref const(QRect) rect, int a, int alen) 441 { 442 auto tmp = QRectF(rect); drawPie(tmp, a, alen); 443 } 444 445 void drawChord(ref const(QRectF) rect, int a, int alen); 446 pragma(inline, true) void drawChord(int x, int y, int w, int h, int a, int alen) 447 { 448 auto tmp = QRectF(x, y, w, h); drawChord(tmp, a, alen); 449 } 450 pragma(inline, true) void drawChord(ref const(QRect) rect, int a, int alen) 451 { 452 auto tmp = QRectF(rect); drawChord(tmp, a, alen); 453 } 454 455 void drawRoundedRect(ref const(QRectF) rect, qreal xRadius, qreal yRadius, 456 /+ Qt:: +/qt.core.namespace.SizeMode mode = /+ Qt:: +/qt.core.namespace.SizeMode.AbsoluteSize); 457 pragma(inline, true) void drawRoundedRect(int x, int y, int w, int h, qreal xRadius, qreal yRadius, 458 /+ Qt:: +/qt.core.namespace.SizeMode mode = /+ Qt:: +/qt.core.namespace.SizeMode.AbsoluteSize) 459 { 460 auto tmp = QRectF(x, y, w, h); drawRoundedRect(tmp, xRadius, yRadius, mode); 461 } 462 pragma(inline, true) void drawRoundedRect(ref const(QRect) rect, qreal xRadius, qreal yRadius, 463 /+ Qt:: +/qt.core.namespace.SizeMode mode = /+ Qt:: +/qt.core.namespace.SizeMode.AbsoluteSize) 464 { 465 auto tmp = QRectF(rect); drawRoundedRect(tmp, xRadius, yRadius, mode); 466 } 467 468 void drawTiledPixmap(ref const(QRectF) rect, ref const(QPixmap) pm, ref const(QPointF) offset = globalInitVar!QPointF); 469 pragma(inline, true) void drawTiledPixmap(int x, int y, int w, int h, ref const(QPixmap) pm, int sx=0, int sy=0) 470 { 471 auto tmp = QRectF(x, y, w, h); auto tmp__1 = QPointF(sx, sy); drawTiledPixmap(tmp, pm, tmp__1); 472 } 473 pragma(inline, true) void drawTiledPixmap(ref const(QRect) rect, ref const(QPixmap) pm, ref const(QPoint) offset /+ = QPoint() +/) 474 { 475 auto tmp = QRectF(rect); auto tmp__1 = QPointF(offset); drawTiledPixmap(tmp, pm, tmp__1); 476 } 477 version(QT_NO_PICTURE){}else 478 { 479 void drawPicture(ref const(QPointF) p, ref const(QPicture) picture); 480 pragma(inline, true) void drawPicture(int x, int y, ref const(QPicture) p) 481 { 482 auto tmp = QPoint(x, y); drawPicture(tmp, p); 483 } 484 pragma(inline, true) void drawPicture(ref const(QPoint) pt, ref const(QPicture) p) 485 { 486 auto tmp = QPointF(pt); drawPicture(tmp, p); 487 } 488 } 489 490 void drawPixmap(ref const(QRectF) targetRect, ref const(QPixmap) pixmap, ref const(QRectF) sourceRect); 491 pragma(inline, true) void drawPixmap(ref const(QRect) targetRect, ref const(QPixmap) pixmap, ref const(QRect) sourceRect) 492 { 493 auto tmp = QRectF(targetRect); auto tmp__1 = QRectF(sourceRect); drawPixmap(tmp, pixmap, tmp__1); 494 } 495 pragma(inline, true) void drawPixmap(int x, int y, int w, int h, ref const(QPixmap) pm, 496 int sx, int sy, int sw, int sh) 497 { 498 auto tmp = QRectF(x, y, w, h); auto tmp__1 = QRectF(sx, sy, sw, sh); drawPixmap(tmp, pm, tmp__1); 499 } 500 pragma(inline, true) void drawPixmap(int x, int y, ref const(QPixmap) pm, 501 int sx, int sy, int sw, int sh) 502 { 503 auto tmp = QRectF(x, y, -1, -1); auto tmp__1 = QRectF(sx, sy, sw, sh); drawPixmap(tmp, pm, tmp__1); 504 } 505 pragma(inline, true) void drawPixmap(ref const(QPointF) p, ref const(QPixmap) pm, ref const(QRectF) sr) 506 { 507 auto tmp = QRectF(p.x(), p.y(), -1, -1); drawPixmap(tmp, pm, sr); 508 } 509 pragma(inline, true) void drawPixmap(ref const(QPoint) p, ref const(QPixmap) pm, ref const(QRect) sr) 510 { 511 auto tmp = QRectF(p.x(), p.y(), -1, -1); auto tmp2 = QRectF(sr); drawPixmap(tmp, pm, tmp2); 512 } 513 void drawPixmap(ref const(QPointF) p, ref const(QPixmap) pm); 514 pragma(inline, true) void drawPixmap(ref const(QPoint) p, ref const(QPixmap) pm) 515 { 516 auto tmp = QPointF(p); drawPixmap(tmp, pm); 517 } 518 pragma(inline, true) void drawPixmap(int x, int y, ref const(QPixmap) pm) 519 { 520 auto tmp = QPointF(x, y); drawPixmap(tmp, pm); 521 } 522 pragma(inline, true) void drawPixmap(ref const(QRect) r, ref const(QPixmap) pm) 523 { 524 auto tmp = QRectF(r); auto tmp__1 = QRectF(); drawPixmap(tmp, pm, tmp__1); 525 } 526 pragma(inline, true) void drawPixmap(int x, int y, int w, int h, ref const(QPixmap) pm) 527 { 528 auto tmp = QRectF(x, y, w, h); auto tmp__1 = QRectF(); drawPixmap(tmp, pm, tmp__1); 529 } 530 531 void drawPixmapFragments(const(PixmapFragment)* fragments, int fragmentCount, 532 ref const(QPixmap) pixmap, PixmapFragmentHints hints = PixmapFragmentHints()); 533 534 void drawImage(ref const(QRectF) targetRect, ref const(QImage) image, ref const(QRectF) sourceRect, 535 /+ Qt:: +/qt.core.namespace.ImageConversionFlags flags = /+ Qt:: +/qt.core.namespace.ImageConversionFlag.AutoColor); 536 pragma(inline, true) void drawImage(ref const(QRect) targetRect, ref const(QImage) image, ref const(QRect) sourceRect, 537 /+ Qt:: +/qt.core.namespace.ImageConversionFlags flags = /+ Qt:: +/qt.core.namespace.ImageConversionFlag.AutoColor) 538 { 539 auto tmp = QRectF(targetRect); auto tmp__1 = QRectF(sourceRect); drawImage(tmp, image, tmp__1, flags); 540 } 541 pragma(inline, true) void drawImage(ref const(QPointF) p, ref const(QImage) image, ref const(QRectF) sr, 542 /+ Qt:: +/qt.core.namespace.ImageConversionFlags flags = /+ Qt:: +/qt.core.namespace.ImageConversionFlag.AutoColor) 543 { 544 auto tmp = QRectF(p.x(), p.y(), -1, -1); drawImage(tmp, image, sr, flags); 545 } 546 pragma(inline, true) void drawImage(ref const(QPoint) p, ref const(QImage) image, ref const(QRect) sr, 547 /+ Qt:: +/qt.core.namespace.ImageConversionFlags flags = /+ Qt:: +/qt.core.namespace.ImageConversionFlag.AutoColor) 548 { 549 auto tmp = QRect(p.x(), p.y(), -1, -1); drawImage(tmp, image, sr, flags); 550 } 551 pragma(inline, true) void drawImage(ref const(QRectF) r, ref const(QImage) image) 552 { 553 auto tmp = QRectF(0, 0, image.width(), image.height()); drawImage(r, image, tmp); 554 } 555 pragma(inline, true) void drawImage(ref const(QRect) r, ref const(QImage) image) 556 { 557 auto tmp0 = QRectF(r); auto tmp = QRectF(0, 0, image.width(), image.height()); drawImage(tmp0, image, tmp); 558 } 559 void drawImage(ref const(QPointF) p, ref const(QImage) image); 560 pragma(inline, true) void drawImage(ref const(QPoint) p, ref const(QImage) image) 561 { 562 auto tmp = QPointF(p); drawImage(tmp, image); 563 } 564 pragma(inline, true) void drawImage(int x, int y, ref const(QImage) image, int sx = 0, int sy = 0, 565 int sw = -1, int sh = -1, /+ Qt:: +/qt.core.namespace.ImageConversionFlags flags = /+ Qt:: +/qt.core.namespace.ImageConversionFlag.AutoColor) 566 { 567 if (sx == 0 && sy == 0 && sw == -1 && sh == -1 && flags == /+ Qt:: +/qt.core.namespace.ImageConversionFlags.AutoColor) 568 { auto tmp = QPointF(x, y); drawImage(tmp, image);} 569 else 570 { auto tmp__1 = QRectF(x, y, -1, -1); auto tmp__2 = QRectF(sx, sy, sw, sh); drawImage(tmp__1, image, tmp__2, flags);} 571 } 572 573 void setLayoutDirection(/+ Qt:: +/qt.core.namespace.LayoutDirection direction); 574 /+ Qt:: +/qt.core.namespace.LayoutDirection layoutDirection() const; 575 576 version(QT_NO_RAWFONT){}else 577 { 578 void drawGlyphRun(ref const(QPointF) position, ref const(QGlyphRun) glyphRun); 579 } 580 581 void drawStaticText(ref const(QPointF) topLeftPosition, ref const(QStaticText) staticText); 582 pragma(inline, true) void drawStaticText(ref const(QPoint) p, ref const(QStaticText) staticText) 583 { 584 auto tmp = QPointF(p); drawStaticText(tmp, staticText); 585 } 586 pragma(inline, true) void drawStaticText(int x, int y, ref const(QStaticText) staticText) 587 { 588 auto tmp = QPointF(x, y); drawStaticText(tmp, staticText); 589 } 590 591 void drawText(ref const(QPointF) p, ref const(QString) s); 592 pragma(inline, true) void drawText(ref const(QPoint) p, ref const(QString) s) 593 { 594 auto tmp = QPointF(p); drawText(tmp, s); 595 } 596 pragma(inline, true) void drawText(int x, int y, ref const(QString) s) 597 { 598 auto tmp = QPointF(x, y); drawText(tmp, s); 599 } 600 601 void drawText(ref const(QPointF) p, ref const(QString) str, int tf, int justificationPadding); 602 603 void drawText(ref const(QRectF) r, int flags, ref const(QString) text, QRectF* br = null); 604 void drawText(ref const(QRect) r, int flags, ref const(QString) text, QRect* br = null); 605 pragma(inline, true) void drawText(int x, int y, int w, int h, int flags, ref const(QString) str, QRect* br = null) 606 { 607 auto tmp = QRect(x, y, w, h); drawText(tmp, flags, str, br); 608 } 609 610 void drawText(ref const(QRectF) r, ref const(QString) text, ref const(QTextOption) o = globalInitVar!QTextOption); 611 612 QRectF boundingRect(ref const(QRectF) rect, int flags, ref const(QString) text); 613 QRect boundingRect(ref const(QRect) rect, int flags, ref const(QString) text); 614 pragma(inline, true) QRect boundingRect(int x, int y, int w, int h, int flags, ref const(QString) text) 615 { 616 auto tmp = QRect(x, y, w, h); return boundingRect(tmp, flags, text); 617 } 618 619 QRectF boundingRect(ref const(QRectF) rect, ref const(QString) text, ref const(QTextOption) o = globalInitVar!QTextOption); 620 621 void drawTextItem(ref const(QPointF) p, ref const(QTextItem) ti); 622 pragma(inline, true) void drawTextItem(int x, int y, ref const(QTextItem) ti) 623 { 624 auto tmp = QPointF(x, y); drawTextItem(tmp, ti); 625 } 626 pragma(inline, true) void drawTextItem(ref const(QPoint) p, ref const(QTextItem) ti) 627 { 628 auto tmp = QPointF(p); drawTextItem(tmp, ti); 629 } 630 631 void fillRect(ref const(QRectF) , ref const(QBrush) ); 632 pragma(inline, true) void fillRect(int x, int y, int w, int h, ref const(QBrush) b) 633 { 634 auto tmp = QRect(x, y, w, h); fillRect(tmp, b); 635 } 636 void fillRect(ref const(QRect) , ref const(QBrush) ); 637 638 void fillRect(ref const(QRectF) , ref const(QColor) color); 639 pragma(inline, true) void fillRect(int x, int y, int w, int h, ref const(QColor) b) 640 { 641 auto tmp = QRect(x, y, w, h); fillRect(tmp, b); 642 } 643 void fillRect(ref const(QRect) , ref const(QColor) color); 644 645 pragma(inline, true) void fillRect(int x, int y, int w, int h, /+ Qt:: +/qt.core.namespace.GlobalColor c) 646 { 647 auto tmp = QRect(x, y, w, h); auto tmp__1 = QColor(c); fillRect(tmp, tmp__1); 648 } 649 pragma(inline, true) void fillRect(ref const(QRect) r, /+ Qt:: +/qt.core.namespace.GlobalColor c) 650 { 651 auto tmp = QColor(c); fillRect(r, tmp); 652 } 653 pragma(inline, true) void fillRect(ref const(QRectF) r, /+ Qt:: +/qt.core.namespace.GlobalColor c) 654 { 655 auto tmp = QColor(c); fillRect(r, tmp); 656 } 657 658 pragma(inline, true) void fillRect(int x, int y, int w, int h, /+ Qt:: +/qt.core.namespace.BrushStyle style) 659 { 660 auto tmp = QRectF(x, y, w, h); auto tmp__1 = QBrush(style); fillRect(tmp, tmp__1); 661 } 662 pragma(inline, true) void fillRect(ref const(QRect) r, /+ Qt:: +/qt.core.namespace.BrushStyle style) 663 { 664 auto tmp = QRectF(r); auto tmp__1 = QBrush(style); fillRect(tmp, tmp__1); 665 } 666 pragma(inline, true) void fillRect(ref const(QRectF) r, /+ Qt:: +/qt.core.namespace.BrushStyle style) 667 { 668 auto tmp = QBrush(style); fillRect(r, tmp); 669 } 670 671 /+ pragma(inline, true) void fillRect(int x, int y, int w, int h, QGradient.Preset p) 672 { 673 auto tmp = QRect(x, y, w, h); auto tmp2 = QGradient(p); fillRect(tmp, tmp2); 674 } 675 pragma(inline, true) void fillRect(ref const(QRect) r, QGradient.Preset p) 676 { 677 auto tmp = QGradient(p); fillRect(r, tmp); 678 } 679 pragma(inline, true) void fillRect(ref const(QRectF) r, QGradient.Preset p) 680 { 681 auto tmp = QGradient(p); fillRect(r, tmp); 682 }+/ 683 684 void eraseRect(ref const(QRectF) ); 685 pragma(inline, true) void eraseRect(int x, int y, int w, int h) 686 { 687 auto tmp = QRectF(x, y, w, h); eraseRect(tmp); 688 } 689 pragma(inline, true) void eraseRect(ref const(QRect) rect) 690 { 691 auto tmp = QRectF(rect); eraseRect(tmp); 692 } 693 694 void setRenderHint(RenderHint hint, bool on = true); 695 void setRenderHints(RenderHints hints, bool on = true); 696 RenderHints renderHints() const; 697 pragma(inline, true) bool testRenderHint(RenderHint hint) const { return cast(bool)(renderHints() & hint); } 698 699 QPaintEngine paintEngine() const; 700 701 void beginNativePainting(); 702 void endNativePainting(); 703 704 private: 705 /+ Q_DISABLE_COPY(QPainter) +/ 706 @disable this(this); 707 /+this(ref const(QPainter));+//+ref QPainter operator =(ref const(QPainter));+/ 708 QScopedPointer!(QPainterPrivate) d_ptr; 709 710 /+ friend class QWidget; +/ 711 /+ friend class QFontEngine; +/ 712 /+ friend class QFontEngineBox; +/ 713 /+ friend class QFontEngineFT; +/ 714 /+ friend class QFontEngineMac; +/ 715 /+ friend class QFontEngineWin; +/ 716 /+ friend class QPaintEngine; +/ 717 /+ friend class QPaintEngineExPrivate; +/ 718 /+ friend class QOpenGLPaintEngine; +/ 719 /+ friend class QWin32PaintEngine; +/ 720 /+ friend class QWin32PaintEnginePrivate; +/ 721 /+ friend class QRasterPaintEngine; +/ 722 /+ friend class QAlphaPaintEngine; +/ 723 /+ friend class QPreviewPaintEngine; +/ 724 /+ friend class QTextEngine; +/ 725 mixin(CREATE_CONVENIENCE_WRAPPERS); 726 } 727 /+pragma(inline, true) QFlags!(QPainter.RenderHints.enum_type) operator |(QPainter.RenderHints.enum_type f1, QPainter.RenderHints.enum_type f2)/+noexcept+/{return QFlags!(QPainter.RenderHints.enum_type)(f1)|f2;}+/ 728 /+pragma(inline, true) QFlags!(QPainter.RenderHints.enum_type) operator |(QPainter.RenderHints.enum_type f1, QFlags!(QPainter.RenderHints.enum_type) f2)/+noexcept+/{return f2|f1;}+/ 729 /+pragma(inline, true) QFlags!(QPainter.RenderHints.enum_type) operator &(QPainter.RenderHints.enum_type f1, QPainter.RenderHints.enum_type f2)/+noexcept+/{return QFlags!(QPainter.RenderHints.enum_type)(f1)&f2;}+/ 730 /+pragma(inline, true) QFlags!(QPainter.RenderHints.enum_type) operator &(QPainter.RenderHints.enum_type f1, QFlags!(QPainter.RenderHints.enum_type) f2)/+noexcept+/{return f2&f1;}+/ 731 /+pragma(inline, true) void operator +(QPainter.RenderHints.enum_type f1, QPainter.RenderHints.enum_type f2)/+noexcept+/;+/ 732 /+pragma(inline, true) void operator +(QPainter.RenderHints.enum_type f1, QFlags!(QPainter.RenderHints.enum_type) f2)/+noexcept+/;+/ 733 /+pragma(inline, true) void operator +(int f1, QFlags!(QPainter.RenderHints.enum_type) f2)/+noexcept+/;+/ 734 /+pragma(inline, true) void operator -(QPainter.RenderHints.enum_type f1, QPainter.RenderHints.enum_type f2)/+noexcept+/;+/ 735 /+pragma(inline, true) void operator -(QPainter.RenderHints.enum_type f1, QFlags!(QPainter.RenderHints.enum_type) f2)/+noexcept+/;+/ 736 /+pragma(inline, true) void operator -(int f1, QFlags!(QPainter.RenderHints.enum_type) f2)/+noexcept+/;+/ 737 /+pragma(inline, true) QIncompatibleFlag operator |(QPainter.RenderHints.enum_type f1, int f2)/+noexcept+/{return QIncompatibleFlag(int(f1)|f2);}+/ 738 /+pragma(inline, true) void operator +(int f1, QPainter.RenderHints.enum_type f2)/+noexcept+/;+/ 739 /+pragma(inline, true) void operator +(QPainter.RenderHints.enum_type f1, int f2)/+noexcept+/;+/ 740 /+pragma(inline, true) void operator -(int f1, QPainter.RenderHints.enum_type f2)/+noexcept+/;+/ 741 /+pragma(inline, true) void operator -(QPainter.RenderHints.enum_type f1, int f2)/+noexcept+/;+/ 742 /+ Q_DECLARE_TYPEINFO(QPainter::PixmapFragment, Q_RELOCATABLE_TYPE); 743 744 Q_DECLARE_OPERATORS_FOR_FLAGS(QPainter::RenderHints) 745 746 #ifndef QT_NO_PICTURE 747 #endif +/ 748