diff options
author | Johannes Hofmann <Johannes.Hofmann@gmx.de> | 2010-08-20 23:24:19 +0200 |
---|---|---|
committer | Johannes Hofmann <Johannes.Hofmann@gmx.de> | 2010-08-20 23:24:19 +0200 |
commit | f5c598b518d1f906148534d015f50075d3e8242d (patch) | |
tree | 21dd70add5b366c3dd80641b77f6b18e0baa009e /src/cssparser.hh | |
parent | e98d02a01ffeb18ede86af025e51ae1ec011c75a (diff) | |
parent | 5f0fc0e48b8cbee7e1795935da0abff6627fd498 (diff) |
merge
Diffstat (limited to 'src/cssparser.hh')
-rw-r--r-- | src/cssparser.hh | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/src/cssparser.hh b/src/cssparser.hh new file mode 100644 index 00000000..1e471c68 --- /dev/null +++ b/src/cssparser.hh @@ -0,0 +1,54 @@ +#ifndef __CSSPARSER_HH__ +#define __CSSPARSER_HH__ + +#include "css.hh" +#include "html_common.hh" + +class CssParser { + private: + typedef enum { + CSS_TK_DECINT, CSS_TK_FLOAT, CSS_TK_COLOR, CSS_TK_SYMBOL, + CSS_TK_STRING, CSS_TK_CHAR, CSS_TK_END + } CssTokenType; + + static const int maxStrLen = 256; + CssContext *context; + CssOrigin origin; + + const char *buf; + int buflen, bufptr; + + CssTokenType ttype; + char tval[maxStrLen]; + bool withinBlock; + bool spaceSeparated; /* used when parsing CSS selectors */ + + CssParser(CssContext *context, CssOrigin origin, + const char *buf, int buflen); + int getChar(); + void ungetChar(); + void nextToken(); + bool skipString(int c, const char *string); + bool tokenMatchesProperty(CssPropertyName prop, CssValueType * type); + bool parseValue(CssPropertyName prop, CssValueType type, + CssPropertyValue * val); + bool parseWeight(); + bool parseRgbColorComponent(int32_t *cc, int *percentage); + bool parseRgbColor(int32_t *c); + void parseDeclaration(CssPropertyList * props, + CssPropertyList * importantProps); + bool parseSimpleSelector(CssSimpleSelector *selector); + char *parseUrl(); + void parseImport(DilloHtml *html, DilloUrl *url); + CssSelector *parseSelector(); + void parseRuleset(); + + public: + static CssPropertyList *parseDeclarationBlock(const char *buf, + int buflen); + static void parse(DilloHtml *html, DilloUrl *url, CssContext *context, + const char *buf, int buflen, CssOrigin origin); + static const char *propertyNameString(CssPropertyName name); +}; + +#endif |