2#pragma warning(disable: 4100)
3#elif defined(__clang__)
4#pragma clang diagnostic ignored "-Wunused-parameter"
10litehtml::el_text::el_text(
const tchar_t* text,
const std::shared_ptr<litehtml::document>& doc) : element(doc)
16 m_text_transform = text_transform_none;
17 m_use_transformed =
false;
21litehtml::el_text::~el_text()
26void litehtml::el_text::get_content_size( size& sz,
int max_width )
31void litehtml::el_text::get_text( tstring& text )
36const litehtml::tchar_t* litehtml::el_text::get_style_property(
const tchar_t* name,
bool inherited,
const tchar_t* def )
40 element::ptr el_parent = parent();
43 return el_parent->get_style_property(name, inherited, def);
49void litehtml::el_text::parse_styles(
bool is_reparse)
51 m_text_transform = (text_transform) value_index(get_style_property(_t(
"text-transform"),
true, _t(
"none")), text_transform_strings, text_transform_none);
52 if(m_text_transform != text_transform_none)
54 m_transformed_text = m_text;
55 m_use_transformed =
true;
56 get_document()->container()->transform_text(m_transformed_text, m_text_transform);
61 m_transformed_text = _t(
" ");
62 m_use_transformed =
true;
65 if(m_text == _t(
"\t"))
67 m_transformed_text = _t(
" ");
68 m_use_transformed =
true;
70 if(m_text == _t(
"\n") || m_text == _t(
"\r"))
72 m_transformed_text = _t(
"");
73 m_use_transformed =
true;
79 element::ptr el_parent = parent();
82 font = el_parent->get_font(&fm);
90 m_size.height = fm.height;
91 m_size.width = get_document()->container()->text_width(m_use_transformed ? m_transformed_text.c_str() : m_text.c_str(), font);
93 m_draw_spaces = fm.draw_spaces;
96int litehtml::el_text::get_base_line()
98 element::ptr el_parent = parent();
101 return el_parent->get_base_line();
106void litehtml::el_text::draw( uint_ptr hdc,
int x,
int y,
const position* clip )
108 if(is_white_space() && !m_draw_spaces)
113 position pos = m_pos;
117 if(pos.does_intersect(clip))
119 element::ptr el_parent = parent();
122 document::ptr doc = get_document();
124 uint_ptr font = el_parent->get_font();
126 doc->container()->draw_text(hdc, m_use_transformed ? m_transformed_text.c_str() : m_text.c_str(), font, color, pos);
131int litehtml::el_text::line_height()
const
133 element::ptr el_parent = parent();
136 return el_parent->line_height();
141litehtml::uint_ptr litehtml::el_text::get_font( font_metrics* fm )
143 element::ptr el_parent = parent();
146 return el_parent->get_font(fm);
151litehtml::style_display litehtml::el_text::get_display()
const
153 return display_inline_text;
156litehtml::white_space litehtml::el_text::get_white_space()
const
158 element::ptr el_parent = parent();
159 if (el_parent)
return el_parent->get_white_space();
160 return white_space_normal;
163litehtml::element_position litehtml::el_text::get_element_position(css_offsets* offsets)
const
165 element::ptr p = parent();
166 while(p && p->get_display() == display_inline)
168 if(p->get_element_position() == element_position_relative)
172 *offsets = p->get_css_offsets();
174 return element_position_relative;
178 return element_position_static;
183 element::ptr p = parent();
184 while(p && p->get_display() == display_inline)
186 if(p->get_element_position() == element_position_relative)
188 return p->get_css_offsets();
192 return css_offsets();