Photon 1.0.0
Loading...
Searching...
No Matches
document.h
Go to the documentation of this file.
1#ifndef LH_DOCUMENT_H
2#define LH_DOCUMENT_H
3
4#include "style.h"
5#include "types.h"
6#include "master_css.h"
7#include "encodings.h"
9
10namespace litehtml
11{
12 struct css_text
13 {
14 typedef std::vector<css_text> vector;
15
16 string text;
17 string baseurl;
18 string media;
19
20 css_text() = default;
21
22 css_text(const char* txt, const char* url, const char* media_str)
23 {
24 text = txt ? txt : "";
25 baseurl = url ? url : "";
26 media = media_str ? media_str : "";
27 }
28 };
29
30 class dumper
31 {
32 public:
33 virtual ~dumper() {}
34 virtual void begin_node(const string& descr) = 0;
35 virtual void end_node() = 0;
36 virtual void begin_attrs_group(const string& descr) = 0;
37 virtual void end_attrs_group() = 0;
38 virtual void add_attr(const string& name, const string& value) = 0;
39 };
40
41 class html_tag;
42 class render_item;
43
44 class document : public std::enable_shared_from_this<document>
45 {
46 public:
47 typedef std::shared_ptr<document> ptr;
48 typedef std::weak_ptr<document> weak_ptr;
49 private:
50 std::shared_ptr<element> m_root;
51 std::shared_ptr<render_item> m_root_render;
63 std::list<shared_ptr<render_item>> m_tabular_elements;
66 string m_lang;
67 string m_culture;
68 string m_text;
70 public:
71 document(document_container* objContainer);
72 virtual ~document();
73
75 document_mode mode() const { return m_mode; }
76 uint_ptr get_font(const char* name, int size, const char* weight, const char* style, const char* decoration, font_metrics* fm);
77 int render(int max_width, render_type rt = render_all);
78 void draw(uint_ptr hdc, int x, int y, const position* clip);
80 void cvt_units(css_length& val, const font_metrics& metrics, int size) const;
81 int to_pixels(const css_length& val, const font_metrics& metrics, int size) const;
82 int width() const;
83 int height() const;
84 int content_width() const;
85 int content_height() const;
86 void add_stylesheet(const char* str, const char* baseurl, const char* media);
87 bool on_mouse_over(int x, int y, int client_x, int client_y, position::vector& redraw_boxes);
88 bool on_lbutton_down(int x, int y, int client_x, int client_y, position::vector& redraw_boxes);
89 bool on_lbutton_up(int x, int y, int client_x, int client_y, position::vector& redraw_boxes);
90 bool on_mouse_leave(position::vector& redraw_boxes);
91 element::ptr create_element(const char* tag_name, const string_map& attributes);
93 std::shared_ptr<render_item> root_render();
94 void get_fixed_boxes(position::vector& fixed_boxes);
95 void add_fixed_box(const position& pos);
97 bool media_changed();
98 bool lang_changed();
99 bool match_lang(const string& lang);
100 void add_tabular(const std::shared_ptr<render_item>& el);
102
103 void append_children_from_string(element& parent, const char* str);
104 void dump(dumper& cout);
105
106 // see doc/document_createFromString.txt
108 const estring& str,
110 const string& master_styles = litehtml::master_css,
111 const string& user_styles = "");
112
113 private:
114 uint_ptr add_font(const char* name, int size, const char* weight, const char* style, const char* decoration, font_metrics* fm);
115
117 void create_node(void* gnode, elements_list& elements, bool parseTextNode);
118 bool update_media_lists(const media_features& features);
119 void fix_tables_layout();
120 void fix_table_children(const std::shared_ptr<render_item>& el_ptr, style_display disp, const char* disp_str);
121 void fix_table_parent(const std::shared_ptr<render_item> & el_ptr, style_display disp, const char* disp_str);
122 };
123
125 {
126 return m_root;
127 }
128
129 inline std::shared_ptr<render_item> document::root_render()
130 {
131 return m_root_render;
132 }
133
134 inline void document::add_tabular(const std::shared_ptr<render_item>& el)
135 {
136 m_tabular_elements.push_back(el);
137 }
138 inline bool document::match_lang(const string& lang)
139 {
140 return lang == m_lang || lang == m_culture;
141 }
142}
143
144#endif // LH_DOCUMENT_H
Definition css_length.h:22
Definition stylesheet.h:45
Definition document_container.h:34
Definition document.h:45
void fix_tables_layout()
Definition document.cpp:907
element::ptr root()
Definition document.h:124
std::shared_ptr< document > ptr
Definition document.h:47
litehtml::web_color m_def_color
Definition document.h:56
bool match_lang(const string &lang)
Definition document.h:138
litehtml::css m_styles
Definition document.h:55
bool lang_changed()
Definition document.cpp:866
int height() const
Definition document.cpp:689
uint_ptr get_font(const char *name, int size, const char *weight, const char *style, const char *decoration, font_metrics *fm)
Definition document.cpp:530
web_color get_def_color()
Definition document.h:79
bool on_mouse_leave(position::vector &redraw_boxes)
Definition document.cpp:758
GumboOutput * parse_html(estring str)
Definition document.cpp:215
void create_node(void *gnode, elements_list &elements, bool parseTextNode)
Definition document.cpp:260
void cvt_units(css_length &val, const font_metrics &metrics, int size) const
Definition document.cpp:672
document_container * container()
Definition document.h:74
void add_stylesheet(const char *str, const char *baseurl, const char *media)
Definition document.cpp:705
void fix_table_children(const std::shared_ptr< render_item > &el_ptr, style_display disp, const char *disp_str)
Definition document.cpp:947
void add_media_list(media_query_list_list::ptr list)
Definition document.cpp:901
void append_children_from_string(element &parent, const char *str)
Definition document.cpp:1099
bool on_lbutton_down(int x, int y, int client_x, int client_y, position::vector &redraw_boxes)
Definition document.cpp:775
fonts_map m_fonts
Definition document.h:53
std::weak_ptr< document > weak_ptr
Definition document.h:48
uint_ptr add_font(const char *name, int size, const char *weight, const char *style, const char *decoration, font_metrics *fm)
Definition document.cpp:444
bool on_lbutton_up(int x, int y, int client_x, int client_y, position::vector &redraw_boxes)
Definition document.cpp:828
int content_width() const
Definition document.cpp:694
string m_lang
Definition document.h:66
int render(int max_width, render_type rt=render_all)
Definition document.cpp:567
int width() const
Definition document.cpp:684
static document::ptr createFromString(const estring &str, document_container *container, const string &master_styles=litehtml::master_css, const string &user_styles="")
Definition document.cpp:49
std::shared_ptr< render_item > m_root_render
Definition document.h:51
litehtml::size m_size
Definition document.h:59
litehtml::size m_content_size
Definition document.h:60
media_query_list_list::vector m_media_lists
Definition document.h:64
int to_pixels(const css_length &val, const font_metrics &metrics, int size) const
Definition document.cpp:611
bool media_changed()
Definition document.cpp:854
void get_fixed_boxes(position::vector &fixed_boxes)
Definition document.cpp:844
void fix_table_parent(const std::shared_ptr< render_item > &el_ptr, style_display disp, const char *disp_str)
Definition document.cpp:1017
virtual ~document()
Definition document.cpp:37
bool update_media_lists(const media_features &features)
Definition document.cpp:888
bool on_mouse_over(int x, int y, int client_x, int client_y, position::vector &redraw_boxes)
Definition document.cpp:713
void add_tabular(const std::shared_ptr< render_item > &el)
Definition document.h:134
void dump(dumper &cout)
Definition document.cpp:1148
element::ptr m_over_element
Definition document.h:62
litehtml::css m_user_css
Definition document.h:58
css_text::vector m_css
Definition document.h:54
std::shared_ptr< element > m_root
Definition document.h:50
document_mode m_mode
Definition document.h:69
document_mode mode() const
Definition document.h:75
void draw(uint_ptr hdc, int x, int y, const position *clip)
Definition document.cpp:602
litehtml::css m_master_css
Definition document.h:57
string m_text
Definition document.h:68
position::vector m_fixed_boxes
Definition document.h:61
document_container * m_container
Definition document.h:52
void add_fixed_box(const position &pos)
Definition document.cpp:849
media_features m_media
Definition document.h:65
int content_height() const
Definition document.cpp:699
string m_culture
Definition document.h:67
std::list< shared_ptr< render_item > > m_tabular_elements
Definition document.h:63
std::shared_ptr< render_item > root_render()
Definition document.h:129
element::const_ptr get_over_element() const
Definition document.h:101
element::ptr create_element(const char *tag_name, const string_map &attributes)
Definition document.cpp:356
Definition document.h:31
virtual ~dumper()
Definition document.h:33
virtual void begin_attrs_group(const string &descr)=0
virtual void begin_node(const string &descr)=0
virtual void end_attrs_group()=0
virtual void end_node()=0
virtual void add_attr(const string &name, const string &value)=0
Definition element.h:19
std::shared_ptr< const element > const_ptr
Definition element.h:26
std::shared_ptr< element > ptr
Definition element.h:25
Definition html_tag.h:18
std::vector< ptr > vector
Definition media_query.h:100
shared_ptr< media_query_list_list > ptr
Definition media_query.h:99
Definition render_item.h:18
Definition style.h:40
Definition url.h:41
Definition core.h:1598
Definition background.h:12
std::uintptr_t uint_ptr
Definition types.h:17
std::map< string, font_item > fonts_map
Definition types.h:225
render_type
Definition types.h:904
@ render_all
Definition types.h:905
const char * name
Definition encodings.cpp:1358
const char *const master_css
Definition master_css.h:3
std::list< std::shared_ptr< element > > elements_list
Definition types.h:32
std::map< string, string > string_map
Definition types.h:31
document_mode
Definition types.h:47
@ no_quirks_mode
Definition types.h:48
style_display
Definition types.h:328
Definition gumbo.h:628
Definition document.h:13
css_text(const char *txt, const char *url, const char *media_str)
Definition document.h:22
std::vector< css_text > vector
Definition document.h:14
string text
Definition document.h:16
string baseurl
Definition document.h:17
string media
Definition document.h:18
Definition encodings.h:69
Definition types.h:197
Definition types.h:878
Definition types.h:103
std::vector< position > vector
Definition types.h:104
Definition types.h:89
Definition web_color.h:9
rt
Definition tag_strings.h:65