X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Faudio_region_view.h;h=10159d0cfbf6970716051d7952ebf3ae803d033f;hb=5e0c6af4062a2982fb90ad318973ab1d4beed2b9;hp=5afa63b03b911da6f3bb6bc7f047906003265baf;hpb=b02e95f201a6c665e7f1d529b558dca2f4a6924e;p=ardour.git diff --git a/gtk2_ardour/audio_region_view.h b/gtk2_ardour/audio_region_view.h index 5afa63b03b..10159d0cfb 100644 --- a/gtk2_ardour/audio_region_view.h +++ b/gtk2_ardour/audio_region_view.h @@ -35,7 +35,7 @@ namespace ARDOUR { class AudioRegion; - class PeakData; + struct PeakData; }; class AudioTimeAxisView; @@ -79,30 +79,23 @@ class AudioRegionView : public RegionView void temporarily_hide_envelope (); ///< Dangerous! void unhide_envelope (); ///< Dangerous! - void set_envelope_visible (bool); - void set_waveform_visible (bool yn); - void set_waveform_shape (ARDOUR::WaveformShape); - void set_waveform_scale (ARDOUR::WaveformScale); - - bool waveform_rectified() const { return _flags & WaveformRectified; } - bool waveform_logscaled() const { return _flags & WaveformLogScaled; } - bool waveform_visible() const { return _flags & WaveformVisible; } + void update_envelope_visibility (); void add_gain_point_event (ArdourCanvas::Item *item, GdkEvent *event); void remove_gain_point_event (ArdourCanvas::Item *item, GdkEvent *event); - AudioRegionGainLine* get_gain_line() const { return gain_line; } + boost::shared_ptr get_gain_line() const { return gain_line; } void region_changed (const PBD::PropertyChange&); void envelope_active_changed (); GhostRegion* add_ghost (TimeAxisView&); - void reset_fade_in_shape_width (framecnt_t); - void reset_fade_out_shape_width (framecnt_t); + void reset_fade_in_shape_width (boost::shared_ptr ar, framecnt_t); + void reset_fade_out_shape_width (boost::shared_ptr ar, framecnt_t); - void show_fade_line(framepos_t pos); - void hide_fade_line(); + framepos_t get_fade_in_shape_width (); + framepos_t get_fade_out_shape_width (); void set_fade_visibility (bool); void update_coverage_frames (LayerDisplay); @@ -117,6 +110,29 @@ class AudioRegionView : public RegionView void thaw_after_trim (); + void drag_start (); + void drag_end (); + + void redraw_start_xfade_to (boost::shared_ptr, framecnt_t); + void redraw_end_xfade_to (boost::shared_ptr, framecnt_t); + void redraw_start_xfade (); + void redraw_end_xfade (); + + void hide_xfades (); + void hide_start_xfade (); + void hide_end_xfade (); + void show_xfades (); + void show_start_xfade (); + void show_end_xfade (); + + bool start_xfade_visible () const { + return _start_xfade_visible; + } + + bool end_xfade_visible () const { + return _end_xfade_visible; + } + protected: /* this constructor allows derived types @@ -140,13 +156,21 @@ class AudioRegionView : public RegionView ArdourCanvas::Polygon* fade_out_shape; ArdourCanvas::SimpleRect* fade_in_handle; ///< fade in handle, or 0 ArdourCanvas::SimpleRect* fade_out_handle; ///< fade out handle, or 0 - ArdourCanvas::SimpleLine* fade_position_line; - AudioRegionGainLine * gain_line; + ArdourCanvas::Line *start_xfade_in; + ArdourCanvas::Line *start_xfade_out; + ArdourCanvas::SimpleRect* start_xfade_rect; + bool _start_xfade_visible; + + ArdourCanvas::Line *end_xfade_in; + ArdourCanvas::Line *end_xfade_out; + ArdourCanvas::SimpleRect* end_xfade_rect; + bool _end_xfade_visible; + + boost::shared_ptr gain_line; double _amplitude_above_axis; - uint32_t _flags; uint32_t fade_color; void reset_fade_shapes (); @@ -164,8 +188,6 @@ class AudioRegionView : public RegionView void create_one_wave (uint32_t, bool); void peaks_ready_handler (uint32_t); - void set_flags (XMLNode *); - void store_flags (); void set_colors (); void compute_colors (Gdk::Color const &); @@ -179,14 +201,25 @@ class AudioRegionView : public RegionView void transients_changed(); -private: + AutomationLine::VisibleAspects automation_line_visibility () const; +private: void setup_fade_handle_positions (); + void parameter_changed (std::string const &); + void setup_waveform_visibility (); + void setup_waveform_shape (); + void setup_waveform_scale (); + /** A ScopedConnection for each PeaksReady callback (one per channel). Each member * may be 0 if no connection exists. */ std::vector _data_ready_connections; + + /** RegionViews that we hid the xfades for at the start of the current drag; + * first list is for start xfades, second list is for end xfades. + */ + std::pair, std::list > _hidden_xfades; }; #endif /* __gtk_ardour_audio_region_view_h__ */