#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/public-api/common/vector-wrapper.h>
#include <dali/public-api/object/base-object.h>
+#include <dali/integration-api/adaptor-framework/shader-precompiler.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
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();
void SetBrokenImageUrl(Toolkit::StyleManager& styleManager);
/**
+ * @brief Get the default shader source.
+ * @param[in] shaders shaderList for precompile
+ */
+ void GetPreCompiledShader(RawShaderData& shaders);
+
+ /**
* Get the factory cache, creating it if necessary.
*/
Internal::VisualFactoryCache& GetFactoryCache();
*/
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;
+ CallbackBase* mIdleCallback;
+ using DiscardedVisualContainer = std::vector<Toolkit::Visual::Base>;
+ DiscardedVisualContainer mDiscardedVisuals{};
bool mDebugEnabled : 1;
bool mPreMultiplyOnLoad : 1; ///< Local store for this flag
+ bool mPrecompiledShaderRequested : 1;
};
/**