sketcher add scale/rotate, tweak mouse accel
[goodguy/cinelerra.git] / cinelerra-5.1 / plugins / sketcher / sketcherwindow.h
index 55dc4f4ef38169a5ee689a7daf31597c3f891511..3353ffac845e1dfa1d3d734019931547f242e701 100644 (file)
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
  */
 
-#ifndef __CRIKEYWINDOW_H__
-#define __CRIKEYWINDOW_H__
+#ifndef __SKETCHERWINDOW_H__
+#define __SKETCHERWINDOW_H__
 
 #include "sketcher.h"
 #include "guicast.h"
@@ -33,13 +32,13 @@ class SketcherCurveType;
 class SketcherCurvePenItem;
 class SketcherCurvePen;
 class SketcherCurveColor;
-class SketcherCurveColorPicker;
-class SketcherCurveColorThread;
 class SketcherNewCurve;
 class SketcherDelCurve;
 class SketcherCurveUp;
 class SketcherCurveDn;
 class SketcherCurveWidth;
+class SketcherAliasItem;
+class SketcherAliasing;
 class SketcherCurveList;
 class SketcherPointX;
 class SketcherPointY;
@@ -54,6 +53,7 @@ class SketcherPointUp;
 class SketcherPointDn;
 class SketcherResetCurves;
 class SketcherResetPoints;
+class SketcherHelp;
 class SketcherWindow;
 
 
@@ -98,50 +98,19 @@ public:
        int pen;
 };
 
-class SketcherCurveColor : public BC_Button
+class SketcherCurveColor : public ColorBoxButton
 {
 public:
-       SketcherCurveColor(SketcherWindow *gui, int x, int y, int w, int h);
+       SketcherCurveColor(SketcherWindow *gui,
+               int x, int y, int w, int h, int color, int alpha);
        ~SketcherCurveColor();
 
-       void set_color(int color);
-       void update_gui(int color);
-       int handle_event();
-
-       int color;
-       VFrame *vframes[3];
-       SketcherWindow *gui;
-};
-
-class SketcherCurveColorPicker : public ColorPicker
-{
-public:
-       SketcherCurveColorPicker(SketcherWindow *gui, SketcherCurveColor *curve_color);
-       ~SketcherCurveColorPicker();
-       void start(int color);
        int handle_new_color(int color, int alpha);
-       void update_gui();
        void handle_done_event(int result);
 
-       SketcherWindow *gui;
        int color;
-       SketcherCurveColor *color_button;
-       SketcherCurveColorThread *color_update;
-};
-
-class SketcherCurveColorThread : public Thread
-{
-public:
-       SketcherCurveColorThread(SketcherCurveColorPicker *color_picker);
-       ~SketcherCurveColorThread();
-
-       void start();
-       void stop();
-       void run();
-
-       SketcherCurveColorPicker *color_picker;
-       int done;
-       Condition *update_lock;
+       VFrame *vframes[3];
+       SketcherWindow *gui;
 };
 
 class SketcherNewCurve : public BC_GenericButton
@@ -201,6 +170,30 @@ public:
        int width;
 };
 
+class SketcherAliasItem : public BC_MenuItem
+{
+public:
+       SketcherAliasItem(SketcherAliasing *popup, int v);
+       int handle_event();
+
+       SketcherAliasing *popup;
+       int v;
+};
+
+class SketcherAliasing : public BC_PopupMenu
+{
+public:
+       SketcherAliasing(SketcherWindow *gui, Sketcher *plugin,
+                       int x, int y);
+       ~SketcherAliasing();
+
+       const char *alias_to_text(int alias);
+       void create_objects();
+
+       Sketcher *plugin;
+       SketcherWindow *gui;
+};
+
 class SketcherCurveList : public BC_ListBox
 {
 public:
@@ -381,6 +374,16 @@ public:
        SketcherWindow *gui;
 };
 
+class SketcherHelp : public BC_CheckBox
+{
+public:
+       SketcherHelp(SketcherWindow *gui, Sketcher *plugin, int x, int y);
+       ~SketcherHelp();
+       int handle_event();
+
+       Sketcher *plugin;
+       SketcherWindow *gui;
+};
 
 class SketcherWindow : public PluginClientWindow
 {
@@ -389,8 +392,8 @@ public:
        ~SketcherWindow();
 
        void create_objects();
+       void done_event(int result);
        void update_gui();
-       void start_color_thread(SketcherCurveColor *curve_color);
        int grab_event(XEvent *event);
        int do_grab_event(XEvent *event);
        int grab_button_press(XEvent *event);
@@ -404,14 +407,15 @@ public:
        SketcherCurveType *curve_type;
        SketcherCurvePen *curve_pen;
        SketcherCurveColor *curve_color;
-       SketcherCurveColorPicker *color_picker;
        SketcherNewCurve *new_curve;
        SketcherDelCurve *del_curve;
        SketcherCurveUp *curve_up;
        SketcherCurveDn *curve_dn;
        SketcherCurveWidth *curve_width;
+       SketcherAliasing *aliasing;
        SketcherCurveList *curve_list;
        SketcherResetCurves *reset_curves;
+       SketcherHelp *help;
 
        SketcherResetPoints *reset_points;
        SketcherDrag *drag;
@@ -429,12 +433,15 @@ public:
        float projector_x, projector_y, projector_z;
        int track_w, track_h;
        int new_points;
-       float cursor_x, cursor_y;
+       int cursor_x, cursor_y;
        float output_x, output_y;
+       float track_x, track_y;
        int state, dragging;
        int pending_motion, pending_config;
+       int helped, help_y, help_h;
        XEvent motion_event;
        float last_x, last_y;
+       int64_t last_time;
        BC_Title *notes0, *notes1, *notes2, *notes3;
 };
 #endif