#define DALI_TOOLKIT_VISUAL_FACTORY_IMPL_H
/*
- * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2023 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.
*/
// EXTERNAL INCLUDES
+#include <dali/integration-api/shader-precompiler.h>
+#include <dali/public-api/common/vector-wrapper.h>
#include <dali/public-api/object/base-object.h>
// INTERNAL INCLUDES
-#include <dali-toolkit/devel-api/styling/style-manager-devel.h>
#include <dali-toolkit/devel-api/visual-factory/visual-base.h>
#include <dali-toolkit/devel-api/visual-factory/visual-factory.h>
#include <dali-toolkit/internal/visuals/visual-base-impl.h>
{
class VisualFactoryCache;
class ImageVisualShaderFactory;
+class TextVisualShaderFactory;
/**
* @copydoc Toolkit::VisualFactory
void OnStyleChangedSignal(Toolkit::StyleManager styleManager, StyleChange::Type type);
/**
+ * @brief BrokenImageChanged callback
+ *
+ * @param[in] styleManager Handle for style manager.
+ */
+ void OnBrokenImageChangedSignal(Toolkit::StyleManager styleManager);
+
+ /**
* @copydoc Toolkit::VisualFactory::CreateVisual( const Property::Map& )
*/
Toolkit::Visual::Base CreateVisual(const Property::Map& propertyMap);
bool GetPreMultiplyOnLoad() const;
/**
+ * @copydoc Toolkit::VisualFactory::DiscardVisual()
+ */
+ void DiscardVisual(Toolkit::Visual::Base visual);
+
+ /**
+ * @copydoc Toolkit::VisualFactory::UsePreCompiledShader()
+ */
+ void UsePreCompiledShader();
+
+ /**
* @return the reference to texture manager
*/
Internal::TextureManager& GetTextureManager();
private:
/**
* @brief Set the Broken Image url
- *
+ * @param[in] styleManager The instance of StyleManager
*/
void SetBrokenImageUrl(Toolkit::StyleManager& styleManager);
*/
ImageVisualShaderFactory& GetImageVisualShaderFactory();
+ /**
+ * Get the text visual shader factory, creating it if necessary.
+ */
+ TextVisualShaderFactory& GetTextVisualShaderFactory();
+
+ /**
+ * @brief Callbacks called for clear discarded visuals.
+ */
+ void OnDiscardCallback();
+
+ /**
+ * @brief Register idle callback for discard visuals if need.
+ */
+ void RegisterDiscardCallback();
+
VisualFactory(const VisualFactory&) = delete;
VisualFactory& operator=(const VisualFactory& rhs) = delete;
private:
std::unique_ptr<VisualFactoryCache> mFactoryCache;
std::unique_ptr<ImageVisualShaderFactory> mImageVisualShaderFactory;
+ std::unique_ptr<TextVisualShaderFactory> mTextVisualShaderFactory;
SlotDelegate<VisualFactory> mSlotDelegate;
- bool mDebugEnabled : 1;
- bool mPreMultiplyOnLoad : 1; ///< Local store for this flag
+ CallbackBase* mIdleCallback;
+
+ using DiscardedVisualContainer = std::vector<Toolkit::Visual::Base>;
+ DiscardedVisualContainer mDiscardedVisuals{};
+
+ bool mDebugEnabled : 1;
+ bool mPreMultiplyOnLoad : 1; ///< Local store for this flag
+ bool mPrecompiledShaderRequested{false};
};
/**