Mercurial > MadButterfly
annotate nodejs/font.cc @ 1136:950076863b7e
Fix the tween calculation for the inbetween frames. Now, we can use primitive instead og group to defin ethe animation. Currently, it has been tested against rectangle only. We need to check others as well.
author | wycc |
---|---|
date | Tue, 21 Dec 2010 14:35:42 +0800 |
parents | 586e50f82c1f |
children |
rev | line source |
---|---|
822
586e50f82c1f
Unify coding style tag for emacs and vim.
Shih-Yuan Lee (FourDollars) <fourdollars@gmail.com>
parents:
576
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:
576
diff
changeset
|
2 // vim: sw=4:ts=8:sts=4 |
575
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
3 #include <v8.h> |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
4 #include "mbfly_njs.h" |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
5 |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
6 extern "C" { |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
7 #include <mb.h> |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
8 } |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
9 |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
10 #ifndef ASSERT |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
11 #define ASSERT(x) |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
12 #endif |
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 using namespace v8; |
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 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
|
17 |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
18 /*! \brief Query a font face. |
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 * 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
|
21 * |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
22 * \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
|
23 * \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
|
24 * \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
|
25 */ |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
26 static Handle<Value> |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
27 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
|
28 HandleScope scope; |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
29 int argc = args.Length(); |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
30 Handle<Object> self = args.This(); |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
31 char *face; |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
32 int slant, weight; |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
33 redraw_man_t *rdman; |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
34 mb_font_face_t *font_face; |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
35 Handle<Function> func_obj; |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
36 Handle<Object> face_obj; |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
37 |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
38 if(argc != 3) |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
39 THROW("Invalid number of arguments (!= 3)"); |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
40 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
|
41 THROW("Invalid argument type"); |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
42 |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
43 String::Utf8Value face_utf8(args[0]); |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
44 face = *face_utf8; |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
45 slant = args[1]->ToInt32()->Value(); |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
46 weight = args[2]->ToInt32()->Value(); |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
47 |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
48 rdman = xnjsmb_rt_rdman(self); |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
49 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
|
50 if(font_face == NULL) |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
51 return Null(); |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
52 |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
53 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
|
54 face_obj = func_obj->NewInstance(); |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
55 WRAP(face_obj, font_face); |
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 return face_obj; |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
58 } |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
59 |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
60 static void |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
61 xnjsmb_font_face_init_temp(void) { |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
62 Handle<FunctionTemplate> temp; |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
63 Handle<ObjectTemplate> inst_temp; |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
64 |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
65 temp = FunctionTemplate::New(); |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
66 temp->SetClassName(String::New("font_face")); |
822
586e50f82c1f
Unify coding style tag for emacs and vim.
Shih-Yuan Lee (FourDollars) <fourdollars@gmail.com>
parents:
576
diff
changeset
|
67 |
575
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
68 inst_temp = temp->InstanceTemplate(); |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
69 inst_temp->SetInternalFieldCount(1); |
822
586e50f82c1f
Unify coding style tag for emacs and vim.
Shih-Yuan Lee (FourDollars) <fourdollars@gmail.com>
parents:
576
diff
changeset
|
70 |
575
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
71 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
|
72 } |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
73 |
576
5a68e2bcea17
Set font styles for stext in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
575
diff
changeset
|
74 /*! \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
|
75 */ |
575
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
76 void |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
77 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
|
78 HandleScope scope; |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
79 static int init_flag = 0; |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
80 Handle<ObjectTemplate> rt_proto_temp; |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
81 Handle<FunctionTemplate> query_func_temp; |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
82 |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
83 if(!init_flag) { |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
84 xnjsmb_font_face_init_temp(); |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
85 init_flag = 1; |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
86 } |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
87 |
97159102f886
Function of query font face in Javascript
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
88 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
|
89 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
|
90 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
|
91 } |