From b757f0c9eaee87acfe99bdb2edc57424f62fdf41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mart=C3=ADn=20Lucas=20Golini?= Date: Tue, 21 Apr 2020 03:59:23 -0300 Subject: [PATCH] Optimizing CSS vars --- include/eepp/ui/css/animationdefinition.hpp | 2 +- include/eepp/ui/css/stylesheetproperty.hpp | 10 +++ include/eepp/ui/css/transitiondefinition.hpp | 2 +- include/eepp/ui/uistyle.hpp | 7 +- projects/linux/ee.creator.user | 4 +- src/eepp/ui/css/animationdefinition.cpp | 14 ++-- src/eepp/ui/css/stylesheetproperty.cpp | 75 +++++++++++++++++--- src/eepp/ui/css/transitiondefinition.cpp | 26 +++---- src/eepp/ui/uistyle.cpp | 68 +++++------------- 9 files changed, 120 insertions(+), 88 deletions(-) diff --git a/include/eepp/ui/css/animationdefinition.hpp b/include/eepp/ui/css/animationdefinition.hpp index 0033eab60..d60d55aab 100644 --- a/include/eepp/ui/css/animationdefinition.hpp +++ b/include/eepp/ui/css/animationdefinition.hpp @@ -15,7 +15,7 @@ namespace EE { namespace UI { namespace CSS { class EE_API AnimationDefinition { public: static std::unordered_map - parseAnimationProperties( const std::vector& stylesheetProperties ); + parseAnimationProperties( const std::vector& stylesheetProperties ); /* https://developer.mozilla.org/en-US/docs/Web/CSS/animation-direction */ enum AnimationDirection { diff --git a/include/eepp/ui/css/stylesheetproperty.hpp b/include/eepp/ui/css/stylesheetproperty.hpp index 1cf91da39..d9732ce86 100644 --- a/include/eepp/ui/css/stylesheetproperty.hpp +++ b/include/eepp/ui/css/stylesheetproperty.hpp @@ -25,6 +25,11 @@ namespace EE { namespace UI { namespace CSS { class PropertyDefinition; class ShorthandDefinition; +struct VariableFunctionCache { + std::string definition; + std::vector variableList; +}; + class EE_API StyleSheetProperty { public: StyleSheetProperty(); @@ -167,6 +172,8 @@ class EE_API StyleSheetProperty { const Uint32& getValueHash() const; + const std::vector& getVarCache() const; + protected: std::string mName; Uint32 mNameHash; @@ -180,6 +187,7 @@ class EE_API StyleSheetProperty { const PropertyDefinition* mPropertyDefinition; const ShorthandDefinition* mShorthandDefinition; std::vector mIndexedProperty; + std::vector mVarCache; explicit StyleSheetProperty( const bool& isVolatile, const PropertyDefinition* definition, const std::string& value, const Uint32& specificity = 0, @@ -188,6 +196,8 @@ class EE_API StyleSheetProperty { void cleanValue(); void checkImportant(); void createIndexed(); + void checkVars(); + std::vector checkVars( const std::string& value ); }; typedef std::map StyleSheetProperties; diff --git a/include/eepp/ui/css/transitiondefinition.hpp b/include/eepp/ui/css/transitiondefinition.hpp index 31fb0198e..9962831a0 100644 --- a/include/eepp/ui/css/transitiondefinition.hpp +++ b/include/eepp/ui/css/transitiondefinition.hpp @@ -15,7 +15,7 @@ namespace EE { namespace UI { namespace CSS { class EE_API TransitionDefinition { public: static std::map - parseTransitionProperties( const std::vector& styleSheetProperties ); + parseTransitionProperties( const std::vector& styleSheetProperties ); TransitionDefinition() : timingFunction( Ease::Linear ) {} diff --git a/include/eepp/ui/uistyle.hpp b/include/eepp/ui/uistyle.hpp index 8b6a28621..06c516156 100644 --- a/include/eepp/ui/uistyle.hpp +++ b/include/eepp/ui/uistyle.hpp @@ -64,6 +64,7 @@ class EE_API UIStyle : public UIState { void setDisableAnimations( bool disableAnimations ); const bool& isStructurallyVolatile() const; + protected: UIWidget* mWidget; CSS::StyleSheetStyleVector mCacheableStyles; @@ -71,8 +72,8 @@ class EE_API UIStyle : public UIState { CSS::StyleSheetStyle mElementStyle; CSS::StyleSheetProperties mProperties; CSS::StyleSheetVariables mVariables; - std::vector mTransitionProperties; - std::vector mAnimationProperties; + std::vector mTransitionProperties; + std::vector mAnimationProperties; CSS::TransitionsMap mTransitions; CSS::AnimationsMap mAnimations; std::set mRelatedWidgets; @@ -117,8 +118,6 @@ class EE_API UIStyle : public UIState { void removeAnimation( const CSS::PropertyDefinition* propertyDefinition, const Uint32& propertyIndex ); - - std::string varToVal( const std::string& varDef ); }; }} // namespace EE::UI diff --git a/projects/linux/ee.creator.user b/projects/linux/ee.creator.user index c182b7e4a..12caa2a17 100644 --- a/projects/linux/ee.creator.user +++ b/projects/linux/ee.creator.user @@ -1,6 +1,6 @@ - + EnvironmentId @@ -1531,7 +1531,7 @@ eepp-UIEditor-debug ProjectExplorer.CustomExecutableRunConfiguration - -x assets/layouts/test.xml -c assets/layouts/test.css -u + -x assets/layouts/test_widgets.xml -c assets/ui/breeze.css false true diff --git a/src/eepp/ui/css/animationdefinition.cpp b/src/eepp/ui/css/animationdefinition.cpp index d462e1291..62edc54c4 100644 --- a/src/eepp/ui/css/animationdefinition.cpp +++ b/src/eepp/ui/css/animationdefinition.cpp @@ -8,7 +8,7 @@ bool isTimingFunction( const std::string& str ) { } std::unordered_map AnimationDefinition::parseAnimationProperties( - const std::vector& stylesheetProperties ) { + const std::vector& stylesheetProperties ) { AnimationsMap animations; std::vector names; std::vector