#define DALI_TOOLKIT_INTERNAL_IMAGE_VISUAL_H
/*
- * Copyright (c) 2022 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2024 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.
#include <dali/public-api/common/intrusive-ptr.h>
#include <dali/public-api/images/image-operations.h>
#include <dali/public-api/object/weak-handle.h>
+#include <dali/public-api/rendering/visual-renderer.h>
// 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/image-loader/fast-track-loading-task.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>
*/
Shader GenerateShader() const override;
+ /**
+ * @copydoc Visual::Base::OnGetPropertyObject
+ */
+ Dali::Property OnGetPropertyObject(Dali::Property::Key key) override;
+
public:
/**
* @copydoc AtlasUploadObserver::UploadCompleted
*/
void LoadComplete(bool success, TextureInformation textureInformation) override;
+ /**
+ * @brief Test callback for FastTrackLoadingTask
+ *
+ * @param[in] task The pointer of task who call this callback.
+ */
+ void FastLoadComplete(FastTrackLoadingTaskPtr task);
+
private:
/**
* Allocate the mask data when a masking property is defined in the property map
*/
void CheckMaskTexture();
+ /**
+ * @brief Reset Renderer using empty texture
+ * For drawing empty visual, reset the renderer.
+ */
+ void ResetRenderer();
+
+ /**
+ * @brief Show broken image when image loading is failed.
+ */
+ void ShowBrokenImage();
+
+ /**
+ * @brief Remove current added fast track upload task.
+ */
+ void ResetFastTrackLoadingTask();
+
+ /**
+ * @brief Update geometry information and get the generated result.
+ *
+ * @param[in] textureId Id of texture. It will be used when we use AddOn.
+ * @param[in] createForce True if we need to create geometry forcely. False if we don't re-generate geometry.
+ * @return Generated geometry, or empty handle if we don't need to update geometry.
+ */
+ Geometry GenerateGeometry(TextureManager::TextureId textureId, bool createForce);
+
private:
Vector4 mPixelArea;
+ Property::Index mPixelAreaIndex;
WeakHandle<Actor> mPlacementActor;
VisualUrl mImageUrl;
TextureManager::MaskingDataPointer mMaskingData;
Vector2 mTextureSize;
Vector2 mPlacementActorSize;
+ FastTrackLoadingTaskPtr mFastTrackLoadingTask; ///< For fast track uploading.
+
ImageVisualShaderFactory& mImageVisualShaderFactory;
Dali::FittingMode::Type mFittingMode : 3;
Dali::Toolkit::ImageVisual::ReleasePolicy::Type mReleasePolicy;
Vector4 mAtlasRect;
Dali::ImageDimensions mAtlasRectSize;
- TextureManager::LoadState mLoadState; ///< The texture loading state
- bool mAttemptAtlasing; ///< If true will attempt atlasing, otherwise create unique texture
- bool mOrientationCorrection; ///< true if the image will have it's orientation corrected.
- bool mNeedYuvToRgb{false}; ///< true if we need to convert yuv to rgb.
+ TextureManager::LoadState mLoadState; ///< The texture loading state
+ bool mAttemptAtlasing; ///< If true will attempt atlasing, otherwise create unique texture
+ bool mOrientationCorrection; ///< true if the image will have it's orientation corrected.
+ bool mNeedYuvToRgb{false}; ///< true if we need to convert yuv to rgb.
+ bool mNeedUnifiedYuvAndRgb{false}; ///< true if we need to support both yuv and rgb.
+ bool mEnableBrokenImage{true}; ///< true if enable broken image.
+ bool mUseFastTrackUploading{false}; ///< True if we use fast tack feature.
+ bool mRendererAdded{false}; ///< True if renderer added into actor.
+ bool mUseBrokenImageRenderer{false}; ///< True if renderer changed as broken image.
};
} // namespace Internal