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/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>
66 const Vector3Pair Vector3Table[] =
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 },
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 },
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 },
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 }
111 const unsigned int Vector3TableCount = sizeof(Vector3Table)/sizeof(Vector3Table[0]);
113 const Vector4Pair Vector4Table[] =
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 }
127 const unsigned int Vector4TableCount = sizeof(Vector4Table)/sizeof(Vector4Table[0]);
129 const IntegerPair EnumTable[] =
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 },
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, },
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 },
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 },
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 },
178 { "DRAW_MODE_NORMAL", DrawMode::NORMAL },
179 { "DRAW_MODE_OVERLAY", DrawMode::OVERLAY },
180 { "DRAW_MODE_STENCIL", DrawMode::STENCIL },
182 { "IMAGE_LOAD_POLICY_IMMEDIATE", ResourceImage::IMMEDIATE },
183 { "IMAGE_LOAD_POLICY_ON_DEMAND", ResourceImage::ON_DEMAND },
185 { "IMAGE_RELEASE_POLICY_UNUSED", Image::UNUSED },
186 { "IMAGE_RELEASE_POLICY_NEVER", Image::NEVER },
188 { "RESOURCE_LOADING", Dali::ResourceLoading },
189 { "RESOURCE_LOADING_SUCCEEDED", Dali::ResourceLoadingSucceeded },
190 { "RESOUCE_LOADING_FAILED", Dali::ResourceLoadingFailed },
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 },
211 { "BLENDING_OFF", BlendingMode::OFF },
212 { "BLENDING_AUTO", BlendingMode::AUTO },
213 { "BLENDING_ON", BlendingMode::ON },
215 { "BLEND_EQUATION_ADD", BlendingEquation::ADD },
216 { "BLEND_EQUATION_SUBTRACT", BlendingEquation::SUBTRACT },
217 { "BLEND_EQUATION_REVERSE_SUBTRACT", BlendingEquation::REVERSE_SUBTRACT },
220 { "CULL_FACE_DISABLE", CullNone },
221 { "CULL_FRONT_FACE", CullFront },
222 { "CULL_BACK_FACE", CullBack },
223 { "CULL_FRONT_AND_BACK_FACE", CullFrontAndBack },
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 },
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 },
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 }
241 const unsigned int EnumTableCount = sizeof(EnumTable)/sizeof(EnumTable[0]);
248 } // un-named name space
251 void ConstantsWrapper::AddDaliConstants( v8::Isolate* isolate, v8::Local<v8::Object >& obj )
253 v8::EscapableHandleScope handleScope( isolate );
256 for( unsigned int i = 0; i < EnumTableCount; ++i )
258 obj->Set( v8::String::NewFromUtf8( isolate, EnumTable[i].name ),
259 v8::Integer::New(isolate, EnumTable[i].value ) );
262 for( unsigned int i = 0; i < Vector3TableCount; ++i )
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 ));
270 obj->Set( v8::String::NewFromUtf8( isolate, Vector3Table[i].name),
275 for( unsigned int i = 0; i < Vector4TableCount; ++i )
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 ));
284 obj->Set( v8::String::NewFromUtf8( isolate, Vector4Table[i].name),
290 } // namespace V8Plugin