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(),
}
~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);
};
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 *>
{
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 *>
{
public:
SketcherConfig();
~SketcherConfig();
+ void read_data(KeyFrame *keyframe);
+ void save_data(KeyFrame *keyframe);
SketcherCurves curves;
int equivalent(SketcherConfig &that);
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
~Sketcher();
PLUGIN_CLASS_MEMBERS2(SketcherConfig)
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);
OverlayFrame *overlay_frame;
int w, h, color_model, bpp, comp;
int is_yuv, is_float;
+ int drag;
+ int cv_selected, pt_selected;
};
#endif