Files
eepp/include/eepp/ui/css/stylesheetpropertiesparser.hpp
Martín Lucas Golini fa20d393cd Several performance improvements.
Added events: Node::onIdChange, UIWidget::onClassChange, UIWidget::onTagChange.
UIItemContainer is now a widget (required for CSS).
Fixes in UIListBox and UITable.
CSS::StyleSheetStyle is now stored as a shared pointer.
Fixes in UICheckBox, UIRadioButton, UISlider, UIScrollBar, UITab, UIWinMenu, and more.
Better debug tooltips (now shows padding and margin).
Fix in UISceneNode::loadLayoutNodes, ensures that the current SceneNode is the one that it's loading.
2020-04-16 05:31:43 -03:00

48 lines
1.2 KiB
C++

#ifndef EE_UI_CSS_STYLESHEETPROPERTIESPARSER_HPP
#define EE_UI_CSS_STYLESHEETPROPERTIESPARSER_HPP
#include <eepp/core/string.hpp>
#include <eepp/ui/css/stylesheetproperty.hpp>
#include <eepp/ui/css/stylesheetvariable.hpp>
#include <map>
#include <vector>
namespace EE { namespace UI { namespace CSS {
class EE_API StyleSheetPropertiesParser {
public:
StyleSheetPropertiesParser();
explicit StyleSheetPropertiesParser( const std::string& propsstr );
void parse( const std::string& propsstr );
void print();
const StyleSheetProperties& getProperties() const;
const StyleSheetVariables& getVariables() const;
protected:
enum ReadState { ReadingPropertyName, ReadingPropertyValue, ReadingComment };
ReadState mPrevRs;
StyleSheetProperties mProperties;
StyleSheetVariables mVariables;
int readPropertyName( ReadState& rs, std::size_t pos, std::string& buffer,
const std::string& str );
int readPropertyValue( ReadState& rs, std::size_t pos, std::string& buffer,
const std::string& str );
int readComment( ReadState& rs, std::size_t pos, std::string& buffer, const std::string& str );
void addProperty( std::string name, std::string value );
};
}}} // namespace EE::UI::CSS
#endif