Mercurial > dillo_port1.3
annotate src/styleengine.hh @ 644:9e4ad941cbdc
add wordStyle() method to StyleEngine
author | Johannes Hofmann <Johannes.Hofmann@gmx.de> |
---|---|
date | Thu, 04 Dec 2008 18:39:19 +0100 |
parents | eb0279297fde |
children | ea961706be66 |
rev | line source |
---|---|
497
96713a0f5d8b
css.[ch][ch] -> styleengine.[ch][ch]
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
495
diff
changeset
|
1 #ifndef __STYLEENGINE_HH__ |
96713a0f5d8b
css.[ch][ch] -> styleengine.[ch][ch]
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
495
diff
changeset
|
2 #define __STYLEENGINE_HH__ |
493 | 3 |
4 #include "dw/core.hh" | |
501 | 5 #include "doctree.hh" |
506
03de2284bfa6
switch to original enum names from dillo-0.8.0-css-3
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
503
diff
changeset
|
6 #include "css.hh" |
643
eb0279297fde
hook up <style>...</style> parsing
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
631
diff
changeset
|
7 #include "cssparser.hh" |
493 | 8 |
503
00b31843839b
implement various apply() methods
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
501
diff
changeset
|
9 class StyleEngine : public Doctree { |
493 | 10 private: |
503
00b31843839b
implement various apply() methods
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
501
diff
changeset
|
11 class Node : public DoctreeNode { |
00b31843839b
implement various apply() methods
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
501
diff
changeset
|
12 public: |
00b31843839b
implement various apply() methods
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
501
diff
changeset
|
13 dw::core::style::Style *style; |
644
9e4ad941cbdc
add wordStyle() method to StyleEngine
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
643
diff
changeset
|
14 dw::core::style::Style *wordStyle; |
509
fd2454cd0120
pass Layout to StyleEngine
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
506
diff
changeset
|
15 const char *styleAttribute; |
615
d0694361ecd0
add workaround for table row coloring
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
598
diff
changeset
|
16 bool inheritBackgroundColor; |
503
00b31843839b
implement various apply() methods
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
501
diff
changeset
|
17 }; |
00b31843839b
implement various apply() methods
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
501
diff
changeset
|
18 |
509
fd2454cd0120
pass Layout to StyleEngine
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
506
diff
changeset
|
19 dw::core::Layout *layout; |
503
00b31843839b
implement various apply() methods
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
501
diff
changeset
|
20 lout::misc::SimpleVector <Node> *stack; |
509
fd2454cd0120
pass Layout to StyleEngine
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
506
diff
changeset
|
21 CssContext *cssContext; |
493 | 22 |
590
eb1072890045
setNonCssProperties() -> setNonCssHints()
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
589
diff
changeset
|
23 dw::core::style::Style *style0 (CssPropertyList *nonCssHints = NULL); |
644
9e4ad941cbdc
add wordStyle() method to StyleEngine
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
643
diff
changeset
|
24 dw::core::style::Style *wordStyle0 (CssPropertyList *nonCssHints = NULL); |
509
fd2454cd0120
pass Layout to StyleEngine
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
506
diff
changeset
|
25 void apply (dw::core::style::StyleAttrs *attrs, CssPropertyList *props); |
575
13bbef5403a2
use CssLength in computeValue
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
573
diff
changeset
|
26 int computeValue (CssLength value, dw::core::style::Font *font); |
506
03de2284bfa6
switch to original enum names from dillo-0.8.0-css-3
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
503
diff
changeset
|
27 |
493 | 28 public: |
509
fd2454cd0120
pass Layout to StyleEngine
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
506
diff
changeset
|
29 StyleEngine (dw::core::Layout *layout); |
493 | 30 ~StyleEngine (); |
503
00b31843839b
implement various apply() methods
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
501
diff
changeset
|
31 |
00b31843839b
implement various apply() methods
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
501
diff
changeset
|
32 /* Doctree interface */ |
506
03de2284bfa6
switch to original enum names from dillo-0.8.0-css-3
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
503
diff
changeset
|
33 inline const DoctreeNode *top () { |
503
00b31843839b
implement various apply() methods
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
501
diff
changeset
|
34 return stack->getRef (stack->size () - 1); |
00b31843839b
implement various apply() methods
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
501
diff
changeset
|
35 }; |
506
03de2284bfa6
switch to original enum names from dillo-0.8.0-css-3
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
503
diff
changeset
|
36 |
03de2284bfa6
switch to original enum names from dillo-0.8.0-css-3
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
503
diff
changeset
|
37 inline const DoctreeNode *parent (const DoctreeNode *n) { |
631
4c9f7f03caf0
fix DocTree implementation in StyleEngine
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
615
diff
changeset
|
38 if (n->depth > 1) |
503
00b31843839b
implement various apply() methods
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
501
diff
changeset
|
39 return stack->getRef (n->depth - 1); |
00b31843839b
implement various apply() methods
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
501
diff
changeset
|
40 else |
00b31843839b
implement various apply() methods
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
501
diff
changeset
|
41 return NULL; |
00b31843839b
implement various apply() methods
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
501
diff
changeset
|
42 }; |
493 | 43 |
643
eb0279297fde
hook up <style>...</style> parsing
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
631
diff
changeset
|
44 void parse (const char *buf, int buflen, int order_count, CssOrigin origin); |
598
4ff90b6242f9
fix id, class, style attribute handling
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
590
diff
changeset
|
45 void startElement (int tag); |
4ff90b6242f9
fix id, class, style attribute handling
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
590
diff
changeset
|
46 void setId (const char *id); |
4ff90b6242f9
fix id, class, style attribute handling
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
590
diff
changeset
|
47 void setClass (const char *klass); |
4ff90b6242f9
fix id, class, style attribute handling
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
590
diff
changeset
|
48 void setStyle (const char *style); |
495 | 49 void endElement (int tag); |
598
4ff90b6242f9
fix id, class, style attribute handling
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
590
diff
changeset
|
50 void setPseudo (const char *pseudo); |
590
eb1072890045
setNonCssProperties() -> setNonCssHints()
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
589
diff
changeset
|
51 void setNonCssHints (CssPropertyList *nonCssHints); |
615
d0694361ecd0
add workaround for table row coloring
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
598
diff
changeset
|
52 void inheritBackgroundColor (); |
503
00b31843839b
implement various apply() methods
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
501
diff
changeset
|
53 |
00b31843839b
implement various apply() methods
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
501
diff
changeset
|
54 inline dw::core::style::Style *style () { |
506
03de2284bfa6
switch to original enum names from dillo-0.8.0-css-3
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
503
diff
changeset
|
55 dw::core::style::Style *s = stack->getRef (stack->size () - 1)->style; |
03de2284bfa6
switch to original enum names from dillo-0.8.0-css-3
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
503
diff
changeset
|
56 if (s) |
03de2284bfa6
switch to original enum names from dillo-0.8.0-css-3
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
503
diff
changeset
|
57 return s; |
03de2284bfa6
switch to original enum names from dillo-0.8.0-css-3
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
503
diff
changeset
|
58 else |
03de2284bfa6
switch to original enum names from dillo-0.8.0-css-3
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
503
diff
changeset
|
59 return style0 (); |
503
00b31843839b
implement various apply() methods
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
501
diff
changeset
|
60 }; |
644
9e4ad941cbdc
add wordStyle() method to StyleEngine
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
643
diff
changeset
|
61 inline dw::core::style::Style *wordStyle () { |
9e4ad941cbdc
add wordStyle() method to StyleEngine
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
643
diff
changeset
|
62 dw::core::style::Style *s = stack->getRef (stack->size () - 1)->wordStyle; |
9e4ad941cbdc
add wordStyle() method to StyleEngine
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
643
diff
changeset
|
63 if (s) |
9e4ad941cbdc
add wordStyle() method to StyleEngine
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
643
diff
changeset
|
64 return s; |
9e4ad941cbdc
add wordStyle() method to StyleEngine
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
643
diff
changeset
|
65 else |
9e4ad941cbdc
add wordStyle() method to StyleEngine
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
643
diff
changeset
|
66 return wordStyle0 (); |
9e4ad941cbdc
add wordStyle() method to StyleEngine
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
643
diff
changeset
|
67 }; |
9e4ad941cbdc
add wordStyle() method to StyleEngine
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
643
diff
changeset
|
68 |
493 | 69 }; |
70 | |
71 #endif |