X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fcontrols%2Frenderers%2Fcontrol-renderer-data-impl.cpp;h=168f5791e070d229035a574c94f884af01f5b43f;hb=4d4724513d345467aad5d6ff0ff103b191c32a3f;hp=6a58cfb27b30687ab2a56506f17cf0a8901f620b;hpb=cde5ef8b9c6de8008865e29f3b1acab8f7cd2bbc;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/controls/renderers/control-renderer-data-impl.cpp b/dali-toolkit/internal/controls/renderers/control-renderer-data-impl.cpp index 6a58cfb..168f579 100644 --- a/dali-toolkit/internal/controls/renderers/control-renderer-data-impl.cpp +++ b/dali-toolkit/internal/controls/renderers/control-renderer-data-impl.cpp @@ -38,19 +38,17 @@ namespace { //custom shader const char * const CUSTOM_SHADER( "shader" ); -const char * const CUSTOM_VERTEX_SHADER( "vertex-shader" ); -const char * const CUSTOM_FRAGMENT_SHADER( "fragment-shader" ); -const char * const CUSTOM_SUBDIVIDE_GRID_X( "subdivide-grid-x" ); -const char * const CUSTOM_SUBDIVIDE_GRID_Y( "subdivide-grid-y" ); +const char * const CUSTOM_VERTEX_SHADER( "vertexShader" ); +const char * const CUSTOM_FRAGMENT_SHADER( "fragmentShader" ); +const char * const CUSTOM_SUBDIVIDE_GRID_X( "subdivideGridX" ); +const char * const CUSTOM_SUBDIVIDE_GRID_Y( "subdivideGridY" ); const char * const CUSTOM_SHADER_HINTS( "hints" ); ///< type STRING for a hint from the below hint strings or an ARRAY of of hint strings /** * where hints should be contain strings of the following shader hints: - * "none" | corresponds to HINT_NONE - * "requires-self-depth-test" | corresponds to HINT_REQUIRES_SELF_DEPTH_TEST - * "output-is-transparent" | corresponds to HINT_OUTPUT_IS_TRANSPARENT - * "output-is-opaque" | corresponds to HINT_OUTPUT_IS_OPAQUE - * "modifies-geometry" | corresponds to HINT_MODIFIES_GEOMETRY + * "none" | corresponds to HINT_NONE + * "outputIsTransparent" | corresponds to HINT_OUTPUT_IS_TRANSPARENT + * "modifiesGeometry" | corresponds to HINT_MODIFIES_GEOMETRY */ Shader::ShaderHints HintFromString( std::string hintString ) @@ -59,19 +57,11 @@ Shader::ShaderHints HintFromString( std::string hintString ) { return Shader::HINT_NONE; } - else if( hintString == "requires-self-depth-test" ) - { - return Shader::HINT_REQUIRES_SELF_DEPTH_TEST; - } - else if( hintString == "output-is-transparent" ) + else if( hintString == "outputIsTransparent" ) { return Shader::HINT_OUTPUT_IS_TRANSPARENT; } - else if( hintString == "output-is-opaque" ) - { - return Shader::HINT_OUTPUT_IS_OPAQUE; - } - else if( hintString == "modifies-geometry" ) + else if( hintString == "modifiesGeometry" ) { return Shader::HINT_MODIFIES_GEOMETRY; } @@ -88,7 +78,7 @@ Shader::ShaderHints HintFromString( std::string hintString ) Internal::ControlRenderer::Impl::Impl() : mCustomShader(NULL), mDepthIndex( 0.0f ), - mIsOnStage( false ) + mFlags( 0 ) { } @@ -104,106 +94,90 @@ Internal::ControlRenderer::Impl::CustomShader::CustomShader( const Property::Map SetPropertyMap( map ); } -void Internal::ControlRenderer::Impl::CustomShader::SetPropertyMap( const Property::Map& propertyMap ) +void Internal::ControlRenderer::Impl::CustomShader::SetPropertyMap( const Property::Map& shaderMap ) { - Property::Value* shaderValue = propertyMap.Find( CUSTOM_SHADER ); - if( shaderValue ) + mVertexShader.clear(); + mFragmentShader.clear(); + mGridSize = ImageDimensions( 1, 1 ); + mHints = Shader::HINT_NONE; + + Property::Value* vertexShaderValue = shaderMap.Find( CUSTOM_VERTEX_SHADER ); + if( vertexShaderValue ) { - mVertexShader.clear(); - mFragmentShader.clear(); - mGridSize = ImageDimensions( 1, 1 ); - mHints = Shader::HINT_NONE; + if( !vertexShaderValue->Get( mVertexShader ) ) + { + DALI_LOG_ERROR( "'%s' parameter does not correctly specify a string", CUSTOM_VERTEX_SHADER ); + } + } - Property::Map shaderMap; - if( shaderValue->Get( shaderMap ) ) + Property::Value* fragmentShaderValue = shaderMap.Find( CUSTOM_FRAGMENT_SHADER ); + if( fragmentShaderValue ) + { + if( !fragmentShaderValue->Get( mFragmentShader ) ) { - Property::Value* vertexShaderValue = shaderMap.Find( CUSTOM_VERTEX_SHADER ); - if( vertexShaderValue ) - { - if( !vertexShaderValue->Get( mVertexShader ) ) - { - DALI_LOG_ERROR( "'%s' parameter does not correctly specify a string", CUSTOM_VERTEX_SHADER ); - } - } + DALI_LOG_ERROR( "'%s' parameter does not correctly specify a string", CUSTOM_FRAGMENT_SHADER ); + } + } - Property::Value* fragmentShaderValue = shaderMap.Find( CUSTOM_FRAGMENT_SHADER ); - if( fragmentShaderValue ) - { - if( !fragmentShaderValue->Get( mFragmentShader ) ) - { - DALI_LOG_ERROR( "'%s' parameter does not correctly specify a string", CUSTOM_FRAGMENT_SHADER ); - } - } + Property::Value* subdivideXValue = shaderMap.Find( CUSTOM_SUBDIVIDE_GRID_X ); + if( subdivideXValue ) + { + int subdivideX; + if( !subdivideXValue->Get( subdivideX ) || subdivideX < 1 ) + { + DALI_LOG_ERROR( "'%s' parameter does not correctly specify a value greater than 1", CUSTOM_SUBDIVIDE_GRID_X ); + } + else + { + mGridSize = ImageDimensions( subdivideX, mGridSize.GetY() ); + } + } - Property::Value* subdivideXValue = shaderMap.Find( CUSTOM_SUBDIVIDE_GRID_X ); - if( subdivideXValue ) - { - int subdivideX; - if( !subdivideXValue->Get( subdivideX ) || subdivideX < 1 ) - { - DALI_LOG_ERROR( "'%s' parameter does not correctly specify a value greater than 1", CUSTOM_SUBDIVIDE_GRID_X ); - } - else - { - mGridSize = ImageDimensions( subdivideX, mGridSize.GetY() ); - } - } + Property::Value* subdivideYValue = shaderMap.Find( CUSTOM_SUBDIVIDE_GRID_Y ); + if( subdivideYValue ) + { + int subdivideY; + if( !subdivideYValue->Get( subdivideY ) || subdivideY < 1 ) + { + DALI_LOG_ERROR( "'%s' parameter does not correctly specify a value greater than 1", CUSTOM_SUBDIVIDE_GRID_Y ); + } + else + { + mGridSize = ImageDimensions( mGridSize.GetX(), subdivideY ); + } + } - Property::Value* subdivideYValue = shaderMap.Find( CUSTOM_SUBDIVIDE_GRID_Y ); - if( subdivideYValue ) - { - int subdivideY; - if( !subdivideYValue->Get( subdivideY ) || subdivideY < 1 ) - { - DALI_LOG_ERROR( "'%s' parameter does not correctly specify a value greater than 1", CUSTOM_SUBDIVIDE_GRID_Y ); - } - else - { - mGridSize = ImageDimensions( mGridSize.GetX(), subdivideY ); - } - } + Property::Value* hintsValue = shaderMap.Find( CUSTOM_SHADER_HINTS ); + if( hintsValue ) + { + std::string hintString; + Property::Array hintsArray; - Property::Value* hintsValue = shaderMap.Find( CUSTOM_SHADER_HINTS ); - if( hintsValue ) + if( hintsValue->Get( hintString ) ) + { + mHints = HintFromString( hintString ); + } + else if( hintsValue->Get( hintsArray ) ) + { + int hints = Shader::HINT_NONE; + for( Property::Array::SizeType i = 0; i < hintsArray.Count(); ++i) { - std::string hintString; - Property::Array hintsArray; - - if( hintsValue->Get( hintString ) ) - { - mHints = HintFromString( hintString ); - } - else if( hintsValue->Get( hintsArray ) ) + Property::Value hintValue = hintsArray[ i ]; + if( hintValue.Get( hintString ) ) { - int hints = Shader::HINT_NONE; - for( Property::Array::SizeType i = 0; i < hintsArray.Count(); ++i) - { - Property::Value hintValue = hintsArray[ i ]; - if( hintValue.Get( hintString ) ) - { - hints |= static_cast< int >( HintFromString( hintString ) ); - } - else - { - DALI_LOG_ERROR( "'%s' parameter does not correctly specify an hint string at index %d", CUSTOM_SHADER_HINTS, i ); - } - - mHints = static_cast< Shader::ShaderHints >( hints ); - } + hints |= static_cast< int >( HintFromString( hintString ) ); } else { - DALI_LOG_ERROR( "'%s' parameter does not correctly specify a hint string or an array of hint strings", CUSTOM_SHADER_HINTS ); + DALI_LOG_ERROR( "'%s' parameter does not correctly specify an hint string at index %d", CUSTOM_SHADER_HINTS, i ); } + + mHints = static_cast< Shader::ShaderHints >( hints ); } } else { - //use value with no type to mean reseting the shader back to default - if( shaderValue->GetType() != Dali::Property::NONE ) - { - DALI_LOG_ERROR( "'%s' parameter does not correctly specify a property map", CUSTOM_SHADER ); - } + DALI_LOG_ERROR( "'%s' parameter does not correctly specify a hint string or an array of hint strings", CUSTOM_SHADER_HINTS ); } } }