Mercurial > MadButterfly
annotate nodejs/font.cc @ 776:77b561bb7929
Implement new algorithm to calculate the origin of the SVG elemnts so that we can implement object resize without changing the position of the object.
However, the image does not work here since it does not use the transformation of the group.
author | wycc |
---|---|
date | Mon, 30 Aug 2010 08:56:44 +0800 |
parents | 5a68e2bcea17 |
children | 586e50f82c1f |
rev | line source |
---|---|
575
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
1 #include <v8.h> |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
2 #include "mbfly_njs.h" |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
3 |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
4 extern "C" { |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
5 #include <mb.h> |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
6 } |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
7 |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
8 #ifndef ASSERT |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
9 #define ASSERT(x) |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
10 #endif |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
11 |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
12 using namespace v8; |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
13 |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
14 static Persistent<FunctionTemplate> xnjsmb_font_face_temp; |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
15 |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
16 /*! \brief Query a font face. |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
17 * |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
18 * This function should be a method of rt object. |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
19 * |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
20 * \param family is family of font face. |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
21 * \param slant is slant type of font face. |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
22 * \param weight is weight of font face. |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
23 */ |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
24 static Handle<Value> |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
25 xnjsmb_font_face_query(const Arguments &args) { |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
26 HandleScope scope; |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
27 int argc = args.Length(); |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
28 Handle<Object> self = args.This(); |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
29 char *face; |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
30 int slant, weight; |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
31 redraw_man_t *rdman; |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
32 mb_font_face_t *font_face; |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
33 Handle<Function> func_obj; |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
34 Handle<Object> face_obj; |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
35 |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
36 if(argc != 3) |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
37 THROW("Invalid number of arguments (!= 3)"); |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
38 if(!args[0]->IsString() || !args[1]->IsInt32() || !args[2]->IsInt32()) |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
39 THROW("Invalid argument type"); |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
40 |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
41 String::Utf8Value face_utf8(args[0]); |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
42 face = *face_utf8; |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
43 slant = args[1]->ToInt32()->Value(); |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
44 weight = args[2]->ToInt32()->Value(); |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
45 |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
46 rdman = xnjsmb_rt_rdman(self); |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
47 font_face = mb_font_face_query(rdman, face, slant, weight); |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
48 if(font_face == NULL) |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
49 return Null(); |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
50 |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
51 func_obj = xnjsmb_font_face_temp->GetFunction(); |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
52 face_obj = func_obj->NewInstance(); |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
53 WRAP(face_obj, font_face); |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
54 |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
55 return face_obj; |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
56 } |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
57 |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
58 static void |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
59 xnjsmb_font_face_init_temp(void) { |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
60 Handle<FunctionTemplate> temp; |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
61 Handle<ObjectTemplate> inst_temp; |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
62 |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
63 temp = FunctionTemplate::New(); |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
64 temp->SetClassName(String::New("font_face")); |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
65 |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
66 inst_temp = temp->InstanceTemplate(); |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
67 inst_temp->SetInternalFieldCount(1); |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
68 |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
69 xnjsmb_font_face_temp = Persistent<FunctionTemplate>::New(temp); |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
70 } |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
71 |
576
5a68e2bcea17
Set font styles for stext in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
575
diff
changeset
|
72 /*! \brief Add properties to the template of runtime objects. |
5a68e2bcea17
Set font styles for stext in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
575
diff
changeset
|
73 */ |
575
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
74 void |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
75 xnjsmb_font_init_mb_rt_temp(Handle<FunctionTemplate> mb_rt_temp) { |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
76 HandleScope scope; |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
77 static int init_flag = 0; |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
78 Handle<ObjectTemplate> rt_proto_temp; |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
79 Handle<FunctionTemplate> query_func_temp; |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
80 |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
81 if(!init_flag) { |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
82 xnjsmb_font_face_init_temp(); |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
83 init_flag = 1; |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
84 } |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
85 |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
86 rt_proto_temp = mb_rt_temp->PrototypeTemplate(); |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
87 query_func_temp = FunctionTemplate::New(xnjsmb_font_face_query); |
576
5a68e2bcea17
Set font styles for stext in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
575
diff
changeset
|
88 SET(rt_proto_temp, "font_face_query", query_func_temp); |
575
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
89 } |