use crate::tokens::dtcg::DimensionValue;
use crate::tokens::metrics::controls::basic::default_border_width;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct DisclosureGroupMetrics {
pub chevron_size: DimensionValue,
pub label_gap: DimensionValue,
pub button_regular_width: DimensionValue,
pub button_regular_height: DimensionValue,
pub button_regular_intrinsic: DimensionValue,
pub button_small_width: DimensionValue,
pub button_small_height: DimensionValue,
pub button_small_intrinsic: DimensionValue,
pub button_mini_width: DimensionValue,
pub button_mini_height: DimensionValue,
pub button_mini_intrinsic: DimensionValue,
pub spring_mass: DimensionValue,
pub spring_stiffness: DimensionValue,
pub spring_damping: DimensionValue,
}
impl Default for DisclosureGroupMetrics {
fn default() -> Self {
Self {
chevron_size: DimensionValue::from_pt(13.0),
label_gap: DimensionValue::from_pt(6.0),
button_regular_width: DimensionValue::from_pt(28.0),
button_regular_height: DimensionValue::from_pt(26.0),
button_regular_intrinsic: DimensionValue::from_pt(20.0),
button_small_width: DimensionValue::from_pt(24.0),
button_small_height: DimensionValue::from_pt(21.0),
button_small_intrinsic: DimensionValue::from_pt(16.0),
button_mini_width: DimensionValue::from_pt(19.0),
button_mini_height: DimensionValue::from_pt(16.0),
button_mini_intrinsic: DimensionValue::from_pt(13.0),
spring_mass: DimensionValue::from_pt(1.0),
spring_stiffness: DimensionValue::from_pt(300.0),
spring_damping: DimensionValue::from_pt(25.0),
}
}
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct ComboBoxMetrics {
pub regular_height: DimensionValue,
pub regular_button_width: DimensionValue,
pub regular_inset: DimensionValue,
pub regular_corner_radius: DimensionValue,
pub small_height: DimensionValue,
pub small_button_width: DimensionValue,
pub small_inset: DimensionValue,
pub small_corner_radius: DimensionValue,
pub mini_height: DimensionValue,
pub mini_button_width: DimensionValue,
pub mini_inset: DimensionValue,
pub mini_corner_radius: DimensionValue,
pub item_height: DimensionValue,
pub visible_items: DimensionValue,
pub intercell_spacing_x: DimensionValue,
pub intercell_spacing_y: DimensionValue,
}
impl Default for ComboBoxMetrics {
fn default() -> Self {
Self {
regular_height: DimensionValue::from_pt(23.0),
regular_button_width: DimensionValue::from_pt(27.0),
regular_inset: DimensionValue::from_pt(9.0),
regular_corner_radius: DimensionValue::from_pt(5.0),
small_height: DimensionValue::from_pt(19.0),
small_button_width: DimensionValue::from_pt(20.0),
small_inset: DimensionValue::from_pt(7.0),
small_corner_radius: DimensionValue::from_pt(4.0),
mini_height: DimensionValue::from_pt(15.0),
mini_button_width: DimensionValue::from_pt(18.0),
mini_inset: DimensionValue::from_pt(6.0),
mini_corner_radius: DimensionValue::from_pt(3.0),
item_height: DimensionValue::from_pt(18.0),
visible_items: DimensionValue::from_pt(5.0),
intercell_spacing_x: DimensionValue::from_pt(3.0),
intercell_spacing_y: DimensionValue::from_pt(2.0),
}
}
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct TabViewMetrics {
pub regular_bar_height: DimensionValue,
pub regular_inset_top: DimensionValue,
pub regular_inset_bottom: DimensionValue,
pub regular_inset_horizontal: DimensionValue,
pub small_bar_height: DimensionValue,
pub small_inset_top: DimensionValue,
pub small_inset_bottom: DimensionValue,
pub small_inset_horizontal: DimensionValue,
pub mini_bar_height: DimensionValue,
pub mini_inset_top: DimensionValue,
pub mini_inset_bottom: DimensionValue,
pub mini_inset_horizontal: DimensionValue,
pub corner_radius: DimensionValue,
}
impl Default for TabViewMetrics {
fn default() -> Self {
Self {
regular_bar_height: DimensionValue::from_pt(24.0),
regular_inset_top: DimensionValue::from_pt(33.0),
regular_inset_bottom: DimensionValue::from_pt(13.0),
regular_inset_horizontal: DimensionValue::from_pt(10.0),
small_bar_height: DimensionValue::from_pt(20.0),
small_inset_top: DimensionValue::from_pt(25.0),
small_inset_bottom: DimensionValue::from_pt(13.0),
small_inset_horizontal: DimensionValue::from_pt(10.0),
mini_bar_height: DimensionValue::from_pt(15.0),
mini_inset_top: DimensionValue::from_pt(19.0),
mini_inset_bottom: DimensionValue::from_pt(13.0),
mini_inset_horizontal: DimensionValue::from_pt(10.0),
corner_radius: DimensionValue::from_pt(5.0),
}
}
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct DatePickerMetrics {
pub stepper_width: DimensionValue,
pub stepper_chevron_pitch: DimensionValue,
pub selection_corner_radius: DimensionValue,
pub corner_radius_regular: DimensionValue,
pub corner_radius_small: DimensionValue,
pub corner_radius_mini: DimensionValue,
pub datetime_regular_width: DimensionValue,
pub datetime_regular_height: DimensionValue,
pub datetime_small_width: DimensionValue,
pub datetime_small_height: DimensionValue,
pub datetime_mini_width: DimensionValue,
pub datetime_mini_height: DimensionValue,
pub date_only_regular_width: DimensionValue,
pub date_only_regular_height: DimensionValue,
pub date_only_small_width: DimensionValue,
pub date_only_small_height: DimensionValue,
pub date_only_mini_width: DimensionValue,
pub date_only_mini_height: DimensionValue,
pub time_only_regular_width: DimensionValue,
pub time_only_regular_height: DimensionValue,
pub time_only_small_width: DimensionValue,
pub time_only_small_height: DimensionValue,
pub time_only_mini_width: DimensionValue,
pub time_only_mini_height: DimensionValue,
pub calendar_width: DimensionValue,
pub calendar_height: DimensionValue,
pub clock_face_width: DimensionValue,
pub clock_face_height: DimensionValue,
pub clock_size: DimensionValue,
}
impl Default for DatePickerMetrics {
fn default() -> Self {
Self {
stepper_width: DimensionValue::from_pt(19.0),
stepper_chevron_pitch: DimensionValue::from_pt(9.0),
selection_corner_radius: DimensionValue::from_pt(2.5),
corner_radius_regular: DimensionValue::from_pt(5.0),
corner_radius_small: DimensionValue::from_pt(4.0),
corner_radius_mini: DimensionValue::from_pt(3.0),
datetime_regular_width: DimensionValue::from_pt(161.0),
datetime_regular_height: DimensionValue::from_pt(28.0),
datetime_small_width: DimensionValue::from_pt(157.0),
datetime_small_height: DimensionValue::from_pt(22.0),
datetime_mini_width: DimensionValue::from_pt(155.0),
datetime_mini_height: DimensionValue::from_pt(21.0),
date_only_regular_width: DimensionValue::from_pt(97.0),
date_only_regular_height: DimensionValue::from_pt(28.0),
date_only_small_width: DimensionValue::from_pt(93.0),
date_only_small_height: DimensionValue::from_pt(22.0),
date_only_mini_width: DimensionValue::from_pt(91.0),
date_only_mini_height: DimensionValue::from_pt(21.0),
time_only_regular_width: DimensionValue::from_pt(81.0),
time_only_regular_height: DimensionValue::from_pt(28.0),
time_only_small_width: DimensionValue::from_pt(77.0),
time_only_small_height: DimensionValue::from_pt(22.0),
time_only_mini_width: DimensionValue::from_pt(75.0),
time_only_mini_height: DimensionValue::from_pt(21.0),
calendar_width: DimensionValue::from_pt(139.0),
calendar_height: DimensionValue::from_pt(148.0),
clock_face_width: DimensionValue::from_pt(122.0),
clock_face_height: DimensionValue::from_pt(123.0),
clock_size: DimensionValue::from_pt(119.0),
}
}
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct CollectionViewMetrics {
pub item_size: DimensionValue,
pub minimum_line_spacing: DimensionValue,
pub minimum_interitem_spacing: DimensionValue,
pub section_inset: DimensionValue,
pub selection_corner_radius: DimensionValue,
pub selection_stroke_width: DimensionValue,
pub marquee_alpha_fill: DimensionValue,
pub marquee_alpha_stroke: DimensionValue,
}
impl Default for CollectionViewMetrics {
fn default() -> Self {
Self {
item_size: DimensionValue::from_pt(50.0),
minimum_line_spacing: DimensionValue::from_pt(10.0),
minimum_interitem_spacing: DimensionValue::from_pt(10.0),
section_inset: DimensionValue::from_pt(0.0),
selection_corner_radius: DimensionValue::from_pt(6.0),
selection_stroke_width: DimensionValue::from_pt(2.0),
marquee_alpha_fill: DimensionValue::from_pt(0.20),
marquee_alpha_stroke: DimensionValue::from_pt(0.80),
}
}
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct PlayerViewMetrics {
pub hud_width: DimensionValue,
pub hud_height: DimensionValue,
pub hud_corner_radius: DimensionValue,
pub hud_bottom_margin: DimensionValue,
pub auto_hide_seconds: DimensionValue,
pub top_row_height: DimensionValue,
pub scrubber_height: DimensionValue,
pub scrubber_track_height: DimensionValue,
pub scrubber_track_corner_radius: DimensionValue,
pub scrubber_knob_size: DimensionValue,
pub inline_height: DimensionValue,
pub inline_corner_radius: DimensionValue,
}
impl Default for PlayerViewMetrics {
fn default() -> Self {
Self {
hud_width: DimensionValue::from_pt(481.0),
hud_height: DimensionValue::from_pt(64.0),
hud_corner_radius: DimensionValue::from_pt(16.0),
hud_bottom_margin: DimensionValue::from_pt(16.0),
auto_hide_seconds: DimensionValue::from_pt(3.0),
top_row_height: DimensionValue::from_pt(34.0),
scrubber_height: DimensionValue::from_pt(22.5),
scrubber_track_height: DimensionValue::from_pt(3.5),
scrubber_track_corner_radius: DimensionValue::from_pt(1.75),
scrubber_knob_size: DimensionValue::from_pt(8.0),
inline_height: DimensionValue::from_pt(24.0),
inline_corner_radius: DimensionValue::from_pt(0.0),
}
}
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct BoxViewMetrics {
pub inset_top: DimensionValue,
pub inset_bottom: DimensionValue,
pub inset_left: DimensionValue,
pub inset_right: DimensionValue,
pub corner_radius: DimensionValue,
#[serde(default = "default_border_width")]
pub border_width: DimensionValue,
pub separator_frame_height: DimensionValue,
}
impl Default for BoxViewMetrics {
fn default() -> Self {
Self {
inset_top: DimensionValue::from_pt(20.0),
inset_bottom: DimensionValue::from_pt(10.0),
inset_left: DimensionValue::from_pt(9.0),
inset_right: DimensionValue::from_pt(9.0),
corner_radius: DimensionValue::from_pt(5.0),
border_width: default_border_width(),
separator_frame_height: DimensionValue::from_pt(5.0),
}
}
}