@gtkx/cairo 1.2.2

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 (86) hide show
  1. package/dist/context.d.ts +229 -0
  2. package/dist/context.d.ts.map +1 -0
  3. package/dist/context.js +646 -0
  4. package/dist/context.js.map +1 -0
  5. package/dist/device.d.ts +21 -0
  6. package/dist/device.d.ts.map +1 -0
  7. package/dist/device.js +39 -0
  8. package/dist/device.js.map +1 -0
  9. package/dist/enums.d.ts +526 -0
  10. package/dist/enums.d.ts.map +1 -0
  11. package/dist/enums.js +482 -0
  12. package/dist/enums.js.map +1 -0
  13. package/dist/font-face.d.ts +55 -0
  14. package/dist/font-face.d.ts.map +1 -0
  15. package/dist/font-face.js +103 -0
  16. package/dist/font-face.js.map +1 -0
  17. package/dist/font-options.d.ts +43 -0
  18. package/dist/font-options.d.ts.map +1 -0
  19. package/dist/font-options.js +95 -0
  20. package/dist/font-options.js.map +1 -0
  21. package/dist/index.d.ts +29 -0
  22. package/dist/index.d.ts.map +1 -0
  23. package/dist/index.js +27 -0
  24. package/dist/index.js.map +1 -0
  25. package/dist/lib.d.ts +36 -0
  26. package/dist/lib.d.ts.map +1 -0
  27. package/dist/lib.js +120 -0
  28. package/dist/lib.js.map +1 -0
  29. package/dist/matrix.d.ts +40 -0
  30. package/dist/matrix.d.ts.map +1 -0
  31. package/dist/matrix.js +93 -0
  32. package/dist/matrix.js.map +1 -0
  33. package/dist/path.d.ts +14 -0
  34. package/dist/path.d.ts.map +1 -0
  35. package/dist/path.js +67 -0
  36. package/dist/path.js.map +1 -0
  37. package/dist/pattern.d.ts +95 -0
  38. package/dist/pattern.d.ts.map +1 -0
  39. package/dist/pattern.js +250 -0
  40. package/dist/pattern.js.map +1 -0
  41. package/dist/region.d.ts +59 -0
  42. package/dist/region.d.ts.map +1 -0
  43. package/dist/region.js +154 -0
  44. package/dist/region.js.map +1 -0
  45. package/dist/scaled-font.d.ts +43 -0
  46. package/dist/scaled-font.d.ts.map +1 -0
  47. package/dist/scaled-font.js +156 -0
  48. package/dist/scaled-font.js.map +1 -0
  49. package/dist/structs.d.ts +120 -0
  50. package/dist/structs.d.ts.map +1 -0
  51. package/dist/structs.js +185 -0
  52. package/dist/structs.js.map +1 -0
  53. package/dist/surface.d.ts +98 -0
  54. package/dist/surface.d.ts.map +1 -0
  55. package/dist/surface.js +274 -0
  56. package/dist/surface.js.map +1 -0
  57. package/dist/text.d.ts +10 -0
  58. package/dist/text.d.ts.map +1 -0
  59. package/dist/text.js +45 -0
  60. package/dist/text.js.map +1 -0
  61. package/dist/types.d.ts +245 -0
  62. package/dist/types.d.ts.map +1 -0
  63. package/dist/types.js +2 -0
  64. package/dist/types.js.map +1 -0
  65. package/dist/version.d.ts +9 -0
  66. package/dist/version.d.ts.map +1 -0
  67. package/dist/version.js +13 -0
  68. package/dist/version.js.map +1 -0
  69. package/package.json +64 -0
  70. package/src/context.ts +899 -0
  71. package/src/device.ts +50 -0
  72. package/src/enums.ts +571 -0
  73. package/src/font-face.ts +157 -0
  74. package/src/font-options.ts +142 -0
  75. package/src/index.ts +28 -0
  76. package/src/lib.ts +186 -0
  77. package/src/matrix.ts +135 -0
  78. package/src/path.ts +87 -0
  79. package/src/pattern.ts +423 -0
  80. package/src/region.ts +216 -0
  81. package/src/scaled-font.ts +268 -0
  82. package/src/structs.ts +306 -0
  83. package/src/surface.ts +411 -0
  84. package/src/text.ts +56 -0
  85. package/src/types.ts +290 -0
  86. package/src/version.ts +16 -0
package/src/structs.ts ADDED
@@ -0,0 +1,306 @@
1
+ import {
2
+ alloc,
3
+ type ExternalObject,
4
+ getHandle,
5
+ type Handle,
6
+ read,
7
+ registerWrapperClass,
8
+ resolveType,
9
+ setHandle,
10
+ t,
11
+ toNative,
12
+ write,
13
+ } from "@gtkx/runtime";
14
+
15
+ type FieldDescriptor = typeof t.float64 | typeof t.int32 | typeof t.biguint64;
16
+
17
+ /** Initial field values for a `Rectangle`; a field left out or set to null keeps zero. */
18
+ type RectangleConstructorProps = {
19
+ /** Horizontal position of the left edge. */
20
+ x?: number | null;
21
+ /** Vertical position of the top edge. */
22
+ y?: number | null;
23
+ /** Width of the rectangle. */
24
+ width?: number | null;
25
+ /** Height of the rectangle. */
26
+ height?: number | null;
27
+ };
28
+
29
+ /** Initial field values for a `RectangleInt`; a field left out or set to null keeps zero. */
30
+ type RectangleIntConstructorProps = {
31
+ /** Horizontal position of the left edge. */
32
+ x?: number | null;
33
+ /** Vertical position of the top edge. */
34
+ y?: number | null;
35
+ /** Width of the rectangle. */
36
+ width?: number | null;
37
+ /** Height of the rectangle. */
38
+ height?: number | null;
39
+ };
40
+
41
+ /** Initial field values for a `Glyph`; a field left out or set to null keeps zero. */
42
+ type GlyphConstructorProps = {
43
+ /** Index of the glyph in the font. */
44
+ index?: bigint | null;
45
+ /** Horizontal position of the glyph origin. */
46
+ x?: number | null;
47
+ /** Vertical position of the glyph origin. */
48
+ y?: number | null;
49
+ };
50
+
51
+ /** Initial field values for a `TextCluster`; a field left out or set to null keeps zero. */
52
+ type TextClusterConstructorProps = {
53
+ /** Number of UTF-8 bytes the cluster covers. */
54
+ numBytes?: number | null;
55
+ /** Number of glyphs the cluster covers. */
56
+ numGlyphs?: number | null;
57
+ };
58
+
59
+ const CAIRO_GOBJECT_LIBRARY = "libcairo-gobject.so.2";
60
+ const RECTANGLE_TYPE = resolveType(CAIRO_GOBJECT_LIBRARY, "cairo_gobject_rectangle_get_type");
61
+ const RECTANGLE_INT_TYPE = resolveType(CAIRO_GOBJECT_LIBRARY, "cairo_gobject_rectangle_int_get_type");
62
+ const GLYPH_TYPE = resolveType(CAIRO_GOBJECT_LIBRARY, "cairo_gobject_glyph_get_type");
63
+ const TEXT_CLUSTER_TYPE = resolveType(CAIRO_GOBJECT_LIBRARY, "cairo_gobject_text_cluster_get_type");
64
+ const RECTANGLE_SIZE = 32;
65
+ const RECTANGLE_INT_SIZE = 16;
66
+ const GLYPH_SIZE = 24;
67
+ const TEXT_CLUSTER_SIZE = 8;
68
+ const DOUBLE = t.float64;
69
+ const INT = t.int32;
70
+ const ULONG = t.biguint64;
71
+
72
+ const readField = (instance: object, descriptor: FieldDescriptor, offset: number): number =>
73
+ read(getHandle(instance), descriptor, offset) as number;
74
+
75
+ const writeField = (instance: object, descriptor: FieldDescriptor, offset: number, value: unknown): void => {
76
+ write(getHandle(instance), descriptor, offset, toNative(descriptor, value));
77
+ };
78
+
79
+ const writeInitial = (
80
+ handle: ExternalObject<Handle>,
81
+ descriptor: FieldDescriptor,
82
+ offset: number,
83
+ value: unknown,
84
+ ): void => {
85
+ if (value != null) {
86
+ write(handle, descriptor, offset, toNative(descriptor, value));
87
+ }
88
+ };
89
+
90
+ /** A rectangle with double-precision edges, as `copyClipRectangleList` and recording surfaces report. */
91
+ class Rectangle {
92
+ static {
93
+ registerWrapperClass(this, RECTANGLE_TYPE);
94
+ }
95
+
96
+ /** GType of `CairoRectangle`, the boxed type this struct is registered under. */
97
+ declare __type__: bigint;
98
+
99
+ /** Allocates a rectangle, writing the given fields and leaving the others at zero. */
100
+ constructor(props: RectangleConstructorProps = {}) {
101
+ const handle = alloc(RECTANGLE_SIZE, RECTANGLE_TYPE);
102
+ writeInitial(handle, DOUBLE, 0, props.x);
103
+ writeInitial(handle, DOUBLE, 8, props.y);
104
+ writeInitial(handle, DOUBLE, 16, props.width);
105
+ writeInitial(handle, DOUBLE, 24, props.height);
106
+ setHandle(this, handle);
107
+ }
108
+
109
+ /** Horizontal position of the left edge. */
110
+ get x(): number {
111
+ return readField(this, DOUBLE, 0);
112
+ }
113
+
114
+ /** Horizontal position of the left edge. */
115
+ set x(value: number) {
116
+ writeField(this, DOUBLE, 0, value);
117
+ }
118
+
119
+ /** Vertical position of the top edge. */
120
+ get y(): number {
121
+ return readField(this, DOUBLE, 8);
122
+ }
123
+
124
+ /** Vertical position of the top edge. */
125
+ set y(value: number) {
126
+ writeField(this, DOUBLE, 8, value);
127
+ }
128
+
129
+ /** Width of the rectangle. */
130
+ get width(): number {
131
+ return readField(this, DOUBLE, 16);
132
+ }
133
+
134
+ /** Width of the rectangle. */
135
+ set width(value: number) {
136
+ writeField(this, DOUBLE, 16, value);
137
+ }
138
+
139
+ /** Height of the rectangle. */
140
+ get height(): number {
141
+ return readField(this, DOUBLE, 24);
142
+ }
143
+
144
+ /** Height of the rectangle. */
145
+ set height(value: number) {
146
+ writeField(this, DOUBLE, 24, value);
147
+ }
148
+ }
149
+
150
+ /** A rectangle with integer edges, as regions and `Surface.mapToImage` use. */
151
+ class RectangleInt {
152
+ static {
153
+ registerWrapperClass(this, RECTANGLE_INT_TYPE);
154
+ }
155
+
156
+ /** GType of `CairoRectangleInt`, the boxed type this struct is registered under. */
157
+ declare __type__: bigint;
158
+
159
+ /** Allocates a rectangle, writing the given fields and leaving the others at zero. */
160
+ constructor(props: RectangleIntConstructorProps = {}) {
161
+ const handle = alloc(RECTANGLE_INT_SIZE, RECTANGLE_INT_TYPE);
162
+ writeInitial(handle, INT, 0, props.x);
163
+ writeInitial(handle, INT, 4, props.y);
164
+ writeInitial(handle, INT, 8, props.width);
165
+ writeInitial(handle, INT, 12, props.height);
166
+ setHandle(this, handle);
167
+ }
168
+
169
+ /** Horizontal position of the left edge. */
170
+ get x(): number {
171
+ return readField(this, INT, 0);
172
+ }
173
+
174
+ /** Horizontal position of the left edge. */
175
+ set x(value: number) {
176
+ writeField(this, INT, 0, value);
177
+ }
178
+
179
+ /** Vertical position of the top edge. */
180
+ get y(): number {
181
+ return readField(this, INT, 4);
182
+ }
183
+
184
+ /** Vertical position of the top edge. */
185
+ set y(value: number) {
186
+ writeField(this, INT, 4, value);
187
+ }
188
+
189
+ /** Width of the rectangle. */
190
+ get width(): number {
191
+ return readField(this, INT, 8);
192
+ }
193
+
194
+ /** Width of the rectangle. */
195
+ set width(value: number) {
196
+ writeField(this, INT, 8, value);
197
+ }
198
+
199
+ /** Height of the rectangle. */
200
+ get height(): number {
201
+ return readField(this, INT, 12);
202
+ }
203
+
204
+ /** Height of the rectangle. */
205
+ set height(value: number) {
206
+ writeField(this, INT, 12, value);
207
+ }
208
+ }
209
+
210
+ /** A `cairo_glyph_t`: one glyph index and where to draw it. */
211
+ class Glyph {
212
+ static {
213
+ registerWrapperClass(this, GLYPH_TYPE);
214
+ }
215
+
216
+ /** GType of `CairoGlyph`, the boxed type this struct is registered under. */
217
+ declare __type__: bigint;
218
+
219
+ /** Allocates a glyph, writing the given fields and leaving the others at zero. */
220
+ constructor(props: GlyphConstructorProps = {}) {
221
+ const handle = alloc(GLYPH_SIZE, GLYPH_TYPE);
222
+ writeInitial(handle, ULONG, 0, props.index);
223
+ writeInitial(handle, DOUBLE, 8, props.x);
224
+ writeInitial(handle, DOUBLE, 16, props.y);
225
+ setHandle(this, handle);
226
+ }
227
+
228
+ /** Index of the glyph in the font. */
229
+ get index(): bigint {
230
+ return read(getHandle(this), ULONG, 0) as bigint;
231
+ }
232
+
233
+ /** Index of the glyph in the font. */
234
+ set index(value: bigint) {
235
+ writeField(this, ULONG, 0, value);
236
+ }
237
+
238
+ /** Horizontal position of the glyph origin. */
239
+ get x(): number {
240
+ return readField(this, DOUBLE, 8);
241
+ }
242
+
243
+ /** Horizontal position of the glyph origin. */
244
+ set x(value: number) {
245
+ writeField(this, DOUBLE, 8, value);
246
+ }
247
+
248
+ /** Vertical position of the glyph origin. */
249
+ get y(): number {
250
+ return readField(this, DOUBLE, 16);
251
+ }
252
+
253
+ /** Vertical position of the glyph origin. */
254
+ set y(value: number) {
255
+ writeField(this, DOUBLE, 16, value);
256
+ }
257
+ }
258
+
259
+ /** A `cairo_text_cluster_t`: how many bytes of text map to how many glyphs. */
260
+ class TextCluster {
261
+ static {
262
+ registerWrapperClass(this, TEXT_CLUSTER_TYPE);
263
+ }
264
+
265
+ /** GType of `CairoTextCluster`, the boxed type this struct is registered under. */
266
+ declare __type__: bigint;
267
+
268
+ /** Allocates a cluster, writing the given fields and leaving the others at zero. */
269
+ constructor(props: TextClusterConstructorProps = {}) {
270
+ const handle = alloc(TEXT_CLUSTER_SIZE, TEXT_CLUSTER_TYPE);
271
+ writeInitial(handle, INT, 0, props.numBytes);
272
+ writeInitial(handle, INT, 4, props.numGlyphs);
273
+ setHandle(this, handle);
274
+ }
275
+
276
+ /** Number of UTF-8 bytes the cluster covers. */
277
+ get numBytes(): number {
278
+ return readField(this, INT, 0);
279
+ }
280
+
281
+ /** Number of UTF-8 bytes the cluster covers. */
282
+ set numBytes(value: number) {
283
+ writeField(this, INT, 0, value);
284
+ }
285
+
286
+ /** Number of glyphs the cluster covers. */
287
+ get numGlyphs(): number {
288
+ return readField(this, INT, 4);
289
+ }
290
+
291
+ /** Number of glyphs the cluster covers. */
292
+ set numGlyphs(value: number) {
293
+ writeField(this, INT, 4, value);
294
+ }
295
+ }
296
+
297
+ export {
298
+ Glyph,
299
+ type GlyphConstructorProps,
300
+ Rectangle,
301
+ type RectangleConstructorProps,
302
+ RectangleInt,
303
+ type RectangleIntConstructorProps,
304
+ TextCluster,
305
+ type TextClusterConstructorProps,
306
+ };