diff options
Diffstat (limited to 'src/styleengine.hh')
-rw-r--r-- | src/styleengine.hh | 27 |
1 files changed, 24 insertions, 3 deletions
diff --git a/src/styleengine.hh b/src/styleengine.hh index af615a44..94792250 100644 --- a/src/styleengine.hh +++ b/src/styleengine.hh @@ -4,17 +4,38 @@ #include "dw/core.hh" #include "doctree.hh" -class StyleEngine { +class StyleEngine : public Doctree { private: - dw::core::style::Style *currentStyle; + class Node : public DoctreeNode { + public: + dw::core::style::Style *style; + + + }; + + lout::misc::SimpleVector <Node> *stack; public: StyleEngine (); ~StyleEngine (); + + /* Doctree interface */ + const DoctreeNode *top () { + return stack->getRef (stack->size () - 1); + }; + const DoctreeNode *parent (const DoctreeNode *n) { + if (n->depth > 0) + return stack->getRef (n->depth - 1); + else + return NULL; + }; void startElement (int tag, const char *id, const char *klass, const char *style); void endElement (int tag); - inline dw::core::style::Style *style () { return currentStyle; }; + + inline dw::core::style::Style *style () { + return stack->getRef (stack->size () - 1)->style; + }; }; #endif |