+
+ case Toolkit::ImageVisual::Property::ATLASING:
+ {
+ bool atlasing = false;
+ mAttemptAtlasing = value.Get( atlasing );
+ break;
+ }
+
+ case Toolkit::ImageVisual::Property::ALPHA_MASK_URL:
+ {
+ std::string alphaUrl;
+ if( value.Get( alphaUrl ) )
+ {
+ AllocateMaskData();
+ // Immediately trigger the alpha mask loading (it may just get a cached value)
+ mMaskingData->mAlphaMaskUrl = alphaUrl;
+ TextureManager& textureManager = mFactoryCache.GetTextureManager();
+ mMaskingData->mAlphaMaskId = textureManager.RequestMaskLoad( alphaUrl );
+ }
+ break;
+ }
+
+ case Toolkit::ImageVisual::Property::MASK_CONTENT_SCALE:
+ {
+ float scale;
+ if( value.Get( scale ) )
+ {
+ AllocateMaskData();
+ mMaskingData->mContentScaleFactor = scale;
+ }
+ break;
+ }
+
+ case Toolkit::ImageVisual::Property::CROP_TO_MASK:
+ {
+ bool crop=false;
+ if( value.Get( crop ) )
+ {
+ AllocateMaskData();
+ mMaskingData->mCropToMask = crop;
+ }
+ break;
+ }
+
+ case Toolkit::DevelImageVisual::Property::RELEASE_POLICY:
+ {
+ int releasePolicy;
+ Scripting::GetEnumerationProperty( value, RELEASE_POLICY_TABLE, RELEASE_POLICY_TABLE_COUNT, releasePolicy );
+ mReleasePolicy = DevelImageVisual::ReleasePolicy::Type( releasePolicy );
+ break;
+ }
+
+ case Toolkit::DevelImageVisual::Property::LOAD_POLICY:
+ {
+ int loadPolicy;
+ Scripting::GetEnumerationProperty( value, LOAD_POLICY_TABLE, LOAD_POLICY_TABLE_COUNT, loadPolicy );
+ mLoadPolicy = DevelImageVisual::LoadPolicy::Type( loadPolicy );
+ break;
+ }
+ case Toolkit::DevelImageVisual::Property::ORIENTATION_CORRECTION:
+ {
+ bool orientationCorrection( mOrientationCorrection );
+ if( value.Get( orientationCorrection ) )
+ {
+ mOrientationCorrection = orientationCorrection;
+ }
+ break;
+ }
+ }
+}
+
+void ImageVisual::AllocateMaskData()
+{
+ if( !mMaskingData )
+ {
+ mMaskingData.reset(new TextureManager::MaskingData());