hard edges rework, add hard edge in gwdw, config.ac nv/cuda tweaks, message log warn...
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / trackcanvas.h
index b42660c57bb1a29c26bb0a586bfbd5376b3b3b2f..4b9c4eba22736a68f8c5be3f8fd9013260ea6f44 100644 (file)
 #include "resourcepixmap.inc"
 #include "timelinepane.inc"
 #include "track.inc"
+#include "trackcanvas.inc"
 #include "tracks.inc"
 #include "transitionhandles.inc"
 #include "keyframe.inc"
 
 #include <stdarg.h>
 
-// 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:
@@ -267,13 +260,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 +277,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 +309,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 +341,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,7 +360,7 @@ 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();