aboutsummaryrefslogtreecommitdiff
path: root/src/cssparser.hh
diff options
context:
space:
mode:
authorJohannes Hofmann <Johannes.Hofmann@gmx.de>2010-08-20 23:24:19 +0200
committerJohannes Hofmann <Johannes.Hofmann@gmx.de>2010-08-20 23:24:19 +0200
commitf5c598b518d1f906148534d015f50075d3e8242d (patch)
tree21dd70add5b366c3dd80641b77f6b18e0baa009e /src/cssparser.hh
parente98d02a01ffeb18ede86af025e51ae1ec011c75a (diff)
parent5f0fc0e48b8cbee7e1795935da0abff6627fd498 (diff)
merge
Diffstat (limited to 'src/cssparser.hh')
-rw-r--r--src/cssparser.hh54
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