12 typedef std::vector<css_text> vector;
22 css_text(
const tchar_t* txt,
const tchar_t* url,
const tchar_t* media_str)
24 text = txt ? txt : _t(
"");
25 baseurl = url ? url : _t(
"");
26 media = media_str ? media_str : _t(
"");
32 baseurl = val.baseurl;
39 const litehtml::tchar_t* tags;
40 const litehtml::tchar_t* stop_parent;
45 const litehtml::tchar_t* tag;
46 const litehtml::tchar_t* followed_tags;
51 class document :
public std::enable_shared_from_this<document>
54 typedef std::shared_ptr<document> ptr;
55 typedef std::weak_ptr<document> weak_ptr;
57 std::shared_ptr<element> m_root;
60 css_text::vector m_css;
65 position::vector m_fixed_boxes;
66 media_query_list::vector m_media_lists;
67 element::ptr m_over_element;
68 elements_vector m_tabular_elements;
79 uint_ptr get_font(
const tchar_t* name,
int size,
const tchar_t* weight,
const tchar_t*
style,
const tchar_t* decoration,
font_metrics* fm);
80 int render(
int max_width, render_type rt = render_all);
81 void draw(uint_ptr hdc,
int x,
int y,
const position* clip);
82 web_color get_def_color() {
return m_def_color; }
83 int cvt_units(
const tchar_t* str,
int fontSize,
bool* is_percent = 0)
const;
87 void add_stylesheet(
const tchar_t* str,
const tchar_t* baseurl,
const tchar_t* media);
88 bool on_mouse_over(
int x,
int y,
int client_x,
int client_y, position::vector& redraw_boxes);
89 bool on_lbutton_down(
int x,
int y,
int client_x,
int client_y, position::vector& redraw_boxes);
90 bool on_lbutton_up(
int x,
int y,
int client_x,
int client_y, position::vector& redraw_boxes);
91 bool on_mouse_move(
int x,
int y);
92 bool on_mouse_leave(position::vector& redraw_boxes);
93 litehtml::element::ptr create_element(
const tchar_t* tag_name,
const string_map& attributes);
95 void get_fixed_boxes(position::vector& fixed_boxes);
96 void add_fixed_box(
const position& pos);
97 void add_media_list(media_query_list::ptr list);
100 bool match_lang(
const tstring & lang);
101 void add_tabular(
const element::ptr& el);
103 void set_userdata(
void * userdata) { m_userdata = userdata; }
104 void * get_userdata() {
return m_userdata; }
108 const litehtml::css & get_styles()
const {
return m_styles; }
111 bool is_initialised()
const {
return m_initialised; }
116 static void create_node(
void* gnode, elements_vector& elements,
bool parseTextNode, document::ptr doc);
119 litehtml::uint_ptr add_font(
const tchar_t* name,
int size,
const tchar_t* weight,
const tchar_t*
style,
const tchar_t* decoration,
font_metrics* fm);
122 void fix_tables_layout();
123 void fix_table_children(element::ptr& el_ptr, style_display disp,
const tchar_t* disp_str);
124 void fix_table_parent(element::ptr& el_ptr, style_display disp,
const tchar_t* disp_str);
127 inline element::ptr document::root()
131 inline void document::add_tabular(
const element::ptr& el)
133 m_tabular_elements.push_back(el);
135 inline bool document::match_lang(
const tstring & lang)
137 return lang == m_lang || lang == m_culture;