@nodegui/nodegui
Version:
A cross-platform library to build native desktop apps.
197 lines (185 loc) • 8.05 kB
TypeScript
import { Component } from '../core/Component';
import { QPainterPath } from '../QtWidgets/QPainterPath';
import { PenStyle, SizeMode } from '../QtEnums';
import { QBrush } from '../QtGui/QBrush';
import { QColor } from '../QtGui/QColor';
import { QPoint } from '../QtCore/QPoint';
import { QPen } from '../QtGui/QPen';
import { QWidget } from './QWidget';
import { QImage } from '../QtGui/QImage';
import { QPixmap } from '../QtGui/QPixmap';
import { QFont } from '../QtGui/QFont';
import { QRect } from '../QtCore/QRect';
/**
> Lets you paint on widgets.
* **This class is a JS wrapper around Qt's [QPainter class](https://doc.qt.io/qt-5/qpainter.html)**
Note: QPainter works only inside the paint event.
### Example
```javascript
import { FlexLayout, WidgetEventTypes, QMainWindow, QPainter, QWidget } from '@nodegui/nodegui';
const win = new QMainWindow();
const center = new QWidget();
const layout = new FlexLayout();
center.setLayout(layout);
win.resize(200, 200);
win.addEventListener(WidgetEventTypes.Paint, () => {
const painter = new QPainter(win);
painter.drawText(20, 20, 'Hello');
painter.end();
});
win.show();
(global as any).win = win;
```
## Advanced example:
https://github.com/nodegui/examples/blob/master/nodegui/custom-native-widget-qpainter
*/
export declare class QPainter extends Component {
constructor(device?: QWidget | QImage);
begin(device: QWidget | QImage): boolean;
beginNativePainting(): void;
boundingRect(x: number, y: number, w: number, h: number, flags: number, text: string): QRect;
/**
* Version of boundingRect() which takes floating point parameters.
*/
boundingRectF(x: number, y: number, w: number, h: number, flags: number, text: string): QRect;
compositionMode(): CompositionMode;
drawArc(x: number, y: number, width: number, height: number, startAngle: number, spanAngle: number): void;
/**
* Version of drawArc() which takes floating point parameters.
*/
drawArcF(x: number, y: number, width: number, height: number, startAngle: number, spanAngle: number): void;
drawChord(x: number, y: number, width: number, height: number, startAngle: number, spanAngle: number): void;
/**
* Version of drawChord() which takes floating point parameters.
*/
drawChordF(x: number, y: number, width: number, height: number, startAngle: number, spanAngle: number): void;
drawConvexPolygon(points: QPoint[]): void;
drawConvexPolygonF(points: QPoint[]): void;
drawEllipse(x: number, y: number, width: number, height: number): void;
/**
* Version of drawEllipse() which takes floating point parameters.
*/
drawEllipseF(x: number, y: number, width: number, height: number): void;
drawImage(x: number, y: number, image: QImage, sx?: number, sy?: number, sw?: number, sh?: number): void;
/**
* Version of drawImage() which takes floating point parameters.
*/
drawImageF(x: number, y: number, image: QImage, sx?: number, sy?: number, sw?: number, sh?: number): void;
drawLine(x1: number, y1: number, x2: number, y2: number): void;
/**
* Version of drawLine() which takes floating point parameters.
*/
drawLineF(x1: number, y1: number, x2: number, y2: number): void;
drawPath(path: QPainterPath): void;
drawPie(x: number, y: number, width: number, height: number, startAngle: number, sweepLength: number): void;
/**
* Version of drawPie() which takes floating point parameters.
*/
drawPieF(x: number, y: number, width: number, height: number, startAngle: number, sweepLength: number): void;
drawPixmap(x: number, y: number, pixmap: QPixmap, sx?: number, sy?: number, sw?: number, sh?: number): void;
drawPoint(x: number, y: number): void;
drawPointF(x: number, y: number): void;
drawRect(x: number, y: number, width: number, height: number): void;
/**
* Version of drawRect() which takes floating point parameters.
*/
drawRectF(x: number, y: number, width: number, height: number): void;
drawRoundedRect(x: number, y: number, w: number, h: number, xRadius: number, yRadius: number, mode?: SizeMode): void;
drawRoundedRectF(x: number, y: number, w: number, h: number, xRadius: number, yRadius: number, mode?: SizeMode): void;
drawText(x: number, y: number, text: string): void;
/**
* Version of drawText() which takes floating point parameters
*/
drawTextF(x: number, y: number, text: string): void;
end(): boolean;
endNativePainting(): void;
eraseRect(x: number, y: number, width: number, height: number): void;
fillPath(path: QPainterPath, brush: QBrush): void;
/**
* Version of eraseRect() which takes floating point parameters.
*/
eraseRectF(x: number, y: number, width: number, height: number): void;
fillRect(x: number, y: number, width: number, height: number, color: QColor): void;
/**
* Version of fillRect() which takes floating point parameters.
*/
fillRectF(x: number, y: number, width: number, height: number, color: QColor): void;
opacity(): number;
restore(): void;
rotate(angle: number): void;
save(): void;
scale(sx: number, sy: number): void;
setBrush(colorOrBrush: QColor | QBrush): void;
setBrushOrigin(x: number, y: number): void;
/**
* Version of setBrushOrigin() which takes floating point parameters.
*/
setBrushOriginF(x: number, y: number): void;
setCompositionMode(mode: CompositionMode): void;
setFont(font: QFont): void;
setOpacity(opacity: number): void;
setPen(arg: PenStyle | QColor | QPen): void;
setRenderHint(hint: RenderHint, on?: boolean): void;
/**
* Sets the world transformation matrix.
*
* @param matrix2x3 An array of length 6 representing a 2x3 transformation
* matrix. The order of elements corresponds to the
* convention used in QTransform, i.e. m11, m12, m21, m22,
* dx, and dy.
* @param combine If set then this transform will be combining with the
* curent one. Otherwise it replaces it completely.
*/
setTransform(matrix2x3: number[] | Float32Array, combine?: boolean): void;
strokePath(path: QPainterPath, pen: QPen): void;
translate(dx: number, dy: number): void;
}
export declare enum RenderHint {
Antialiasing = 1,
TextAntialiasing = 2,
SmoothPixmapTransform = 4,
HighQualityAntialiasing = 8,
NonCosmeticDefaultPen = 16,
Qt4CompatiblePainting = 32,
LosslessImageRendering = 64
}
export declare enum CompositionMode {
CompositionMode_SourceOver = 0,
CompositionMode_DestinationOver = 1,
CompositionMode_Clear = 2,
CompositionMode_Source = 3,
CompositionMode_Destination = 4,
CompositionMode_SourceIn = 5,
CompositionMode_DestinationIn = 6,
CompositionMode_SourceOut = 7,
CompositionMode_DestinationOut = 8,
CompositionMode_SourceAtop = 9,
CompositionMode_DestinationAtop = 10,
CompositionMode_Xor = 11,
CompositionMode_Plus = 12,
CompositionMode_Multiply = 13,
CompositionMode_Screen = 14,
CompositionMode_Overlay = 15,
CompositionMode_Darken = 16,
CompositionMode_Lighten = 17,
CompositionMode_ColorDodge = 18,
CompositionMode_ColorBurn = 19,
CompositionMode_HardLight = 20,
CompositionMode_SoftLight = 21,
CompositionMode_Difference = 22,
CompositionMode_Exclusion = 23,
RasterOp_SourceOrDestination = 24,
RasterOp_SourceAndDestination = 25,
RasterOp_SourceXorDestination = 26,
RasterOp_NotSourceAndNotDestination = 27,
RasterOp_NotSourceOrNotDestination = 28,
RasterOp_NotSourceXorDestination = 29,
RasterOp_NotSource = 30,
RasterOp_NotSourceAndDestination = 31,
RasterOp_SourceAndNotDestination = 32,
RasterOp_NotSourceOrDestination = 33,
RasterOp_ClearDestination = 35,
RasterOp_SetDestination = 36,
RasterOp_NotDestination = 37,
RasterOp_SourceOrNotDestination = 34
}