aboutsummaryrefslogtreecommitdiffstats
path: root/include/litehtml/render_inline.h
blob: 666074b90c1dac205650c5cf33ee3669d22ca5d8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#ifndef LITEHTML_RENDER_INLINE_H
#define LITEHTML_RENDER_INLINE_H

#include "render_item.h"

namespace litehtml
{
	class render_item_inline : public render_item
	{
	protected:
		position::vector m_boxes;

	public:
		explicit render_item_inline(std::shared_ptr<element>  src_el) : render_item(std::move(src_el))
		{}

		void get_inline_boxes( position::vector& boxes ) const override { boxes = m_boxes; }
		void set_inline_boxes( position::vector& boxes ) override { m_boxes = boxes; }
		void add_inline_box( const position& box ) override { m_boxes.emplace_back(box); };
		void clear_inline_boxes() override { m_boxes.clear(); }
		int get_first_baseline() override
		{
			return src_el()->css().get_font_metrics().height - src_el()->css().get_font_metrics().base_line();
		}
		int get_last_baseline() override
		{
			return src_el()->css().get_font_metrics().height - src_el()->css().get_font_metrics().base_line();
		}

		std::shared_ptr<render_item> clone() override
		{
			return std::make_shared<render_item_inline>(src_el());
		}
	};
}

#endif //LITEHTML_RENDER_INLINE_H