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/material.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", BlendingFactor::ZERO },
182 { "BLEND_FACTOR_ONE", BlendingFactor::ONE },
183 { "BLEND_FACTOR_SRC_COLOR", BlendingFactor::SRC_COLOR },
184 { "BLEND_FACTOR_ONE_MINUS_SRC_COLOR", BlendingFactor::ONE_MINUS_SRC_COLOR },
185 { "BLEND_FACTOR_SRC_ALPHA", BlendingFactor::SRC_ALPHA },
186 { "BLEND_FACTOR_ONE_MINUS_SRC_ALPHA", BlendingFactor::ONE_MINUS_SRC_ALPHA },
187 { "BLEND_FACTOR_DST_ALPHA", BlendingFactor::DST_ALPHA },
188 { "BLEND_FACTOR_ONE_MINUS_DST_ALPHA", BlendingFactor::ONE_MINUS_DST_ALPHA },
189 { "BLEND_FACTOR_DST_COLOR", BlendingFactor::DST_COLOR },
190 { "BLEND_FACTOR_ONE_MINUS_DST_COLOR", BlendingFactor::ONE_MINUS_DST_COLOR },
191 { "BLEND_FACTOR_SRC_ALPHA_SATURATE", BlendingFactor::SRC_ALPHA_SATURATE },
192 { "BLEND_FACTOR_CONSTANT_COLOR", BlendingFactor::CONSTANT_COLOR },
193 { "BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR", BlendingFactor::ONE_MINUS_CONSTANT_COLOR },
194 { "BLEND_FACTOR_CONSTANT_ALPHA" , BlendingFactor::CONSTANT_ALPHA },
195 { "BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA", BlendingFactor::ONE_MINUS_CONSTANT_ALPHA },
197 { "BLENDING_OFF", BlendingMode::OFF },
198 { "BLENDING_AUTO", BlendingMode::AUTO },
199 { "BLENDING_ON", BlendingMode::ON },
201 { "BLEND_EQUATION_ADD", BlendingEquation::ADD },
202 { "BLEND_EQUATION_SUBTRACT", BlendingEquation::SUBTRACT },
203 { "BLEND_EQUATION_REVERSE_SUBTRACT", BlendingEquation::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 { "MATERIAL_NONE", Material::NONE },
221 { "MATERIAL_CULL_BACK", Material::CULL_BACK },
222 { "MATERIAL_CULL_FRONT", Material::CULL_FRONT },
223 { "MATERIAL_CULL_BACK_AND_FRONT", Material::CULL_BACK_AND_FRONT },
225 { "GEOMETRY_POINTS", Geometry::POINTS },
226 { "GEOMETRY_LINES", Geometry::LINES },
227 { "GEOMETRY_LINE_LOOP", Geometry::LINE_LOOP },
228 { "GEOMETRY_LINE_STRIP", Geometry::LINE_STRIP },
229 { "GEOMETRY_TRIANGLES", Geometry::TRIANGLES },
230 { "GEOMETRY_TRIANGLE_FAN", Geometry::TRIANGLE_FAN },
231 { "GEOMETRY_TRIANGLE_STRIP", Geometry::TRIANGLE_STRIP },
233 { "PROPERTY_NONE", Property::NONE },
234 { "PROPERTY_BOOLEAN", Property::BOOLEAN },
235 { "PROPERTY_FLOAT", Property::FLOAT },
236 { "PROPERTY_INTEGER", Property::INTEGER },
237 { "PROPERTY_VECTOR2", Property::VECTOR2 },
238 { "PROPERTY_VECTOR3", Property::VECTOR3 },
239 { "PROPERTY_VECTOR4", Property::VECTOR4 },
240 { "PROPERTY_MATRIX3", Property::MATRIX3 },
241 { "PROPERTY_MATRIX", Property::MATRIX },
242 { "PROPERTY_RECTANGLE", Property::RECTANGLE },
243 { "PROPERTY_ROTATION", Property::ROTATION },
244 { "PROPERTY_STRING", Property::STRING },
245 { "PROPERTY_ARRAY", Property::ARRAY },
246 { "PROPERTY_MAP", Property::MAP },
247 { "PROPERTY_INVALID_INDEX", Property::INVALID_INDEX },
248 { "PROPERTY_READ_ONLY", Property::READ_ONLY },
249 { "PROPERTY_READ_WRITE", Property::READ_WRITE },
250 { "PROPERTY_ANIMATABLE", Property::ANIMATABLE },
252 { "DIMENSION_WIDTH", Dimension::WIDTH },
253 { "DIMENSION_HEIGHT", Dimension::HEIGHT },
255 { "ITEM_LAYOUT_LIST", Toolkit::DefaultItemLayout::LIST },
256 { "ITEM_LAYOUT_GRID", Toolkit::DefaultItemLayout::GRID },
258 { "DIRECTION_BIAS_NONE", Toolkit::DirectionBiasNone },
259 { "DIRECTION_BIAS_LEFT", Toolkit::DirectionBiasLeft },
260 { "DIRECTION_BIAS_RIGHT", Toolkit::DirectionBiasRight },
262 { "ALPHA_FUNCTION_DEFAULT", AlphaFunction::DEFAULT },
263 { "ALPHA_FUNCTION_LINEAR", AlphaFunction::LINEAR },
264 { "ALPHA_FUNCTION_REVERSE", AlphaFunction::REVERSE },
265 { "ALPHA_FUNCTION_EASE_IN_SQUARE", AlphaFunction::EASE_IN_SQUARE },
266 { "ALPHA_FUNCTION_EASE_OUT_SQUARE", AlphaFunction::EASE_OUT_SQUARE },
267 { "ALPHA_FUNCTION_EASE_IN", AlphaFunction::EASE_IN },
268 { "ALPHA_FUNCTION_EASE_OUT", AlphaFunction::EASE_OUT },
269 { "ALPHA_FUNCTION_EASE_IN_OUT", AlphaFunction::EASE_IN_OUT },
270 { "ALPHA_FUNCTION_EASE_IN_SINE", AlphaFunction::EASE_IN_SINE },
271 { "ALPHA_FUNCTION_EASE_OUT_SINE", AlphaFunction::EASE_OUT_SINE },
272 { "ALPHA_FUNCTION_EASE_IN_OUT_SINE", AlphaFunction::EASE_IN_OUT_SINE },
273 { "ALPHA_FUNCTION_BOUNCE", AlphaFunction::BOUNCE },
274 { "ALPHA_FUNCTION_SIN", AlphaFunction::SIN },
275 { "ALPHA_FUNCTION_EASE_OUT_BACK", AlphaFunction::EASE_OUT_BACK },
278 const unsigned int EnumTableCount = sizeof(EnumTable)/sizeof(EnumTable[0]);
285 } // un-named name space
288 void ConstantsWrapper::AddDaliConstants( v8::Isolate* isolate, v8::Local<v8::Object >& obj )
290 v8::EscapableHandleScope handleScope( isolate );
293 for( unsigned int i = 0; i < EnumTableCount; ++i )
295 obj->Set( v8::String::NewFromUtf8( isolate, EnumTable[i].name ),
296 v8::Integer::New(isolate, EnumTable[i].value ) );
299 for( unsigned int i = 0; i < Vector3TableCount; ++i )
301 // create a JavaScript array object with 3 entries.
302 v8::Local<v8::Array> array = v8::Array::New( isolate ,3 );
303 array->Set( 0 , v8::Number::New(isolate, Vector3Table[i].value.x ));
304 array->Set( 1 , v8::Number::New(isolate, Vector3Table[i].value.y ));
305 array->Set( 2 , v8::Number::New(isolate, Vector3Table[i].value.z ));
307 obj->Set( v8::String::NewFromUtf8( isolate, Vector3Table[i].name),
312 for( unsigned int i = 0; i < Vector4TableCount; ++i )
314 // create a JavaScript array object with 3 entries.
315 v8::Local<v8::Array> array = v8::Array::New( isolate ,4 );
316 array->Set( 0 , v8::Number::New(isolate, Vector4Table[i].value.x ));
317 array->Set( 1 , v8::Number::New(isolate, Vector4Table[i].value.y ));
318 array->Set( 2 , v8::Number::New(isolate, Vector4Table[i].value.z ));
319 array->Set( 3 , v8::Number::New(isolate, Vector4Table[i].value.w ));
321 obj->Set( v8::String::NewFromUtf8( isolate, Vector4Table[i].name),
327 } // namespace V8Plugin