X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fvisuals%2Fnpatch%2Fnpatch-visual.cpp;h=36700fe24db01df9377dc48524c388307b5c1057;hp=31e63445641cfa5ecfcf551842dc8571a2cfb885;hb=cc9366b8f2ebab68ef931414afa0ac8f8ba70199;hpb=190a30974e11c5792335e3b0493bf1c212beec6a diff --git a/dali-toolkit/internal/visuals/npatch/npatch-visual.cpp b/dali-toolkit/internal/visuals/npatch/npatch-visual.cpp index 31e6344..36700fe 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 @@ -232,7 +234,7 @@ void RegisterStretchProperties( Renderer& renderer, const char * uniformName, co /////////////////NPatchVisual//////////////// -NPatchVisualPtr NPatchVisual::New( VisualFactoryCache& factoryCache, const std::string& imageUrl, const Property::Map& properties ) +NPatchVisualPtr NPatchVisual::New( VisualFactoryCache& factoryCache, const VisualUrl& imageUrl, const Property::Map& properties ) { NPatchVisualPtr nPatchVisual( new NPatchVisual( factoryCache ) ); nPatchVisual->mImageUrl = imageUrl; @@ -241,7 +243,7 @@ NPatchVisualPtr NPatchVisual::New( VisualFactoryCache& factoryCache, const std:: return nPatchVisual; } -NPatchVisualPtr NPatchVisual::New( VisualFactoryCache& factoryCache, const std::string& imageUrl ) +NPatchVisualPtr NPatchVisual::New( VisualFactoryCache& factoryCache, const VisualUrl& imageUrl ) { NPatchVisualPtr nPatchVisual( new NPatchVisual( factoryCache ) ); nPatchVisual->mImageUrl = imageUrl; @@ -252,8 +254,8 @@ NPatchVisualPtr NPatchVisual::New( VisualFactoryCache& factoryCache, const std:: NPatchVisualPtr NPatchVisual::New( VisualFactoryCache& factoryCache, NinePatchImage image ) { NPatchVisualPtr nPatchVisual( new NPatchVisual( factoryCache ) ); - nPatchVisual->mImageUrl = image.GetUrl(); - + VisualUrl visualUrl( image.GetUrl() ); + nPatchVisual->mImageUrl = visualUrl; return nPatchVisual; } @@ -261,10 +263,11 @@ void NPatchVisual::GetNaturalSize( Vector2& naturalSize ) { naturalSize.x = 0u; naturalSize.y = 0u; + // load now if not already loaded - if( NPatchLoader::UNINITIALIZED_ID == mId ) + if( NPatchLoader::UNINITIALIZED_ID == mId && mImageUrl.IsLocal() ) { - mId = mLoader.Load( mImageUrl ); + mId = mLoader.Load( mImageUrl.GetUrl(), mBorder ); } const NPatchLoader::Data* data; if( mLoader.GetNPatchData( mId, data ) ) @@ -283,14 +286,28 @@ 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 ) { // load when first go on stage - if( NPatchLoader::UNINITIALIZED_ID == mId ) + if( NPatchLoader::UNINITIALIZED_ID == mId && mImageUrl.IsLocal() ) { - mId = mLoader.Load( mImageUrl ); + mId = mLoader.Load( mImageUrl.GetUrl(), mBorder ); } Geometry geometry = CreateGeometry(); @@ -319,9 +336,10 @@ void NPatchVisual::OnSetTransform() void NPatchVisual::DoCreatePropertyMap( Property::Map& map ) const { map.Clear(); - map.Insert( Toolkit::DevelVisual::Property::TYPE, Toolkit::Visual::IMAGE ); - map.Insert( Toolkit::ImageVisual::Property::URL, mImageUrl ); + map.Insert( Toolkit::DevelVisual::Property::TYPE, Toolkit::DevelVisual::N_PATCH ); + map.Insert( Toolkit::ImageVisual::Property::URL, mImageUrl.GetUrl() ); map.Insert( Toolkit::ImageVisual::Property::BORDER_ONLY, mBorderOnly ); + map.Insert( Toolkit::DevelImageVisual::Property::BORDER, mBorder ); } void NPatchVisual::DoCreateInstancePropertyMap( Property::Map& map ) const @@ -334,7 +352,8 @@ NPatchVisual::NPatchVisual( VisualFactoryCache& factoryCache ) mLoader( factoryCache.GetNPatchLoader() ), mImageUrl(), mId( NPatchLoader::UNINITIALIZED_ID ), - mBorderOnly( false ) + mBorderOnly( false ), + mBorder() { } @@ -473,7 +492,7 @@ void NPatchVisual::ApplyTextureAndUniforms() } else { - DALI_LOG_ERROR("The N patch image '%s' is not a valid N patch image\n", mImageUrl.c_str() ); + DALI_LOG_ERROR("The N patch image '%s' is not a valid N patch image\n", mImageUrl.GetUrl().c_str() ); TextureSet textureSet = TextureSet::New(); mImpl->mRenderer.SetTextures( textureSet ); Image croppedImage = VisualFactoryCache::GetBrokenVisualImage();