X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fvisuals%2Fvisual-factory-impl.h;h=030512edecaf6dfed20c962538139056eb0882ba;hp=484a688ca3f66d18c7bd36411e85833b34613ae2;hb=5c827a7125b3c0420ba39766cbbcb0ee3eb8fccf;hpb=e6757fc2f8c05d6da32f329a874b0ae129abf3d4 diff --git a/dali-toolkit/internal/visuals/visual-factory-impl.h b/dali-toolkit/internal/visuals/visual-factory-impl.h index 484a688..030512e 100644 --- a/dali-toolkit/internal/visuals/visual-factory-impl.h +++ b/dali-toolkit/internal/visuals/visual-factory-impl.h @@ -23,6 +23,7 @@ // INTERNAL INCLUDES #include #include +#include namespace Dali { @@ -65,7 +66,6 @@ public: */ Toolkit::Visual::Base CreateVisual( const std::string& image, ImageDimensions size ); - protected: /** @@ -91,6 +91,54 @@ private: bool mDebugEnabled; }; +/** + * @brief Template to allow discard old visual, 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 visual will be replaced + * @param[in,out] visual The visual to be replaced + * @param[in] param0 First template based argument passed to the visual factory + * @param[in] param1 Second template based argument passed to the visual factory + */ +template< class ParameterType0, class ParameterType1 > +void InitializeVisual( Actor& actor, Toolkit::Visual::Base& visual, ParameterType0& param0, ParameterType1& param1 ) +{ + if( actor ) + { + Toolkit::GetImplementation(visual).SetOffStage( actor ); + } + visual = Toolkit::VisualFactory::Get().CreateVisual( param0, param1 ); + if( visual && actor && actor.OnStage() ) + { + Toolkit::GetImplementation(visual).SetOnStage(actor); + } +} + +/** + * @brief Template to allow discard old visual, 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 visual will be replaced + * @param[in,out] visual The visual to be replaced + * @param[in] param Template based argument passed to the visual factory + */ +template< class ParameterType > +void InitializeVisual( Actor& actor, Toolkit::Visual::Base& visual, ParameterType& param ) +{ + if( actor && visual ) + { + Toolkit::GetImplementation(visual).SetOffStage( actor ); + } + visual = Toolkit::VisualFactory::Get().CreateVisual( param ); + if( visual && actor && actor.OnStage() ) + { + Toolkit::GetImplementation(visual).SetOnStage(actor); + } +} + } // namespace Internal inline const Internal::VisualFactory& GetImplementation(const Toolkit::VisualFactory& factory)