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=f1fad653de8295335fa8da58bd7cc9c8db60c385;hp=b9d7b4c48dccad94a5fc7d3ed363667c71e570f3;hb=8a7433af8408ffc1869d696ec78332d775e7e772;hpb=4bf366c7c657eacb5cf150fa52e34263ca16218f 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 b9d7b4c..f1fad65 100644 --- a/plugins/dali-script-v8/src/object/property-value-wrapper.cpp +++ b/plugins/dali-script-v8/src/object/property-value-wrapper.cpp @@ -527,9 +527,15 @@ v8::Local CreateJavaScriptPrimitive( v8::Isolate* isolate, const Dal break; } } - v8::Local ret = v8Value->ToObject(); - return handleScope.Escape( ret ); + v8::Local ret; + + if( v8Value->IsObject() ) + { + ret = v8Value->ToObject(); + } + + return handleScope.Escape( ret ); } @@ -562,7 +568,7 @@ Dali::Property::Value PropertyValueWrapper::VectorOrMatrixFromV8Array( v8::Isola } if(16 == len ) { - ret = Dali::Matrix( out[0] ); + ret = Dali::Matrix( out ); } else if ( 9 == len ) { @@ -675,6 +681,10 @@ Dali::Property::Value PropertyValueWrapper::ExtractPropertyValue( v8::Isolate* i { daliPropertyValue = Dali::Property::Value( v8Value->Int32Value() ) ;//static_cast( V8Utils::GetNumberValue( isolate, v8Value) )); } + else if( V8Utils::IsStringPrimitiveOrObject( v8Value) ) // Take string as value for properties that internally convert the string to an enum + { + daliPropertyValue = Dali::Property::Value( V8Utils::GetStringValue( isolate, v8Value) ); + } break; } case Dali::Property::STRING: @@ -781,6 +791,62 @@ Dali::Property::Value PropertyValueWrapper::ExtractPropertyValue( v8::Isolate* i return daliPropertyValue; } +Dali::Property::Value PropertyValueWrapper::ExtractPropertyValue( v8::Isolate* isolate, v8::Local< v8::Value> v8Value) +{ + v8::HandleScope handleScope( isolate); + + Dali::Property::Value daliPropertyValue; + + // Check if it's a javascript Array + Dali::Property::Value array = VectorOrMatrixFromV8Array( isolate, v8Value ); + + if( V8Utils::IsBooleanPrimitiveOrObject( v8Value ) ) + { + daliPropertyValue = Dali::Property::Value( V8Utils::GetBooleanValue( isolate, v8Value)); + } + else if( V8Utils::IsNumberPrimitiveOrObject( v8Value ) ) + { + daliPropertyValue = Dali::Property::Value( V8Utils::GetNumberValue( isolate, v8Value) ); + } + else if( v8Value->IsInt32() ) + { + daliPropertyValue = Dali::Property::Value( v8Value->Int32Value() ) ; + } + else if( V8Utils::IsStringPrimitiveOrObject( v8Value) ) + { + daliPropertyValue = Dali::Property::Value( V8Utils::GetStringValue( isolate, v8Value) ); + } + else if( array.GetType() == Dali::Property::VECTOR2 + || array.GetType() == Dali::Property::VECTOR3 + || array.GetType() == Dali::Property::VECTOR4 ) + { + daliPropertyValue = array; + } + else if( array.GetType() == Dali::Property::MATRIX ) + { + Dali::Matrix mat = array.Get(); + daliPropertyValue = mat; + } + else if( array.GetType() == Dali::Property::MATRIX3 ) + { + Dali::Matrix3 mat = array.Get(); + daliPropertyValue = mat; + } + else if( array.GetType() == Dali::Property::ARRAY ) + { + daliPropertyValue = ArrayFromV8Array( isolate, v8Value ); + } + else if( v8Value->IsObject() ) + { + // Assume this is a property map + v8::Local object = v8::Handle::Cast(v8Value); + Dali::Property::Map propertyMap = V8Utils::GetPropertyMapFromObject(isolate, object); + daliPropertyValue = Dali::Property::Value( propertyMap ); + } + + return daliPropertyValue; +} + void PropertyValueWrapper::NewRotation( const v8::FunctionCallbackInfo< v8::Value >& args) { v8::Isolate* isolate = args.GetIsolate();