1124956776e515de69dca67bead075765f0ddcb0
[platform/core/uifw/dali-toolkit.git] / plugins / dali-script-v8 / src / constants / constants-wrapper.cpp
1 /*
2  * Copyright (c) 2015 Samsung Electronics Co., Ltd.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16  */
17
18 // CLASS HEADER
19 #include "constants-wrapper.h"
20
21 // EXTERNAL INCLUDES
22 #include <dali/public-api/common/constants.h>
23 #include <dali/public-api/math/vector3.h>
24 #include <dali/public-api/animation/animation.h>
25 #include <dali/public-api/images/pixel.h>
26 #include <dali/public-api/images/image.h>
27 #include <dali/public-api/images/resource-image.h>
28 #include <dali/public-api/actors/actor-enumerations.h>
29 #include <dali/public-api/actors/draw-mode.h>
30 #include <dali/public-api/actors/image-actor.h>
31 #include <dali/public-api/actors/blending.h>
32 #include <dali/public-api/actors/renderable-actor.h>
33 #include <dali/public-api/actors/camera-actor.h>
34 #include <dali/public-api/render-tasks/render-task.h>
35 #include <dali/public-api/common/loading-state.h>
36
37
38 namespace Dali
39 {
40
41 namespace V8Plugin
42 {
43
44 namespace
45 {
46
47 struct Vector3Pair
48 {
49   const char* name;
50   const Vector3& value;
51 };
52
53 struct Vector4Pair
54 {
55   const char* name;
56   const Vector4& value;
57 };
58
59 struct IntegerPair
60 {
61   const char* name;
62   const int value;
63 };
64
65
66 const Vector3Pair Vector3Table[] =
67 {
68     { "BACK_TOP_LEFT"      , ParentOrigin::BACK_TOP_LEFT      },
69     { "BACK_TOP_CENTER"    , ParentOrigin::BACK_TOP_CENTER    },
70     { "BACK_TOP_RIGHT"     , ParentOrigin::BACK_TOP_RIGHT     },
71     { "BACK_CENTER_LEFT"   , ParentOrigin::BACK_CENTER_LEFT   },
72     { "BACK_CENTER"        , ParentOrigin::BACK_CENTER        },
73     { "BACK_CENTER_RIGHT"  , ParentOrigin::BACK_CENTER_RIGHT  },
74     { "BACK_BOTTOM_LEFT"   , ParentOrigin::BACK_BOTTOM_LEFT   },
75     { "BACK_BOTTOM_CENTER" , ParentOrigin::BACK_BOTTOM_CENTER },
76     { "BACK_BOTTOM_RIGHT"  , ParentOrigin::BACK_BOTTOM_RIGHT  },
77
78     { "TOP_LEFT"            , ParentOrigin::TOP_LEFT          },
79     { "TOP_CENTER"          , ParentOrigin::TOP_CENTER        },
80     { "TOP_RIGHT"           , ParentOrigin::TOP_RIGHT         },
81     { "CENTER_LEFT"         , ParentOrigin::CENTER_LEFT       },
82     { "CENTER"              , ParentOrigin::CENTER            },
83     { "CENTER_RIGHT"        , ParentOrigin::CENTER_RIGHT      },
84     { "BOTTOM_LEFT"         , ParentOrigin::BOTTOM_LEFT       },
85     { "BOTTOM_CENTER"       , ParentOrigin::BOTTOM_CENTER     },
86     { "BOTTOM_RIGHT"        , ParentOrigin::BOTTOM_RIGHT      },
87
88     { "FRONT_TOP_LEFT"      , ParentOrigin::FRONT_TOP_LEFT     },
89     { "FRONT_TOP_CENTER"    , ParentOrigin::FRONT_TOP_CENTER   },
90     { "FRONT_TOP_RIGHT"     , ParentOrigin::FRONT_TOP_RIGHT    },
91     { "FRONT_CENTER_LEFT"   , ParentOrigin::FRONT_CENTER_LEFT  },
92     { "FRONT_CENTER"        , ParentOrigin::FRONT_CENTER       },
93     { "FRONT_CENTER_RIGHT"  , ParentOrigin::FRONT_CENTER_RIGHT },
94     { "FRONT_BOTTOM_LEFT"   , ParentOrigin::FRONT_BOTTOM_LEFT  },
95     { "FRONT_BOTTOM_CENTER" , ParentOrigin::FRONT_BOTTOM_CENTER},
96     { "FRONT_BOTTOM_RIGHT"  , ParentOrigin::FRONT_BOTTOM_RIGHT },
97
98
99     { "VECTOR3_ONE"                  ,      Vector3::ONE                        },
100     { "VECTOR3_XAXIS"                ,      Vector3::XAXIS                      },
101     { "VECTOR3_YAXIS"                ,      Vector3::YAXIS                      },
102     { "VECTOR3_ZAXIS"                ,      Vector3::ZAXIS                      },
103     { "VECTOR3_NEGATIVE_XAXIS"       ,      Vector3::NEGATIVE_XAXIS             },
104     { "VECTOR3_NEGATIVE_YAXIS"       ,      Vector3::NEGATIVE_YAXIS             },
105     { "VECTOR3_NEGATIVE_ZAXIS"       ,      Vector3::NEGATIVE_ZAXIS             },
106     { "VECTOR3_ZERO"                 ,      Vector3::ZERO                       }
107
108
109 };
110
111 const unsigned int Vector3TableCount = sizeof(Vector3Table)/sizeof(Vector3Table[0]);
112
113 const Vector4Pair Vector4Table[] =
114 {
115     { "COLOR_BLACK"                  , Color::BLACK       },
116     { "COLOR_WHITE"                  , Color::WHITE       },
117     { "COLOR_RED"                    , Color::RED         },
118     { "COLOR_GREEN"                  , Color::GREEN       },
119     { "COLOR_BLUE"                   , Color::BLUE        },
120     { "COLOR_YELLOW"                 , Color::YELLOW      },
121     { "COLOR_MAGENTA"                , Color::MAGENTA     },
122     { "COLOR_CYAN"                   , Color::CYAN        },
123     { "COLOR_TRANSPARENT"            , Color::TRANSPARENT }
124
125 };
126
127 const unsigned int Vector4TableCount = sizeof(Vector4Table)/sizeof(Vector4Table[0]);
128
129 const IntegerPair EnumTable[] =
130 {
131
132     { "ANIMATION_BAKE",                                       Animation::Bake                    },
133     { "ANIMATION_DISCARD",                                    Animation::Discard                 },
134     { "ANIMATION_BAKE_FINAL",                                 Animation::BakeFinal               },
135     { "REFRESH_ONCE",                                         RenderTask::REFRESH_ONCE           },
136     { "REFRESH_ALWAYS",                                       RenderTask::REFRESH_ALWAYS         },
137
138     { "PIXEL_FORMAT_A8",                                       Pixel::A8,                        },
139     { "PIXEL_FORMAT_L8",                                       Pixel::L8,                        },
140     { "PIXEL_FORMAT_LA88",                                     Pixel::LA88,                      },
141     { "PIXEL_FORMAT_RGB565",                                   Pixel::RGB565,                    },
142     { "PIXEL_FORMAT_BGR565",                                   Pixel::BGR565,                    },
143     { "PIXEL_FORMAT_RGBA4444",                                 Pixel::RGBA4444,                  },
144     { "PIXEL_FORMAT_BGRA4444",                                 Pixel::BGRA4444,                  },
145     { "PIXEL_FORMAT_RGBA5551",                                 Pixel::RGBA5551,                   },
146     { "PIXEL_FORMAT_BGRA5551",                                 Pixel::BGRA5551,                  },
147     { "PIXEL_FORMAT_RGB888",                                   Pixel::RGB888,                    },
148     { "PIXEL_FORMAT_RGB8888",                                  Pixel::RGB8888,                   },
149     { "PIXEL_FORMAT_BGR8888",                                  Pixel::BGR8888,                   },
150     { "PIXEL_FORMAT_RGBA8888",                                 Pixel::RGBA8888,                  },
151     { "PIXEL_FORMAT_BGRA8888",                                 Pixel::BGRA8888,                  },
152
153     { "PIXEL_FORMAT_COMPRESSED_R11_EAC",                       Pixel::COMPRESSED_R11_EAC,        },
154     { "PIXEL_FORMAT_COMPRESSED_SIGNED_R11_EAC",                Pixel::COMPRESSED_SIGNED_R11_EAC,                },
155     { "PIXEL_FORMAT_COMPRESSED_RG11_EAC",                      Pixel::COMPRESSED_RG11_EAC,                      },
156     { "PIXEL_FORMAT_COMPRESSED_SIGNED_RG11_EAC",               Pixel::COMPRESSED_SIGNED_RG11_EAC,               },
157     { "PIXEL_FORMAT_COMPRESSED_RGB8_ETC2",                     Pixel::COMPRESSED_RGB8_ETC2,                     },
158     { "PIXEL_FORMAT_COMPRESSED_SRGB8_ETC2",                    Pixel::COMPRESSED_SRGB8_ETC2,                    },
159     { "PIXEL_FORMAT_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2", Pixel::COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2, },
160     { "PIXEL_FORMAT_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2",Pixel::COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2},
161     { "PIXEL_FORMAT_COMPRESSED_RGBA8_ETC2_EAC",                Pixel::COMPRESSED_RGBA8_ETC2_EAC,                },
162     { "PIXEL_FORMAT_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC",         Pixel::COMPRESSED_SRGB8_ALPHA8_ETC2_EAC,         },
163     { "PIXEL_FORMAT_COMPRESSED_RGB8_ETC1",                     Pixel::COMPRESSED_RGB8_ETC1,                     },
164     { "PIXEL_FORMAT_COMPRESSED_RGB_PVRTC_4BPPV1",              Pixel::COMPRESSED_RGB_PVRTC_4BPPV1               },
165
166
167     { "COLOR_MODE_USE_OWN_COLOR",                              USE_OWN_COLOR                    },
168     { "COLOR_MODE_USE_PARENT_COLOR",                           USE_PARENT_COLOR                 },
169     { "COLOR_MODE_USE_OWN_MULTIPLY_PARENT_COLOR",              USE_OWN_MULTIPLY_PARENT_COLOR    },
170     { "COLOR_MODE_USE_OWN_MULTIPLY_PARENT_ALPHA",              USE_OWN_MULTIPLY_PARENT_ALPHA    },
171
172
173     { "POSITION_INHERITANCE_INHERIT_PARENT_POSITION",                    INHERIT_PARENT_POSITION                    },
174     { "POSITION_INHERITANCE_USE_PARENT_POSITION",                        USE_PARENT_POSITION                        },
175     { "POSITION_INHERITANCE_USE_PARENT_POSITION_PLUS_LOCAL_POSITION",    USE_PARENT_POSITION_PLUS_LOCAL_POSITION    },
176     { "POSITION_INHERITANCE_DONT_INHERIT_POSITION",                      DONT_INHERIT_POSITION                      },
177
178     { "DRAW_MODE_NORMAL",                                   DrawMode::NORMAL     },
179     { "DRAW_MODE_OVERLAY",                                  DrawMode::OVERLAY    },
180     { "DRAW_MODE_STENCIL",                                  DrawMode::STENCIL    },
181
182     { "IMAGE_LOAD_POLICY_IMMEDIATE",                        ResourceImage::IMMEDIATE },
183     { "IMAGE_LOAD_POLICY_ON_DEMAND",                        ResourceImage::ON_DEMAND  },
184
185     { "IMAGE_RELEASE_POLICY_UNUSED",                        Image::UNUSED },
186     { "IMAGE_RELEASE_POLICY_NEVER",                         Image::NEVER  },
187
188     { "RESOURCE_LOADING",                                   Dali::ResourceLoading },
189     { "RESOURCE_LOADING_SUCCEEDED",                         Dali::ResourceLoadingSucceeded  },
190     { "RESOUCE_LOADING_FAILED",                             Dali::ResourceLoadingFailed  },
191
192
193
194
195     { "BLEND_FACTOR_ZERO",                                  BlendingFactor::ZERO                    },
196     { "BLEND_FACTOR_ONE",                                   BlendingFactor::ONE                     },
197     { "BLEND_FACTOR_SRC_COLOR",                             BlendingFactor::SRC_COLOR               },
198     { "BLEND_FACTOR_ONE_MINUS_SRC_COLOR",                   BlendingFactor::ONE_MINUS_SRC_COLOR     },
199     { "BLEND_FACTOR_SRC_ALPHA",                             BlendingFactor::SRC_ALPHA               },
200     { "BLEND_FACTOR_ONE_MINUS_SRC_ALPHA",                   BlendingFactor::ONE_MINUS_SRC_ALPHA     },
201     { "BLEND_FACTOR_DST_ALPHA",                             BlendingFactor::DST_ALPHA                },
202     { "BLEND_FACTOR_ONE_MINUS_DST_ALPHA",                   BlendingFactor::ONE_MINUS_DST_ALPHA      },
203     { "BLEND_FACTOR_DST_COLOR",                             BlendingFactor::DST_COLOR                },
204     { "BLEND_FACTOR_ONE_MINUS_DST_COLOR",                   BlendingFactor::ONE_MINUS_DST_COLOR      },
205     { "BLEND_FACTOR_SRC_ALPHA_SATURATE",                    BlendingFactor::SRC_ALPHA_SATURATE       },
206     { "BLEND_FACTOR_CONSTANT_COLOR",                        BlendingFactor::CONSTANT_COLOR           },
207     { "BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR",              BlendingFactor::ONE_MINUS_CONSTANT_COLOR },
208     { "BLEND_FACTOR_CONSTANT_ALPHA" ,                       BlendingFactor::CONSTANT_ALPHA           },
209     { "BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA",              BlendingFactor::ONE_MINUS_CONSTANT_ALPHA },
210
211     { "BLENDING_OFF",                                      BlendingMode::OFF             },
212     { "BLENDING_AUTO",                                     BlendingMode::AUTO            },
213     { "BLENDING_ON",                                       BlendingMode::ON              },
214
215     { "BLEND_EQUATION_ADD",                                BlendingEquation::ADD              },
216     { "BLEND_EQUATION_SUBTRACT",                           BlendingEquation::SUBTRACT         },
217     { "BLEND_EQUATION_REVERSE_SUBTRACT",                   BlendingEquation::REVERSE_SUBTRACT },
218
219
220     { "CULL_FACE_DISABLE",                                  CullNone  },
221     { "CULL_FRONT_FACE",                                    CullFront },
222     { "CULL_BACK_FACE",                                     CullBack  },
223     { "CULL_FRONT_AND_BACK_FACE",                           CullFrontAndBack },
224
225     { "USE_OWN_SIZE",                                       USE_OWN_SIZE },
226     { "SIZE_EQUAL_TO_PARENT",                               SIZE_EQUAL_TO_PARENT },
227     { "SIZE_RELATIVE_TO_PARENT",                            SIZE_RELATIVE_TO_PARENT },
228     { "SIZE_FIXED_OFFSET_FROM_PARENT",                      SIZE_FIXED_OFFSET_FROM_PARENT },
229
230     { "CAMERA_FREE_LOOK"             ,      Camera::FREE_LOOK                   },
231     { "CAMERA_LOOK_AT_TARGET"        ,      Camera::LOOK_AT_TARGET              },
232     { "CAMERA_PERSPECTIVE_PROJECTION" ,     Camera::PERSPECTIVE_PROJECTION      },
233     { "CAMERA_ORTHOGRAPHIC_PROJECTION",     Camera::ORTHOGRAPHIC_PROJECTION     },
234
235     {"IMAGE_ACTOR_STYLE_QUAD",                ImageActor::STYLE_QUAD},
236     {"IMAGE_ACTOR_STYLE_NINE_PATCH",          ImageActor::STYLE_NINE_PATCH},
237     {"IMAGE_ACTOR_STYLE_NINE_PATCH_NO_CENTER",ImageActor::STYLE_NINE_PATCH_NO_CENTER }
238
239
240 };
241 const unsigned int EnumTableCount = sizeof(EnumTable)/sizeof(EnumTable[0]);
242
243
244
245
246
247
248 } // un-named name space
249
250
251 void ConstantsWrapper::AddDaliConstants( v8::Isolate* isolate, v8::Local<v8::Object >& obj  )
252 {
253   v8::EscapableHandleScope handleScope( isolate );
254
255
256   for( unsigned int i = 0; i < EnumTableCount; ++i )
257   {
258     obj->Set( v8::String::NewFromUtf8( isolate, EnumTable[i].name ),
259                       v8::Integer::New(isolate, EnumTable[i].value ) );
260   }
261
262   for( unsigned int i = 0; i < Vector3TableCount; ++i )
263   {
264     // create a JavaScript array object with 3 entries.
265     v8::Local<v8::Array> array = v8::Array::New( isolate ,3 );
266     array->Set( 0 , v8::Number::New(isolate, Vector3Table[i].value.x ));
267     array->Set( 1 , v8::Number::New(isolate, Vector3Table[i].value.y ));
268     array->Set( 2 , v8::Number::New(isolate, Vector3Table[i].value.z ));
269
270     obj->Set( v8::String::NewFromUtf8( isolate, Vector3Table[i].name),
271               array);
272   }
273
274
275   for( unsigned int i = 0; i < Vector4TableCount; ++i )
276   {
277     // create a JavaScript array object with 3 entries.
278     v8::Local<v8::Array> array = v8::Array::New( isolate ,4 );
279     array->Set( 0 , v8::Number::New(isolate, Vector4Table[i].value.x ));
280     array->Set( 1 , v8::Number::New(isolate, Vector4Table[i].value.y ));
281     array->Set( 2 , v8::Number::New(isolate, Vector4Table[i].value.z ));
282     array->Set( 3 , v8::Number::New(isolate, Vector4Table[i].value.w ));
283
284     obj->Set( v8::String::NewFromUtf8( isolate, Vector4Table[i].name),
285               array);
286   }
287
288 }
289
290 } // namespace V8Plugin
291
292 } // namespace Dali