More CSS work.

--HG--
branch : dev-css
This commit is contained in:
Martín Lucas Golini
2018-12-30 03:28:31 -03:00
parent 5d3990ecd7
commit 3962de8e43
54 changed files with 510 additions and 314 deletions

View File

@@ -95,6 +95,8 @@ class NodeAttribute {
int asDpDimensionI( const std::string& defaultValue = "" ) const;
Uint32 asDpDimensionUint( const std::string& defaultValue = "" ) const;
OriginPoint asOriginPoint() const;
BlendMode asBlendMode() const;

View File

@@ -9,15 +9,24 @@ class StyleSheetElement;
class EE_API StyleSheet {
public:
typedef std::map<std::string, StyleSheetNode> StyleSheetNodeList;
StyleSheet();
void addNode( StyleSheetNode node );
void addNode( const StyleSheetNode& node );
void combineNode( const StyleSheetNode& node );
bool isEmpty() const;
void print();
void combineStyleSheet( const StyleSheet& styleSheet );
StyleSheetProperties getElementProperties( StyleSheetElement * element, const std::string& pseudoClass = "" );
std::vector<StyleSheetNode> nodes;
const StyleSheetNodeList& getNodes() const;
protected:
StyleSheetNodeList mNodes;
};
}}}

View File

@@ -8,12 +8,20 @@ namespace EE { namespace UI { namespace CSS {
class EE_API StyleSheetNode {
public:
StyleSheetNode();
explicit StyleSheetNode( const std::string& selector, const StyleSheetProperties& properties );
void print();
StyleSheetSelector selector;
StyleSheetProperties properties;
const StyleSheetSelector& getSelector() const;
const StyleSheetProperties& getProperties() const;
void setProperty( const StyleSheetProperty& property );
protected:
StyleSheetSelector mSelector;
StyleSheetProperties mProperties;
};
}}}

View File

@@ -16,7 +16,8 @@ class EE_API StyleSheetPropertiesParser {
void print();
StyleSheetProperties properties;
const StyleSheetProperties& getProperties() const;
protected:
enum ReadState {
ReadingPropertyName,
@@ -27,6 +28,8 @@ class EE_API StyleSheetPropertiesParser {
ReadState prevRs;
StyleSheetProperties mProperties;
void parse( std::string propsstr );
int readPropertyName( ReadState& rs, std::size_t pos, std::string& buffer, const std::string& str );

View File

@@ -13,9 +13,15 @@ class EE_API StyleSheetProperty {
explicit StyleSheetProperty( const std::string& name, const std::string& value );
std::string name;
std::string value;
Uint32 specificity;
const std::string& getName() const;
const std::string& getValue() const;
const Uint32& getSpecificity() const;
protected:
std::string mName;
std::string mValue;
Uint32 mSpecificity;
};
typedef std::map<std::string, StyleSheetProperty> StyleSheetProperties;

View File

@@ -22,9 +22,11 @@ class EE_API StyleSheetSelector {
SpecificityGlobal = 1
};
StyleSheetSelector();
explicit StyleSheetSelector( const std::string& selectorName );
Uint32 getRequiredFlags();
Uint32 getRequiredFlags() const;
const std::string& getName() const;
@@ -32,28 +34,31 @@ class EE_API StyleSheetSelector {
const std::string getId() const;
const std::vector<std::string> getClasses() const;
const std::vector<std::string>& getClasses() const;
const std::string& getPseudoClass() const;
bool hasTagName();
bool hasTagName() const;
bool hasId();
bool hasId() const;
bool hasClasses();
bool hasClasses() const;
bool hasClass( std::string cls );
bool hasClass( std::string cls ) const;
bool hasPseudoClass();
bool hasPseudoClass() const;
Uint32 getSpecificity();
bool isGlobal() const;
const Uint32& getSpecificity() const;
protected:
std::string name;
std::string tagName;
std::string id;
std::vector<std::string> classes;
std::string pseudoClass;
Uint32 specificity;
std::string mName;
std::string mTagName;
std::string mId;
std::vector<std::string> mClasses;
std::string mPseudoClass;
Uint32 mSpecificity;
bool mGlobal;
void parseSelector( const std::string& selector );
};

View File

@@ -58,8 +58,6 @@ class EE_API UIMenu : public UIWidget {
virtual bool hide();
const Rectf& getPadding() const;
Uint32 getMinRightMargin() const;
void setMinRightMargin(const Uint32 & minRightMargin);
@@ -69,6 +67,8 @@ class EE_API UIMenu : public UIWidget {
void setFontStyleConfig(const UITooltipStyleConfig & fontStyleConfig);
virtual void loadFromXmlNode( const pugi::xml_node& node );
virtual bool setAttribute( const NodeAttribute& attribute, const Uint32& state = UIState::StateFlagNormal );
protected:
friend class UIMenuItem;
friend class UIMenuCheckBox;

View File

@@ -19,11 +19,9 @@ class EE_API UIMenuItem : public UIPushButton {
virtual void setTheme( UITheme * Theme );
protected:
UIMenuItem( const std::string& tag );
explicit UIMenuItem( const std::string& tag );
virtual Uint32 onMouseEnter( const Vector2i &position, const Uint32 flags );
virtual void onStateChange();
};
}}

View File

@@ -42,7 +42,9 @@ class EE_API UISceneNode : public SceneNode {
UIWidget * loadLayoutNodes( pugi::xml_node node, Node * parent );
void setStyleSheet( CSS::StyleSheet styleSheet );
void setStyleSheet( const CSS::StyleSheet& styleSheet );
void combineStyleSheet( const CSS::StyleSheet& styleSheet );
CSS::StyleSheet& getStyleSheet();
@@ -68,6 +70,8 @@ class EE_API UISceneNode : public SceneNode {
bool windowExists( UIWindow * win );
virtual void setInternalSize(const Sizef& size );
void reloadStyle();
};
}}

View File

@@ -5,6 +5,7 @@
#include <eepp/ui/uithemeconfig.hpp>
#include <eepp/ui/uihelper.hpp>
#include <eepp/ui/uiskin.hpp>
#include <eepp/ui/css/stylesheet.hpp>
#include <eepp/system/resourcemanager.hpp>
namespace EE { namespace Graphics {
@@ -27,9 +28,9 @@ class EE_API UITheme : protected ResourceManager<UISkin> {
static UITheme * loadFromTextureAtlas( UITheme * tTheme, Graphics::TextureAtlas * getTextureAtlas );
static UITheme * loadFromDirectroy( UITheme * tTheme, const std::string& Path, const Float& pixelDensity = 1 );
static UITheme * loadFromTextureAtlas( Graphics::TextureAtlas * getTextureAtlas, const std::string& Name, const std::string& NameAbbr );
static UITheme * loadFromTextureAtlas( Graphics::TextureAtlas * getTextureAtlas, const std::string& Name, const std::string NameAbbr );
static UITheme * loadFromDirectroy( UITheme * tTheme, const std::string& Path, const Float& pixelDensity = 1 );
static UITheme * loadFromDirectroy( const std::string& Path, const std::string& Name, const std::string& NameAbbr, const Float& pixelDensity = 1 );
@@ -59,29 +60,24 @@ class EE_API UITheme : protected ResourceManager<UISkin> {
void setFontStyleConfig(UIFontStyleConfig fontConfig);
virtual UITabWidgetStyleConfig getTabWidgetStyleConfig();
virtual UIProgressBarStyleConfig getProgressBarStyleConfig();
virtual UIWinMenuStyleConfig getWinMenuStyleConfig();
virtual UIDropDownListStyleConfig getDropDownListStyleConfig();
virtual UIWindowStyleConfig getWindowStyleConfig();
virtual UIMenuStyleConfig getMenuStyleConfig();
virtual UIPushButtonStyleConfig getPushButtonStyleConfig();
virtual UISliderStyleConfig getSliderStyleConfig();
virtual UITooltipStyleConfig getTooltipStyleConfig();
const CSS::StyleSheet& getStyleSheet() const;
void setStyleSheet(const CSS::StyleSheet & styleSheet);
protected:
std::string mName;
Uint32 mNameHash;
std::string mAbbr;
Graphics::TextureAtlas *mTextureAtlas;
UIFontStyleConfig mFontStyleConfig;
CSS::StyleSheet mStyleSheet;
void setTextureAtlas( Graphics::TextureAtlas * SG );
};

View File

@@ -11,18 +11,8 @@ class EE_API UIThemeDefault : public UITheme {
UIThemeDefault( const std::string& name, const std::string& abbr, Graphics::Font * defaultFont = NULL );
UITabWidgetStyleConfig getTabWidgetStyleConfig();
UIProgressBarStyleConfig getProgressBarStyleConfig();
UIWinMenuStyleConfig getWinMenuStyleConfig();
UIWindowStyleConfig getWindowStyleConfig();
UIMenuStyleConfig getMenuStyleConfig();
UISliderStyleConfig getSliderStyleConfig();
UITooltipStyleConfig getTooltipStyleConfig();
};

View File

@@ -118,7 +118,7 @@ class EE_API UIWidget : public UINode, public CSS::StyleSheetElement {
virtual void popState( const Uint32& State, bool emitEvent = true );
void reloadStyle();
void reloadStyle( const bool& reloadChilds = true );
protected:
friend class UIManager;
friend class UISceneNode;

View File

@@ -34,10 +34,24 @@ class EE_API UIWinMenu : public UIWidget {
void setMarginBetweenButtons(const Uint32 & marginBetweenButtons);
Uint32 getButtonMargin() const;
void setButtonMargin( const Uint32& buttonMargin );
Uint32 getMenuHeight() const;
void setMenuHeight( const Uint32& menuHeight );
Uint32 getFirstButtonMargin() const;
void setFirstButtonMargin( const Uint32& buttonMargin );
UIWinMenuStyleConfig getStyleConfig() const;
void setStyleConfig(const UIWinMenuStyleConfig & styleConfig);
virtual bool setAttribute( const NodeAttribute& attribute, const Uint32& state = UIState::StateFlagNormal );
virtual void loadFromXmlNode( const pugi::xml_node& node );
protected:
typedef std::list< std::pair< UISelectButton *, UIPopUpMenu * > > WinMenuList;
@@ -63,6 +77,8 @@ class EE_API UIWinMenu : public UIWidget {
void unselectButtons();
void destroyMenues();
void autoHeight();
};
}}