ソースを参照

LibGUI: Allow disabling the alpha channel in ColorInput widgets

Andreas Kling 5 年 前
コミット
c7107385ee
2 ファイル変更19 行追加1 行削除
  1. 13 0
      Libraries/LibGUI/ColorInput.cpp
  2. 6 1
      Libraries/LibGUI/ColorInput.h

+ 13 - 0
Libraries/LibGUI/ColorInput.cpp

@@ -70,6 +70,19 @@ void ColorInput::set_color(Color color)
     set_text(color.to_string());
     set_text(color.to_string());
 };
 };
 
 
+void ColorInput::set_color_has_alpha_channel(bool has_alpha)
+{
+    if (m_color_has_alpha_channel == has_alpha)
+        return;
+
+    m_color_has_alpha_channel = has_alpha;
+    m_color.set_alpha(0xff);
+    if (!has_alpha)
+        set_text(m_color.to_string_without_alpha());
+    else
+        set_text(m_color.to_string());
+}
+
 void ColorInput::mousedown_event(MouseEvent& event)
 void ColorInput::mousedown_event(MouseEvent& event)
 {
 {
     if (event.button() == MouseButton::Left) {
     if (event.button() == MouseButton::Left) {

+ 6 - 1
Libraries/LibGUI/ColorInput.h

@@ -35,9 +35,11 @@ class ColorInput final : public TextEditor {
     C_OBJECT(ColorInput);
     C_OBJECT(ColorInput);
 
 
 public:
 public:
-    ColorInput();
     virtual ~ColorInput() override;
     virtual ~ColorInput() override;
 
 
+    bool has_alpha_channel() const { return m_color_has_alpha_channel; }
+    void set_color_has_alpha_channel(bool);
+
     void set_color(Color);
     void set_color(Color);
     Color color() { return m_color; }
     Color color() { return m_color; }
 
 
@@ -52,11 +54,14 @@ protected:
     virtual void paint_event(PaintEvent&) override;
     virtual void paint_event(PaintEvent&) override;
 
 
 private:
 private:
+    ColorInput();
+
     Gfx::Rect color_rect() const;
     Gfx::Rect color_rect() const;
     void set_color_without_changing_text(Color);
     void set_color_without_changing_text(Color);
 
 
     Color m_color;
     Color m_color;
     String m_color_picker_title { "Select color" };
     String m_color_picker_title { "Select color" };
+    bool m_color_has_alpha_channel { true };
 };
 };
 
 
 }
 }