@gtkx/codegen 1.2.1 → 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 (213) 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.d.ts +1 -1
  78. package/dist/store/gi/callables.d.ts.map +1 -1
  79. package/dist/store/gi/callables.js +4 -4
  80. package/dist/store/gi/callables.js.map +1 -1
  81. package/dist/store/gi/class.d.ts.map +1 -1
  82. package/dist/store/gi/class.js +25 -15
  83. package/dist/store/gi/class.js.map +1 -1
  84. package/dist/store/gi/constructor-props.js +1 -1
  85. package/dist/store/gi/constructor-props.js.map +1 -1
  86. package/dist/store/gi/function.d.ts.map +1 -1
  87. package/dist/store/gi/function.js +2 -1
  88. package/dist/store/gi/function.js.map +1 -1
  89. package/dist/store/gi/gtype-binding.d.ts +2 -2
  90. package/dist/store/gi/gtype-binding.d.ts.map +1 -1
  91. package/dist/store/gi/gtype-binding.js +6 -13
  92. package/dist/store/gi/gtype-binding.js.map +1 -1
  93. package/dist/store/gi/interface.js +2 -2
  94. package/dist/store/gi/interface.js.map +1 -1
  95. package/dist/store/gi/method.d.ts +7 -2
  96. package/dist/store/gi/method.d.ts.map +1 -1
  97. package/dist/store/gi/method.js +126 -30
  98. package/dist/store/gi/method.js.map +1 -1
  99. package/dist/store/gi/param-marshal.d.ts +8 -1
  100. package/dist/store/gi/param-marshal.d.ts.map +1 -1
  101. package/dist/store/gi/param-marshal.js +52 -4
  102. package/dist/store/gi/param-marshal.js.map +1 -1
  103. package/dist/store/gi/record-constructor.d.ts.map +1 -1
  104. package/dist/store/gi/record-constructor.js +2 -3
  105. package/dist/store/gi/record-constructor.js.map +1 -1
  106. package/dist/store/gi/record-field-accessor.d.ts +2 -1
  107. package/dist/store/gi/record-field-accessor.d.ts.map +1 -1
  108. package/dist/store/gi/record-field-accessor.js +142 -16
  109. package/dist/store/gi/record-field-accessor.js.map +1 -1
  110. package/dist/store/gi/record-layout.d.ts +5 -2
  111. package/dist/store/gi/record-layout.d.ts.map +1 -1
  112. package/dist/store/gi/record-layout.js +2 -1
  113. package/dist/store/gi/record-layout.js.map +1 -1
  114. package/dist/store/gi/record.d.ts.map +1 -1
  115. package/dist/store/gi/record.js +9 -5
  116. package/dist/store/gi/record.js.map +1 -1
  117. package/dist/store/gi/runtime-override.js +1 -1
  118. package/dist/store/gi/runtime-override.js.map +1 -1
  119. package/dist/store/gi/signal.js +2 -2
  120. package/dist/store/gi/signal.js.map +1 -1
  121. package/dist/store/gi/vtable.d.ts.map +1 -1
  122. package/dist/store/gi/vtable.js +82 -12
  123. package/dist/store/gi/vtable.js.map +1 -1
  124. package/dist/store/gi-store.d.ts +7 -2
  125. package/dist/store/gi-store.d.ts.map +1 -1
  126. package/dist/store/gi-store.js +19 -4
  127. package/dist/store/gi-store.js.map +1 -1
  128. package/dist/store/jsx/jsx.d.ts.map +1 -1
  129. package/dist/store/jsx/jsx.js +3 -1
  130. package/dist/store/jsx/jsx.js.map +1 -1
  131. package/dist/store/jsx-store.d.ts +8 -1
  132. package/dist/store/jsx-store.d.ts.map +1 -1
  133. package/dist/store/jsx-store.js +9 -2
  134. package/dist/store/jsx-store.js.map +1 -1
  135. package/dist/store/resolve-store.d.ts +2 -1
  136. package/dist/store/resolve-store.d.ts.map +1 -1
  137. package/dist/store/resolve-store.js +2 -1
  138. package/dist/store/resolve-store.js.map +1 -1
  139. package/dist/store/store-fs.d.ts +2 -1
  140. package/dist/store/store-fs.d.ts.map +1 -1
  141. package/dist/store/store-fs.js +8 -3
  142. package/dist/store/store-fs.js.map +1 -1
  143. package/dist/writer/context.d.ts.map +1 -1
  144. package/dist/writer/context.js +8 -0
  145. package/dist/writer/context.js.map +1 -1
  146. package/dist/writer/gtk-doc.d.ts.map +1 -1
  147. package/dist/writer/gtk-doc.js +27 -1
  148. package/dist/writer/gtk-doc.js.map +1 -1
  149. package/overrides/gdk/rgba.ts.ejs +15 -1
  150. package/overrides/glib/index.ts.ejs +3 -0
  151. package/overrides/glib/regex.ts.ejs +66 -0
  152. package/overrides/gobject/index.ts.ejs +3 -0
  153. package/overrides/gobject/object-class.ts.ejs +27 -0
  154. package/overrides/gobject/param-spec-getters.ts.ejs +57 -0
  155. package/overrides/gobject/param-spec.ts.ejs +21 -0
  156. package/overrides/gobject/value.ts.ejs +6 -1
  157. package/overrides/graphene/structs.ts.ejs +38 -3
  158. package/overrides/gtk/index.ts.ejs +2 -0
  159. package/overrides/gtk/widget-class.ts.ejs +28 -0
  160. package/package.json +6 -5
  161. package/src/analysis/descriptor-render.ts +59 -16
  162. package/src/analysis/descriptor.ts +15 -3
  163. package/src/analysis/param-capability.ts +68 -5
  164. package/src/analysis/param-structure.ts +1 -1
  165. package/src/analysis/ts-type.ts +45 -11
  166. package/src/compile.ts +1 -1
  167. package/src/docs/api-reference.ts +20 -2
  168. package/src/docs/pipeline.ts +15 -1
  169. package/src/fingerprint.ts +144 -16
  170. package/src/gi.ts +44 -9
  171. package/src/gir/external-namespaces.ts +8 -0
  172. package/src/gir/finish-overrides.ts +5 -0
  173. package/src/gir/function.ts +52 -14
  174. package/src/gir/hidden-symbols.ts +39 -0
  175. package/src/gir/library.ts +36 -3
  176. package/src/gir/ucs4-overrides.ts +7 -0
  177. package/src/jsx.ts +33 -8
  178. package/src/runner.ts +17 -3
  179. package/src/store/external-package-links.ts +226 -0
  180. package/src/store/gi/callable-doc.ts +8 -4
  181. package/src/store/gi/callables.ts +5 -5
  182. package/src/store/gi/class.ts +42 -32
  183. package/src/store/gi/constructor-props.ts +1 -1
  184. package/src/store/gi/function.ts +2 -1
  185. package/src/store/gi/gtype-binding.ts +7 -15
  186. package/src/store/gi/interface.ts +2 -2
  187. package/src/store/gi/method.ts +189 -36
  188. package/src/store/gi/param-marshal.ts +67 -4
  189. package/src/store/gi/record-constructor.ts +8 -3
  190. package/src/store/gi/record-field-accessor.ts +209 -16
  191. package/src/store/gi/record-layout.ts +11 -1
  192. package/src/store/gi/record.ts +17 -13
  193. package/src/store/gi/runtime-override.ts +1 -1
  194. package/src/store/gi/signal.ts +2 -2
  195. package/src/store/gi/vtable.ts +118 -11
  196. package/src/store/gi-store.ts +33 -3
  197. package/src/store/jsx/jsx.ts +3 -1
  198. package/src/store/jsx-store.ts +23 -7
  199. package/src/store/resolve-store.ts +2 -1
  200. package/src/store/store-fs.ts +10 -2
  201. package/src/writer/context.ts +11 -0
  202. package/src/writer/gtk-doc.ts +38 -1
  203. package/overrides/cairo/context.ts.ejs +0 -1269
  204. package/overrides/cairo/font-face.ts.ejs +0 -151
  205. package/overrides/cairo/font-options.ts.ejs +0 -199
  206. package/overrides/cairo/image-surface.ts.ejs +0 -132
  207. package/overrides/cairo/index.ts.ejs +0 -22
  208. package/overrides/cairo/matrix.ts.ejs +0 -171
  209. package/overrides/cairo/pattern.ts.ejs +0 -476
  210. package/overrides/cairo/recording-surface.ts.ejs +0 -102
  211. package/overrides/cairo/region.ts.ejs +0 -237
  212. package/overrides/cairo/scaled-font.ts.ejs +0 -330
  213. 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
- }