@gtkx/cairo 1.3.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -4
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +11 -13
- package/dist/context.js.map +1 -1
- package/dist/font-face.d.ts +2 -7
- package/dist/font-face.d.ts.map +1 -1
- package/dist/font-face.js +3 -13
- package/dist/font-face.js.map +1 -1
- package/dist/lib.d.ts +1 -3
- package/dist/lib.d.ts.map +1 -1
- package/dist/lib.js +3 -4
- package/dist/lib.js.map +1 -1
- package/dist/path.d.ts.map +1 -1
- package/dist/path.js +8 -5
- package/dist/path.js.map +1 -1
- package/dist/region.d.ts.map +1 -1
- package/dist/region.js +6 -5
- package/dist/region.js.map +1 -1
- package/dist/scaled-font.d.ts +3 -5
- package/dist/scaled-font.d.ts.map +1 -1
- package/dist/scaled-font.js +3 -62
- package/dist/scaled-font.js.map +1 -1
- package/dist/structs.d.ts +1 -1
- package/dist/structs.d.ts.map +1 -1
- package/dist/structs.js +1 -1
- package/dist/structs.js.map +1 -1
- package/dist/surface.d.ts +0 -5
- package/dist/surface.d.ts.map +1 -1
- package/dist/surface.js +9 -17
- package/dist/surface.js.map +1 -1
- package/dist/text.d.ts.map +1 -1
- package/dist/text.js +20 -17
- package/dist/text.js.map +1 -1
- package/package.json +4 -4
- package/src/context.ts +10 -14
- package/src/font-face.ts +3 -25
- package/src/lib.ts +2 -5
- package/src/path.ts +8 -5
- package/src/region.ts +5 -5
- package/src/scaled-font.ts +3 -92
- package/src/structs.ts +1 -1
- package/src/surface.ts +7 -20
- package/src/text.ts +20 -17
package/README.md
CHANGED
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
<h1 align="center">GTKX</h1>
|
|
6
6
|
|
|
7
7
|
<p align="center">
|
|
8
|
-
The React framework for Linux.<br />
|
|
9
|
-
Write native
|
|
10
|
-
|
|
8
|
+
The React framework for Linux, built on GTK.<br />
|
|
9
|
+
Write native GTK4 desktop applications with React and TypeScript.
|
|
10
|
+
Real GTK widgets, the GNOME stack, and standard web tooling.
|
|
11
11
|
</p>
|
|
12
12
|
|
|
13
13
|
<p align="center">
|
|
@@ -98,7 +98,7 @@ GTK4 is mature, and GtkBuilder XML can lay out a static interface, but nothing r
|
|
|
98
98
|
- a React reconciler that exposes every GObject as a JSX element,
|
|
99
99
|
- a CLI for scaffolding, development, and production builds,
|
|
100
100
|
- a dev server with Fast Refresh that patches your running UI in place,
|
|
101
|
-
- CSS-in-JS styling, React Spring animations, and high-level list, grid, and dialog components,
|
|
101
|
+
- CSS-in-JS styling, React Hook Form-powered Adwaita controls, gettext-backed react-i18next localization, React Spring animations, React Navigation stack, tab, drawer, and split view navigators, and high-level list, grid, and dialog components,
|
|
102
102
|
- a Testing Library-style API for querying and driving your widgets in tests,
|
|
103
103
|
- and a Model Context Protocol (MCP) server that exposes your live app to AI agents.
|
|
104
104
|
|
|
@@ -158,6 +158,7 @@ Explore the [example apps](https://github.com/gtkx-org/gtkx/tree/main/examples):
|
|
|
158
158
|
- [`gtk-demo`](https://github.com/gtkx-org/gtkx/tree/main/examples/gtk-demo): a React port of the official GTK4 widget showcase, covering lists, dialogs, gestures, CSS, and OpenGL.
|
|
159
159
|
- [`browser`](https://github.com/gtkx-org/gtkx/tree/main/examples/browser): a WebKitWebView-based web browser.
|
|
160
160
|
- [`animations`](https://github.com/gtkx-org/gtkx/tree/main/examples/animations): a tour of `@gtkx/animated`, React Spring animations driven by the GTK frame clock.
|
|
161
|
+
- [`navigation`](https://github.com/gtkx-org/gtkx/tree/main/examples/navigation): a tour of `@gtkx/navigation`, React Navigation's stack, tab, and drawer navigators rendered with libadwaita.
|
|
161
162
|
- [`tutorial`](https://github.com/gtkx-org/gtkx/tree/main/examples/tutorial): the Tasks app the documentation builds.
|
|
162
163
|
|
|
163
164
|
## Status
|
package/dist/context.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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"}
|
package/dist/context.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { alloc, getHandle, read, registerWrapperClass, setHandle, t, wrapHandle,
|
|
1
|
+
import { alloc, getHandle, read, registerWrapperClass, setHandle, t, wrapHandle, } from "@gtkx/runtime";
|
|
2
2
|
import { FontFace } from "./font-face.js";
|
|
3
3
|
import { FontOptions } from "./font-options.js";
|
|
4
4
|
import { bindCairo, cairoGType, CONTEXT_FULL_T, CONTEXT_T, DOUBLE_BUFFER_T, FONT_EXTENTS_T, FONT_FACE_T, FONT_OPTIONS_T, GLYPH_T, MATRIX_T, PATH_T, PATTERN_FULL_T, PATTERN_T, RECTANGLE_LIST_T, SCALED_FONT_T, SURFACE_T, TEXT_CLUSTER_T, TEXT_EXTENTS_T, } from "./lib.js";
|
|
@@ -12,6 +12,8 @@ import { allocClusterBuffer, allocFontExtents, allocGlyphBuffer, allocTextExtent
|
|
|
12
12
|
const CONTEXT_TYPE = cairoGType("cairo_gobject_context_get_type");
|
|
13
13
|
const RECTANGLE_SIZE = 32;
|
|
14
14
|
const RECTANGLE_LIST_COUNT_OFFSET = 16;
|
|
15
|
+
const DOUBLE = t.fieldAt(t.float64);
|
|
16
|
+
const RECTANGLE_LIST_COUNT = t.field(t.int32, RECTANGLE_LIST_COUNT_OFFSET);
|
|
15
17
|
const RECTANGLE_LIST_DATA_OFFSET = 8;
|
|
16
18
|
const POINT_ARGS = [CONTEXT_T, t.float64, t.float64];
|
|
17
19
|
const EXTENTS_ARGS = [CONTEXT_T, t.ref(t.float64), t.ref(t.float64), t.ref(t.float64), t.ref(t.float64)];
|
|
@@ -90,7 +92,6 @@ const cairoInStroke = bindCairo("cairo_in_stroke", POINT_ARGS, t.boolean);
|
|
|
90
92
|
const cairoInFill = bindCairo("cairo_in_fill", POINT_ARGS, t.boolean);
|
|
91
93
|
const cairoInClip = bindCairo("cairo_in_clip", POINT_ARGS, t.boolean);
|
|
92
94
|
const cairoCopyClipRectangleList = bindCairo("cairo_copy_clip_rectangle_list", [CONTEXT_T], RECTANGLE_LIST_T);
|
|
93
|
-
const cairoRectangleListDestroy = bindCairo("cairo_rectangle_list_destroy", [RECTANGLE_LIST_T], t.void);
|
|
94
95
|
const cairoMask = bindCairo("cairo_mask", [CONTEXT_T, PATTERN_T], t.void);
|
|
95
96
|
const cairoMaskSurface = bindCairo("cairo_mask_surface", [CONTEXT_T, SURFACE_T, t.float64, t.float64], t.void);
|
|
96
97
|
const cairoSetMatrix = bindCairo("cairo_set_matrix", [CONTEXT_T, MATRIX_T], t.void);
|
|
@@ -139,19 +140,19 @@ const transformCoords = (handle, boundFn, a, b) => {
|
|
|
139
140
|
const allocDashBuffer = (dashes) => {
|
|
140
141
|
const buffer = alloc(dashes.length * 8);
|
|
141
142
|
for (const [index, dash] of dashes.entries()) {
|
|
142
|
-
write(buffer,
|
|
143
|
+
DOUBLE.write(buffer, index * 8, dash);
|
|
143
144
|
}
|
|
144
145
|
return buffer;
|
|
145
146
|
};
|
|
146
|
-
const readDashes = (buffer, count) => Array.from({ length: count }, (_, index) => read(buffer,
|
|
147
|
+
const readDashes = (buffer, count) => Array.from({ length: count }, (_, index) => DOUBLE.read(buffer, index * 8));
|
|
147
148
|
const readRectangle = (rects, base) => ({
|
|
148
|
-
x: read(rects,
|
|
149
|
-
y: read(rects,
|
|
150
|
-
width: read(rects,
|
|
151
|
-
height: read(rects,
|
|
149
|
+
x: DOUBLE.read(rects, base),
|
|
150
|
+
y: DOUBLE.read(rects, base + 8),
|
|
151
|
+
width: DOUBLE.read(rects, base + 16),
|
|
152
|
+
height: DOUBLE.read(rects, base + 24),
|
|
152
153
|
});
|
|
153
154
|
const readRectangleList = (listHandle) => {
|
|
154
|
-
const count = read(listHandle
|
|
155
|
+
const count = RECTANGLE_LIST_COUNT.read(listHandle);
|
|
155
156
|
if (count === 0) {
|
|
156
157
|
return [];
|
|
157
158
|
}
|
|
@@ -497,10 +498,7 @@ class Context {
|
|
|
497
498
|
}
|
|
498
499
|
/** Returns the current clip as a list of rectangles in user space. */
|
|
499
500
|
copyClipRectangleList() {
|
|
500
|
-
|
|
501
|
-
const rects = readRectangleList(listHandle);
|
|
502
|
-
cairoRectangleListDestroy(listHandle);
|
|
503
|
-
return rects;
|
|
501
|
+
return readRectangleList(cairoCopyClipRectangleList(getHandle(this)));
|
|
504
502
|
}
|
|
505
503
|
/** Paints the current source using the alpha channel of `pattern` as a mask. */
|
|
506
504
|
mask(pattern) {
|
package/dist/context.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n alloc,\n type ExternalObject,\n getHandle,\n type Handle,\n read,\n registerWrapperClass,\n setHandle,\n t,\n wrapHandle,\n write,\n} from \"@gtkx/runtime\";\nimport type {\n Antialias,\n Content,\n FillRule,\n FontSlant,\n FontWeight,\n LineCap,\n LineJoin,\n Operator,\n Status,\n TextClusterFlags,\n} from \"./enums.js\";\nimport type {\n CairoGlyph,\n CairoTextCluster,\n DashPattern,\n Distance,\n Extents,\n FontExtents,\n PathData,\n Point,\n RectangleData,\n TextExtents,\n} from \"./types.js\";\nimport { FontFace } from \"./font-face.js\";\nimport { FontOptions } from \"./font-options.js\";\nimport {\n bindCairo,\n type BoundFunction,\n cairoGType,\n CONTEXT_FULL_T,\n CONTEXT_T,\n DOUBLE_BUFFER_T,\n FONT_EXTENTS_T,\n FONT_FACE_T,\n FONT_OPTIONS_T,\n GLYPH_T,\n MATRIX_T,\n PATH_T,\n PATTERN_FULL_T,\n PATTERN_T,\n RECTANGLE_LIST_T,\n SCALED_FONT_T,\n SURFACE_T,\n TEXT_CLUSTER_T,\n TEXT_EXTENTS_T,\n} from \"./lib.js\";\nimport { allocMatrix, Matrix } from \"./matrix.js\";\nimport { parsePath } from \"./path.js\";\nimport { Pattern } from \"./pattern.js\";\nimport { ScaledFont } from \"./scaled-font.js\";\nimport { checkStatus } from \"./status.js\";\nimport { Surface } from \"./surface.js\";\nimport {\n allocClusterBuffer,\n allocFontExtents,\n allocGlyphBuffer,\n allocTextExtents,\n readFontExtents,\n readTextExtents,\n} from \"./text.js\";\n\nconst CONTEXT_TYPE = cairoGType(\"cairo_gobject_context_get_type\");\nconst RECTANGLE_SIZE = 32;\nconst RECTANGLE_LIST_COUNT_OFFSET = 16;\nconst RECTANGLE_LIST_DATA_OFFSET = 8;\nconst POINT_ARGS = [CONTEXT_T, t.float64, t.float64];\nconst EXTENTS_ARGS = [CONTEXT_T, t.ref(t.float64), t.ref(t.float64), t.ref(t.float64), t.ref(t.float64)];\nconst COORD_ARGS = [CONTEXT_T, t.ref(t.float64), t.ref(t.float64)];\nconst CURVE_ARGS = [CONTEXT_T, t.float64, t.float64, t.float64, t.float64, t.float64, t.float64];\nconst ARC_ARGS = [CONTEXT_T, t.float64, t.float64, t.float64, t.float64, t.float64];\nconst cairoCreate = bindCairo(\"cairo_create\", [SURFACE_T], CONTEXT_FULL_T);\nconst cairoMoveTo = bindCairo(\"cairo_move_to\", POINT_ARGS, t.void);\nconst cairoLineTo = bindCairo(\"cairo_line_to\", POINT_ARGS, t.void);\nconst cairoRelMoveTo = bindCairo(\"cairo_rel_move_to\", POINT_ARGS, t.void);\nconst cairoRelLineTo = bindCairo(\"cairo_rel_line_to\", POINT_ARGS, t.void);\nconst cairoRelCurveTo = bindCairo(\"cairo_rel_curve_to\", CURVE_ARGS, t.void);\nconst cairoCurveTo = bindCairo(\"cairo_curve_to\", CURVE_ARGS, t.void);\nconst cairoArc = bindCairo(\"cairo_arc\", ARC_ARGS, t.void);\nconst cairoArcNegative = bindCairo(\"cairo_arc_negative\", ARC_ARGS, t.void);\nconst cairoRectangle = bindCairo(\"cairo_rectangle\", [CONTEXT_T, t.float64, t.float64, t.float64, t.float64], t.void);\nconst cairoClosePath = bindCairo(\"cairo_close_path\", [CONTEXT_T], t.void);\nconst cairoNewPath = bindCairo(\"cairo_new_path\", [CONTEXT_T], t.void);\nconst cairoNewSubPath = bindCairo(\"cairo_new_sub_path\", [CONTEXT_T], t.void);\nconst cairoStroke = bindCairo(\"cairo_stroke\", [CONTEXT_T], t.void);\nconst cairoStrokePreserve = bindCairo(\"cairo_stroke_preserve\", [CONTEXT_T], t.void);\nconst cairoFill = bindCairo(\"cairo_fill\", [CONTEXT_T], t.void);\nconst cairoFillPreserve = bindCairo(\"cairo_fill_preserve\", [CONTEXT_T], t.void);\nconst cairoPaint = bindCairo(\"cairo_paint\", [CONTEXT_T], t.void);\nconst cairoPaintWithAlpha = bindCairo(\"cairo_paint_with_alpha\", [CONTEXT_T, t.float64], t.void);\nconst cairoClip = bindCairo(\"cairo_clip\", [CONTEXT_T], t.void);\nconst cairoClipPreserve = bindCairo(\"cairo_clip_preserve\", [CONTEXT_T], t.void);\nconst cairoResetClip = bindCairo(\"cairo_reset_clip\", [CONTEXT_T], t.void);\nconst cairoSetSourceRgb = bindCairo(\"cairo_set_source_rgb\", [CONTEXT_T, t.float64, t.float64, t.float64], t.void);\n\nconst cairoSetSourceRgba = bindCairo(\n \"cairo_set_source_rgba\",\n [CONTEXT_T, t.float64, t.float64, t.float64, t.float64],\n t.void,\n);\n\nconst cairoSetSource = bindCairo(\"cairo_set_source\", [CONTEXT_T, PATTERN_T], t.void);\nconst cairoSetLineWidth = bindCairo(\"cairo_set_line_width\", [CONTEXT_T, t.float64], t.void);\nconst cairoGetLineWidth = bindCairo(\"cairo_get_line_width\", [CONTEXT_T], t.float64);\nconst cairoSetLineCap = bindCairo(\"cairo_set_line_cap\", [CONTEXT_T, t.int32], t.void);\nconst cairoGetLineCap = bindCairo(\"cairo_get_line_cap\", [CONTEXT_T], t.int32);\nconst cairoSetLineJoin = bindCairo(\"cairo_set_line_join\", [CONTEXT_T, t.int32], t.void);\nconst cairoGetLineJoin = bindCairo(\"cairo_get_line_join\", [CONTEXT_T], t.int32);\nconst cairoSetDash = bindCairo(\"cairo_set_dash\", [CONTEXT_T, DOUBLE_BUFFER_T, t.int32, t.float64], t.void);\nconst cairoGetDashCount = bindCairo(\"cairo_get_dash_count\", [CONTEXT_T], t.int32);\nconst cairoGetDash = bindCairo(\"cairo_get_dash\", [CONTEXT_T, DOUBLE_BUFFER_T, t.ref(t.float64)], t.void);\nconst cairoSetMiterLimit = bindCairo(\"cairo_set_miter_limit\", [CONTEXT_T, t.float64], t.void);\nconst cairoGetMiterLimit = bindCairo(\"cairo_get_miter_limit\", [CONTEXT_T], t.float64);\nconst cairoSetTolerance = bindCairo(\"cairo_set_tolerance\", [CONTEXT_T, t.float64], t.void);\nconst cairoGetTolerance = bindCairo(\"cairo_get_tolerance\", [CONTEXT_T], t.float64);\nconst cairoSetFillRule = bindCairo(\"cairo_set_fill_rule\", [CONTEXT_T, t.int32], t.void);\nconst cairoGetFillRule = bindCairo(\"cairo_get_fill_rule\", [CONTEXT_T], t.int32);\nconst cairoSave = bindCairo(\"cairo_save\", [CONTEXT_T], t.void);\nconst cairoRestore = bindCairo(\"cairo_restore\", [CONTEXT_T], t.void);\nconst cairoTranslate = bindCairo(\"cairo_translate\", POINT_ARGS, t.void);\nconst cairoScale = bindCairo(\"cairo_scale\", POINT_ARGS, t.void);\nconst cairoRotate = bindCairo(\"cairo_rotate\", [CONTEXT_T, t.float64], t.void);\nconst cairoSetOperator = bindCairo(\"cairo_set_operator\", [CONTEXT_T, t.int32], t.void);\nconst cairoGetOperator = bindCairo(\"cairo_get_operator\", [CONTEXT_T], t.int32);\n\nconst cairoSelectFontFace = bindCairo(\n \"cairo_select_font_face\",\n [CONTEXT_T, t.string(\"full\"), t.int32, t.int32],\n t.void,\n);\n\nconst cairoSetFontSize = bindCairo(\"cairo_set_font_size\", [CONTEXT_T, t.float64], t.void);\nconst cairoShowText = bindCairo(\"cairo_show_text\", [CONTEXT_T, t.string(\"full\")], t.void);\nconst cairoTextPath = bindCairo(\"cairo_text_path\", [CONTEXT_T, t.string(\"full\")], t.void);\nconst cairoTextExtents = bindCairo(\"cairo_text_extents\", [CONTEXT_T, t.string(\"full\"), TEXT_EXTENTS_T], t.void);\nconst cairoFontExtents = bindCairo(\"cairo_font_extents\", [CONTEXT_T, FONT_EXTENTS_T], t.void);\nconst cairoSetFontOptions = bindCairo(\"cairo_set_font_options\", [CONTEXT_T, FONT_OPTIONS_T], t.void);\nconst cairoGetFontOptions = bindCairo(\"cairo_get_font_options\", [CONTEXT_T, FONT_OPTIONS_T], t.void);\nconst cairoSetAntialias = bindCairo(\"cairo_set_antialias\", [CONTEXT_T, t.int32], t.void);\nconst cairoGetAntialias = bindCairo(\"cairo_get_antialias\", [CONTEXT_T], t.int32);\nconst cairoShowPage = bindCairo(\"cairo_show_page\", [CONTEXT_T], t.void);\nconst cairoCopyPage = bindCairo(\"cairo_copy_page\", [CONTEXT_T], t.void);\nconst cairoGetTarget = bindCairo(\"cairo_get_target\", [CONTEXT_T], SURFACE_T);\n\nconst cairoSetSourceSurface = bindCairo(\n \"cairo_set_source_surface\",\n [CONTEXT_T, SURFACE_T, t.float64, t.float64],\n t.void,\n);\n\nconst cairoHasCurrentPoint = bindCairo(\"cairo_has_current_point\", [CONTEXT_T], t.boolean);\nconst cairoGetCurrentPoint = bindCairo(\"cairo_get_current_point\", COORD_ARGS, t.void);\nconst cairoGetSource = bindCairo(\"cairo_get_source\", [CONTEXT_T], PATTERN_T);\nconst cairoStrokeExtents = bindCairo(\"cairo_stroke_extents\", EXTENTS_ARGS, t.void);\nconst cairoFillExtents = bindCairo(\"cairo_fill_extents\", EXTENTS_ARGS, t.void);\nconst cairoClipExtents = bindCairo(\"cairo_clip_extents\", EXTENTS_ARGS, t.void);\nconst cairoPathExtents = bindCairo(\"cairo_path_extents\", EXTENTS_ARGS, t.void);\nconst cairoInStroke = bindCairo(\"cairo_in_stroke\", POINT_ARGS, t.boolean);\nconst cairoInFill = bindCairo(\"cairo_in_fill\", POINT_ARGS, t.boolean);\nconst cairoInClip = bindCairo(\"cairo_in_clip\", POINT_ARGS, t.boolean);\nconst cairoCopyClipRectangleList = bindCairo(\"cairo_copy_clip_rectangle_list\", [CONTEXT_T], RECTANGLE_LIST_T);\nconst cairoRectangleListDestroy = bindCairo(\"cairo_rectangle_list_destroy\", [RECTANGLE_LIST_T], t.void);\nconst cairoMask = bindCairo(\"cairo_mask\", [CONTEXT_T, PATTERN_T], t.void);\nconst cairoMaskSurface = bindCairo(\"cairo_mask_surface\", [CONTEXT_T, SURFACE_T, t.float64, t.float64], t.void);\nconst cairoSetMatrix = bindCairo(\"cairo_set_matrix\", [CONTEXT_T, MATRIX_T], t.void);\nconst cairoGetMatrix = bindCairo(\"cairo_get_matrix\", [CONTEXT_T, MATRIX_T], t.void);\nconst cairoTransform = bindCairo(\"cairo_transform\", [CONTEXT_T, MATRIX_T], t.void);\nconst cairoIdentityMatrix = bindCairo(\"cairo_identity_matrix\", [CONTEXT_T], t.void);\nconst cairoUserToDevice = bindCairo(\"cairo_user_to_device\", COORD_ARGS, t.void);\nconst cairoUserToDeviceDistance = bindCairo(\"cairo_user_to_device_distance\", COORD_ARGS, t.void);\nconst cairoDeviceToUser = bindCairo(\"cairo_device_to_user\", COORD_ARGS, t.void);\nconst cairoDeviceToUserDistance = bindCairo(\"cairo_device_to_user_distance\", COORD_ARGS, t.void);\nconst cairoStatus = bindCairo(\"cairo_status\", [CONTEXT_T], t.int32);\nconst cairoGetReferenceCount = bindCairo(\"cairo_get_reference_count\", [CONTEXT_T], t.int32);\nconst cairoPushGroup = bindCairo(\"cairo_push_group\", [CONTEXT_T], t.void);\nconst cairoPushGroupWithContent = bindCairo(\"cairo_push_group_with_content\", [CONTEXT_T, t.int32], t.void);\nconst cairoPopGroup = bindCairo(\"cairo_pop_group\", [CONTEXT_T], PATTERN_FULL_T);\nconst cairoPopGroupToSource = bindCairo(\"cairo_pop_group_to_source\", [CONTEXT_T], t.void);\nconst cairoGetGroupTarget = bindCairo(\"cairo_get_group_target\", [CONTEXT_T], SURFACE_T);\nconst cairoSetFontFace = bindCairo(\"cairo_set_font_face\", [CONTEXT_T, FONT_FACE_T], t.void);\nconst cairoGetFontFace = bindCairo(\"cairo_get_font_face\", [CONTEXT_T], FONT_FACE_T);\nconst cairoSetFontMatrix = bindCairo(\"cairo_set_font_matrix\", [CONTEXT_T, MATRIX_T], t.void);\nconst cairoGetFontMatrix = bindCairo(\"cairo_get_font_matrix\", [CONTEXT_T, MATRIX_T], t.void);\nconst cairoSetScaledFont = bindCairo(\"cairo_set_scaled_font\", [CONTEXT_T, SCALED_FONT_T], t.void);\nconst cairoGetScaledFont = bindCairo(\"cairo_get_scaled_font\", [CONTEXT_T], SCALED_FONT_T);\nconst cairoShowGlyphs = bindCairo(\"cairo_show_glyphs\", [CONTEXT_T, GLYPH_T, t.int32], t.void);\nconst cairoGlyphPath = bindCairo(\"cairo_glyph_path\", [CONTEXT_T, GLYPH_T, t.int32], t.void);\nconst cairoGlyphExtents = bindCairo(\"cairo_glyph_extents\", [CONTEXT_T, GLYPH_T, t.int32, TEXT_EXTENTS_T], t.void);\nconst cairoCopyPath = bindCairo(\"cairo_copy_path\", [CONTEXT_T], PATH_T);\nconst cairoCopyPathFlat = bindCairo(\"cairo_copy_path_flat\", [CONTEXT_T], PATH_T);\nconst cairoTagBegin = bindCairo(\"cairo_tag_begin\", [CONTEXT_T, t.string(\"full\"), t.string(\"full\")], t.void);\nconst cairoTagEnd = bindCairo(\"cairo_tag_end\", [CONTEXT_T, t.string(\"full\")], t.void);\n\nconst cairoShowTextGlyphs = bindCairo(\n \"cairo_show_text_glyphs\",\n [CONTEXT_T, t.string(\"full\"), t.int32, GLYPH_T, t.int32, TEXT_CLUSTER_T, t.int32, t.int32],\n t.void,\n);\n\nconst readExtents = (handle: ExternalObject<Handle>, boundFn: BoundFunction): Extents => {\n const x1Ref = { value: 0 };\n const y1Ref = { value: 0 };\n const x2Ref = { value: 0 };\n const y2Ref = { value: 0 };\n boundFn(handle, x1Ref, y1Ref, x2Ref, y2Ref);\n\n return { x1: x1Ref.value, y1: y1Ref.value, x2: x2Ref.value, y2: y2Ref.value };\n};\n\nconst transformCoords = (\n handle: ExternalObject<Handle>,\n boundFn: BoundFunction,\n a: number,\n b: number,\n): [number, number] => {\n const aRef = { value: a };\n const bRef = { value: b };\n boundFn(handle, aRef, bRef);\n\n return [aRef.value, bRef.value];\n};\n\nconst allocDashBuffer = (dashes: number[]): ExternalObject<Handle> => {\n const buffer = alloc(dashes.length * 8);\n\n for (const [index, dash] of dashes.entries()) {\n write(buffer, t.float64, index * 8, dash);\n }\n\n return buffer;\n};\n\nconst readDashes = (buffer: ExternalObject<Handle>, count: number): number[] =>\n Array.from({ length: count }, (_, index) => read(buffer, t.float64, index * 8) as number);\n\nconst readRectangle = (rects: ExternalObject<Handle>, base: number): RectangleData => ({\n x: read(rects, t.float64, base) as number,\n y: read(rects, t.float64, base + 8) as number,\n width: read(rects, t.float64, base + 16) as number,\n height: read(rects, t.float64, base + 24) as number,\n});\n\nconst readRectangleList = (listHandle: ExternalObject<Handle>): RectangleData[] => {\n const count = read(listHandle, t.int32, RECTANGLE_LIST_COUNT_OFFSET) as number;\n\n if (count === 0) {\n return [];\n }\n\n const rects = read(\n listHandle,\n t.struct(\"borrowed\", { size: count * RECTANGLE_SIZE }),\n RECTANGLE_LIST_DATA_OFFSET,\n ) as ExternalObject<Handle>;\n\n return Array.from({ length: count }, (_, index) => readRectangle(rects, index * RECTANGLE_SIZE));\n};\n\nconst appendSegment = (ctx: Context, segment: PathData): void => {\n switch (segment.type) {\n case \"moveTo\": {\n ctx.moveTo(segment.x, segment.y);\n\n return;\n }\n case \"lineTo\": {\n ctx.lineTo(segment.x, segment.y);\n\n return;\n }\n case \"curveTo\": {\n ctx.curveTo(segment.x1, segment.y1, segment.x2, segment.y2, segment.x3, segment.y3);\n\n return;\n }\n case \"closePath\": {\n ctx.closePath();\n }\n }\n};\n\n/**\n * A cairo drawing context (`cairo_t`): the object every drawing operation goes through, holding the current\n * path, source, transformation, clip and font state for one target surface. GTK hands one to draw callbacks\n * and snapshots, and `new Context(surface)` creates one for offscreen drawing.\n */\nclass Context {\n static {\n registerWrapperClass(this, CONTEXT_TYPE);\n }\n\n /** Creates a context drawing onto `target`, the same as `new Context(target)`. */\n static create(target: Surface): Context {\n return new Context(target);\n }\n\n /** GType of `CairoContext`, the boxed type this class is registered under. */\n declare __type__: bigint;\n\n /** Creates a context drawing onto `target`, throwing when it cannot be created, such as on a finished surface. */\n constructor(target: Surface) {\n const handle = cairoCreate(getHandle(target)) as ExternalObject<Handle>;\n checkStatus(cairoStatus(handle) as Status, \"context\");\n setHandle(this, handle);\n }\n\n /** Begins a new sub-path at `(x, y)`, which becomes the current point. */\n moveTo(x: number, y: number): void {\n cairoMoveTo(getHandle(this), x, y);\n }\n\n /** Adds a straight line from the current point to `(x, y)`. */\n lineTo(x: number, y: number): void {\n cairoLineTo(getHandle(this), x, y);\n }\n\n /** Begins a new sub-path offset from the current point by `(dx, dy)`. */\n relMoveTo(dx: number, dy: number): void {\n cairoRelMoveTo(getHandle(this), dx, dy);\n }\n\n /** Adds a straight line from the current point to the point offset by `(dx, dy)`. */\n relLineTo(dx: number, dy: number): void {\n cairoRelLineTo(getHandle(this), dx, dy);\n }\n\n /** Adds a cubic Bézier curve whose control points and end point are offsets from the current point. */\n relCurveTo(dx1: number, dy1: number, dx2: number, dy2: number, dx3: number, dy3: number): void {\n cairoRelCurveTo(getHandle(this), dx1, dy1, dx2, dy2, dx3, dy3);\n }\n\n /** Adds a cubic Bézier curve from the current point through two control points to `(x3, y3)`. */\n curveTo(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number): void {\n cairoCurveTo(getHandle(this), x1, y1, x2, y2, x3, y3);\n }\n\n /** Adds a circular arc centred on `(xc, yc)`, drawn clockwise from `angle1` to `angle2`. */\n arc(xc: number, yc: number, radius: number, angle1: number, angle2: number): void {\n cairoArc(getHandle(this), xc, yc, radius, angle1, angle2);\n }\n\n /** Adds a circular arc centred on `(xc, yc)`, drawn counter-clockwise from `angle1` to `angle2`. */\n arcNegative(xc: number, yc: number, radius: number, angle1: number, angle2: number): void {\n cairoArcNegative(getHandle(this), xc, yc, radius, angle1, angle2);\n }\n\n /** Adds a closed rectangular sub-path. */\n rectangle(x: number, y: number, width: number, height: number): void {\n cairoRectangle(getHandle(this), x, y, width, height);\n }\n\n /** Closes the current sub-path with a line back to its start. */\n closePath(): void {\n cairoClosePath(getHandle(this));\n }\n\n /** Clears the current path. */\n newPath(): void {\n cairoNewPath(getHandle(this));\n }\n\n /** Begins a new sub-path without a current point, so the next `arc` needs no leading `moveTo`. */\n newSubPath(): void {\n cairoNewSubPath(getHandle(this));\n }\n\n /** Strokes the current path with the current line settings and clears it. */\n stroke(): void {\n cairoStroke(getHandle(this));\n }\n\n /** Strokes the current path and keeps it. */\n strokePreserve(): void {\n cairoStrokePreserve(getHandle(this));\n }\n\n /** Fills the current path with the current fill rule and clears it. */\n fill(): void {\n cairoFill(getHandle(this));\n }\n\n /** Fills the current path and keeps it. */\n fillPreserve(): void {\n cairoFillPreserve(getHandle(this));\n }\n\n /** Paints the current source everywhere inside the clip. */\n paint(): void {\n cairoPaint(getHandle(this));\n }\n\n /** Paints the current source everywhere inside the clip, faded by `alpha`. */\n paintWithAlpha(alpha: number): void {\n cairoPaintWithAlpha(getHandle(this), alpha);\n }\n\n /** Intersects the clip with the current path and clears the path. */\n clip(): void {\n cairoClip(getHandle(this));\n }\n\n /** Intersects the clip with the current path and keeps the path. */\n clipPreserve(): void {\n cairoClipPreserve(getHandle(this));\n }\n\n /** Removes the clip, so drawing reaches the whole surface again. */\n resetClip(): void {\n cairoResetClip(getHandle(this));\n }\n\n /** Sets the source to an opaque color with components in the 0 to 1 range. */\n setSourceRgb(red: number, green: number, blue: number): void {\n cairoSetSourceRgb(getHandle(this), red, green, blue);\n }\n\n /** Sets the source to a translucent color with components in the 0 to 1 range. */\n setSourceRgba(red: number, green: number, blue: number, alpha: number): void {\n cairoSetSourceRgba(getHandle(this), red, green, blue, alpha);\n }\n\n /** Sets the source pattern drawing operations paint with. */\n setSource(pattern: Pattern): void {\n cairoSetSource(getHandle(this), getHandle(pattern));\n }\n\n /** Sets the width of stroked lines in user space. */\n setLineWidth(width: number): void {\n cairoSetLineWidth(getHandle(this), width);\n }\n\n /** Returns the width of stroked lines. */\n getLineWidth(): number {\n return cairoGetLineWidth(getHandle(this)) as number;\n }\n\n /** Sets how the ends of stroked lines are drawn. */\n setLineCap(lineCap: LineCap): void {\n cairoSetLineCap(getHandle(this), lineCap);\n }\n\n /** Returns how the ends of stroked lines are drawn. */\n getLineCap(): LineCap {\n return cairoGetLineCap(getHandle(this)) as LineCap;\n }\n\n /** Sets how the corners of stroked lines are joined. */\n setLineJoin(lineJoin: LineJoin): void {\n cairoSetLineJoin(getHandle(this), lineJoin);\n }\n\n /** Returns how the corners of stroked lines are joined. */\n getLineJoin(): LineJoin {\n return cairoGetLineJoin(getHandle(this)) as LineJoin;\n }\n\n /** Sets the dash pattern of strokes as alternating on and off lengths; an empty list draws solid lines. */\n setDash(dashes: number[], offset: number): void {\n cairoSetDash(getHandle(this), allocDashBuffer(dashes), dashes.length, offset);\n }\n\n /** Returns how many lengths the dash pattern has, zero for a solid line. */\n getDashCount(): number {\n return cairoGetDashCount(getHandle(this)) as number;\n }\n\n /** Returns the dash pattern and its offset. */\n getDash(): DashPattern {\n const count = this.getDashCount();\n\n if (count === 0) {\n return { dashes: [], offset: 0 };\n }\n\n const buffer = alloc(count * 8);\n const offsetRef = { value: 0 };\n cairoGetDash(getHandle(this), buffer, offsetRef);\n\n return { dashes: readDashes(buffer, count), offset: offsetRef.value };\n }\n\n /** Sets the miter limit above which a mitered join is drawn beveled. */\n setMiterLimit(limit: number): void {\n cairoSetMiterLimit(getHandle(this), limit);\n }\n\n /** Returns the miter limit. */\n getMiterLimit(): number {\n return cairoGetMiterLimit(getHandle(this)) as number;\n }\n\n /** Sets the tolerance used when curves are flattened into line segments. */\n setTolerance(tolerance: number): void {\n cairoSetTolerance(getHandle(this), tolerance);\n }\n\n /** Returns the tolerance used when curves are flattened. */\n getTolerance(): number {\n return cairoGetTolerance(getHandle(this)) as number;\n }\n\n /** Sets the rule deciding which areas a self-intersecting path fills. */\n setFillRule(fillRule: FillRule): void {\n cairoSetFillRule(getHandle(this), fillRule);\n }\n\n /** Returns the fill rule. */\n getFillRule(): FillRule {\n return cairoGetFillRule(getHandle(this)) as FillRule;\n }\n\n /** Pushes the current drawing state (source, transformation, clip, line and font settings) onto a stack. */\n save(): void {\n cairoSave(getHandle(this));\n }\n\n /** Restores the drawing state saved by the matching `save`. */\n restore(): void {\n cairoRestore(getHandle(this));\n }\n\n /** Moves the user-space origin by `(tx, ty)`. */\n translate(tx: number, ty: number): void {\n cairoTranslate(getHandle(this), tx, ty);\n }\n\n /** Scales user space by `sx` and `sy`. */\n scale(sx: number, sy: number): void {\n cairoScale(getHandle(this), sx, sy);\n }\n\n /** Rotates user space by `angle` radians. */\n rotate(angle: number): void {\n cairoRotate(getHandle(this), angle);\n }\n\n /** Sets the compositing operator used by drawing operations. */\n setOperator(op: Operator): void {\n cairoSetOperator(getHandle(this), op);\n }\n\n /** Returns the compositing operator. */\n getOperator(): Operator {\n return cairoGetOperator(getHandle(this)) as Operator;\n }\n\n /** Selects a toy font face by family name, slant and weight. */\n selectFontFace(family: string, slant: FontSlant, weight: FontWeight): void {\n cairoSelectFontFace(getHandle(this), family, slant, weight);\n }\n\n /** Sets the font size in user space, replacing the font matrix with a uniform scale. */\n setFontSize(size: number): void {\n cairoSetFontSize(getHandle(this), size);\n }\n\n /** Draws `text` with the current font at the current point. */\n showText(text: string): void {\n cairoShowText(getHandle(this), text);\n }\n\n /** Adds the outlines of `text` to the current path. */\n textPath(text: string): void {\n cairoTextPath(getHandle(this), text);\n }\n\n /** Measures `text` with the current font. */\n textExtents(text: string): TextExtents {\n const extents = allocTextExtents();\n cairoTextExtents(getHandle(this), text, extents);\n\n return readTextExtents(extents);\n }\n\n /** Returns the metrics of the current font. */\n fontExtents(): FontExtents {\n const extents = allocFontExtents();\n cairoFontExtents(getHandle(this), extents);\n\n return readFontExtents(extents);\n }\n\n /** Sets the font rendering options merged over the surface's defaults. */\n setFontOptions(options: FontOptions): void {\n cairoSetFontOptions(getHandle(this), getHandle(options));\n }\n\n /** Returns a copy of the font rendering options set on the context. */\n getFontOptions(): FontOptions {\n const options = FontOptions.create();\n cairoGetFontOptions(getHandle(this), getHandle(options));\n\n return options;\n }\n\n /** Sets the antialiasing mode of the rasterizer. */\n setAntialias(antialias: Antialias): void {\n cairoSetAntialias(getHandle(this), antialias);\n }\n\n /** Returns the antialiasing mode. */\n getAntialias(): Antialias {\n return cairoGetAntialias(getHandle(this)) as Antialias;\n }\n\n /** Emits the current page and clears it, on surfaces that support pages. */\n showPage(): void {\n cairoShowPage(getHandle(this));\n }\n\n /** Emits the current page without clearing it, on surfaces that support pages. */\n copyPage(): void {\n cairoCopyPage(getHandle(this));\n }\n\n /** Returns the surface the context was created for, wrapped as its concrete class. */\n getTarget(): Surface {\n return wrapHandle(cairoGetTarget(getHandle(this)) as ExternalObject<Handle>, Surface);\n }\n\n /** Sets the source to `surface` placed with its origin at `(x, y)` in user space. */\n setSourceSurface(surface: Surface, x: number, y: number): void {\n cairoSetSourceSurface(getHandle(this), getHandle(surface), x, y);\n }\n\n /** Returns whether the path has a current point. */\n hasCurrentPoint(): boolean {\n return cairoHasCurrentPoint(getHandle(this)) as boolean;\n }\n\n /** Returns the current point of the path, or null when there is none. */\n getCurrentPoint(): Point | null {\n if (!this.hasCurrentPoint()) {\n return null;\n }\n\n const xRef = { value: 0 };\n const yRef = { value: 0 };\n cairoGetCurrentPoint(getHandle(this), xRef, yRef);\n\n return { x: xRef.value, y: yRef.value };\n }\n\n /** Returns the current source pattern, wrapped as its concrete class. */\n getSource(): Pattern {\n return wrapHandle(cairoGetSource(getHandle(this)) as ExternalObject<Handle>, Pattern);\n }\n\n /** Returns the bounding box a `stroke` of the current path would cover. */\n strokeExtents(): Extents {\n return readExtents(getHandle(this), cairoStrokeExtents);\n }\n\n /** Returns the bounding box a `fill` of the current path would cover. */\n fillExtents(): Extents {\n return readExtents(getHandle(this), cairoFillExtents);\n }\n\n /** Returns the bounding box of the current clip. */\n clipExtents(): Extents {\n return readExtents(getHandle(this), cairoClipExtents);\n }\n\n /** Returns the bounding box of the current path. */\n pathExtents(): Extents {\n return readExtents(getHandle(this), cairoPathExtents);\n }\n\n /** Returns whether `(x, y)` lies inside the area a `stroke` of the current path would cover. */\n inStroke(x: number, y: number): boolean {\n return cairoInStroke(getHandle(this), x, y) as boolean;\n }\n\n /** Returns whether `(x, y)` lies inside the area a `fill` of the current path would cover. */\n inFill(x: number, y: number): boolean {\n return cairoInFill(getHandle(this), x, y) as boolean;\n }\n\n /** Returns whether `(x, y)` lies inside the current clip. */\n inClip(x: number, y: number): boolean {\n return cairoInClip(getHandle(this), x, y) as boolean;\n }\n\n /** Returns the current clip as a list of rectangles in user space. */\n copyClipRectangleList(): RectangleData[] {\n const listHandle = cairoCopyClipRectangleList(getHandle(this)) as ExternalObject<Handle>;\n const rects = readRectangleList(listHandle);\n cairoRectangleListDestroy(listHandle);\n\n return rects;\n }\n\n /** Paints the current source using the alpha channel of `pattern` as a mask. */\n mask(pattern: Pattern): void {\n cairoMask(getHandle(this), getHandle(pattern));\n }\n\n /** Paints the current source using the alpha channel of `surface`, placed at `(x, y)`, as a mask. */\n maskSurface(surface: Surface, x: number, y: number): void {\n cairoMaskSurface(getHandle(this), getHandle(surface), x, y);\n }\n\n /** Replaces the transformation from user space to device space. */\n setMatrix(matrix: Matrix): void {\n cairoSetMatrix(getHandle(this), getHandle(matrix));\n }\n\n /** Returns the transformation from user space to device space. */\n getMatrix(): Matrix {\n const { handle, matrix } = allocMatrix();\n cairoGetMatrix(getHandle(this), handle);\n\n return matrix;\n }\n\n /** Applies `matrix` before the existing transformation. */\n transform(matrix: Matrix): void {\n cairoTransform(getHandle(this), getHandle(matrix));\n }\n\n /** Resets the transformation to the identity. */\n identityMatrix(): void {\n cairoIdentityMatrix(getHandle(this));\n }\n\n /** Maps a point from user space to device space. */\n userToDevice(x: number, y: number): Point {\n const [px, py] = transformCoords(getHandle(this), cairoUserToDevice, x, y);\n\n return { x: px, y: py };\n }\n\n /** Maps a distance from user space to device space, ignoring translation. */\n userToDeviceDistance(dx: number, dy: number): Distance {\n const [ddx, ddy] = transformCoords(getHandle(this), cairoUserToDeviceDistance, dx, dy);\n\n return { dx: ddx, dy: ddy };\n }\n\n /** Maps a point from device space to user space. */\n deviceToUser(x: number, y: number): Point {\n const [px, py] = transformCoords(getHandle(this), cairoDeviceToUser, x, y);\n\n return { x: px, y: py };\n }\n\n /** Maps a distance from device space to user space, ignoring translation. */\n deviceToUserDistance(dx: number, dy: number): Distance {\n const [ddx, ddy] = transformCoords(getHandle(this), cairoDeviceToUserDistance, dx, dy);\n\n return { dx: ddx, dy: ddy };\n }\n\n /** Returns the error status of the context, `Status.SUCCESS` while every operation so far succeeded. */\n status(): Status {\n return cairoStatus(getHandle(this)) as Status;\n }\n\n /** Returns the reference count of the underlying `cairo_t`. */\n getReferenceCount(): number {\n return cairoGetReferenceCount(getHandle(this)) as number;\n }\n\n /** Redirects drawing to an intermediate surface until `popGroup` or `popGroupToSource`. */\n pushGroup(): void {\n cairoPushGroup(getHandle(this));\n }\n\n /** Redirects drawing to an intermediate surface of the given content. */\n pushGroupWithContent(content: Content): void {\n cairoPushGroupWithContent(getHandle(this), content);\n }\n\n /** Ends the current group and returns what was drawn into it as a pattern. */\n popGroup(): Pattern {\n return wrapHandle(cairoPopGroup(getHandle(this)) as ExternalObject<Handle>, Pattern);\n }\n\n /** Ends the current group and installs what was drawn into it as the source. */\n popGroupToSource(): void {\n cairoPopGroupToSource(getHandle(this));\n }\n\n /** Returns the surface drawing currently goes to: the group surface inside a group, else the target. */\n getGroupTarget(): Surface {\n return wrapHandle(cairoGetGroupTarget(getHandle(this)) as ExternalObject<Handle>, Surface);\n }\n\n /** Sets the font face used by text operations. */\n setFontFace(fontFace: FontFace): void {\n cairoSetFontFace(getHandle(this), getHandle(fontFace));\n }\n\n /** Returns the current font face, wrapped as its concrete class. */\n getFontFace(): FontFace {\n return wrapHandle(cairoGetFontFace(getHandle(this)) as ExternalObject<Handle>, FontFace);\n }\n\n /** Sets the matrix mapping font space to user space, which sizes and shapes the glyphs. */\n setFontMatrix(matrix: Matrix): void {\n cairoSetFontMatrix(getHandle(this), getHandle(matrix));\n }\n\n /** Returns the matrix mapping font space to user space. */\n getFontMatrix(): Matrix {\n const { handle, matrix } = allocMatrix();\n cairoGetFontMatrix(getHandle(this), handle);\n\n return matrix;\n }\n\n /** Replaces the font face, font matrix and font options with those of `scaledFont`. */\n setScaledFont(scaledFont: ScaledFont): void {\n cairoSetScaledFont(getHandle(this), getHandle(scaledFont));\n }\n\n /** Returns the scaled font text operations currently use. */\n getScaledFont(): ScaledFont {\n return wrapHandle(cairoGetScaledFont(getHandle(this)) as ExternalObject<Handle>, ScaledFont);\n }\n\n /** Draws positioned glyphs with the current font. */\n showGlyphs(glyphs: CairoGlyph[]): void {\n cairoShowGlyphs(getHandle(this), allocGlyphBuffer(glyphs), glyphs.length);\n }\n\n /** Adds the outlines of positioned glyphs to the current path. */\n glyphPath(glyphs: CairoGlyph[]): void {\n cairoGlyphPath(getHandle(this), allocGlyphBuffer(glyphs), glyphs.length);\n }\n\n /** Measures positioned glyphs with the current font. */\n glyphExtents(glyphs: CairoGlyph[]): TextExtents {\n const extents = allocTextExtents();\n cairoGlyphExtents(getHandle(this), allocGlyphBuffer(glyphs), glyphs.length, extents);\n\n return readTextExtents(extents);\n }\n\n /** Returns a copy of the current path as segments. */\n copyPath(): PathData[] {\n return parsePath(cairoCopyPath(getHandle(this)) as ExternalObject<Handle>);\n }\n\n /** Returns a copy of the current path with curves flattened into line segments. */\n copyPathFlat(): PathData[] {\n return parsePath(cairoCopyPathFlat(getHandle(this)) as ExternalObject<Handle>);\n }\n\n /** Appends segments, as returned by `copyPath`, to the current path. */\n appendPath(data: PathData[]): void {\n for (const segment of data) {\n appendSegment(this, segment);\n }\n }\n\n /** Opens a tagged structure, such as a link or a destination, on surfaces that record tags. */\n tagBegin(tagName: string, attributes: string): void {\n cairoTagBegin(getHandle(this), tagName, attributes);\n }\n\n /** Closes the tagged structure opened by the matching `tagBegin`. */\n tagEnd(tagName: string): void {\n cairoTagEnd(getHandle(this), tagName);\n }\n\n /** Draws glyphs together with the text and clusters they came from, so the backend can keep the text. */\n showTextGlyphs(\n text: string,\n glyphs: CairoGlyph[],\n clusters: CairoTextCluster[],\n clusterFlags: TextClusterFlags,\n ): void {\n const glyphBuffer = allocGlyphBuffer(glyphs);\n const clusterBuffer = allocClusterBuffer(clusters);\n\n cairoShowTextGlyphs(\n getHandle(this),\n text,\n -1,\n glyphBuffer,\n glyphs.length,\n clusterBuffer,\n clusters.length,\n clusterFlags,\n );\n }\n}\n\nexport { Context };\n"]}
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,KAAK,EAEL,SAAS,EAET,IAAI,EACJ,oBAAoB,EACpB,SAAS,EACT,CAAC,EACD,UAAU,GACb,MAAM,eAAe,CAAC;AAyBvB,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EACH,SAAS,EAET,UAAU,EACV,cAAc,EACd,SAAS,EACT,eAAe,EACf,cAAc,EACd,WAAW,EACX,cAAc,EACd,OAAO,EACP,QAAQ,EACR,MAAM,EACN,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,aAAa,EACb,SAAS,EACT,cAAc,EACd,cAAc,GACjB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EACH,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,eAAe,GAClB,MAAM,WAAW,CAAC;AAEnB,MAAM,YAAY,GAAG,UAAU,CAAC,gCAAgC,CAAC,CAAC;AAClE,MAAM,cAAc,GAAG,EAAE,CAAC;AAC1B,MAAM,2BAA2B,GAAG,EAAE,CAAC;AACvC,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AACpC,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,2BAA2B,CAAC,CAAC;AAC3E,MAAM,0BAA0B,GAAG,CAAC,CAAC;AACrC,MAAM,UAAU,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;AACrD,MAAM,YAAY,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACzG,MAAM,UAAU,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACnE,MAAM,UAAU,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;AACjG,MAAM,QAAQ,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;AACpF,MAAM,WAAW,GAAG,SAAS,CAAC,cAAc,EAAE,CAAC,SAAS,CAAC,EAAE,cAAc,CAAC,CAAC;AAC3E,MAAM,WAAW,GAAG,SAAS,CAAC,eAAe,EAAE,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACnE,MAAM,WAAW,GAAG,SAAS,CAAC,eAAe,EAAE,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACnE,MAAM,cAAc,GAAG,SAAS,CAAC,mBAAmB,EAAE,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC1E,MAAM,cAAc,GAAG,SAAS,CAAC,mBAAmB,EAAE,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC1E,MAAM,eAAe,GAAG,SAAS,CAAC,oBAAoB,EAAE,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC5E,MAAM,YAAY,GAAG,SAAS,CAAC,gBAAgB,EAAE,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACrE,MAAM,QAAQ,GAAG,SAAS,CAAC,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC1D,MAAM,gBAAgB,GAAG,SAAS,CAAC,oBAAoB,EAAE,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC3E,MAAM,cAAc,GAAG,SAAS,CAAC,iBAAiB,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACrH,MAAM,cAAc,GAAG,SAAS,CAAC,kBAAkB,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC1E,MAAM,YAAY,GAAG,SAAS,CAAC,gBAAgB,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACtE,MAAM,eAAe,GAAG,SAAS,CAAC,oBAAoB,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC7E,MAAM,WAAW,GAAG,SAAS,CAAC,cAAc,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACnE,MAAM,mBAAmB,GAAG,SAAS,CAAC,uBAAuB,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACpF,MAAM,SAAS,GAAG,SAAS,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC/D,MAAM,iBAAiB,GAAG,SAAS,CAAC,qBAAqB,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAChF,MAAM,UAAU,GAAG,SAAS,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACjE,MAAM,mBAAmB,GAAG,SAAS,CAAC,wBAAwB,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAChG,MAAM,SAAS,GAAG,SAAS,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC/D,MAAM,iBAAiB,GAAG,SAAS,CAAC,qBAAqB,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAChF,MAAM,cAAc,GAAG,SAAS,CAAC,kBAAkB,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC1E,MAAM,iBAAiB,GAAG,SAAS,CAAC,sBAAsB,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAElH,MAAM,kBAAkB,GAAG,SAAS,CAChC,uBAAuB,EACvB,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,EACvD,CAAC,CAAC,IAAI,CACT,CAAC;AAEF,MAAM,cAAc,GAAG,SAAS,CAAC,kBAAkB,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACrF,MAAM,iBAAiB,GAAG,SAAS,CAAC,sBAAsB,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC5F,MAAM,iBAAiB,GAAG,SAAS,CAAC,sBAAsB,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;AACpF,MAAM,eAAe,GAAG,SAAS,CAAC,oBAAoB,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACtF,MAAM,eAAe,GAAG,SAAS,CAAC,oBAAoB,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;AAC9E,MAAM,gBAAgB,GAAG,SAAS,CAAC,qBAAqB,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACxF,MAAM,gBAAgB,GAAG,SAAS,CAAC,qBAAqB,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;AAChF,MAAM,YAAY,GAAG,SAAS,CAAC,gBAAgB,EAAE,CAAC,SAAS,EAAE,eAAe,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC3G,MAAM,iBAAiB,GAAG,SAAS,CAAC,sBAAsB,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;AAClF,MAAM,YAAY,GAAG,SAAS,CAAC,gBAAgB,EAAE,CAAC,SAAS,EAAE,eAAe,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACzG,MAAM,kBAAkB,GAAG,SAAS,CAAC,uBAAuB,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC9F,MAAM,kBAAkB,GAAG,SAAS,CAAC,uBAAuB,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;AACtF,MAAM,iBAAiB,GAAG,SAAS,CAAC,qBAAqB,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC3F,MAAM,iBAAiB,GAAG,SAAS,CAAC,qBAAqB,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;AACnF,MAAM,gBAAgB,GAAG,SAAS,CAAC,qBAAqB,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACxF,MAAM,gBAAgB,GAAG,SAAS,CAAC,qBAAqB,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;AAChF,MAAM,SAAS,GAAG,SAAS,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC/D,MAAM,YAAY,GAAG,SAAS,CAAC,eAAe,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACrE,MAAM,cAAc,GAAG,SAAS,CAAC,iBAAiB,EAAE,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACxE,MAAM,UAAU,GAAG,SAAS,CAAC,aAAa,EAAE,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAChE,MAAM,WAAW,GAAG,SAAS,CAAC,cAAc,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC9E,MAAM,gBAAgB,GAAG,SAAS,CAAC,oBAAoB,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACvF,MAAM,gBAAgB,GAAG,SAAS,CAAC,oBAAoB,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;AAE/E,MAAM,mBAAmB,GAAG,SAAS,CACjC,wBAAwB,EACxB,CAAC,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,EAC/C,CAAC,CAAC,IAAI,CACT,CAAC;AAEF,MAAM,gBAAgB,GAAG,SAAS,CAAC,qBAAqB,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC1F,MAAM,aAAa,GAAG,SAAS,CAAC,iBAAiB,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC1F,MAAM,aAAa,GAAG,SAAS,CAAC,iBAAiB,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC1F,MAAM,gBAAgB,GAAG,SAAS,CAAC,oBAAoB,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAChH,MAAM,gBAAgB,GAAG,SAAS,CAAC,oBAAoB,EAAE,CAAC,SAAS,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC9F,MAAM,mBAAmB,GAAG,SAAS,CAAC,wBAAwB,EAAE,CAAC,SAAS,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACrG,MAAM,mBAAmB,GAAG,SAAS,CAAC,wBAAwB,EAAE,CAAC,SAAS,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACrG,MAAM,iBAAiB,GAAG,SAAS,CAAC,qBAAqB,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACzF,MAAM,iBAAiB,GAAG,SAAS,CAAC,qBAAqB,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;AACjF,MAAM,aAAa,GAAG,SAAS,CAAC,iBAAiB,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACxE,MAAM,aAAa,GAAG,SAAS,CAAC,iBAAiB,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACxE,MAAM,cAAc,GAAG,SAAS,CAAC,kBAAkB,EAAE,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,CAAC;AAE7E,MAAM,qBAAqB,GAAG,SAAS,CACnC,0BAA0B,EAC1B,CAAC,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,EAC5C,CAAC,CAAC,IAAI,CACT,CAAC;AAEF,MAAM,oBAAoB,GAAG,SAAS,CAAC,yBAAyB,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;AAC1F,MAAM,oBAAoB,GAAG,SAAS,CAAC,yBAAyB,EAAE,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACtF,MAAM,cAAc,GAAG,SAAS,CAAC,kBAAkB,EAAE,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,CAAC;AAC7E,MAAM,kBAAkB,GAAG,SAAS,CAAC,sBAAsB,EAAE,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACnF,MAAM,gBAAgB,GAAG,SAAS,CAAC,oBAAoB,EAAE,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC/E,MAAM,gBAAgB,GAAG,SAAS,CAAC,oBAAoB,EAAE,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC/E,MAAM,gBAAgB,GAAG,SAAS,CAAC,oBAAoB,EAAE,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC/E,MAAM,aAAa,GAAG,SAAS,CAAC,iBAAiB,EAAE,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;AAC1E,MAAM,WAAW,GAAG,SAAS,CAAC,eAAe,EAAE,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;AACtE,MAAM,WAAW,GAAG,SAAS,CAAC,eAAe,EAAE,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;AACtE,MAAM,0BAA0B,GAAG,SAAS,CAAC,gCAAgC,EAAE,CAAC,SAAS,CAAC,EAAE,gBAAgB,CAAC,CAAC;AAC9G,MAAM,SAAS,GAAG,SAAS,CAAC,YAAY,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC1E,MAAM,gBAAgB,GAAG,SAAS,CAAC,oBAAoB,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC/G,MAAM,cAAc,GAAG,SAAS,CAAC,kBAAkB,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACpF,MAAM,cAAc,GAAG,SAAS,CAAC,kBAAkB,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACpF,MAAM,cAAc,GAAG,SAAS,CAAC,iBAAiB,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACnF,MAAM,mBAAmB,GAAG,SAAS,CAAC,uBAAuB,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACpF,MAAM,iBAAiB,GAAG,SAAS,CAAC,sBAAsB,EAAE,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAChF,MAAM,yBAAyB,GAAG,SAAS,CAAC,+BAA+B,EAAE,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACjG,MAAM,iBAAiB,GAAG,SAAS,CAAC,sBAAsB,EAAE,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAChF,MAAM,yBAAyB,GAAG,SAAS,CAAC,+BAA+B,EAAE,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACjG,MAAM,WAAW,GAAG,SAAS,CAAC,cAAc,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;AACpE,MAAM,sBAAsB,GAAG,SAAS,CAAC,2BAA2B,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;AAC5F,MAAM,cAAc,GAAG,SAAS,CAAC,kBAAkB,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC1E,MAAM,yBAAyB,GAAG,SAAS,CAAC,+BAA+B,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC3G,MAAM,aAAa,GAAG,SAAS,CAAC,iBAAiB,EAAE,CAAC,SAAS,CAAC,EAAE,cAAc,CAAC,CAAC;AAChF,MAAM,qBAAqB,GAAG,SAAS,CAAC,2BAA2B,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC1F,MAAM,mBAAmB,GAAG,SAAS,CAAC,wBAAwB,EAAE,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,CAAC;AACxF,MAAM,gBAAgB,GAAG,SAAS,CAAC,qBAAqB,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC5F,MAAM,gBAAgB,GAAG,SAAS,CAAC,qBAAqB,EAAE,CAAC,SAAS,CAAC,EAAE,WAAW,CAAC,CAAC;AACpF,MAAM,kBAAkB,GAAG,SAAS,CAAC,uBAAuB,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC7F,MAAM,kBAAkB,GAAG,SAAS,CAAC,uBAAuB,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC7F,MAAM,kBAAkB,GAAG,SAAS,CAAC,uBAAuB,EAAE,CAAC,SAAS,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAClG,MAAM,kBAAkB,GAAG,SAAS,CAAC,uBAAuB,EAAE,CAAC,SAAS,CAAC,EAAE,aAAa,CAAC,CAAC;AAC1F,MAAM,eAAe,GAAG,SAAS,CAAC,mBAAmB,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC9F,MAAM,cAAc,GAAG,SAAS,CAAC,kBAAkB,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC5F,MAAM,iBAAiB,GAAG,SAAS,CAAC,qBAAqB,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAClH,MAAM,aAAa,GAAG,SAAS,CAAC,iBAAiB,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC;AACxE,MAAM,iBAAiB,GAAG,SAAS,CAAC,sBAAsB,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC;AACjF,MAAM,aAAa,GAAG,SAAS,CAAC,iBAAiB,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC5G,MAAM,WAAW,GAAG,SAAS,CAAC,eAAe,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAEtF,MAAM,mBAAmB,GAAG,SAAS,CACjC,wBAAwB,EACxB,CAAC,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,EAC1F,CAAC,CAAC,IAAI,CACT,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,MAA8B,EAAE,OAAsB,EAAW,EAAE;IACpF,MAAM,KAAK,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IAC3B,MAAM,KAAK,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IAC3B,MAAM,KAAK,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IAC3B,MAAM,KAAK,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IAC3B,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAE5C,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;AAClF,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CACpB,MAA8B,EAC9B,OAAsB,EACtB,CAAS,EACT,CAAS,EACO,EAAE;IAClB,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IAC1B,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IAC1B,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAE5B,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AACpC,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,MAAgB,EAA0B,EAAE;IACjE,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAExC,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;QAC3C,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,MAA8B,EAAE,KAAa,EAAY,EAAE,CAC3E,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,CAAW,CAAC,CAAC;AAE1F,MAAM,aAAa,GAAG,CAAC,KAA6B,EAAE,IAAY,EAAiB,EAAE,CAAC,CAAC;IACnF,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAW;IACrC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,GAAG,CAAC,CAAW;IACzC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,GAAG,EAAE,CAAW;IAC9C,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,GAAG,EAAE,CAAW;CAClD,CAAC,CAAC;AAEH,MAAM,iBAAiB,GAAG,CAAC,UAAkC,EAAmB,EAAE;IAC9E,MAAM,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAW,CAAC;IAE9D,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;QACd,OAAO,EAAE,CAAC;IACd,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CACd,UAAU,EACV,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,KAAK,GAAG,cAAc,EAAE,CAAC,EACtD,0BAA0B,CACH,CAAC;IAE5B,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,cAAc,CAAC,CAAC,CAAC;AACrG,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,GAAY,EAAE,OAAiB,EAAQ,EAAE;IAC5D,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,QAAQ,CAAC,CAAC,CAAC;YACZ,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;YAEjC,OAAO;QACX,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACZ,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;YAEjC,OAAO;QACX,CAAC;QACD,KAAK,SAAS,CAAC,CAAC,CAAC;YACb,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;YAEpF,OAAO;QACX,CAAC;QACD,KAAK,WAAW,CAAC,CAAC,CAAC;YACf,GAAG,CAAC,SAAS,EAAE,CAAC;QACpB,CAAC;IACL,CAAC;AACL,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,OAAO;IACT;QACI,oBAAoB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAC7C,CAAC;IAED,kFAAkF;IAClF,MAAM,CAAC,MAAM,CAAC,MAAe;QACzB,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAKD,kHAAkH;IAClH,YAAY,MAAe;QACvB,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,CAA2B,CAAC;QACxE,WAAW,CAAC,WAAW,CAAC,MAAM,CAAW,EAAE,SAAS,CAAC,CAAC;QACtD,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC5B,CAAC;IAED,0EAA0E;IAC1E,MAAM,CAAC,CAAS,EAAE,CAAS;QACvB,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,+DAA+D;IAC/D,MAAM,CAAC,CAAS,EAAE,CAAS;QACvB,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,yEAAyE;IACzE,SAAS,CAAC,EAAU,EAAE,EAAU;QAC5B,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,qFAAqF;IACrF,SAAS,CAAC,EAAU,EAAE,EAAU;QAC5B,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,uGAAuG;IACvG,UAAU,CAAC,GAAW,EAAE,GAAW,EAAE,GAAW,EAAE,GAAW,EAAE,GAAW,EAAE,GAAW;QACnF,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACnE,CAAC;IAED,iGAAiG;IACjG,OAAO,CAAC,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,EAAU;QAC1E,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,4FAA4F;IAC5F,GAAG,CAAC,EAAU,EAAE,EAAU,EAAE,MAAc,EAAE,MAAc,EAAE,MAAc;QACtE,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9D,CAAC;IAED,oGAAoG;IACpG,WAAW,CAAC,EAAU,EAAE,EAAU,EAAE,MAAc,EAAE,MAAc,EAAE,MAAc;QAC9E,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACtE,CAAC;IAED,0CAA0C;IAC1C,SAAS,CAAC,CAAS,EAAE,CAAS,EAAE,KAAa,EAAE,MAAc;QACzD,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACzD,CAAC;IAED,iEAAiE;IACjE,SAAS;QACL,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACpC,CAAC;IAED,+BAA+B;IAC/B,OAAO;QACH,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAClC,CAAC;IAED,kGAAkG;IAClG,UAAU;QACN,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACrC,CAAC;IAED,6EAA6E;IAC7E,MAAM;QACF,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACjC,CAAC;IAED,6CAA6C;IAC7C,cAAc;QACV,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,uEAAuE;IACvE,IAAI;QACA,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/B,CAAC;IAED,2CAA2C;IAC3C,YAAY;QACR,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,4DAA4D;IAC5D,KAAK;QACD,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAChC,CAAC;IAED,8EAA8E;IAC9E,cAAc,CAAC,KAAa;QACxB,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,qEAAqE;IACrE,IAAI;QACA,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/B,CAAC;IAED,oEAAoE;IACpE,YAAY;QACR,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,oEAAoE;IACpE,SAAS;QACL,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACpC,CAAC;IAED,8EAA8E;IAC9E,YAAY,CAAC,GAAW,EAAE,KAAa,EAAE,IAAY;QACjD,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IACzD,CAAC;IAED,kFAAkF;IAClF,aAAa,CAAC,GAAW,EAAE,KAAa,EAAE,IAAY,EAAE,KAAa;QACjE,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IACjE,CAAC;IAED,6DAA6D;IAC7D,SAAS,CAAC,OAAgB;QACtB,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,qDAAqD;IACrD,YAAY,CAAC,KAAa;QACtB,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;IAC9C,CAAC;IAED,0CAA0C;IAC1C,YAAY;QACR,OAAO,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAW,CAAC;IACxD,CAAC;IAED,oDAAoD;IACpD,UAAU,CAAC,OAAgB;QACvB,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED,uDAAuD;IACvD,UAAU;QACN,OAAO,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,CAAY,CAAC;IACvD,CAAC;IAED,wDAAwD;IACxD,WAAW,CAAC,QAAkB;QAC1B,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC;IAChD,CAAC;IAED,2DAA2D;IAC3D,WAAW;QACP,OAAO,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAa,CAAC;IACzD,CAAC;IAED,2GAA2G;IAC3G,OAAO,CAAC,MAAgB,EAAE,MAAc;QACpC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClF,CAAC;IAED,4EAA4E;IAC5E,YAAY;QACR,OAAO,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAW,CAAC;IACxD,CAAC;IAED,+CAA+C;IAC/C,OAAO;QACH,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAElC,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YACd,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QACrC,CAAC;QAED,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAChC,MAAM,SAAS,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAC/B,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;QAEjD,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC;IAC1E,CAAC;IAED,wEAAwE;IACxE,aAAa,CAAC,KAAa;QACvB,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;IAC/C,CAAC;IAED,+BAA+B;IAC/B,aAAa;QACT,OAAO,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAW,CAAC;IACzD,CAAC;IAED,4EAA4E;IAC5E,YAAY,CAAC,SAAiB;QAC1B,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;IAClD,CAAC;IAED,4DAA4D;IAC5D,YAAY;QACR,OAAO,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAW,CAAC;IACxD,CAAC;IAED,yEAAyE;IACzE,WAAW,CAAC,QAAkB;QAC1B,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC;IAChD,CAAC;IAED,6BAA6B;IAC7B,WAAW;QACP,OAAO,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAa,CAAC;IACzD,CAAC;IAED,4GAA4G;IAC5G,IAAI;QACA,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/B,CAAC;IAED,+DAA+D;IAC/D,OAAO;QACH,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAClC,CAAC;IAED,iDAAiD;IACjD,SAAS,CAAC,EAAU,EAAE,EAAU;QAC5B,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,0CAA0C;IAC1C,KAAK,CAAC,EAAU,EAAE,EAAU;QACxB,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACxC,CAAC;IAED,6CAA6C;IAC7C,MAAM,CAAC,KAAa;QAChB,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;IACxC,CAAC;IAED,gEAAgE;IAChE,WAAW,CAAC,EAAY;QACpB,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,wCAAwC;IACxC,WAAW;QACP,OAAO,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAa,CAAC;IACzD,CAAC;IAED,gEAAgE;IAChE,cAAc,CAAC,MAAc,EAAE,KAAgB,EAAE,MAAkB;QAC/D,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAChE,CAAC;IAED,wFAAwF;IACxF,WAAW,CAAC,IAAY;QACpB,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IAC5C,CAAC;IAED,+DAA+D;IAC/D,QAAQ,CAAC,IAAY;QACjB,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IACzC,CAAC;IAED,uDAAuD;IACvD,QAAQ,CAAC,IAAY;QACjB,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IACzC,CAAC;IAED,6CAA6C;IAC7C,WAAW,CAAC,IAAY;QACpB,MAAM,OAAO,GAAG,gBAAgB,EAAE,CAAC;QACnC,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAEjD,OAAO,eAAe,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAED,+CAA+C;IAC/C,WAAW;QACP,MAAM,OAAO,GAAG,gBAAgB,EAAE,CAAC;QACnC,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;QAE3C,OAAO,eAAe,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAED,0EAA0E;IAC1E,cAAc,CAAC,OAAoB;QAC/B,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,uEAAuE;IACvE,cAAc;QACV,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC;QACrC,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;QAEzD,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,oDAAoD;IACpD,YAAY,CAAC,SAAoB;QAC7B,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;IAClD,CAAC;IAED,qCAAqC;IACrC,YAAY;QACR,OAAO,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAc,CAAC;IAC3D,CAAC;IAED,4EAA4E;IAC5E,QAAQ;QACJ,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACnC,CAAC;IAED,kFAAkF;IAClF,QAAQ;QACJ,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACnC,CAAC;IAED,sFAAsF;IACtF,SAAS;QACL,OAAO,UAAU,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,CAA2B,EAAE,OAAO,CAAC,CAAC;IAC1F,CAAC;IAED,qFAAqF;IACrF,gBAAgB,CAAC,OAAgB,EAAE,CAAS,EAAE,CAAS;QACnD,qBAAqB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,oDAAoD;IACpD,eAAe;QACX,OAAO,oBAAoB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAY,CAAC;IAC5D,CAAC;IAED,yEAAyE;IACzE,eAAe;QACX,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAC1B,oBAAoB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAElD,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;IAC5C,CAAC;IAED,yEAAyE;IACzE,SAAS;QACL,OAAO,UAAU,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,CAA2B,EAAE,OAAO,CAAC,CAAC;IAC1F,CAAC;IAED,2EAA2E;IAC3E,aAAa;QACT,OAAO,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,kBAAkB,CAAC,CAAC;IAC5D,CAAC;IAED,yEAAyE;IACzE,WAAW;QACP,OAAO,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,gBAAgB,CAAC,CAAC;IAC1D,CAAC;IAED,oDAAoD;IACpD,WAAW;QACP,OAAO,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,gBAAgB,CAAC,CAAC;IAC1D,CAAC;IAED,oDAAoD;IACpD,WAAW;QACP,OAAO,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,gBAAgB,CAAC,CAAC;IAC1D,CAAC;IAED,gGAAgG;IAChG,QAAQ,CAAC,CAAS,EAAE,CAAS;QACzB,OAAO,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAY,CAAC;IAC3D,CAAC;IAED,8FAA8F;IAC9F,MAAM,CAAC,CAAS,EAAE,CAAS;QACvB,OAAO,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAY,CAAC;IACzD,CAAC;IAED,6DAA6D;IAC7D,MAAM,CAAC,CAAS,EAAE,CAAS;QACvB,OAAO,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAY,CAAC;IACzD,CAAC;IAED,sEAAsE;IACtE,qBAAqB;QACjB,OAAO,iBAAiB,CAAC,0BAA0B,CAAC,SAAS,CAAC,IAAI,CAAC,CAA2B,CAAC,CAAC;IACpG,CAAC;IAED,gFAAgF;IAChF,IAAI,CAAC,OAAgB;QACjB,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,qGAAqG;IACrG,WAAW,CAAC,OAAgB,EAAE,CAAS,EAAE,CAAS;QAC9C,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,mEAAmE;IACnE,SAAS,CAAC,MAAc;QACpB,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IACvD,CAAC;IAED,kEAAkE;IAClE,SAAS;QACL,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;QACzC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;QAExC,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,2DAA2D;IAC3D,SAAS,CAAC,MAAc;QACpB,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IACvD,CAAC;IAED,iDAAiD;IACjD,cAAc;QACV,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,oDAAoD;IACpD,YAAY,CAAC,CAAS,EAAE,CAAS;QAC7B,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAE3E,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;IAC5B,CAAC;IAED,6EAA6E;IAC7E,oBAAoB,CAAC,EAAU,EAAE,EAAU;QACvC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,yBAAyB,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAEvF,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC;IAChC,CAAC;IAED,oDAAoD;IACpD,YAAY,CAAC,CAAS,EAAE,CAAS;QAC7B,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAE3E,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;IAC5B,CAAC;IAED,6EAA6E;IAC7E,oBAAoB,CAAC,EAAU,EAAE,EAAU;QACvC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,yBAAyB,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAEvF,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC;IAChC,CAAC;IAED,wGAAwG;IACxG,MAAM;QACF,OAAO,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAW,CAAC;IAClD,CAAC;IAED,+DAA+D;IAC/D,iBAAiB;QACb,OAAO,sBAAsB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAW,CAAC;IAC7D,CAAC;IAED,2FAA2F;IAC3F,SAAS;QACL,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACpC,CAAC;IAED,yEAAyE;IACzE,oBAAoB,CAAC,OAAgB;QACjC,yBAAyB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;IAED,8EAA8E;IAC9E,QAAQ;QACJ,OAAO,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,CAA2B,EAAE,OAAO,CAAC,CAAC;IACzF,CAAC;IAED,gFAAgF;IAChF,gBAAgB;QACZ,qBAAqB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED,wGAAwG;IACxG,cAAc;QACV,OAAO,UAAU,CAAC,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,CAA2B,EAAE,OAAO,CAAC,CAAC;IAC/F,CAAC;IAED,kDAAkD;IAClD,WAAW,CAAC,QAAkB;QAC1B,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,oEAAoE;IACpE,WAAW;QACP,OAAO,UAAU,CAAC,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,CAA2B,EAAE,QAAQ,CAAC,CAAC;IAC7F,CAAC;IAED,2FAA2F;IAC3F,aAAa,CAAC,MAAc;QACxB,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,2DAA2D;IAC3D,aAAa;QACT,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;QACzC,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;QAE5C,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,uFAAuF;IACvF,aAAa,CAAC,UAAsB;QAChC,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,6DAA6D;IAC7D,aAAa;QACT,OAAO,UAAU,CAAC,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC,CAA2B,EAAE,UAAU,CAAC,CAAC;IACjG,CAAC;IAED,qDAAqD;IACrD,UAAU,CAAC,MAAoB;QAC3B,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAC9E,CAAC;IAED,kEAAkE;IAClE,SAAS,CAAC,MAAoB;QAC1B,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAC7E,CAAC;IAED,wDAAwD;IACxD,YAAY,CAAC,MAAoB;QAC7B,MAAM,OAAO,GAAG,gBAAgB,EAAE,CAAC;QACnC,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAErF,OAAO,eAAe,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAED,sDAAsD;IACtD,QAAQ;QACJ,OAAO,SAAS,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,CAA2B,CAAC,CAAC;IAC/E,CAAC;IAED,mFAAmF;IACnF,YAAY;QACR,OAAO,SAAS,CAAC,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,CAA2B,CAAC,CAAC;IACnF,CAAC;IAED,wEAAwE;IACxE,UAAU,CAAC,IAAgB;QACvB,KAAK,MAAM,OAAO,IAAI,IAAI,EAAE,CAAC;YACzB,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACjC,CAAC;IACL,CAAC;IAED,+FAA+F;IAC/F,QAAQ,CAAC,OAAe,EAAE,UAAkB;QACxC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IACxD,CAAC;IAED,qEAAqE;IACrE,MAAM,CAAC,OAAe;QAClB,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED,yGAAyG;IACzG,cAAc,CACV,IAAY,EACZ,MAAoB,EACpB,QAA4B,EAC5B,YAA8B;QAE9B,MAAM,WAAW,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC7C,MAAM,aAAa,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAEnD,mBAAmB,CACf,SAAS,CAAC,IAAI,CAAC,EACf,IAAI,EACJ,CAAC,CAAC,EACF,WAAW,EACX,MAAM,CAAC,MAAM,EACb,aAAa,EACb,QAAQ,CAAC,MAAM,EACf,YAAY,CACf,CAAC;IACN,CAAC;CACJ;AAED,OAAO,EAAE,OAAO,EAAE,CAAC","sourcesContent":["import {\n alloc,\n type ExternalObject,\n getHandle,\n type Handle,\n read,\n registerWrapperClass,\n setHandle,\n t,\n wrapHandle,\n} from \"@gtkx/runtime\";\nimport type {\n Antialias,\n Content,\n FillRule,\n FontSlant,\n FontWeight,\n LineCap,\n LineJoin,\n Operator,\n Status,\n TextClusterFlags,\n} from \"./enums.js\";\nimport type {\n CairoGlyph,\n CairoTextCluster,\n DashPattern,\n Distance,\n Extents,\n FontExtents,\n PathData,\n Point,\n RectangleData,\n TextExtents,\n} from \"./types.js\";\nimport { FontFace } from \"./font-face.js\";\nimport { FontOptions } from \"./font-options.js\";\nimport {\n bindCairo,\n type BoundFunction,\n cairoGType,\n CONTEXT_FULL_T,\n CONTEXT_T,\n DOUBLE_BUFFER_T,\n FONT_EXTENTS_T,\n FONT_FACE_T,\n FONT_OPTIONS_T,\n GLYPH_T,\n MATRIX_T,\n PATH_T,\n PATTERN_FULL_T,\n PATTERN_T,\n RECTANGLE_LIST_T,\n SCALED_FONT_T,\n SURFACE_T,\n TEXT_CLUSTER_T,\n TEXT_EXTENTS_T,\n} from \"./lib.js\";\nimport { allocMatrix, Matrix } from \"./matrix.js\";\nimport { parsePath } from \"./path.js\";\nimport { Pattern } from \"./pattern.js\";\nimport { ScaledFont } from \"./scaled-font.js\";\nimport { checkStatus } from \"./status.js\";\nimport { Surface } from \"./surface.js\";\nimport {\n allocClusterBuffer,\n allocFontExtents,\n allocGlyphBuffer,\n allocTextExtents,\n readFontExtents,\n readTextExtents,\n} from \"./text.js\";\n\nconst CONTEXT_TYPE = cairoGType(\"cairo_gobject_context_get_type\");\nconst RECTANGLE_SIZE = 32;\nconst RECTANGLE_LIST_COUNT_OFFSET = 16;\nconst DOUBLE = t.fieldAt(t.float64);\nconst RECTANGLE_LIST_COUNT = t.field(t.int32, RECTANGLE_LIST_COUNT_OFFSET);\nconst RECTANGLE_LIST_DATA_OFFSET = 8;\nconst POINT_ARGS = [CONTEXT_T, t.float64, t.float64];\nconst EXTENTS_ARGS = [CONTEXT_T, t.ref(t.float64), t.ref(t.float64), t.ref(t.float64), t.ref(t.float64)];\nconst COORD_ARGS = [CONTEXT_T, t.ref(t.float64), t.ref(t.float64)];\nconst CURVE_ARGS = [CONTEXT_T, t.float64, t.float64, t.float64, t.float64, t.float64, t.float64];\nconst ARC_ARGS = [CONTEXT_T, t.float64, t.float64, t.float64, t.float64, t.float64];\nconst cairoCreate = bindCairo(\"cairo_create\", [SURFACE_T], CONTEXT_FULL_T);\nconst cairoMoveTo = bindCairo(\"cairo_move_to\", POINT_ARGS, t.void);\nconst cairoLineTo = bindCairo(\"cairo_line_to\", POINT_ARGS, t.void);\nconst cairoRelMoveTo = bindCairo(\"cairo_rel_move_to\", POINT_ARGS, t.void);\nconst cairoRelLineTo = bindCairo(\"cairo_rel_line_to\", POINT_ARGS, t.void);\nconst cairoRelCurveTo = bindCairo(\"cairo_rel_curve_to\", CURVE_ARGS, t.void);\nconst cairoCurveTo = bindCairo(\"cairo_curve_to\", CURVE_ARGS, t.void);\nconst cairoArc = bindCairo(\"cairo_arc\", ARC_ARGS, t.void);\nconst cairoArcNegative = bindCairo(\"cairo_arc_negative\", ARC_ARGS, t.void);\nconst cairoRectangle = bindCairo(\"cairo_rectangle\", [CONTEXT_T, t.float64, t.float64, t.float64, t.float64], t.void);\nconst cairoClosePath = bindCairo(\"cairo_close_path\", [CONTEXT_T], t.void);\nconst cairoNewPath = bindCairo(\"cairo_new_path\", [CONTEXT_T], t.void);\nconst cairoNewSubPath = bindCairo(\"cairo_new_sub_path\", [CONTEXT_T], t.void);\nconst cairoStroke = bindCairo(\"cairo_stroke\", [CONTEXT_T], t.void);\nconst cairoStrokePreserve = bindCairo(\"cairo_stroke_preserve\", [CONTEXT_T], t.void);\nconst cairoFill = bindCairo(\"cairo_fill\", [CONTEXT_T], t.void);\nconst cairoFillPreserve = bindCairo(\"cairo_fill_preserve\", [CONTEXT_T], t.void);\nconst cairoPaint = bindCairo(\"cairo_paint\", [CONTEXT_T], t.void);\nconst cairoPaintWithAlpha = bindCairo(\"cairo_paint_with_alpha\", [CONTEXT_T, t.float64], t.void);\nconst cairoClip = bindCairo(\"cairo_clip\", [CONTEXT_T], t.void);\nconst cairoClipPreserve = bindCairo(\"cairo_clip_preserve\", [CONTEXT_T], t.void);\nconst cairoResetClip = bindCairo(\"cairo_reset_clip\", [CONTEXT_T], t.void);\nconst cairoSetSourceRgb = bindCairo(\"cairo_set_source_rgb\", [CONTEXT_T, t.float64, t.float64, t.float64], t.void);\n\nconst cairoSetSourceRgba = bindCairo(\n \"cairo_set_source_rgba\",\n [CONTEXT_T, t.float64, t.float64, t.float64, t.float64],\n t.void,\n);\n\nconst cairoSetSource = bindCairo(\"cairo_set_source\", [CONTEXT_T, PATTERN_T], t.void);\nconst cairoSetLineWidth = bindCairo(\"cairo_set_line_width\", [CONTEXT_T, t.float64], t.void);\nconst cairoGetLineWidth = bindCairo(\"cairo_get_line_width\", [CONTEXT_T], t.float64);\nconst cairoSetLineCap = bindCairo(\"cairo_set_line_cap\", [CONTEXT_T, t.int32], t.void);\nconst cairoGetLineCap = bindCairo(\"cairo_get_line_cap\", [CONTEXT_T], t.int32);\nconst cairoSetLineJoin = bindCairo(\"cairo_set_line_join\", [CONTEXT_T, t.int32], t.void);\nconst cairoGetLineJoin = bindCairo(\"cairo_get_line_join\", [CONTEXT_T], t.int32);\nconst cairoSetDash = bindCairo(\"cairo_set_dash\", [CONTEXT_T, DOUBLE_BUFFER_T, t.int32, t.float64], t.void);\nconst cairoGetDashCount = bindCairo(\"cairo_get_dash_count\", [CONTEXT_T], t.int32);\nconst cairoGetDash = bindCairo(\"cairo_get_dash\", [CONTEXT_T, DOUBLE_BUFFER_T, t.ref(t.float64)], t.void);\nconst cairoSetMiterLimit = bindCairo(\"cairo_set_miter_limit\", [CONTEXT_T, t.float64], t.void);\nconst cairoGetMiterLimit = bindCairo(\"cairo_get_miter_limit\", [CONTEXT_T], t.float64);\nconst cairoSetTolerance = bindCairo(\"cairo_set_tolerance\", [CONTEXT_T, t.float64], t.void);\nconst cairoGetTolerance = bindCairo(\"cairo_get_tolerance\", [CONTEXT_T], t.float64);\nconst cairoSetFillRule = bindCairo(\"cairo_set_fill_rule\", [CONTEXT_T, t.int32], t.void);\nconst cairoGetFillRule = bindCairo(\"cairo_get_fill_rule\", [CONTEXT_T], t.int32);\nconst cairoSave = bindCairo(\"cairo_save\", [CONTEXT_T], t.void);\nconst cairoRestore = bindCairo(\"cairo_restore\", [CONTEXT_T], t.void);\nconst cairoTranslate = bindCairo(\"cairo_translate\", POINT_ARGS, t.void);\nconst cairoScale = bindCairo(\"cairo_scale\", POINT_ARGS, t.void);\nconst cairoRotate = bindCairo(\"cairo_rotate\", [CONTEXT_T, t.float64], t.void);\nconst cairoSetOperator = bindCairo(\"cairo_set_operator\", [CONTEXT_T, t.int32], t.void);\nconst cairoGetOperator = bindCairo(\"cairo_get_operator\", [CONTEXT_T], t.int32);\n\nconst cairoSelectFontFace = bindCairo(\n \"cairo_select_font_face\",\n [CONTEXT_T, t.string(\"full\"), t.int32, t.int32],\n t.void,\n);\n\nconst cairoSetFontSize = bindCairo(\"cairo_set_font_size\", [CONTEXT_T, t.float64], t.void);\nconst cairoShowText = bindCairo(\"cairo_show_text\", [CONTEXT_T, t.string(\"full\")], t.void);\nconst cairoTextPath = bindCairo(\"cairo_text_path\", [CONTEXT_T, t.string(\"full\")], t.void);\nconst cairoTextExtents = bindCairo(\"cairo_text_extents\", [CONTEXT_T, t.string(\"full\"), TEXT_EXTENTS_T], t.void);\nconst cairoFontExtents = bindCairo(\"cairo_font_extents\", [CONTEXT_T, FONT_EXTENTS_T], t.void);\nconst cairoSetFontOptions = bindCairo(\"cairo_set_font_options\", [CONTEXT_T, FONT_OPTIONS_T], t.void);\nconst cairoGetFontOptions = bindCairo(\"cairo_get_font_options\", [CONTEXT_T, FONT_OPTIONS_T], t.void);\nconst cairoSetAntialias = bindCairo(\"cairo_set_antialias\", [CONTEXT_T, t.int32], t.void);\nconst cairoGetAntialias = bindCairo(\"cairo_get_antialias\", [CONTEXT_T], t.int32);\nconst cairoShowPage = bindCairo(\"cairo_show_page\", [CONTEXT_T], t.void);\nconst cairoCopyPage = bindCairo(\"cairo_copy_page\", [CONTEXT_T], t.void);\nconst cairoGetTarget = bindCairo(\"cairo_get_target\", [CONTEXT_T], SURFACE_T);\n\nconst cairoSetSourceSurface = bindCairo(\n \"cairo_set_source_surface\",\n [CONTEXT_T, SURFACE_T, t.float64, t.float64],\n t.void,\n);\n\nconst cairoHasCurrentPoint = bindCairo(\"cairo_has_current_point\", [CONTEXT_T], t.boolean);\nconst cairoGetCurrentPoint = bindCairo(\"cairo_get_current_point\", COORD_ARGS, t.void);\nconst cairoGetSource = bindCairo(\"cairo_get_source\", [CONTEXT_T], PATTERN_T);\nconst cairoStrokeExtents = bindCairo(\"cairo_stroke_extents\", EXTENTS_ARGS, t.void);\nconst cairoFillExtents = bindCairo(\"cairo_fill_extents\", EXTENTS_ARGS, t.void);\nconst cairoClipExtents = bindCairo(\"cairo_clip_extents\", EXTENTS_ARGS, t.void);\nconst cairoPathExtents = bindCairo(\"cairo_path_extents\", EXTENTS_ARGS, t.void);\nconst cairoInStroke = bindCairo(\"cairo_in_stroke\", POINT_ARGS, t.boolean);\nconst cairoInFill = bindCairo(\"cairo_in_fill\", POINT_ARGS, t.boolean);\nconst cairoInClip = bindCairo(\"cairo_in_clip\", POINT_ARGS, t.boolean);\nconst cairoCopyClipRectangleList = bindCairo(\"cairo_copy_clip_rectangle_list\", [CONTEXT_T], RECTANGLE_LIST_T);\nconst cairoMask = bindCairo(\"cairo_mask\", [CONTEXT_T, PATTERN_T], t.void);\nconst cairoMaskSurface = bindCairo(\"cairo_mask_surface\", [CONTEXT_T, SURFACE_T, t.float64, t.float64], t.void);\nconst cairoSetMatrix = bindCairo(\"cairo_set_matrix\", [CONTEXT_T, MATRIX_T], t.void);\nconst cairoGetMatrix = bindCairo(\"cairo_get_matrix\", [CONTEXT_T, MATRIX_T], t.void);\nconst cairoTransform = bindCairo(\"cairo_transform\", [CONTEXT_T, MATRIX_T], t.void);\nconst cairoIdentityMatrix = bindCairo(\"cairo_identity_matrix\", [CONTEXT_T], t.void);\nconst cairoUserToDevice = bindCairo(\"cairo_user_to_device\", COORD_ARGS, t.void);\nconst cairoUserToDeviceDistance = bindCairo(\"cairo_user_to_device_distance\", COORD_ARGS, t.void);\nconst cairoDeviceToUser = bindCairo(\"cairo_device_to_user\", COORD_ARGS, t.void);\nconst cairoDeviceToUserDistance = bindCairo(\"cairo_device_to_user_distance\", COORD_ARGS, t.void);\nconst cairoStatus = bindCairo(\"cairo_status\", [CONTEXT_T], t.int32);\nconst cairoGetReferenceCount = bindCairo(\"cairo_get_reference_count\", [CONTEXT_T], t.int32);\nconst cairoPushGroup = bindCairo(\"cairo_push_group\", [CONTEXT_T], t.void);\nconst cairoPushGroupWithContent = bindCairo(\"cairo_push_group_with_content\", [CONTEXT_T, t.int32], t.void);\nconst cairoPopGroup = bindCairo(\"cairo_pop_group\", [CONTEXT_T], PATTERN_FULL_T);\nconst cairoPopGroupToSource = bindCairo(\"cairo_pop_group_to_source\", [CONTEXT_T], t.void);\nconst cairoGetGroupTarget = bindCairo(\"cairo_get_group_target\", [CONTEXT_T], SURFACE_T);\nconst cairoSetFontFace = bindCairo(\"cairo_set_font_face\", [CONTEXT_T, FONT_FACE_T], t.void);\nconst cairoGetFontFace = bindCairo(\"cairo_get_font_face\", [CONTEXT_T], FONT_FACE_T);\nconst cairoSetFontMatrix = bindCairo(\"cairo_set_font_matrix\", [CONTEXT_T, MATRIX_T], t.void);\nconst cairoGetFontMatrix = bindCairo(\"cairo_get_font_matrix\", [CONTEXT_T, MATRIX_T], t.void);\nconst cairoSetScaledFont = bindCairo(\"cairo_set_scaled_font\", [CONTEXT_T, SCALED_FONT_T], t.void);\nconst cairoGetScaledFont = bindCairo(\"cairo_get_scaled_font\", [CONTEXT_T], SCALED_FONT_T);\nconst cairoShowGlyphs = bindCairo(\"cairo_show_glyphs\", [CONTEXT_T, GLYPH_T, t.int32], t.void);\nconst cairoGlyphPath = bindCairo(\"cairo_glyph_path\", [CONTEXT_T, GLYPH_T, t.int32], t.void);\nconst cairoGlyphExtents = bindCairo(\"cairo_glyph_extents\", [CONTEXT_T, GLYPH_T, t.int32, TEXT_EXTENTS_T], t.void);\nconst cairoCopyPath = bindCairo(\"cairo_copy_path\", [CONTEXT_T], PATH_T);\nconst cairoCopyPathFlat = bindCairo(\"cairo_copy_path_flat\", [CONTEXT_T], PATH_T);\nconst cairoTagBegin = bindCairo(\"cairo_tag_begin\", [CONTEXT_T, t.string(\"full\"), t.string(\"full\")], t.void);\nconst cairoTagEnd = bindCairo(\"cairo_tag_end\", [CONTEXT_T, t.string(\"full\")], t.void);\n\nconst cairoShowTextGlyphs = bindCairo(\n \"cairo_show_text_glyphs\",\n [CONTEXT_T, t.string(\"full\"), t.int32, GLYPH_T, t.int32, TEXT_CLUSTER_T, t.int32, t.int32],\n t.void,\n);\n\nconst readExtents = (handle: ExternalObject<Handle>, boundFn: BoundFunction): Extents => {\n const x1Ref = { value: 0 };\n const y1Ref = { value: 0 };\n const x2Ref = { value: 0 };\n const y2Ref = { value: 0 };\n boundFn(handle, x1Ref, y1Ref, x2Ref, y2Ref);\n\n return { x1: x1Ref.value, y1: y1Ref.value, x2: x2Ref.value, y2: y2Ref.value };\n};\n\nconst transformCoords = (\n handle: ExternalObject<Handle>,\n boundFn: BoundFunction,\n a: number,\n b: number,\n): [number, number] => {\n const aRef = { value: a };\n const bRef = { value: b };\n boundFn(handle, aRef, bRef);\n\n return [aRef.value, bRef.value];\n};\n\nconst allocDashBuffer = (dashes: number[]): ExternalObject<Handle> => {\n const buffer = alloc(dashes.length * 8);\n\n for (const [index, dash] of dashes.entries()) {\n DOUBLE.write(buffer, index * 8, dash);\n }\n\n return buffer;\n};\n\nconst readDashes = (buffer: ExternalObject<Handle>, count: number): number[] =>\n Array.from({ length: count }, (_, index) => DOUBLE.read(buffer, index * 8) as number);\n\nconst readRectangle = (rects: ExternalObject<Handle>, base: number): RectangleData => ({\n x: DOUBLE.read(rects, base) as number,\n y: DOUBLE.read(rects, base + 8) as number,\n width: DOUBLE.read(rects, base + 16) as number,\n height: DOUBLE.read(rects, base + 24) as number,\n});\n\nconst readRectangleList = (listHandle: ExternalObject<Handle>): RectangleData[] => {\n const count = RECTANGLE_LIST_COUNT.read(listHandle) as number;\n\n if (count === 0) {\n return [];\n }\n\n const rects = read(\n listHandle,\n t.struct(\"borrowed\", { size: count * RECTANGLE_SIZE }),\n RECTANGLE_LIST_DATA_OFFSET,\n ) as ExternalObject<Handle>;\n\n return Array.from({ length: count }, (_, index) => readRectangle(rects, index * RECTANGLE_SIZE));\n};\n\nconst appendSegment = (ctx: Context, segment: PathData): void => {\n switch (segment.type) {\n case \"moveTo\": {\n ctx.moveTo(segment.x, segment.y);\n\n return;\n }\n case \"lineTo\": {\n ctx.lineTo(segment.x, segment.y);\n\n return;\n }\n case \"curveTo\": {\n ctx.curveTo(segment.x1, segment.y1, segment.x2, segment.y2, segment.x3, segment.y3);\n\n return;\n }\n case \"closePath\": {\n ctx.closePath();\n }\n }\n};\n\n/**\n * A cairo drawing context (`cairo_t`): the object every drawing operation goes through, holding the current\n * path, source, transformation, clip and font state for one target surface. GTK hands one to draw callbacks\n * and snapshots, and `new Context(surface)` creates one for offscreen drawing.\n */\nclass Context {\n static {\n registerWrapperClass(this, CONTEXT_TYPE);\n }\n\n /** Creates a context drawing onto `target`, the same as `new Context(target)`. */\n static create(target: Surface): Context {\n return new Context(target);\n }\n\n /** GType of `CairoContext`, the boxed type this class is registered under. */\n declare __type__: bigint;\n\n /** Creates a context drawing onto `target`, throwing when it cannot be created, such as on a finished surface. */\n constructor(target: Surface) {\n const handle = cairoCreate(getHandle(target)) as ExternalObject<Handle>;\n checkStatus(cairoStatus(handle) as Status, \"context\");\n setHandle(this, handle);\n }\n\n /** Begins a new sub-path at `(x, y)`, which becomes the current point. */\n moveTo(x: number, y: number): void {\n cairoMoveTo(getHandle(this), x, y);\n }\n\n /** Adds a straight line from the current point to `(x, y)`. */\n lineTo(x: number, y: number): void {\n cairoLineTo(getHandle(this), x, y);\n }\n\n /** Begins a new sub-path offset from the current point by `(dx, dy)`. */\n relMoveTo(dx: number, dy: number): void {\n cairoRelMoveTo(getHandle(this), dx, dy);\n }\n\n /** Adds a straight line from the current point to the point offset by `(dx, dy)`. */\n relLineTo(dx: number, dy: number): void {\n cairoRelLineTo(getHandle(this), dx, dy);\n }\n\n /** Adds a cubic Bézier curve whose control points and end point are offsets from the current point. */\n relCurveTo(dx1: number, dy1: number, dx2: number, dy2: number, dx3: number, dy3: number): void {\n cairoRelCurveTo(getHandle(this), dx1, dy1, dx2, dy2, dx3, dy3);\n }\n\n /** Adds a cubic Bézier curve from the current point through two control points to `(x3, y3)`. */\n curveTo(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number): void {\n cairoCurveTo(getHandle(this), x1, y1, x2, y2, x3, y3);\n }\n\n /** Adds a circular arc centred on `(xc, yc)`, drawn clockwise from `angle1` to `angle2`. */\n arc(xc: number, yc: number, radius: number, angle1: number, angle2: number): void {\n cairoArc(getHandle(this), xc, yc, radius, angle1, angle2);\n }\n\n /** Adds a circular arc centred on `(xc, yc)`, drawn counter-clockwise from `angle1` to `angle2`. */\n arcNegative(xc: number, yc: number, radius: number, angle1: number, angle2: number): void {\n cairoArcNegative(getHandle(this), xc, yc, radius, angle1, angle2);\n }\n\n /** Adds a closed rectangular sub-path. */\n rectangle(x: number, y: number, width: number, height: number): void {\n cairoRectangle(getHandle(this), x, y, width, height);\n }\n\n /** Closes the current sub-path with a line back to its start. */\n closePath(): void {\n cairoClosePath(getHandle(this));\n }\n\n /** Clears the current path. */\n newPath(): void {\n cairoNewPath(getHandle(this));\n }\n\n /** Begins a new sub-path without a current point, so the next `arc` needs no leading `moveTo`. */\n newSubPath(): void {\n cairoNewSubPath(getHandle(this));\n }\n\n /** Strokes the current path with the current line settings and clears it. */\n stroke(): void {\n cairoStroke(getHandle(this));\n }\n\n /** Strokes the current path and keeps it. */\n strokePreserve(): void {\n cairoStrokePreserve(getHandle(this));\n }\n\n /** Fills the current path with the current fill rule and clears it. */\n fill(): void {\n cairoFill(getHandle(this));\n }\n\n /** Fills the current path and keeps it. */\n fillPreserve(): void {\n cairoFillPreserve(getHandle(this));\n }\n\n /** Paints the current source everywhere inside the clip. */\n paint(): void {\n cairoPaint(getHandle(this));\n }\n\n /** Paints the current source everywhere inside the clip, faded by `alpha`. */\n paintWithAlpha(alpha: number): void {\n cairoPaintWithAlpha(getHandle(this), alpha);\n }\n\n /** Intersects the clip with the current path and clears the path. */\n clip(): void {\n cairoClip(getHandle(this));\n }\n\n /** Intersects the clip with the current path and keeps the path. */\n clipPreserve(): void {\n cairoClipPreserve(getHandle(this));\n }\n\n /** Removes the clip, so drawing reaches the whole surface again. */\n resetClip(): void {\n cairoResetClip(getHandle(this));\n }\n\n /** Sets the source to an opaque color with components in the 0 to 1 range. */\n setSourceRgb(red: number, green: number, blue: number): void {\n cairoSetSourceRgb(getHandle(this), red, green, blue);\n }\n\n /** Sets the source to a translucent color with components in the 0 to 1 range. */\n setSourceRgba(red: number, green: number, blue: number, alpha: number): void {\n cairoSetSourceRgba(getHandle(this), red, green, blue, alpha);\n }\n\n /** Sets the source pattern drawing operations paint with. */\n setSource(pattern: Pattern): void {\n cairoSetSource(getHandle(this), getHandle(pattern));\n }\n\n /** Sets the width of stroked lines in user space. */\n setLineWidth(width: number): void {\n cairoSetLineWidth(getHandle(this), width);\n }\n\n /** Returns the width of stroked lines. */\n getLineWidth(): number {\n return cairoGetLineWidth(getHandle(this)) as number;\n }\n\n /** Sets how the ends of stroked lines are drawn. */\n setLineCap(lineCap: LineCap): void {\n cairoSetLineCap(getHandle(this), lineCap);\n }\n\n /** Returns how the ends of stroked lines are drawn. */\n getLineCap(): LineCap {\n return cairoGetLineCap(getHandle(this)) as LineCap;\n }\n\n /** Sets how the corners of stroked lines are joined. */\n setLineJoin(lineJoin: LineJoin): void {\n cairoSetLineJoin(getHandle(this), lineJoin);\n }\n\n /** Returns how the corners of stroked lines are joined. */\n getLineJoin(): LineJoin {\n return cairoGetLineJoin(getHandle(this)) as LineJoin;\n }\n\n /** Sets the dash pattern of strokes as alternating on and off lengths; an empty list draws solid lines. */\n setDash(dashes: number[], offset: number): void {\n cairoSetDash(getHandle(this), allocDashBuffer(dashes), dashes.length, offset);\n }\n\n /** Returns how many lengths the dash pattern has, zero for a solid line. */\n getDashCount(): number {\n return cairoGetDashCount(getHandle(this)) as number;\n }\n\n /** Returns the dash pattern and its offset. */\n getDash(): DashPattern {\n const count = this.getDashCount();\n\n if (count === 0) {\n return { dashes: [], offset: 0 };\n }\n\n const buffer = alloc(count * 8);\n const offsetRef = { value: 0 };\n cairoGetDash(getHandle(this), buffer, offsetRef);\n\n return { dashes: readDashes(buffer, count), offset: offsetRef.value };\n }\n\n /** Sets the miter limit above which a mitered join is drawn beveled. */\n setMiterLimit(limit: number): void {\n cairoSetMiterLimit(getHandle(this), limit);\n }\n\n /** Returns the miter limit. */\n getMiterLimit(): number {\n return cairoGetMiterLimit(getHandle(this)) as number;\n }\n\n /** Sets the tolerance used when curves are flattened into line segments. */\n setTolerance(tolerance: number): void {\n cairoSetTolerance(getHandle(this), tolerance);\n }\n\n /** Returns the tolerance used when curves are flattened. */\n getTolerance(): number {\n return cairoGetTolerance(getHandle(this)) as number;\n }\n\n /** Sets the rule deciding which areas a self-intersecting path fills. */\n setFillRule(fillRule: FillRule): void {\n cairoSetFillRule(getHandle(this), fillRule);\n }\n\n /** Returns the fill rule. */\n getFillRule(): FillRule {\n return cairoGetFillRule(getHandle(this)) as FillRule;\n }\n\n /** Pushes the current drawing state (source, transformation, clip, line and font settings) onto a stack. */\n save(): void {\n cairoSave(getHandle(this));\n }\n\n /** Restores the drawing state saved by the matching `save`. */\n restore(): void {\n cairoRestore(getHandle(this));\n }\n\n /** Moves the user-space origin by `(tx, ty)`. */\n translate(tx: number, ty: number): void {\n cairoTranslate(getHandle(this), tx, ty);\n }\n\n /** Scales user space by `sx` and `sy`. */\n scale(sx: number, sy: number): void {\n cairoScale(getHandle(this), sx, sy);\n }\n\n /** Rotates user space by `angle` radians. */\n rotate(angle: number): void {\n cairoRotate(getHandle(this), angle);\n }\n\n /** Sets the compositing operator used by drawing operations. */\n setOperator(op: Operator): void {\n cairoSetOperator(getHandle(this), op);\n }\n\n /** Returns the compositing operator. */\n getOperator(): Operator {\n return cairoGetOperator(getHandle(this)) as Operator;\n }\n\n /** Selects a toy font face by family name, slant and weight. */\n selectFontFace(family: string, slant: FontSlant, weight: FontWeight): void {\n cairoSelectFontFace(getHandle(this), family, slant, weight);\n }\n\n /** Sets the font size in user space, replacing the font matrix with a uniform scale. */\n setFontSize(size: number): void {\n cairoSetFontSize(getHandle(this), size);\n }\n\n /** Draws `text` with the current font at the current point. */\n showText(text: string): void {\n cairoShowText(getHandle(this), text);\n }\n\n /** Adds the outlines of `text` to the current path. */\n textPath(text: string): void {\n cairoTextPath(getHandle(this), text);\n }\n\n /** Measures `text` with the current font. */\n textExtents(text: string): TextExtents {\n const extents = allocTextExtents();\n cairoTextExtents(getHandle(this), text, extents);\n\n return readTextExtents(extents);\n }\n\n /** Returns the metrics of the current font. */\n fontExtents(): FontExtents {\n const extents = allocFontExtents();\n cairoFontExtents(getHandle(this), extents);\n\n return readFontExtents(extents);\n }\n\n /** Sets the font rendering options merged over the surface's defaults. */\n setFontOptions(options: FontOptions): void {\n cairoSetFontOptions(getHandle(this), getHandle(options));\n }\n\n /** Returns a copy of the font rendering options set on the context. */\n getFontOptions(): FontOptions {\n const options = FontOptions.create();\n cairoGetFontOptions(getHandle(this), getHandle(options));\n\n return options;\n }\n\n /** Sets the antialiasing mode of the rasterizer. */\n setAntialias(antialias: Antialias): void {\n cairoSetAntialias(getHandle(this), antialias);\n }\n\n /** Returns the antialiasing mode. */\n getAntialias(): Antialias {\n return cairoGetAntialias(getHandle(this)) as Antialias;\n }\n\n /** Emits the current page and clears it, on surfaces that support pages. */\n showPage(): void {\n cairoShowPage(getHandle(this));\n }\n\n /** Emits the current page without clearing it, on surfaces that support pages. */\n copyPage(): void {\n cairoCopyPage(getHandle(this));\n }\n\n /** Returns the surface the context was created for, wrapped as its concrete class. */\n getTarget(): Surface {\n return wrapHandle(cairoGetTarget(getHandle(this)) as ExternalObject<Handle>, Surface);\n }\n\n /** Sets the source to `surface` placed with its origin at `(x, y)` in user space. */\n setSourceSurface(surface: Surface, x: number, y: number): void {\n cairoSetSourceSurface(getHandle(this), getHandle(surface), x, y);\n }\n\n /** Returns whether the path has a current point. */\n hasCurrentPoint(): boolean {\n return cairoHasCurrentPoint(getHandle(this)) as boolean;\n }\n\n /** Returns the current point of the path, or null when there is none. */\n getCurrentPoint(): Point | null {\n if (!this.hasCurrentPoint()) {\n return null;\n }\n\n const xRef = { value: 0 };\n const yRef = { value: 0 };\n cairoGetCurrentPoint(getHandle(this), xRef, yRef);\n\n return { x: xRef.value, y: yRef.value };\n }\n\n /** Returns the current source pattern, wrapped as its concrete class. */\n getSource(): Pattern {\n return wrapHandle(cairoGetSource(getHandle(this)) as ExternalObject<Handle>, Pattern);\n }\n\n /** Returns the bounding box a `stroke` of the current path would cover. */\n strokeExtents(): Extents {\n return readExtents(getHandle(this), cairoStrokeExtents);\n }\n\n /** Returns the bounding box a `fill` of the current path would cover. */\n fillExtents(): Extents {\n return readExtents(getHandle(this), cairoFillExtents);\n }\n\n /** Returns the bounding box of the current clip. */\n clipExtents(): Extents {\n return readExtents(getHandle(this), cairoClipExtents);\n }\n\n /** Returns the bounding box of the current path. */\n pathExtents(): Extents {\n return readExtents(getHandle(this), cairoPathExtents);\n }\n\n /** Returns whether `(x, y)` lies inside the area a `stroke` of the current path would cover. */\n inStroke(x: number, y: number): boolean {\n return cairoInStroke(getHandle(this), x, y) as boolean;\n }\n\n /** Returns whether `(x, y)` lies inside the area a `fill` of the current path would cover. */\n inFill(x: number, y: number): boolean {\n return cairoInFill(getHandle(this), x, y) as boolean;\n }\n\n /** Returns whether `(x, y)` lies inside the current clip. */\n inClip(x: number, y: number): boolean {\n return cairoInClip(getHandle(this), x, y) as boolean;\n }\n\n /** Returns the current clip as a list of rectangles in user space. */\n copyClipRectangleList(): RectangleData[] {\n return readRectangleList(cairoCopyClipRectangleList(getHandle(this)) as ExternalObject<Handle>);\n }\n\n /** Paints the current source using the alpha channel of `pattern` as a mask. */\n mask(pattern: Pattern): void {\n cairoMask(getHandle(this), getHandle(pattern));\n }\n\n /** Paints the current source using the alpha channel of `surface`, placed at `(x, y)`, as a mask. */\n maskSurface(surface: Surface, x: number, y: number): void {\n cairoMaskSurface(getHandle(this), getHandle(surface), x, y);\n }\n\n /** Replaces the transformation from user space to device space. */\n setMatrix(matrix: Matrix): void {\n cairoSetMatrix(getHandle(this), getHandle(matrix));\n }\n\n /** Returns the transformation from user space to device space. */\n getMatrix(): Matrix {\n const { handle, matrix } = allocMatrix();\n cairoGetMatrix(getHandle(this), handle);\n\n return matrix;\n }\n\n /** Applies `matrix` before the existing transformation. */\n transform(matrix: Matrix): void {\n cairoTransform(getHandle(this), getHandle(matrix));\n }\n\n /** Resets the transformation to the identity. */\n identityMatrix(): void {\n cairoIdentityMatrix(getHandle(this));\n }\n\n /** Maps a point from user space to device space. */\n userToDevice(x: number, y: number): Point {\n const [px, py] = transformCoords(getHandle(this), cairoUserToDevice, x, y);\n\n return { x: px, y: py };\n }\n\n /** Maps a distance from user space to device space, ignoring translation. */\n userToDeviceDistance(dx: number, dy: number): Distance {\n const [ddx, ddy] = transformCoords(getHandle(this), cairoUserToDeviceDistance, dx, dy);\n\n return { dx: ddx, dy: ddy };\n }\n\n /** Maps a point from device space to user space. */\n deviceToUser(x: number, y: number): Point {\n const [px, py] = transformCoords(getHandle(this), cairoDeviceToUser, x, y);\n\n return { x: px, y: py };\n }\n\n /** Maps a distance from device space to user space, ignoring translation. */\n deviceToUserDistance(dx: number, dy: number): Distance {\n const [ddx, ddy] = transformCoords(getHandle(this), cairoDeviceToUserDistance, dx, dy);\n\n return { dx: ddx, dy: ddy };\n }\n\n /** Returns the error status of the context, `Status.SUCCESS` while every operation so far succeeded. */\n status(): Status {\n return cairoStatus(getHandle(this)) as Status;\n }\n\n /** Returns the reference count of the underlying `cairo_t`. */\n getReferenceCount(): number {\n return cairoGetReferenceCount(getHandle(this)) as number;\n }\n\n /** Redirects drawing to an intermediate surface until `popGroup` or `popGroupToSource`. */\n pushGroup(): void {\n cairoPushGroup(getHandle(this));\n }\n\n /** Redirects drawing to an intermediate surface of the given content. */\n pushGroupWithContent(content: Content): void {\n cairoPushGroupWithContent(getHandle(this), content);\n }\n\n /** Ends the current group and returns what was drawn into it as a pattern. */\n popGroup(): Pattern {\n return wrapHandle(cairoPopGroup(getHandle(this)) as ExternalObject<Handle>, Pattern);\n }\n\n /** Ends the current group and installs what was drawn into it as the source. */\n popGroupToSource(): void {\n cairoPopGroupToSource(getHandle(this));\n }\n\n /** Returns the surface drawing currently goes to: the group surface inside a group, else the target. */\n getGroupTarget(): Surface {\n return wrapHandle(cairoGetGroupTarget(getHandle(this)) as ExternalObject<Handle>, Surface);\n }\n\n /** Sets the font face used by text operations. */\n setFontFace(fontFace: FontFace): void {\n cairoSetFontFace(getHandle(this), getHandle(fontFace));\n }\n\n /** Returns the current font face, wrapped as its concrete class. */\n getFontFace(): FontFace {\n return wrapHandle(cairoGetFontFace(getHandle(this)) as ExternalObject<Handle>, FontFace);\n }\n\n /** Sets the matrix mapping font space to user space, which sizes and shapes the glyphs. */\n setFontMatrix(matrix: Matrix): void {\n cairoSetFontMatrix(getHandle(this), getHandle(matrix));\n }\n\n /** Returns the matrix mapping font space to user space. */\n getFontMatrix(): Matrix {\n const { handle, matrix } = allocMatrix();\n cairoGetFontMatrix(getHandle(this), handle);\n\n return matrix;\n }\n\n /** Replaces the font face, font matrix and font options with those of `scaledFont`. */\n setScaledFont(scaledFont: ScaledFont): void {\n cairoSetScaledFont(getHandle(this), getHandle(scaledFont));\n }\n\n /** Returns the scaled font text operations currently use. */\n getScaledFont(): ScaledFont {\n return wrapHandle(cairoGetScaledFont(getHandle(this)) as ExternalObject<Handle>, ScaledFont);\n }\n\n /** Draws positioned glyphs with the current font. */\n showGlyphs(glyphs: CairoGlyph[]): void {\n cairoShowGlyphs(getHandle(this), allocGlyphBuffer(glyphs), glyphs.length);\n }\n\n /** Adds the outlines of positioned glyphs to the current path. */\n glyphPath(glyphs: CairoGlyph[]): void {\n cairoGlyphPath(getHandle(this), allocGlyphBuffer(glyphs), glyphs.length);\n }\n\n /** Measures positioned glyphs with the current font. */\n glyphExtents(glyphs: CairoGlyph[]): TextExtents {\n const extents = allocTextExtents();\n cairoGlyphExtents(getHandle(this), allocGlyphBuffer(glyphs), glyphs.length, extents);\n\n return readTextExtents(extents);\n }\n\n /** Returns a copy of the current path as segments. */\n copyPath(): PathData[] {\n return parsePath(cairoCopyPath(getHandle(this)) as ExternalObject<Handle>);\n }\n\n /** Returns a copy of the current path with curves flattened into line segments. */\n copyPathFlat(): PathData[] {\n return parsePath(cairoCopyPathFlat(getHandle(this)) as ExternalObject<Handle>);\n }\n\n /** Appends segments, as returned by `copyPath`, to the current path. */\n appendPath(data: PathData[]): void {\n for (const segment of data) {\n appendSegment(this, segment);\n }\n }\n\n /** Opens a tagged structure, such as a link or a destination, on surfaces that record tags. */\n tagBegin(tagName: string, attributes: string): void {\n cairoTagBegin(getHandle(this), tagName, attributes);\n }\n\n /** Closes the tagged structure opened by the matching `tagBegin`. */\n tagEnd(tagName: string): void {\n cairoTagEnd(getHandle(this), tagName);\n }\n\n /** Draws glyphs together with the text and clusters they came from, so the backend can keep the text. */\n showTextGlyphs(\n text: string,\n glyphs: CairoGlyph[],\n clusters: CairoTextCluster[],\n clusterFlags: TextClusterFlags,\n ): void {\n const glyphBuffer = allocGlyphBuffer(glyphs);\n const clusterBuffer = allocClusterBuffer(clusters);\n\n cairoShowTextGlyphs(\n getHandle(this),\n text,\n -1,\n glyphBuffer,\n glyphs.length,\n clusterBuffer,\n clusters.length,\n clusterFlags,\n );\n }\n}\n\nexport { Context };\n"]}
|
package/dist/font-face.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { type ExternalObject, type Handle } from "@gtkx/runtime";
|
|
2
1
|
import { type FontSlant, FontType, type FontWeight, type Status } from "./enums.js";
|
|
3
2
|
/** One of the `FtSynthesize` styles a FreeType font face synthesizes. */
|
|
4
3
|
type FtSynthesize = (typeof FtSynthesize)[keyof typeof FtSynthesize];
|
|
@@ -14,16 +13,12 @@ declare const FtSynthesize: {
|
|
|
14
13
|
};
|
|
15
14
|
/**
|
|
16
15
|
* A cairo font face (`cairo_font_face_t`): a typeface independent of size and transformation. Font faces come
|
|
17
|
-
* from
|
|
16
|
+
* from `create` or a context, and wrap as the concrete class their type reports
|
|
18
17
|
* (`instanceof ToyFontFace` after `selectFontFace`).
|
|
19
18
|
*/
|
|
20
19
|
declare abstract class FontFace {
|
|
21
20
|
/** Creates a toy font face from a family name, slant and weight. */
|
|
22
21
|
static create(family: string, slant: FontSlant, weight: FontWeight): ToyFontFace;
|
|
23
|
-
/** Creates a font face for a FreeType `FT_Face` handle, with the given `FT_LOAD_*` flags. */
|
|
24
|
-
static createForFtFace(face: ExternalObject<Handle>, loadFlags: number): FtFontFace;
|
|
25
|
-
/** Creates a font face for a fontconfig `FcPattern` handle. */
|
|
26
|
-
static createForPattern(pattern: ExternalObject<Handle>): FtFontFace;
|
|
27
22
|
/** GType of `CairoFontFace`, the boxed type this class is registered under. */
|
|
28
23
|
__type__: bigint;
|
|
29
24
|
/** Returns the error status of the font face, `Status.SUCCESS` when it is usable. */
|
|
@@ -42,7 +37,7 @@ declare class ToyFontFace extends FontFace {
|
|
|
42
37
|
/** Returns the weight the font face was created with. */
|
|
43
38
|
getWeight(): FontWeight;
|
|
44
39
|
}
|
|
45
|
-
/** A FreeType font face
|
|
40
|
+
/** A FreeType font face returned by Cairo or another native library. */
|
|
46
41
|
declare class FtFontFace extends FontFace {
|
|
47
42
|
/** Returns the styles currently synthesized for the font face. */
|
|
48
43
|
getSynthesize(): FtSynthesize;
|
package/dist/font-face.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"font-face.d.ts","sourceRoot":"","sources":["../src/font-face.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"font-face.d.ts","sourceRoot":"","sources":["../src/font-face.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,KAAK,SAAS,EAAE,QAAQ,EAAE,KAAK,UAAU,EAAE,KAAK,MAAM,EAAE,MAAM,YAAY,CAAC;AAGpF,yEAAyE;AACzE,KAAK,YAAY,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,OAAO,YAAY,CAAC,CAAC;AAwBrE;;;GAGG;AACH,QAAA,MAAM,YAAY;IACd,2BAA2B;;IAE3B,wBAAwB;;CAElB,CAAC;AAgBX;;;;GAIG;AACH,uBAAe,QAAQ;IAMnB,oEAAoE;IACpE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,WAAW;IAIhF,+EAA+E;IACvE,QAAQ,EAAE,MAAM,CAAC;IAEzB,qFAAqF;IACrF,MAAM,IAAI,MAAM;IAIhB,oDAAoD;IACpD,OAAO,IAAI,QAAQ;IAInB,oDAAoD;IACpD,iBAAiB,IAAI,MAAM;CAG9B;AAED,uFAAuF;AACvF,cAAM,WAAY,SAAQ,QAAQ;IAC9B,8DAA8D;IAC9D,SAAS,IAAI,MAAM;IAInB,wDAAwD;IACxD,QAAQ,IAAI,SAAS;IAIrB,yDAAyD;IACzD,SAAS,IAAI,UAAU;CAG1B;AAED,wEAAwE;AACxE,cAAM,UAAW,SAAQ,QAAQ;IAC7B,kEAAkE;IAClE,aAAa,IAAI,YAAY;IAI7B,gDAAgD;IAChD,aAAa,CAAC,UAAU,EAAE,YAAY,GAAG,IAAI;IAI7C,iDAAiD;IACjD,eAAe,CAAC,UAAU,EAAE,YAAY,GAAG,IAAI;CAGlD;AAED,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC"}
|
package/dist/font-face.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { getHandle, registerWrapperClass, registerWrapperClassResolver, t, wrapHandle, } from "@gtkx/runtime";
|
|
2
2
|
import { FontType } from "./enums.js";
|
|
3
|
-
import { bindCairo, cairoGType,
|
|
3
|
+
import { bindCairo, cairoGType, FONT_FACE_FULL_T, FONT_FACE_T } from "./lib.js";
|
|
4
4
|
const FONT_FACE_TYPE = cairoGType("cairo_gobject_font_face_get_type");
|
|
5
5
|
const cairoFontFaceStatus = bindCairo("cairo_font_face_status", [FONT_FACE_T], t.int32);
|
|
6
6
|
const cairoFontFaceGetType = bindCairo("cairo_font_face_get_type", [FONT_FACE_T], t.int32);
|
|
@@ -10,9 +10,7 @@ const cairoToyFontFaceGetWeight = bindCairo("cairo_toy_font_face_get_weight", [F
|
|
|
10
10
|
const cairoFtFontFaceGetSynthesize = bindCairo("cairo_ft_font_face_get_synthesize", [FONT_FACE_T], t.int32);
|
|
11
11
|
const cairoFtFontFaceSetSynthesize = bindCairo("cairo_ft_font_face_set_synthesize", [FONT_FACE_T, t.int32], t.void);
|
|
12
12
|
const cairoToyFontFaceGetFamily = bindCairo("cairo_toy_font_face_get_family", [FONT_FACE_T], t.string("borrowed"));
|
|
13
|
-
const cairoFtFontFaceCreateForPattern = bindCairo("cairo_ft_font_face_create_for_pattern", [FC_PATTERN_T], FONT_FACE_FULL_T);
|
|
14
13
|
const cairoToyFontFaceCreate = bindCairo("cairo_toy_font_face_create", [t.string("full"), t.int32, t.int32], FONT_FACE_FULL_T);
|
|
15
|
-
const cairoFtFontFaceCreateForFtFace = bindCairo("cairo_ft_font_face_create_for_ft_face", [FT_FACE_T, t.int32], FONT_FACE_FULL_T);
|
|
16
14
|
const cairoFtFontFaceUnsetSynthesize = bindCairo("cairo_ft_font_face_unset_synthesize", [FONT_FACE_T, t.int32], t.void);
|
|
17
15
|
/**
|
|
18
16
|
* Styles a FreeType font face synthesizes when the font itself lacks them.
|
|
@@ -36,7 +34,7 @@ const fontFaceClassFor = (handle) => {
|
|
|
36
34
|
};
|
|
37
35
|
/**
|
|
38
36
|
* A cairo font face (`cairo_font_face_t`): a typeface independent of size and transformation. Font faces come
|
|
39
|
-
* from
|
|
37
|
+
* from `create` or a context, and wrap as the concrete class their type reports
|
|
40
38
|
* (`instanceof ToyFontFace` after `selectFontFace`).
|
|
41
39
|
*/
|
|
42
40
|
class FontFace {
|
|
@@ -48,14 +46,6 @@ class FontFace {
|
|
|
48
46
|
static create(family, slant, weight) {
|
|
49
47
|
return wrapHandle(cairoToyFontFaceCreate(family, slant, weight), ToyFontFace);
|
|
50
48
|
}
|
|
51
|
-
/** Creates a font face for a FreeType `FT_Face` handle, with the given `FT_LOAD_*` flags. */
|
|
52
|
-
static createForFtFace(face, loadFlags) {
|
|
53
|
-
return wrapHandle(cairoFtFontFaceCreateForFtFace(face, loadFlags), FtFontFace);
|
|
54
|
-
}
|
|
55
|
-
/** Creates a font face for a fontconfig `FcPattern` handle. */
|
|
56
|
-
static createForPattern(pattern) {
|
|
57
|
-
return wrapHandle(cairoFtFontFaceCreateForPattern(pattern), FtFontFace);
|
|
58
|
-
}
|
|
59
49
|
/** Returns the error status of the font face, `Status.SUCCESS` when it is usable. */
|
|
60
50
|
status() {
|
|
61
51
|
return cairoFontFaceStatus(getHandle(this));
|
|
@@ -84,7 +74,7 @@ class ToyFontFace extends FontFace {
|
|
|
84
74
|
return cairoToyFontFaceGetWeight(getHandle(this));
|
|
85
75
|
}
|
|
86
76
|
}
|
|
87
|
-
/** A FreeType font face
|
|
77
|
+
/** A FreeType font face returned by Cairo or another native library. */
|
|
88
78
|
class FtFontFace extends FontFace {
|
|
89
79
|
/** Returns the styles currently synthesized for the font face. */
|
|
90
80
|
getSynthesize() {
|
package/dist/font-face.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"font-face.js","sourceRoot":"","sources":["../src/font-face.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,SAAS,EAET,oBAAoB,EACpB,4BAA4B,EAC5B,CAAC,EACD,UAAU,GAEb,MAAM,eAAe,CAAC;AACvB,OAAO,EAAkB,QAAQ,EAAgC,MAAM,YAAY,CAAC;AACpF,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"font-face.js","sourceRoot":"","sources":["../src/font-face.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,SAAS,EAET,oBAAoB,EACpB,4BAA4B,EAC5B,CAAC,EACD,UAAU,GAEb,MAAM,eAAe,CAAC;AACvB,OAAO,EAAkB,QAAQ,EAAgC,MAAM,YAAY,CAAC;AACpF,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAKhF,MAAM,cAAc,GAAG,UAAU,CAAC,kCAAkC,CAAC,CAAC;AACtE,MAAM,mBAAmB,GAAG,SAAS,CAAC,wBAAwB,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;AACxF,MAAM,oBAAoB,GAAG,SAAS,CAAC,0BAA0B,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;AAC3F,MAAM,8BAA8B,GAAG,SAAS,CAAC,qCAAqC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;AAChH,MAAM,wBAAwB,GAAG,SAAS,CAAC,+BAA+B,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;AACpG,MAAM,yBAAyB,GAAG,SAAS,CAAC,gCAAgC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;AACtG,MAAM,4BAA4B,GAAG,SAAS,CAAC,mCAAmC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;AAC5G,MAAM,4BAA4B,GAAG,SAAS,CAAC,mCAAmC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACpH,MAAM,yBAAyB,GAAG,SAAS,CAAC,gCAAgC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;AAEnH,MAAM,sBAAsB,GAAG,SAAS,CACpC,4BAA4B,EAC5B,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,EACpC,gBAAgB,CACnB,CAAC;AAEF,MAAM,8BAA8B,GAAG,SAAS,CAC5C,qCAAqC,EACrC,CAAC,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,EACtB,CAAC,CAAC,IAAI,CACT,CAAC;AAEF;;;GAGG;AACH,MAAM,YAAY,GAAG;IACjB,2BAA2B;IAC3B,IAAI,EAAE,CAAC;IACP,wBAAwB;IACxB,OAAO,EAAE,CAAC;CACJ,CAAC;AAEX,MAAM,gBAAgB,GAAyB,CAAC,MAAM,EAAE,EAAE;IACtD,MAAM,IAAI,GAAG,oBAAoB,CAAC,MAAM,CAAa,CAAC;IAEtD,IAAI,IAAI,KAAK,QAAQ,CAAC,GAAG,EAAE,CAAC;QACxB,OAAO,WAAW,CAAC;IACvB,CAAC;IAED,IAAI,IAAI,KAAK,QAAQ,CAAC,EAAE,EAAE,CAAC;QACvB,OAAO,UAAU,CAAC;IACtB,CAAC;IAED,OAAO,QAAQ,CAAC;AACpB,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAe,QAAQ;IACnB;QACI,oBAAoB,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;QAC3C,4BAA4B,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;IACzD,CAAC;IAED,oEAAoE;IACpE,MAAM,CAAC,MAAM,CAAC,MAAc,EAAE,KAAgB,EAAE,MAAkB;QAC9D,OAAO,UAAU,CAAC,sBAAsB,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAA2B,EAAE,WAAW,CAAC,CAAC;IAC5G,CAAC;IAKD,qFAAqF;IACrF,MAAM;QACF,OAAO,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAW,CAAC;IAC1D,CAAC;IAED,oDAAoD;IACpD,OAAO;QACH,OAAO,oBAAoB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAa,CAAC;IAC7D,CAAC;IAED,oDAAoD;IACpD,iBAAiB;QACb,OAAO,8BAA8B,CAAC,SAAS,CAAC,IAAI,CAAC,CAAW,CAAC;IACrE,CAAC;CACJ;AAED,uFAAuF;AACvF,MAAM,WAAY,SAAQ,QAAQ;IAC9B,8DAA8D;IAC9D,SAAS;QACL,OAAO,yBAAyB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAW,CAAC;IAChE,CAAC;IAED,wDAAwD;IACxD,QAAQ;QACJ,OAAO,wBAAwB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAc,CAAC;IAClE,CAAC;IAED,yDAAyD;IACzD,SAAS;QACL,OAAO,yBAAyB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAe,CAAC;IACpE,CAAC;CACJ;AAED,wEAAwE;AACxE,MAAM,UAAW,SAAQ,QAAQ;IAC7B,kEAAkE;IAClE,aAAa;QACT,OAAO,4BAA4B,CAAC,SAAS,CAAC,IAAI,CAAC,CAAiB,CAAC;IACzE,CAAC;IAED,gDAAgD;IAChD,aAAa,CAAC,UAAwB;QAClC,4BAA4B,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,CAAC;IAC9D,CAAC;IAED,iDAAiD;IACjD,eAAe,CAAC,UAAwB;QACpC,8BAA8B,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,CAAC;IAChE,CAAC;CACJ;AAED,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC","sourcesContent":["import {\n type ExternalObject,\n getHandle,\n type Handle,\n registerWrapperClass,\n registerWrapperClassResolver,\n t,\n wrapHandle,\n type WrapperClassResolver,\n} from \"@gtkx/runtime\";\nimport { type FontSlant, FontType, type FontWeight, type Status } from \"./enums.js\";\nimport { bindCairo, cairoGType, FONT_FACE_FULL_T, FONT_FACE_T } from \"./lib.js\";\n\n/** One of the `FtSynthesize` styles a FreeType font face synthesizes. */\ntype FtSynthesize = (typeof FtSynthesize)[keyof typeof FtSynthesize];\n\nconst FONT_FACE_TYPE = cairoGType(\"cairo_gobject_font_face_get_type\");\nconst cairoFontFaceStatus = bindCairo(\"cairo_font_face_status\", [FONT_FACE_T], t.int32);\nconst cairoFontFaceGetType = bindCairo(\"cairo_font_face_get_type\", [FONT_FACE_T], t.int32);\nconst cairoFontFaceGetReferenceCount = bindCairo(\"cairo_font_face_get_reference_count\", [FONT_FACE_T], t.int32);\nconst cairoToyFontFaceGetSlant = bindCairo(\"cairo_toy_font_face_get_slant\", [FONT_FACE_T], t.int32);\nconst cairoToyFontFaceGetWeight = bindCairo(\"cairo_toy_font_face_get_weight\", [FONT_FACE_T], t.int32);\nconst cairoFtFontFaceGetSynthesize = bindCairo(\"cairo_ft_font_face_get_synthesize\", [FONT_FACE_T], t.int32);\nconst cairoFtFontFaceSetSynthesize = bindCairo(\"cairo_ft_font_face_set_synthesize\", [FONT_FACE_T, t.int32], t.void);\nconst cairoToyFontFaceGetFamily = bindCairo(\"cairo_toy_font_face_get_family\", [FONT_FACE_T], t.string(\"borrowed\"));\n\nconst cairoToyFontFaceCreate = bindCairo(\n \"cairo_toy_font_face_create\",\n [t.string(\"full\"), t.int32, t.int32],\n FONT_FACE_FULL_T,\n);\n\nconst cairoFtFontFaceUnsetSynthesize = bindCairo(\n \"cairo_ft_font_face_unset_synthesize\",\n [FONT_FACE_T, t.int32],\n t.void,\n);\n\n/**\n * Styles a FreeType font face synthesizes when the font itself lacks them.\n * @enum\n */\nconst FtSynthesize = {\n /** Embolden the glyphs. */\n BOLD: 1,\n /** Slant the glyphs. */\n OBLIQUE: 2,\n} as const;\n\nconst fontFaceClassFor: WrapperClassResolver = (handle) => {\n const type = cairoFontFaceGetType(handle) as FontType;\n\n if (type === FontType.TOY) {\n return ToyFontFace;\n }\n\n if (type === FontType.FT) {\n return FtFontFace;\n }\n\n return FontFace;\n};\n\n/**\n * A cairo font face (`cairo_font_face_t`): a typeface independent of size and transformation. Font faces come\n * from `create` or a context, and wrap as the concrete class their type reports\n * (`instanceof ToyFontFace` after `selectFontFace`).\n */\nabstract class FontFace {\n static {\n registerWrapperClass(this, FONT_FACE_TYPE);\n registerWrapperClassResolver(this, fontFaceClassFor);\n }\n\n /** Creates a toy font face from a family name, slant and weight. */\n static create(family: string, slant: FontSlant, weight: FontWeight): ToyFontFace {\n return wrapHandle(cairoToyFontFaceCreate(family, slant, weight) as ExternalObject<Handle>, ToyFontFace);\n }\n\n /** GType of `CairoFontFace`, the boxed type this class is registered under. */\n declare __type__: bigint;\n\n /** Returns the error status of the font face, `Status.SUCCESS` when it is usable. */\n status(): Status {\n return cairoFontFaceStatus(getHandle(this)) as Status;\n }\n\n /** Returns the backend the font face belongs to. */\n getType(): FontType {\n return cairoFontFaceGetType(getHandle(this)) as FontType;\n }\n\n /** Returns the reference count of the font face. */\n getReferenceCount(): number {\n return cairoFontFaceGetReferenceCount(getHandle(this)) as number;\n }\n}\n\n/** A toy font face, created with `FontFace.create` or a context's `selectFontFace`. */\nclass ToyFontFace extends FontFace {\n /** Returns the family name the font face was created with. */\n getFamily(): string {\n return cairoToyFontFaceGetFamily(getHandle(this)) as string;\n }\n\n /** Returns the slant the font face was created with. */\n getSlant(): FontSlant {\n return cairoToyFontFaceGetSlant(getHandle(this)) as FontSlant;\n }\n\n /** Returns the weight the font face was created with. */\n getWeight(): FontWeight {\n return cairoToyFontFaceGetWeight(getHandle(this)) as FontWeight;\n }\n}\n\n/** A FreeType font face returned by Cairo or another native library. */\nclass FtFontFace extends FontFace {\n /** Returns the styles currently synthesized for the font face. */\n getSynthesize(): FtSynthesize {\n return cairoFtFontFaceGetSynthesize(getHandle(this)) as FtSynthesize;\n }\n\n /** Enables synthesizing of the given styles. */\n setSynthesize(synthFlags: FtSynthesize): void {\n cairoFtFontFaceSetSynthesize(getHandle(this), synthFlags);\n }\n\n /** Disables synthesizing of the given styles. */\n unsetSynthesize(synthFlags: FtSynthesize): void {\n cairoFtFontFaceUnsetSynthesize(getHandle(this), synthFlags);\n }\n}\n\nexport { FontFace, FtFontFace, FtSynthesize, ToyFontFace };\n"]}
|
package/dist/lib.d.ts
CHANGED
|
@@ -17,8 +17,6 @@ declare const FONT_FACE_T: BoxedDescriptor;
|
|
|
17
17
|
declare const FONT_FACE_FULL_T: BoxedDescriptor;
|
|
18
18
|
declare const SCALED_FONT_T: BoxedDescriptor;
|
|
19
19
|
declare const SCALED_FONT_FULL_T: BoxedDescriptor;
|
|
20
|
-
declare const FC_PATTERN_T: BoxedDescriptor;
|
|
21
|
-
declare const FT_FACE_T: BoxedDescriptor;
|
|
22
20
|
declare const MATRIX_T: BoxedDescriptor;
|
|
23
21
|
declare const RECTANGLE_T: BoxedDescriptor;
|
|
24
22
|
declare const RECTANGLE_INT_T: BoxedDescriptor;
|
|
@@ -32,5 +30,5 @@ declare const PATH_T: BoxedDescriptor;
|
|
|
32
30
|
declare const DOUBLE_BUFFER_T: BoxedDescriptor;
|
|
33
31
|
declare const bindCairo: (symbol: string, args: Descriptor[], returns: Descriptor) => BoundFunction;
|
|
34
32
|
declare const cairoGType: (typeSymbol: string) => bigint;
|
|
35
|
-
export { bindCairo, type BoundFunction, cairoGType, CONTEXT_FULL_T, CONTEXT_T, DEVICE_T, DOUBLE_BUFFER_T,
|
|
33
|
+
export { bindCairo, type BoundFunction, cairoGType, CONTEXT_FULL_T, CONTEXT_T, DEVICE_T, DOUBLE_BUFFER_T, FONT_EXTENTS_T, FONT_FACE_FULL_T, FONT_FACE_T, FONT_OPTIONS_FULL_T, FONT_OPTIONS_T, GLYPH_T, MATRIX_T, PATH_T, PATTERN_FULL_T, PATTERN_T, RECTANGLE_INT_ARRAY_T, RECTANGLE_INT_T, RECTANGLE_LIST_T, RECTANGLE_T, REGION_FULL_T, REGION_T, SCALED_FONT_FULL_T, SCALED_FONT_T, SURFACE_FULL_T, SURFACE_T, TEXT_CLUSTER_T, TEXT_EXTENTS_T, };
|
|
36
34
|
//# sourceMappingURL=lib.d.ts.map
|