@gtkx/cairo 1.2.2 → 1.4.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.
Files changed (55) hide show
  1. package/LICENSE +373 -0
  2. package/README.md +174 -0
  3. package/dist/context.d.ts +1 -1
  4. package/dist/context.d.ts.map +1 -1
  5. package/dist/context.js +16 -15
  6. package/dist/context.js.map +1 -1
  7. package/dist/font-face.d.ts +2 -7
  8. package/dist/font-face.d.ts.map +1 -1
  9. package/dist/font-face.js +3 -13
  10. package/dist/font-face.js.map +1 -1
  11. package/dist/lib.d.ts +1 -3
  12. package/dist/lib.d.ts.map +1 -1
  13. package/dist/lib.js +3 -4
  14. package/dist/lib.js.map +1 -1
  15. package/dist/path.d.ts.map +1 -1
  16. package/dist/path.js +8 -5
  17. package/dist/path.js.map +1 -1
  18. package/dist/pattern.d.ts +3 -1
  19. package/dist/pattern.d.ts.map +1 -1
  20. package/dist/pattern.js +24 -6
  21. package/dist/pattern.js.map +1 -1
  22. package/dist/region.d.ts.map +1 -1
  23. package/dist/region.js +6 -5
  24. package/dist/region.js.map +1 -1
  25. package/dist/scaled-font.d.ts +3 -5
  26. package/dist/scaled-font.d.ts.map +1 -1
  27. package/dist/scaled-font.js +3 -62
  28. package/dist/scaled-font.js.map +1 -1
  29. package/dist/status.d.ts +6 -0
  30. package/dist/status.d.ts.map +1 -0
  31. package/dist/status.js +17 -0
  32. package/dist/status.js.map +1 -0
  33. package/dist/structs.d.ts +1 -1
  34. package/dist/structs.d.ts.map +1 -1
  35. package/dist/structs.js +1 -1
  36. package/dist/structs.js.map +1 -1
  37. package/dist/surface.d.ts +2 -7
  38. package/dist/surface.d.ts.map +1 -1
  39. package/dist/surface.js +21 -25
  40. package/dist/surface.js.map +1 -1
  41. package/dist/text.d.ts.map +1 -1
  42. package/dist/text.js +20 -17
  43. package/dist/text.js.map +1 -1
  44. package/package.json +60 -61
  45. package/src/context.ts +15 -16
  46. package/src/font-face.ts +3 -25
  47. package/src/lib.ts +2 -5
  48. package/src/path.ts +8 -5
  49. package/src/pattern.ts +31 -7
  50. package/src/region.ts +5 -5
  51. package/src/scaled-font.ts +3 -92
  52. package/src/status.ts +23 -0
  53. package/src/structs.ts +1 -1
  54. package/src/surface.ts +28 -29
  55. package/src/text.ts +20 -17
package/dist/path.js CHANGED
@@ -3,9 +3,12 @@ import { PathDataType } from "./enums.js";
3
3
  const ELEMENT_SIZE = 16;
4
4
  const DATA_OFFSET = 8;
5
5
  const NUM_DATA_OFFSET = 16;
6
+ const DOUBLE = t.fieldAt(t.float64);
7
+ const INT = t.fieldAt(t.int32);
8
+ const NUM_DATA = t.field(t.int32, NUM_DATA_OFFSET);
6
9
  const readPoint = (data, base) => ({
7
- x: read(data, t.float64, base),
8
- y: read(data, t.float64, base + 8),
10
+ x: DOUBLE.read(data, base),
11
+ y: DOUBLE.read(data, base + 8),
9
12
  });
10
13
  const readMoveTo = (data, base) => ({ type: "moveTo", ...readPoint(data, base + ELEMENT_SIZE) });
11
14
  const readLineTo = (data, base) => ({ type: "lineTo", ...readPoint(data, base + ELEMENT_SIZE) });
@@ -36,7 +39,7 @@ const segmentReaderFor = (headerType) => {
36
39
  }
37
40
  };
38
41
  const parsePath = (pathHandle) => {
39
- const numData = read(pathHandle, t.int32, NUM_DATA_OFFSET);
42
+ const numData = NUM_DATA.read(pathHandle);
40
43
  if (numData === 0) {
41
44
  return [];
42
45
  }
@@ -45,11 +48,11 @@ const parsePath = (pathHandle) => {
45
48
  let index = 0;
46
49
  while (index < numData) {
47
50
  const base = index * ELEMENT_SIZE;
48
- const reader = segmentReaderFor(read(data, t.int32, base));
51
+ const reader = segmentReaderFor(INT.read(data, base));
49
52
  if (reader !== null) {
50
53
  segments.push(reader(data, base));
51
54
  }
52
- index += read(data, t.int32, base + 4);
55
+ index += INT.read(data, base + 4);
53
56
  }
54
57
  return segments;
55
58
  };
package/dist/path.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"path.js","sourceRoot":"","sources":["../src/path.ts"],"names":[],"mappings":"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","sourcesContent":["import { type ExternalObject, getHandle, type Handle, read, t } from \"@gtkx/runtime\";\nimport type { PathData } from \"./types.js\";\nimport { PathDataType } from \"./enums.js\";\n\ntype PathBuffer = ExternalObject<Handle>;\ntype Point = { x: number; y: number };\ntype SegmentReader = (data: PathBuffer, base: number) => PathData;\n\nconst ELEMENT_SIZE = 16;\nconst DATA_OFFSET = 8;\nconst NUM_DATA_OFFSET = 16;\n\nconst readPoint = (data: PathBuffer, base: number): Point => ({\n x: read(data, t.float64, base) as number,\n y: read(data, t.float64, base + 8) as number,\n});\n\nconst readMoveTo: SegmentReader = (data, base) => ({ type: \"moveTo\", ...readPoint(data, base + ELEMENT_SIZE) });\nconst readLineTo: SegmentReader = (data, base) => ({ type: \"lineTo\", ...readPoint(data, base + ELEMENT_SIZE) });\n\nconst readCurveTo: SegmentReader = (data, base) => {\n const first = readPoint(data, base + ELEMENT_SIZE);\n const second = readPoint(data, base + ELEMENT_SIZE * 2);\n const third = readPoint(data, base + ELEMENT_SIZE * 3);\n\n return { type: \"curveTo\", x1: first.x, y1: first.y, x2: second.x, y2: second.y, x3: third.x, y3: third.y };\n};\n\nconst readClosePath: SegmentReader = () => ({ type: \"closePath\" });\n\nconst segmentReaderFor = (headerType: PathDataType): SegmentReader | null => {\n switch (headerType) {\n case PathDataType.MOVE_TO: {\n return readMoveTo;\n }\n case PathDataType.LINE_TO: {\n return readLineTo;\n }\n case PathDataType.CURVE_TO: {\n return readCurveTo;\n }\n case PathDataType.CLOSE_PATH: {\n return readClosePath;\n }\n default: {\n return null;\n }\n }\n};\n\nconst parsePath = (pathHandle: PathBuffer): PathData[] => {\n const numData = read(pathHandle, t.int32, NUM_DATA_OFFSET) as number;\n\n if (numData === 0) {\n return [];\n }\n\n const data = read(pathHandle, t.struct(\"borrowed\", { size: numData * ELEMENT_SIZE }), DATA_OFFSET) as PathBuffer;\n const segments: PathData[] = [];\n let index = 0;\n\n while (index < numData) {\n const base = index * ELEMENT_SIZE;\n const reader = segmentReaderFor(read(data, t.int32, base) as PathDataType);\n\n if (reader !== null) {\n segments.push(reader(data, base));\n }\n\n index += read(data, t.int32, base + 4) as number;\n }\n\n return segments;\n};\n\n/**\n * A cairo path (`cairo_path_t`). Instances come from the bindings that hand one back, and the bindings that take\n * one, such as `Gsk.PathBuilder.addCairoPath`, accept it as is.\n */\nabstract class Path {\n /** Reads the segments of the path in drawing order. */\n toData(): PathData[] {\n return parsePath(getHandle(this));\n }\n}\n\nexport { parsePath, Path };\n"]}
1
+ {"version":3,"file":"path.js","sourceRoot":"","sources":["../src/path.ts"],"names":[],"mappings":"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","sourcesContent":["import { type ExternalObject, getHandle, type Handle, read, t } from \"@gtkx/runtime\";\nimport type { PathData } from \"./types.js\";\nimport { PathDataType } from \"./enums.js\";\n\ntype PathBuffer = ExternalObject<Handle>;\ntype Point = { x: number; y: number };\ntype SegmentReader = (data: PathBuffer, base: number) => PathData;\n\nconst ELEMENT_SIZE = 16;\nconst DATA_OFFSET = 8;\nconst NUM_DATA_OFFSET = 16;\nconst DOUBLE = t.fieldAt(t.float64);\nconst INT = t.fieldAt(t.int32);\nconst NUM_DATA = t.field(t.int32, NUM_DATA_OFFSET);\n\nconst readPoint = (data: PathBuffer, base: number): Point => ({\n x: DOUBLE.read(data, base) as number,\n y: DOUBLE.read(data, base + 8) as number,\n});\n\nconst readMoveTo: SegmentReader = (data, base) => ({ type: \"moveTo\", ...readPoint(data, base + ELEMENT_SIZE) });\nconst readLineTo: SegmentReader = (data, base) => ({ type: \"lineTo\", ...readPoint(data, base + ELEMENT_SIZE) });\n\nconst readCurveTo: SegmentReader = (data, base) => {\n const first = readPoint(data, base + ELEMENT_SIZE);\n const second = readPoint(data, base + ELEMENT_SIZE * 2);\n const third = readPoint(data, base + ELEMENT_SIZE * 3);\n\n return { type: \"curveTo\", x1: first.x, y1: first.y, x2: second.x, y2: second.y, x3: third.x, y3: third.y };\n};\n\nconst readClosePath: SegmentReader = () => ({ type: \"closePath\" });\n\nconst segmentReaderFor = (headerType: PathDataType): SegmentReader | null => {\n switch (headerType) {\n case PathDataType.MOVE_TO: {\n return readMoveTo;\n }\n case PathDataType.LINE_TO: {\n return readLineTo;\n }\n case PathDataType.CURVE_TO: {\n return readCurveTo;\n }\n case PathDataType.CLOSE_PATH: {\n return readClosePath;\n }\n default: {\n return null;\n }\n }\n};\n\nconst parsePath = (pathHandle: PathBuffer): PathData[] => {\n const numData = NUM_DATA.read(pathHandle) as number;\n\n if (numData === 0) {\n return [];\n }\n\n const data = read(pathHandle, t.struct(\"borrowed\", { size: numData * ELEMENT_SIZE }), DATA_OFFSET) as PathBuffer;\n const segments: PathData[] = [];\n let index = 0;\n\n while (index < numData) {\n const base = index * ELEMENT_SIZE;\n const reader = segmentReaderFor(INT.read(data, base) as PathDataType);\n\n if (reader !== null) {\n segments.push(reader(data, base));\n }\n\n index += INT.read(data, base + 4) as number;\n }\n\n return segments;\n};\n\n/**\n * A cairo path (`cairo_path_t`). Instances come from the bindings that hand one back, and the bindings that take\n * one, such as `Gsk.PathBuilder.addCairoPath`, accept it as is.\n */\nabstract class Path {\n /** Reads the segments of the path in drawing order. */\n toData(): PathData[] {\n return parsePath(getHandle(this));\n }\n}\n\nexport { parsePath, Path };\n"]}
package/dist/pattern.d.ts CHANGED
@@ -1,7 +1,7 @@
1
- import type { Surface } from "./surface.js";
2
1
  import type { ColorStop, LinearPoints, PathData, Point, RadialCircles, RgbaColor } from "./types.js";
3
2
  import { type Extend, type Filter, PatternType, type Status } from "./enums.js";
4
3
  import { Matrix } from "./matrix.js";
4
+ import { Surface } from "./surface.js";
5
5
  /**
6
6
  * A cairo pattern (`cairo_pattern_t`): the source a context paints with, such as a solid color, a gradient,
7
7
  * a mesh or another surface. Patterns come from the `create*` statics or from a context, and wrap as the
@@ -50,6 +50,8 @@ declare abstract class Pattern {
50
50
  getType(): PatternType;
51
51
  /** Returns the reference count of the pattern. */
52
52
  getReferenceCount(): number;
53
+ /** Returns the surface of a surface pattern; throws for a pattern that has no surface. */
54
+ getSurface(): Surface;
53
55
  }
54
56
  /** A linear gradient pattern, created with `Pattern.createLinear`. */
55
57
  declare class LinearPattern extends Pattern {
@@ -1 +1 @@
1
- {"version":3,"file":"pattern.d.ts","sourceRoot":"","sources":["../src/pattern.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pattern.d.ts","sourceRoot":"","sources":["../src/pattern.ts"],"names":[],"mappings":"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"}
package/dist/pattern.js CHANGED
@@ -3,6 +3,8 @@ import { PatternType } from "./enums.js";
3
3
  import { bindCairo, cairoGType, MATRIX_T, PATH_T, PATTERN_FULL_T, PATTERN_T, SURFACE_T, } from "./lib.js";
4
4
  import { allocMatrix, Matrix } from "./matrix.js";
5
5
  import { parsePath } from "./path.js";
6
+ import { checkStatus } from "./status.js";
7
+ import { Surface } from "./surface.js";
6
8
  const PATTERN_TYPE = cairoGType("cairo_gobject_pattern_get_type");
7
9
  const FOUR_DOUBLES_OUT = [t.ref(t.float64), t.ref(t.float64), t.ref(t.float64), t.ref(t.float64)];
8
10
  const POINT_ARGS = [PATTERN_T, t.float64, t.float64];
@@ -26,6 +28,7 @@ const cairoPatternSetMatrix = bindCairo("cairo_pattern_set_matrix", [PATTERN_T,
26
28
  const cairoPatternGetMatrix = bindCairo("cairo_pattern_get_matrix", [PATTERN_T, MATRIX_T], t.void);
27
29
  const cairoPatternGetType = bindCairo("cairo_pattern_get_type", [PATTERN_T], t.int32);
28
30
  const cairoPatternGetReferenceCount = bindCairo("cairo_pattern_get_reference_count", [PATTERN_T], t.int32);
31
+ const cairoPatternGetSurface = bindCairo("cairo_pattern_get_surface", [PATTERN_T, t.ref(SURFACE_T)], t.int32);
29
32
  const cairoPatternGetLinearPoints = bindCairo("cairo_pattern_get_linear_points", [PATTERN_T, ...FOUR_DOUBLES_OUT], t.int32);
30
33
  const cairoPatternGetRadialCircles = bindCairo("cairo_pattern_get_radial_circles", [PATTERN_T, ...FOUR_DOUBLES_OUT, t.ref(t.float64), t.ref(t.float64)], t.int32);
31
34
  const cairoMeshPatternBeginPatch = bindCairo("cairo_mesh_pattern_begin_patch", [PATTERN_T], t.void);
@@ -41,6 +44,10 @@ const cairoMeshPatternGetPath = bindCairo("cairo_mesh_pattern_get_path", [PATTER
41
44
  const cairoMeshPatternGetControlPoint = bindCairo("cairo_mesh_pattern_get_control_point", [PATTERN_T, t.int32, t.int32, t.ref(t.float64), t.ref(t.float64)], t.int32);
42
45
  const cairoMeshPatternGetCornerColorRgba = bindCairo("cairo_mesh_pattern_get_corner_color_rgba", [PATTERN_T, t.int32, t.int32, ...FOUR_DOUBLES_OUT], t.int32);
43
46
  const wrapPattern = (handle) => wrapHandle(handle, Pattern);
47
+ const checkPattern = (pattern) => {
48
+ checkStatus(pattern.status(), "pattern");
49
+ return pattern;
50
+ };
44
51
  const readRgba = (fill) => {
45
52
  const red = { value: 0 };
46
53
  const green = { value: 0 };
@@ -79,28 +86,30 @@ class Pattern {
79
86
  }
80
87
  /** Creates an opaque solid-color pattern. */
81
88
  static createRgb(red, green, blue) {
82
- return wrapPattern(cairoPatternCreateRgb(red, green, blue));
89
+ return checkPattern(wrapPattern(cairoPatternCreateRgb(red, green, blue)));
83
90
  }
84
91
  /** Creates a translucent solid-color pattern. */
85
92
  static createRgba(red, green, blue, alpha) {
86
- return wrapPattern(cairoPatternCreateRgba(red, green, blue, alpha));
93
+ return checkPattern(wrapPattern(cairoPatternCreateRgba(red, green, blue, alpha)));
87
94
  }
88
95
  /** Creates a linear gradient between `(x0, y0)` and `(x1, y1)`; add stops with `addColorStopRgba`. */
89
96
  static createLinear(x0, y0, x1, y1) {
90
- return wrapHandle(cairoPatternCreateLinear(x0, y0, x1, y1), LinearPattern);
97
+ const handle = cairoPatternCreateLinear(x0, y0, x1, y1);
98
+ return checkPattern(wrapHandle(handle, LinearPattern));
91
99
  }
92
100
  /** Creates a radial gradient between two circles; add stops with `addColorStopRgba`. */
93
101
  static createRadial(cx0, cy0, radius0, cx1, cy1, radius1) {
94
102
  const handle = cairoPatternCreateRadial(cx0, cy0, radius0, cx1, cy1, radius1);
95
- return wrapHandle(handle, RadialPattern);
103
+ return checkPattern(wrapHandle(handle, RadialPattern));
96
104
  }
97
105
  /** Creates an empty mesh gradient; describe its patches with the `MeshPattern` methods. */
98
106
  static createMesh() {
99
- return wrapHandle(cairoPatternCreateMesh(), MeshPattern);
107
+ return checkPattern(wrapHandle(cairoPatternCreateMesh(), MeshPattern));
100
108
  }
101
109
  /** Creates a pattern that paints with the content of `surface`. */
102
110
  static createForSurface(surface) {
103
- return wrapPattern(cairoPatternCreateForSurface(getHandle(surface)));
111
+ const handle = getHandle(surface);
112
+ return checkPattern(wrapPattern(cairoPatternCreateForSurface(handle)));
104
113
  }
105
114
  /** Adds an opaque color stop at `offset` (0 to 1) to a gradient pattern. */
106
115
  addColorStopRgb(offset, red, green, blue) {
@@ -162,6 +171,15 @@ class Pattern {
162
171
  getReferenceCount() {
163
172
  return cairoPatternGetReferenceCount(getHandle(this));
164
173
  }
174
+ /** Returns the surface of a surface pattern; throws for a pattern that has no surface. */
175
+ getSurface() {
176
+ const surface = { value: null };
177
+ checkStatus(cairoPatternGetSurface(getHandle(this), surface), "pattern");
178
+ if (surface.value === null) {
179
+ throw new Error("cairo pattern has no surface");
180
+ }
181
+ return wrapHandle(surface.value, Surface);
182
+ }
165
183
  }
166
184
  /** A linear gradient pattern, created with `Pattern.createLinear`. */
167
185
  class LinearPattern extends Pattern {
@@ -1 +1 @@
1
- {"version":3,"file":"pattern.js","sourceRoot":"","sources":["../src/pattern.ts"],"names":[],"mappings":"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","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 { Surface } from \"./surface.js\";\nimport type { ColorStop, LinearPoints, PathData, Point, RadialCircles, RgbaColor } from \"./types.js\";\nimport { type Extend, type Filter, PatternType, type Status } from \"./enums.js\";\nimport {\n bindCairo,\n type BoundFunction,\n cairoGType,\n MATRIX_T,\n PATH_T,\n PATTERN_FULL_T,\n PATTERN_T,\n SURFACE_T,\n} from \"./lib.js\";\nimport { allocMatrix, Matrix } from \"./matrix.js\";\nimport { parsePath } from \"./path.js\";\n\ntype RgbaRefs = [\n red: { value: number },\n green: { value: number },\n blue: { value: number },\n alpha: { value: number },\n];\n\nconst PATTERN_TYPE = cairoGType(\"cairo_gobject_pattern_get_type\");\nconst FOUR_DOUBLES_OUT = [t.ref(t.float64), t.ref(t.float64), t.ref(t.float64), t.ref(t.float64)];\nconst POINT_ARGS = [PATTERN_T, t.float64, t.float64];\nconst cairoPatternCreateRgb = bindCairo(\"cairo_pattern_create_rgb\", [t.float64, t.float64, t.float64], PATTERN_FULL_T);\n\nconst cairoPatternCreateRgba = bindCairo(\n \"cairo_pattern_create_rgba\",\n [t.float64, t.float64, t.float64, t.float64],\n PATTERN_FULL_T,\n);\n\nconst cairoPatternCreateLinear = bindCairo(\n \"cairo_pattern_create_linear\",\n [t.float64, t.float64, t.float64, t.float64],\n PATTERN_FULL_T,\n);\n\nconst cairoPatternCreateRadial = bindCairo(\n \"cairo_pattern_create_radial\",\n [t.float64, t.float64, t.float64, t.float64, t.float64, t.float64],\n PATTERN_FULL_T,\n);\n\nconst cairoPatternCreateMesh = bindCairo(\"cairo_pattern_create_mesh\", [], PATTERN_FULL_T);\nconst cairoPatternCreateForSurface = bindCairo(\"cairo_pattern_create_for_surface\", [SURFACE_T], PATTERN_FULL_T);\n\nconst cairoPatternAddColorStopRgb = bindCairo(\n \"cairo_pattern_add_color_stop_rgb\",\n [PATTERN_T, t.float64, t.float64, t.float64, t.float64],\n t.void,\n);\n\nconst cairoPatternAddColorStopRgba = bindCairo(\n \"cairo_pattern_add_color_stop_rgba\",\n [PATTERN_T, t.float64, t.float64, t.float64, t.float64, t.float64],\n t.void,\n);\n\nconst cairoPatternGetColorStopCount = bindCairo(\n \"cairo_pattern_get_color_stop_count\",\n [PATTERN_T, t.ref(t.int32)],\n t.int32,\n);\n\nconst cairoPatternGetColorStopRgba = bindCairo(\n \"cairo_pattern_get_color_stop_rgba\",\n [PATTERN_T, t.int32, t.ref(t.float64), ...FOUR_DOUBLES_OUT],\n t.int32,\n);\n\nconst cairoPatternGetRgba = bindCairo(\"cairo_pattern_get_rgba\", [PATTERN_T, ...FOUR_DOUBLES_OUT], t.int32);\nconst cairoPatternStatus = bindCairo(\"cairo_pattern_status\", [PATTERN_T], t.int32);\nconst cairoPatternSetExtend = bindCairo(\"cairo_pattern_set_extend\", [PATTERN_T, t.int32], t.void);\nconst cairoPatternGetExtend = bindCairo(\"cairo_pattern_get_extend\", [PATTERN_T], t.int32);\nconst cairoPatternSetFilter = bindCairo(\"cairo_pattern_set_filter\", [PATTERN_T, t.int32], t.void);\nconst cairoPatternGetFilter = bindCairo(\"cairo_pattern_get_filter\", [PATTERN_T], t.int32);\nconst cairoPatternSetMatrix = bindCairo(\"cairo_pattern_set_matrix\", [PATTERN_T, MATRIX_T], t.void);\nconst cairoPatternGetMatrix = bindCairo(\"cairo_pattern_get_matrix\", [PATTERN_T, MATRIX_T], t.void);\nconst cairoPatternGetType = bindCairo(\"cairo_pattern_get_type\", [PATTERN_T], t.int32);\nconst cairoPatternGetReferenceCount = bindCairo(\"cairo_pattern_get_reference_count\", [PATTERN_T], t.int32);\n\nconst cairoPatternGetLinearPoints = bindCairo(\n \"cairo_pattern_get_linear_points\",\n [PATTERN_T, ...FOUR_DOUBLES_OUT],\n t.int32,\n);\n\nconst cairoPatternGetRadialCircles = bindCairo(\n \"cairo_pattern_get_radial_circles\",\n [PATTERN_T, ...FOUR_DOUBLES_OUT, t.ref(t.float64), t.ref(t.float64)],\n t.int32,\n);\n\nconst cairoMeshPatternBeginPatch = bindCairo(\"cairo_mesh_pattern_begin_patch\", [PATTERN_T], t.void);\nconst cairoMeshPatternEndPatch = bindCairo(\"cairo_mesh_pattern_end_patch\", [PATTERN_T], t.void);\nconst cairoMeshPatternMoveTo = bindCairo(\"cairo_mesh_pattern_move_to\", POINT_ARGS, t.void);\nconst cairoMeshPatternLineTo = bindCairo(\"cairo_mesh_pattern_line_to\", POINT_ARGS, t.void);\n\nconst cairoMeshPatternCurveTo = bindCairo(\n \"cairo_mesh_pattern_curve_to\",\n [PATTERN_T, t.float64, t.float64, t.float64, t.float64, t.float64, t.float64],\n t.void,\n);\n\nconst cairoMeshPatternSetControlPoint = bindCairo(\n \"cairo_mesh_pattern_set_control_point\",\n [PATTERN_T, t.int32, t.float64, t.float64],\n t.void,\n);\n\nconst cairoMeshPatternSetCornerColorRgb = bindCairo(\n \"cairo_mesh_pattern_set_corner_color_rgb\",\n [PATTERN_T, t.int32, t.float64, t.float64, t.float64],\n t.void,\n);\n\nconst cairoMeshPatternSetCornerColorRgba = bindCairo(\n \"cairo_mesh_pattern_set_corner_color_rgba\",\n [PATTERN_T, t.int32, t.float64, t.float64, t.float64, t.float64],\n t.void,\n);\n\nconst cairoMeshPatternGetPatchCount = bindCairo(\n \"cairo_mesh_pattern_get_patch_count\",\n [PATTERN_T, t.ref(t.int32)],\n t.int32,\n);\n\nconst cairoMeshPatternGetPath = bindCairo(\"cairo_mesh_pattern_get_path\", [PATTERN_T, t.int32], PATH_T);\n\nconst cairoMeshPatternGetControlPoint = bindCairo(\n \"cairo_mesh_pattern_get_control_point\",\n [PATTERN_T, t.int32, t.int32, t.ref(t.float64), t.ref(t.float64)],\n t.int32,\n);\n\nconst cairoMeshPatternGetCornerColorRgba = bindCairo(\n \"cairo_mesh_pattern_get_corner_color_rgba\",\n [PATTERN_T, t.int32, t.int32, ...FOUR_DOUBLES_OUT],\n t.int32,\n);\n\nconst wrapPattern = (handle: unknown): Pattern => wrapHandle(handle as ExternalObject<Handle>, Pattern);\n\nconst readRgba = (fill: (...refs: RgbaRefs) => void): RgbaColor => {\n const red = { value: 0 };\n const green = { value: 0 };\n const blue = { value: 0 };\n const alpha = { value: 0 };\n fill(red, green, blue, alpha);\n\n return { red: red.value, green: green.value, blue: blue.value, alpha: alpha.value };\n};\n\nconst readCount = (boundFn: BoundFunction, self: object): number => {\n const count = { value: 0 };\n boundFn(getHandle(self), count);\n\n return count.value;\n};\n\nconst patternClassFor: WrapperClassResolver = (handle) => {\n const type = cairoPatternGetType(handle) as PatternType;\n\n if (type === PatternType.LINEAR) {\n return LinearPattern;\n }\n\n if (type === PatternType.RADIAL) {\n return RadialPattern;\n }\n\n if (type === PatternType.MESH) {\n return MeshPattern;\n }\n\n return Pattern;\n};\n\n/**\n * A cairo pattern (`cairo_pattern_t`): the source a context paints with, such as a solid color, a gradient,\n * a mesh or another surface. Patterns come from the `create*` statics or from a context, and wrap as the\n * concrete class their type reports (`instanceof LinearPattern` for a linear gradient).\n */\nabstract class Pattern {\n static {\n registerWrapperClass(this, PATTERN_TYPE);\n registerWrapperClassResolver(this, patternClassFor);\n }\n\n /** Creates an opaque solid-color pattern. */\n static createRgb(red: number, green: number, blue: number): Pattern {\n return wrapPattern(cairoPatternCreateRgb(red, green, blue));\n }\n\n /** Creates a translucent solid-color pattern. */\n static createRgba(red: number, green: number, blue: number, alpha: number): Pattern {\n return wrapPattern(cairoPatternCreateRgba(red, green, blue, alpha));\n }\n\n /** Creates a linear gradient between `(x0, y0)` and `(x1, y1)`; add stops with `addColorStopRgba`. */\n static createLinear(x0: number, y0: number, x1: number, y1: number): LinearPattern {\n return wrapHandle(cairoPatternCreateLinear(x0, y0, x1, y1) as ExternalObject<Handle>, LinearPattern);\n }\n\n /** Creates a radial gradient between two circles; add stops with `addColorStopRgba`. */\n static createRadial(\n cx0: number,\n cy0: number,\n radius0: number,\n cx1: number,\n cy1: number,\n radius1: number,\n ): RadialPattern {\n const handle = cairoPatternCreateRadial(cx0, cy0, radius0, cx1, cy1, radius1) as ExternalObject<Handle>;\n\n return wrapHandle(handle, RadialPattern);\n }\n\n /** Creates an empty mesh gradient; describe its patches with the `MeshPattern` methods. */\n static createMesh(): MeshPattern {\n return wrapHandle(cairoPatternCreateMesh() as ExternalObject<Handle>, MeshPattern);\n }\n\n /** Creates a pattern that paints with the content of `surface`. */\n static createForSurface(surface: Surface): Pattern {\n return wrapPattern(cairoPatternCreateForSurface(getHandle(surface)));\n }\n\n /** GType of `CairoPattern`, the boxed type this class is registered under. */\n declare __type__: bigint;\n\n /** Adds an opaque color stop at `offset` (0 to 1) to a gradient pattern. */\n addColorStopRgb(offset: number, red: number, green: number, blue: number): void {\n cairoPatternAddColorStopRgb(getHandle(this), offset, red, green, blue);\n }\n\n /** Adds a translucent color stop at `offset` (0 to 1) to a gradient pattern. */\n addColorStopRgba(offset: number, red: number, green: number, blue: number, alpha: number): void {\n cairoPatternAddColorStopRgba(getHandle(this), offset, red, green, blue, alpha);\n }\n\n /** Returns how many color stops a gradient pattern has. */\n getColorStopCount(): number {\n return readCount(cairoPatternGetColorStopCount, this);\n }\n\n /** Returns the color stop at `index` of a gradient pattern. */\n getColorStopRgba(index: number): ColorStop {\n const offset = { value: 0 };\n const color = readRgba((...refs) => cairoPatternGetColorStopRgba(getHandle(this), index, offset, ...refs));\n\n return { offset: offset.value, ...color };\n }\n\n /** Returns the color of a solid pattern. */\n getRgba(): RgbaColor {\n return readRgba((...refs) => cairoPatternGetRgba(getHandle(this), ...refs));\n }\n\n /** Returns the error status of the pattern, `Status.SUCCESS` when it is usable. */\n status(): Status {\n return cairoPatternStatus(getHandle(this)) as Status;\n }\n\n /** Sets how the pattern is extended outside its natural area. */\n setExtend(extend: Extend): void {\n cairoPatternSetExtend(getHandle(this), extend);\n }\n\n /** Returns how the pattern is extended outside its natural area. */\n getExtend(): Extend {\n return cairoPatternGetExtend(getHandle(this)) as Extend;\n }\n\n /** Sets the filter used when the pattern is resampled. */\n setFilter(filter: Filter): void {\n cairoPatternSetFilter(getHandle(this), filter);\n }\n\n /** Returns the filter used when the pattern is resampled. */\n getFilter(): Filter {\n return cairoPatternGetFilter(getHandle(this)) as Filter;\n }\n\n /** Sets the transformation from user space to pattern space. */\n setMatrix(matrix: Matrix): void {\n cairoPatternSetMatrix(getHandle(this), getHandle(matrix));\n }\n\n /** Returns the transformation from user space to pattern space. */\n getMatrix(): Matrix {\n const { handle, matrix } = allocMatrix();\n cairoPatternGetMatrix(getHandle(this), handle);\n\n return matrix;\n }\n\n /** Returns the kind of pattern this is. */\n getType(): PatternType {\n return cairoPatternGetType(getHandle(this)) as PatternType;\n }\n\n /** Returns the reference count of the pattern. */\n getReferenceCount(): number {\n return cairoPatternGetReferenceCount(getHandle(this)) as number;\n }\n}\n\n/** A linear gradient pattern, created with `Pattern.createLinear`. */\nclass LinearPattern extends Pattern {\n /** Returns the two end points of the gradient. */\n getLinearPoints(): LinearPoints {\n const x0 = { value: 0 };\n const y0 = { value: 0 };\n const x1 = { value: 0 };\n const y1 = { value: 0 };\n cairoPatternGetLinearPoints(getHandle(this), x0, y0, x1, y1);\n\n return { x0: x0.value, y0: y0.value, x1: x1.value, y1: y1.value };\n }\n}\n\n/** A radial gradient pattern, created with `Pattern.createRadial`. */\nclass RadialPattern extends Pattern {\n /** Returns the two circles of the gradient. */\n getRadialCircles(): RadialCircles {\n const x0 = { value: 0 };\n const y0 = { value: 0 };\n const r0 = { value: 0 };\n const x1 = { value: 0 };\n const y1 = { value: 0 };\n const r1 = { value: 0 };\n cairoPatternGetRadialCircles(getHandle(this), x0, y0, r0, x1, y1, r1);\n\n return { x0: x0.value, y0: y0.value, r0: r0.value, x1: x1.value, y1: y1.value, r1: r1.value };\n }\n}\n\n/**\n * A mesh gradient pattern, created with `Pattern.createMesh`: a set of Coons patches, each described between\n * `beginPatch` and `endPatch` by a path of up to four sides and the colors of its corners.\n */\nclass MeshPattern extends Pattern {\n /** Starts describing a new patch. */\n beginPatch(): void {\n cairoMeshPatternBeginPatch(getHandle(this));\n }\n\n /** Finishes the patch being described. */\n endPatch(): void {\n cairoMeshPatternEndPatch(getHandle(this));\n }\n\n /** Sets the first corner of the patch being described. */\n moveTo(x: number, y: number): void {\n cairoMeshPatternMoveTo(getHandle(this), x, y);\n }\n\n /** Adds a straight side from the previous corner to `(x, y)`. */\n lineTo(x: number, y: number): void {\n cairoMeshPatternLineTo(getHandle(this), x, y);\n }\n\n /** Adds a curved side from the previous corner through two control points to `(x3, y3)`. */\n curveTo(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number): void {\n cairoMeshPatternCurveTo(getHandle(this), x1, y1, x2, y2, x3, y3);\n }\n\n /** Sets an interior control point (0 to 3) of the patch being described. */\n setControlPoint(pointNum: number, x: number, y: number): void {\n cairoMeshPatternSetControlPoint(getHandle(this), pointNum, x, y);\n }\n\n /** Sets the opaque color of a corner (0 to 3) of the patch being described. */\n setCornerColorRgb(cornerNum: number, red: number, green: number, blue: number): void {\n cairoMeshPatternSetCornerColorRgb(getHandle(this), cornerNum, red, green, blue);\n }\n\n /** Sets the translucent color of a corner (0 to 3) of the patch being described. */\n setCornerColorRgba(cornerNum: number, red: number, green: number, blue: number, alpha: number): void {\n cairoMeshPatternSetCornerColorRgba(getHandle(this), cornerNum, red, green, blue, alpha);\n }\n\n /** Returns how many patches have been finished. */\n getPatchCount(): number {\n return readCount(cairoMeshPatternGetPatchCount, this);\n }\n\n /** Returns the path around patch `patchNum`. */\n getPath(patchNum: number): PathData[] {\n return parsePath(cairoMeshPatternGetPath(getHandle(this), patchNum) as ExternalObject<Handle>);\n }\n\n /** Returns control point `pointNum` of patch `patchNum`. */\n getControlPoint(patchNum: number, pointNum: number): Point {\n const x = { value: 0 };\n const y = { value: 0 };\n cairoMeshPatternGetControlPoint(getHandle(this), patchNum, pointNum, x, y);\n\n return { x: x.value, y: y.value };\n }\n\n /** Returns the color of corner `cornerNum` of patch `patchNum`. */\n getCornerColorRgba(patchNum: number, cornerNum: number): RgbaColor {\n return readRgba((...refs) => cairoMeshPatternGetCornerColorRgba(getHandle(this), patchNum, cornerNum, ...refs));\n }\n}\n\nexport { LinearPattern, MeshPattern, Pattern, RadialPattern };\n"]}
1
+ {"version":3,"file":"pattern.js","sourceRoot":"","sources":["../src/pattern.ts"],"names":[],"mappings":"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","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 { ColorStop, LinearPoints, PathData, Point, RadialCircles, RgbaColor } from \"./types.js\";\nimport { type Extend, type Filter, PatternType, type Status } from \"./enums.js\";\nimport {\n bindCairo,\n type BoundFunction,\n cairoGType,\n MATRIX_T,\n PATH_T,\n PATTERN_FULL_T,\n PATTERN_T,\n SURFACE_T,\n} from \"./lib.js\";\nimport { allocMatrix, Matrix } from \"./matrix.js\";\nimport { parsePath } from \"./path.js\";\nimport { checkStatus } from \"./status.js\";\nimport { Surface } from \"./surface.js\";\n\ntype RgbaRefs = [\n red: { value: number },\n green: { value: number },\n blue: { value: number },\n alpha: { value: number },\n];\n\nconst PATTERN_TYPE = cairoGType(\"cairo_gobject_pattern_get_type\");\nconst FOUR_DOUBLES_OUT = [t.ref(t.float64), t.ref(t.float64), t.ref(t.float64), t.ref(t.float64)];\nconst POINT_ARGS = [PATTERN_T, t.float64, t.float64];\nconst cairoPatternCreateRgb = bindCairo(\"cairo_pattern_create_rgb\", [t.float64, t.float64, t.float64], PATTERN_FULL_T);\n\nconst cairoPatternCreateRgba = bindCairo(\n \"cairo_pattern_create_rgba\",\n [t.float64, t.float64, t.float64, t.float64],\n PATTERN_FULL_T,\n);\n\nconst cairoPatternCreateLinear = bindCairo(\n \"cairo_pattern_create_linear\",\n [t.float64, t.float64, t.float64, t.float64],\n PATTERN_FULL_T,\n);\n\nconst cairoPatternCreateRadial = bindCairo(\n \"cairo_pattern_create_radial\",\n [t.float64, t.float64, t.float64, t.float64, t.float64, t.float64],\n PATTERN_FULL_T,\n);\n\nconst cairoPatternCreateMesh = bindCairo(\"cairo_pattern_create_mesh\", [], PATTERN_FULL_T);\nconst cairoPatternCreateForSurface = bindCairo(\"cairo_pattern_create_for_surface\", [SURFACE_T], PATTERN_FULL_T);\n\nconst cairoPatternAddColorStopRgb = bindCairo(\n \"cairo_pattern_add_color_stop_rgb\",\n [PATTERN_T, t.float64, t.float64, t.float64, t.float64],\n t.void,\n);\n\nconst cairoPatternAddColorStopRgba = bindCairo(\n \"cairo_pattern_add_color_stop_rgba\",\n [PATTERN_T, t.float64, t.float64, t.float64, t.float64, t.float64],\n t.void,\n);\n\nconst cairoPatternGetColorStopCount = bindCairo(\n \"cairo_pattern_get_color_stop_count\",\n [PATTERN_T, t.ref(t.int32)],\n t.int32,\n);\n\nconst cairoPatternGetColorStopRgba = bindCairo(\n \"cairo_pattern_get_color_stop_rgba\",\n [PATTERN_T, t.int32, t.ref(t.float64), ...FOUR_DOUBLES_OUT],\n t.int32,\n);\n\nconst cairoPatternGetRgba = bindCairo(\"cairo_pattern_get_rgba\", [PATTERN_T, ...FOUR_DOUBLES_OUT], t.int32);\nconst cairoPatternStatus = bindCairo(\"cairo_pattern_status\", [PATTERN_T], t.int32);\nconst cairoPatternSetExtend = bindCairo(\"cairo_pattern_set_extend\", [PATTERN_T, t.int32], t.void);\nconst cairoPatternGetExtend = bindCairo(\"cairo_pattern_get_extend\", [PATTERN_T], t.int32);\nconst cairoPatternSetFilter = bindCairo(\"cairo_pattern_set_filter\", [PATTERN_T, t.int32], t.void);\nconst cairoPatternGetFilter = bindCairo(\"cairo_pattern_get_filter\", [PATTERN_T], t.int32);\nconst cairoPatternSetMatrix = bindCairo(\"cairo_pattern_set_matrix\", [PATTERN_T, MATRIX_T], t.void);\nconst cairoPatternGetMatrix = bindCairo(\"cairo_pattern_get_matrix\", [PATTERN_T, MATRIX_T], t.void);\nconst cairoPatternGetType = bindCairo(\"cairo_pattern_get_type\", [PATTERN_T], t.int32);\nconst cairoPatternGetReferenceCount = bindCairo(\"cairo_pattern_get_reference_count\", [PATTERN_T], t.int32);\nconst cairoPatternGetSurface = bindCairo(\"cairo_pattern_get_surface\", [PATTERN_T, t.ref(SURFACE_T)], t.int32);\n\nconst cairoPatternGetLinearPoints = bindCairo(\n \"cairo_pattern_get_linear_points\",\n [PATTERN_T, ...FOUR_DOUBLES_OUT],\n t.int32,\n);\n\nconst cairoPatternGetRadialCircles = bindCairo(\n \"cairo_pattern_get_radial_circles\",\n [PATTERN_T, ...FOUR_DOUBLES_OUT, t.ref(t.float64), t.ref(t.float64)],\n t.int32,\n);\n\nconst cairoMeshPatternBeginPatch = bindCairo(\"cairo_mesh_pattern_begin_patch\", [PATTERN_T], t.void);\nconst cairoMeshPatternEndPatch = bindCairo(\"cairo_mesh_pattern_end_patch\", [PATTERN_T], t.void);\nconst cairoMeshPatternMoveTo = bindCairo(\"cairo_mesh_pattern_move_to\", POINT_ARGS, t.void);\nconst cairoMeshPatternLineTo = bindCairo(\"cairo_mesh_pattern_line_to\", POINT_ARGS, t.void);\n\nconst cairoMeshPatternCurveTo = bindCairo(\n \"cairo_mesh_pattern_curve_to\",\n [PATTERN_T, t.float64, t.float64, t.float64, t.float64, t.float64, t.float64],\n t.void,\n);\n\nconst cairoMeshPatternSetControlPoint = bindCairo(\n \"cairo_mesh_pattern_set_control_point\",\n [PATTERN_T, t.int32, t.float64, t.float64],\n t.void,\n);\n\nconst cairoMeshPatternSetCornerColorRgb = bindCairo(\n \"cairo_mesh_pattern_set_corner_color_rgb\",\n [PATTERN_T, t.int32, t.float64, t.float64, t.float64],\n t.void,\n);\n\nconst cairoMeshPatternSetCornerColorRgba = bindCairo(\n \"cairo_mesh_pattern_set_corner_color_rgba\",\n [PATTERN_T, t.int32, t.float64, t.float64, t.float64, t.float64],\n t.void,\n);\n\nconst cairoMeshPatternGetPatchCount = bindCairo(\n \"cairo_mesh_pattern_get_patch_count\",\n [PATTERN_T, t.ref(t.int32)],\n t.int32,\n);\n\nconst cairoMeshPatternGetPath = bindCairo(\"cairo_mesh_pattern_get_path\", [PATTERN_T, t.int32], PATH_T);\n\nconst cairoMeshPatternGetControlPoint = bindCairo(\n \"cairo_mesh_pattern_get_control_point\",\n [PATTERN_T, t.int32, t.int32, t.ref(t.float64), t.ref(t.float64)],\n t.int32,\n);\n\nconst cairoMeshPatternGetCornerColorRgba = bindCairo(\n \"cairo_mesh_pattern_get_corner_color_rgba\",\n [PATTERN_T, t.int32, t.int32, ...FOUR_DOUBLES_OUT],\n t.int32,\n);\n\nconst wrapPattern = (handle: unknown): Pattern => wrapHandle(handle as ExternalObject<Handle>, Pattern);\n\nconst checkPattern = <T extends Pattern>(pattern: T): T => {\n checkStatus(pattern.status(), \"pattern\");\n\n return pattern;\n};\n\nconst readRgba = (fill: (...refs: RgbaRefs) => void): RgbaColor => {\n const red = { value: 0 };\n const green = { value: 0 };\n const blue = { value: 0 };\n const alpha = { value: 0 };\n fill(red, green, blue, alpha);\n\n return { red: red.value, green: green.value, blue: blue.value, alpha: alpha.value };\n};\n\nconst readCount = (boundFn: BoundFunction, self: object): number => {\n const count = { value: 0 };\n boundFn(getHandle(self), count);\n\n return count.value;\n};\n\nconst patternClassFor: WrapperClassResolver = (handle) => {\n const type = cairoPatternGetType(handle) as PatternType;\n\n if (type === PatternType.LINEAR) {\n return LinearPattern;\n }\n\n if (type === PatternType.RADIAL) {\n return RadialPattern;\n }\n\n if (type === PatternType.MESH) {\n return MeshPattern;\n }\n\n return Pattern;\n};\n\n/**\n * A cairo pattern (`cairo_pattern_t`): the source a context paints with, such as a solid color, a gradient,\n * a mesh or another surface. Patterns come from the `create*` statics or from a context, and wrap as the\n * concrete class their type reports (`instanceof LinearPattern` for a linear gradient).\n */\nabstract class Pattern {\n static {\n registerWrapperClass(this, PATTERN_TYPE);\n registerWrapperClassResolver(this, patternClassFor);\n }\n\n /** Creates an opaque solid-color pattern. */\n static createRgb(red: number, green: number, blue: number): Pattern {\n return checkPattern(wrapPattern(cairoPatternCreateRgb(red, green, blue)));\n }\n\n /** Creates a translucent solid-color pattern. */\n static createRgba(red: number, green: number, blue: number, alpha: number): Pattern {\n return checkPattern(wrapPattern(cairoPatternCreateRgba(red, green, blue, alpha)));\n }\n\n /** Creates a linear gradient between `(x0, y0)` and `(x1, y1)`; add stops with `addColorStopRgba`. */\n static createLinear(x0: number, y0: number, x1: number, y1: number): LinearPattern {\n const handle = cairoPatternCreateLinear(x0, y0, x1, y1) as ExternalObject<Handle>;\n\n return checkPattern(wrapHandle(handle, LinearPattern));\n }\n\n /** Creates a radial gradient between two circles; add stops with `addColorStopRgba`. */\n static createRadial(\n cx0: number,\n cy0: number,\n radius0: number,\n cx1: number,\n cy1: number,\n radius1: number,\n ): RadialPattern {\n const handle = cairoPatternCreateRadial(cx0, cy0, radius0, cx1, cy1, radius1) as ExternalObject<Handle>;\n\n return checkPattern(wrapHandle(handle, RadialPattern));\n }\n\n /** Creates an empty mesh gradient; describe its patches with the `MeshPattern` methods. */\n static createMesh(): MeshPattern {\n return checkPattern(wrapHandle(cairoPatternCreateMesh() as ExternalObject<Handle>, MeshPattern));\n }\n\n /** Creates a pattern that paints with the content of `surface`. */\n static createForSurface(surface: Surface): Pattern {\n const handle = getHandle(surface);\n\n return checkPattern(wrapPattern(cairoPatternCreateForSurface(handle)));\n }\n\n /** GType of `CairoPattern`, the boxed type this class is registered under. */\n declare __type__: bigint;\n\n /** Adds an opaque color stop at `offset` (0 to 1) to a gradient pattern. */\n addColorStopRgb(offset: number, red: number, green: number, blue: number): void {\n cairoPatternAddColorStopRgb(getHandle(this), offset, red, green, blue);\n }\n\n /** Adds a translucent color stop at `offset` (0 to 1) to a gradient pattern. */\n addColorStopRgba(offset: number, red: number, green: number, blue: number, alpha: number): void {\n cairoPatternAddColorStopRgba(getHandle(this), offset, red, green, blue, alpha);\n }\n\n /** Returns how many color stops a gradient pattern has. */\n getColorStopCount(): number {\n return readCount(cairoPatternGetColorStopCount, this);\n }\n\n /** Returns the color stop at `index` of a gradient pattern. */\n getColorStopRgba(index: number): ColorStop {\n const offset = { value: 0 };\n const color = readRgba((...refs) => cairoPatternGetColorStopRgba(getHandle(this), index, offset, ...refs));\n\n return { offset: offset.value, ...color };\n }\n\n /** Returns the color of a solid pattern. */\n getRgba(): RgbaColor {\n return readRgba((...refs) => cairoPatternGetRgba(getHandle(this), ...refs));\n }\n\n /** Returns the error status of the pattern, `Status.SUCCESS` when it is usable. */\n status(): Status {\n return cairoPatternStatus(getHandle(this)) as Status;\n }\n\n /** Sets how the pattern is extended outside its natural area. */\n setExtend(extend: Extend): void {\n cairoPatternSetExtend(getHandle(this), extend);\n }\n\n /** Returns how the pattern is extended outside its natural area. */\n getExtend(): Extend {\n return cairoPatternGetExtend(getHandle(this)) as Extend;\n }\n\n /** Sets the filter used when the pattern is resampled. */\n setFilter(filter: Filter): void {\n cairoPatternSetFilter(getHandle(this), filter);\n }\n\n /** Returns the filter used when the pattern is resampled. */\n getFilter(): Filter {\n return cairoPatternGetFilter(getHandle(this)) as Filter;\n }\n\n /** Sets the transformation from user space to pattern space. */\n setMatrix(matrix: Matrix): void {\n cairoPatternSetMatrix(getHandle(this), getHandle(matrix));\n }\n\n /** Returns the transformation from user space to pattern space. */\n getMatrix(): Matrix {\n const { handle, matrix } = allocMatrix();\n cairoPatternGetMatrix(getHandle(this), handle);\n\n return matrix;\n }\n\n /** Returns the kind of pattern this is. */\n getType(): PatternType {\n return cairoPatternGetType(getHandle(this)) as PatternType;\n }\n\n /** Returns the reference count of the pattern. */\n getReferenceCount(): number {\n return cairoPatternGetReferenceCount(getHandle(this)) as number;\n }\n\n /** Returns the surface of a surface pattern; throws for a pattern that has no surface. */\n getSurface(): Surface {\n const surface: { value: ExternalObject<Handle> | null } = { value: null };\n checkStatus(cairoPatternGetSurface(getHandle(this), surface) as Status, \"pattern\");\n\n if (surface.value === null) {\n throw new Error(\"cairo pattern has no surface\");\n }\n\n return wrapHandle(surface.value, Surface);\n }\n}\n\n/** A linear gradient pattern, created with `Pattern.createLinear`. */\nclass LinearPattern extends Pattern {\n /** Returns the two end points of the gradient. */\n getLinearPoints(): LinearPoints {\n const x0 = { value: 0 };\n const y0 = { value: 0 };\n const x1 = { value: 0 };\n const y1 = { value: 0 };\n cairoPatternGetLinearPoints(getHandle(this), x0, y0, x1, y1);\n\n return { x0: x0.value, y0: y0.value, x1: x1.value, y1: y1.value };\n }\n}\n\n/** A radial gradient pattern, created with `Pattern.createRadial`. */\nclass RadialPattern extends Pattern {\n /** Returns the two circles of the gradient. */\n getRadialCircles(): RadialCircles {\n const x0 = { value: 0 };\n const y0 = { value: 0 };\n const r0 = { value: 0 };\n const x1 = { value: 0 };\n const y1 = { value: 0 };\n const r1 = { value: 0 };\n cairoPatternGetRadialCircles(getHandle(this), x0, y0, r0, x1, y1, r1);\n\n return { x0: x0.value, y0: y0.value, r0: r0.value, x1: x1.value, y1: y1.value, r1: r1.value };\n }\n}\n\n/**\n * A mesh gradient pattern, created with `Pattern.createMesh`: a set of Coons patches, each described between\n * `beginPatch` and `endPatch` by a path of up to four sides and the colors of its corners.\n */\nclass MeshPattern extends Pattern {\n /** Starts describing a new patch. */\n beginPatch(): void {\n cairoMeshPatternBeginPatch(getHandle(this));\n }\n\n /** Finishes the patch being described. */\n endPatch(): void {\n cairoMeshPatternEndPatch(getHandle(this));\n }\n\n /** Sets the first corner of the patch being described. */\n moveTo(x: number, y: number): void {\n cairoMeshPatternMoveTo(getHandle(this), x, y);\n }\n\n /** Adds a straight side from the previous corner to `(x, y)`. */\n lineTo(x: number, y: number): void {\n cairoMeshPatternLineTo(getHandle(this), x, y);\n }\n\n /** Adds a curved side from the previous corner through two control points to `(x3, y3)`. */\n curveTo(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number): void {\n cairoMeshPatternCurveTo(getHandle(this), x1, y1, x2, y2, x3, y3);\n }\n\n /** Sets an interior control point (0 to 3) of the patch being described. */\n setControlPoint(pointNum: number, x: number, y: number): void {\n cairoMeshPatternSetControlPoint(getHandle(this), pointNum, x, y);\n }\n\n /** Sets the opaque color of a corner (0 to 3) of the patch being described. */\n setCornerColorRgb(cornerNum: number, red: number, green: number, blue: number): void {\n cairoMeshPatternSetCornerColorRgb(getHandle(this), cornerNum, red, green, blue);\n }\n\n /** Sets the translucent color of a corner (0 to 3) of the patch being described. */\n setCornerColorRgba(cornerNum: number, red: number, green: number, blue: number, alpha: number): void {\n cairoMeshPatternSetCornerColorRgba(getHandle(this), cornerNum, red, green, blue, alpha);\n }\n\n /** Returns how many patches have been finished. */\n getPatchCount(): number {\n return readCount(cairoMeshPatternGetPatchCount, this);\n }\n\n /** Returns the path around patch `patchNum`. */\n getPath(patchNum: number): PathData[] {\n return parsePath(cairoMeshPatternGetPath(getHandle(this), patchNum) as ExternalObject<Handle>);\n }\n\n /** Returns control point `pointNum` of patch `patchNum`. */\n getControlPoint(patchNum: number, pointNum: number): Point {\n const x = { value: 0 };\n const y = { value: 0 };\n cairoMeshPatternGetControlPoint(getHandle(this), patchNum, pointNum, x, y);\n\n return { x: x.value, y: y.value };\n }\n\n /** Returns the color of corner `cornerNum` of patch `patchNum`. */\n getCornerColorRgba(patchNum: number, cornerNum: number): RgbaColor {\n return readRgba((...refs) => cairoMeshPatternGetCornerColorRgba(getHandle(this), patchNum, cornerNum, ...refs));\n }\n}\n\nexport { LinearPattern, MeshPattern, Pattern, RadialPattern };\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"region.d.ts","sourceRoot":"","sources":["../src/region.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAUhD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAqD5C;;;GAGG;AACH,cAAM,MAAM;IAKR,+BAA+B;IAC/B,MAAM,CAAC,KAAK,IAAI,MAAM;IAItB,+DAA+D;IAC/D,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAIrC,wCAAwC;IACxC,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM;IAI/C,4FAA4F;IAC5F,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,MAAM;IAUvD,6EAA6E;IACrE,QAAQ,EAAE,MAAM,CAAC;IAEzB,wCAAwC;gBAC5B,IAAI,EAAE,YAAY;IAI9B,6DAA6D;IAC7D,IAAI,IAAI,MAAM;IAId,kFAAkF;IAClF,MAAM,IAAI,MAAM;IAIhB,oDAAoD;IACpD,UAAU,IAAI,YAAY;IAO1B,sDAAsD;IACtD,aAAa,IAAI,MAAM;IAIvB,qEAAqE;IACrE,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY;IAOvC,iDAAiD;IACjD,OAAO,IAAI,OAAO;IAIlB,iEAAiE;IACjE,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO;IAI5C,+EAA+E;IAC/E,iBAAiB,CAAC,IAAI,EAAE,YAAY,GAAG,aAAa;IAIpD,kEAAkE;IAClE,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAI7B,yCAAyC;IACzC,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAIvC,0DAA0D;IAC1D,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI9B,yDAAyD;IACzD,kBAAkB,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAI5C,mDAAmD;IACnD,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI7B,kDAAkD;IAClD,iBAAiB,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAI3C,8CAA8C;IAC9C,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI1B,6CAA6C;IAC7C,cAAc,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAIxC,uEAAuE;IACvE,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIxB,sEAAsE;IACtE,YAAY,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;CAGzC;AAED,OAAO,EAAE,MAAM,EAAE,CAAC"}
1
+ {"version":3,"file":"region.d.ts","sourceRoot":"","sources":["../src/region.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAUhD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAsD5C;;;GAGG;AACH,cAAM,MAAM;IAKR,+BAA+B;IAC/B,MAAM,CAAC,KAAK,IAAI,MAAM;IAItB,+DAA+D;IAC/D,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAIrC,wCAAwC;IACxC,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM;IAI/C,4FAA4F;IAC5F,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,MAAM;IAUvD,6EAA6E;IACrE,QAAQ,EAAE,MAAM,CAAC;IAEzB,wCAAwC;gBAC5B,IAAI,EAAE,YAAY;IAI9B,6DAA6D;IAC7D,IAAI,IAAI,MAAM;IAId,kFAAkF;IAClF,MAAM,IAAI,MAAM;IAIhB,oDAAoD;IACpD,UAAU,IAAI,YAAY;IAO1B,sDAAsD;IACtD,aAAa,IAAI,MAAM;IAIvB,qEAAqE;IACrE,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY;IAOvC,iDAAiD;IACjD,OAAO,IAAI,OAAO;IAIlB,iEAAiE;IACjE,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO;IAI5C,+EAA+E;IAC/E,iBAAiB,CAAC,IAAI,EAAE,YAAY,GAAG,aAAa;IAIpD,kEAAkE;IAClE,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAI7B,yCAAyC;IACzC,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAIvC,0DAA0D;IAC1D,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI9B,yDAAyD;IACzD,kBAAkB,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAI5C,mDAAmD;IACnD,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI7B,kDAAkD;IAClD,iBAAiB,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAI3C,8CAA8C;IAC9C,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI1B,6CAA6C;IAC7C,cAAc,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAIxC,uEAAuE;IACvE,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIxB,sEAAsE;IACtE,YAAY,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;CAGzC;AAED,OAAO,EAAE,MAAM,EAAE,CAAC"}
package/dist/region.js CHANGED
@@ -1,4 +1,4 @@
1
- import { alloc, getHandle, registerWrapperClass, setHandle, t, wrapHandle, write, } from "@gtkx/runtime";
1
+ import { alloc, getHandle, registerWrapperClass, setHandle, t, wrapHandle, } from "@gtkx/runtime";
2
2
  import { bindCairo, cairoGType, RECTANGLE_INT_ARRAY_T, RECTANGLE_INT_T, REGION_FULL_T, REGION_T, } from "./lib.js";
3
3
  import { RectangleInt } from "./structs.js";
4
4
  const REGION_TYPE = cairoGType("cairo_gobject_region_get_type");
@@ -26,14 +26,15 @@ const cairoRegionIntersectRectangle = bindCairo("cairo_region_intersect_rectangl
26
26
  const cairoRegionSubtractRectangle = bindCairo("cairo_region_subtract_rectangle", RECTANGLE_OP_ARGS, t.int32);
27
27
  const cairoRegionUnionRectangle = bindCairo("cairo_region_union_rectangle", RECTANGLE_OP_ARGS, t.int32);
28
28
  const cairoRegionXorRectangle = bindCairo("cairo_region_xor_rectangle", RECTANGLE_OP_ARGS, t.int32);
29
+ const INT = t.fieldAt(t.int32);
29
30
  const allocRectangleBuffer = (rects) => {
30
31
  const buffer = alloc(rects.length * RECTANGLE_INT_SIZE);
31
32
  let offset = 0;
32
33
  for (const rect of rects) {
33
- write(buffer, t.int32, offset, rect.x);
34
- write(buffer, t.int32, offset + 4, rect.y);
35
- write(buffer, t.int32, offset + 8, rect.width);
36
- write(buffer, t.int32, offset + 12, rect.height);
34
+ INT.write(buffer, offset, rect.x);
35
+ INT.write(buffer, offset + 4, rect.y);
36
+ INT.write(buffer, offset + 8, rect.width);
37
+ INT.write(buffer, offset + 12, rect.height);
37
38
  offset += RECTANGLE_INT_SIZE;
38
39
  }
39
40
  return buffer;
@@ -1 +1 @@
1
- {"version":3,"file":"region.js","sourceRoot":"","sources":["../src/region.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n alloc,\n type ExternalObject,\n getHandle,\n type Handle,\n registerWrapperClass,\n setHandle,\n t,\n wrapHandle,\n write,\n} from \"@gtkx/runtime\";\nimport type { RegionOverlap, Status } from \"./enums.js\";\nimport type { RectangleData } from \"./types.js\";\nimport {\n bindCairo,\n type BoundFunction,\n cairoGType,\n RECTANGLE_INT_ARRAY_T,\n RECTANGLE_INT_T,\n REGION_FULL_T,\n REGION_T,\n} from \"./lib.js\";\nimport { RectangleInt } from \"./structs.js\";\n\nconst REGION_TYPE = cairoGType(\"cairo_gobject_region_get_type\");\nconst RECTANGLE_INT_SIZE = 16;\nconst BINARY_OP_ARGS = [REGION_T, REGION_T];\nconst RECTANGLE_OP_ARGS = [REGION_T, RECTANGLE_INT_T];\nconst cairoRegionCreate = bindCairo(\"cairo_region_create\", [], REGION_FULL_T);\nconst cairoRegionCreateRectangle = bindCairo(\"cairo_region_create_rectangle\", [RECTANGLE_INT_T], REGION_FULL_T);\n\nconst cairoRegionCreateRectangles = bindCairo(\n \"cairo_region_create_rectangles\",\n [RECTANGLE_INT_ARRAY_T, t.int32],\n REGION_FULL_T,\n);\n\nconst cairoRegionCopy = bindCairo(\"cairo_region_copy\", [REGION_T], REGION_FULL_T);\nconst cairoRegionStatus = bindCairo(\"cairo_region_status\", [REGION_T], t.int32);\nconst cairoRegionGetExtents = bindCairo(\"cairo_region_get_extents\", [REGION_T, RECTANGLE_INT_T], t.void);\nconst cairoRegionNumRectangles = bindCairo(\"cairo_region_num_rectangles\", [REGION_T], t.int32);\nconst cairoRegionGetRectangle = bindCairo(\"cairo_region_get_rectangle\", [REGION_T, t.int32, RECTANGLE_INT_T], t.void);\nconst cairoRegionIsEmpty = bindCairo(\"cairo_region_is_empty\", [REGION_T], t.boolean);\nconst cairoRegionContainsPoint = bindCairo(\"cairo_region_contains_point\", [REGION_T, t.int32, t.int32], t.boolean);\nconst cairoRegionContainsRectangle = bindCairo(\"cairo_region_contains_rectangle\", RECTANGLE_OP_ARGS, t.int32);\nconst cairoRegionEqual = bindCairo(\"cairo_region_equal\", BINARY_OP_ARGS, t.boolean);\nconst cairoRegionTranslate = bindCairo(\"cairo_region_translate\", [REGION_T, t.int32, t.int32], t.void);\nconst cairoRegionIntersect = bindCairo(\"cairo_region_intersect\", BINARY_OP_ARGS, t.int32);\nconst cairoRegionSubtract = bindCairo(\"cairo_region_subtract\", BINARY_OP_ARGS, t.int32);\nconst cairoRegionUnion = bindCairo(\"cairo_region_union\", BINARY_OP_ARGS, t.int32);\nconst cairoRegionXor = bindCairo(\"cairo_region_xor\", BINARY_OP_ARGS, t.int32);\nconst cairoRegionIntersectRectangle = bindCairo(\"cairo_region_intersect_rectangle\", RECTANGLE_OP_ARGS, t.int32);\nconst cairoRegionSubtractRectangle = bindCairo(\"cairo_region_subtract_rectangle\", RECTANGLE_OP_ARGS, t.int32);\nconst cairoRegionUnionRectangle = bindCairo(\"cairo_region_union_rectangle\", RECTANGLE_OP_ARGS, t.int32);\nconst cairoRegionXorRectangle = bindCairo(\"cairo_region_xor_rectangle\", RECTANGLE_OP_ARGS, t.int32);\n\nconst allocRectangleBuffer = (rects: RectangleData[]): ExternalObject<Handle> => {\n const buffer = alloc(rects.length * RECTANGLE_INT_SIZE);\n let offset = 0;\n\n for (const rect of rects) {\n write(buffer, t.int32, offset, rect.x);\n write(buffer, t.int32, offset + 4, rect.y);\n write(buffer, t.int32, offset + 8, rect.width);\n write(buffer, t.int32, offset + 12, rect.height);\n offset += RECTANGLE_INT_SIZE;\n }\n\n return buffer;\n};\n\nconst applyRegionOp = (self: object, boundFn: BoundFunction, arg: object): void => {\n boundFn(getHandle(self), getHandle(arg));\n};\n\n/**\n * A cairo region (`cairo_region_t`): a set of integer rectangles, as GTK uses for clip and damage areas.\n * Set operations modify the region in place.\n */\nclass Region {\n static {\n registerWrapperClass(this, REGION_TYPE);\n }\n\n /** Creates an empty region. */\n static empty(): Region {\n return wrapHandle(cairoRegionCreate() as ExternalObject<Handle>, this);\n }\n\n /** Creates a region with the same rectangles as `original`. */\n static copy(original: Region): Region {\n return wrapHandle(cairoRegionCopy(getHandle(original)) as ExternalObject<Handle>, this);\n }\n\n /** Creates a region covering `rect`. */\n static forRectangle(rect: RectangleInt): Region {\n return wrapHandle(cairoRegionCreateRectangle(getHandle(rect)) as ExternalObject<Handle>, this);\n }\n\n /** Creates a region covering the union of `rects`; an empty list yields an empty region. */\n static createRectangles(rects: RectangleData[]): Region {\n if (rects.length === 0) {\n return this.empty();\n }\n\n const buffer = allocRectangleBuffer(rects);\n\n return wrapHandle(cairoRegionCreateRectangles(buffer, rects.length) as ExternalObject<Handle>, this);\n }\n\n /** GType of `CairoRegion`, the boxed type this class is registered under. */\n declare __type__: bigint;\n\n /** Creates a region covering `rect`. */\n constructor(rect: RectangleInt) {\n setHandle(this, cairoRegionCreateRectangle(getHandle(rect)) as ExternalObject<Handle>);\n }\n\n /** Returns a region with the same rectangles as this one. */\n copy(): Region {\n return wrapHandle(cairoRegionCopy(getHandle(this)) as ExternalObject<Handle>, Region);\n }\n\n /** Returns the error status of the region, `Status.SUCCESS` when it is usable. */\n status(): Status {\n return cairoRegionStatus(getHandle(this)) as Status;\n }\n\n /** Returns the bounding rectangle of the region. */\n getExtents(): RectangleInt {\n const rect = new RectangleInt();\n cairoRegionGetExtents(getHandle(this), getHandle(rect));\n\n return rect;\n }\n\n /** Returns how many rectangles make up the region. */\n numRectangles(): number {\n return cairoRegionNumRectangles(getHandle(this)) as number;\n }\n\n /** Returns the `nth` rectangle of the region, counting from zero. */\n getRectangle(nth: number): RectangleInt {\n const rect = new RectangleInt();\n cairoRegionGetRectangle(getHandle(this), nth, getHandle(rect));\n\n return rect;\n }\n\n /** Returns whether the region covers no area. */\n isEmpty(): boolean {\n return cairoRegionIsEmpty(getHandle(this)) as boolean;\n }\n\n /** Returns whether the point `(x, y)` lies inside the region. */\n containsPoint(x: number, y: number): boolean {\n return cairoRegionContainsPoint(getHandle(this), x, y) as boolean;\n }\n\n /** Returns whether `rect` lies inside, outside or partly inside the region. */\n containsRectangle(rect: RectangleInt): RegionOverlap {\n return cairoRegionContainsRectangle(getHandle(this), getHandle(rect)) as RegionOverlap;\n }\n\n /** Returns whether the region covers the same area as `other`. */\n equal(other: Region): boolean {\n return cairoRegionEqual(getHandle(this), getHandle(other)) as boolean;\n }\n\n /** Moves the region by `dx` and `dy`. */\n translate(dx: number, dy: number): void {\n cairoRegionTranslate(getHandle(this), dx, dy);\n }\n\n /** Keeps only the area the region shares with `other`. */\n intersect(other: Region): void {\n applyRegionOp(this, cairoRegionIntersect, other);\n }\n\n /** Keeps only the area the region shares with `rect`. */\n intersectRectangle(rect: RectangleInt): void {\n applyRegionOp(this, cairoRegionIntersectRectangle, rect);\n }\n\n /** Removes the area of `other` from the region. */\n subtract(other: Region): void {\n applyRegionOp(this, cairoRegionSubtract, other);\n }\n\n /** Removes the area of `rect` from the region. */\n subtractRectangle(rect: RectangleInt): void {\n applyRegionOp(this, cairoRegionSubtractRectangle, rect);\n }\n\n /** Adds the area of `other` to the region. */\n union(other: Region): void {\n applyRegionOp(this, cairoRegionUnion, other);\n }\n\n /** Adds the area of `rect` to the region. */\n unionRectangle(rect: RectangleInt): void {\n applyRegionOp(this, cairoRegionUnionRectangle, rect);\n }\n\n /** Keeps the area covered by exactly one of the region and `other`. */\n xor(other: Region): void {\n applyRegionOp(this, cairoRegionXor, other);\n }\n\n /** Keeps the area covered by exactly one of the region and `rect`. */\n xorRectangle(rect: RectangleInt): void {\n applyRegionOp(this, cairoRegionXorRectangle, rect);\n }\n}\n\nexport { Region };\n"]}
1
+ {"version":3,"file":"region.js","sourceRoot":"","sources":["../src/region.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n alloc,\n type ExternalObject,\n getHandle,\n type Handle,\n registerWrapperClass,\n setHandle,\n t,\n wrapHandle,\n} from \"@gtkx/runtime\";\nimport type { RegionOverlap, Status } from \"./enums.js\";\nimport type { RectangleData } from \"./types.js\";\nimport {\n bindCairo,\n type BoundFunction,\n cairoGType,\n RECTANGLE_INT_ARRAY_T,\n RECTANGLE_INT_T,\n REGION_FULL_T,\n REGION_T,\n} from \"./lib.js\";\nimport { RectangleInt } from \"./structs.js\";\n\nconst REGION_TYPE = cairoGType(\"cairo_gobject_region_get_type\");\nconst RECTANGLE_INT_SIZE = 16;\nconst BINARY_OP_ARGS = [REGION_T, REGION_T];\nconst RECTANGLE_OP_ARGS = [REGION_T, RECTANGLE_INT_T];\nconst cairoRegionCreate = bindCairo(\"cairo_region_create\", [], REGION_FULL_T);\nconst cairoRegionCreateRectangle = bindCairo(\"cairo_region_create_rectangle\", [RECTANGLE_INT_T], REGION_FULL_T);\n\nconst cairoRegionCreateRectangles = bindCairo(\n \"cairo_region_create_rectangles\",\n [RECTANGLE_INT_ARRAY_T, t.int32],\n REGION_FULL_T,\n);\n\nconst cairoRegionCopy = bindCairo(\"cairo_region_copy\", [REGION_T], REGION_FULL_T);\nconst cairoRegionStatus = bindCairo(\"cairo_region_status\", [REGION_T], t.int32);\nconst cairoRegionGetExtents = bindCairo(\"cairo_region_get_extents\", [REGION_T, RECTANGLE_INT_T], t.void);\nconst cairoRegionNumRectangles = bindCairo(\"cairo_region_num_rectangles\", [REGION_T], t.int32);\nconst cairoRegionGetRectangle = bindCairo(\"cairo_region_get_rectangle\", [REGION_T, t.int32, RECTANGLE_INT_T], t.void);\nconst cairoRegionIsEmpty = bindCairo(\"cairo_region_is_empty\", [REGION_T], t.boolean);\nconst cairoRegionContainsPoint = bindCairo(\"cairo_region_contains_point\", [REGION_T, t.int32, t.int32], t.boolean);\nconst cairoRegionContainsRectangle = bindCairo(\"cairo_region_contains_rectangle\", RECTANGLE_OP_ARGS, t.int32);\nconst cairoRegionEqual = bindCairo(\"cairo_region_equal\", BINARY_OP_ARGS, t.boolean);\nconst cairoRegionTranslate = bindCairo(\"cairo_region_translate\", [REGION_T, t.int32, t.int32], t.void);\nconst cairoRegionIntersect = bindCairo(\"cairo_region_intersect\", BINARY_OP_ARGS, t.int32);\nconst cairoRegionSubtract = bindCairo(\"cairo_region_subtract\", BINARY_OP_ARGS, t.int32);\nconst cairoRegionUnion = bindCairo(\"cairo_region_union\", BINARY_OP_ARGS, t.int32);\nconst cairoRegionXor = bindCairo(\"cairo_region_xor\", BINARY_OP_ARGS, t.int32);\nconst cairoRegionIntersectRectangle = bindCairo(\"cairo_region_intersect_rectangle\", RECTANGLE_OP_ARGS, t.int32);\nconst cairoRegionSubtractRectangle = bindCairo(\"cairo_region_subtract_rectangle\", RECTANGLE_OP_ARGS, t.int32);\nconst cairoRegionUnionRectangle = bindCairo(\"cairo_region_union_rectangle\", RECTANGLE_OP_ARGS, t.int32);\nconst cairoRegionXorRectangle = bindCairo(\"cairo_region_xor_rectangle\", RECTANGLE_OP_ARGS, t.int32);\nconst INT = t.fieldAt(t.int32);\n\nconst allocRectangleBuffer = (rects: RectangleData[]): ExternalObject<Handle> => {\n const buffer = alloc(rects.length * RECTANGLE_INT_SIZE);\n let offset = 0;\n\n for (const rect of rects) {\n INT.write(buffer, offset, rect.x);\n INT.write(buffer, offset + 4, rect.y);\n INT.write(buffer, offset + 8, rect.width);\n INT.write(buffer, offset + 12, rect.height);\n offset += RECTANGLE_INT_SIZE;\n }\n\n return buffer;\n};\n\nconst applyRegionOp = (self: object, boundFn: BoundFunction, arg: object): void => {\n boundFn(getHandle(self), getHandle(arg));\n};\n\n/**\n * A cairo region (`cairo_region_t`): a set of integer rectangles, as GTK uses for clip and damage areas.\n * Set operations modify the region in place.\n */\nclass Region {\n static {\n registerWrapperClass(this, REGION_TYPE);\n }\n\n /** Creates an empty region. */\n static empty(): Region {\n return wrapHandle(cairoRegionCreate() as ExternalObject<Handle>, this);\n }\n\n /** Creates a region with the same rectangles as `original`. */\n static copy(original: Region): Region {\n return wrapHandle(cairoRegionCopy(getHandle(original)) as ExternalObject<Handle>, this);\n }\n\n /** Creates a region covering `rect`. */\n static forRectangle(rect: RectangleInt): Region {\n return wrapHandle(cairoRegionCreateRectangle(getHandle(rect)) as ExternalObject<Handle>, this);\n }\n\n /** Creates a region covering the union of `rects`; an empty list yields an empty region. */\n static createRectangles(rects: RectangleData[]): Region {\n if (rects.length === 0) {\n return this.empty();\n }\n\n const buffer = allocRectangleBuffer(rects);\n\n return wrapHandle(cairoRegionCreateRectangles(buffer, rects.length) as ExternalObject<Handle>, this);\n }\n\n /** GType of `CairoRegion`, the boxed type this class is registered under. */\n declare __type__: bigint;\n\n /** Creates a region covering `rect`. */\n constructor(rect: RectangleInt) {\n setHandle(this, cairoRegionCreateRectangle(getHandle(rect)) as ExternalObject<Handle>);\n }\n\n /** Returns a region with the same rectangles as this one. */\n copy(): Region {\n return wrapHandle(cairoRegionCopy(getHandle(this)) as ExternalObject<Handle>, Region);\n }\n\n /** Returns the error status of the region, `Status.SUCCESS` when it is usable. */\n status(): Status {\n return cairoRegionStatus(getHandle(this)) as Status;\n }\n\n /** Returns the bounding rectangle of the region. */\n getExtents(): RectangleInt {\n const rect = new RectangleInt();\n cairoRegionGetExtents(getHandle(this), getHandle(rect));\n\n return rect;\n }\n\n /** Returns how many rectangles make up the region. */\n numRectangles(): number {\n return cairoRegionNumRectangles(getHandle(this)) as number;\n }\n\n /** Returns the `nth` rectangle of the region, counting from zero. */\n getRectangle(nth: number): RectangleInt {\n const rect = new RectangleInt();\n cairoRegionGetRectangle(getHandle(this), nth, getHandle(rect));\n\n return rect;\n }\n\n /** Returns whether the region covers no area. */\n isEmpty(): boolean {\n return cairoRegionIsEmpty(getHandle(this)) as boolean;\n }\n\n /** Returns whether the point `(x, y)` lies inside the region. */\n containsPoint(x: number, y: number): boolean {\n return cairoRegionContainsPoint(getHandle(this), x, y) as boolean;\n }\n\n /** Returns whether `rect` lies inside, outside or partly inside the region. */\n containsRectangle(rect: RectangleInt): RegionOverlap {\n return cairoRegionContainsRectangle(getHandle(this), getHandle(rect)) as RegionOverlap;\n }\n\n /** Returns whether the region covers the same area as `other`. */\n equal(other: Region): boolean {\n return cairoRegionEqual(getHandle(this), getHandle(other)) as boolean;\n }\n\n /** Moves the region by `dx` and `dy`. */\n translate(dx: number, dy: number): void {\n cairoRegionTranslate(getHandle(this), dx, dy);\n }\n\n /** Keeps only the area the region shares with `other`. */\n intersect(other: Region): void {\n applyRegionOp(this, cairoRegionIntersect, other);\n }\n\n /** Keeps only the area the region shares with `rect`. */\n intersectRectangle(rect: RectangleInt): void {\n applyRegionOp(this, cairoRegionIntersectRectangle, rect);\n }\n\n /** Removes the area of `other` from the region. */\n subtract(other: Region): void {\n applyRegionOp(this, cairoRegionSubtract, other);\n }\n\n /** Removes the area of `rect` from the region. */\n subtractRectangle(rect: RectangleInt): void {\n applyRegionOp(this, cairoRegionSubtractRectangle, rect);\n }\n\n /** Adds the area of `other` to the region. */\n union(other: Region): void {\n applyRegionOp(this, cairoRegionUnion, other);\n }\n\n /** Adds the area of `rect` to the region. */\n unionRectangle(rect: RectangleInt): void {\n applyRegionOp(this, cairoRegionUnionRectangle, rect);\n }\n\n /** Keeps the area covered by exactly one of the region and `other`. */\n xor(other: Region): void {\n applyRegionOp(this, cairoRegionXor, other);\n }\n\n /** Keeps the area covered by exactly one of the region and `rect`. */\n xorRectangle(rect: RectangleInt): void {\n applyRegionOp(this, cairoRegionXorRectangle, rect);\n }\n}\n\nexport { Region };\n"]}
@@ -1,11 +1,11 @@
1
- import type { FontType, Status, TextClusterFlags } from "./enums.js";
2
- import type { CairoGlyph, CairoTextCluster, FontExtents, TextExtents } from "./types.js";
1
+ import type { FontType, Status } from "./enums.js";
2
+ import type { CairoGlyph, FontExtents, TextExtents } from "./types.js";
3
3
  import { FontFace } from "./font-face.js";
4
4
  import { FontOptions } from "./font-options.js";
5
5
  import { Matrix } from "./matrix.js";
6
6
  /**
7
7
  * A cairo scaled font (`cairo_scaled_font_t`): a font face frozen at a given font matrix, transformation and
8
- * set of font options, ready to measure and shape text.
8
+ * set of font options, ready to measure text and positioned glyphs.
9
9
  */
10
10
  declare class ScaledFont {
11
11
  /** Creates a scaled font, the same as `new ScaledFont(fontFace, fontMatrix, ctm, options)`. */
@@ -36,8 +36,6 @@ declare class ScaledFont {
36
36
  getType(): FontType;
37
37
  /** Returns the reference count of the scaled font. */
38
38
  getReferenceCount(): number;
39
- /** Shapes `text` starting at `(x, y)` into glyphs, clusters and the flags describing their order. */
40
- textToGlyphs(x: number, y: number, text: string): [CairoGlyph[], CairoTextCluster[], TextClusterFlags];
41
39
  }
42
40
  export { ScaledFont };
43
41
  //# sourceMappingURL=scaled-font.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scaled-font.d.ts","sourceRoot":"","sources":["../src/scaled-font.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACrE,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzF,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAehD,OAAO,EAAe,MAAM,EAAE,MAAM,aAAa,CAAC;AA0GlD;;;GAGG;AACH,cAAM,UAAU;IAKZ,+FAA+F;IAC/F,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,UAAU;IAIpG,iFAAiF;IACzE,QAAQ,EAAE,MAAM,CAAC;IAEzB,+GAA+G;gBACnG,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW;IAWrF,uFAAuF;IACvF,MAAM,IAAI,MAAM;IAIhB,uCAAuC;IACvC,OAAO,IAAI,WAAW;IAOtB,qCAAqC;IACrC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW;IAOtC,gDAAgD;IAChD,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,WAAW;IAQ/C,6FAA6F;IAC7F,WAAW,IAAI,QAAQ;IAIvB,2EAA2E;IAC3E,cAAc,IAAI,WAAW;IAO7B,gEAAgE;IAChE,aAAa,IAAI,MAAM;IAIvB,kFAAkF;IAClF,MAAM,IAAI,MAAM;IAIhB,uGAAuG;IACvG,cAAc,IAAI,MAAM;IAIxB,sDAAsD;IACtD,OAAO,IAAI,QAAQ;IAInB,sDAAsD;IACtD,iBAAiB,IAAI,MAAM;IAI3B,qGAAqG;IACrG,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,UAAU,EAAE,EAAE,gBAAgB,EAAE,EAAE,gBAAgB,CAAC;CAiCzG;AAED,OAAO,EAAE,UAAU,EAAE,CAAC"}
1
+ {"version":3,"file":"scaled-font.d.ts","sourceRoot":"","sources":["../src/scaled-font.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAchD,OAAO,EAAe,MAAM,EAAE,MAAM,aAAa,CAAC;AAsDlD;;;GAGG;AACH,cAAM,UAAU;IAKZ,+FAA+F;IAC/F,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,UAAU;IAIpG,iFAAiF;IACzE,QAAQ,EAAE,MAAM,CAAC;IAEzB,+GAA+G;gBACnG,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW;IAWrF,uFAAuF;IACvF,MAAM,IAAI,MAAM;IAIhB,uCAAuC;IACvC,OAAO,IAAI,WAAW;IAOtB,qCAAqC;IACrC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW;IAOtC,gDAAgD;IAChD,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,WAAW;IAQ/C,6FAA6F;IAC7F,WAAW,IAAI,QAAQ;IAIvB,2EAA2E;IAC3E,cAAc,IAAI,WAAW;IAO7B,gEAAgE;IAChE,aAAa,IAAI,MAAM;IAIvB,kFAAkF;IAClF,MAAM,IAAI,MAAM;IAIhB,uGAAuG;IACvG,cAAc,IAAI,MAAM;IAIxB,sDAAsD;IACtD,OAAO,IAAI,QAAQ;IAInB,sDAAsD;IACtD,iBAAiB,IAAI,MAAM;CAG9B;AAED,OAAO,EAAE,UAAU,EAAE,CAAC"}
@@ -1,71 +1,30 @@
1
- import { getHandle, read, registerWrapperClass, setHandle, t, wrapHandle, } from "@gtkx/runtime";
1
+ import { getHandle, registerWrapperClass, setHandle, t, wrapHandle, } from "@gtkx/runtime";
2
2
  import { FontFace } from "./font-face.js";
3
3
  import { FontOptions } from "./font-options.js";
4
- import { bindCairo, cairoGType, FONT_EXTENTS_T, FONT_FACE_T, FONT_OPTIONS_T, GLYPH_T, MATRIX_T, SCALED_FONT_FULL_T, SCALED_FONT_T, TEXT_CLUSTER_T, TEXT_EXTENTS_T, } from "./lib.js";
4
+ import { bindCairo, cairoGType, FONT_EXTENTS_T, FONT_FACE_T, FONT_OPTIONS_T, GLYPH_T, MATRIX_T, SCALED_FONT_FULL_T, SCALED_FONT_T, TEXT_EXTENTS_T, } from "./lib.js";
5
5
  import { allocMatrix, Matrix } from "./matrix.js";
6
6
  import { allocFontExtents, allocGlyphBuffer, allocTextExtents, readFontExtents, readTextExtents } from "./text.js";
7
7
  const SCALED_FONT_TYPE = cairoGType("cairo_gobject_scaled_font_get_type");
8
- const GLYPH_SIZE = 24;
9
- const CLUSTER_SIZE = 8;
10
8
  const cairoScaledFontStatus = bindCairo("cairo_scaled_font_status", [SCALED_FONT_T], t.int32);
11
9
  const cairoScaledFontExtents = bindCairo("cairo_scaled_font_extents", [SCALED_FONT_T, FONT_EXTENTS_T], t.void);
12
10
  const cairoScaledFontGetFontFace = bindCairo("cairo_scaled_font_get_font_face", [SCALED_FONT_T], FONT_FACE_T);
13
11
  const cairoScaledFontGetFontMatrix = bindCairo("cairo_scaled_font_get_font_matrix", [SCALED_FONT_T, MATRIX_T], t.void);
14
12
  const cairoScaledFontGetCtm = bindCairo("cairo_scaled_font_get_ctm", [SCALED_FONT_T, MATRIX_T], t.void);
15
13
  const cairoScaledFontGetType = bindCairo("cairo_scaled_font_get_type", [SCALED_FONT_T], t.int32);
16
- const cairoGlyphFree = bindCairo("cairo_glyph_free", [GLYPH_T], t.void);
17
- const cairoTextClusterFree = bindCairo("cairo_text_cluster_free", [TEXT_CLUSTER_T], t.void);
18
14
  const cairoScaledFontCreate = bindCairo("cairo_scaled_font_create", [FONT_FACE_T, MATRIX_T, MATRIX_T, FONT_OPTIONS_T], SCALED_FONT_FULL_T);
19
15
  const cairoScaledFontTextExtents = bindCairo("cairo_scaled_font_text_extents", [SCALED_FONT_T, t.string("full"), TEXT_EXTENTS_T], t.void);
20
16
  const cairoScaledFontGlyphExtents = bindCairo("cairo_scaled_font_glyph_extents", [SCALED_FONT_T, GLYPH_T, t.int32, TEXT_EXTENTS_T], t.void);
21
17
  const cairoScaledFontGetFontOptions = bindCairo("cairo_scaled_font_get_font_options", [SCALED_FONT_T, FONT_OPTIONS_T], t.void);
22
18
  const cairoScaledFontGetScaleMatrix = bindCairo("cairo_scaled_font_get_scale_matrix", [SCALED_FONT_T, MATRIX_T], t.void);
23
19
  const cairoScaledFontGetReferenceCount = bindCairo("cairo_scaled_font_get_reference_count", [SCALED_FONT_T], t.int32);
24
- const cairoScaledFontTextToGlyphs = bindCairo("cairo_scaled_font_text_to_glyphs", [
25
- SCALED_FONT_T,
26
- t.float64,
27
- t.float64,
28
- t.string("full"),
29
- t.int32,
30
- t.ref(t.struct("borrowed")),
31
- t.ref(t.int32),
32
- t.ref(t.struct("borrowed")),
33
- t.ref(t.int32),
34
- t.ref(t.int32),
35
- ], t.int32);
36
20
  const readMatrixVia = (self, boundFn) => {
37
21
  const { handle, matrix } = allocMatrix();
38
22
  boundFn(getHandle(self), handle);
39
23
  return matrix;
40
24
  };
41
- const readGlyphs = (buffer, count) => {
42
- if (buffer === null) {
43
- return [];
44
- }
45
- return Array.from({ length: count }, (_, index) => {
46
- const offset = index * GLYPH_SIZE;
47
- return {
48
- index: read(buffer, t.uint64, offset),
49
- x: read(buffer, t.float64, offset + 8),
50
- y: read(buffer, t.float64, offset + 16),
51
- };
52
- });
53
- };
54
- const readClusters = (buffer, count) => {
55
- if (buffer === null) {
56
- return [];
57
- }
58
- return Array.from({ length: count }, (_, index) => {
59
- const offset = index * CLUSTER_SIZE;
60
- return {
61
- numBytes: read(buffer, t.int32, offset),
62
- numGlyphs: read(buffer, t.int32, offset + 4),
63
- };
64
- });
65
- };
66
25
  /**
67
26
  * A cairo scaled font (`cairo_scaled_font_t`): a font face frozen at a given font matrix, transformation and
68
- * set of font options, ready to measure and shape text.
27
+ * set of font options, ready to measure text and positioned glyphs.
69
28
  */
70
29
  class ScaledFont {
71
30
  static {
@@ -133,24 +92,6 @@ class ScaledFont {
133
92
  getReferenceCount() {
134
93
  return cairoScaledFontGetReferenceCount(getHandle(this));
135
94
  }
136
- /** Shapes `text` starting at `(x, y)` into glyphs, clusters and the flags describing their order. */
137
- textToGlyphs(x, y, text) {
138
- const glyphsRef = { value: null };
139
- const numGlyphsRef = { value: 0 };
140
- const clustersRef = { value: null };
141
- const numClustersRef = { value: 0 };
142
- const clusterFlagsRef = { value: 0 };
143
- cairoScaledFontTextToGlyphs(getHandle(this), x, y, text, -1, glyphsRef, numGlyphsRef, clustersRef, numClustersRef, clusterFlagsRef);
144
- const glyphs = readGlyphs(glyphsRef.value, numGlyphsRef.value);
145
- const clusters = readClusters(clustersRef.value, numClustersRef.value);
146
- if (glyphsRef.value !== null) {
147
- cairoGlyphFree(glyphsRef.value);
148
- }
149
- if (clustersRef.value !== null) {
150
- cairoTextClusterFree(clustersRef.value);
151
- }
152
- return [glyphs, clusters, clusterFlagsRef.value];
153
- }
154
95
  }
155
96
  export { ScaledFont };
156
97
  //# sourceMappingURL=scaled-font.js.map