declare module 'cairo' { // Cairo 1.0 import type Cairo from 'gi://cairo?version=1.0'; import type GObject from 'gi://GObject?version=2.0'; namespace giCairo { // Add overrides here // See // - https://gitlab.gnome.org/GNOME/gjs/-/blob/master/doc/cairo.md // - https://gitlab.gnome.org/GNOME/gjs/-/blob/master/installed-tests/js/testCairoModule.js // - https://gitlab.gnome.org/GNOME/gjs/-/blob/master/installed-tests/js/testCairo.js // - https://gitlab.gnome.org/GNOME/gjs/-/blob/master/modules/cairo-context.cpp // START Re-exported enums, copied from cairo-1.0.d.ts export namespace Status { export const $gtype: GObject.GType; } enum Status { SUCCESS, NO_MEMORY, INVALID_RESTORE, INVALID_POP_GROUP, NO_CURRENT_POINT, INVALID_MATRIX, INVALID_STATUS, NULL_POINTER, INVALID_STRING, INVALID_PATH_DATA, READ_ERROR, WRITE_ERROR, SURFACE_FINISHED, SURFACE_TYPE_MISMATCH, PATTERN_TYPE_MISMATCH, INVALID_CONTENT, INVALID_FORMAT, INVALID_VISUAL, FILE_NOT_FOUND, INVALID_DASH, INVALID_DSC_COMMENT, INVALID_INDEX, CLIP_NOT_REPRESENTABLE, TEMP_FILE_ERROR, INVALID_STRIDE, FONT_TYPE_MISMATCH, USER_FONT_IMMUTABLE, USER_FONT_ERROR, NEGATIVE_COUNT, INVALID_CLUSTERS, INVALID_SLANT, INVALID_WEIGHT, INVALID_SIZE, USER_FONT_NOT_IMPLEMENTED, DEVICE_TYPE_MISMATCH, DEVICE_ERROR, INVALID_MESH_CONSTRUCTION, DEVICE_FINISHED, JBIG2_GLOBAL_MISSING, } export namespace Content { export const $gtype: GObject.GType; } enum Content { COLOR, ALPHA, COLOR_ALPHA, } export namespace Operator { export const $gtype: GObject.GType; } enum Operator { CLEAR, SOURCE, OVER, IN, OUT, ATOP, DEST, DEST_OVER, DEST_IN, DEST_OUT, DEST_ATOP, XOR, ADD, SATURATE, MULTIPLY, SCREEN, OVERLAY, DARKEN, LIGHTEN, COLOR_DODGE, COLOR_BURN, HARD_LIGHT, SOFT_LIGHT, DIFFERENCE, EXCLUSION, HSL_HUE, HSL_SATURATION, HSL_COLOR, HSL_LUMINOSITY, } export namespace Antialias { export const $gtype: GObject.GType; } enum Antialias { DEFAULT, NONE, GRAY, SUBPIXEL, FAST, GOOD, BEST, } export namespace FillRule { export const $gtype: GObject.GType; } enum FillRule { WINDING, EVEN_ODD, } export namespace LineCap { export const $gtype: GObject.GType; } enum LineCap { BUTT, ROUND, SQUARE, } export namespace LineJoin { export const $gtype: GObject.GType; } enum LineJoin { MITER, ROUND, BEVEL, } export namespace TextClusterFlags { export const $gtype: GObject.GType; } enum TextClusterFlags { BACKWARD, } export namespace FontSlant { export const $gtype: GObject.GType; } enum FontSlant { NORMAL, ITALIC, OBLIQUE, } export namespace FontWeight { export const $gtype: GObject.GType; } enum FontWeight { NORMAL, BOLD, } export namespace SubpixelOrder { export const $gtype: GObject.GType; } enum SubpixelOrder { DEFAULT, RGB, BGR, VRGB, VBGR, } export namespace HintStyle { export const $gtype: GObject.GType; } enum HintStyle { DEFAULT, NONE, SLIGHT, MEDIUM, FULL, } export namespace HintMetrics { export const $gtype: GObject.GType; } enum HintMetrics { DEFAULT, OFF, ON, } export namespace FontType { export const $gtype: GObject.GType; } enum FontType { TOY, FT, WIN32, QUARTZ, USER, } export namespace PathDataType { export const $gtype: GObject.GType; } enum PathDataType { MOVE_TO, LINE_TO, CURVE_TO, CLOSE_PATH, } export namespace DeviceType { export const $gtype: GObject.GType; } enum DeviceType { DRM, GL, SCRIPT, XCB, XLIB, XML, COGL, WIN32, INVALID, } export namespace SurfaceType { export const $gtype: GObject.GType; } enum SurfaceType { IMAGE, PDF, PS, XLIB, XCB, GLITZ, QUARTZ, WIN32, BEOS, DIRECTFB, SVG, OS2, WIN32_PRINTING, QUARTZ_IMAGE, SCRIPT, QT, RECORDING, VG, GL, DRM, TEE, XML, SKIA, SUBSURFACE, COGL, } export namespace Format { export const $gtype: GObject.GType; } enum Format { INVALID, ARGB32, RGB24, A8, A1, RGB16_565, RGB30, } export namespace PatternType { export const $gtype: GObject.GType; } enum PatternType { SOLID, SURFACE, LINEAR, RADIAL, MESH, RASTER_SOURCE, } export namespace Extend { export const $gtype: GObject.GType; } enum Extend { NONE, REPEAT, REFLECT, PAD, } export namespace Filter { export const $gtype: GObject.GType; } enum Filter { FAST, GOOD, BEST, NEAREST, BILINEAR, GAUSSIAN, } export namespace RegionOverlap { export const $gtype: GObject.GType; } enum RegionOverlap { IN, OUT, PART, } // END Re-exported enums, copied from cairo-1.0.d.ts export class Context extends Cairo.Context { constructor(surface: Surface); arc(xc: number, yc: number, radius: number, angle1: number, angle2: number): void; arcNegative(xc: number, yc: number, radius: number, angle1: number, angle2: number): void; curveTo(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number): void; clip(): void; clipPreserve(): void; clipExtents(): [number, number, number, number]; closePath(): void; copyPage(): void; deviceToUser(x: number, y: number): [number, number]; deviceToUserDistance(x: number, y: number): [number, number]; fill(): void; fillPreserve(): void; fillExtents(): [number, number, number, number]; getAntialias(): Antialias; getCurrentPoint(): [number, number]; getDashCount(): number; getFillRule(): FillRule; getLineCap(): LineCap; getLineJoin(): LineJoin; getLineWidth(): number; getMiterLimit(): number; getOperator(): Operator; getTolerance(): number; hasCurrentPoint(): boolean; identityMatrix(): void; inFill(x: number, y: number): boolean; inStroke(x: number, y: number): boolean; lineTo(x: number, y: number): void; moveTo(x: number, y: number): void; newPath(): void; newSubPath(): void; paint(): void; paintWithAlpha(alpha: number): void; pathExtents(): [number, number, number, number]; popGroup(): Pattern; popGroupToSource(): void; pushGroup(): void; pushGroupWithContent(content: Content): void; rectangle(x: number, y: number, width: number, height: number): void; relCurveTo(dx1: number, dy1: number, dx2: number, dy2: number, dx3: number, dy3: number): void; relLineTo(dx: number, dy: number): void; relMoveTo(dx: number, dy: number): void; resetClip(): void; restore(): void; rotate(angle: number): void; save(): void; scale(sx: number, sy: number): void; selectFontFace(family: string, slant: number, weight: number): void; setAntialias(antialias: Antialias): void; setDash(dashes: number[], offset: number): void; setFontSize(size: number): void; setFillRule(fillRule: FillRule): void; setLineCap(lineCap: LineCap): void; setLineJoin(lineJoin: LineJoin): void; setLineWidth(width: number): void; setMiterLimit(limit: number): void; setOperator(op: Operator): void; setSource(pattern: Pattern): void; setSourceRGB(red: number, green: number, blue: number): void; setSourceRGBA(red: number, green: number, blue: number, alpha: number): void; setSourceSurface(surface: Surface, x: number, y: number): void; setTolerance(tolerance: number): void; showPage(): void; showText(utf8: string): void; stroke(): void; strokePreserve(): void; strokeExtents(): [number, number, number, number]; textExtents(utf8: string): TextExtents; translate(tx: number, ty: number): void; userToDevice(x: number, y: number): [number, number]; userToDeviceDistance(x: number, y: number): [number, number]; } export abstract class Surface extends Cairo.Surface { // TODO } export class ImageSurface extends Surface { constructor(format: Format, width: number, height: number); static createFromPNG(filename: string): ImageSurface; // TODO } export class PDFSurface extends Surface { constructor(filename: string, width: number, height: number); // TODO } export class PSSurface extends Surface { constructor(filename: string, width: number, height: number); // TODO } export class SVGSurface extends Surface { constructor(filename: string, width: number, height: number); // TODO } export class Pattern extends Cairo.Pattern { // TODO } export class Gradient extends Pattern { // TODO } export class LinearGradient extends Gradient { // TODO } export class RadialGradient extends Gradient { // TODO } export class SurfacePattern extends Pattern { // TODO } export class SolidPattern extends Pattern { // TODO } export class Path extends Cairo.Path { // TODO } export interface TextExtents { xBearing: number; yBearing: number; width: number; height: number; xAdvance: number; yAdvance: number; } } export default giCairo; }