-#ifndef __DALI_TOOLKIT_RENDERER_FACTORY_H__
-#define __DALI_TOOLKIT_RENDERER_FACTORY_H__
+#ifndef DALI_TOOLKIT_VISUAL_FACTORY_H
+#define DALI_TOOLKIT_VISUAL_FACTORY_H
+
/*
- * Copyright (c) 2015 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2019 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/object/property-map.h>
// INTERNAL INCLUDES
-#include <dali-toolkit/devel-api/visual-factory/visual.h>
+#include <dali-toolkit/devel-api/visual-factory/visual-base.h>
namespace Dali
{
class Image;
-class Vector4;
+struct Vector4;
namespace Toolkit
{
/**
* @brief VisualFactory is a singleton object that provides and shares visuals between controls
*
- * By setting environment variable 'DALI_DEBUG_RENDERING', all concrete renderer is replaced with the debug renderer which renders a quad wireframe.
+ * By setting environment variable 'DALI_DEBUG_RENDERING', a debug visual is used which renders a quad wireframe.
*
- * The renderer type is required in the property map for requesting a control renderer.
+ * The visual type is required in the property map for requesting a visual.
*
- * | %Property Name | Type |
- * |--------------------------|------------------|
- * | rendererType | STRING |
+ * | %Property Name | Type |
+ * |--------------------------|-------------------|
+ * | visualType | INTEGER or STRING |
+ * | shader | MAP |
*/
-class DALI_IMPORT_API VisualFactory : public BaseHandle
+class DALI_TOOLKIT_API VisualFactory : public BaseHandle
{
public:
VisualFactory& operator=( const VisualFactory& handle );
/**
- * @brief Request the control renderer
+ * @brief Request the visual
*
- * @param[in] propertyMap The map contains the properties required by the control renderer
- * Depends on the content of the map, different kind of renderer would be returned.
- * @return The pointer pointing to control renderer
+ * @param[in] propertyMap The map contains the properties required by the visual.
+ * The content of the map determines the type of visual that will be returned.
+ * @return The handle to the created visual
*/
- Visual CreateVisual( const Property::Map& propertyMap );
+ Visual::Base CreateVisual( const Property::Map& propertyMap );
/**
- * @brief Request the control renderer to render the image.
+ * @brief Request the visual to render the image.
*
* @param[in] image The image to be rendered.
- * @return The pointer pointing to the control renderer
+ * @return The pointer pointing to the visual
*/
- Visual CreateVisual( const Image& image );
+ Visual::Base CreateVisual( const Image& image );
/**
- * @brief Request the control renderer to render the given resource at the url.
+ * @brief Request the visual to render the given resource at the url.
*
* @param[in] url The URL to the resource to be rendered.
* @param[in] size The width and height to fit the loaded image to.
- * @return The pointer pointing to the control renderer
+ * @return The pointer pointing to the visual
+ */
+ Visual::Base CreateVisual( const std::string& url, ImageDimensions size );
+
+ /**
+ * @brief Enable or disable premultiplying alpha in images and image visuals.
+ *
+ * The default is to enable pre-multiplication on load.
+ *
+ * Applications that have assets with pre-multiplied alpha already applied should turn this option off.
+ *
+ * @param[in] preMultiply True if loaded images for image visuals should have alpha multiplied into the color
+ * channels.
*/
- Visual CreateVisual( const std::string& url, ImageDimensions size );
+ void SetPreMultiplyOnLoad( bool preMultiply );
+
+ /**
+ * @brief Get the setting for automatically pre-multiplying image visual images on load.
+ *
+ * @return True if loaded images have pre-multiplied alpha applied on load, false otherwise.
+ */
+ bool GetPreMultiplyOnLoad() const;
private:
};
-
-/**
- * @brief Template to allow discard old renderer, get new one and set it on stage if possible
- *
- * @tparam ParameterType0 The type of first argument passed to the CreateVisual()
- * @tparam ParameterType1 The type of second argument passed to the CreateVisual()
- * @SINCE_1_0.39
- * @param[in] actor Actor for which the renderer will be replaced
- * @param[in,out] renderer The renderer object to be replaced
- * @param[in] param0 First template based argument passed to the renderer factory
- * @param[in] param1 Second template based argument passed to the renderer factory
- */
-template< class ParameterType0, class ParameterType1 >
-void InitializeVisual( Actor& actor, Visual& renderer, ParameterType0& param0, ParameterType1& param1 )
-{
- renderer.RemoveAndReset( actor );
- renderer = Toolkit::VisualFactory::Get().CreateVisual( param0, param1 );
- if( renderer && actor && actor.OnStage() )
- {
- renderer.SetOnStage( actor );
- }
-}
-
-/**
- * @brief Template to allow discard old renderer, get new one and set it on stage if possible
- *
- * @tparam ParameterType The type of argument passed to the CreateVisual()
- * @SINCE_1_0.39
- * @param[in] actor Actor for which the renderer will be replaced
- * @param[in,out] renderer The renderer object to be replaced
- * @param[in] param Template based argument passed to the renderer factory
- */
-template< class ParameterType >
-void InitializeVisual( Actor& actor, Visual& renderer, ParameterType& param )
-{
- renderer.RemoveAndReset( actor );
- renderer = Toolkit::VisualFactory::Get().CreateVisual( param );
- if( renderer && actor && actor.OnStage() )
- {
- renderer.SetOnStage( actor );
- }
-}
-
} // namespace Toolkit
} // namespace Dali
-
-#endif /* __DALI_TOOLKIT_RENDERER_FACTORY_H__ */
+#endif // DALI_TOOLKIT_VISUAL_FACTORY_H