rework crikey, fix uninited vars in listbox
[goodguy/history.git] / cinelerra-5.1 / plugins / crikey / crikeywindow.h
index 5af60d541c86f398d29edb6e432ce5a5fc52edad..22188eec1bdd1fb60afd7e9d846dc424f7a64ec2 100644 (file)
 #define __CRIKEYWINDOW_H__
 
 #include "guicast.h"
-#include "colorpicker.h"
 
 class CriKey;
 class CriKeyWindow;
 class CriKeyNum;
-class CriKeyColorButton;
-class CriKeyColorPicker;
+class CriKeyPointX;
+class CriKeyPointY;
 class CriKeyDrawMode;
 class CriKeyDrawModeItem;
-class CriKeyKeyMode;
-class CriKeyKeyModeItem;
 class CriKeyThreshold;
+class CriKeyDrag;
+class CriKeyPointList;
+class CriKeyNewPoint;
+class CriKeyDelPoint;
+class CriKeyPointUp;
+class CriKeyPointDn;
+class CriKeyReset;
+
 
 class CriKeyNum : public BC_TumbleTextBox
 {
 public:
        CriKeyWindow *gui;
-       float *output;
-       int handle_event();
 
-       CriKeyNum(CriKeyWindow *gui, int x, int y, float &output);
+       CriKeyNum(CriKeyWindow *gui, int x, int y, float output);
        ~CriKeyNum();
 };
-
-class CriKeyColorButton : public BC_GenericButton
+class CriKeyPointX : public CriKeyNum
 {
 public:
-       CriKeyColorButton(CriKeyWindow *gui, int x, int y);
+       CriKeyPointX(CriKeyWindow *gui, int x, int y, float output)
+        : CriKeyNum(gui, x, y, output) {}
+       ~CriKeyPointX() {}
 
        int handle_event();
-       CriKeyWindow *gui;
 };
-
-class CriKeyColorPicker : public ColorPicker
+class CriKeyPointY : public CriKeyNum
 {
 public:
-       CriKeyColorPicker(CriKeyColorButton *color_button);
-
-       void start(int color);
-       int handle_new_color(int color, int alpha);
-       void handle_done_event(int result);
+       CriKeyPointY(CriKeyWindow *gui, int x, int y, float output)
+        : CriKeyNum(gui, x, y, output) {}
+       ~CriKeyPointY() {}
 
-       CriKeyColorButton *color_button;
-       int color;
+       int handle_event();
 };
 
 class CriKeyDrawMode : public BC_PopupMenu
@@ -90,45 +89,109 @@ public:
        int id;
 };
 
-class CriKeyKeyMode : public BC_PopupMenu
+class CriKeyThreshold : public BC_FSlider
 {
-       const char *key_modes[KEY_MODES];
 public:
-       CriKeyKeyMode(CriKeyWindow *gui, int x, int y);
+       CriKeyThreshold(CriKeyWindow *gui, int x, int y, int w);
+       int handle_event();
+       CriKeyWindow *gui;
+};
 
-       void create_objects();
-       void update(int mode, int send=1);
+class CriKeyDrag : public BC_CheckBox
+{
+public:
+       CriKeyDrag(CriKeyWindow *gui, int x, int y);
+
+       int handle_event();
        CriKeyWindow *gui;
-       int mode;
 };
-class CriKeyKeyModeItem : public BC_MenuItem
+
+class CriKeyPointList : public BC_ListBox
 {
 public:
-       CriKeyKeyModeItem(const char *text, int id)
-       : BC_MenuItem(text) { this->id = id; }
+       CriKeyPointList(CriKeyWindow *gui, CriKey *plugin, int x, int y);
+       ~CriKeyPointList();
 
        int handle_event();
+       int selection_changed();
+       int column_resize_event();
+       ArrayList<BC_ListBoxItem*> cols[PT_SZ];
+       void clear();
+       void new_point(const char *ep, const char *xp, const char *yp,
+               const char *tp, const char *tag);
+       void del_point(int i);
+       void set_point(int i, int c, float v);
+       void set_point(int i, int c, const char *cp);
+       int set_selected(int k);
+       void update(int k);
+       void update_list(int k);
+
+
        CriKeyWindow *gui;
-       int id;
+       CriKey *plugin;
+       const char *titles[PT_SZ];
+       int widths[PT_SZ];
 };
 
-class CriKeyThreshold : public BC_FSlider
+class CriKeyNewPoint : public BC_GenericButton
 {
 public:
-       CriKeyThreshold(CriKeyWindow *gui, int x, int y, int w);
+       CriKeyNewPoint(CriKeyWindow *gui, CriKey *plugin, int x, int y);
+       ~CriKeyNewPoint();
+
        int handle_event();
+
        CriKeyWindow *gui;
+       CriKey *plugin;
 };
 
-class CriKeyDrag : public BC_CheckBox
+class CriKeyDelPoint : public BC_GenericButton
 {
 public:
-       CriKeyDrag(CriKeyWindow *gui, int x, int y);
+       CriKeyDelPoint(CriKeyWindow *gui, CriKey *plugin, int x, int y);
+       ~CriKeyDelPoint();
+
+       int handle_event();
+
+       CriKey *plugin;
+       CriKeyWindow *gui;
+};
+
+class CriKeyPointUp : public BC_GenericButton
+{
+public:
+       CriKeyPointUp(CriKeyWindow *gui, int x, int y);
+       ~CriKeyPointUp();
+
+       int handle_event();
+
+       CriKeyWindow *gui;
+};
+
+class CriKeyPointDn : public BC_GenericButton
+{
+public:
+       CriKeyPointDn(CriKeyWindow *gui, int x, int y);
+       ~CriKeyPointDn();
 
        int handle_event();
+
        CriKeyWindow *gui;
 };
 
+class CriKeyReset : public BC_GenericButton
+{
+public:
+       CriKeyReset(CriKeyWindow *gui, CriKey *plugin, int x, int y);
+       ~CriKeyReset();
+
+       int handle_event();
+
+       CriKey *plugin;
+       CriKeyWindow *gui;
+};
+
+
 class CriKeyWindow : public PluginClientWindow
 {
 public:
@@ -136,25 +199,30 @@ public:
        ~CriKeyWindow();
 
        void create_objects();
-       void draw_key(int mode);
-       void update_color(int color);
        void update_gui();
        void start_color_thread();
        int grab_event(XEvent *event);
        void done_event(int result);
+       int check_configure_change(int ret);
+       void send_configure_change();
 
        CriKey *plugin;
        CriKeyThreshold *threshold;
        CriKeyDrawMode *draw_mode;
-       CriKeyKeyMode *key_mode;
 
-       CriKeyColorButton *color_button;
-       CriKeyColorPicker *color_picker;
-       int color_x, color_y, key_x, key_y;
        BC_Title *title_x, *title_y;
-       CriKeyNum *point_x, *point_y;
-       int dragging;
+       CriKeyPointX *point_x;
+       CriKeyPointY *point_y;
+       CriKeyNewPoint *new_point;
+       CriKeyDelPoint *del_point;
+       CriKeyPointUp *point_up;
+       CriKeyPointDn *point_dn;
+       int dragging, pending_config;
+       float last_x, last_y;
        CriKeyDrag *drag;
+       CriKeyPointList *point_list;
+       CriKeyReset *reset;
+       BC_Title *notes;
 };
 
 #endif