15252da6e4795db01379ae62bbaffc20c25dd6eb
[platform/core/uifw/dali-toolkit.git] / plugins / dali-script-v8 / src / constants / constants-wrapper.cpp
1 /*
2  * Copyright (c) 2016 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/camera-actor.h>
33 #include <dali/public-api/actors/sampling.h>
34 #include <dali/public-api/render-tasks/render-task.h>
35 #include <dali/public-api/common/loading-state.h>
36 #include <dali/public-api/rendering/geometry.h>
37 #include <dali/public-api/rendering/renderer.h>
38 #include <dali-toolkit/public-api/controls/scrollable/item-view/default-item-layout.h>
39 #include <dali-toolkit/public-api/controls/scrollable/scroll-view/scroll-view.h>
40
41 namespace Dali
42 {
43
44 namespace V8Plugin
45 {
46
47 namespace
48 {
49
50 struct Vector3Pair
51 {
52   const char* name;
53   const Vector3& value;
54 };
55
56 struct Vector4Pair
57 {
58   const char* name;
59   const Vector4& value;
60 };
61
62 struct IntegerPair
63 {
64   const char* name;
65   const int value;
66 };
67
68
69 const Vector3Pair Vector3Table[] =
70 {
71     { "TOP_LEFT"            , ParentOrigin::TOP_LEFT          },
72     { "TOP_CENTER"          , ParentOrigin::TOP_CENTER        },
73     { "TOP_RIGHT"           , ParentOrigin::TOP_RIGHT         },
74     { "CENTER_LEFT"         , ParentOrigin::CENTER_LEFT       },
75     { "CENTER"              , ParentOrigin::CENTER            },
76     { "CENTER_RIGHT"        , ParentOrigin::CENTER_RIGHT      },
77     { "BOTTOM_LEFT"         , ParentOrigin::BOTTOM_LEFT       },
78     { "BOTTOM_CENTER"       , ParentOrigin::BOTTOM_CENTER     },
79     { "BOTTOM_RIGHT"        , ParentOrigin::BOTTOM_RIGHT      },
80
81     { "VECTOR3_ONE"                  ,      Vector3::ONE                        },
82     { "VECTOR3_XAXIS"                ,      Vector3::XAXIS                      },
83     { "VECTOR3_YAXIS"                ,      Vector3::YAXIS                      },
84     { "VECTOR3_ZAXIS"                ,      Vector3::ZAXIS                      },
85     { "VECTOR3_NEGATIVE_XAXIS"       ,      Vector3::NEGATIVE_XAXIS             },
86     { "VECTOR3_NEGATIVE_YAXIS"       ,      Vector3::NEGATIVE_YAXIS             },
87     { "VECTOR3_NEGATIVE_ZAXIS"       ,      Vector3::NEGATIVE_ZAXIS             },
88     { "VECTOR3_ZERO"                 ,      Vector3::ZERO                       }
89
90
91 };
92
93 const unsigned int Vector3TableCount = sizeof(Vector3Table)/sizeof(Vector3Table[0]);
94
95 const Vector4Pair Vector4Table[] =
96 {
97     { "COLOR_BLACK"                  , Color::BLACK       },
98     { "COLOR_WHITE"                  , Color::WHITE       },
99     { "COLOR_RED"                    , Color::RED         },
100     { "COLOR_GREEN"                  , Color::GREEN       },
101     { "COLOR_BLUE"                   , Color::BLUE        },
102     { "COLOR_YELLOW"                 , Color::YELLOW      },
103     { "COLOR_MAGENTA"                , Color::MAGENTA     },
104     { "COLOR_CYAN"                   , Color::CYAN        },
105     { "COLOR_TRANSPARENT"            , Color::TRANSPARENT }
106
107 };
108
109 const unsigned int Vector4TableCount = sizeof(Vector4Table)/sizeof(Vector4Table[0]);
110
111 const IntegerPair EnumTable[] =
112 {
113
114     { "ANIMATION_BAKE",                                       Animation::Bake                    },
115     { "ANIMATION_DISCARD",                                    Animation::Discard                 },
116     { "ANIMATION_BAKE_FINAL",                                 Animation::BakeFinal               },
117     { "REFRESH_ONCE",                                         RenderTask::REFRESH_ONCE           },
118     { "REFRESH_ALWAYS",                                       RenderTask::REFRESH_ALWAYS         },
119
120     { "PIXEL_FORMAT_A8",                                       Pixel::A8,                        },
121     { "PIXEL_FORMAT_L8",                                       Pixel::L8,                        },
122     { "PIXEL_FORMAT_LA88",                                     Pixel::LA88,                      },
123     { "PIXEL_FORMAT_RGB565",                                   Pixel::RGB565,                    },
124     { "PIXEL_FORMAT_BGR565",                                   Pixel::BGR565,                    },
125     { "PIXEL_FORMAT_RGBA4444",                                 Pixel::RGBA4444,                  },
126     { "PIXEL_FORMAT_BGRA4444",                                 Pixel::BGRA4444,                  },
127     { "PIXEL_FORMAT_RGBA5551",                                 Pixel::RGBA5551,                   },
128     { "PIXEL_FORMAT_BGRA5551",                                 Pixel::BGRA5551,                  },
129     { "PIXEL_FORMAT_RGB888",                                   Pixel::RGB888,                    },
130     { "PIXEL_FORMAT_RGB8888",                                  Pixel::RGB8888,                   },
131     { "PIXEL_FORMAT_BGR8888",                                  Pixel::BGR8888,                   },
132     { "PIXEL_FORMAT_RGBA8888",                                 Pixel::RGBA8888,                  },
133     { "PIXEL_FORMAT_BGRA8888",                                 Pixel::BGRA8888,                  },
134
135     { "PIXEL_FORMAT_COMPRESSED_R11_EAC",                       Pixel::COMPRESSED_R11_EAC,        },
136     { "PIXEL_FORMAT_COMPRESSED_SIGNED_R11_EAC",                Pixel::COMPRESSED_SIGNED_R11_EAC,                },
137     { "PIXEL_FORMAT_COMPRESSED_RG11_EAC",                      Pixel::COMPRESSED_RG11_EAC,                      },
138     { "PIXEL_FORMAT_COMPRESSED_SIGNED_RG11_EAC",               Pixel::COMPRESSED_SIGNED_RG11_EAC,               },
139     { "PIXEL_FORMAT_COMPRESSED_RGB8_ETC2",                     Pixel::COMPRESSED_RGB8_ETC2,                     },
140     { "PIXEL_FORMAT_COMPRESSED_SRGB8_ETC2",                    Pixel::COMPRESSED_SRGB8_ETC2,                    },
141     { "PIXEL_FORMAT_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2", Pixel::COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2, },
142     { "PIXEL_FORMAT_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2",Pixel::COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2},
143     { "PIXEL_FORMAT_COMPRESSED_RGBA8_ETC2_EAC",                Pixel::COMPRESSED_RGBA8_ETC2_EAC,                },
144     { "PIXEL_FORMAT_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC",         Pixel::COMPRESSED_SRGB8_ALPHA8_ETC2_EAC,         },
145     { "PIXEL_FORMAT_COMPRESSED_RGB8_ETC1",                     Pixel::COMPRESSED_RGB8_ETC1,                     },
146     { "PIXEL_FORMAT_COMPRESSED_RGB_PVRTC_4BPPV1",              Pixel::COMPRESSED_RGB_PVRTC_4BPPV1               },
147
148
149     { "COLOR_MODE_USE_OWN_COLOR",                              USE_OWN_COLOR                    },
150     { "COLOR_MODE_USE_PARENT_COLOR",                           USE_PARENT_COLOR                 },
151     { "COLOR_MODE_USE_OWN_MULTIPLY_PARENT_COLOR",              USE_OWN_MULTIPLY_PARENT_COLOR    },
152     { "COLOR_MODE_USE_OWN_MULTIPLY_PARENT_ALPHA",              USE_OWN_MULTIPLY_PARENT_ALPHA    },
153
154
155     { "POSITION_INHERITANCE_INHERIT_PARENT_POSITION",                    INHERIT_PARENT_POSITION                    },
156     { "POSITION_INHERITANCE_USE_PARENT_POSITION",                        USE_PARENT_POSITION                        },
157     { "POSITION_INHERITANCE_USE_PARENT_POSITION_PLUS_LOCAL_POSITION",    USE_PARENT_POSITION_PLUS_LOCAL_POSITION    },
158     { "POSITION_INHERITANCE_DONT_INHERIT_POSITION",                      DONT_INHERIT_POSITION                      },
159
160     { "DRAW_MODE_NORMAL",                                   DrawMode::NORMAL     },
161     { "DRAW_MODE_OVERLAY_2D",                               DrawMode::OVERLAY_2D },
162     { "DRAW_MODE_STENCIL",                                  DrawMode::STENCIL    },
163
164     { "RESOURCE_LOADING",                                   Dali::ResourceLoading },
165     { "RESOURCE_LOADING_SUCCEEDED",                         Dali::ResourceLoadingSucceeded  },
166     { "RESOURCE_LOADING_FAILED",                            Dali::ResourceLoadingFailed  },
167
168     { "FITTING_MODE_SHRINK_TO_FIT",     FittingMode::SHRINK_TO_FIT },
169     { "FITTING_MODE_SCALE_TO_FILL",     FittingMode::SCALE_TO_FILL },
170     { "FITTING_MODE_FIT_WIDTH",         FittingMode::FIT_WIDTH },
171     { "FITTING_MODE_FIT_HEIGHT",        FittingMode::FIT_HEIGHT },
172
173     { "SAMPLING_MODE_BOX",              SamplingMode::BOX },
174     { "SAMPLING_MODE_NEAREST",          SamplingMode::NEAREST },
175     { "SAMPLING_MODE_LINEAR",           SamplingMode::LINEAR },
176     { "SAMPLING_MODE_BOX_THEN_NEAREST", SamplingMode::BOX_THEN_NEAREST },
177     { "SAMPLING_MODE_BOX_THEN_LINEAR",  SamplingMode::BOX_THEN_LINEAR },
178     { "SAMPLING_MODE_NO_FILTER",        SamplingMode::NO_FILTER },
179     { "SAMPLING_MODE_DONT_CARE",        SamplingMode::DONT_CARE },
180
181     { "BLEND_FACTOR_ZERO",                                  BlendFactor::ZERO                    },
182     { "BLEND_FACTOR_ONE",                                   BlendFactor::ONE                     },
183     { "BLEND_FACTOR_SRC_COLOR",                             BlendFactor::SRC_COLOR               },
184     { "BLEND_FACTOR_ONE_MINUS_SRC_COLOR",                   BlendFactor::ONE_MINUS_SRC_COLOR     },
185     { "BLEND_FACTOR_SRC_ALPHA",                             BlendFactor::SRC_ALPHA               },
186     { "BLEND_FACTOR_ONE_MINUS_SRC_ALPHA",                   BlendFactor::ONE_MINUS_SRC_ALPHA     },
187     { "BLEND_FACTOR_DST_ALPHA",                             BlendFactor::DST_ALPHA                },
188     { "BLEND_FACTOR_ONE_MINUS_DST_ALPHA",                   BlendFactor::ONE_MINUS_DST_ALPHA      },
189     { "BLEND_FACTOR_DST_COLOR",                             BlendFactor::DST_COLOR                },
190     { "BLEND_FACTOR_ONE_MINUS_DST_COLOR",                   BlendFactor::ONE_MINUS_DST_COLOR      },
191     { "BLEND_FACTOR_SRC_ALPHA_SATURATE",                    BlendFactor::SRC_ALPHA_SATURATE       },
192     { "BLEND_FACTOR_CONSTANT_COLOR",                        BlendFactor::CONSTANT_COLOR           },
193     { "BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR",              BlendFactor::ONE_MINUS_CONSTANT_COLOR },
194     { "BLEND_FACTOR_CONSTANT_ALPHA" ,                       BlendFactor::CONSTANT_ALPHA           },
195     { "BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA",              BlendFactor::ONE_MINUS_CONSTANT_ALPHA },
196
197     { "BLEND_MODE_OFF",                                      BlendMode::OFF             },
198     { "BLEND_MODE_AUTO",                                     BlendMode::AUTO            },
199     { "BLEND_MODE_ON",                                       BlendMode::ON              },
200
201     { "BLEND_EQUATION_ADD",                                BlendEquation::ADD              },
202     { "BLEND_EQUATION_SUBTRACT",                           BlendEquation::SUBTRACT         },
203     { "BLEND_EQUATION_REVERSE_SUBTRACT",                   BlendEquation::REVERSE_SUBTRACT },
204
205     { "CAMERA_FREE_LOOK"             ,      Camera::FREE_LOOK                   },
206     { "CAMERA_LOOK_AT_TARGET"        ,      Camera::LOOK_AT_TARGET              },
207     { "CAMERA_PERSPECTIVE_PROJECTION" ,     Camera::PERSPECTIVE_PROJECTION      },
208     { "CAMERA_ORTHOGRAPHIC_PROJECTION",     Camera::ORTHOGRAPHIC_PROJECTION     },
209
210     { "FILTER_MODE_NONE",                     FilterMode::NONE           },
211     { "FILTER_MODE_DEFAULT",                  FilterMode::DEFAULT        },
212     { "FILTER_MODE_NEAREST",                  FilterMode::NEAREST        },
213     { "FILTER_MODE_LINEAR",                   FilterMode::LINEAR         },
214
215     { "WRAP_MODE_DEFAULT",                    WrapMode::DEFAULT          },
216     { "WRAP_MODE_CLAMP_TO_EDGE",              WrapMode::CLAMP_TO_EDGE    },
217     { "WRAP_MODE_REPEAT",                     WrapMode::REPEAT           },
218     { "WRAP_MODE_MIRRORED_REPEAT",            WrapMode::MIRRORED_REPEAT  },
219
220     { "FACE_CULLING_NONE",                    FaceCullingMode::NONE           },
221     { "FACE_CULLING_BACK",                    FaceCullingMode::BACK           },
222     { "FACE_CULLING_FRONT",                   FaceCullingMode::FRONT          },
223     { "FACE_CULLING_FRONT_AND_BACK",          FaceCullingMode::FRONT_AND_BACK },
224
225     { "DEPTH_WRITE_OFF",                      DepthWriteMode::OFF   },
226     { "DEPTH_WRITE_AUTO",                     DepthWriteMode::AUTO  },
227     { "DEPTH_WRITE_ON",                       DepthWriteMode::ON    },
228
229     { "GEOMETRY_POINTS",                      Geometry::POINTS          },
230     { "GEOMETRY_LINES",                       Geometry::LINES           },
231     { "GEOMETRY_LINE_LOOP",                   Geometry::LINE_LOOP       },
232     { "GEOMETRY_LINE_STRIP",                  Geometry::LINE_STRIP      },
233     { "GEOMETRY_TRIANGLES",                   Geometry::TRIANGLES       },
234     { "GEOMETRY_TRIANGLE_FAN",                Geometry::TRIANGLE_FAN    },
235     { "GEOMETRY_TRIANGLE_STRIP",              Geometry::TRIANGLE_STRIP  },
236
237     { "PROPERTY_NONE",                        Property::NONE           },
238     { "PROPERTY_BOOLEAN",                     Property::BOOLEAN        },
239     { "PROPERTY_FLOAT",                       Property::FLOAT          },
240     { "PROPERTY_INTEGER",                     Property::INTEGER        },
241     { "PROPERTY_VECTOR2",                     Property::VECTOR2        },
242     { "PROPERTY_VECTOR3",                     Property::VECTOR3        },
243     { "PROPERTY_VECTOR4",                     Property::VECTOR4        },
244     { "PROPERTY_MATRIX3",                     Property::MATRIX3        },
245     { "PROPERTY_MATRIX",                      Property::MATRIX         },
246     { "PROPERTY_RECTANGLE",                   Property::RECTANGLE      },
247     { "PROPERTY_ROTATION",                    Property::ROTATION       },
248     { "PROPERTY_STRING",                      Property::STRING         },
249     { "PROPERTY_ARRAY",                       Property::ARRAY          },
250     { "PROPERTY_MAP",                         Property::MAP            },
251     { "PROPERTY_INVALID_INDEX",               Property::INVALID_INDEX  },
252     { "PROPERTY_READ_ONLY",                   Property::READ_ONLY      },
253     { "PROPERTY_READ_WRITE",                  Property::READ_WRITE     },
254     { "PROPERTY_ANIMATABLE",                  Property::ANIMATABLE     },
255
256     { "DIMENSION_WIDTH",                      Dimension::WIDTH   },
257     { "DIMENSION_HEIGHT",                     Dimension::HEIGHT  },
258
259     { "ITEM_LAYOUT_LIST",                     Toolkit::DefaultItemLayout::LIST     },
260     { "ITEM_LAYOUT_GRID",                     Toolkit::DefaultItemLayout::GRID     },
261
262     { "DIRECTION_BIAS_NONE",                  Toolkit::DirectionBiasNone   },
263     { "DIRECTION_BIAS_LEFT",                  Toolkit::DirectionBiasLeft   },
264     { "DIRECTION_BIAS_RIGHT",                 Toolkit::DirectionBiasRight  },
265
266     { "ALPHA_FUNCTION_DEFAULT",               AlphaFunction::DEFAULT              },
267     { "ALPHA_FUNCTION_LINEAR",                AlphaFunction::LINEAR               },
268     { "ALPHA_FUNCTION_REVERSE",               AlphaFunction::REVERSE              },
269     { "ALPHA_FUNCTION_EASE_IN_SQUARE",        AlphaFunction::EASE_IN_SQUARE       },
270     { "ALPHA_FUNCTION_EASE_OUT_SQUARE",       AlphaFunction::EASE_OUT_SQUARE      },
271     { "ALPHA_FUNCTION_EASE_IN",               AlphaFunction::EASE_IN              },
272     { "ALPHA_FUNCTION_EASE_OUT",              AlphaFunction::EASE_OUT             },
273     { "ALPHA_FUNCTION_EASE_IN_OUT",           AlphaFunction::EASE_IN_OUT          },
274     { "ALPHA_FUNCTION_EASE_IN_SINE",          AlphaFunction::EASE_IN_SINE         },
275     { "ALPHA_FUNCTION_EASE_OUT_SINE",         AlphaFunction::EASE_OUT_SINE        },
276     { "ALPHA_FUNCTION_EASE_IN_OUT_SINE",      AlphaFunction::EASE_IN_OUT_SINE     },
277     { "ALPHA_FUNCTION_BOUNCE",                AlphaFunction::BOUNCE               },
278     { "ALPHA_FUNCTION_SIN",                   AlphaFunction::SIN                  },
279     { "ALPHA_FUNCTION_EASE_OUT_BACK",         AlphaFunction::EASE_OUT_BACK        },
280
281 };
282 const unsigned int EnumTableCount = sizeof(EnumTable)/sizeof(EnumTable[0]);
283
284
285
286
287
288
289 } // un-named name space
290
291
292 void ConstantsWrapper::AddDaliConstants( v8::Isolate* isolate, v8::Local<v8::Object >& obj  )
293 {
294   v8::EscapableHandleScope handleScope( isolate );
295
296
297   for( unsigned int i = 0; i < EnumTableCount; ++i )
298   {
299     obj->Set( v8::String::NewFromUtf8( isolate, EnumTable[i].name ),
300                       v8::Integer::New(isolate, EnumTable[i].value ) );
301   }
302
303   for( unsigned int i = 0; i < Vector3TableCount; ++i )
304   {
305     // create a JavaScript array object with 3 entries.
306     v8::Local<v8::Array> array = v8::Array::New( isolate ,3 );
307     array->Set( 0 , v8::Number::New(isolate, Vector3Table[i].value.x ));
308     array->Set( 1 , v8::Number::New(isolate, Vector3Table[i].value.y ));
309     array->Set( 2 , v8::Number::New(isolate, Vector3Table[i].value.z ));
310
311     obj->Set( v8::String::NewFromUtf8( isolate, Vector3Table[i].name),
312               array);
313   }
314
315
316   for( unsigned int i = 0; i < Vector4TableCount; ++i )
317   {
318     // create a JavaScript array object with 3 entries.
319     v8::Local<v8::Array> array = v8::Array::New( isolate ,4 );
320     array->Set( 0 , v8::Number::New(isolate, Vector4Table[i].value.x ));
321     array->Set( 1 , v8::Number::New(isolate, Vector4Table[i].value.y ));
322     array->Set( 2 , v8::Number::New(isolate, Vector4Table[i].value.z ));
323     array->Set( 3 , v8::Number::New(isolate, Vector4Table[i].value.w ));
324
325     obj->Set( v8::String::NewFromUtf8( isolate, Vector4Table[i].name),
326               array);
327   }
328
329 }
330
331 } // namespace V8Plugin
332
333 } // namespace Dali