Implement image handling
[claws.git] / src / plugins / litehtml_viewer / litehtml / media_query.h
1 #pragma once\r
2 \r
3 namespace litehtml\r
4 {\r
5         struct media_query_expression\r
6         {\r
7                 typedef std::vector<media_query_expression>     vector;\r
8                 media_feature   feature;\r
9                 int                             val;\r
10                 int                             val2;\r
11                 bool                    check_as_bool;\r
12                 \r
13                 media_query_expression()\r
14                 {\r
15                         check_as_bool   = false;\r
16                         feature                 = media_feature_none;\r
17                         val                             = 0;\r
18                         val2                    = 0;\r
19                 }\r
20 \r
21                 bool check(const media_features& features) const;\r
22         };\r
23 \r
24         class media_query\r
25         {\r
26         public:\r
27                 typedef std::shared_ptr<media_query>    ptr;\r
28                 typedef std::vector<media_query::ptr>   vector;\r
29         private:\r
30                 media_query_expression::vector  m_expressions;\r
31                 bool                                                    m_not;\r
32                 media_type                                              m_media_type;\r
33         public:\r
34                 media_query();\r
35                 media_query(const media_query& val);\r
36 \r
37                 static media_query::ptr create_from_string(const tstring& str, const std::shared_ptr<document>& doc);\r
38                 bool check(const media_features& features) const;\r
39         };\r
40 \r
41         class media_query_list\r
42         {\r
43         public:\r
44                 typedef std::shared_ptr<media_query_list>       ptr;\r
45                 typedef std::vector<media_query_list::ptr>      vector;\r
46         private:\r
47                 media_query::vector     m_queries;\r
48                 bool                            m_is_used;\r
49         public:\r
50                 media_query_list();\r
51                 media_query_list(const media_query_list& val);\r
52 \r
53                 static media_query_list::ptr create_from_string(const tstring& str, const std::shared_ptr<document>& doc);\r
54                 bool is_used() const;\r
55                 bool apply_media_features(const media_features& features);      // returns true if the m_is_used changed\r
56         };\r
57 \r
58         inline media_query_list::media_query_list(const media_query_list& val)\r
59         {\r
60                 m_is_used       = val.m_is_used;\r
61                 m_queries       = val.m_queries;\r
62         }\r
63 \r
64         inline media_query_list::media_query_list()\r
65         {\r
66                 m_is_used = false;\r
67         }\r
68 \r
69         inline bool media_query_list::is_used() const\r
70         {\r
71                 return m_is_used;\r
72         }\r
73 \r
74 }