use egui::{Color32, WidgetText};
use crate::ui::ChangeButton;
use gled_model::asset::{palette::Color, scene::color::SceneInstanceColor};
pub(crate) trait ToColor32 {
fn color32(&self) -> Color32;
}
impl ToColor32 for Color {
fn color32(&self) -> Color32 {
let [r, g, b] = self.rgb8();
Color32::from_rgb(r, g, b)
}
}
impl ToColor32 for SceneInstanceColor {
fn color32(&self) -> Color32 {
let [r, g, b] = self.rgb8();
Color32::from_rgb(r, g, b)
}
}
impl ChangeButton for SceneInstanceColor {
fn change_button(&mut self, ui: &mut egui::Ui) -> bool {
egui::ComboBox::new("scene_instance_color", "")
.selected_text(WidgetText::Text(format!("{self:?}")).background_color(self.color32()))
.show_ui(ui, |ui| {
ui.selectable_value(self, SceneInstanceColor::Red, "Red");
ui.selectable_value(self, SceneInstanceColor::Green, "Green");
ui.selectable_value(self, SceneInstanceColor::Blue, "Blue");
ui.selectable_value(self, SceneInstanceColor::White, "White");
ui.selectable_value(self, SceneInstanceColor::Orange, "Orange");
ui.selectable_value(self, SceneInstanceColor::Yellow, "Yellow");
ui.selectable_value(self, SceneInstanceColor::Purple, "Purple");
ui.selectable_value(self, SceneInstanceColor::Pink, "Pink");
ui.selectable_value(self, SceneInstanceColor::Black, "Black");
})
.response
.changed()
}
}