Mercurial > MadButterfly
annotate nodejs/shapes.cc @ 823:ea544a68f55d
Testcase for redrawing cached canvas
author | Thinker K.F. Li <thinker@codemud.net> |
---|---|
date | Tue, 14 Sep 2010 05:44:48 +0800 |
parents | 16d8a1d48717 |
children | 586e50f82c1f |
rev | line source |
---|---|
564 | 1 #include <v8.h> |
2 #include "mbfly_njs.h" | |
3 | |
683
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
4 #include <string.h> |
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
5 |
564 | 6 extern "C" { |
7 #include <mb.h> | |
8 } | |
9 | |
570
49e79253b6d3
Functions of setting/getting stroke width of a shape
Thinker K.F. Li <thinker@branda.to>
parents:
569
diff
changeset
|
10 #ifndef ASSERT |
49e79253b6d3
Functions of setting/getting stroke width of a shape
Thinker K.F. Li <thinker@branda.to>
parents:
569
diff
changeset
|
11 #define ASSERT(x) |
49e79253b6d3
Functions of setting/getting stroke width of a shape
Thinker K.F. Li <thinker@branda.to>
parents:
569
diff
changeset
|
12 #endif |
49e79253b6d3
Functions of setting/getting stroke width of a shape
Thinker K.F. Li <thinker@branda.to>
parents:
569
diff
changeset
|
13 |
748
56a5e08cd8af
Make shapes can be removed from the tree
Thinker K.F. Li <thinker@codemud.net>
parents:
743
diff
changeset
|
14 #define OK 0 |
56a5e08cd8af
Make shapes can be removed from the tree
Thinker K.F. Li <thinker@codemud.net>
parents:
743
diff
changeset
|
15 |
564 | 16 using namespace v8; |
17 | |
684
b346e4699e55
Add more comment for JS binding
Thinker K.F. Li <thinker@branda.to>
parents:
683
diff
changeset
|
18 /*! \defgroup xnjsmb_shapes JS binding for shapes. |
683
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
19 * \ingroup xnjsmb |
564 | 20 * |
21 * @{ | |
22 */ | |
748
56a5e08cd8af
Make shapes can be removed from the tree
Thinker K.F. Li <thinker@codemud.net>
parents:
743
diff
changeset
|
23 /*! \brief This function is called when GC collecting a shape. |
56a5e08cd8af
Make shapes can be removed from the tree
Thinker K.F. Li <thinker@codemud.net>
parents:
743
diff
changeset
|
24 * |
56a5e08cd8af
Make shapes can be removed from the tree
Thinker K.F. Li <thinker@codemud.net>
parents:
743
diff
changeset
|
25 * It was installed by Persistent<Object>::MakeWeak(). |
56a5e08cd8af
Make shapes can be removed from the tree
Thinker K.F. Li <thinker@codemud.net>
parents:
743
diff
changeset
|
26 */ |
56a5e08cd8af
Make shapes can be removed from the tree
Thinker K.F. Li <thinker@codemud.net>
parents:
743
diff
changeset
|
27 static void |
56a5e08cd8af
Make shapes can be removed from the tree
Thinker K.F. Li <thinker@codemud.net>
parents:
743
diff
changeset
|
28 xnjsmb_shape_recycled(Persistent<Value> obj, void *parameter) { |
56a5e08cd8af
Make shapes can be removed from the tree
Thinker K.F. Li <thinker@codemud.net>
parents:
743
diff
changeset
|
29 Persistent<Object> *self_hdl = (Persistent<Object> *)parameter; |
56a5e08cd8af
Make shapes can be removed from the tree
Thinker K.F. Li <thinker@codemud.net>
parents:
743
diff
changeset
|
30 Handle<Object> js_rt; |
56a5e08cd8af
Make shapes can be removed from the tree
Thinker K.F. Li <thinker@codemud.net>
parents:
743
diff
changeset
|
31 redraw_man_t *rdman; |
56a5e08cd8af
Make shapes can be removed from the tree
Thinker K.F. Li <thinker@codemud.net>
parents:
743
diff
changeset
|
32 shape_t *shape; |
56a5e08cd8af
Make shapes can be removed from the tree
Thinker K.F. Li <thinker@codemud.net>
parents:
743
diff
changeset
|
33 |
56a5e08cd8af
Make shapes can be removed from the tree
Thinker K.F. Li <thinker@codemud.net>
parents:
743
diff
changeset
|
34 shape = (shape_t *)UNWRAP(*self_hdl); |
56a5e08cd8af
Make shapes can be removed from the tree
Thinker K.F. Li <thinker@codemud.net>
parents:
743
diff
changeset
|
35 if(shape == NULL) |
56a5e08cd8af
Make shapes can be removed from the tree
Thinker K.F. Li <thinker@codemud.net>
parents:
743
diff
changeset
|
36 return; |
56a5e08cd8af
Make shapes can be removed from the tree
Thinker K.F. Li <thinker@codemud.net>
parents:
743
diff
changeset
|
37 |
56a5e08cd8af
Make shapes can be removed from the tree
Thinker K.F. Li <thinker@codemud.net>
parents:
743
diff
changeset
|
38 WRAP(*self_hdl, NULL); |
56a5e08cd8af
Make shapes can be removed from the tree
Thinker K.F. Li <thinker@codemud.net>
parents:
743
diff
changeset
|
39 |
56a5e08cd8af
Make shapes can be removed from the tree
Thinker K.F. Li <thinker@codemud.net>
parents:
743
diff
changeset
|
40 js_rt = GET(*self_hdl, "mbrt")->ToObject(); |
56a5e08cd8af
Make shapes can be removed from the tree
Thinker K.F. Li <thinker@codemud.net>
parents:
743
diff
changeset
|
41 rdman = xnjsmb_rt_rdman(js_rt); |
56a5e08cd8af
Make shapes can be removed from the tree
Thinker K.F. Li <thinker@codemud.net>
parents:
743
diff
changeset
|
42 rdman_shape_changed(rdman, shape); |
56a5e08cd8af
Make shapes can be removed from the tree
Thinker K.F. Li <thinker@codemud.net>
parents:
743
diff
changeset
|
43 rdman_shape_free(rdman, shape); |
764
194e24d8ecab
Delete weak handle for shape objects before GC
Thinker K.F. Li <thinker@codemud.net>
parents:
749
diff
changeset
|
44 |
766
be0e02948c1d
Improve resource management for coords, shapes and paints.
Thinker K.F. Li <thinker@codemud.net>
parents:
764
diff
changeset
|
45 self_hdl->Dispose(); |
764
194e24d8ecab
Delete weak handle for shape objects before GC
Thinker K.F. Li <thinker@codemud.net>
parents:
749
diff
changeset
|
46 delete self_hdl; |
748
56a5e08cd8af
Make shapes can be removed from the tree
Thinker K.F. Li <thinker@codemud.net>
parents:
743
diff
changeset
|
47 } |
56a5e08cd8af
Make shapes can be removed from the tree
Thinker K.F. Li <thinker@codemud.net>
parents:
743
diff
changeset
|
48 |
683
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
49 static void |
743
dd1f3382d6a4
Create a persistent handle for coords and shapes correctly
Thinker K.F. Li <thinker@codemud.net>
parents:
690
diff
changeset
|
50 xnjsmb_shape_mod(Handle<Object> self, shape_t *sh) { |
dd1f3382d6a4
Create a persistent handle for coords and shapes correctly
Thinker K.F. Li <thinker@codemud.net>
parents:
690
diff
changeset
|
51 Persistent<Object> *self_hdl; |
766
be0e02948c1d
Improve resource management for coords, shapes and paints.
Thinker K.F. Li <thinker@codemud.net>
parents:
764
diff
changeset
|
52 static int count = 0; |
743
dd1f3382d6a4
Create a persistent handle for coords and shapes correctly
Thinker K.F. Li <thinker@codemud.net>
parents:
690
diff
changeset
|
53 |
dd1f3382d6a4
Create a persistent handle for coords and shapes correctly
Thinker K.F. Li <thinker@codemud.net>
parents:
690
diff
changeset
|
54 /* Keep associated js object in property store for retrieving, |
dd1f3382d6a4
Create a persistent handle for coords and shapes correctly
Thinker K.F. Li <thinker@codemud.net>
parents:
690
diff
changeset
|
55 * later, without create new js object. |
dd1f3382d6a4
Create a persistent handle for coords and shapes correctly
Thinker K.F. Li <thinker@codemud.net>
parents:
690
diff
changeset
|
56 */ |
dd1f3382d6a4
Create a persistent handle for coords and shapes correctly
Thinker K.F. Li <thinker@codemud.net>
parents:
690
diff
changeset
|
57 self_hdl = new Persistent<Object>(); |
dd1f3382d6a4
Create a persistent handle for coords and shapes correctly
Thinker K.F. Li <thinker@codemud.net>
parents:
690
diff
changeset
|
58 *self_hdl = Persistent<Object>::New(self); |
dd1f3382d6a4
Create a persistent handle for coords and shapes correctly
Thinker K.F. Li <thinker@codemud.net>
parents:
690
diff
changeset
|
59 mb_prop_set(&sh->obj.props, PROP_JSOBJ, self_hdl); |
748
56a5e08cd8af
Make shapes can be removed from the tree
Thinker K.F. Li <thinker@codemud.net>
parents:
743
diff
changeset
|
60 |
56a5e08cd8af
Make shapes can be removed from the tree
Thinker K.F. Li <thinker@codemud.net>
parents:
743
diff
changeset
|
61 self_hdl->MakeWeak(self_hdl, xnjsmb_shape_recycled); |
766
be0e02948c1d
Improve resource management for coords, shapes and paints.
Thinker K.F. Li <thinker@codemud.net>
parents:
764
diff
changeset
|
62 |
be0e02948c1d
Improve resource management for coords, shapes and paints.
Thinker K.F. Li <thinker@codemud.net>
parents:
764
diff
changeset
|
63 /* XXX: should be remove. It is for trace recycle of shape */ |
be0e02948c1d
Improve resource management for coords, shapes and paints.
Thinker K.F. Li <thinker@codemud.net>
parents:
764
diff
changeset
|
64 count++; |
be0e02948c1d
Improve resource management for coords, shapes and paints.
Thinker K.F. Li <thinker@codemud.net>
parents:
764
diff
changeset
|
65 if(count > 10000) { |
be0e02948c1d
Improve resource management for coords, shapes and paints.
Thinker K.F. Li <thinker@codemud.net>
parents:
764
diff
changeset
|
66 V8::LowMemoryNotification(); |
be0e02948c1d
Improve resource management for coords, shapes and paints.
Thinker K.F. Li <thinker@codemud.net>
parents:
764
diff
changeset
|
67 count = 0; |
be0e02948c1d
Improve resource management for coords, shapes and paints.
Thinker K.F. Li <thinker@codemud.net>
parents:
764
diff
changeset
|
68 } |
743
dd1f3382d6a4
Create a persistent handle for coords and shapes correctly
Thinker K.F. Li <thinker@codemud.net>
parents:
690
diff
changeset
|
69 } |
dd1f3382d6a4
Create a persistent handle for coords and shapes correctly
Thinker K.F. Li <thinker@codemud.net>
parents:
690
diff
changeset
|
70 |
780
16d8a1d48717
Doc for xnjsmb_sh_stext_set_style
Thinker K.F. Li <thinker@codemud.net>
parents:
767
diff
changeset
|
71 /*! \brief Set style blocks for a stext object from JS. |
16d8a1d48717
Doc for xnjsmb_sh_stext_set_style
Thinker K.F. Li <thinker@codemud.net>
parents:
767
diff
changeset
|
72 * |
16d8a1d48717
Doc for xnjsmb_sh_stext_set_style
Thinker K.F. Li <thinker@codemud.net>
parents:
767
diff
changeset
|
73 * A style block is style setting of a chip of text. It is a 3-tuple, |
16d8a1d48717
Doc for xnjsmb_sh_stext_set_style
Thinker K.F. Li <thinker@codemud.net>
parents:
767
diff
changeset
|
74 * includes number of charaters, a font face, and font size. This |
16d8a1d48717
Doc for xnjsmb_sh_stext_set_style
Thinker K.F. Li <thinker@codemud.net>
parents:
767
diff
changeset
|
75 * function need a list of 3-tuples to set style of text chips of the |
16d8a1d48717
Doc for xnjsmb_sh_stext_set_style
Thinker K.F. Li <thinker@codemud.net>
parents:
767
diff
changeset
|
76 * stext. |
16d8a1d48717
Doc for xnjsmb_sh_stext_set_style
Thinker K.F. Li <thinker@codemud.net>
parents:
767
diff
changeset
|
77 */ |
743
dd1f3382d6a4
Create a persistent handle for coords and shapes correctly
Thinker K.F. Li <thinker@codemud.net>
parents:
690
diff
changeset
|
78 static void |
689
a05a4a27ff46
Fix bug of losting rdman in xnjsmb_sh_stext_set_style
Thinker K.F. Li <thinker@branda.to>
parents:
688
diff
changeset
|
79 xnjsmb_sh_stext_set_style(shape_t *sh, Handle<Object> self, |
a05a4a27ff46
Fix bug of losting rdman in xnjsmb_sh_stext_set_style
Thinker K.F. Li <thinker@branda.to>
parents:
688
diff
changeset
|
80 Handle<Value> blks, const char **err) { |
683
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
81 Array *blksobj; |
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
82 Array *blkobj; |
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
83 mb_style_blk_t *mb_blks; |
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
84 int nblks; |
689
a05a4a27ff46
Fix bug of losting rdman in xnjsmb_sh_stext_set_style
Thinker K.F. Li <thinker@branda.to>
parents:
688
diff
changeset
|
85 Handle<Object> rt; |
a05a4a27ff46
Fix bug of losting rdman in xnjsmb_sh_stext_set_style
Thinker K.F. Li <thinker@branda.to>
parents:
688
diff
changeset
|
86 redraw_man_t *rdman; |
683
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
87 int r; |
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
88 int i; |
564 | 89 |
683
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
90 blksobj = Array::Cast(*blks); |
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
91 nblks = blksobj->Length(); |
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
92 mb_blks = new mb_style_blk_t[nblks]; |
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
93 for(i = 0; i < nblks; i++) { |
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
94 blkobj = Array::Cast(*blksobj->Get(i)); |
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
95 mb_blks[i].n_chars = blkobj->Get(0)->ToInt32()->Value(); |
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
96 mb_blks[i].face = (mb_font_face_t *)UNWRAP(blkobj->Get(1)->ToObject()); |
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
97 mb_blks[i].font_sz = blkobj->Get(2)->ToNumber()->Value(); |
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
98 } |
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
99 |
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
100 r = sh_stext_set_style(sh, mb_blks, nblks); |
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
101 if(r != 0) { |
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
102 *err = "Unknown error"; |
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
103 return; |
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
104 } |
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
105 |
689
a05a4a27ff46
Fix bug of losting rdman in xnjsmb_sh_stext_set_style
Thinker K.F. Li <thinker@branda.to>
parents:
688
diff
changeset
|
106 /* |
a05a4a27ff46
Fix bug of losting rdman in xnjsmb_sh_stext_set_style
Thinker K.F. Li <thinker@branda.to>
parents:
688
diff
changeset
|
107 * Mark changed. |
a05a4a27ff46
Fix bug of losting rdman in xnjsmb_sh_stext_set_style
Thinker K.F. Li <thinker@branda.to>
parents:
688
diff
changeset
|
108 */ |
a05a4a27ff46
Fix bug of losting rdman in xnjsmb_sh_stext_set_style
Thinker K.F. Li <thinker@branda.to>
parents:
688
diff
changeset
|
109 rt = GET(self, "mbrt")->ToObject(); |
a05a4a27ff46
Fix bug of losting rdman in xnjsmb_sh_stext_set_style
Thinker K.F. Li <thinker@branda.to>
parents:
688
diff
changeset
|
110 ASSERT(rt != NULL); |
a05a4a27ff46
Fix bug of losting rdman in xnjsmb_sh_stext_set_style
Thinker K.F. Li <thinker@branda.to>
parents:
688
diff
changeset
|
111 rdman = xnjsmb_rt_rdman(rt); |
a05a4a27ff46
Fix bug of losting rdman in xnjsmb_sh_stext_set_style
Thinker K.F. Li <thinker@branda.to>
parents:
688
diff
changeset
|
112 |
688
cadebc13be2f
Mark stext changed when its style being changed
Thinker K.F. Li <thinker@branda.to>
parents:
687
diff
changeset
|
113 if(sh_get_coord(sh)) |
cadebc13be2f
Mark stext changed when its style being changed
Thinker K.F. Li <thinker@branda.to>
parents:
687
diff
changeset
|
114 rdman_shape_changed(rdman, sh); |
cadebc13be2f
Mark stext changed when its style being changed
Thinker K.F. Li <thinker@branda.to>
parents:
687
diff
changeset
|
115 |
683
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
116 delete mb_blks; |
564 | 117 } |
118 | |
119 static Handle<Value> | |
683
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
120 xnjsmb_shape_stroke_width_get(Handle<Object> self, shape_t *sh, |
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
121 const char **err) { |
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
122 float stroke_width; |
564 | 123 |
683
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
124 stroke_width = sh_get_stroke_width(sh); |
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
125 return Number::New(stroke_width); |
564 | 126 } |
127 | |
683
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
128 static void |
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
129 xnjsmb_shape_stroke_width_set(Handle<Object> self, shape_t *sh, |
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
130 Handle<Value> value, const char **err) { |
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
131 float stroke_width; |
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
132 Handle<Object> rt; |
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
133 redraw_man_t *rdman; |
570
49e79253b6d3
Functions of setting/getting stroke width of a shape
Thinker K.F. Li <thinker@branda.to>
parents:
569
diff
changeset
|
134 |
683
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
135 stroke_width = value->Int32Value(); |
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
136 sh_set_stroke_width(sh, stroke_width); |
570
49e79253b6d3
Functions of setting/getting stroke width of a shape
Thinker K.F. Li <thinker@branda.to>
parents:
569
diff
changeset
|
137 |
49e79253b6d3
Functions of setting/getting stroke width of a shape
Thinker K.F. Li <thinker@branda.to>
parents:
569
diff
changeset
|
138 /* |
49e79253b6d3
Functions of setting/getting stroke width of a shape
Thinker K.F. Li <thinker@branda.to>
parents:
569
diff
changeset
|
139 * Mark changed. |
49e79253b6d3
Functions of setting/getting stroke width of a shape
Thinker K.F. Li <thinker@branda.to>
parents:
569
diff
changeset
|
140 */ |
49e79253b6d3
Functions of setting/getting stroke width of a shape
Thinker K.F. Li <thinker@branda.to>
parents:
569
diff
changeset
|
141 rt = GET(self, "mbrt")->ToObject(); |
49e79253b6d3
Functions of setting/getting stroke width of a shape
Thinker K.F. Li <thinker@branda.to>
parents:
569
diff
changeset
|
142 ASSERT(rt != NULL); |
49e79253b6d3
Functions of setting/getting stroke width of a shape
Thinker K.F. Li <thinker@branda.to>
parents:
569
diff
changeset
|
143 rdman = xnjsmb_rt_rdman(rt); |
49e79253b6d3
Functions of setting/getting stroke width of a shape
Thinker K.F. Li <thinker@branda.to>
parents:
569
diff
changeset
|
144 |
576
5a68e2bcea17
Set font styles for stext in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
574
diff
changeset
|
145 if(sh_get_coord(sh)) |
5a68e2bcea17
Set font styles for stext in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
574
diff
changeset
|
146 rdman_shape_changed(rdman, sh); |
570
49e79253b6d3
Functions of setting/getting stroke width of a shape
Thinker K.F. Li <thinker@branda.to>
parents:
569
diff
changeset
|
147 } |
49e79253b6d3
Functions of setting/getting stroke width of a shape
Thinker K.F. Li <thinker@branda.to>
parents:
569
diff
changeset
|
148 |
690
86c6ebf1de25
Add JS binding for sh_rect_t
Thinker K.F. Li <thinker@branda.to>
parents:
689
diff
changeset
|
149 static void |
749
ed59e659a202
Implement binding for hide/show for shapes and coords
Thinker K.F. Li <thinker@codemud.net>
parents:
748
diff
changeset
|
150 xnjsmb_shape_show(shape_t *sh, Handle<Object> self) { |
ed59e659a202
Implement binding for hide/show for shapes and coords
Thinker K.F. Li <thinker@codemud.net>
parents:
748
diff
changeset
|
151 Handle<Object> js_rt; |
ed59e659a202
Implement binding for hide/show for shapes and coords
Thinker K.F. Li <thinker@codemud.net>
parents:
748
diff
changeset
|
152 redraw_man_t *rdman; |
ed59e659a202
Implement binding for hide/show for shapes and coords
Thinker K.F. Li <thinker@codemud.net>
parents:
748
diff
changeset
|
153 |
ed59e659a202
Implement binding for hide/show for shapes and coords
Thinker K.F. Li <thinker@codemud.net>
parents:
748
diff
changeset
|
154 js_rt = GET(self, "mbrt")->ToObject(); |
ed59e659a202
Implement binding for hide/show for shapes and coords
Thinker K.F. Li <thinker@codemud.net>
parents:
748
diff
changeset
|
155 ASSERT(js_rt != NULL); |
ed59e659a202
Implement binding for hide/show for shapes and coords
Thinker K.F. Li <thinker@codemud.net>
parents:
748
diff
changeset
|
156 rdman = xnjsmb_rt_rdman(js_rt); |
ed59e659a202
Implement binding for hide/show for shapes and coords
Thinker K.F. Li <thinker@codemud.net>
parents:
748
diff
changeset
|
157 |
ed59e659a202
Implement binding for hide/show for shapes and coords
Thinker K.F. Li <thinker@codemud.net>
parents:
748
diff
changeset
|
158 sh_show(sh); |
ed59e659a202
Implement binding for hide/show for shapes and coords
Thinker K.F. Li <thinker@codemud.net>
parents:
748
diff
changeset
|
159 rdman_shape_changed(rdman, sh); |
ed59e659a202
Implement binding for hide/show for shapes and coords
Thinker K.F. Li <thinker@codemud.net>
parents:
748
diff
changeset
|
160 } |
ed59e659a202
Implement binding for hide/show for shapes and coords
Thinker K.F. Li <thinker@codemud.net>
parents:
748
diff
changeset
|
161 |
ed59e659a202
Implement binding for hide/show for shapes and coords
Thinker K.F. Li <thinker@codemud.net>
parents:
748
diff
changeset
|
162 static void |
ed59e659a202
Implement binding for hide/show for shapes and coords
Thinker K.F. Li <thinker@codemud.net>
parents:
748
diff
changeset
|
163 xnjsmb_shape_hide(shape_t *sh, Handle<Object> self) { |
ed59e659a202
Implement binding for hide/show for shapes and coords
Thinker K.F. Li <thinker@codemud.net>
parents:
748
diff
changeset
|
164 Handle<Object> js_rt; |
ed59e659a202
Implement binding for hide/show for shapes and coords
Thinker K.F. Li <thinker@codemud.net>
parents:
748
diff
changeset
|
165 redraw_man_t *rdman; |
ed59e659a202
Implement binding for hide/show for shapes and coords
Thinker K.F. Li <thinker@codemud.net>
parents:
748
diff
changeset
|
166 |
ed59e659a202
Implement binding for hide/show for shapes and coords
Thinker K.F. Li <thinker@codemud.net>
parents:
748
diff
changeset
|
167 js_rt = GET(self, "mbrt")->ToObject(); |
ed59e659a202
Implement binding for hide/show for shapes and coords
Thinker K.F. Li <thinker@codemud.net>
parents:
748
diff
changeset
|
168 ASSERT(js_rt != NULL); |
ed59e659a202
Implement binding for hide/show for shapes and coords
Thinker K.F. Li <thinker@codemud.net>
parents:
748
diff
changeset
|
169 rdman = xnjsmb_rt_rdman(js_rt); |
ed59e659a202
Implement binding for hide/show for shapes and coords
Thinker K.F. Li <thinker@codemud.net>
parents:
748
diff
changeset
|
170 |
ed59e659a202
Implement binding for hide/show for shapes and coords
Thinker K.F. Li <thinker@codemud.net>
parents:
748
diff
changeset
|
171 sh_hide(sh); |
ed59e659a202
Implement binding for hide/show for shapes and coords
Thinker K.F. Li <thinker@codemud.net>
parents:
748
diff
changeset
|
172 rdman_shape_changed(rdman, sh); |
ed59e659a202
Implement binding for hide/show for shapes and coords
Thinker K.F. Li <thinker@codemud.net>
parents:
748
diff
changeset
|
173 } |
ed59e659a202
Implement binding for hide/show for shapes and coords
Thinker K.F. Li <thinker@codemud.net>
parents:
748
diff
changeset
|
174 |
ed59e659a202
Implement binding for hide/show for shapes and coords
Thinker K.F. Li <thinker@codemud.net>
parents:
748
diff
changeset
|
175 static void |
748
56a5e08cd8af
Make shapes can be removed from the tree
Thinker K.F. Li <thinker@codemud.net>
parents:
743
diff
changeset
|
176 xnjsmb_shape_remove(shape_t *sh, Handle<Object> self) { |
56a5e08cd8af
Make shapes can be removed from the tree
Thinker K.F. Li <thinker@codemud.net>
parents:
743
diff
changeset
|
177 Handle<Object> js_rt; |
56a5e08cd8af
Make shapes can be removed from the tree
Thinker K.F. Li <thinker@codemud.net>
parents:
743
diff
changeset
|
178 redraw_man_t *rdman; |
56a5e08cd8af
Make shapes can be removed from the tree
Thinker K.F. Li <thinker@codemud.net>
parents:
743
diff
changeset
|
179 Persistent<Object> *self_hdl; |
56a5e08cd8af
Make shapes can be removed from the tree
Thinker K.F. Li <thinker@codemud.net>
parents:
743
diff
changeset
|
180 int r; |
56a5e08cd8af
Make shapes can be removed from the tree
Thinker K.F. Li <thinker@codemud.net>
parents:
743
diff
changeset
|
181 |
56a5e08cd8af
Make shapes can be removed from the tree
Thinker K.F. Li <thinker@codemud.net>
parents:
743
diff
changeset
|
182 self_hdl = (Persistent<Object> *)mb_prop_get(&sh->obj.props, |
56a5e08cd8af
Make shapes can be removed from the tree
Thinker K.F. Li <thinker@codemud.net>
parents:
743
diff
changeset
|
183 PROP_JSOBJ); |
56a5e08cd8af
Make shapes can be removed from the tree
Thinker K.F. Li <thinker@codemud.net>
parents:
743
diff
changeset
|
184 |
56a5e08cd8af
Make shapes can be removed from the tree
Thinker K.F. Li <thinker@codemud.net>
parents:
743
diff
changeset
|
185 SET(*self_hdl, "valid", Boolean::New(0)); |
56a5e08cd8af
Make shapes can be removed from the tree
Thinker K.F. Li <thinker@codemud.net>
parents:
743
diff
changeset
|
186 WRAP(*self_hdl, NULL); |
56a5e08cd8af
Make shapes can be removed from the tree
Thinker K.F. Li <thinker@codemud.net>
parents:
743
diff
changeset
|
187 |
56a5e08cd8af
Make shapes can be removed from the tree
Thinker K.F. Li <thinker@codemud.net>
parents:
743
diff
changeset
|
188 js_rt = GET(*self_hdl, "mbrt")->ToObject(); |
56a5e08cd8af
Make shapes can be removed from the tree
Thinker K.F. Li <thinker@codemud.net>
parents:
743
diff
changeset
|
189 ASSERT(js_rt != NULL); |
56a5e08cd8af
Make shapes can be removed from the tree
Thinker K.F. Li <thinker@codemud.net>
parents:
743
diff
changeset
|
190 rdman = xnjsmb_rt_rdman(js_rt); |
56a5e08cd8af
Make shapes can be removed from the tree
Thinker K.F. Li <thinker@codemud.net>
parents:
743
diff
changeset
|
191 |
56a5e08cd8af
Make shapes can be removed from the tree
Thinker K.F. Li <thinker@codemud.net>
parents:
743
diff
changeset
|
192 rdman_shape_changed(rdman, sh); |
56a5e08cd8af
Make shapes can be removed from the tree
Thinker K.F. Li <thinker@codemud.net>
parents:
743
diff
changeset
|
193 r = rdman_shape_free(rdman, sh); |
56a5e08cd8af
Make shapes can be removed from the tree
Thinker K.F. Li <thinker@codemud.net>
parents:
743
diff
changeset
|
194 if(r != OK) |
56a5e08cd8af
Make shapes can be removed from the tree
Thinker K.F. Li <thinker@codemud.net>
parents:
743
diff
changeset
|
195 THROW_noret("Can not free a shape for unknown reason"); |
56a5e08cd8af
Make shapes can be removed from the tree
Thinker K.F. Li <thinker@codemud.net>
parents:
743
diff
changeset
|
196 |
766
be0e02948c1d
Improve resource management for coords, shapes and paints.
Thinker K.F. Li <thinker@codemud.net>
parents:
764
diff
changeset
|
197 self_hdl->Dispose(); |
748
56a5e08cd8af
Make shapes can be removed from the tree
Thinker K.F. Li <thinker@codemud.net>
parents:
743
diff
changeset
|
198 delete self_hdl; |
56a5e08cd8af
Make shapes can be removed from the tree
Thinker K.F. Li <thinker@codemud.net>
parents:
743
diff
changeset
|
199 } |
56a5e08cd8af
Make shapes can be removed from the tree
Thinker K.F. Li <thinker@codemud.net>
parents:
743
diff
changeset
|
200 |
56a5e08cd8af
Make shapes can be removed from the tree
Thinker K.F. Li <thinker@codemud.net>
parents:
743
diff
changeset
|
201 static void |
690
86c6ebf1de25
Add JS binding for sh_rect_t
Thinker K.F. Li <thinker@branda.to>
parents:
689
diff
changeset
|
202 xnjsmb_sh_rect_set(shape_t *sh, Handle<Object> self, float x, float y, |
86c6ebf1de25
Add JS binding for sh_rect_t
Thinker K.F. Li <thinker@branda.to>
parents:
689
diff
changeset
|
203 float w, float h, float rx, float ry) { |
86c6ebf1de25
Add JS binding for sh_rect_t
Thinker K.F. Li <thinker@branda.to>
parents:
689
diff
changeset
|
204 Handle<Object> rt; |
86c6ebf1de25
Add JS binding for sh_rect_t
Thinker K.F. Li <thinker@branda.to>
parents:
689
diff
changeset
|
205 redraw_man_t *rdman; |
86c6ebf1de25
Add JS binding for sh_rect_t
Thinker K.F. Li <thinker@branda.to>
parents:
689
diff
changeset
|
206 |
86c6ebf1de25
Add JS binding for sh_rect_t
Thinker K.F. Li <thinker@branda.to>
parents:
689
diff
changeset
|
207 sh_rect_set(sh, x, y, w, h, rx, ry); |
86c6ebf1de25
Add JS binding for sh_rect_t
Thinker K.F. Li <thinker@branda.to>
parents:
689
diff
changeset
|
208 |
86c6ebf1de25
Add JS binding for sh_rect_t
Thinker K.F. Li <thinker@branda.to>
parents:
689
diff
changeset
|
209 /* |
86c6ebf1de25
Add JS binding for sh_rect_t
Thinker K.F. Li <thinker@branda.to>
parents:
689
diff
changeset
|
210 * Mark changed. |
86c6ebf1de25
Add JS binding for sh_rect_t
Thinker K.F. Li <thinker@branda.to>
parents:
689
diff
changeset
|
211 */ |
86c6ebf1de25
Add JS binding for sh_rect_t
Thinker K.F. Li <thinker@branda.to>
parents:
689
diff
changeset
|
212 rt = GET(self, "mbrt")->ToObject(); |
86c6ebf1de25
Add JS binding for sh_rect_t
Thinker K.F. Li <thinker@branda.to>
parents:
689
diff
changeset
|
213 ASSERT(rt != NULL); |
86c6ebf1de25
Add JS binding for sh_rect_t
Thinker K.F. Li <thinker@branda.to>
parents:
689
diff
changeset
|
214 rdman = xnjsmb_rt_rdman(rt); |
86c6ebf1de25
Add JS binding for sh_rect_t
Thinker K.F. Li <thinker@branda.to>
parents:
689
diff
changeset
|
215 |
86c6ebf1de25
Add JS binding for sh_rect_t
Thinker K.F. Li <thinker@branda.to>
parents:
689
diff
changeset
|
216 if(sh_get_coord(sh)) |
86c6ebf1de25
Add JS binding for sh_rect_t
Thinker K.F. Li <thinker@branda.to>
parents:
689
diff
changeset
|
217 rdman_shape_changed(rdman, sh); |
86c6ebf1de25
Add JS binding for sh_rect_t
Thinker K.F. Li <thinker@branda.to>
parents:
689
diff
changeset
|
218 } |
86c6ebf1de25
Add JS binding for sh_rect_t
Thinker K.F. Li <thinker@branda.to>
parents:
689
diff
changeset
|
219 |
564 | 220 /* @} */ |
221 | |
683
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
222 #include "shapes-inc.h" |
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
223 |
687
da12923a789a
Migrate paints.cc to use gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
684
diff
changeset
|
224 /*! \defgroup xnjsmb_shapes_wraps Exported wrapper makers for shapes |
683
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
225 * \ingroup xnjsmb_shapes |
687
da12923a789a
Migrate paints.cc to use gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
684
diff
changeset
|
226 * |
da12923a789a
Migrate paints.cc to use gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
684
diff
changeset
|
227 * These functions are used by methods of mb_rt to wrap shape objects |
da12923a789a
Migrate paints.cc to use gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
684
diff
changeset
|
228 * as Javascript objects. |
565
c0bc60448913
Constructor for path objects in Javascript domain
Thinker K.F. Li <thinker@branda.to>
parents:
564
diff
changeset
|
229 * |
c0bc60448913
Constructor for path objects in Javascript domain
Thinker K.F. Li <thinker@branda.to>
parents:
564
diff
changeset
|
230 * @{ |
c0bc60448913
Constructor for path objects in Javascript domain
Thinker K.F. Li <thinker@branda.to>
parents:
564
diff
changeset
|
231 */ |
683
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
232 Handle<Value> |
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
233 export_xnjsmb_auto_path_new(shape_t *sh) { |
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
234 return xnjsmb_auto_path_new(sh); |
565
c0bc60448913
Constructor for path objects in Javascript domain
Thinker K.F. Li <thinker@branda.to>
parents:
564
diff
changeset
|
235 } |
c0bc60448913
Constructor for path objects in Javascript domain
Thinker K.F. Li <thinker@branda.to>
parents:
564
diff
changeset
|
236 |
683
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
237 Handle<Value> |
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
238 export_xnjsmb_auto_stext_new(shape_t *sh) { |
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
239 return xnjsmb_auto_stext_new(sh); |
565
c0bc60448913
Constructor for path objects in Javascript domain
Thinker K.F. Li <thinker@branda.to>
parents:
564
diff
changeset
|
240 } |
c0bc60448913
Constructor for path objects in Javascript domain
Thinker K.F. Li <thinker@branda.to>
parents:
564
diff
changeset
|
241 |
683
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
242 Handle<Value> |
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
243 export_xnjsmb_auto_image_new(shape_t *sh) { |
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
244 return xnjsmb_auto_image_new(sh); |
565
c0bc60448913
Constructor for path objects in Javascript domain
Thinker K.F. Li <thinker@branda.to>
parents:
564
diff
changeset
|
245 } |
c0bc60448913
Constructor for path objects in Javascript domain
Thinker K.F. Li <thinker@branda.to>
parents:
564
diff
changeset
|
246 |
690
86c6ebf1de25
Add JS binding for sh_rect_t
Thinker K.F. Li <thinker@branda.to>
parents:
689
diff
changeset
|
247 Handle<Value> |
86c6ebf1de25
Add JS binding for sh_rect_t
Thinker K.F. Li <thinker@branda.to>
parents:
689
diff
changeset
|
248 export_xnjsmb_auto_rect_new(shape_t *sh) { |
86c6ebf1de25
Add JS binding for sh_rect_t
Thinker K.F. Li <thinker@branda.to>
parents:
689
diff
changeset
|
249 return xnjsmb_auto_rect_new(sh); |
86c6ebf1de25
Add JS binding for sh_rect_t
Thinker K.F. Li <thinker@branda.to>
parents:
689
diff
changeset
|
250 } |
86c6ebf1de25
Add JS binding for sh_rect_t
Thinker K.F. Li <thinker@branda.to>
parents:
689
diff
changeset
|
251 |
565
c0bc60448913
Constructor for path objects in Javascript domain
Thinker K.F. Li <thinker@branda.to>
parents:
564
diff
changeset
|
252 /* @} */ |
c0bc60448913
Constructor for path objects in Javascript domain
Thinker K.F. Li <thinker@branda.to>
parents:
564
diff
changeset
|
253 |
687
da12923a789a
Migrate paints.cc to use gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
684
diff
changeset
|
254 /*! \defgroup xnjsmb_shapes_cons Constructor of shapes |
683
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
255 * \ingroup xnjsmb_shapes |
574
a2faee809514
Implement stext type for Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
570
diff
changeset
|
256 * |
a2faee809514
Implement stext type for Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
570
diff
changeset
|
257 * @{ |
a2faee809514
Implement stext type for Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
570
diff
changeset
|
258 */ |
683
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
259 shape_t * |
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
260 xnjsmb_path_new(njs_runtime_t *rt, const char *d) { |
574
a2faee809514
Implement stext type for Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
570
diff
changeset
|
261 redraw_man_t *rdman; |
683
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
262 shape_t *sh; |
574
a2faee809514
Implement stext type for Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
570
diff
changeset
|
263 |
683
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
264 rdman = X_njs_MB_rdman(rt); |
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
265 sh = rdman_shape_path_new(rdman, d); |
767
9d430b084a13
Free string allocated by code generator
Thinker K.F. Li <thinker@codemud.net>
parents:
766
diff
changeset
|
266 /* Code generator supposes that callee should free the memory */ |
9d430b084a13
Free string allocated by code generator
Thinker K.F. Li <thinker@codemud.net>
parents:
766
diff
changeset
|
267 free((void *)d); |
683
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
268 |
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
269 return sh; |
574
a2faee809514
Implement stext type for Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
570
diff
changeset
|
270 } |
a2faee809514
Implement stext type for Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
570
diff
changeset
|
271 |
683
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
272 shape_t * |
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
273 xnjsmb_stext_new(njs_runtime_t *rt, const char *txt, float x, float y) { |
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
274 redraw_man_t *rdman; |
576
5a68e2bcea17
Set font styles for stext in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
574
diff
changeset
|
275 shape_t *sh; |
5a68e2bcea17
Set font styles for stext in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
574
diff
changeset
|
276 |
683
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
277 rdman = X_njs_MB_rdman(rt); |
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
278 sh = rdman_shape_stext_new(rdman, txt, x, y); |
767
9d430b084a13
Free string allocated by code generator
Thinker K.F. Li <thinker@codemud.net>
parents:
766
diff
changeset
|
279 /* Code generator supposes that callee should free the memory */ |
9d430b084a13
Free string allocated by code generator
Thinker K.F. Li <thinker@codemud.net>
parents:
766
diff
changeset
|
280 free((void *)txt); |
576
5a68e2bcea17
Set font styles for stext in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
574
diff
changeset
|
281 |
683
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
282 return sh; |
574
a2faee809514
Implement stext type for Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
570
diff
changeset
|
283 } |
a2faee809514
Implement stext type for Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
570
diff
changeset
|
284 |
683
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
285 shape_t * |
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
286 xnjsmb_image_new(njs_runtime_t *rt, float x, float y, float w, float h) { |
641
f60d8fa1c55b
Javascript binding for shape_image_t
Thinker K.F. Li <thinker@branda.to>
parents:
576
diff
changeset
|
287 redraw_man_t *rdman; |
683
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
288 shape_t *sh; |
641
f60d8fa1c55b
Javascript binding for shape_image_t
Thinker K.F. Li <thinker@branda.to>
parents:
576
diff
changeset
|
289 |
683
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
290 rdman = X_njs_MB_rdman(rt); |
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
291 sh = rdman_shape_image_new(rdman, x, y, w, h); |
641
f60d8fa1c55b
Javascript binding for shape_image_t
Thinker K.F. Li <thinker@branda.to>
parents:
576
diff
changeset
|
292 |
683
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
293 return sh; |
641
f60d8fa1c55b
Javascript binding for shape_image_t
Thinker K.F. Li <thinker@branda.to>
parents:
576
diff
changeset
|
294 } |
f60d8fa1c55b
Javascript binding for shape_image_t
Thinker K.F. Li <thinker@branda.to>
parents:
576
diff
changeset
|
295 |
690
86c6ebf1de25
Add JS binding for sh_rect_t
Thinker K.F. Li <thinker@branda.to>
parents:
689
diff
changeset
|
296 shape_t * |
86c6ebf1de25
Add JS binding for sh_rect_t
Thinker K.F. Li <thinker@branda.to>
parents:
689
diff
changeset
|
297 xnjsmb_rect_new(njs_runtime_t *rt, float x, float y, float w, float h, |
86c6ebf1de25
Add JS binding for sh_rect_t
Thinker K.F. Li <thinker@branda.to>
parents:
689
diff
changeset
|
298 float rx, float ry, const char **err) { |
86c6ebf1de25
Add JS binding for sh_rect_t
Thinker K.F. Li <thinker@branda.to>
parents:
689
diff
changeset
|
299 redraw_man_t *rdman; |
86c6ebf1de25
Add JS binding for sh_rect_t
Thinker K.F. Li <thinker@branda.to>
parents:
689
diff
changeset
|
300 shape_t *sh; |
86c6ebf1de25
Add JS binding for sh_rect_t
Thinker K.F. Li <thinker@branda.to>
parents:
689
diff
changeset
|
301 |
86c6ebf1de25
Add JS binding for sh_rect_t
Thinker K.F. Li <thinker@branda.to>
parents:
689
diff
changeset
|
302 rdman = X_njs_MB_rdman(rt); |
86c6ebf1de25
Add JS binding for sh_rect_t
Thinker K.F. Li <thinker@branda.to>
parents:
689
diff
changeset
|
303 sh = rdman_shape_rect_new(rdman, x, y, w, h, rx, ry); |
86c6ebf1de25
Add JS binding for sh_rect_t
Thinker K.F. Li <thinker@branda.to>
parents:
689
diff
changeset
|
304 if(sh == NULL) { |
86c6ebf1de25
Add JS binding for sh_rect_t
Thinker K.F. Li <thinker@branda.to>
parents:
689
diff
changeset
|
305 *err = "Can not create a sh_rect_t"; |
86c6ebf1de25
Add JS binding for sh_rect_t
Thinker K.F. Li <thinker@branda.to>
parents:
689
diff
changeset
|
306 return NULL; |
86c6ebf1de25
Add JS binding for sh_rect_t
Thinker K.F. Li <thinker@branda.to>
parents:
689
diff
changeset
|
307 } |
86c6ebf1de25
Add JS binding for sh_rect_t
Thinker K.F. Li <thinker@branda.to>
parents:
689
diff
changeset
|
308 |
86c6ebf1de25
Add JS binding for sh_rect_t
Thinker K.F. Li <thinker@branda.to>
parents:
689
diff
changeset
|
309 return sh; |
86c6ebf1de25
Add JS binding for sh_rect_t
Thinker K.F. Li <thinker@branda.to>
parents:
689
diff
changeset
|
310 } |
86c6ebf1de25
Add JS binding for sh_rect_t
Thinker K.F. Li <thinker@branda.to>
parents:
689
diff
changeset
|
311 |
641
f60d8fa1c55b
Javascript binding for shape_image_t
Thinker K.F. Li <thinker@branda.to>
parents:
576
diff
changeset
|
312 /* @} */ |
f60d8fa1c55b
Javascript binding for shape_image_t
Thinker K.F. Li <thinker@branda.to>
parents:
576
diff
changeset
|
313 |
565
c0bc60448913
Constructor for path objects in Javascript domain
Thinker K.F. Li <thinker@branda.to>
parents:
564
diff
changeset
|
314 /*! \brief Set properties of template of mb_rt. |
683
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
315 * \ingroup xnjsmb_shapes |
565
c0bc60448913
Constructor for path objects in Javascript domain
Thinker K.F. Li <thinker@branda.to>
parents:
564
diff
changeset
|
316 */ |
c0bc60448913
Constructor for path objects in Javascript domain
Thinker K.F. Li <thinker@branda.to>
parents:
564
diff
changeset
|
317 void |
c0bc60448913
Constructor for path objects in Javascript domain
Thinker K.F. Li <thinker@branda.to>
parents:
564
diff
changeset
|
318 xnjsmb_shapes_init_mb_rt_temp(Handle<FunctionTemplate> rt_temp) { |
574
a2faee809514
Implement stext type for Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
570
diff
changeset
|
319 HandleScope scope; |
a2faee809514
Implement stext type for Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
570
diff
changeset
|
320 Handle<FunctionTemplate> path_new_temp, stext_new_temp; |
641
f60d8fa1c55b
Javascript binding for shape_image_t
Thinker K.F. Li <thinker@branda.to>
parents:
576
diff
changeset
|
321 Handle<FunctionTemplate> image_new_temp; |
565
c0bc60448913
Constructor for path objects in Javascript domain
Thinker K.F. Li <thinker@branda.to>
parents:
564
diff
changeset
|
322 Handle<ObjectTemplate> rt_proto_temp; |
c0bc60448913
Constructor for path objects in Javascript domain
Thinker K.F. Li <thinker@branda.to>
parents:
564
diff
changeset
|
323 static int temp_init_flag = 0; |
c0bc60448913
Constructor for path objects in Javascript domain
Thinker K.F. Li <thinker@branda.to>
parents:
564
diff
changeset
|
324 |
c0bc60448913
Constructor for path objects in Javascript domain
Thinker K.F. Li <thinker@branda.to>
parents:
564
diff
changeset
|
325 if(temp_init_flag == 0) { |
683
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
326 xnjsmb_auto_shape_init(); |
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
327 xnjsmb_auto_path_init(); |
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
328 xnjsmb_auto_stext_init(); |
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
329 xnjsmb_auto_image_init(); |
690
86c6ebf1de25
Add JS binding for sh_rect_t
Thinker K.F. Li <thinker@branda.to>
parents:
689
diff
changeset
|
330 xnjsmb_auto_rect_init(); |
565
c0bc60448913
Constructor for path objects in Javascript domain
Thinker K.F. Li <thinker@branda.to>
parents:
564
diff
changeset
|
331 temp_init_flag = 1; |
c0bc60448913
Constructor for path objects in Javascript domain
Thinker K.F. Li <thinker@branda.to>
parents:
564
diff
changeset
|
332 } |
683
7685c57e29d0
Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
333 return; |
565
c0bc60448913
Constructor for path objects in Javascript domain
Thinker K.F. Li <thinker@branda.to>
parents:
564
diff
changeset
|
334 } |