#define DALI_TOOLKIT_INTERNAL_IMAGE_VISUAL_H
/*
- * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2022 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.
// INTERNAL INCLUDES
#include <dali-toolkit/devel-api/image-loader/atlas-upload-observer.h>
#include <dali-toolkit/devel-api/visuals/image-visual-properties-devel.h>
-#include <dali-toolkit/internal/visuals/texture-upload-observer.h>
+#include <dali-toolkit/internal/texture-manager/texture-upload-observer.h>
#include <dali-toolkit/internal/visuals/visual-base-impl.h>
#include <dali-toolkit/internal/visuals/visual-url.h>
#include <dali-toolkit/public-api/visuals/image-visual-properties.h>
void OnSetTransform() override;
/**
- * @copydoc Visual::Base::IsResourceReady
- */
- bool IsResourceReady() const override;
-
- /**
* @copydoc Visual::Base::UpdateShader
*/
void UpdateShader() override;
void UploadCompleted() override;
/**
- * @copydoc TextureUploadObserver::UploadCompleted
+ * @copydoc TextureUploadObserver::LoadCompleted
*
* 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.
*/
- void UploadComplete(bool success, int32_t textureId, TextureSet textureSet, bool usingAtlas, const Vector4& atlasRectangle, bool preMultiplied) override;
+ void LoadComplete(bool success, TextureInformation textureInformation) override;
private:
/**
- * @copydoc TextureUploadObserver::LoadComplete
- *
- * 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 PixelBuffer loading is finished.
- */
- void LoadComplete(bool loadSuccess, Devel::PixelBuffer pixelBuffer, const VisualUrl& url, bool preMultiplied) override
- {
- }
-
- /**
* Allocate the mask data when a masking property is defined in the property map
*/
void AllocateMaskData();
void RemoveTexture();
/**
+ * @brief Compute texture size
+ */
+ void ComputeTextureSize();
+
+ /**
+ * @brief Compute mask texture ratio
+ * @return The Mask Texture Ratio
+ */
+ Vector2 ComputeMaskTextureRatio();
+
+ /**
* Helper method to set individual values by index key.
* @param[in] index The index key of the value
* @param[in] value The value
*/
void DoSetProperty(Property::Index index, const Property::Value& value);
+ /**
+ * @brief Check whether the mask texture is loaded or not.
+ * If MaskingType is MASKING_ON_LOADING and mask texture is failed to load, update shader.
+ */
+ void CheckMaskTexture();
+
private:
Vector4 mPixelArea;
WeakHandle<Actor> mPlacementActor;
Dali::ImageDimensions mDesiredSize;
TextureManager::TextureId mTextureId;
TextureSet mTextures;
+ Vector2 mTextureSize;
ImageVisualShaderFactory& mImageVisualShaderFactory;