X-Git-Url: http://git.cinelerra-gg.org/git/?p=goodguy%2Fhistory.git;a=blobdiff_plain;f=cinelerra-5.1%2Fplugins%2Fcrikey%2Fcrikey.h;h=21e602e7c669ff534484b5a21eaceb62f1469306;hp=3b8c1cfc532819eb73076b5e1ce82c431ec67148;hb=20002b54e92573aafc97cbc3a85ec529b35bb191;hpb=63ced327c156ea7fe4448a18b0b1b0f2571dce7e diff --git a/cinelerra-5.1/plugins/crikey/crikey.h b/cinelerra-5.1/plugins/crikey/crikey.h index 3b8c1cfc..21e602e7 100644 --- a/cinelerra-5.1/plugins/crikey/crikey.h +++ b/cinelerra-5.1/plugins/crikey/crikey.h @@ -20,8 +20,8 @@ -#ifndef EDGE_H -#define EDGE_H +#ifndef __CRIKEY_H__ +#define __CRIKEY_H__ #include "loadbalance.h" #include "pluginvclient.h" @@ -34,29 +34,44 @@ class CriKey; #define DRAW_MASK 2 #define DRAW_MODES 3 -#define KEY_SEARCH 0 -#define KEY_SEARCH_ALL 1 -#define KEY_POINT 2 -#define KEY_MODES 3 +enum { PT_E, PT_X, PT_Y, PT_T, PT_TAG, PT_SZ }; // enable, x,y,threshold, tag + +class CriKeyPoint +{ +public: + int tag, e; + float x, y, t; + + CriKeyPoint(int tag, int e, float x, float y, float t); + ~CriKeyPoint(); +}; +class CriKeyPoints : public ArrayList +{ +public: + CriKeyPoints() {} + ~CriKeyPoints() { remove_all_objects(); } +}; class CriKeyConfig { public: CriKeyConfig(); + ~CriKeyConfig(); int equivalent(CriKeyConfig &that); void copy_from(CriKeyConfig &that); void interpolate(CriKeyConfig &prev, CriKeyConfig &next, long prev_frame, long next_frame, long current_frame); void limits(); - static void set_target(int is_yuv, int color, float *target); - static void set_color(int is_yuv, float *target, int &color); - int color; + CriKeyPoints points; + int add_point(int tag, int e, float x, float y, float t); + int add_point(); + void del_point(int i); + float threshold; - int draw_mode, key_mode; - float point_x, point_y; - int drag; + int draw_mode; + int drag, selected; }; class CriKeyPackage : public LoadPackage @@ -78,6 +93,8 @@ public: LoadClient* new_client(); CriKey *plugin; + int set_color(int x, int y, float t); + float color[3], threshold; }; class CriKeyUnit : public LoadClient @@ -102,29 +119,20 @@ public: PLUGIN_CLASS_MEMBERS2(CriKeyConfig) int is_realtime(); void update_gui(); + int new_point(); + int set_target(float *color, int x, int y); void save_data(KeyFrame *keyframe); void read_data(KeyFrame *keyframe); int process_buffer(VFrame *frame, int64_t start_position, double frame_rate); void draw_alpha(VFrame *msk); - void draw_mask(VFrame *msk); - float diff_uint8(uint8_t *tp); - float diff_float(uint8_t *tp); - float (CriKey::*diff_pixel)(uint8_t *dp); - void min_key(int &ix, int &iy); - bool find_key(int &ix, int &iy, float threshold); - static void set_target(int is_yuv, int color, float *target) { - CriKeyConfig::set_target(is_yuv, color, target); - } - static void set_color(int is_yuv, float *target, int &color) { - CriKeyConfig::set_color(is_yuv, target, color); - } + void draw_edge(VFrame *frm); + void draw_mask(VFrame *frm); + void draw_point(VFrame *msk, CriKeyPoint *pt); CriKeyEngine *engine; - VFrame *src, *dst, *msk; - int w, h, color_model, bpp, comp, is_yuv, is_float; - - void get_color(int x, int y); - float target[3]; + VFrame *src, *edg, *msk; + int w, h, color_model, bpp, comp; + int is_yuv, is_float; }; #endif