X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=plugins%2Fdali-script-v8%2Fsrc%2Fshader-effects%2Fshader-effect-api.cpp;h=5143d499e187a9f5fe0835889e20d6907ecdb604;hp=74762f24786a1e2d1f9193b37108a3321e3c5ee5;hb=235c866c63c1b2b493a5bff0508fa92cb70a9f2e;hpb=e8efa9549ccedae5b8377c9eb331aa8392895879 diff --git a/plugins/dali-script-v8/src/shader-effects/shader-effect-api.cpp b/plugins/dali-script-v8/src/shader-effects/shader-effect-api.cpp index 74762f2..5143d49 100644 --- a/plugins/dali-script-v8/src/shader-effects/shader-effect-api.cpp +++ b/plugins/dali-script-v8/src/shader-effects/shader-effect-api.cpp @@ -19,6 +19,9 @@ // CLASS HEADER #include "shader-effect-api.h" +// EXTERNAL INCLUDES +#include + // INTERNAL INCLUDES #include #include @@ -34,23 +37,6 @@ namespace // un named namespace typedef std::vector< std::string > HintsArray; - -struct GeometryTypePair -{ - const char* name; - GeometryType type; -}; - -const GeometryTypePair GeometryTypeTable[]= -{ - {"image", GEOMETRY_TYPE_IMAGE }, - {"text", GEOMETRY_TYPE_TEXT }, - {"mesh", GEOMETRY_TYPE_UNTEXTURED_MESH }, - {"textured-mesh", GEOMETRY_TYPE_TEXTURED_MESH }, -}; - -const unsigned int GeometryTypeTableCount = sizeof(GeometryTypeTable)/sizeof(GeometryTypeTable[0]); - struct GeometryHintPair { const char* name; @@ -75,24 +61,10 @@ const unsigned int GeometryHintTableCount = sizeof(GeometryHintTable)/sizeof(Geo struct ShaderParameters { ShaderParameters() - : mType( GEOMETRY_TYPE_IMAGE), - mHints( ShaderEffect::HINT_NONE ) + : mHints( ShaderEffect::HINT_NONE ) { } - void SetGeometryType( v8::Isolate* isolate, const std::string& typeName ) - { - for( unsigned int i = 0; i < GeometryTypeTableCount; ++i ) - { - if( typeName == GeometryTypeTable[i].name ) - { - mType = GeometryTypeTable[i].type; - return; - } - } - DALI_SCRIPT_EXCEPTION( isolate, "Geometry type not found\n"); - } - ShaderEffect::GeometryHints GetGeometryHint( const std::string& hint ) { for( unsigned int i = 0 ; i < GeometryHintTableCount; ++i ) @@ -113,22 +85,18 @@ struct ShaderParameters } } - - ShaderEffect NewShader() { return ShaderEffect::NewWithPrefix( mVertexPrefix , mVertex, mFragmentPrefix, mFragment, - mType, mHints); } std::string mVertexPrefix; std::string mVertex; std::string mFragmentPrefix; std::string mFragment; - GeometryType mType; ShaderEffect::GeometryHints mHints; }; @@ -187,23 +155,13 @@ ShaderEffect GetShaderEffect( v8::Isolate* isolate, const v8::FunctionCallbackIn */ ShaderEffect ShaderEffectApi::New( v8::Isolate* isolate, const v8::FunctionCallbackInfo< v8::Value >& args ) { - - v8::HandleScope handleScope( isolate ); - ShaderParameters shaderParams; - if( args[0]->IsObject() ) { - v8::Local obj = args[0]->ToObject(); + ShaderParameters shaderParams; - v8::Local geometryTypeValue = obj->Get(v8::String::NewFromUtf8( isolate, "geometryType")); - if( geometryTypeValue->IsString() ) - { - std::string geometryTypeName = V8Utils::v8StringToStdString( geometryTypeValue ); - // printf(" geometry type found %s \n", geometryTypeName.c_str() ); - shaderParams.SetGeometryType( isolate, geometryTypeName ); - } + v8::Local obj = args[0]->ToObject(); v8::Local vertexPrefixValue = obj->Get(v8::String::NewFromUtf8( isolate, "vertexShaderPrefix")); if( vertexPrefixValue->IsString() ) @@ -245,9 +203,39 @@ ShaderEffect ShaderEffectApi::New( v8::Isolate* isolate, const v8::FunctionCall } shaderParams.ProcessHintsArray( hintsArray ); } + + return shaderParams.NewShader(); } - return shaderParams.NewShader(); + else + { + ShaderEffect effect; + + bool found( false ); + std::string typeName = V8Utils::GetStringParameter( PARAMETER_0, found, isolate, args ); + if( !found ) + { + DALI_SCRIPT_EXCEPTION( isolate, "string parameter missing" ); + } + else + { + // create a new shader effect based on type, using the type registry. + Dali::TypeInfo typeInfo = Dali::TypeRegistry::Get().GetTypeInfo( typeName ); + if( typeInfo ) // handle, check if it has a value + { + Dali::BaseHandle handle = typeInfo.CreateInstance(); + if( handle ) + { + effect = ShaderEffect::DownCast( handle ); + } + } + else + { + DALI_SCRIPT_EXCEPTION(isolate,"Unknown shader effect type"); + } + } + return effect; + } } ShaderEffect ShaderEffectApi::GetShaderEffectFromParams( int paramIndex,