X-Git-Url: https://cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Ftrackcanvas.h;h=8a3d2b6e864e0ba59cc062d980074fc105a4f26b;hb=84ac8a2bb3357c04a3f67cf763b0f61ddbbd021d;hp=b42660c57bb1a29c26bb0a586bfbd5376b3b3b2f;hpb=7fd85fb66168f6b518c5f2d73e04036e87faa0e1;p=goodguy%2Fcinelerra.git diff --git a/cinelerra-5.1/cinelerra/trackcanvas.h b/cinelerra-5.1/cinelerra/trackcanvas.h index b42660c5..8a3d2b6e 100644 --- a/cinelerra-5.1/cinelerra/trackcanvas.h +++ b/cinelerra-5.1/cinelerra/trackcanvas.h @@ -43,20 +43,13 @@ #include "resourcepixmap.inc" #include "timelinepane.inc" #include "track.inc" +#include "trackcanvas.inc" #include "tracks.inc" #include "transitionhandles.inc" #include "keyframe.inc" #include -// draw mode: -// NORMAL_DRAW causes incremental drawing of pixmaps. Used for navigation and index refresh. -// FORCE_REDRAW causes all resource pixmaps to be redrawn from scratch. Used by editing. -// IGNORE_THREAD causes resource pixmaps to ignore picon thread. Used by Piconthread. -#define NORMAL_DRAW 1 -#define FORCE_REDRAW 2 -#define IGNORE_THREAD 3 - class TrackCanvas : public BC_SubWindow { public: @@ -106,41 +99,18 @@ public: void draw_automation(); void draw_hard_edges(); void draw_inout_points(); - void draw_auto(Auto *current, - int x, - int y, - int center_pixel, - int zoom_track); + void draw_auto(Auto *current, int x, int y, + int center_pixel, int data_h); void draw_floatauto(FloatAuto *current, - int x, - int y, - int in_x, - int in_y, - int out_x, - int out_y, - int center_pixel, - int zoom_track, - int color); - int test_auto(Auto *current, - int x, - int y, - int center_pixel, - int zoom_track, - int cursor_x, - int cursor_y, - int buttonpress); - int test_floatauto(FloatAuto *current, - int x, - int y, - int in_x, - int in_y, - int out_x, - int out_y, - int center_pixel, - int zoom_track, - int cursor_x, - int cursor_y, - int buttonpress, + int x_offset, int center_pixel, int data_h, int color, + double unit_start, double zoom_units, double yscale, + int autogrouptype); + int test_auto(Auto *current, int x, int y, + int center_pixel, int data_h, + int cursor_x, int cursor_y, int buttonpress); + int test_floatauto(FloatAuto *current, int buttonpress, + int center_pixel, int data_h, int cursor_x, int cursor_y, + double unit_start, double zoom_units, double yscale, int autogrouptype); void draw_floatline(int center_pixel, FloatAuto *previous, @@ -242,24 +212,13 @@ public: // if reference is nonzero and a FloatAuto, // the result is made relative to the value in reference. float percentage_to_value(float percentage, - int is_toggle, - Auto *reference, - int autogrouptype); - + int is_toggle, Auto *reference, int autogrouptype); // Get x and y of a FloatAuto relative to center_pixel - void calculate_auto_position(double *x, - double *y, - double *in_x, - double *in_y, - double *out_x, - double *out_y, - Auto *current, - double unit_start, - double zoom_units, - double yscale, - int autogrouptype); - - void fill_ganged_autos(int all, float change, Track *skip, FloatAuto *fauto); + void calculate_auto_position(int edge, double *x, double *y, + double *in_x, double *in_y, double *out_x, double *out_y, + Auto *current, double unit_start, double zoom_units, + double yscale, int autogrouptype); + void fill_ganged_autos(int gang, float change, Track *skip, FloatAuto *fauto); void update_ganged_autos(float change, Track *skip, FloatAuto *fauto); void clear_ganged_autos(); @@ -267,13 +226,14 @@ public: void draw_loop_points(); void draw_transitions(); void draw_drag_handle(); + void draw_selected_edits(EDL *edl, int dx, int dy, int color0, int color1); void draw_plugins(); void refresh_plugintoggles(); void update_edit_handles(Edit *edit, int64_t edit_x, int64_t edit_y, int64_t edit_w, int64_t edit_h); void update_transitions(); void update_keyframe_handles(Track *track); // Draw everything to synchronize with the view. - void draw(int mode = 0, int hide_cursor = 1); + void draw(int mode, int hide_cursor); // Draw resources during index building void draw_indexes(Indexable *indexable); // Get location of edit on screen without boundary checking @@ -283,6 +243,10 @@ public: void get_pixmap_size(Edit *edit, int64_t edit_x, int64_t edit_w, int64_t &pixmap_x, int64_t &pixmap_w, int64_t &pixmap_h); ResourcePixmap* create_pixmap(Edit *edit, int64_t edit_x, int64_t pixmap_x, int64_t pixmap_w, int64_t pixmap_h); void update_cursor(int flush); + void draw_selected(int x, int y, int w, int h); + int arrow_mode(); + int ibeam_mode(); + // Get edit and handle the cursor is over int do_edit_handles(int cursor_x, int cursor_y, @@ -311,6 +275,8 @@ public: int do_tracks(int cursor_x, int cursor_y, int button_press); + int test_track_group(EDL *group, Track *first_track, double &pos); + int edit_intersects(Track *track, Edit *src_edit, double &pos); int test_resources(int cursor_x, int cursor_y); int do_plugins(int cursor_x, int cursor_y, @@ -341,10 +307,11 @@ public: int start_selection(double position); int drag_motion_event(); int drag_stop_event(); - int drag_motion(Track **over_track, - Edit **over_edit, - PluginSet **over_pluginset, - Plugin **over_plugin); + int drag_motion(Track **over_track, Edit **over_edit, + PluginSet **over_pluginset, Plugin **over_plugin); + int drag_cursor_motion(int cursor_x, int cursor_y, + Track **over_track, Edit **over_edit, + PluginSet **over_pluginset, Plugin **over_plugin); int drag_stop(int *redraw); int64_t drop_edit_position (int *is_insertion, Edit *moved_edit, int64_t moved_edit_length); int64_t drop_plugin_position(PluginSet *plugin_set, Plugin *moved_plugin); @@ -359,13 +326,12 @@ public: int update_drag_toggleauto(int cursor_x, int cursor_y); int update_drag_auto(int cursor_x, int cursor_y); int update_drag_pluginauto(int cursor_x, int cursor_y); - void show_message(Auto *current, int show_curve_type, const char *fmt, ...); + void show_message(Auto *current, int box_color, const char *fmt, ...); // Update status bar to reflect drag operation void update_drag_caption(); int get_title_h(); - int resource_h(); // Display hourglass if timer expired void test_timer();