From 16ac85de5b8850c16e025162c563cb24daca699f Mon Sep 17 00:00:00 2001 From: lbinria <77280433+lbinria@users.noreply.github.com> Date: Mon, 12 May 2025 15:19:25 +0200 Subject: [PATCH] [Framework] Apply template method design pattern to BaseVisualStyle --- .../src/sofa/component/visual/VisualStyle.cpp | 4 +-- .../src/sofa/component/visual/VisualStyle.h | 4 +-- .../src/sofa/core/visual/BaseVisualStyle.h | 30 +++++++++++++++++-- 3 files changed, 32 insertions(+), 6 deletions(-) diff --git a/Sofa/Component/Visual/src/sofa/component/visual/VisualStyle.cpp b/Sofa/Component/Visual/src/sofa/component/visual/VisualStyle.cpp index 7c94dbcaa6d..23fcf4ac3f4 100644 --- a/Sofa/Component/Visual/src/sofa/component/visual/VisualStyle.cpp +++ b/Sofa/Component/Visual/src/sofa/component/visual/VisualStyle.cpp @@ -60,13 +60,13 @@ VisualStyle::VisualStyle() d_displayFlags.setWidget("widget_displayFlags"); } -void VisualStyle::updateVisualFlags(VisualParams* vparams) +void VisualStyle::doUpdateVisualFlags(VisualParams* vparams) { backupFlags = vparams->displayFlags(); vparams->displayFlags() = sofa::core::visual::merge_displayFlags(backupFlags, d_displayFlags.getValue()); } -void VisualStyle::applyBackupFlags(VisualParams* vparams) +void VisualStyle::doApplyBackupFlags(VisualParams* vparams) { vparams->displayFlags() = backupFlags; } diff --git a/Sofa/Component/Visual/src/sofa/component/visual/VisualStyle.h b/Sofa/Component/Visual/src/sofa/component/visual/VisualStyle.h index 98432dfae1c..2b7217e818c 100644 --- a/Sofa/Component/Visual/src/sofa/component/visual/VisualStyle.h +++ b/Sofa/Component/Visual/src/sofa/component/visual/VisualStyle.h @@ -66,8 +66,8 @@ class SOFA_COMPONENT_VISUAL_API VisualStyle : public sofa::core::visual::BaseVis protected: VisualStyle(); public: - void updateVisualFlags(VisualParams* ) override; - void applyBackupFlags(VisualParams* ) override; + void doUpdateVisualFlags(VisualParams* ) override; + void doApplyBackupFlags(VisualParams* ) override; bool insertInNode(sofa::core::objectmodel::BaseNode* node) override; bool removeInNode(sofa::core::objectmodel::BaseNode* node) override; diff --git a/Sofa/framework/Core/src/sofa/core/visual/BaseVisualStyle.h b/Sofa/framework/Core/src/sofa/core/visual/BaseVisualStyle.h index bfeb50bdd67..f04ffa5ef4b 100644 --- a/Sofa/framework/Core/src/sofa/core/visual/BaseVisualStyle.h +++ b/Sofa/framework/Core/src/sofa/core/visual/BaseVisualStyle.h @@ -41,9 +41,35 @@ class SOFA_CORE_API BaseVisualStyle : public sofa::core::objectmodel::BaseObject BaseVisualStyle() { } ~BaseVisualStyle() override { } + virtual void doUpdateVisualFlags(VisualParams* ) { }; + virtual void doApplyBackupFlags(VisualParams* ) { }; + public: - virtual void updateVisualFlags(VisualParams* ) { }; - virtual void applyBackupFlags(VisualParams* ) { }; + /** + * !!! WARNING since v25.12 !!! + * + * The template method pattern has been applied to this part of the API. + * This method calls the newly introduced method "doUpdateVisualFlags" internally, + * which is the method to override from now on. + * + **/ + virtual void updateVisualFlags(VisualParams* vparams) final { + //TODO (SPRINT SED 2025): Component state mechamism + return this->doUpdateVisualFlags(vparams); + }; + + /** + * !!! WARNING since v25.12 !!! + * + * The template method pattern has been applied to this part of the API. + * This method calls the newly introduced method "doApplyBackupFlags" internally, + * which is the method to override from now on. + * + **/ + virtual void applyBackupFlags(VisualParams* vparams) final { + //TODO (SPRINT SED 2025): Component state mechamism + return this->doApplyBackupFlags(vparams); + }; };