]> git.lizzy.rs Git - nothing.git/blobdiff - src/game/level/level_editor/color_picker.h
(#1010) Make position of ColorPicker customizable
[nothing.git] / src / game / level / level_editor / color_picker.h
index 1f64bea22ac3f40bc708dbcc387503e74c5090f9..3613a6078518f8663c4fe6fbf3586bfa1ab71768 100644 (file)
@@ -5,11 +5,15 @@
 #include "layer.h"
 #include "ui/slider.h"
 
+typedef enum {
+    COLOR_SLIDER_HUE = 0,
+    COLOR_SLIDER_SAT,
+    COLOR_SLIDER_LIT,
+    COLOR_SLIDER_N
+} ColorPickerSlider;
+
 typedef struct {
-    // TODO(#933): ColorPicker should use array of sliders
-    Slider hue;
-    Slider saturation;
-    Slider lightness;
+    Slider sliders[COLOR_SLIDER_N];
 } ColorPicker;
 
 typedef struct LineStream LineStream;
@@ -19,12 +23,25 @@ ColorPicker create_color_picker_from_rgba(Color color);
 int color_picker_read_from_line_stream(ColorPicker *color_picker,
                                        LineStream *line_stream);
 
-LayerPtr color_picker_as_layer(ColorPicker *color_picker);
-
 int color_picker_render(const ColorPicker *color_picker,
-                        Camera *camera);
-int color_picker_event(ColorPicker *color_picker, const SDL_Event *event, int *selected);
+                        Camera *camera,
+                        Point position);
+int color_picker_event(ColorPicker *color_picker,
+                       const SDL_Event *event,
+                       int *selected);
 
 Color color_picker_rgba(const ColorPicker *color_picker);
 
+static inline
+int color_picker_drag(const ColorPicker *color_picker)
+{
+    int result = 0;
+
+    for (int i = 0; i < COLOR_SLIDER_N; ++i) {
+        result = result || color_picker->sliders[i].drag;
+    }
+
+    return result;
+}
+
 #endif  // COLOR_PICKER_H_