X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=gtk2_ardour%2Faudio_region_view.h;h=773e136952ee398629bb8943125d08a959a9d1af;hb=c40437430acf4b65d8acb8b084eae8cd2f6f5402;hp=270f9821463c5d6330552a69df60e0861507caab;hpb=27dd925f42911c527d8a4ffba3225dbac3c62bac;p=ardour.git diff --git a/gtk2_ardour/audio_region_view.h b/gtk2_ardour/audio_region_view.h index 270f982146..773e136952 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; @@ -61,7 +61,6 @@ class AudioRegionView : public RegionView bool recording, TimeAxisViewItem::Visibility); - AudioRegionView (const AudioRegionView& other); AudioRegionView (const AudioRegionView& other, boost::shared_ptr); ~AudioRegionView (); @@ -80,7 +79,7 @@ class AudioRegionView : public RegionView void temporarily_hide_envelope (); ///< Dangerous! void unhide_envelope (); ///< Dangerous! - void set_envelope_visible (bool); + void update_envelope_visibility (); void set_waveform_visible (bool yn); void set_waveform_shape (ARDOUR::WaveformShape); void set_waveform_scale (ARDOUR::WaveformScale); @@ -88,24 +87,26 @@ class AudioRegionView : public RegionView bool waveform_rectified() const { return _flags & WaveformRectified; } bool waveform_logscaled() const { return _flags & WaveformLogScaled; } bool waveform_visible() const { return _flags & WaveformVisible; } - bool envelope_visible() const { return _flags & EnvelopeVisible; } 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 (nframes_t); - void reset_fade_out_shape_width (nframes_t); + void reset_fade_in_shape_width (framecnt_t); + void reset_fade_out_shape_width (framecnt_t); + + void show_fade_line(framepos_t pos); + void hide_fade_line(); void set_fade_visibility (bool); void update_coverage_frames (LayerDisplay); - + void update_transient(float old_pos, float new_pos); void remove_transient(float pos); @@ -114,73 +115,93 @@ class AudioRegionView : public RegionView virtual void entered (bool); virtual void exited (); + 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 show_xfades (); + protected: - /* this constructor allows derived types - to specify their visibility requirements - to the TimeAxisViewItem parent class - */ - - enum Flags { - EnvelopeVisible = 0x1, - WaveformVisible = 0x4, - WaveformRectified = 0x8, - WaveformLogScaled = 0x10, - }; - - std::vector waves; - std::vector tmp_waves; ///< see ::create_waves() - - std::list > feature_lines; - - ArdourCanvas::Polygon* sync_mark; ///< polgyon for sync position - ArdourCanvas::SimpleLine* zero_line; - ArdourCanvas::Polygon* fade_in_shape; - ArdourCanvas::Polygon* fade_out_shape; - ArdourCanvas::SimpleRect* fade_in_handle; - ArdourCanvas::SimpleRect* fade_out_handle; - - AudioRegionGainLine * gain_line; - - double _amplitude_above_axis; - - uint32_t _flags; - uint32_t fade_color; - - void reset_fade_shapes (); - void reset_fade_in_shape (); - void reset_fade_out_shape (); - void fade_in_changed (); - void fade_out_changed (); - void fade_in_active_changed (); - void fade_out_active_changed (); - - void region_resized (const PBD::PropertyChange&); - void region_muted (); - void region_scale_amplitude_changed (); + /* this constructor allows derived types + to specify their visibility requirements + to the TimeAxisViewItem parent class + */ + + enum Flags { + WaveformVisible = 0x4, + WaveformRectified = 0x8, + WaveformLogScaled = 0x10, + }; + + std::vector waves; + std::vector tmp_waves; ///< see ::create_waves() + + std::list > feature_lines; + + ArdourCanvas::Polygon* sync_mark; ///< polgyon for sync position + ArdourCanvas::Polygon* fade_in_shape; + 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; + + ArdourCanvas::Line *start_xfade_in; + ArdourCanvas::Line *start_xfade_out; + ArdourCanvas::SimpleRect* start_xfade_rect; + + ArdourCanvas::Line *end_xfade_in; + ArdourCanvas::Line *end_xfade_out; + ArdourCanvas::SimpleRect* end_xfade_rect; + + boost::shared_ptr gain_line; + + double _amplitude_above_axis; + + uint32_t _flags; + uint32_t fade_color; + + void reset_fade_shapes (); + void reset_fade_in_shape (); + void reset_fade_out_shape (); + void fade_in_changed (); + void fade_out_changed (); + void fade_in_active_changed (); + void fade_out_active_changed (); + + void region_resized (const PBD::PropertyChange&); + void region_muted (); + void region_scale_amplitude_changed (); void region_renamed (); - void create_one_wave (uint32_t, bool); - void manage_zero_line (); - void peaks_ready_handler (uint32_t); - void set_flags (XMLNode *); - void store_flags (); + 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 &); + void reset_width_dependent_items (double pixel_width); + void set_waveview_data_src(); + void set_frame_color (); - void set_colors (); - void compute_colors (Gdk::Color const &); - void reset_width_dependent_items (double pixel_width); - void set_waveview_data_src(); - void set_frame_color (); + void color_handler (); - void color_handler (); + std::vector wave_caches; - std::vector wave_caches; - - void transients_changed(); + void transients_changed(); - private: + AutomationLine::VisibleAspects automation_line_visibility () const; - void setup_fade_handle_positions (); +private: + void setup_fade_handle_positions (); /** A ScopedConnection for each PeaksReady callback (one per channel). Each member * may be 0 if no connection exists.