]> git.lizzy.rs Git - nothing.git/blobdiff - src/game/level/level_editor/color_picker.h
(#1118) Inner selection overlay for Rect Layer
[nothing.git] / src / game / level / level_editor / color_picker.h
index b0ec76d3eaa40440e5c235c7d4f0fc33bef30928..2d60a085fdb132ae9ca6141f7ef3f9a03d6ede30 100644 (file)
@@ -1,16 +1,47 @@
 #ifndef COLOR_PICKER_H_
 #define COLOR_PICKER_H_
 
+#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 {
-    ProtoRect *proto_rect;
-    Vec position;
+    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);
+
 int color_picker_render(const ColorPicker *color_picker,
-                        Camera *camera);
-int color_picker_update(ColorPicker *color_picker,
-                        float delta_time);
+                        const Camera *camera);
 int color_picker_event(ColorPicker *color_picker,
-                       const SDL_Event *event);
+                       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_