aboutsummaryrefslogtreecommitdiffstats
path: root/include/litehtml/media_query.h
blob: 4cb21fc2f680f8edf31a2b219f42a6d404cd15c0 (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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#ifndef LH_MEDIA_QUERY_H
#define LH_MEDIA_QUERY_H

namespace litehtml
{
	struct media_query_expression
	{
		typedef std::vector<media_query_expression>	vector;
		media_feature	feature;
		int				val;
		int				val2;
		bool			check_as_bool;
		
		media_query_expression()
		{
			check_as_bool	= false;
			feature			= media_feature_none;
			val				= 0;
			val2			= 0;
		}

		bool check(const media_features& features) const;
	};

	class media_query
	{
	public:
		typedef std::shared_ptr<media_query>	ptr;
		typedef std::vector<media_query::ptr>	vector;
	private:
		media_query_expression::vector	m_expressions;
		bool							m_not;
		media_type						m_media_type;
	public:
		media_query();
		media_query(const media_query& val);

		static media_query::ptr create_from_string(const string& str, const std::shared_ptr<document>& doc);
		bool check(const media_features& features) const;
	};

	class media_query_list
	{
	public:
		typedef std::shared_ptr<media_query_list>	ptr;
		typedef std::vector<media_query_list::ptr>	vector;
	private:
		media_query::vector	m_queries;
		bool				m_is_used;
	public:
		media_query_list();
		media_query_list(const media_query_list& val);

		static media_query_list::ptr create_from_string(const string& str, const std::shared_ptr<document>& doc);
		bool is_used() const;
		bool apply_media_features(const media_features& features);	// returns true if the m_is_used changed
	};

	inline media_query_list::media_query_list(const media_query_list& val)
	{
		m_is_used	= val.m_is_used;
		m_queries	= val.m_queries;
	}

	inline media_query_list::media_query_list()
	{
		m_is_used = false;
	}

	inline bool media_query_list::is_used() const
	{
		return m_is_used;
	}

}

#endif  // LH_MEDIA_QUERY_H