annotate src/libmlk-core-js/core/js-font.c @ 356:26636fdb735d

js: fix warning
author David Demelier <markand@malikania.fr>
date Fri, 22 Oct 2021 10:58:21 +0200
parents 9eb25198d706
children 39f5d932941a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
339
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 * js-font.c -- core texture binding
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 *
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
4 * Copyright (c) 2020-2021 David Demelier <markand@malikania.fr>
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 */
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
19 #include <assert.h>
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
20
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
21 #include <core/alloc.h>
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
22 #include <core/error.h>
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
23 #include <core/font.h>
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
24 #include <core/texture.h>
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
25 #include <core/vfs.h>
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
26
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
27 #include "js-core.h"
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
28 #include "js-font.h"
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
29 #include "js-texture.h"
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
30
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
31 #define SIGNATURE DUK_HIDDEN_SYMBOL("Mlk.Font")
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
32
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
33 static inline struct font *
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
34 self(duk_context *ctx)
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
35 {
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
36 struct font *font;
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
37
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
38 duk_push_this(ctx);
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
39 duk_get_prop_string(ctx, -1, SIGNATURE);
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
40 font = duk_to_pointer(ctx, -1);
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
41 duk_pop_2(ctx);
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
42
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
43 if (!font)
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
44 duk_error(ctx, DUK_ERR_TYPE_ERROR, "not a Font object");
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
45
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
46 return font;
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
47 }
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
48
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
49 static duk_ret_t
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
50 Font_getStyle(duk_context *ctx)
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
51 {
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
52 duk_push_int(ctx, self(ctx)->style);
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
53
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
54 return 1;
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
55 }
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
56
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
57 static duk_ret_t
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
58 Font_setStyle(duk_context *ctx)
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
59 {
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
60 const int style = duk_require_int(ctx, 0);
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
61
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
62 if (style < 0 || style >= FONT_STYLE_LAST)
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
63 duk_error(ctx, DUK_ERR_ERROR, "invalid style");
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
64
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
65 self(ctx)->style = style;
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
66
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
67 return 0;
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
68 }
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
69
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
70 static duk_ret_t
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
71 Font_getHeight(duk_context *ctx)
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
72 {
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
73 duk_push_uint(ctx, font_height(self(ctx)));
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
74
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
75 return 1;
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
76 }
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
77
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
78 static duk_ret_t
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
79 Font_new(duk_context *ctx)
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
80 {
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
81 const char *entry = duk_require_string(ctx, 0);
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
82 const unsigned int size = duk_require_uint(ctx, 1);
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
83 struct vfs_file file;
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
84 struct font *font;
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
85
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
86 if (vfs_open(js_core_global_vfs(ctx), &file, entry, "r") < 0)
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
87 duk_error(ctx, DUK_ERR_ERROR, "%s", error());
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
88
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
89 font = alloc_new0(sizeof (*font));
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
90
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
91 if (font_openvfs(font, &file, size) < 0) {
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
92 free(font);
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
93 vfs_file_finish(&file);
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
94 duk_error(ctx, DUK_ERR_ERROR, "%s", error());
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
95 }
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
96
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
97 vfs_file_finish(&file);
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
98
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
99 duk_push_this(ctx);
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
100 duk_push_pointer(ctx, font);
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
101 duk_put_prop_string(ctx, -2, SIGNATURE);
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
102 duk_push_string(ctx, "style");
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
103 duk_push_c_function(ctx, Font_getStyle, 0);
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
104 duk_push_c_function(ctx, Font_setStyle, 1);
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
105 duk_def_prop(ctx, -4, DUK_DEFPROP_HAVE_GETTER | DUK_DEFPROP_HAVE_SETTER);
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
106 duk_push_string(ctx, "height");
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
107 duk_push_c_function(ctx, Font_getHeight, 0);
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
108 duk_def_prop(ctx, -3, DUK_DEFPROP_HAVE_GETTER);
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
109 duk_pop(ctx);
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
110
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
111 return 0;
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
112 }
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
113
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
114 static duk_ret_t
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
115 Font_render(duk_context *ctx)
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
116 {
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
117 const char *text = duk_require_string(ctx, 0);
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
118 unsigned long color = duk_require_uint(ctx, 1);
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
119 struct texture *tex;
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
120
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
121 tex = alloc_new0(sizeof (*tex));
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
122
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
123 if (font_render(self(ctx), tex, text, color) < 0) {
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
124 free(tex);
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
125 duk_error(ctx, DUK_ERR_ERROR, "%s", error());
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
126 }
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
127
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
128 js_texture_push(ctx, tex);
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
129
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
130 return 1;
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
131 }
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
132
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
133 static duk_ret_t
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
134 Font_query(duk_context *ctx)
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
135 {
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
136 const char *text = duk_require_string(ctx, 0);
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
137 unsigned int w, h;
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
138
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
139 if (font_query(self(ctx), text, &w, &h) < 0)
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
140 duk_error(ctx, DUK_ERR_ERROR, "%s", error());
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
141
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
142 duk_push_object(ctx);
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
143 duk_push_uint(ctx, w);
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
144 duk_put_prop_string(ctx, -2, "w");
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
145 duk_push_uint(ctx, h);
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
146 duk_put_prop_string(ctx, -2, "h");
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
147
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
148 return 1;
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
149 }
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
150
342
17569bc205fa js: forgot font destructor
David Demelier <markand@malikania.fr>
parents: 339
diff changeset
151 static duk_ret_t
17569bc205fa js: forgot font destructor
David Demelier <markand@malikania.fr>
parents: 339
diff changeset
152 Font_destructor(duk_context *ctx)
17569bc205fa js: forgot font destructor
David Demelier <markand@malikania.fr>
parents: 339
diff changeset
153 {
17569bc205fa js: forgot font destructor
David Demelier <markand@malikania.fr>
parents: 339
diff changeset
154 struct font *font;
17569bc205fa js: forgot font destructor
David Demelier <markand@malikania.fr>
parents: 339
diff changeset
155
17569bc205fa js: forgot font destructor
David Demelier <markand@malikania.fr>
parents: 339
diff changeset
156 duk_get_prop_string(ctx, 0, SIGNATURE);
17569bc205fa js: forgot font destructor
David Demelier <markand@malikania.fr>
parents: 339
diff changeset
157
17569bc205fa js: forgot font destructor
David Demelier <markand@malikania.fr>
parents: 339
diff changeset
158 if ((font = duk_to_pointer(ctx, -1)))
17569bc205fa js: forgot font destructor
David Demelier <markand@malikania.fr>
parents: 339
diff changeset
159 font_finish(font);
17569bc205fa js: forgot font destructor
David Demelier <markand@malikania.fr>
parents: 339
diff changeset
160
17569bc205fa js: forgot font destructor
David Demelier <markand@malikania.fr>
parents: 339
diff changeset
161 duk_pop(ctx);
17569bc205fa js: forgot font destructor
David Demelier <markand@malikania.fr>
parents: 339
diff changeset
162 duk_del_prop_string(ctx, 0, SIGNATURE);
17569bc205fa js: forgot font destructor
David Demelier <markand@malikania.fr>
parents: 339
diff changeset
163
17569bc205fa js: forgot font destructor
David Demelier <markand@malikania.fr>
parents: 339
diff changeset
164 return 0;
17569bc205fa js: forgot font destructor
David Demelier <markand@malikania.fr>
parents: 339
diff changeset
165 }
17569bc205fa js: forgot font destructor
David Demelier <markand@malikania.fr>
parents: 339
diff changeset
166
339
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
167 static const struct duk_function_list_entry methods[] = {
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
168 { "render", Font_render, 2 },
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
169 { "query", Font_query, 1 },
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
170 { NULL, NULL, 0 }
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
171 };
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
172
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
173 static const struct duk_number_list_entry styles[] = {
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
174 { "ANTIALIASED", FONT_STYLE_ANTIALIASED, },
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
175 { "NONE", FONT_STYLE_NONE },
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
176 { NULL, 0 }
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
177 };
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
178
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
179 void
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
180 js_font_bind(duk_context *ctx)
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
181 {
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
182 assert(ctx);
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
183
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
184 duk_push_c_function(ctx, Font_new, 2);
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
185 duk_push_object(ctx);
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
186 duk_put_number_list(ctx, -1, styles);
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
187 duk_put_prop_string(ctx, -2, "Style");
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
188 duk_push_object(ctx);
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
189 duk_put_function_list(ctx, -1, methods);
342
17569bc205fa js: forgot font destructor
David Demelier <markand@malikania.fr>
parents: 339
diff changeset
190 duk_push_c_function(ctx, Font_destructor, 1);
343
9eb25198d706 js: add sound bindings
David Demelier <markand@malikania.fr>
parents: 342
diff changeset
191 duk_set_finalizer(ctx, -2);
339
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
192 duk_put_prop_string(ctx, -2, "prototype");
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
193 duk_put_global_string(ctx, "Font");
979960e65f76 js: add font bindings
David Demelier <markand@malikania.fr>
parents:
diff changeset
194 }