use super::{RenderContext, rgba_to_hex};
use uzor::types::{Rect, WidgetState};
use uzor::widgets::panel::types::PanelType;
use uzor::widgets::panel::theme::PanelTheme;
pub fn render_default(
ctx: &mut dyn RenderContext,
panel: &PanelType,
rect: Rect,
_state: WidgetState,
theme: &dyn PanelTheme,
) {
match panel {
PanelType::Toolbar { .. } => {
let bg_color = rgba_to_hex(theme.background_color());
ctx.set_fill_color(&bg_color);
ctx.fill_rect(rect.x, rect.y, rect.width, rect.height);
let border_color = rgba_to_hex(theme.border_color());
ctx.set_stroke_color(&border_color);
ctx.set_stroke_width(1.0);
ctx.begin_path();
ctx.move_to(rect.x, rect.y + rect.height);
ctx.line_to(rect.x + rect.width, rect.y + rect.height);
ctx.stroke();
}
PanelType::Sidebar { .. } => {
let bg_color = rgba_to_hex(theme.background_color());
ctx.set_fill_color(&bg_color);
ctx.fill_rect(rect.x, rect.y, rect.width, rect.height);
let border_color = rgba_to_hex(theme.border_color());
ctx.set_stroke_color(&border_color);
ctx.set_stroke_width(1.0);
ctx.begin_path();
ctx.move_to(rect.x + rect.width, rect.y);
ctx.line_to(rect.x + rect.width, rect.y + rect.height);
ctx.stroke();
}
PanelType::Modal { .. } => {
let backdrop_color = rgba_to_hex(theme.modal_backdrop_color());
ctx.set_fill_color(&backdrop_color);
ctx.fill_rect(0.0, 0.0, 9999.0, 9999.0);
ctx.set_fill_color("#00000040");
ctx.fill_rounded_rect(rect.x + 4.0, rect.y + 4.0, rect.width, rect.height, 8.0);
let bg_color = rgba_to_hex(theme.background_color());
ctx.set_fill_color(&bg_color);
ctx.fill_rounded_rect(rect.x, rect.y, rect.width, rect.height, 8.0);
let border_color = rgba_to_hex(theme.border_color());
ctx.set_stroke_color(&border_color);
ctx.set_stroke_width(2.0);
ctx.stroke_rounded_rect(rect.x, rect.y, rect.width, rect.height, 8.0);
}
PanelType::Hideable { is_hidden, .. } => {
if *is_hidden {
let bg_color = rgba_to_hex(theme.background_color());
ctx.set_fill_color(&bg_color);
ctx.fill_rect(rect.x, rect.y, 32.0, rect.height);
} else {
let bg_color = rgba_to_hex(theme.background_color());
ctx.set_fill_color(&bg_color);
ctx.fill_rect(rect.x, rect.y, rect.width, rect.height);
let border_color = rgba_to_hex(theme.border_color());
ctx.set_stroke_color(&border_color);
ctx.set_stroke_width(1.0);
ctx.stroke_rect(rect.x, rect.y, rect.width, rect.height);
}
}
}
}