#ifndef LH_MEDIA_QUERY_H #define LH_MEDIA_QUERY_H namespace litehtml { struct media_query_expression { typedef std::vector 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 ptr; typedef std::vector 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& doc); bool check(const media_features& features) const; }; class media_query_list { public: typedef std::shared_ptr ptr; typedef std::vector 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& 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