Skip to main content

ferroui_base/styling/
style_queries.rs

1use super::{AndQuery, HeightQuery, OrQuery, StyleQuery, StyleQueryComparisonOperator, WidthQuery};
2
3/// Functions for building [`StyleQuery`]s.
4pub struct StyleQueries;
5
6impl StyleQueries {
7    /// Returns a query which matches the width of the container.
8    pub fn width(previous: Option<StyleQuery>, operator: StyleQueryComparisonOperator, value: f64) -> StyleQuery {
9        StyleQuery::new(WidthQuery::new(previous, operator, value))
10    }
11
12    /// Returns a query which matches the height of the container.
13    pub fn height(previous: Option<StyleQuery>, operator: StyleQueryComparisonOperator, value: f64) -> StyleQuery {
14        StyleQuery::new(HeightQuery::new(previous, operator, value))
15    }
16
17    /// Returns a query which ORs queries.
18    pub fn or(queries: impl IntoIterator<Item = StyleQuery>) -> StyleQuery {
19        StyleQuery::new(OrQuery::new(queries.into_iter().collect()))
20    }
21
22    /// Returns a query which ANDs queries.
23    pub fn and(queries: impl IntoIterator<Item = StyleQuery>) -> StyleQuery {
24        StyleQuery::new(AndQuery::new(queries.into_iter().collect()))
25    }
26}
27
28impl StyleQuery {
29    /// Returns a query which additionally matches the width of the
30    /// container.
31    pub fn width(self, operator: StyleQueryComparisonOperator, value: f64) -> StyleQuery {
32        StyleQueries::width(Some(self), operator, value)
33    }
34
35    /// Returns a query which additionally matches the height of the
36    /// container.
37    pub fn height(self, operator: StyleQueryComparisonOperator, value: f64) -> StyleQuery {
38        StyleQueries::height(Some(self), operator, value)
39    }
40}