X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=plugins%2Fdali-script-v8%2Fsrc%2Fobject%2Fproperty-value-wrapper.cpp;h=a7e29981f16c3a7153571b5b5bcbf26fe9f0e1a9;hp=5dccbee1573c1dd3abc3765412a937f12c64642c;hb=f36862d59316d840e5e711220b907d50461eb502;hpb=5d49d819924da76f96f22845210abe89a7ade187 diff --git a/plugins/dali-script-v8/src/object/property-value-wrapper.cpp b/plugins/dali-script-v8/src/object/property-value-wrapper.cpp index 5dccbee..a7e2998 100644 --- a/plugins/dali-script-v8/src/object/property-value-wrapper.cpp +++ b/plugins/dali-script-v8/src/object/property-value-wrapper.cpp @@ -19,6 +19,7 @@ // EXTERNAL INCLUDES #include +#include // INTERNAL INCLUDES #include @@ -89,7 +90,7 @@ void SetY( Dali::Property::Value &value, S& v) { T tmp = value.Get(); tmp.y = v; - value = tmp ; + value = tmp; } template @@ -97,7 +98,7 @@ void SetZ( Dali::Property::Value &value, S& v) { T tmp = value.Get(); tmp.z = v; - value = tmp ; + value = tmp; } template @@ -105,14 +106,14 @@ void SetW( Dali::Property::Value &value, S& v) { T tmp = value.Get(); tmp.w = v; - value = tmp ; + value = tmp; } template void SetWidth( Dali::Property::Value &value, S& v) { T tmp = value.Get(); tmp.width = v; - value = tmp ; + value = tmp; } template @@ -120,7 +121,7 @@ void SetHeight( Dali::Property::Value &value, S& v) { T tmp = value.Get(); tmp.height = v; - value = tmp ; + value = tmp; } v8::Handle< v8::Value > GetV8ValueFrom( v8::Isolate* isolate, @@ -142,13 +143,13 @@ v8::Handle< v8::Value > GetV8ValueFrom( v8::Isolate* isolate, if( field == "x" || field == "width" ) { - Dali::Vector2 v2 = value.Get() ; - ret = v8::Number::New( isolate, v2.x) ; + Dali::Vector2 v2 = value.Get(); + ret = v8::Number::New( isolate, v2.x); } else if(field == "y" || field == "height") { - Dali::Vector2 v2 = value.Get() ; - ret = v8::Number::New( isolate, v2.y) ; + Dali::Vector2 v2 = value.Get(); + ret = v8::Number::New( isolate, v2.y); } break; @@ -159,18 +160,18 @@ v8::Handle< v8::Value > GetV8ValueFrom( v8::Isolate* isolate, if(field == "x" || field == "width" || field == "r") { - Dali::Vector3 v3 = value.Get() ; - ret = v8::Number::New( isolate, v3.x) ; + Dali::Vector3 v3 = value.Get(); + ret = v8::Number::New( isolate, v3.x); } else if(field == "y" || field == "height" || field == "g") { - Dali::Vector3 v3 = value.Get() ; - ret = v8::Number::New( isolate, v3.y) ; + Dali::Vector3 v3 = value.Get(); + ret = v8::Number::New( isolate, v3.y); } else if(field == "z" || field == "depth" || field == "b") { - Dali::Vector3 v3 = value.Get() ; - ret = v8::Number::New( isolate, v3.z) ; + Dali::Vector3 v3 = value.Get(); + ret = v8::Number::New( isolate, v3.z); } break; } @@ -180,23 +181,23 @@ v8::Handle< v8::Value > GetV8ValueFrom( v8::Isolate* isolate, if(field == "x" || field == "s" || field == "r") { - Dali::Vector4 v4 = value.Get() ; - ret = v8::Number::New( isolate, v4.x) ; + Dali::Vector4 v4 = value.Get(); + ret = v8::Number::New( isolate, v4.x); } else if(field == "y" || field == "g" || field == "t") { - Dali::Vector4 v4 = value.Get() ; - ret = v8::Number::New( isolate, v4.y) ; + Dali::Vector4 v4 = value.Get(); + ret = v8::Number::New( isolate, v4.y); } else if(field == "z" || field == "r" || field == "b") { - Dali::Vector4 v4 = value.Get() ; - ret = v8::Number::New( isolate, v4.z) ; + Dali::Vector4 v4 = value.Get(); + ret = v8::Number::New( isolate, v4.z); } else if(field == "w" || field == "a" || field == "q") { - Dali::Vector4 v4 = value.Get() ; - ret = v8::Number::New( isolate, v4.w) ; + Dali::Vector4 v4 = value.Get(); + ret = v8::Number::New( isolate, v4.w); } break; @@ -208,30 +209,30 @@ v8::Handle< v8::Value > GetV8ValueFrom( v8::Isolate* isolate, if(field == "roll") { Dali::Vector4 v4 = value.Get().EulerAngles(); - ret = v8::Number::New( isolate, v4.z) ; + ret = v8::Number::New( isolate, v4.z); } else if(field == "pitch") { Dali::Vector4 v4 = value.Get().EulerAngles(); - ret = v8::Number::New( isolate, v4.x) ; + ret = v8::Number::New( isolate, v4.x); } else if(field == "yaw") { Dali::Vector4 v4 = value.Get().EulerAngles(); - ret = v8::Number::New( isolate, v4.y) ; + ret = v8::Number::New( isolate, v4.y); } else if(field == "axis") { Dali::Vector3 axis; - float angle; + Radian angle; value.Get().ToAxisAngle(axis, angle); ret = PropertyValueWrapper::WrapDaliProperty( isolate , Dali::Property::Value( axis ) ); } else if(field == "angle") { Dali::Vector3 axis; - float angle; + Radian angle; value.Get().ToAxisAngle(axis, angle); ret = PropertyValueWrapper::WrapDaliProperty( isolate , Dali::Property::Value( angle ) ); } @@ -243,23 +244,23 @@ v8::Handle< v8::Value > GetV8ValueFrom( v8::Isolate* isolate, if(field == "x") { - Dali::Rect r = value.Get >() ; - ret = v8::Number::New( isolate, r.x) ; + Dali::Rect r = value.Get >(); + ret = v8::Number::New( isolate, r.x); } else if(field == "y") { - Dali::Rect r = value.Get >() ; - ret = v8::Number::New( isolate, r.y) ; + Dali::Rect r = value.Get >(); + ret = v8::Number::New( isolate, r.y); } else if(field == "width") { - Dali::Rect r = value.Get >() ; - ret = v8::Number::New( isolate, r.width) ; + Dali::Rect r = value.Get >(); + ret = v8::Number::New( isolate, r.width); } else if(field == "height") { - Dali::Rect r = value.Get >() ; - ret = v8::Number::New( isolate, r.height) ; + Dali::Rect r = value.Get >(); + ret = v8::Number::New( isolate, r.height); } break; } @@ -319,11 +320,11 @@ void SetFromV8Value(v8::Isolate* isolate, { if(field == "x" || field == "width") { - SetX(value, asFloat) ; + SetX(value, asFloat); } else if(field == "y" || field == "height") { - SetY(value, asFloat) ; + SetY(value, asFloat); } else { @@ -336,15 +337,15 @@ void SetFromV8Value(v8::Isolate* isolate, { if(field == "x" || field == "width" || field == "r") { - SetX(value, asFloat) ; + SetX(value, asFloat); } else if(field == "y" || field == "height" || field == "g") { - SetY(value, asFloat) ; + SetY(value, asFloat); } else if(field == "z" || field == "depth" || field == "b") { - SetZ(value, asFloat) ; + SetZ(value, asFloat); } else { @@ -357,19 +358,19 @@ void SetFromV8Value(v8::Isolate* isolate, { if(field == "x" || field == "s" || field == "r") { - SetX(value, asFloat) ; + SetX(value, asFloat); } else if(field == "y" || field == "g" || field == "t") { - SetY(value, asFloat) ; + SetY(value, asFloat); } else if(field == "z" || field == "r" || field == "b") { - SetZ(value, asFloat) ; + SetZ(value, asFloat); } else if(field == "w" || field == "a" || field == "q") { - SetW(value, asFloat) ; + SetW(value, asFloat); } else { @@ -384,24 +385,24 @@ void SetFromV8Value(v8::Isolate* isolate, { Dali::Vector4 v4 = value.Get().EulerAngles(); v4.z = asFloat; - value = Dali::Quaternion(v4.x, v4.y, v4.z); + value = Dali::Quaternion( Radian(Degree(v4.x)), Radian(Degree(v4.y)), Radian(Degree(v4.z)) ); } else if(field == "pitch") { Dali::Vector4 v4 = value.Get().EulerAngles(); v4.x = asFloat; - value = Dali::Quaternion(v4.x, v4.y, v4.z); + value = Dali::Quaternion( Radian(Degree(v4.x)), Radian(Degree(v4.y)), Radian(Degree(v4.z)) ); } else if(field == "yaw") { Dali::Vector4 v4 = value.Get().EulerAngles(); v4.y = asFloat; - value = Dali::Quaternion(v4.x, v4.y, v4.z); + value = Dali::Quaternion( Radian(Degree(v4.x)), Radian(Degree(v4.y)), Radian(Degree(v4.z)) ); } else if(field == "axis") { Dali::Vector3 axis; - float angle; + Radian angle; value.Get().ToAxisAngle(axis, angle); if( v8Value->IsObject() ) @@ -426,9 +427,9 @@ void SetFromV8Value(v8::Isolate* isolate, else if(field == "angle") { Dali::Vector3 axis; - float angle; - value.Get().ToAxisAngle(axis, angle); - value = Dali::Quaternion(asFloat, axis); + Radian angle; + value.Get().ToAxisAngle( axis, angle ); + value = Dali::Quaternion( Degree( asFloat ), axis ); } else { @@ -441,15 +442,15 @@ void SetFromV8Value(v8::Isolate* isolate, { if(field == "x") { - SetX >(value, asInt) ; + SetX >(value, asInt); } else if(field == "y") { - SetY >(value, asInt) ; + SetY >(value, asInt); } else if(field == "width") { - SetWidth >(value, asInt) ; + SetWidth >(value, asInt); } else if(field == "height") { @@ -480,7 +481,6 @@ bool IsPrimitive( const Dali::Property::Value &value ) { case Dali::Property::BOOLEAN: case Dali::Property::INTEGER: - case Dali::Property::UNSIGNED_INTEGER: case Dali::Property::STRING: case Dali::Property::FLOAT: { @@ -496,7 +496,7 @@ v8::Local CreateJavaScriptPrimitive( v8::Isolate* isolate, const Dal { v8::EscapableHandleScope handleScope( isolate ); - v8::Local v8Value ; + v8::Local v8Value; switch( value.GetType() ) { @@ -515,11 +515,6 @@ v8::Local CreateJavaScriptPrimitive( v8::Isolate* isolate, const Dal v8Value = v8::Integer::New( isolate, value.Get()); break; } - case Dali::Property::UNSIGNED_INTEGER: - { - v8Value = v8::Integer::New( isolate, value.Get()); - break; - } case Dali::Property::STRING: { std::string string = value.Get< std::string >(); @@ -567,7 +562,7 @@ Dali::Property::Value PropertyValueWrapper::VectorOrMatrixFromV8Array( v8::Isola } if(16 == len ) { - ret = Dali::Matrix( out[0] ); + ret = Dali::Matrix( out ); } else if ( 9 == len ) { @@ -605,12 +600,13 @@ Dali::Property::Value PropertyValueWrapper::ArrayFromV8Array( v8::Isolate* isola //Cast v8::Value to v8::Array v8::Local v8Array = v8::Local::Cast( v8Value ); uint32_t elementCount = v8Array->Length(); - Dali::Property::Array data( elementCount ); + Dali::Property::Array data; + data.Reserve( elementCount ); bool bFound(false); for( uint32_t i(0); iGet(i) ); + data.PushBack( V8Utils::GetPropertyValueFromObject( bFound, isolate, v8Array->Get(i) ) ); } //return the Property::Value @@ -681,14 +677,6 @@ Dali::Property::Value PropertyValueWrapper::ExtractPropertyValue( v8::Isolate* i } break; } - case Dali::Property::UNSIGNED_INTEGER: - { - if( v8Value->IsUint32() ) - { - daliPropertyValue = Dali::Property::Value( v8Value->Uint32Value() );//static_cast( V8Utils::GetNumberValue( isolate, v8Value) )); - } - break; - } case Dali::Property::STRING: { if( V8Utils::IsStringPrimitiveOrObject( v8Value) ) @@ -724,6 +712,15 @@ Dali::Property::Value PropertyValueWrapper::ExtractPropertyValue( v8::Isolate* i } break; } + case Dali::Property::RECTANGLE: + { + if( array.GetType() == Dali::Property::VECTOR4) + { + Vector4 vec4( array.Get()); + daliPropertyValue = Property::Value(Rect( vec4.x,vec4.y, vec4.z, vec4.w )); + } + break; + } case Dali::Property::ROTATION: { if( array.GetType() == Dali::Property::VECTOR4) @@ -734,9 +731,9 @@ Dali::Property::Value PropertyValueWrapper::ExtractPropertyValue( v8::Isolate* i } else if(array.GetType() == Dali::Property::VECTOR3) { - // v3 treated as euler + // v3 treated as euler in degrees Dali::Vector3 v = array.Get(); - daliPropertyValue = Dali::Quaternion(v[0], v[1], v[2]); + daliPropertyValue = Dali::Quaternion( Radian(Degree(v[0])), Radian(Degree(v[1])), Radian(Degree(v[2])) ); } break; } @@ -757,15 +754,31 @@ Dali::Property::Value PropertyValueWrapper::ExtractPropertyValue( v8::Isolate* i daliPropertyValue = ArrayFromV8Array( isolate, v8Value ); break; } + case Dali::Property::MAP: + { + if( v8Value->IsObject() ) + { + v8::Local object = v8::Handle::Cast(v8Value); + Dali::Property::Map propertyMap = V8Utils::GetPropertyMapFromObject(isolate, object); + daliPropertyValue = Dali::Property::Value( propertyMap ); + } + else if( V8Utils::IsStringPrimitiveOrObject( v8Value) ) + { + // There are special cases where a property with property map type can accept a string value, + // so we do the additional check here. + daliPropertyValue = Dali::Property::Value( V8Utils::GetStringValue( isolate, v8Value) ); + } + + break; + } case Dali::Property::NONE: - case Dali::Property::TYPE_COUNT: default: { break; } - } // switch type + } // switch type - return daliPropertyValue; + return daliPropertyValue; } void PropertyValueWrapper::NewRotation( const v8::FunctionCallbackInfo< v8::Value >& args) @@ -780,29 +793,28 @@ void PropertyValueWrapper::NewRotation( const v8::FunctionCallbackInfo< v8::Valu } v8::Local object; - float v[4] = {0.f,0.f,0.f,0.f} ; + float v[4] = {0.f,0.f,0.f,0.f}; bool foundAllArguments(false); V8Utils::ReadFloatArguments( foundAllArguments, v, 4, args, 0.f ); - int len = args.Length(); + int length = args.Length(); // if length = 4 create AngleAxis, else create Quaternion - if(len > 3) + if( length > 3 ) { - Dali::AngleAxis axis( Dali::Degree(v[0] ), Dali::Vector3(v[1], v[2], v[3]) ); - object = WrapDaliProperty( isolate , Dali::Property::Value( axis ) ); + const Dali::AngleAxis axis( Degree( v[0] ), Vector3(v[1], v[2], v[3]) ); + object = WrapDaliProperty( isolate, Dali::Property::Value( axis ) ); } - else if(len > 2) + else if( length > 2 ) { - Dali::Quaternion quaternion( v[0], v[1], v[2] ); - object = WrapDaliProperty( isolate , Dali::Property::Value( quaternion ) ); + object = WrapDaliProperty( isolate, Dali::Quaternion( Degree(v[0]), Degree(v[1]), Degree(v[2]) ) ); } else { - Dali::Quaternion quaternion( Dali::Quaternion(0.f, Dali::Vector4::YAXIS)); - object = WrapDaliProperty( isolate , Dali::Property::Value( quaternion ) ); + const Dali::Quaternion quaternion( Dali::Quaternion( Dali::ANGLE_0, Dali::Vector3::YAXIS)); + object = WrapDaliProperty( isolate, quaternion ); } args.GetReturnValue().Set( object );