2 * Copyright (c) 2015 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/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/devel-api/rendering/renderer.h>
37 #include <dali/devel-api/rendering/geometry.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>
69 const Vector3Pair Vector3Table[] =
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 },
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 }
93 const unsigned int Vector3TableCount = sizeof(Vector3Table)/sizeof(Vector3Table[0]);
95 const Vector4Pair Vector4Table[] =
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 }
109 const unsigned int Vector4TableCount = sizeof(Vector4Table)/sizeof(Vector4Table[0]);
111 const IntegerPair EnumTable[] =
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 },
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, },
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 },
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 },
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 },
160 { "DRAW_MODE_NORMAL", DrawMode::NORMAL },
161 { "DRAW_MODE_OVERLAY_2D", DrawMode::OVERLAY_2D },
162 { "DRAW_MODE_STENCIL", DrawMode::STENCIL },
164 { "RESOURCE_LOADING", Dali::ResourceLoading },
165 { "RESOURCE_LOADING_SUCCEEDED", Dali::ResourceLoadingSucceeded },
166 { "RESOURCE_LOADING_FAILED", Dali::ResourceLoadingFailed },
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 },
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 },
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 },
197 { "BLEND_MODE_OFF", BlendMode::OFF },
198 { "BLEND_MODE_AUTO", BlendMode::AUTO },
199 { "BLEND_MODE_ON", BlendMode::ON },
201 { "BLEND_EQUATION_ADD", BlendEquation::ADD },
202 { "BLEND_EQUATION_SUBTRACT", BlendEquation::SUBTRACT },
203 { "BLEND_EQUATION_REVERSE_SUBTRACT", BlendEquation::REVERSE_SUBTRACT },
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 },
210 { "FILTER_MODE_NONE", FilterMode::NONE },
211 { "FILTER_MODE_DEFAULT", FilterMode::DEFAULT },
212 { "FILTER_MODE_NEAREST", FilterMode::NEAREST },
213 { "FILTER_MODE_LINEAR", FilterMode::LINEAR },
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 },
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 },
225 { "DEPTH_WRITE_OFF", DepthWriteMode::OFF },
226 { "DEPTH_WRITE_AUTO", DepthWriteMode::AUTO },
227 { "DEPTH_WRITE_ON", DepthWriteMode::ON },
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 },
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 },
256 { "DIMENSION_WIDTH", Dimension::WIDTH },
257 { "DIMENSION_HEIGHT", Dimension::HEIGHT },
259 { "ITEM_LAYOUT_LIST", Toolkit::DefaultItemLayout::LIST },
260 { "ITEM_LAYOUT_GRID", Toolkit::DefaultItemLayout::GRID },
262 { "DIRECTION_BIAS_NONE", Toolkit::DirectionBiasNone },
263 { "DIRECTION_BIAS_LEFT", Toolkit::DirectionBiasLeft },
264 { "DIRECTION_BIAS_RIGHT", Toolkit::DirectionBiasRight },
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 },
282 const unsigned int EnumTableCount = sizeof(EnumTable)/sizeof(EnumTable[0]);
289 } // un-named name space
292 void ConstantsWrapper::AddDaliConstants( v8::Isolate* isolate, v8::Local<v8::Object >& obj )
294 v8::EscapableHandleScope handleScope( isolate );
297 for( unsigned int i = 0; i < EnumTableCount; ++i )
299 obj->Set( v8::String::NewFromUtf8( isolate, EnumTable[i].name ),
300 v8::Integer::New(isolate, EnumTable[i].value ) );
303 for( unsigned int i = 0; i < Vector3TableCount; ++i )
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 ));
311 obj->Set( v8::String::NewFromUtf8( isolate, Vector3Table[i].name),
316 for( unsigned int i = 0; i < Vector4TableCount; ++i )
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 ));
325 obj->Set( v8::String::NewFromUtf8( isolate, Vector4Table[i].name),
331 } // namespace V8Plugin