annotate nodejs/mbfly_njs.h @ 1395:a768d74e5f49

Fix the svg:use. For a svg:use, it is a group which include the content it reference. It means that we can not tween it to its origin object directly. Instead, we need to ungroup it and then use the result matrix to generate the tweened transformation matrix. Therefore, we need to concate its matrix to the referenced object. Ad center object when the bbox-x is not available.
author wycc
date Sat, 02 Apr 2011 05:36:36 +0800
parents 8ecee58c85c6
children
rev   line source
822
586e50f82c1f Unify coding style tag for emacs and vim.
Shih-Yuan Lee (FourDollars) <fourdollars@gmail.com>
parents: 733
diff changeset
1 // -*- indent-tabs-mode: t; tab-width: 8; c-basic-offset: 4; -*-
586e50f82c1f Unify coding style tag for emacs and vim.
Shih-Yuan Lee (FourDollars) <fourdollars@gmail.com>
parents: 733
diff changeset
2 // vim: sw=4:ts=8:sts=4
559
ef078d7c57b4 Use internal field to store njs_runtime_t object.
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
3 #ifndef __MBFLY_NJS_H_
ef078d7c57b4 Use internal field to store njs_runtime_t object.
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
4 #define __MBFLY_NJS_H_
ef078d7c57b4 Use internal field to store njs_runtime_t object.
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
5
ef078d7c57b4 Use internal field to store njs_runtime_t object.
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
6 #include <v8.h>
ef078d7c57b4 Use internal field to store njs_runtime_t object.
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
7 extern "C" {
ef078d7c57b4 Use internal field to store njs_runtime_t object.
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
8 #include <mb.h>
1056
88bd0eee2b00 Rename X_supp_njs.[ch] to njs_mb_supp.[ch].
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
9 #include "njs_mb_supp.h"
559
ef078d7c57b4 Use internal field to store njs_runtime_t object.
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
10 }
ef078d7c57b4 Use internal field to store njs_runtime_t object.
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
11
ef078d7c57b4 Use internal field to store njs_runtime_t object.
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
12 #define THROW(x) \
ef078d7c57b4 Use internal field to store njs_runtime_t object.
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
13 do { \
ef078d7c57b4 Use internal field to store njs_runtime_t object.
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
14 v8::Handle<v8::Value> exc; \
ef078d7c57b4 Use internal field to store njs_runtime_t object.
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
15 exc = v8::Exception::Error(v8::String::New(x)); \
ef078d7c57b4 Use internal field to store njs_runtime_t object.
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
16 return v8::ThrowException(exc); \
ef078d7c57b4 Use internal field to store njs_runtime_t object.
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
17 } while(0)
675
c643af2095c5 Keep and retrieve respective js object to/from property store
Thinker K.F. Li <thinker@branda.to>
parents: 667
diff changeset
18 #define THROW_noret(x) \
c643af2095c5 Keep and retrieve respective js object to/from property store
Thinker K.F. Li <thinker@branda.to>
parents: 667
diff changeset
19 do { \
c643af2095c5 Keep and retrieve respective js object to/from property store
Thinker K.F. Li <thinker@branda.to>
parents: 667
diff changeset
20 v8::Handle<v8::Value> exc; \
c643af2095c5 Keep and retrieve respective js object to/from property store
Thinker K.F. Li <thinker@branda.to>
parents: 667
diff changeset
21 exc = v8::Exception::Error(v8::String::New(x)); \
c643af2095c5 Keep and retrieve respective js object to/from property store
Thinker K.F. Li <thinker@branda.to>
parents: 667
diff changeset
22 v8::ThrowException(exc); \
683
7685c57e29d0 Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents: 676
diff changeset
23 return; \
675
c643af2095c5 Keep and retrieve respective js object to/from property store
Thinker K.F. Li <thinker@branda.to>
parents: 667
diff changeset
24 } while(0)
559
ef078d7c57b4 Use internal field to store njs_runtime_t object.
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
25 #define UNWRAP(o) v8::External::Unwrap((o)->GetInternalField(0))
ef078d7c57b4 Use internal field to store njs_runtime_t object.
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
26 #define WRAP(o, v) (o)->SetInternalField(0, v8::External::Wrap(v))
ef078d7c57b4 Use internal field to store njs_runtime_t object.
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
27 #define SET(o, n, v) (o)->Set(v8::String::New(n), v)
ef078d7c57b4 Use internal field to store njs_runtime_t object.
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
28 #define GET(o, n) (o)->Get(v8::String::New(n))
ef078d7c57b4 Use internal field to store njs_runtime_t object.
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
29
ef078d7c57b4 Use internal field to store njs_runtime_t object.
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
30 redraw_man_t *xnjsmb_rt_rdman(v8::Handle<v8::Object> mbrt);
562
1b6402f07cd4 Make root coord availabe for Javascript code
Thinker K.F. Li <thinker@branda.to>
parents: 561
diff changeset
31
1b6402f07cd4 Make root coord availabe for Javascript code
Thinker K.F. Li <thinker@branda.to>
parents: 561
diff changeset
32 /* From coord.cc */
1b6402f07cd4 Make root coord availabe for Javascript code
Thinker K.F. Li <thinker@branda.to>
parents: 561
diff changeset
33 void xnjsmb_coord_mkroot(v8::Handle<v8::Object> js_rt);
666
b6fb543d69ee Use binding generator to implement mb_rt
Thinker K.F. Li <thinker@branda.to>
parents: 639
diff changeset
34 v8::Handle<v8::Value> export_xnjsmb_auto_coord_new(coord_t *coord);
559
ef078d7c57b4 Use internal field to store njs_runtime_t object.
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
35
565
c0bc60448913 Constructor for path objects in Javascript domain
Thinker K.F. Li <thinker@branda.to>
parents: 562
diff changeset
36 /* From shapes.cc */
c0bc60448913 Constructor for path objects in Javascript domain
Thinker K.F. Li <thinker@branda.to>
parents: 562
diff changeset
37 void xnjsmb_shapes_init_mb_rt_temp(v8::Handle<v8::FunctionTemplate> rt_temp);
683
7685c57e29d0 Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents: 676
diff changeset
38 shape_t *xnjsmb_path_new(njs_runtime_t *rt, const char *d);
7685c57e29d0 Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents: 676
diff changeset
39 shape_t *xnjsmb_stext_new(njs_runtime_t *rt, const char *txt,
7685c57e29d0 Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents: 676
diff changeset
40 float x, float y);
7685c57e29d0 Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents: 676
diff changeset
41 shape_t *xnjsmb_image_new(njs_runtime_t *rt, float x, float y,
7685c57e29d0 Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents: 676
diff changeset
42 float w, float h);
690
86c6ebf1de25 Add JS binding for sh_rect_t
Thinker K.F. Li <thinker@branda.to>
parents: 687
diff changeset
43 shape_t *xnjsmb_rect_new(njs_runtime_t *rt, float x, float y,
86c6ebf1de25 Add JS binding for sh_rect_t
Thinker K.F. Li <thinker@branda.to>
parents: 687
diff changeset
44 float w, float h,
86c6ebf1de25 Add JS binding for sh_rect_t
Thinker K.F. Li <thinker@branda.to>
parents: 687
diff changeset
45 float rx, float ry, const char **err);
683
7685c57e29d0 Migrate JS shapes binding to gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents: 676
diff changeset
46 v8::Handle<v8::Value> 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: 676
diff changeset
47 v8::Handle<v8::Value> 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: 676
diff changeset
48 v8::Handle<v8::Value> export_xnjsmb_auto_image_new(shape_t *sh);
690
86c6ebf1de25 Add JS binding for sh_rect_t
Thinker K.F. Li <thinker@branda.to>
parents: 687
diff changeset
49 v8::Handle<v8::Value> export_xnjsmb_auto_rect_new(shape_t *sh);
565
c0bc60448913 Constructor for path objects in Javascript domain
Thinker K.F. Li <thinker@branda.to>
parents: 562
diff changeset
50
567
a12c3448afb6 Add dummy paint_color templates
Thinker K.F. Li <thinker@branda.to>
parents: 565
diff changeset
51 /* From paints.cc */
a12c3448afb6 Add dummy paint_color templates
Thinker K.F. Li <thinker@branda.to>
parents: 565
diff changeset
52 void xnjsmb_paints_init_mb_rt_temp(v8::Handle<v8::FunctionTemplate> rt_temp);
687
da12923a789a Migrate paints.cc to use gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents: 683
diff changeset
53 paint_t *xnjsmb_paint_color_new(njs_runtime_t *rt,
da12923a789a Migrate paints.cc to use gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents: 683
diff changeset
54 float r, float g, float b, float a,
da12923a789a Migrate paints.cc to use gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents: 683
diff changeset
55 const char **err);
da12923a789a Migrate paints.cc to use gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents: 683
diff changeset
56 paint_t *xnjsmb_paint_image_new(njs_runtime_t *rt, mb_img_data_t *img,
da12923a789a Migrate paints.cc to use gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents: 683
diff changeset
57 const char **err);
733
163f0d9e6382 Add binding for linear and radial paints for JS
Thinker K.F. Li <thinker@branda.to>
parents: 690
diff changeset
58 paint_t *xnjsmb_paint_linear_new(njs_runtime_t *rt,
163f0d9e6382 Add binding for linear and radial paints for JS
Thinker K.F. Li <thinker@branda.to>
parents: 690
diff changeset
59 float x1, float y1, float x2, float y2,
163f0d9e6382 Add binding for linear and radial paints for JS
Thinker K.F. Li <thinker@branda.to>
parents: 690
diff changeset
60 const char **err);
163f0d9e6382 Add binding for linear and radial paints for JS
Thinker K.F. Li <thinker@branda.to>
parents: 690
diff changeset
61 paint_t *xnjsmb_paint_radial_new(njs_runtime_t *rt,
163f0d9e6382 Add binding for linear and radial paints for JS
Thinker K.F. Li <thinker@branda.to>
parents: 690
diff changeset
62 float cx, float cy, float r,
163f0d9e6382 Add binding for linear and radial paints for JS
Thinker K.F. Li <thinker@branda.to>
parents: 690
diff changeset
63 const char **err);
687
da12923a789a Migrate paints.cc to use gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents: 683
diff changeset
64 v8::Handle<v8::Value> export_xnjsmb_auto_paint_color_new(paint_t *paint);
da12923a789a Migrate paints.cc to use gen_v8_binding.m4
Thinker K.F. Li <thinker@branda.to>
parents: 683
diff changeset
65 v8::Handle<v8::Value> export_xnjsmb_auto_paint_image_new(paint_t *paint);
733
163f0d9e6382 Add binding for linear and radial paints for JS
Thinker K.F. Li <thinker@branda.to>
parents: 690
diff changeset
66 v8::Handle<v8::Value> export_xnjsmb_auto_paint_linear_new(paint_t *sh);
163f0d9e6382 Add binding for linear and radial paints for JS
Thinker K.F. Li <thinker@branda.to>
parents: 690
diff changeset
67 v8::Handle<v8::Value> export_xnjsmb_auto_paint_radial_new(paint_t *sh);
565
c0bc60448913 Constructor for path objects in Javascript domain
Thinker K.F. Li <thinker@branda.to>
parents: 562
diff changeset
68
575
97159102f886 Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents: 567
diff changeset
69 /* From font.cc */
97159102f886 Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents: 567
diff changeset
70 void xnjsmb_font_init_mb_rt_temp(v8::Handle<v8::FunctionTemplate> mb_rt_temp);
97159102f886 Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents: 567
diff changeset
71
638
683889344459 Skeleton of image loader for nodejs
Thinker K.F. Li <thinker@branda.to>
parents: 575
diff changeset
72 /* From image_ldr.cc */
683889344459 Skeleton of image loader for nodejs
Thinker K.F. Li <thinker@branda.to>
parents: 575
diff changeset
73 void
639
dc32c1c140ae First compilable image loader binding for Javascript
Thinker K.F. Li <thinker@branda.to>
parents: 638
diff changeset
74 xnjsmb_img_ldr_init_mb_rt_temp(v8::Handle<v8::Object> mb_rt_temp);
638
683889344459 Skeleton of image loader for nodejs
Thinker K.F. Li <thinker@branda.to>
parents: 575
diff changeset
75
676
f264b50c469c Bind subject of mouse_event to JS object of coord
Thinker K.F. Li <thinker@branda.to>
parents: 675
diff changeset
76 /* From observer.cc */
f264b50c469c Bind subject of mouse_event to JS object of coord
Thinker K.F. Li <thinker@branda.to>
parents: 675
diff changeset
77 v8::Handle<v8::Value> export_xnjsmb_auto_subject_new(subject_t *subject);
f264b50c469c Bind subject of mouse_event to JS object of coord
Thinker K.F. Li <thinker@branda.to>
parents: 675
diff changeset
78 void xnjsmb_observer_init(void);
f264b50c469c Bind subject of mouse_event to JS object of coord
Thinker K.F. Li <thinker@branda.to>
parents: 675
diff changeset
79
559
ef078d7c57b4 Use internal field to store njs_runtime_t object.
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
80 #endif /* __MBFLY_NJS_H_ */