cin_db Makefile tweak, awdw vicon stop draw lock rework,
[goodguy/cinelerra.git] / cinelerra-5.1 / plugins / sketcher / sketcher.h
index 1ddd5a478635d795b1dc3d441e861cce29078100..3fb1afb1e27555c04f453ef98d62bccccc776de0 100644 (file)
@@ -46,6 +46,7 @@ public:
        int n;
        uint8_t *msk;
 
+       int draw_mask(int x, int y);
        SketcherVPen(VFrame *vfrm, int n)
         : VFrame(vfrm->get_data(), -1, vfrm->get_y()-vfrm->get_data(),
            vfrm->get_u()-vfrm->get_data(), vfrm->get_v()-vfrm->get_data(),
@@ -57,40 +58,38 @@ public:
        }
        ~SketcherVPen() { delete [] msk; }
 
-       void draw_line(float x1, float y1, float x2, float y2) {
-               VFrame::draw_line(int(x1+.5f),int(y1+.5f), int(x2+.5f),int(y2+.5f));
-       }
        void draw_smooth(float x1, float y1, float x2, float y2, float x3, float y3) {
                VFrame::draw_smooth(int(x1+.5f),int(y1+.5f),
                        int(x2+.5f),int(y2+.5f), int(x3+.5f),int(y3+.5f));
        }
 
-       virtual int draw_pixel(int x, int y) = 0;
+       virtual int draw_pixel(float x, float y, float a) = 0;
+       int draw_pixel(float x, float y, float frac, int axis);
 };
 
 class SketcherPenSquare : public SketcherVPen
 {
 public:
        SketcherPenSquare(VFrame *vfrm, int n) : SketcherVPen(vfrm, n) {}
-       int draw_pixel(int x, int y);
+       int draw_pixel(float x, float y, float a);
 };
 class SketcherPenPlus : public SketcherVPen
 {
 public:
        SketcherPenPlus(VFrame *vfrm, int n) : SketcherVPen(vfrm, n) {}
-       int draw_pixel(int x, int y);
+       int draw_pixel(float x, float y, float a);
 };
 class SketcherPenSlant : public SketcherVPen
 {
 public:
        SketcherPenSlant(VFrame *vfrm, int n) : SketcherVPen(vfrm, n) {}
-       int draw_pixel(int x, int y);
+       int draw_pixel(float x, float y, float a);
 };
 class SketcherPenXlant : public SketcherVPen
 {
 public:
        SketcherPenXlant(VFrame *vfrm, int n) : SketcherVPen(vfrm, n) {}
-       int draw_pixel(int x, int y);
+       int draw_pixel(float x, float y, float a);
 };
 
 
@@ -110,6 +109,7 @@ public:
        void save_data(FileXML &output);
        void read_data(FileXML &input);
        static const char *types[ARC_SZ];
+       void update_parameter(SketcherPoint *the, SketcherPoint *src);
 };
 class SketcherPoints : public ArrayList<SketcherPoint *>
 {
@@ -140,7 +140,8 @@ public:
        double nearest_point(int &pi, coord x, coord y);
 
        SketcherVPen *new_vpen(VFrame *out);
-       void draw(VFrame *img);
+       void draw(VFrame *img, int flags);
+       void update_parameter(SketcherCurve *the, SketcherCurve *src);
 };
 class SketcherCurves : public ArrayList<SketcherCurve *>
 {
@@ -155,6 +156,8 @@ class SketcherConfig
 public:
        SketcherConfig();
        ~SketcherConfig();
+       void read_data(KeyFrame *keyframe);
+       void save_data(KeyFrame *keyframe);
 
        SketcherCurves curves;
        int equivalent(SketcherConfig &that);
@@ -162,11 +165,11 @@ public:
        void interpolate(SketcherConfig &prev, SketcherConfig &next,
                long prev_frame, long next_frame, long current_frame);
        double nearest_point(int &ci, int &pi, coord x, coord y);
+       int new_curve(int pen, int width, int color);
        void limits();
        void dump();
 
-       int drag;
-       int cv_selected, pt_selected;
+       int aliasing;
 };
 
 class Sketcher : public PluginVClient
@@ -178,8 +181,13 @@ public:
        int is_realtime();
        int is_synthesis();
        void update_gui();
+       void render_gui(void *data);
+       int is_dragging();
        void save_data(KeyFrame *keyframe);
        void read_data(KeyFrame *keyframe);
+       void span_keyframes(KeyFrame *src, int64_t start, int64_t end);
+       void update_parameter(SketcherConfig &prev_config, SketcherConfig &src_config,
+               KeyFrame *keyframe);
        int new_curve(int pen, int width, int color);
        int new_curve();
        int new_point(SketcherCurve *cv, int arc, coord x, coord y, int idx=-1);
@@ -193,6 +201,8 @@ public:
        OverlayFrame *overlay_frame;
        int w, h, color_model, bpp, comp;
        int is_yuv, is_float;
+       int drag;
+       int cv_selected, pt_selected;
 };
 
 #endif