X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;ds=sidebyside;f=dali-toolkit%2Finternal%2Fvisuals%2Fnpatch%2Fnpatch-visual.cpp;h=9b94eb544562a84bf789488a7e22cafc080edb96;hb=9455df45d5cb37bb71a34334e1c9dc8a96683f20;hp=b2f0cbb567e8ac070b8dc6f50ab8574728c37389;hpb=139f1932acd42bbc9ad3c89c86d4f500052e1ef1;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/visuals/npatch/npatch-visual.cpp b/dali-toolkit/internal/visuals/npatch/npatch-visual.cpp index b2f0cbb..9b94eb5 100644 --- a/dali-toolkit/internal/visuals/npatch/npatch-visual.cpp +++ b/dali-toolkit/internal/visuals/npatch/npatch-visual.cpp @@ -27,6 +27,7 @@ // INTERNAL INCLUDES #include #include +#include #include #include #include @@ -46,7 +47,8 @@ namespace Internal namespace { -const char * const BORDER_ONLY("borderOnly"); +const char * const BORDER_ONLY( "borderOnly" ); +const char * const BORDER( "border" ); const char* VERTEX_SHADER = DALI_COMPOSE_SHADER( attribute mediump vec2 aPosition;\n @@ -132,11 +134,12 @@ const char* FRAGMENT_SHADER = DALI_COMPOSE_SHADER( varying mediump vec2 vTexCoord;\n uniform sampler2D sTexture;\n uniform lowp vec4 uColor;\n - uniform lowp vec4 mixColor;\n + uniform lowp vec3 mixColor;\n + uniform lowp float opacity;\n uniform lowp float preMultipliedAlpha;\n lowp vec4 visualMixColor()\n {\n - return vec4( mixColor.rgb * mix( 1.0, mixColor.a, preMultipliedAlpha ), mixColor.a );\n + return vec4( mixColor * mix( 1.0, opacity, preMultipliedAlpha ), opacity );\n }\n void main()\n {\n @@ -263,7 +266,7 @@ void NPatchVisual::GetNaturalSize( Vector2& naturalSize ) // load now if not already loaded if( NPatchLoader::UNINITIALIZED_ID == mId ) { - mId = mLoader.Load( mImageUrl ); + mId = mLoader.Load( mImageUrl, mBorder ); } const NPatchLoader::Data* data; if( mLoader.GetNPatchData( mId, data ) ) @@ -282,6 +285,20 @@ void NPatchVisual::DoSetProperties( const Property::Map& propertyMap ) { borderOnlyValue->Get( mBorderOnly ); } + + Property::Value* borderValue = propertyMap.Find( Toolkit::DevelImageVisual::Property::BORDER, BORDER ); + if( borderValue && ! borderValue->Get( mBorder ) ) // If value exists and is rect, just set mBorder + { + // Not a rect so try vector4 + Vector4 border; + if( borderValue->Get( border ) ) + { + mBorder.left = static_cast< int >( border.x ); + mBorder.right = static_cast< int >( border.y ); + mBorder.bottom = static_cast< int >( border.z ); + mBorder.top = static_cast< int >( border.w ); + } + } } void NPatchVisual::DoSetOnStage( Actor& actor ) @@ -289,7 +306,7 @@ void NPatchVisual::DoSetOnStage( Actor& actor ) // load when first go on stage if( NPatchLoader::UNINITIALIZED_ID == mId ) { - mId = mLoader.Load( mImageUrl ); + mId = mLoader.Load( mImageUrl, mBorder ); } Geometry geometry = CreateGeometry(); @@ -318,9 +335,15 @@ void NPatchVisual::OnSetTransform() void NPatchVisual::DoCreatePropertyMap( Property::Map& map ) const { map.Clear(); - map.Insert( Toolkit::DevelVisual::Property::TYPE, Toolkit::Visual::IMAGE ); + map.Insert( Toolkit::DevelVisual::Property::TYPE, Toolkit::DevelVisual::N_PATCH ); map.Insert( Toolkit::ImageVisual::Property::URL, mImageUrl ); map.Insert( Toolkit::ImageVisual::Property::BORDER_ONLY, mBorderOnly ); + map.Insert( Toolkit::DevelImageVisual::Property::BORDER, mBorder ); +} + +void NPatchVisual::DoCreateInstancePropertyMap( Property::Map& map ) const +{ + // Do nothing } NPatchVisual::NPatchVisual( VisualFactoryCache& factoryCache ) @@ -328,7 +351,8 @@ NPatchVisual::NPatchVisual( VisualFactoryCache& factoryCache ) mLoader( factoryCache.GetNPatchLoader() ), mImageUrl(), mId( NPatchLoader::UNINITIALIZED_ID ), - mBorderOnly( false ) + mBorderOnly( false ), + mBorder() { }