2 #include "el_table.h"
\r
3 #include "document.h"
\r
4 #include "iterators.h"
\r
8 litehtml::el_table::el_table(const std::shared_ptr<litehtml::document>& doc) : html_tag(doc)
\r
10 m_border_spacing_x = 0;
\r
11 m_border_spacing_y = 0;
\r
12 m_border_collapse = border_collapse_separate;
\r
16 litehtml::el_table::~el_table()
\r
21 bool litehtml::el_table::appendChild(const litehtml::element::ptr& el)
\r
23 if(!el) return false;
\r
24 if(!t_strcmp(el->get_tagName(), _t("tbody")) || !t_strcmp(el->get_tagName(), _t("thead")) || !t_strcmp(el->get_tagName(), _t("tfoot")))
\r
26 return html_tag::appendChild(el);
\r
31 void litehtml::el_table::parse_styles(bool is_reparse)
\r
33 html_tag::parse_styles(is_reparse);
\r
35 m_border_collapse = (border_collapse) value_index(get_style_property(_t("border-collapse"), true, _t("separate")), border_collapse_strings, border_collapse_separate);
\r
37 if(m_border_collapse == border_collapse_separate)
\r
39 m_css_border_spacing_x.fromString(get_style_property(_t("-litehtml-border-spacing-x"), true, _t("0px")));
\r
40 m_css_border_spacing_y.fromString(get_style_property(_t("-litehtml-border-spacing-y"), true, _t("0px")));
\r
42 int fntsz = get_font_size();
\r
43 document::ptr doc = get_document();
\r
44 m_border_spacing_x = doc->cvt_units(m_css_border_spacing_x, fntsz);
\r
45 m_border_spacing_y = doc->cvt_units(m_css_border_spacing_y, fntsz);
\r
48 m_border_spacing_x = 0;
\r
49 m_border_spacing_y = 0;
\r
50 m_padding.bottom = 0;
\r
53 m_padding.right = 0;
\r
54 m_css_padding.bottom.set_value(0, css_units_px);
\r
55 m_css_padding.top.set_value(0, css_units_px);
\r
56 m_css_padding.left.set_value(0, css_units_px);
\r
57 m_css_padding.right.set_value(0, css_units_px);
\r
61 void litehtml::el_table::parse_attributes()
\r
63 const tchar_t* str = get_attr(_t("width"));
\r
66 m_style.add_property(_t("width"), str, 0, false);
\r
69 str = get_attr(_t("align"));
\r
72 int align = value_index(str, _t("left;center;right"));
\r
76 m_style.add_property(_t("margin-left"), _t("auto"), 0, false);
\r
77 m_style.add_property(_t("margin-right"), _t("auto"), 0, false);
\r
80 m_style.add_property(_t("margin-left"), _t("auto"), 0, false);
\r
81 m_style.add_property(_t("margin-right"), _t("0"), 0, false);
\r
86 str = get_attr(_t("cellspacing"));
\r
92 m_style.add_property(_t("border-spacing"), val.c_str(), 0, false);
\r
95 str = get_attr(_t("border"));
\r
98 m_style.add_property(_t("border-width"), str, 0, false);
\r
101 str = get_attr(_t("bgcolor"));
\r
104 m_style.add_property(_t("background-color"), str, 0, false);
\r
107 html_tag::parse_attributes();
\r