+ mImpl->mTransform.RegisterUniforms( mImpl->mRenderer, Direction::LEFT_TO_RIGHT );
+ }
+}
+
+void NPatchVisual::DoCreatePropertyMap( Property::Map& map ) const
+{
+ map.Clear();
+ bool sync = IsSynchronousLoadingRequired();
+ map.Insert( Toolkit::ImageVisual::Property::SYNCHRONOUS_LOADING, sync );
+ map.Insert( Toolkit::Visual::Property::TYPE, Toolkit::Visual::N_PATCH );
+ map.Insert( Toolkit::ImageVisual::Property::URL, mImageUrl.GetUrl() );
+ map.Insert( Toolkit::ImageVisual::Property::BORDER_ONLY, mBorderOnly );
+ map.Insert( Toolkit::ImageVisual::Property::BORDER, mBorder );
+ map.Insert( Toolkit::ImageVisual::Property::RELEASE_POLICY, mReleasePolicy );
+
+ if( mAuxiliaryUrl.IsValid() )
+ {
+ map.Insert( Toolkit::DevelImageVisual::Property::AUXILIARY_IMAGE, mAuxiliaryUrl.GetUrl() );
+ map.Insert( Toolkit::DevelImageVisual::Property::AUXILIARY_IMAGE_ALPHA, mAuxiliaryImageAlpha );
+ }
+}
+
+void NPatchVisual::DoCreateInstancePropertyMap( Property::Map& map ) const
+{
+ if( mAuxiliaryUrl.IsValid() )
+ {
+ map.Insert( Toolkit::DevelImageVisual::Property::AUXILIARY_IMAGE, mAuxiliaryUrl.GetUrl() );
+ map.Insert( Toolkit::DevelImageVisual::Property::AUXILIARY_IMAGE_ALPHA, mAuxiliaryImageAlpha );
+ }
+}
+
+NPatchVisual::NPatchVisual( VisualFactoryCache& factoryCache )
+: Visual::Base( factoryCache, Visual::FittingMode::FILL, Toolkit::Visual::N_PATCH ),
+ mPlacementActor(),
+ mLoader( factoryCache.GetNPatchLoader() ),
+ mImageUrl(),
+ mAuxiliaryUrl(),
+ mId(NPatchData::INVALID_NPATCH_DATA_ID),
+ mBorderOnly( false ),
+ mBorder(),
+ mAuxiliaryImageAlpha( 0.0f ),
+ mReleasePolicy( Toolkit::ImageVisual::ReleasePolicy::DETACHED )
+{
+ EnablePreMultipliedAlpha( mFactoryCache.GetPreMultiplyOnLoad() );
+}
+
+NPatchVisual::~NPatchVisual()
+{
+ if((mId != NPatchData::INVALID_NPATCH_DATA_ID) && ( mReleasePolicy != Toolkit::ImageVisual::ReleasePolicy::NEVER ))
+ {
+ mLoader.Remove(mId, this);
+ mId = NPatchData::INVALID_NPATCH_DATA_ID;