Photon 1.0.0
Loading...
Searching...
No Matches
background.h
Go to the documentation of this file.
1#ifndef LH_BACKGROUND_H
2#define LH_BACKGROUND_H
3
4#include "types.h"
5#include "css_length.h"
6#include "css_position.h"
7#include "web_color.h"
8#include "borders.h"
9#include "gradient.h"
10
11namespace litehtml
12{
14 {
15 public:
16 // border_box defines draw boundary. Everything must be drawn inside this rectangle only.
18 // border_radius defines radius of the border_box.
20 // clip_box defines clipping rectangle. Works like border_box. Container must set additional clipping.
22 // origin_box defines origin rectangle.
26 // is_root is true for root element. Container can use this flag to apply background to the top window.
27 bool is_root;
28
34
35 class image
36 {
37 public:
38 string url;
39 string base_url;
40 };
41
43 {
44 float offset;
46 optional<float> hint;
47 color_point() { offset = 0.0; }
48 color_point(float _offset, web_color _color) : offset(_offset), color(_color) {}
49 };
50
51 class color
52 {
53 public:
55 };
56
58 {
59 public:
60 vector<color_point> color_points;
63
65 bool prepare_color_points(float len, string_id grad_type, const vector<gradient::color_stop>& colors);
66 };
67
69 {
70 public:
73 };
74
76 {
77 public:
80 };
81
83 {
84 public:
86 float angle = 0;
87 };
88 };
89
91 {
92 public:
102
103 vector<image> m_image;
104 string m_baseurl;
113
114 bool is_empty() const
115 {
116 if(m_color.alpha != 0)
117 return false;
118 if(m_image.empty())
119 return true;
120 for(const auto& img : m_image)
121 {
122 if(!img.is_empty()) return false;
123 }
124 return true;
125 }
127 {
129 {
130 return (int) m_image.size() + 1;
131 }
132 return (int) m_image.size();
133 }
134 bool get_layer(int idx, position pos, const element* el, const std::shared_ptr<render_item>& ri, background_layer& layer) const;
135 layer_type get_layer_type(int idx) const;
136 std::unique_ptr<background_layer::image> get_image_layer(int idx) const;
137 std::unique_ptr<background_layer::color> get_color_layer(int idx) const;
138 std::unique_ptr<background_layer::linear_gradient> get_linear_gradient_layer(int idx, const background_layer& layer) const;
139 std::unique_ptr<background_layer::radial_gradient> get_radial_gradient_layer(int idx, const background_layer& layer) const;
140 std::unique_ptr<background_layer::conic_gradient> get_conic_gradient_layer(int idx, const background_layer& layer) const;
141 void draw_layer(uint_ptr hdc, int idx, const background_layer& layer, document_container* container) const;
142 };
143}
144
145#endif // LH_BACKGROUND_H
Definition background.h:52
web_color color
Definition background.h:54
float angle
Definition background.h:86
pointF position
Definition background.h:85
color_space_t color_space
Definition background.h:61
hue_interpolation_t hue_interpolation
Definition background.h:62
bool prepare_color_points(float len, string_id grad_type, const vector< gradient::color_stop > &colors)
Definition background.cpp:789
void color_points_transparent_fix()
Definition background.cpp:740
vector< color_point > color_points
Definition background.h:60
Definition background.h:36
string base_url
Definition background.h:39
string url
Definition background.h:38
pointF end
Definition background.h:72
pointF start
Definition background.h:71
pointF position
Definition background.h:78
pointF radius
Definition background.h:79
Definition background.h:14
border_radiuses border_radius
Definition background.h:19
background_repeat repeat
Definition background.h:25
position border_box
Definition background.h:17
position origin_box
Definition background.h:23
bool is_root
Definition background.h:27
background_layer()
Definition background.h:29
position clip_box
Definition background.h:21
background_attachment attachment
Definition background.h:24
Definition background.h:91
layer_type
Definition background.h:94
@ type_linear_gradient
Definition background.h:98
@ type_color
Definition background.h:96
@ type_image
Definition background.h:97
@ type_conic_gradient
Definition background.h:100
@ type_none
Definition background.h:95
@ type_radial_gradient
Definition background.h:99
length_vector m_position_x
Definition background.h:107
void draw_layer(uint_ptr hdc, int idx, const background_layer &layer, document_container *container) const
Definition background.cpp:647
length_vector m_position_y
Definition background.h:108
std::unique_ptr< background_layer::radial_gradient > get_radial_gradient_layer(int idx, const background_layer &layer) const
Definition background.cpp:396
int_vector m_repeat
Definition background.h:110
int get_layers_number() const
Definition background.h:126
int_vector m_origin
Definition background.h:112
std::unique_ptr< background_layer::color > get_color_layer(int idx) const
Definition background.cpp:193
int_vector m_clip
Definition background.h:111
size_vector m_size
Definition background.h:109
std::unique_ptr< background_layer::conic_gradient > get_conic_gradient_layer(int idx, const background_layer &layer) const
Definition background.cpp:560
string m_baseurl
Definition background.h:104
web_color m_color
Definition background.h:105
int_vector m_attachment
Definition background.h:106
std::unique_ptr< background_layer::linear_gradient > get_linear_gradient_layer(int idx, const background_layer &layer) const
Definition background.cpp:284
vector< image > m_image
Definition background.h:103
layer_type get_layer_type(int idx) const
Definition background.cpp:612
std::unique_ptr< background_layer::image > get_image_layer(int idx) const
Definition background.cpp:178
bool is_empty() const
Definition background.h:114
bool get_layer(int idx, position pos, const element *el, const std::shared_ptr< render_item > &ri, background_layer &layer) const
Definition background.cpp:14
Definition document_container.h:34
Definition element.h:19
Definition background.h:12
background_repeat
Definition types.h:530
@ background_repeat_repeat
Definition types.h:531
std::uintptr_t uint_ptr
Definition types.h:17
vector< css_length > length_vector
Definition css_length.h:47
background_attachment
Definition types.h:522
@ background_attachment_scroll
Definition types.h:523
std::vector< int > int_vector
Definition types.h:33
std::vector< css_size > size_vector
Definition css_position.h:25
color_space_t
Definition gradient.h:55
@ color_space_none
Definition gradient.h:56
hue_interpolation_t
Definition gradient.h:80
@ hue_interpolation_none
Definition gradient.h:81
Definition background.h:43
float offset
Definition background.h:44
color_point()
Definition background.h:47
optional< float > hint
Definition background.h:46
web_color color
Definition background.h:45
color_point(float _offset, web_color _color)
Definition background.h:48
Definition borders.h:67
Definition types.h:78
Definition types.h:103
Definition web_color.h:9
byte alpha
Definition web_color.h:13
static const web_color transparent
Definition web_color.h:16
img
Definition tag_strings.h:75