]> git.lizzy.rs Git - nothing.git/blobdiff - src/game/level/level_editor/color_picker.h
Merge pull request #1046 from tsoding/704
[nothing.git] / src / game / level / level_editor / color_picker.h
index a026ecd81b8bf4269e460dc2265fec78b686279a..af79482a67bd5797eb29f6ff3a338b269d523855 100644 (file)
@@ -3,22 +3,45 @@
 
 #include <stdbool.h>
 #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 {
-    Color color;
+    Slider sliders[COLOR_SLIDER_N];
 } ColorPicker;
 
 typedef struct LineStream LineStream;
 
+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_mouse_button(ColorPicker *color_picker,
-                              const SDL_MouseButtonEvent *event,
-                              bool *selected);
+int color_picker_event(ColorPicker *color_picker,
+                       const SDL_Event *event,
+                       const Camera *camera,
+                       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_