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