@gtkx/codegen 1.2.2 → 1.3.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 (199) hide show
  1. package/README.md +2 -1
  2. package/dist/analysis/descriptor-render.d.ts +7 -1
  3. package/dist/analysis/descriptor-render.d.ts.map +1 -1
  4. package/dist/analysis/descriptor-render.js +36 -15
  5. package/dist/analysis/descriptor-render.js.map +1 -1
  6. package/dist/analysis/descriptor.d.ts +4 -1
  7. package/dist/analysis/descriptor.d.ts.map +1 -1
  8. package/dist/analysis/descriptor.js +11 -2
  9. package/dist/analysis/descriptor.js.map +1 -1
  10. package/dist/analysis/param-capability.d.ts +5 -2
  11. package/dist/analysis/param-capability.d.ts.map +1 -1
  12. package/dist/analysis/param-capability.js +36 -4
  13. package/dist/analysis/param-capability.js.map +1 -1
  14. package/dist/analysis/param-structure.d.ts +1 -1
  15. package/dist/analysis/param-structure.d.ts.map +1 -1
  16. package/dist/analysis/param-structure.js.map +1 -1
  17. package/dist/analysis/ts-type.d.ts +1 -1
  18. package/dist/analysis/ts-type.d.ts.map +1 -1
  19. package/dist/analysis/ts-type.js +28 -10
  20. package/dist/analysis/ts-type.js.map +1 -1
  21. package/dist/compile.js +1 -1
  22. package/dist/compile.js.map +1 -1
  23. package/dist/docs/api-reference.d.ts +6 -0
  24. package/dist/docs/api-reference.d.ts.map +1 -1
  25. package/dist/docs/api-reference.js +11 -2
  26. package/dist/docs/api-reference.js.map +1 -1
  27. package/dist/docs/pipeline.d.ts +3 -0
  28. package/dist/docs/pipeline.d.ts.map +1 -1
  29. package/dist/docs/pipeline.js +10 -1
  30. package/dist/docs/pipeline.js.map +1 -1
  31. package/dist/fingerprint.d.ts +5 -0
  32. package/dist/fingerprint.d.ts.map +1 -1
  33. package/dist/fingerprint.js +107 -15
  34. package/dist/fingerprint.js.map +1 -1
  35. package/dist/gi.d.ts +3 -0
  36. package/dist/gi.d.ts.map +1 -1
  37. package/dist/gi.js +29 -7
  38. package/dist/gi.js.map +1 -1
  39. package/dist/gir/external-namespaces.d.ts +8 -0
  40. package/dist/gir/external-namespaces.d.ts.map +1 -0
  41. package/dist/gir/external-namespaces.js +4 -0
  42. package/dist/gir/external-namespaces.js.map +1 -0
  43. package/dist/gir/finish-overrides.d.ts +3 -0
  44. package/dist/gir/finish-overrides.d.ts.map +1 -0
  45. package/dist/gir/finish-overrides.js +5 -0
  46. package/dist/gir/finish-overrides.js.map +1 -0
  47. package/dist/gir/function.d.ts +5 -2
  48. package/dist/gir/function.d.ts.map +1 -1
  49. package/dist/gir/function.js +34 -5
  50. package/dist/gir/function.js.map +1 -1
  51. package/dist/gir/hidden-symbols.d.ts +3 -0
  52. package/dist/gir/hidden-symbols.d.ts.map +1 -0
  53. package/dist/gir/hidden-symbols.js +39 -0
  54. package/dist/gir/hidden-symbols.js.map +1 -0
  55. package/dist/gir/library.d.ts +22 -2
  56. package/dist/gir/library.d.ts.map +1 -1
  57. package/dist/gir/library.js +21 -3
  58. package/dist/gir/library.js.map +1 -1
  59. package/dist/gir/ucs4-overrides.d.ts +3 -0
  60. package/dist/gir/ucs4-overrides.d.ts.map +1 -0
  61. package/dist/gir/ucs4-overrides.js +7 -0
  62. package/dist/gir/ucs4-overrides.js.map +1 -0
  63. package/dist/jsx.d.ts.map +1 -1
  64. package/dist/jsx.js +27 -8
  65. package/dist/jsx.js.map +1 -1
  66. package/dist/runner.d.ts +8 -0
  67. package/dist/runner.d.ts.map +1 -1
  68. package/dist/runner.js +9 -3
  69. package/dist/runner.js.map +1 -1
  70. package/dist/store/external-package-links.d.ts +6 -0
  71. package/dist/store/external-package-links.d.ts.map +1 -0
  72. package/dist/store/external-package-links.js +158 -0
  73. package/dist/store/external-package-links.js.map +1 -0
  74. package/dist/store/gi/callable-doc.d.ts.map +1 -1
  75. package/dist/store/gi/callable-doc.js +4 -4
  76. package/dist/store/gi/callable-doc.js.map +1 -1
  77. package/dist/store/gi/callables.js +1 -1
  78. package/dist/store/gi/callables.js.map +1 -1
  79. package/dist/store/gi/class.d.ts.map +1 -1
  80. package/dist/store/gi/class.js +17 -0
  81. package/dist/store/gi/class.js.map +1 -1
  82. package/dist/store/gi/constructor-props.js +1 -1
  83. package/dist/store/gi/constructor-props.js.map +1 -1
  84. package/dist/store/gi/function.d.ts.map +1 -1
  85. package/dist/store/gi/function.js +2 -1
  86. package/dist/store/gi/function.js.map +1 -1
  87. package/dist/store/gi/gtype-binding.d.ts +2 -1
  88. package/dist/store/gi/gtype-binding.d.ts.map +1 -1
  89. package/dist/store/gi/gtype-binding.js +6 -1
  90. package/dist/store/gi/gtype-binding.js.map +1 -1
  91. package/dist/store/gi/method.d.ts +7 -2
  92. package/dist/store/gi/method.d.ts.map +1 -1
  93. package/dist/store/gi/method.js +126 -30
  94. package/dist/store/gi/method.js.map +1 -1
  95. package/dist/store/gi/param-marshal.d.ts +8 -1
  96. package/dist/store/gi/param-marshal.d.ts.map +1 -1
  97. package/dist/store/gi/param-marshal.js +52 -4
  98. package/dist/store/gi/param-marshal.js.map +1 -1
  99. package/dist/store/gi/record-constructor.d.ts.map +1 -1
  100. package/dist/store/gi/record-constructor.js +2 -3
  101. package/dist/store/gi/record-constructor.js.map +1 -1
  102. package/dist/store/gi/record-field-accessor.d.ts +2 -1
  103. package/dist/store/gi/record-field-accessor.d.ts.map +1 -1
  104. package/dist/store/gi/record-field-accessor.js +9 -3
  105. package/dist/store/gi/record-field-accessor.js.map +1 -1
  106. package/dist/store/gi/runtime-override.js +1 -1
  107. package/dist/store/gi/runtime-override.js.map +1 -1
  108. package/dist/store/gi/signal.js +2 -2
  109. package/dist/store/gi/signal.js.map +1 -1
  110. package/dist/store/gi/vtable.d.ts.map +1 -1
  111. package/dist/store/gi/vtable.js +82 -12
  112. package/dist/store/gi/vtable.js.map +1 -1
  113. package/dist/store/gi-store.d.ts +7 -2
  114. package/dist/store/gi-store.d.ts.map +1 -1
  115. package/dist/store/gi-store.js +19 -4
  116. package/dist/store/gi-store.js.map +1 -1
  117. package/dist/store/jsx/jsx.d.ts.map +1 -1
  118. package/dist/store/jsx/jsx.js +3 -1
  119. package/dist/store/jsx/jsx.js.map +1 -1
  120. package/dist/store/jsx-store.d.ts +8 -1
  121. package/dist/store/jsx-store.d.ts.map +1 -1
  122. package/dist/store/jsx-store.js +9 -2
  123. package/dist/store/jsx-store.js.map +1 -1
  124. package/dist/store/resolve-store.d.ts +2 -1
  125. package/dist/store/resolve-store.d.ts.map +1 -1
  126. package/dist/store/resolve-store.js +2 -1
  127. package/dist/store/resolve-store.js.map +1 -1
  128. package/dist/store/store-fs.d.ts +2 -1
  129. package/dist/store/store-fs.d.ts.map +1 -1
  130. package/dist/store/store-fs.js +8 -3
  131. package/dist/store/store-fs.js.map +1 -1
  132. package/dist/writer/context.d.ts.map +1 -1
  133. package/dist/writer/context.js +8 -0
  134. package/dist/writer/context.js.map +1 -1
  135. package/dist/writer/gtk-doc.d.ts.map +1 -1
  136. package/dist/writer/gtk-doc.js +27 -1
  137. package/dist/writer/gtk-doc.js.map +1 -1
  138. package/overrides/gdk/rgba.ts.ejs +15 -1
  139. package/overrides/glib/index.ts.ejs +3 -0
  140. package/overrides/glib/regex.ts.ejs +66 -0
  141. package/overrides/gobject/index.ts.ejs +3 -0
  142. package/overrides/gobject/object-class.ts.ejs +27 -0
  143. package/overrides/gobject/param-spec-getters.ts.ejs +57 -0
  144. package/overrides/gobject/param-spec.ts.ejs +21 -0
  145. package/overrides/gobject/value.ts.ejs +6 -1
  146. package/overrides/graphene/structs.ts.ejs +38 -3
  147. package/overrides/gtk/index.ts.ejs +2 -0
  148. package/overrides/gtk/widget-class.ts.ejs +28 -0
  149. package/package.json +6 -5
  150. package/src/analysis/descriptor-render.ts +59 -16
  151. package/src/analysis/descriptor.ts +15 -3
  152. package/src/analysis/param-capability.ts +68 -5
  153. package/src/analysis/param-structure.ts +1 -1
  154. package/src/analysis/ts-type.ts +45 -11
  155. package/src/compile.ts +1 -1
  156. package/src/docs/api-reference.ts +20 -2
  157. package/src/docs/pipeline.ts +15 -1
  158. package/src/fingerprint.ts +144 -16
  159. package/src/gi.ts +44 -9
  160. package/src/gir/external-namespaces.ts +8 -0
  161. package/src/gir/finish-overrides.ts +5 -0
  162. package/src/gir/function.ts +52 -14
  163. package/src/gir/hidden-symbols.ts +39 -0
  164. package/src/gir/library.ts +36 -3
  165. package/src/gir/ucs4-overrides.ts +7 -0
  166. package/src/jsx.ts +33 -8
  167. package/src/runner.ts +17 -3
  168. package/src/store/external-package-links.ts +226 -0
  169. package/src/store/gi/callable-doc.ts +8 -4
  170. package/src/store/gi/callables.ts +1 -1
  171. package/src/store/gi/class.ts +29 -0
  172. package/src/store/gi/constructor-props.ts +1 -1
  173. package/src/store/gi/function.ts +2 -1
  174. package/src/store/gi/gtype-binding.ts +8 -1
  175. package/src/store/gi/method.ts +189 -36
  176. package/src/store/gi/param-marshal.ts +67 -4
  177. package/src/store/gi/record-constructor.ts +8 -3
  178. package/src/store/gi/record-field-accessor.ts +11 -2
  179. package/src/store/gi/runtime-override.ts +1 -1
  180. package/src/store/gi/signal.ts +2 -2
  181. package/src/store/gi/vtable.ts +118 -11
  182. package/src/store/gi-store.ts +33 -3
  183. package/src/store/jsx/jsx.ts +3 -1
  184. package/src/store/jsx-store.ts +23 -7
  185. package/src/store/resolve-store.ts +2 -1
  186. package/src/store/store-fs.ts +10 -2
  187. package/src/writer/context.ts +11 -0
  188. package/src/writer/gtk-doc.ts +38 -1
  189. package/overrides/cairo/context.ts.ejs +0 -1269
  190. package/overrides/cairo/font-face.ts.ejs +0 -151
  191. package/overrides/cairo/font-options.ts.ejs +0 -199
  192. package/overrides/cairo/image-surface.ts.ejs +0 -132
  193. package/overrides/cairo/index.ts.ejs +0 -22
  194. package/overrides/cairo/matrix.ts.ejs +0 -171
  195. package/overrides/cairo/pattern.ts.ejs +0 -476
  196. package/overrides/cairo/recording-surface.ts.ejs +0 -102
  197. package/overrides/cairo/region.ts.ejs +0 -237
  198. package/overrides/cairo/scaled-font.ts.ejs +0 -330
  199. package/overrides/cairo/surface.ts.ejs +0 -296
@@ -1,476 +0,0 @@
1
- import { type ExternalObject, getHandle, type Handle, t, wrapHandle } from "@gtkx/runtime";
2
- import { type Extend, type Filter, Pattern, type PatternType, type Status, type Surface } from "../cairo.js";
3
- import { type PathData, parsePath } from "./context.js";
4
- import { allocMatrix, type Matrix as CairoMatrix } from "./matrix.js";
5
-
6
- const { bind } = t;
7
- const PATTERN_T = t.boxed("CairoPattern", {
8
- ownership: "borrowed",
9
- sharedLibrary: "libcairo-gobject.so.2",
10
- getTypeFnName: "cairo_gobject_pattern_get_type",
11
- });
12
-
13
- export type RgbaColor = {
14
- red: number;
15
- green: number;
16
- blue: number;
17
- alpha: number;
18
- };
19
-
20
- const readRgba = (
21
- fill: (red: { value: number }, green: { value: number }, blue: { value: number }, alpha: { value: number }) => void,
22
- ): RgbaColor => {
23
- const redRef = { value: 0 };
24
- const greenRef = { value: 0 };
25
- const blueRef = { value: 0 };
26
- const alphaRef = { value: 0 };
27
- fill(redRef, greenRef, blueRef, alphaRef);
28
- return { red: redRef.value, green: greenRef.value, blue: blueRef.value, alpha: alphaRef.value };
29
- };
30
-
31
- declare module "../cairo.js" {
32
- interface Pattern {
33
- addColorStopRgb(offset: number, red: number, green: number, blue: number): void;
34
- addColorStopRgba(offset: number, red: number, green: number, blue: number, alpha: number): void;
35
- getColorStopCount(): number;
36
- getColorStopRgba(index: number): { offset: number; red: number; green: number; blue: number; alpha: number };
37
- getRgba(): { red: number; green: number; blue: number; alpha: number };
38
- status(): Status;
39
- setExtend(extend: Extend): void;
40
- getExtend(): Extend;
41
- setFilter(filter: Filter): void;
42
- getFilter(): Filter;
43
- setMatrix(matrix: CairoMatrix): void;
44
- getMatrix(): CairoMatrix;
45
- getType(): PatternType;
46
- getReferenceCount(): number;
47
- }
48
-
49
- namespace Pattern {
50
- function createRgb(red: number, green: number, blue: number): Pattern;
51
- function createRgba(red: number, green: number, blue: number, alpha: number): Pattern;
52
- function createLinear(x0: number, y0: number, x1: number, y1: number): LinearPattern;
53
- function createRadial(
54
- cx0: number,
55
- cy0: number,
56
- radius0: number,
57
- cx1: number,
58
- cy1: number,
59
- radius1: number,
60
- ): RadialPattern;
61
- function createMesh(): MeshPattern;
62
- function createForSurface(surface: Surface): Pattern;
63
- }
64
- }
65
-
66
- const cairoPatternAddColorStopRgb = bind(
67
- "libcairo.so.2",
68
- "cairo_pattern_add_color_stop_rgb",
69
- [PATTERN_T, t.float64, t.float64, t.float64, t.float64],
70
- t.void,
71
- );
72
- Pattern.prototype.addColorStopRgb = function (offset: number, red: number, green: number, blue: number): void {
73
- cairoPatternAddColorStopRgb(getHandle(this), offset, red, green, blue);
74
- };
75
-
76
- const cairoPatternAddColorStopRgba = bind(
77
- "libcairo.so.2",
78
- "cairo_pattern_add_color_stop_rgba",
79
- [PATTERN_T, t.float64, t.float64, t.float64, t.float64, t.float64],
80
- t.void,
81
- );
82
- Pattern.prototype.addColorStopRgba = function (
83
- offset: number,
84
- red: number,
85
- green: number,
86
- blue: number,
87
- alpha: number,
88
- ): void {
89
- cairoPatternAddColorStopRgba(getHandle(this), offset, red, green, blue, alpha);
90
- };
91
-
92
- const cairoPatternGetColorStopCount = bind(
93
- "libcairo.so.2",
94
- "cairo_pattern_get_color_stop_count",
95
- [PATTERN_T, t.ref(t.int32)],
96
- t.int32,
97
- );
98
- Pattern.prototype.getColorStopCount = function (): number {
99
- const countRef = { value: 0 };
100
- cairoPatternGetColorStopCount(getHandle(this), countRef);
101
- return countRef.value;
102
- };
103
-
104
- const cairoPatternGetColorStopRgba = bind(
105
- "libcairo.so.2",
106
- "cairo_pattern_get_color_stop_rgba",
107
- [PATTERN_T, t.int32, t.ref(t.float64), t.ref(t.float64), t.ref(t.float64), t.ref(t.float64), t.ref(t.float64)],
108
- t.int32,
109
- );
110
- Pattern.prototype.getColorStopRgba = function (index: number): {
111
- offset: number;
112
- red: number;
113
- green: number;
114
- blue: number;
115
- alpha: number;
116
- } {
117
- const offsetRef = { value: 0 };
118
- const redRef = { value: 0 };
119
- const greenRef = { value: 0 };
120
- const blueRef = { value: 0 };
121
- const alphaRef = { value: 0 };
122
- cairoPatternGetColorStopRgba(getHandle(this), index, offsetRef, redRef, greenRef, blueRef, alphaRef);
123
- return {
124
- offset: offsetRef.value,
125
- red: redRef.value,
126
- green: greenRef.value,
127
- blue: blueRef.value,
128
- alpha: alphaRef.value,
129
- };
130
- };
131
-
132
- const cairoPatternGetRgba = bind(
133
- "libcairo.so.2",
134
- "cairo_pattern_get_rgba",
135
- [PATTERN_T, t.ref(t.float64), t.ref(t.float64), t.ref(t.float64), t.ref(t.float64)],
136
- t.int32,
137
- );
138
- Pattern.prototype.getRgba = function (): RgbaColor {
139
- return readRgba((red, green, blue, alpha) => cairoPatternGetRgba(getHandle(this), red, green, blue, alpha));
140
- };
141
-
142
- const cairoPatternStatus = bind("libcairo.so.2", "cairo_pattern_status", [PATTERN_T], t.int32);
143
- Pattern.prototype.status = function (): Status {
144
- return cairoPatternStatus(getHandle(this)) as Status;
145
- };
146
-
147
- const cairoPatternSetExtend = bind("libcairo.so.2", "cairo_pattern_set_extend", [PATTERN_T, t.int32], t.void);
148
- Pattern.prototype.setExtend = function (extend: Extend): void {
149
- cairoPatternSetExtend(getHandle(this), extend);
150
- };
151
-
152
- const cairoPatternGetExtend = bind("libcairo.so.2", "cairo_pattern_get_extend", [PATTERN_T], t.int32);
153
- Pattern.prototype.getExtend = function (): Extend {
154
- return cairoPatternGetExtend(getHandle(this)) as Extend;
155
- };
156
-
157
- const cairoPatternSetFilter = bind("libcairo.so.2", "cairo_pattern_set_filter", [PATTERN_T, t.int32], t.void);
158
- Pattern.prototype.setFilter = function (filter: Filter): void {
159
- cairoPatternSetFilter(getHandle(this), filter);
160
- };
161
-
162
- const cairoPatternGetFilter = bind("libcairo.so.2", "cairo_pattern_get_filter", [PATTERN_T], t.int32);
163
- Pattern.prototype.getFilter = function (): Filter {
164
- return cairoPatternGetFilter(getHandle(this)) as Filter;
165
- };
166
-
167
- const cairoPatternSetMatrix = bind(
168
- "libcairo.so.2",
169
- "cairo_pattern_set_matrix",
170
- [PATTERN_T, t.boxed("cairo_matrix_t", { ownership: "borrowed", sharedLibrary: "libcairo.so.2" })],
171
- t.void,
172
- );
173
- Pattern.prototype.setMatrix = function (matrix: CairoMatrix): void {
174
- cairoPatternSetMatrix(getHandle(this), getHandle(matrix));
175
- };
176
-
177
- const cairoPatternGetMatrix = bind(
178
- "libcairo.so.2",
179
- "cairo_pattern_get_matrix",
180
- [PATTERN_T, t.boxed("cairo_matrix_t", { ownership: "borrowed", sharedLibrary: "libcairo.so.2" })],
181
- t.void,
182
- );
183
- Pattern.prototype.getMatrix = function (): CairoMatrix {
184
- const { handle, obj } = allocMatrix();
185
- cairoPatternGetMatrix(getHandle(this), handle);
186
- return obj;
187
- };
188
-
189
- const cairoPatternGetType = bind("libcairo.so.2", "cairo_pattern_get_type", [PATTERN_T], t.int32);
190
- Pattern.prototype.getType = function (): PatternType {
191
- return cairoPatternGetType(getHandle(this)) as PatternType;
192
- };
193
-
194
- const cairoPatternGetReferenceCount = bind("libcairo.so.2", "cairo_pattern_get_reference_count", [PATTERN_T], t.int32);
195
- Pattern.prototype.getReferenceCount = function (): number {
196
- return cairoPatternGetReferenceCount(getHandle(this)) as number;
197
- };
198
-
199
- const cairoPatternGetLinearPoints = bind(
200
- "libcairo.so.2",
201
- "cairo_pattern_get_linear_points",
202
- [PATTERN_T, t.ref(t.float64), t.ref(t.float64), t.ref(t.float64), t.ref(t.float64)],
203
- t.int32,
204
- );
205
- const cairoPatternGetRadialCircles = bind(
206
- "libcairo.so.2",
207
- "cairo_pattern_get_radial_circles",
208
- [
209
- PATTERN_T,
210
- t.ref(t.float64),
211
- t.ref(t.float64),
212
- t.ref(t.float64),
213
- t.ref(t.float64),
214
- t.ref(t.float64),
215
- t.ref(t.float64),
216
- ],
217
- t.int32,
218
- );
219
- const cairoMeshPatternBeginPatch = bind("libcairo.so.2", "cairo_mesh_pattern_begin_patch", [PATTERN_T], t.void);
220
- const cairoMeshPatternEndPatch = bind("libcairo.so.2", "cairo_mesh_pattern_end_patch", [PATTERN_T], t.void);
221
- const cairoMeshPatternMoveTo = bind(
222
- "libcairo.so.2",
223
- "cairo_mesh_pattern_move_to",
224
- [PATTERN_T, t.float64, t.float64],
225
- t.void,
226
- );
227
- const cairoMeshPatternLineTo = bind(
228
- "libcairo.so.2",
229
- "cairo_mesh_pattern_line_to",
230
- [PATTERN_T, t.float64, t.float64],
231
- t.void,
232
- );
233
- const cairoMeshPatternCurveTo = bind(
234
- "libcairo.so.2",
235
- "cairo_mesh_pattern_curve_to",
236
- [PATTERN_T, t.float64, t.float64, t.float64, t.float64, t.float64, t.float64],
237
- t.void,
238
- );
239
- const cairoMeshPatternSetControlPoint = bind(
240
- "libcairo.so.2",
241
- "cairo_mesh_pattern_set_control_point",
242
- [PATTERN_T, t.int32, t.float64, t.float64],
243
- t.void,
244
- );
245
- const cairoMeshPatternSetCornerColorRgb = bind(
246
- "libcairo.so.2",
247
- "cairo_mesh_pattern_set_corner_color_rgb",
248
- [PATTERN_T, t.int32, t.float64, t.float64, t.float64],
249
- t.void,
250
- );
251
- const cairoMeshPatternSetCornerColorRgba = bind(
252
- "libcairo.so.2",
253
- "cairo_mesh_pattern_set_corner_color_rgba",
254
- [PATTERN_T, t.int32, t.float64, t.float64, t.float64, t.float64],
255
- t.void,
256
- );
257
- const cairoMeshPatternGetPatchCount = bind(
258
- "libcairo.so.2",
259
- "cairo_mesh_pattern_get_patch_count",
260
- [PATTERN_T, t.ref(t.int32)],
261
- t.int32,
262
- );
263
- const cairoMeshPatternGetPath = bind(
264
- "libcairo.so.2",
265
- "cairo_mesh_pattern_get_path",
266
- [PATTERN_T, t.int32],
267
- t.boxed("cairo_path_t", { ownership: "full", sharedLibrary: "libcairo.so.2", freeFnName: "cairo_path_destroy" }),
268
- );
269
- const cairoMeshPatternGetControlPoint = bind(
270
- "libcairo.so.2",
271
- "cairo_mesh_pattern_get_control_point",
272
- [PATTERN_T, t.int32, t.int32, t.ref(t.float64), t.ref(t.float64)],
273
- t.int32,
274
- );
275
- const cairoMeshPatternGetCornerColorRgba = bind(
276
- "libcairo.so.2",
277
- "cairo_mesh_pattern_get_corner_color_rgba",
278
- [PATTERN_T, t.int32, t.int32, t.ref(t.float64), t.ref(t.float64), t.ref(t.float64), t.ref(t.float64)],
279
- t.int32,
280
- );
281
-
282
- export class LinearPattern extends Pattern {
283
- getLinearPoints(): { x0: number; y0: number; x1: number; y1: number } {
284
- const x0Ref = { value: 0 };
285
- const y0Ref = { value: 0 };
286
- const x1Ref = { value: 0 };
287
- const y1Ref = { value: 0 };
288
- cairoPatternGetLinearPoints(getHandle(this), x0Ref, y0Ref, x1Ref, y1Ref);
289
- return { x0: x0Ref.value, y0: y0Ref.value, x1: x1Ref.value, y1: y1Ref.value };
290
- }
291
- }
292
-
293
- export class RadialPattern extends Pattern {
294
- getRadialCircles(): { x0: number; y0: number; r0: number; x1: number; y1: number; r1: number } {
295
- const x0Ref = { value: 0 };
296
- const y0Ref = { value: 0 };
297
- const r0Ref = { value: 0 };
298
- const x1Ref = { value: 0 };
299
- const y1Ref = { value: 0 };
300
- const r1Ref = { value: 0 };
301
- cairoPatternGetRadialCircles(getHandle(this), x0Ref, y0Ref, r0Ref, x1Ref, y1Ref, r1Ref);
302
- return {
303
- x0: x0Ref.value,
304
- y0: y0Ref.value,
305
- r0: r0Ref.value,
306
- x1: x1Ref.value,
307
- y1: y1Ref.value,
308
- r1: r1Ref.value,
309
- };
310
- }
311
- }
312
-
313
- export class MeshPattern extends Pattern {
314
- beginPatch(): void {
315
- cairoMeshPatternBeginPatch(getHandle(this));
316
- }
317
-
318
- endPatch(): void {
319
- cairoMeshPatternEndPatch(getHandle(this));
320
- }
321
-
322
- moveTo(x: number, y: number): void {
323
- cairoMeshPatternMoveTo(getHandle(this), x, y);
324
- }
325
-
326
- lineTo(x: number, y: number): void {
327
- cairoMeshPatternLineTo(getHandle(this), x, y);
328
- }
329
-
330
- curveTo(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number): void {
331
- cairoMeshPatternCurveTo(getHandle(this), x1, y1, x2, y2, x3, y3);
332
- }
333
-
334
- setControlPoint(pointNum: number, x: number, y: number): void {
335
- cairoMeshPatternSetControlPoint(getHandle(this), pointNum, x, y);
336
- }
337
-
338
- setCornerColorRgb(cornerNum: number, red: number, green: number, blue: number): void {
339
- cairoMeshPatternSetCornerColorRgb(getHandle(this), cornerNum, red, green, blue);
340
- }
341
-
342
- setCornerColorRgba(cornerNum: number, red: number, green: number, blue: number, alpha: number): void {
343
- cairoMeshPatternSetCornerColorRgba(getHandle(this), cornerNum, red, green, blue, alpha);
344
- }
345
-
346
- getPatchCount(): number {
347
- const countRef = { value: 0 };
348
- cairoMeshPatternGetPatchCount(getHandle(this), countRef);
349
- return countRef.value;
350
- }
351
-
352
- getPath(patchNum: number): PathData[] {
353
- return parsePath(cairoMeshPatternGetPath(getHandle(this), patchNum) as ExternalObject<Handle>);
354
- }
355
-
356
- getControlPoint(patchNum: number, pointNum: number): { x: number; y: number } {
357
- const xRef = { value: 0 };
358
- const yRef = { value: 0 };
359
- cairoMeshPatternGetControlPoint(getHandle(this), patchNum, pointNum, xRef, yRef);
360
- return { x: xRef.value, y: yRef.value };
361
- }
362
-
363
- getCornerColorRgba(patchNum: number, cornerNum: number): RgbaColor {
364
- return readRgba((red, green, blue, alpha) =>
365
- cairoMeshPatternGetCornerColorRgba(getHandle(this), patchNum, cornerNum, red, green, blue, alpha),
366
- );
367
- }
368
- }
369
-
370
- type PatternStatic = {
371
- createRgb(red: number, green: number, blue: number): Pattern;
372
- createRgba(red: number, green: number, blue: number, alpha: number): Pattern;
373
- createLinear(x0: number, y0: number, x1: number, y1: number): LinearPattern;
374
- createRadial(cx0: number, cy0: number, radius0: number, cx1: number, cy1: number, radius1: number): RadialPattern;
375
- createMesh(): MeshPattern;
376
- createForSurface(surface: Surface): Pattern;
377
- };
378
-
379
- const PatternWithStatics = Pattern as typeof Pattern & PatternStatic;
380
-
381
- const cairoPatternCreateRgb = bind(
382
- "libcairo.so.2",
383
- "cairo_pattern_create_rgb",
384
- [t.float64, t.float64, t.float64],
385
- t.boxed("CairoPattern", {
386
- ownership: "full",
387
- sharedLibrary: "libcairo-gobject.so.2",
388
- getTypeFnName: "cairo_gobject_pattern_get_type",
389
- }),
390
- );
391
- PatternWithStatics.createRgb = (red: number, green: number, blue: number): Pattern => {
392
- return wrapHandle(cairoPatternCreateRgb(red, green, blue) as ExternalObject<Handle>, Pattern);
393
- };
394
-
395
- const cairoPatternCreateRgba = bind(
396
- "libcairo.so.2",
397
- "cairo_pattern_create_rgba",
398
- [t.float64, t.float64, t.float64, t.float64],
399
- t.boxed("CairoPattern", {
400
- ownership: "full",
401
- sharedLibrary: "libcairo-gobject.so.2",
402
- getTypeFnName: "cairo_gobject_pattern_get_type",
403
- }),
404
- );
405
- PatternWithStatics.createRgba = (red: number, green: number, blue: number, alpha: number): Pattern => {
406
- return wrapHandle(cairoPatternCreateRgba(red, green, blue, alpha) as ExternalObject<Handle>, Pattern);
407
- };
408
-
409
- const cairoPatternCreateLinear = bind(
410
- "libcairo.so.2",
411
- "cairo_pattern_create_linear",
412
- [t.float64, t.float64, t.float64, t.float64],
413
- t.boxed("CairoPattern", {
414
- ownership: "full",
415
- sharedLibrary: "libcairo-gobject.so.2",
416
- getTypeFnName: "cairo_gobject_pattern_get_type",
417
- }),
418
- );
419
- PatternWithStatics.createLinear = (x0: number, y0: number, x1: number, y1: number): LinearPattern => {
420
- return wrapHandle(cairoPatternCreateLinear(x0, y0, x1, y1) as ExternalObject<Handle>, LinearPattern);
421
- };
422
-
423
- const cairoPatternCreateRadial = bind(
424
- "libcairo.so.2",
425
- "cairo_pattern_create_radial",
426
- [t.float64, t.float64, t.float64, t.float64, t.float64, t.float64],
427
- t.boxed("CairoPattern", {
428
- ownership: "full",
429
- sharedLibrary: "libcairo-gobject.so.2",
430
- getTypeFnName: "cairo_gobject_pattern_get_type",
431
- }),
432
- );
433
- PatternWithStatics.createRadial = (
434
- cx0: number,
435
- cy0: number,
436
- radius0: number,
437
- cx1: number,
438
- cy1: number,
439
- radius1: number,
440
- ): RadialPattern => {
441
- return wrapHandle(cairoPatternCreateRadial(cx0, cy0, radius0, cx1, cy1, radius1) as ExternalObject<Handle>, RadialPattern);
442
- };
443
-
444
- const cairoPatternCreateMesh = bind(
445
- "libcairo.so.2",
446
- "cairo_pattern_create_mesh",
447
- [],
448
- t.boxed("CairoPattern", {
449
- ownership: "full",
450
- sharedLibrary: "libcairo-gobject.so.2",
451
- getTypeFnName: "cairo_gobject_pattern_get_type",
452
- }),
453
- );
454
- PatternWithStatics.createMesh = (): MeshPattern => {
455
- return wrapHandle(cairoPatternCreateMesh() as ExternalObject<Handle>, MeshPattern);
456
- };
457
-
458
- const cairoPatternCreateForSurface = bind(
459
- "libcairo.so.2",
460
- "cairo_pattern_create_for_surface",
461
- [
462
- t.boxed("CairoSurface", {
463
- ownership: "borrowed",
464
- sharedLibrary: "libcairo-gobject.so.2",
465
- getTypeFnName: "cairo_gobject_surface_get_type",
466
- }),
467
- ],
468
- t.boxed("CairoPattern", {
469
- ownership: "full",
470
- sharedLibrary: "libcairo-gobject.so.2",
471
- getTypeFnName: "cairo_gobject_pattern_get_type",
472
- }),
473
- );
474
- PatternWithStatics.createForSurface = (surface: Surface): Pattern => {
475
- return wrapHandle(cairoPatternCreateForSurface(getHandle(surface)) as ExternalObject<Handle>, Pattern);
476
- };
@@ -1,102 +0,0 @@
1
- import { alloc, type ExternalObject, getHandle, type Handle, read, setHandle, t, write } from "@gtkx/runtime";
2
- import type { Content } from "../cairo.js";
3
- import { Surface } from "../cairo.js";
4
-
5
- const { bind } = t;
6
- const RECT_T = t.boxed("cairo_rectangle_t", { ownership: "borrowed", sharedLibrary: "libcairo.so.2" });
7
-
8
- const cairoRecordingSurfaceCreateExtents = bind(
9
- "libcairo.so.2",
10
- "cairo_recording_surface_create",
11
- [t.int32, RECT_T],
12
- t.boxed("CairoSurface", {
13
- ownership: "full",
14
- sharedLibrary: "libcairo-gobject.so.2",
15
- getTypeFnName: "cairo_gobject_surface_get_type",
16
- }),
17
- );
18
- const cairoRecordingSurfaceCreateUnbounded = bind(
19
- "libcairo.so.2",
20
- "cairo_recording_surface_create",
21
- [t.int32, t.uint64],
22
- t.boxed("CairoSurface", {
23
- ownership: "full",
24
- sharedLibrary: "libcairo-gobject.so.2",
25
- getTypeFnName: "cairo_gobject_surface_get_type",
26
- }),
27
- );
28
- const cairoRecordingSurfaceInkExtents = bind(
29
- "libcairo.so.2",
30
- "cairo_recording_surface_ink_extents",
31
- [
32
- t.boxed("CairoSurface", {
33
- ownership: "borrowed",
34
- sharedLibrary: "libcairo-gobject.so.2",
35
- getTypeFnName: "cairo_gobject_surface_get_type",
36
- }),
37
- t.ref(t.float64),
38
- t.ref(t.float64),
39
- t.ref(t.float64),
40
- t.ref(t.float64),
41
- ],
42
- t.void,
43
- );
44
- const cairoRecordingSurfaceGetExtents = bind(
45
- "libcairo.so.2",
46
- "cairo_recording_surface_get_extents",
47
- [
48
- t.boxed("CairoSurface", {
49
- ownership: "borrowed",
50
- sharedLibrary: "libcairo-gobject.so.2",
51
- getTypeFnName: "cairo_gobject_surface_get_type",
52
- }),
53
- RECT_T,
54
- ],
55
- t.boolean,
56
- );
57
-
58
- export class RecordingSurface extends Surface {
59
- constructor(content: Content, extents?: { x: number; y: number; width: number; height: number }) {
60
- super();
61
- let handle: ExternalObject<Handle>;
62
- if (extents) {
63
- const rect = alloc(32);
64
- write(rect, t.float64, 0, extents.x);
65
- write(rect, t.float64, 8, extents.y);
66
- write(rect, t.float64, 16, extents.width);
67
- write(rect, t.float64, 24, extents.height);
68
- handle = cairoRecordingSurfaceCreateExtents(content, rect) as ExternalObject<Handle>;
69
- } else {
70
- handle = cairoRecordingSurfaceCreateUnbounded(content, 0) as ExternalObject<Handle>;
71
- }
72
- setHandle(this, handle);
73
- }
74
-
75
- static create(
76
- content: Content,
77
- extents?: { x: number; y: number; width: number; height: number },
78
- ): RecordingSurface {
79
- return new RecordingSurface(content, extents);
80
- }
81
-
82
- inkExtents(): { x0: number; y0: number; width: number; height: number } {
83
- const x0Ref = { value: 0 };
84
- const y0Ref = { value: 0 };
85
- const widthRef = { value: 0 };
86
- const heightRef = { value: 0 };
87
- cairoRecordingSurfaceInkExtents(getHandle(this), x0Ref, y0Ref, widthRef, heightRef);
88
- return { x0: x0Ref.value, y0: y0Ref.value, width: widthRef.value, height: heightRef.value };
89
- }
90
-
91
- getExtents(): { x: number; y: number; width: number; height: number } | null {
92
- const rect = alloc(32);
93
- const result = cairoRecordingSurfaceGetExtents(getHandle(this), rect) as boolean;
94
- if (!result) return null;
95
- return {
96
- x: read(rect, t.float64, 0) as number,
97
- y: read(rect, t.float64, 8) as number,
98
- width: read(rect, t.float64, 16) as number,
99
- height: read(rect, t.float64, 24) as number,
100
- };
101
- }
102
- }