#define DALI_TOOLKIT_INTERNAL_IMAGE_VISUAL_H
/*
- * Copyright (c) 2016 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2017 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
typedef IntrusivePtr< ImageVisual > ImageVisualPtr;
/**
- * The visual which renders an image to the control's quad
+ * The visual which renders an image to a quad geometry
*
* The following properties are optional
*
* | %Property Name | Type |
* |--------------------|-------------------|
* | url | STRING |
+ * | alphaMaskUrl | STRING |
* | fittingMode | INTEGER OR STRING |
* | samplingMode | INTEGER OR STRING |
* | desiredWidth | INTEGER |
* To avoid rendering garbage pixels, renderer should be added to actor after the resources are ready.
* This callback is the place to add the renderer as it would be called once the loading is finished.
*/
- virtual void UploadComplete( bool success, TextureSet textureSet, bool usingAtlas, const Vector4& atlasRectangle );
+ virtual void UploadComplete( bool success, int32_t textureId, TextureSet textureSet, bool usingAtlas, const Vector4& atlasRectangle );
private:
/**
+ * Allocate the mask data when a masking property is defined in the property map
+ */
+ void AllocateMaskData();
+
+ /**
* @brief Applies the image to the texture set used for this renderer
*
* @param[in] image The Image to apply to the texture set used for this renderer
void DoSetProperty( Property::Index index, const Property::Value& value );
private:
+ struct MaskingData
+ {
+ MaskingData( TextureManager& textureManager );
+ ~MaskingData();
+ void SetImage( const std::string& url );
+
+ TextureManager& mTextureManager;
+ VisualUrl mAlphaMaskUrl;
+ TextureManager::TextureId mAlphaMaskId;
+ float mContentScaleFactor;
+ bool mCropToMask;
+ };
Image mImage;
PixelData mPixels;
Vector4 mPixelArea;
WeakHandle<Actor> mPlacementActor;
VisualUrl mImageUrl;
+ MaskingData* mMaskingData;
Dali::ImageDimensions mDesiredSize;
TextureManager::TextureId mTextureId;
bool mTextureLoading:1; ///< True if the texture is being loaded asynchronously, or false when it has loaded.
};
+
+
} // namespace Internal
} // namespace Toolkit