pride_overlay/flags/
mod.rs1use crate::Colour;
2
3#[cfg(target_arch = "wasm32")]
4pub(crate) mod wasm;
5
6mod data;
7pub use data::PresetFlag;
8
9mod svg;
10pub use svg::{Svg, SvgData, SvgScaleMode};
11
12pub trait FlagData {
14 fn name(&self) -> &str;
15 fn colours(&self) -> &[Colour];
16 fn svg(&self) -> Option<&dyn SvgData>;
17}
18
19#[derive(bon::Builder, Clone, Copy, Default)]
21#[builder(
22 const,
23 builder_type(doc {
24 })
26)]
27pub struct Flag<'a> {
28 #[builder(start_fn)]
29 pub(crate) name: &'a str,
31 #[builder(start_fn)]
33 pub(crate) colours: &'a [Colour],
34 pub(crate) svg: Option<svg::Svg<'a>>,
36}
37
38impl<'a> FlagData for Flag<'a> {
39 fn name(&self) -> &str {
40 self.name
41 }
42
43 fn colours(&self) -> &[Colour] {
44 self.colours
45 }
46
47 fn svg(&self) -> Option<&dyn SvgData> {
48 self.svg.as_ref().map(|svg| svg as &dyn SvgData)
49 }
50}