X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fvisuals%2Fvisual-factory-impl.h;h=0e4dcb4bd2bed6ef5bd822d12004d7ba1eed2c5c;hb=3ad20543558830da2b46ec83e3be4f8daf77add0;hp=d3a28d0bd545991f6865c07aea8b23c5085a930f;hpb=50f57942b550284ab30d72eb974c2c5e1458f61e;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/visuals/visual-factory-impl.h b/dali-toolkit/internal/visuals/visual-factory-impl.h index d3a28d0..0e4dcb4 100644 --- a/dali-toolkit/internal/visuals/visual-factory-impl.h +++ b/dali-toolkit/internal/visuals/visual-factory-impl.h @@ -2,7 +2,7 @@ #define DALI_TOOLKIT_VISUAL_FACTORY_IMPL_H /* - * Copyright (c) 2016 Samsung Electronics Co., Ltd. + * Copyright (c) 2017 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. @@ -24,6 +24,8 @@ #include #include #include +#include +#include namespace Dali { @@ -35,7 +37,7 @@ namespace Internal { class VisualFactoryCache; -typedef IntrusivePtr VisualFactoryCachePtr; +class ImageVisualShaderFactory; /** * @copydoc Toolkit::VisualFactory @@ -52,20 +54,43 @@ public: VisualFactory( bool debugEnabled ); /** - * @copydoc Toolkit::RenderFactory::CreateVisual( const Property::Map& ) + * @brief StyleChanged callback + * + * @param[in] styleManager Handle for style manager. + * @param[in] type Style change type. + */ + void OnStyleChangedSignal( Toolkit::StyleManager styleManager, StyleChange::Type type ); + + /** + * @copydoc Toolkit::VisualFactory::CreateVisual( const Property::Map& ) */ Toolkit::Visual::Base CreateVisual( const Property::Map& propertyMap ); /** - * @copydoc Toolkit::RenderFactory::CreateVisual( const Image& ) + * @copydoc Toolkit::VisualFactory::CreateVisual( const Image& ) */ Toolkit::Visual::Base CreateVisual( const Image& image ); /** - * @copydoc Toolkit::RenderFactory::CreateVisual( const std::string&, ImageDimensions ) + * @copydoc Toolkit::VisualFactory::CreateVisual( const std::string&, ImageDimensions ) */ Toolkit::Visual::Base CreateVisual( const std::string& image, ImageDimensions size ); + /** + * @copydoc Toolkit::VisualFactory::SetPreMultiplyOnLoad() + */ + void SetPreMultiplyOnLoad( bool preMultiply ); + + /** + * @copydoc Toolkit::VisualFactory::GetPreMultiplyOnLoad() + */ + bool GetPreMultiplyOnLoad() const; + + /** + * @return the reference to texture manager + */ + Internal::TextureManager& GetTextureManager(); + protected: /** @@ -74,21 +99,26 @@ protected: virtual ~VisualFactory(); private: - /** - * Undefined copy constructor. + * Get the factory cache, creating it if necessary. */ - VisualFactory(const VisualFactory&); + Internal::VisualFactoryCache& GetFactoryCache(); /** - * Undefined assignment operator. + * Get the image visual shader factory, creating it if necessary. */ - VisualFactory& operator=(const VisualFactory& rhs); + ImageVisualShaderFactory& GetImageVisualShaderFactory(); -private: + VisualFactory(const VisualFactory&) = delete; + + VisualFactory& operator=(const VisualFactory& rhs) = delete; - VisualFactoryCachePtr mFactoryCache; - bool mDebugEnabled; +private: + std::unique_ptr< VisualFactoryCache > mFactoryCache; + std::unique_ptr< ImageVisualShaderFactory > mImageVisualShaderFactory; + SlotDelegate< VisualFactory > mSlotDelegate; + bool mDebugEnabled:1; + bool mPreMultiplyOnLoad:1; ///< Local store for this flag }; /** @@ -105,7 +135,10 @@ private: template< class ParameterType0, class ParameterType1 > void InitializeVisual( Actor& actor, Toolkit::Visual::Base& visual, ParameterType0& param0, ParameterType1& param1 ) { - visual.RemoveAndReset( actor ); + if( actor ) + { + Toolkit::GetImplementation(visual).SetOffStage( actor ); + } visual = Toolkit::VisualFactory::Get().CreateVisual( param0, param1 ); if( visual && actor && actor.OnStage() ) { @@ -125,7 +158,10 @@ void InitializeVisual( Actor& actor, Toolkit::Visual::Base& visual, ParameterTyp template< class ParameterType > void InitializeVisual( Actor& actor, Toolkit::Visual::Base& visual, ParameterType& param ) { - visual.RemoveAndReset( actor ); + if( actor && visual ) + { + Toolkit::GetImplementation(visual).SetOffStage( actor ); + } visual = Toolkit::VisualFactory::Get().CreateVisual( param ); if( visual && actor && actor.OnStage() ) {