bare-ui-kit 0.2.0 → 0.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 (89) hide show
  1. package/CMakeLists.txt +7 -1
  2. package/README.md +42 -1
  3. package/binding.m +558 -2
  4. package/index.d.ts +41 -0
  5. package/index.js +16 -0
  6. package/lib/activity-indicator-view.d.ts +29 -0
  7. package/lib/activity-indicator-view.h +181 -0
  8. package/lib/activity-indicator-view.js +56 -0
  9. package/lib/alert-action.d.ts +33 -0
  10. package/lib/alert-action.js +48 -0
  11. package/lib/alert-controller.d.ts +20 -0
  12. package/lib/alert-controller.h +199 -0
  13. package/lib/alert-controller.js +33 -0
  14. package/lib/attributed-string.d.ts +45 -0
  15. package/lib/attributed-string.h +176 -0
  16. package/lib/attributed-string.js +51 -0
  17. package/lib/attributes.js +34 -0
  18. package/lib/bezier-path.d.ts +26 -0
  19. package/lib/bezier-path.h +145 -0
  20. package/lib/bezier-path.js +51 -0
  21. package/lib/bridging.h +600 -2
  22. package/lib/color.d.ts +86 -0
  23. package/lib/color.h +286 -0
  24. package/lib/color.js +170 -0
  25. package/lib/events.js +35 -0
  26. package/lib/font-descriptor.d.ts +30 -0
  27. package/lib/font-descriptor.h +96 -0
  28. package/lib/font-descriptor.js +47 -0
  29. package/lib/font-metrics.d.ts +38 -0
  30. package/lib/font-metrics.h +109 -0
  31. package/lib/font-metrics.js +58 -0
  32. package/lib/font.d.ts +59 -0
  33. package/lib/font.h +424 -0
  34. package/lib/font.js +100 -0
  35. package/lib/handle.d.ts +5 -0
  36. package/lib/handle.js +6 -0
  37. package/lib/image-view.d.ts +15 -0
  38. package/lib/image-view.h +75 -0
  39. package/lib/image-view.js +27 -0
  40. package/lib/image.d.ts +37 -0
  41. package/lib/image.h +205 -0
  42. package/lib/image.js +60 -0
  43. package/lib/label.d.ts +51 -0
  44. package/lib/label.h +331 -0
  45. package/lib/label.js +94 -0
  46. package/lib/paragraph-style.d.ts +20 -0
  47. package/lib/paragraph-style.h +94 -0
  48. package/lib/paragraph-style.js +42 -0
  49. package/lib/pasteboard.d.ts +31 -0
  50. package/lib/pasteboard.h +123 -0
  51. package/lib/pasteboard.js +63 -0
  52. package/lib/retain.js +12 -0
  53. package/lib/runtime.m +92 -15
  54. package/lib/scene.d.ts +30 -0
  55. package/lib/scene.h +87 -0
  56. package/lib/scene.js +48 -0
  57. package/lib/scratch.js +4 -0
  58. package/lib/screen.d.ts +26 -0
  59. package/lib/screen.h +194 -0
  60. package/lib/screen.js +52 -0
  61. package/lib/scroll-view.d.ts +39 -0
  62. package/lib/scroll-view.h +246 -0
  63. package/lib/scroll-view.js +64 -0
  64. package/lib/switch.d.ts +22 -0
  65. package/lib/switch.h +166 -0
  66. package/lib/switch.js +42 -0
  67. package/lib/text-field.d.ts +103 -0
  68. package/lib/text-field.h +562 -0
  69. package/lib/text-field.js +183 -0
  70. package/lib/text-view.d.ts +59 -0
  71. package/lib/text-view.h +497 -0
  72. package/lib/text-view.js +138 -0
  73. package/lib/view-controller.d.ts +37 -0
  74. package/lib/view-controller.h +108 -20
  75. package/lib/view-controller.js +50 -5
  76. package/lib/view.d.ts +158 -0
  77. package/lib/view.h +1385 -20
  78. package/lib/view.js +276 -7
  79. package/lib/window.d.ts +44 -0
  80. package/lib/window.h +167 -27
  81. package/lib/window.js +62 -9
  82. package/lib/wrap.js +7 -0
  83. package/package.json +12 -3
  84. package/prebuilds/ios-arm64/bare +0 -0
  85. package/prebuilds/ios-arm64/bare-ui-kit.bare +0 -0
  86. package/prebuilds/ios-arm64-simulator/bare +0 -0
  87. package/prebuilds/ios-arm64-simulator/bare-ui-kit.bare +0 -0
  88. package/prebuilds/ios-x64-simulator/bare +0 -0
  89. package/prebuilds/ios-x64-simulator/bare-ui-kit.bare +0 -0
@@ -0,0 +1,109 @@
1
+ #import <assert.h>
2
+ #import <bare.h>
3
+ #import <js.h>
4
+
5
+ #import <UIKit/UIKit.h>
6
+
7
+ #import "bridging.h"
8
+
9
+ static js_value_t *
10
+ bare_ui_kit_font_metrics_default_metrics(js_env_t *env, js_callback_info_t *info) {
11
+ int err;
12
+
13
+ bare_ui_kit_state_t *state;
14
+ err = js_get_callback_info(env, info, NULL, NULL, NULL, (void **) &state);
15
+ assert(err == 0);
16
+
17
+ js_value_t *result;
18
+
19
+ @autoreleasepool {
20
+ result = bare_foundation_bridge(env, state->registry, [UIFontMetrics defaultMetrics]);
21
+ }
22
+
23
+ return result;
24
+ }
25
+
26
+ static js_value_t *
27
+ bare_ui_kit_font_metrics_for_text_style(js_env_t *env, js_callback_info_t *info) {
28
+ int err;
29
+
30
+ size_t argc = 1;
31
+ js_value_t *argv[1];
32
+
33
+ bare_ui_kit_state_t *state;
34
+ err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state);
35
+ assert(err == 0);
36
+
37
+ assert(argc == 1);
38
+
39
+ js_value_t *result;
40
+
41
+ @autoreleasepool {
42
+ NSString *style = bare_ui_kit__to_string(env, argv[0]);
43
+
44
+ result = bare_foundation_bridge(env, state->registry, [UIFontMetrics metricsForTextStyle:style]);
45
+ }
46
+
47
+ return result;
48
+ }
49
+
50
+ static js_value_t *
51
+ bare_ui_kit_font_metrics_scaled_value_for_value(js_env_t *env, js_callback_info_t *info) {
52
+ int err;
53
+
54
+ size_t argc = 2;
55
+ js_value_t *argv[2];
56
+
57
+ bare_ui_kit_state_t *state;
58
+ err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state);
59
+ assert(err == 0);
60
+
61
+ assert(argc == 2);
62
+
63
+ void *handle;
64
+ if (bare_foundation_read_tag(env, state->registry, argv[0], "handle", &handle) < 0) return NULL;
65
+
66
+ double value;
67
+ if (!bare_ui_kit__read_double(env, argv[1], "value", &value)) return NULL;
68
+
69
+ js_value_t *result;
70
+
71
+ @autoreleasepool {
72
+ UIFontMetrics *metrics = (__bridge UIFontMetrics *) handle;
73
+
74
+ err = js_create_double(env, [metrics scaledValueForValue:value], &result);
75
+ assert(err == 0);
76
+ }
77
+
78
+ return result;
79
+ }
80
+
81
+ static js_value_t *
82
+ bare_ui_kit_font_metrics_scaled_font_for_font(js_env_t *env, js_callback_info_t *info) {
83
+ int err;
84
+
85
+ size_t argc = 2;
86
+ js_value_t *argv[2];
87
+
88
+ bare_ui_kit_state_t *state;
89
+ err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state);
90
+ assert(err == 0);
91
+
92
+ assert(argc == 2);
93
+
94
+ void *handle;
95
+ if (bare_foundation_read_tag(env, state->registry, argv[0], "handle", &handle) < 0) return NULL;
96
+
97
+ void *font;
98
+ if (bare_foundation_read_tag(env, state->registry, argv[1], "font", &font) < 0) return NULL;
99
+
100
+ js_value_t *result;
101
+
102
+ @autoreleasepool {
103
+ UIFontMetrics *metrics = (__bridge UIFontMetrics *) handle;
104
+
105
+ result = bare_foundation_bridge(env, state->registry, [metrics scaledFontForFont:(__bridge UIFont *) font]);
106
+ }
107
+
108
+ return result;
109
+ }
@@ -0,0 +1,58 @@
1
+ const binding = require('../binding')
2
+ const registry = require('bare-foundation-registry')
3
+ const wrap = require('./wrap')
4
+ const UIKitFont = require('./font')
5
+
6
+ module.exports = exports = class UIKitFontMetrics {
7
+ constructor(opts = {}) {
8
+ const { tag = null } = opts
9
+
10
+ this._tag = tag
11
+
12
+ this._token = binding.claim(this._tag, this)
13
+ }
14
+
15
+ get [registry.tag]() {
16
+ return this._tag
17
+ }
18
+
19
+ get [registry.handle]() {
20
+ return binding.handle(this._tag)
21
+ }
22
+
23
+ static get defaultMetrics() {
24
+ return wrap(UIKitFontMetrics, binding.fontMetricsDefaultMetrics())
25
+ }
26
+
27
+ static metricsForTextStyle(textStyle) {
28
+ return wrap(UIKitFontMetrics, binding.fontMetricsForTextStyle(textStyle))
29
+ }
30
+
31
+ scaledValueForValue(value) {
32
+ return binding.fontMetricsScaledValueForValue(this._tag, value)
33
+ }
34
+
35
+ scaledFontForFont(font) {
36
+ return wrap(UIKitFont, binding.fontMetricsScaledFontForFont(this._tag, font._tag))
37
+ }
38
+
39
+ [Symbol.for('bare.inspect')]() {
40
+ return {
41
+ __proto__: { constructor: UIKitFontMetrics }
42
+ }
43
+ }
44
+ }
45
+
46
+ exports.FONT_TEXT_STYLE = {
47
+ LARGE_TITLE: binding.FONT_TEXT_STYLE_LARGE_TITLE,
48
+ TITLE1: binding.FONT_TEXT_STYLE_TITLE1,
49
+ TITLE2: binding.FONT_TEXT_STYLE_TITLE2,
50
+ TITLE3: binding.FONT_TEXT_STYLE_TITLE3,
51
+ HEADLINE: binding.FONT_TEXT_STYLE_HEADLINE,
52
+ SUBHEADLINE: binding.FONT_TEXT_STYLE_SUBHEADLINE,
53
+ BODY: binding.FONT_TEXT_STYLE_BODY,
54
+ CALLOUT: binding.FONT_TEXT_STYLE_CALLOUT,
55
+ FOOTNOTE: binding.FONT_TEXT_STYLE_FOOTNOTE,
56
+ CAPTION1: binding.FONT_TEXT_STYLE_CAPTION1,
57
+ CAPTION2: binding.FONT_TEXT_STYLE_CAPTION2
58
+ }
package/lib/font.d.ts ADDED
@@ -0,0 +1,59 @@
1
+ import { tag, handle, Handle, Wrapper } from 'bare-foundation-registry'
2
+ import UIKitFontDescriptor = require('./font-descriptor')
3
+
4
+ /** A font, as a `UIFont`. Sizes are in points. */
5
+ interface UIKitFont {
6
+ readonly fontDescriptor: UIKitFontDescriptor
7
+
8
+ readonly fontName: string
9
+
10
+ readonly familyName: string
11
+
12
+ readonly pointSize: number
13
+
14
+ readonly ascender: number
15
+
16
+ readonly descender: number
17
+
18
+ readonly capHeight: number
19
+
20
+ readonly xHeight: number
21
+
22
+ readonly leading: number
23
+
24
+ readonly lineHeight: number
25
+
26
+ readonly [tag]: number
27
+
28
+ readonly [handle]: Handle
29
+ }
30
+
31
+ declare class UIKitFont {
32
+ protected constructor()
33
+
34
+ /** The system font. `weight` is a `WEIGHT` constant and defaults to regular. */
35
+ static systemFont(size: number, weight?: number): UIKitFont
36
+
37
+ static boldSystemFont(size: number): UIKitFont
38
+
39
+ static monospacedSystemFont(size: number, weight?: number): UIKitFont
40
+
41
+ /** The font called `name`, or `null` if it is not installed. */
42
+ static withName(name: string, size: number): UIKitFont | null
43
+
44
+ static withDescriptor(descriptor: UIKitFontDescriptor, size: number): UIKitFont
45
+
46
+ static readonly WEIGHT: {
47
+ readonly ULTRA_LIGHT: number
48
+ readonly THIN: number
49
+ readonly LIGHT: number
50
+ readonly REGULAR: number
51
+ readonly MEDIUM: number
52
+ readonly SEMIBOLD: number
53
+ readonly BOLD: number
54
+ readonly HEAVY: number
55
+ readonly BLACK: number
56
+ }
57
+ }
58
+
59
+ export = UIKitFont
package/lib/font.h ADDED
@@ -0,0 +1,424 @@
1
+ #import <assert.h>
2
+ #import <bare.h>
3
+ #import <js.h>
4
+
5
+ #import <UIKit/UIKit.h>
6
+
7
+ #import "bridging.h"
8
+
9
+ static js_value_t *
10
+ bare_ui_kit_font_system_font(js_env_t *env, js_callback_info_t *info) {
11
+ int err;
12
+
13
+ size_t argc = 2;
14
+ js_value_t *argv[2];
15
+
16
+ bare_ui_kit_state_t *state;
17
+ err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state);
18
+ assert(err == 0);
19
+
20
+ assert(argc == 2);
21
+
22
+ double size;
23
+ if (!bare_ui_kit__read_double(env, argv[0], "size", &size)) return NULL;
24
+
25
+ double weight;
26
+ if (!bare_ui_kit__read_double(env, argv[1], "weight", &weight)) return NULL;
27
+
28
+ js_value_t *result;
29
+
30
+ @autoreleasepool {
31
+ result = bare_foundation_bridge(env, state->registry, [UIFont systemFontOfSize:size weight:weight]);
32
+ }
33
+
34
+ return result;
35
+ }
36
+
37
+ static js_value_t *
38
+ bare_ui_kit_font_bold_system_font(js_env_t *env, js_callback_info_t *info) {
39
+ int err;
40
+
41
+ size_t argc = 1;
42
+ js_value_t *argv[1];
43
+
44
+ bare_ui_kit_state_t *state;
45
+ err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state);
46
+ assert(err == 0);
47
+
48
+ assert(argc == 1);
49
+
50
+ double size;
51
+ if (!bare_ui_kit__read_double(env, argv[0], "size", &size)) return NULL;
52
+
53
+ js_value_t *result;
54
+
55
+ @autoreleasepool {
56
+ result = bare_foundation_bridge(env, state->registry, [UIFont boldSystemFontOfSize:size]);
57
+ }
58
+
59
+ return result;
60
+ }
61
+
62
+ static js_value_t *
63
+ bare_ui_kit_font_monospaced_system_font(js_env_t *env, js_callback_info_t *info) {
64
+ int err;
65
+
66
+ size_t argc = 2;
67
+ js_value_t *argv[2];
68
+
69
+ bare_ui_kit_state_t *state;
70
+ err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state);
71
+ assert(err == 0);
72
+
73
+ assert(argc == 2);
74
+
75
+ double size;
76
+ if (!bare_ui_kit__read_double(env, argv[0], "size", &size)) return NULL;
77
+
78
+ double weight;
79
+ if (!bare_ui_kit__read_double(env, argv[1], "weight", &weight)) return NULL;
80
+
81
+ js_value_t *result;
82
+
83
+ @autoreleasepool {
84
+ result = bare_foundation_bridge(env, state->registry, [UIFont monospacedSystemFontOfSize:size weight:weight]);
85
+ }
86
+
87
+ return result;
88
+ }
89
+
90
+ // A family that is not installed has no font. That is not an error, and the
91
+ // caller falls back to the system font.
92
+ static js_value_t *
93
+ bare_ui_kit_font_with_name(js_env_t *env, js_callback_info_t *info) {
94
+ int err;
95
+
96
+ size_t argc = 2;
97
+ js_value_t *argv[2];
98
+
99
+ bare_ui_kit_state_t *state;
100
+ err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state);
101
+ assert(err == 0);
102
+
103
+ assert(argc == 2);
104
+
105
+ double size;
106
+ if (!bare_ui_kit__read_double(env, argv[1], "size", &size)) return NULL;
107
+
108
+ js_value_t *result;
109
+
110
+ @autoreleasepool {
111
+ NSString *name = bare_ui_kit__to_string(env, argv[0]);
112
+
113
+ result = bare_foundation_bridge(env, state->registry, [UIFont fontWithName:name size:size]);
114
+ }
115
+
116
+ return result;
117
+ }
118
+
119
+ static js_value_t *
120
+ bare_ui_kit_font_font_name(js_env_t *env, js_callback_info_t *info) {
121
+ int err;
122
+
123
+ size_t argc = 1;
124
+ js_value_t *argv[1];
125
+
126
+ bare_ui_kit_state_t *state;
127
+ err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state);
128
+ assert(err == 0);
129
+
130
+ assert(argc == 1);
131
+
132
+ void *handle;
133
+ if (bare_foundation_read_tag(env, state->registry, argv[0], "handle", &handle) < 0) return NULL;
134
+
135
+ js_value_t *result;
136
+
137
+ @autoreleasepool {
138
+ UIFont *font = (__bridge UIFont *) handle;
139
+
140
+ result = bare_ui_kit__from_string(env, font.fontName);
141
+ }
142
+
143
+ return result;
144
+ }
145
+
146
+ static js_value_t *
147
+ bare_ui_kit_font_family_name(js_env_t *env, js_callback_info_t *info) {
148
+ int err;
149
+
150
+ size_t argc = 1;
151
+ js_value_t *argv[1];
152
+
153
+ bare_ui_kit_state_t *state;
154
+ err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state);
155
+ assert(err == 0);
156
+
157
+ assert(argc == 1);
158
+
159
+ void *handle;
160
+ if (bare_foundation_read_tag(env, state->registry, argv[0], "handle", &handle) < 0) return NULL;
161
+
162
+ js_value_t *result;
163
+
164
+ @autoreleasepool {
165
+ UIFont *font = (__bridge UIFont *) handle;
166
+
167
+ result = bare_ui_kit__from_string(env, font.familyName);
168
+ }
169
+
170
+ return result;
171
+ }
172
+
173
+ static js_value_t *
174
+ bare_ui_kit_font_point_size(js_env_t *env, js_callback_info_t *info) {
175
+ int err;
176
+
177
+ size_t argc = 1;
178
+ js_value_t *argv[1];
179
+
180
+ bare_ui_kit_state_t *state;
181
+ err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state);
182
+ assert(err == 0);
183
+
184
+ assert(argc == 1);
185
+
186
+ void *handle;
187
+ if (bare_foundation_read_tag(env, state->registry, argv[0], "handle", &handle) < 0) return NULL;
188
+
189
+ js_value_t *result;
190
+
191
+ @autoreleasepool {
192
+ UIFont *font = (__bridge UIFont *) handle;
193
+
194
+ err = js_create_double(env, font.pointSize, &result);
195
+ assert(err == 0);
196
+ }
197
+
198
+ return result;
199
+ }
200
+
201
+ static js_value_t *
202
+ bare_ui_kit_font_ascender(js_env_t *env, js_callback_info_t *info) {
203
+ int err;
204
+
205
+ size_t argc = 1;
206
+ js_value_t *argv[1];
207
+
208
+ bare_ui_kit_state_t *state;
209
+ err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state);
210
+ assert(err == 0);
211
+
212
+ assert(argc == 1);
213
+
214
+ void *handle;
215
+ if (bare_foundation_read_tag(env, state->registry, argv[0], "handle", &handle) < 0) return NULL;
216
+
217
+ js_value_t *result;
218
+
219
+ @autoreleasepool {
220
+ UIFont *font = (__bridge UIFont *) handle;
221
+
222
+ err = js_create_double(env, font.ascender, &result);
223
+ assert(err == 0);
224
+ }
225
+
226
+ return result;
227
+ }
228
+
229
+ static js_value_t *
230
+ bare_ui_kit_font_descender(js_env_t *env, js_callback_info_t *info) {
231
+ int err;
232
+
233
+ size_t argc = 1;
234
+ js_value_t *argv[1];
235
+
236
+ bare_ui_kit_state_t *state;
237
+ err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state);
238
+ assert(err == 0);
239
+
240
+ assert(argc == 1);
241
+
242
+ void *handle;
243
+ if (bare_foundation_read_tag(env, state->registry, argv[0], "handle", &handle) < 0) return NULL;
244
+
245
+ js_value_t *result;
246
+
247
+ @autoreleasepool {
248
+ UIFont *font = (__bridge UIFont *) handle;
249
+
250
+ err = js_create_double(env, font.descender, &result);
251
+ assert(err == 0);
252
+ }
253
+
254
+ return result;
255
+ }
256
+
257
+ static js_value_t *
258
+ bare_ui_kit_font_cap_height(js_env_t *env, js_callback_info_t *info) {
259
+ int err;
260
+
261
+ size_t argc = 1;
262
+ js_value_t *argv[1];
263
+
264
+ bare_ui_kit_state_t *state;
265
+ err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state);
266
+ assert(err == 0);
267
+
268
+ assert(argc == 1);
269
+
270
+ void *handle;
271
+ if (bare_foundation_read_tag(env, state->registry, argv[0], "handle", &handle) < 0) return NULL;
272
+
273
+ js_value_t *result;
274
+
275
+ @autoreleasepool {
276
+ UIFont *font = (__bridge UIFont *) handle;
277
+
278
+ err = js_create_double(env, font.capHeight, &result);
279
+ assert(err == 0);
280
+ }
281
+
282
+ return result;
283
+ }
284
+
285
+ static js_value_t *
286
+ bare_ui_kit_font_x_height(js_env_t *env, js_callback_info_t *info) {
287
+ int err;
288
+
289
+ size_t argc = 1;
290
+ js_value_t *argv[1];
291
+
292
+ bare_ui_kit_state_t *state;
293
+ err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state);
294
+ assert(err == 0);
295
+
296
+ assert(argc == 1);
297
+
298
+ void *handle;
299
+ if (bare_foundation_read_tag(env, state->registry, argv[0], "handle", &handle) < 0) return NULL;
300
+
301
+ js_value_t *result;
302
+
303
+ @autoreleasepool {
304
+ UIFont *font = (__bridge UIFont *) handle;
305
+
306
+ err = js_create_double(env, font.xHeight, &result);
307
+ assert(err == 0);
308
+ }
309
+
310
+ return result;
311
+ }
312
+
313
+ static js_value_t *
314
+ bare_ui_kit_font_leading(js_env_t *env, js_callback_info_t *info) {
315
+ int err;
316
+
317
+ size_t argc = 1;
318
+ js_value_t *argv[1];
319
+
320
+ bare_ui_kit_state_t *state;
321
+ err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state);
322
+ assert(err == 0);
323
+
324
+ assert(argc == 1);
325
+
326
+ void *handle;
327
+ if (bare_foundation_read_tag(env, state->registry, argv[0], "handle", &handle) < 0) return NULL;
328
+
329
+ js_value_t *result;
330
+
331
+ @autoreleasepool {
332
+ UIFont *font = (__bridge UIFont *) handle;
333
+
334
+ err = js_create_double(env, font.leading, &result);
335
+ assert(err == 0);
336
+ }
337
+
338
+ return result;
339
+ }
340
+
341
+ static js_value_t *
342
+ bare_ui_kit_font_line_height(js_env_t *env, js_callback_info_t *info) {
343
+ int err;
344
+
345
+ size_t argc = 1;
346
+ js_value_t *argv[1];
347
+
348
+ bare_ui_kit_state_t *state;
349
+ err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state);
350
+ assert(err == 0);
351
+
352
+ assert(argc == 1);
353
+
354
+ void *handle;
355
+ if (bare_foundation_read_tag(env, state->registry, argv[0], "handle", &handle) < 0) return NULL;
356
+
357
+ js_value_t *result;
358
+
359
+ @autoreleasepool {
360
+ UIFont *font = (__bridge UIFont *) handle;
361
+
362
+ err = js_create_double(env, font.lineHeight, &result);
363
+ assert(err == 0);
364
+ }
365
+
366
+ return result;
367
+ }
368
+
369
+ static js_value_t *
370
+ bare_ui_kit_font_font_descriptor(js_env_t *env, js_callback_info_t *info) {
371
+ int err;
372
+
373
+ size_t argc = 1;
374
+ js_value_t *argv[1];
375
+
376
+ bare_ui_kit_state_t *state;
377
+ err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state);
378
+ assert(err == 0);
379
+
380
+ assert(argc == 1);
381
+
382
+ void *handle;
383
+ if (bare_foundation_read_tag(env, state->registry, argv[0], "handle", &handle) < 0) return NULL;
384
+
385
+ js_value_t *result;
386
+
387
+ @autoreleasepool {
388
+ UIFont *font = (__bridge UIFont *) handle;
389
+
390
+ result = bare_foundation_bridge(env, state->registry, font.fontDescriptor);
391
+ }
392
+
393
+ return result;
394
+ }
395
+
396
+ static js_value_t *
397
+ bare_ui_kit_font_with_descriptor(js_env_t *env, js_callback_info_t *info) {
398
+ int err;
399
+
400
+ size_t argc = 2;
401
+ js_value_t *argv[2];
402
+
403
+ bare_ui_kit_state_t *state;
404
+ err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state);
405
+ assert(err == 0);
406
+
407
+ assert(argc == 2);
408
+
409
+ void *handle;
410
+ if (bare_foundation_read_tag(env, state->registry, argv[0], "handle", &handle) < 0) return NULL;
411
+
412
+ double size;
413
+ if (!bare_ui_kit__read_double(env, argv[1], "size", &size)) return NULL;
414
+
415
+ js_value_t *result;
416
+
417
+ @autoreleasepool {
418
+ UIFontDescriptor *descriptor = (__bridge UIFontDescriptor *) handle;
419
+
420
+ result = bare_foundation_bridge(env, state->registry, [UIFont fontWithDescriptor:descriptor size:size]);
421
+ }
422
+
423
+ return result;
424
+ }