X-Git-Url: https://git.cinelerra-gg.org/git/?p=goodguy%2Fcinelerra.git;a=blobdiff_plain;f=cinelerra-5.1%2Fplugins%2Fshapewipe%2Fshapewipe.h;fp=cinelerra-5.1%2Fplugins%2Fshapewipe%2Fshapewipe.h;h=76b6efcea6e1be597f1e3b40ed578fd2ec8b5d51;hp=83ac047ca5abe0cf200d942d5830f9bcce91a077;hb=befe1fe45b4ac2b6430d43c6e6f6d8ecad9795e0;hpb=6ca0a7892ec6459a54fcb3ba3a223d1ddc5ce402 diff --git a/cinelerra-5.1/plugins/shapewipe/shapewipe.h b/cinelerra-5.1/plugins/shapewipe/shapewipe.h index 83ac047c..76b6efce 100644 --- a/cinelerra-5.1/plugins/shapewipe/shapewipe.h +++ b/cinelerra-5.1/plugins/shapewipe/shapewipe.h @@ -22,8 +22,18 @@ #ifndef SHAPEWIPE_H #define SHAPEWIPE_H +class ShapeWipeConfig; class ShapeWipeMain; class ShapeWipeWindow; +class ShapeWipeW2B; +class ShapeWipeB2W; +class ShapeWipeTumble; +class ShapeWipeFeather; +class ShapeWipeShape; +class ShapeWipePreserveAspectRatio; +class ShapePackage; +class ShapeUnit; +class ShapeEngine; #include "overlayframe.inc" #include "pluginvclient.h" @@ -69,33 +79,28 @@ public: ShapeWipeWindow *window; }; -class ShapeWipeShape : public BC_PopupTextBox +class ShapeWipeFeather : public BC_FSlider { public: - ShapeWipeShape(ShapeWipeMain *client, - ShapeWipeWindow *window, - int x, - int y, - int text_w, - int list_h); + ShapeWipeFeather(ShapeWipeMain *client, + ShapeWipeWindow *window, int x, int y); + char *get_caption(); int handle_event(); + ShapeWipeMain *client; ShapeWipeWindow *window; }; -class ShapeWipeAntiAlias : public BC_CheckBox +class ShapeWipeShape : public BC_PopupTextBox { public: - ShapeWipeAntiAlias(ShapeWipeMain *plugin, - ShapeWipeWindow *window, - int x, - int y); + ShapeWipeShape(ShapeWipeMain *client, ShapeWipeWindow *window, + int x, int y, int text_w, int list_h); int handle_event(); - ShapeWipeMain *plugin; + ShapeWipeMain *client; ShapeWipeWindow *window; }; - class ShapeWipePreserveAspectRatio : public BC_CheckBox { public: @@ -121,48 +126,91 @@ public: ShapeWipeMain *plugin; ShapeWipeW2B *left; ShapeWipeB2W *right; -// ShapeWipeFilename *filename_widget; ShapeWipeTumble *shape_tumbler; ShapeWipeShape *shape_text; + ShapeWipeFeather *shape_feather; ArrayList shapes; }; +class ShapeWipeConfig +{ +public: + ShapeWipeConfig(); + ~ShapeWipeConfig(); + void read_xml(KeyFrame *keyframe); + void save_xml(KeyFrame *keyframe); + + int direction; + float feather; + int preserve_aspect; + char shape_name[BCTEXTLEN]; +}; + class ShapeWipeMain : public PluginVClient { public: ShapeWipeMain(PluginServer *server); ~ShapeWipeMain(); -// required for all realtime plugins - int load_configuration(); - int process_realtime(VFrame *incoming, VFrame *outgoing); - void save_data(KeyFrame *keyframe); - void read_data(KeyFrame *keyframe); - PluginClientWindow* new_window(); + PLUGIN_CLASS_MEMBERS(ShapeWipeConfig) + int process_realtime(VFrame *input, VFrame *output); int uses_gui(); int is_transition(); - const char* plugin_title(); - int read_pattern_image(int new_frame_width, int new_frame_height); + void read_data(KeyFrame *keyframe); + void save_data(KeyFrame *keyframe); + + int read_pattern_image(char *shape_name, + int new_frame_width, int new_frame_height); void reset_pattern_image(); void init_shapes(); + VFrame *input, *output; + ShapeEngine *engine; ArrayList shape_paths; ArrayList shape_titles; int shapes_initialized; - int direction; - char filename[BCTEXTLEN]; - char last_read_filename[BCTEXTLEN]; - char shape_name[BCTEXTLEN]; + int threshold; + char current_filename[BCTEXTLEN]; char current_name[BCTEXTLEN]; unsigned char **pattern_image; unsigned char min_value; unsigned char max_value; int frame_width; int frame_height; - int antialias; int preserve_aspect; int last_preserve_aspect; }; + +class ShapePackage : public LoadPackage +{ +public: + ShapePackage(); + int y1, y2; +}; + +class ShapeUnit : public LoadClient +{ +public: + ShapeUnit(ShapeEngine *server); + ~ShapeUnit(); + void process_package(LoadPackage *package); + ShapeEngine *server; + unsigned char threshold; +}; + +class ShapeEngine : public LoadServer +{ +public: + ShapeEngine(ShapeWipeMain *plugin, + int total_clients, int total_packages); + ~ShapeEngine(); + + void init_packages(); + LoadClient *new_client(); + LoadPackage *new_package(); + ShapeWipeMain *plugin; +}; + #endif