diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2013-04-24 15:42:14 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2013-04-24 15:42:14 -0400 |
commit | 6f664c1f67f9a62d44b3ee8c3cae8c341e0731d3 (patch) | |
tree | 88133cd525135ef198b7bf9c4a7f1081826a5ac5 /gtk2_ardour | |
parent | b36e085001cabc13f20f6b6779d08d9816d76b00 (diff) |
many pervasive changes primarily related to waveform drawing, particular content-dragging, colors, and more
Diffstat (limited to 'gtk2_ardour')
-rw-r--r-- | gtk2_ardour/audio_region_view.cc | 121 | ||||
-rw-r--r-- | gtk2_ardour/audio_region_view.h | 1 | ||||
-rw-r--r-- | gtk2_ardour/crossfade_edit.cc | 4 | ||||
-rw-r--r-- | gtk2_ardour/editor.cc | 2 | ||||
-rw-r--r-- | gtk2_ardour/editor_drag.cc | 25 | ||||
-rw-r--r-- | gtk2_ardour/editor_tempodisplay.cc | 3 | ||||
-rw-r--r-- | gtk2_ardour/ghostregion.cc | 5 | ||||
-rw-r--r-- | gtk2_ardour/region_view.cc | 26 | ||||
-rw-r--r-- | gtk2_ardour/region_view.h | 2 | ||||
-rw-r--r-- | gtk2_ardour/streamview.cc | 4 | ||||
-rw-r--r-- | gtk2_ardour/tempo_lines.cc | 10 | ||||
-rw-r--r-- | gtk2_ardour/time_axis_view.cc | 4 | ||||
-rw-r--r-- | gtk2_ardour/time_axis_view_item.cc | 38 | ||||
-rw-r--r-- | gtk2_ardour/time_axis_view_item.h | 3 | ||||
-rw-r--r-- | gtk2_ardour/verbose_cursor.cc | 5 |
15 files changed, 131 insertions, 122 deletions
diff --git a/gtk2_ardour/audio_region_view.cc b/gtk2_ardour/audio_region_view.cc index 68bd462eb5..7a509cd1d8 100644 --- a/gtk2_ardour/audio_region_view.cc +++ b/gtk2_ardour/audio_region_view.cc @@ -42,6 +42,7 @@ #include "canvas/poly_line.h" #include "canvas/line.h" #include "canvas/text.h" +#include "canvas/debug.h" #include "streamview.h" #include "audio_region_view.h" @@ -158,21 +159,25 @@ AudioRegionView::init (Gdk::Color const & basic_color, bool wfd) create_waves (); fade_in_shape = new ArdourCanvas::Polygon (group); + CANVAS_DEBUG_NAME (fade_in_shape, string_compose ("fade in shape for %1", region()->name())); fade_in_shape->set_fill_color (fade_color); fade_in_shape->set_data ("regionview", this); fade_out_shape = new ArdourCanvas::Polygon (group); + CANVAS_DEBUG_NAME (fade_out_shape, string_compose ("fade out shape for %1", region()->name())); fade_out_shape->set_fill_color (fade_color); fade_out_shape->set_data ("regionview", this); if (!_recregion) { fade_in_handle = new ArdourCanvas::Rectangle (group); + CANVAS_DEBUG_NAME (fade_in_handle, string_compose ("fade in handle for %1", region()->name())); fade_in_handle->set_fill_color (UINT_RGBA_CHANGE_A (fill_color, 0)); fade_in_handle->set_outline_color (RGBA_TO_UINT (0, 0, 0, 0)); fade_in_handle->set_data ("regionview", this); fade_out_handle = new ArdourCanvas::Rectangle (group); + CANVAS_DEBUG_NAME (fade_out_handle, string_compose ("fade out handle for %1", region()->name())); fade_out_handle->set_fill_color (UINT_RGBA_CHANGE_A (fill_color, 0)); fade_out_handle->set_outline_color (RGBA_TO_UINT (0, 0, 0, 0)); @@ -229,6 +234,9 @@ AudioRegionView::init (Gdk::Color const & basic_color, bool wfd) setup_waveform_shape (); setup_waveform_scale (); + frame_handle_start->raise_to_top (); + frame_handle_end->raise_to_top (); + /* XXX sync mark drag? */ } @@ -360,10 +368,9 @@ AudioRegionView::region_resized (const PropertyChange& what_changed) interesting_stuff.add (ARDOUR::Properties::length); if (what_changed.contains (interesting_stuff)) { - + for (uint32_t n = 0; n < waves.size(); ++n) { waves[n]->region_resized (); - waves[n]->set_region_start (region()->start ()); } for (vector<GhostRegion*>::iterator i = ghosts.begin(); i != ghosts.end(); ++i) { @@ -371,7 +378,6 @@ AudioRegionView::region_resized (const PropertyChange& what_changed) for (vector<WaveView*>::iterator w = agr->waves.begin(); w != agr->waves.end(); ++w) { (*w)->region_resized (); - (*w)->set_region_start (region()->start ()); } } } @@ -432,14 +438,7 @@ void AudioRegionView::region_muted () { RegionView::region_muted(); - - for (uint32_t n=0; n < waves.size(); ++n) { - if (_region->muted()) { - waves[n]->set_outline_color (UINT_RGBA_CHANGE_A(ARDOUR_UI::config()->get_canvasvar_WaveForm(), MUTED_ALPHA)); - } else { - waves[n]->set_outline_color (ARDOUR_UI::config()->get_canvasvar_WaveForm()); - } - } + set_waveform_colors (); } void @@ -750,12 +749,14 @@ AudioRegionView::redraw_start_xfade_to (boost::shared_ptr<AudioRegion> ar, frame if (!start_xfade_in) { start_xfade_in = new ArdourCanvas::PolyLine (group); + CANVAS_DEBUG_NAME (start_xfade_in, string_compose ("xfade start in line for %1", region()->name())); start_xfade_in->set_outline_color (ARDOUR_UI::config()->get_canvasvar_CrossfadeLine()); start_xfade_in->set_outline_width (1.5); } if (!start_xfade_out) { start_xfade_out = new ArdourCanvas::PolyLine (group); + CANVAS_DEBUG_NAME (start_xfade_out, string_compose ("xfade start out line for %1", region()->name())); uint32_t col = UINT_RGBA_CHANGE_A (ARDOUR_UI::config()->get_canvasvar_CrossfadeLine(), 128); start_xfade_out->set_outline_color (col); start_xfade_out->set_outline_width (2.0); @@ -763,6 +764,7 @@ AudioRegionView::redraw_start_xfade_to (boost::shared_ptr<AudioRegion> ar, frame if (!start_xfade_rect) { start_xfade_rect = new ArdourCanvas::Rectangle (group); + CANVAS_DEBUG_NAME (start_xfade_rect, string_compose ("xfade start rect for %1", region()->name())); start_xfade_rect->set_fill (true); start_xfade_rect->set_fill_color (ARDOUR_UI::config()->get_canvasvar_ActiveCrossfade()); start_xfade_rect->set_outline (false); @@ -775,7 +777,6 @@ AudioRegionView::redraw_start_xfade_to (boost::shared_ptr<AudioRegion> ar, frame start_xfade_in->set (points); start_xfade_in->show (); - start_xfade_in->raise_to_top (); /* fade out line */ @@ -807,9 +808,6 @@ AudioRegionView::redraw_start_xfade_to (boost::shared_ptr<AudioRegion> ar, frame start_xfade_out->set (ipoints); start_xfade_out->show (); - start_xfade_out->raise_to_top (); - - start_xfade_rect->raise_to_top (); //this needs to be topmost so the lines don't steal mouse focus show_start_xfade(); } @@ -837,6 +835,7 @@ AudioRegionView::redraw_end_xfade_to (boost::shared_ptr<AudioRegion> ar, framecn if (!end_xfade_in) { end_xfade_in = new ArdourCanvas::PolyLine (group); + CANVAS_DEBUG_NAME (end_xfade_in, string_compose ("xfade end in line for %1", region()->name())); uint32_t col UINT_RGBA_CHANGE_A (ARDOUR_UI::config()->get_canvasvar_CrossfadeLine(), 128); end_xfade_in->set_outline_color (col); end_xfade_in->set_outline_width (1.5); @@ -844,12 +843,14 @@ AudioRegionView::redraw_end_xfade_to (boost::shared_ptr<AudioRegion> ar, framecn if (!end_xfade_out) { end_xfade_out = new ArdourCanvas::PolyLine (group); + CANVAS_DEBUG_NAME (end_xfade_out, string_compose ("xfade end out line for %1", region()->name())); end_xfade_out->set_outline_color (ARDOUR_UI::config()->get_canvasvar_CrossfadeLine()); end_xfade_out->set_outline_width (2.0); } if (!end_xfade_rect) { end_xfade_rect = new ArdourCanvas::Rectangle (group); + CANVAS_DEBUG_NAME (end_xfade_rect, string_compose ("xfade end rect for %1", region()->name())); end_xfade_rect->set_fill (true); end_xfade_rect->set_fill_color (ARDOUR_UI::config()->get_canvasvar_ActiveCrossfade()); end_xfade_rect->set_outline (0); @@ -1025,16 +1026,7 @@ AudioRegionView::set_colors () ARDOUR_UI::config()->get_canvasvar_GainLineInactive()); } - for (uint32_t n=0; n < waves.size(); ++n) { - if (_region->muted()) { - waves[n]->set_outline_color (UINT_RGBA_CHANGE_A(ARDOUR_UI::config()->get_canvasvar_WaveForm(), MUTED_ALPHA)); - } else { - waves[n]->set_outline_color (ARDOUR_UI::config()->get_canvasvar_WaveForm()); - } - - waves[n]->set_clip_color (ARDOUR_UI::config()->get_canvasvar_WaveFormClip()); - waves[n]->set_zero_color (ARDOUR_UI::config()->get_canvasvar_ZeroLine()); - } + set_waveform_colors (); if (start_xfade_in) { start_xfade_in->set_outline_color (ARDOUR_UI::config()->get_canvasvar_CrossfadeLine()); @@ -1181,9 +1173,10 @@ AudioRegionView::create_one_wave (uint32_t which, bool /*direct*/) gdouble yoff = which * ht; WaveView *wave = new WaveView (group, audio_region ()); - + CANVAS_DEBUG_NAME (wave, string_compose ("wave view for chn %1 of %2", which, get_item_name())); + + wave->lower_to_bottom (); wave->set_channel (which); - wave->set_x_position (0); wave->set_y_position (yoff); wave->set_height (ht); wave->set_samples_per_pixel (samples_per_pixel); @@ -1201,8 +1194,6 @@ AudioRegionView::create_one_wave (uint32_t which, bool /*direct*/) // CAIROCANVAS // wave->property_zero_line() = true; - wave->set_region_start (_region->start()); - switch (Config->get_waveform_shape()) { case Rectified: wave->set_shape (WaveView::Rectified); @@ -1362,12 +1353,11 @@ AudioRegionView::add_ghost (TimeAxisView& tv) } WaveView *wave = new WaveView (ghost->group, audio_region()); + CANVAS_DEBUG_NAME (wave, string_compose ("ghost wave for %1", get_item_name())); wave->set_channel (n); - wave->set_x_position (0); wave->set_samples_per_pixel (samples_per_pixel); wave->set_amplitude_above_axis (_amplitude_above_axis); - wave->set_region_start (_region->start()); ghost->waves.push_back(wave); } @@ -1442,54 +1432,62 @@ AudioRegionView::color_handler () } void -AudioRegionView::set_frame_color () +AudioRegionView::set_waveform_colors () { - if (!frame) { - return; - } - - if (_region->opaque()) { - fill_opacity = 130; - } else { - fill_opacity = 0; - } - - TimeAxisViewItem::set_frame_color (); - - uint32_t wc; - uint32_t fc; - + ArdourCanvas::Color fill, outline, clip, zero; + if (_selected) { if (_region->muted()) { - wc = UINT_RGBA_CHANGE_A(ARDOUR_UI::config()->get_canvasvar_SelectedWaveForm(), MUTED_ALPHA); + outline = UINT_RGBA_CHANGE_A(ARDOUR_UI::config()->get_canvasvar_SelectedWaveForm(), MUTED_ALPHA); } else { - wc = ARDOUR_UI::config()->get_canvasvar_SelectedWaveForm(); + outline = ARDOUR_UI::config()->get_canvasvar_SelectedWaveForm(); } - fc = ARDOUR_UI::config()->get_canvasvar_SelectedWaveFormFill(); + fill = ARDOUR_UI::config()->get_canvasvar_SelectedWaveFormFill(); } else { if (_recregion) { if (_region->muted()) { - wc = UINT_RGBA_CHANGE_A(ARDOUR_UI::config()->get_canvasvar_RecWaveForm(), MUTED_ALPHA); + outline = UINT_RGBA_CHANGE_A(ARDOUR_UI::config()->get_canvasvar_RecWaveForm(), MUTED_ALPHA); } else { - wc = ARDOUR_UI::config()->get_canvasvar_RecWaveForm(); + outline = ARDOUR_UI::config()->get_canvasvar_RecWaveForm(); } - fc = ARDOUR_UI::config()->get_canvasvar_RecWaveFormFill(); + fill = ARDOUR_UI::config()->get_canvasvar_RecWaveFormFill(); } else { if (_region->muted()) { - wc = UINT_RGBA_CHANGE_A(ARDOUR_UI::config()->get_canvasvar_WaveForm(), MUTED_ALPHA); + outline = UINT_RGBA_CHANGE_A(ARDOUR_UI::config()->get_canvasvar_WaveForm(), MUTED_ALPHA); } else { - wc = ARDOUR_UI::config()->get_canvasvar_WaveForm(); + outline = ARDOUR_UI::config()->get_canvasvar_WaveForm(); } - fc = ARDOUR_UI::config()->get_canvasvar_WaveFormFill(); + fill = ARDOUR_UI::config()->get_canvasvar_WaveFormFill(); } } + clip = ARDOUR_UI::config()->get_canvasvar_WaveFormClip(); + zero = ARDOUR_UI::config()->get_canvasvar_ZeroLine(); + for (vector<ArdourCanvas::WaveView*>::iterator w = waves.begin(); w != waves.end(); ++w) { - (*w)->set_outline_color (wc); - if (!_region->muted()) { - (*w)->set_fill_color (fc); - } - } + (*w)->set_outline_color (outline); + (*w)->set_fill_color (fill); + (*w)->set_clip_color (clip); + (*w)->set_zero_color (zero); + } +} + +void +AudioRegionView::set_frame_color () +{ + if (!frame) { + return; + } + + if (_region->opaque()) { + fill_opacity = 130; + } else { + fill_opacity = 0; + } + + TimeAxisViewItem::set_frame_color (); + + set_waveform_colors (); } void @@ -1555,6 +1553,7 @@ AudioRegionView::transients_changed () while (feature_lines.size() < analysis_features.size()) { ArdourCanvas::Line* canvas_item = new ArdourCanvas::Line(group); + CANVAS_DEBUG_NAME (canvas_item, string_compose ("transient group for %1", region()->name())); canvas_item->set (ArdourCanvas::Duple (-1.0, 2.0), ArdourCanvas::Duple (1.0, _height - TimeAxisViewItem::NAME_HIGHLIGHT_SIZE - 1)); diff --git a/gtk2_ardour/audio_region_view.h b/gtk2_ardour/audio_region_view.h index 719dfc2b55..049b61a571 100644 --- a/gtk2_ardour/audio_region_view.h +++ b/gtk2_ardour/audio_region_view.h @@ -189,6 +189,7 @@ class AudioRegionView : public RegionView void peaks_ready_handler (uint32_t); void set_colors (); + void set_waveform_colors (); void compute_colors (Gdk::Color const &); void reset_width_dependent_items (double pixel_width); void set_frame_color (); diff --git a/gtk2_ardour/crossfade_edit.cc b/gtk2_ardour/crossfade_edit.cc index 5d6e0d465d..214ba7fb06 100644 --- a/gtk2_ardour/crossfade_edit.cc +++ b/gtk2_ardour/crossfade_edit.cc @@ -1172,9 +1172,7 @@ CrossfadeEditor::make_waves (boost::shared_ptr<AudioRegion> region, WhichFade wh waveview->set_outline_color (color); waveview->set_fill_color (color); - if (which == In) { - waveview->set_region_start (region->start()); - } else { + if (which != In) { waveview->set_region_start (region->start() + region->length() - xfade->length()); } diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc index d458b41b84..3f06a5b87b 100644 --- a/gtk2_ardour/editor.cc +++ b/gtk2_ardour/editor.cc @@ -3731,7 +3731,7 @@ Editor::set_show_measures (bool yn) compute_current_bbt_points (leftmost_frame, leftmost_frame + current_page_samples(), begin, end); draw_measures (begin, end); - } + } instant_save (); } diff --git a/gtk2_ardour/editor_drag.cc b/gtk2_ardour/editor_drag.cc index 35a7e930ef..3dbb48ce43 100644 --- a/gtk2_ardour/editor_drag.cc +++ b/gtk2_ardour/editor_drag.cc @@ -1830,6 +1830,7 @@ TrimDrag::motion (GdkEvent* event, bool first_move) TimeAxisView* tvp = &_primary->get_time_axis_view (); RouteTimeAxisView* tv = dynamic_cast<RouteTimeAxisView*>(tvp); pair<set<boost::shared_ptr<Playlist> >::iterator,bool> insert_result; + frameoffset_t frame_delta = 0; if (tv && tv->is_track()) { speed = tv->track()->speed(); @@ -1926,27 +1927,11 @@ TrimDrag::motion (GdkEvent* event, bool first_move) case ContentsTrim: { - bool swap_direction = false; - - if (event && Keyboard::modifier_state_equals (event->button.state, Keyboard::PrimaryModifier)) { - swap_direction = true; - } - - framecnt_t frame_delta = 0; - - bool left_direction = false; - if (last_pointer_frame() > adjusted_current_frame(event)) { - left_direction = true; - } - - if (left_direction) { - frame_delta = (last_pointer_frame() - adjusted_current_frame(event)); - } else { - frame_delta = (adjusted_current_frame(event) - last_pointer_frame()); - } + frame_delta = (adjusted_current_frame(event) - last_pointer_frame()); + // frame_delta = (last_pointer_frame() - adjusted_current_frame(event)); for (list<DraggingView>::const_iterator i = _views.begin(); i != _views.end(); ++i) { - i->view->trim_contents (frame_delta, left_direction, swap_direction); + i->view->move_contents (frame_delta); } } break; @@ -1960,7 +1945,7 @@ TrimDrag::motion (GdkEvent* event, bool first_move) show_verbose_cursor_time ((framepos_t) (rv->region()->last_frame() / speed)); break; case ContentsTrim: - show_verbose_cursor_time (adjusted_current_frame (event)); + // show_verbose_cursor_time (frame_delta); break; } } diff --git a/gtk2_ardour/editor_tempodisplay.cc b/gtk2_ardour/editor_tempodisplay.cc index 09d9b39c73..400f427ee5 100644 --- a/gtk2_ardour/editor_tempodisplay.cc +++ b/gtk2_ardour/editor_tempodisplay.cc @@ -162,8 +162,9 @@ Editor::compute_current_bbt_points (framepos_t leftmost, framepos_t rightmost, void Editor::hide_measures () { - if (tempo_lines) + if (tempo_lines) { tempo_lines->hide(); + } } void diff --git a/gtk2_ardour/ghostregion.cc b/gtk2_ardour/ghostregion.cc index 6801e80d02..5350a0e459 100644 --- a/gtk2_ardour/ghostregion.cc +++ b/gtk2_ardour/ghostregion.cc @@ -21,6 +21,8 @@ #include "canvas/group.h" #include "canvas/rectangle.h" #include "canvas/wave_view.h" +#include "canvas/debug.h" + #include "ardour_ui.h" #include "automation_time_axis.h" #include "ghostregion.h" @@ -41,9 +43,11 @@ GhostRegion::GhostRegion (ArdourCanvas::Group* parent, TimeAxisView& tv, TimeAxi , source_trackview (source_tv) { group = new ArdourCanvas::Group (parent); + CANVAS_DEBUG_NAME (group, "ghost region group"); group->set_position (ArdourCanvas::Duple (initial_pos, 0)); base_rect = new ArdourCanvas::Rectangle (group); + CANVAS_DEBUG_NAME (base_rect, "ghost region rect"); base_rect->set_x0 (0); base_rect->set_y0 (0); base_rect->set_y1 (trackview.current_height()); @@ -191,6 +195,7 @@ MidiGhostRegion::GhostEvent::GhostEvent (NoteBase* e, ArdourCanvas::Group* g) : event (e) { rect = new ArdourCanvas::Rectangle (g, ArdourCanvas::Rect (e->x0(), e->y0(), e->x1(), e->y1())); + CANVAS_DEBUG_NAME (rect, "ghost note rect"); } MidiGhostRegion::GhostEvent::~GhostEvent () diff --git a/gtk2_ardour/region_view.cc b/gtk2_ardour/region_view.cc index 37ddb45917..ac7fe7e8fa 100644 --- a/gtk2_ardour/region_view.cc +++ b/gtk2_ardour/region_view.cc @@ -632,9 +632,11 @@ RegionView::region_sync_changed () /* points set below */ sync_mark = new ArdourCanvas::Polygon (group); + CANVAS_DEBUG_NAME (sync_mark, string_compose ("sync mark for %1", get_item_name())); sync_mark->set_fill_color (RGBA_TO_UINT(0,255,0,255)); // FIXME make a themeable colour sync_line = new ArdourCanvas::Line (group); + CANVAS_DEBUG_NAME (sync_line, string_compose ("sync mark for %1", get_item_name())); sync_line->set_outline_color (RGBA_TO_UINT(0,255,0,255)); // FIXME make a themeable colour } @@ -930,32 +932,12 @@ RegionView::thaw_after_trim () void -RegionView::trim_contents (framepos_t frame_delta, bool left_direction, bool swap_direction) +RegionView::move_contents (frameoffset_t distance) { if (_region->locked()) { return; } - - framepos_t new_bound; - - RouteTimeAxisView& rtv = dynamic_cast<RouteTimeAxisView&> (trackview); - double const speed = rtv.track()->speed (); - - if (left_direction) { - if (swap_direction) { - new_bound = (framepos_t) (_region->position() / speed) + frame_delta; - } else { - new_bound = (framepos_t) (_region->position() / speed) - frame_delta; - } - } else { - if (swap_direction) { - new_bound = (framepos_t) (_region->position() / speed) - frame_delta; - } else { - new_bound = (framepos_t) (_region->position() / speed) + frame_delta; - } - } - - _region->trim_start ((framepos_t) (new_bound * speed)); + _region->move_start (distance); region_changed (PropertyChange (ARDOUR::Properties::start)); } diff --git a/gtk2_ardour/region_view.h b/gtk2_ardour/region_view.h index 566304fa92..74d1f29581 100644 --- a/gtk2_ardour/region_view.h +++ b/gtk2_ardour/region_view.h @@ -113,7 +113,7 @@ class RegionView : public TimeAxisViewItem virtual void trim_front_ending () {} bool trim_end (framepos_t, bool); - void trim_contents (framepos_t, bool, bool); + void move_contents (ARDOUR::frameoffset_t); virtual void thaw_after_trim (); void set_silent_frames (const ARDOUR::AudioIntervalResult&, double threshold); diff --git a/gtk2_ardour/streamview.cc b/gtk2_ardour/streamview.cc index 774e150f13..8239bca2f4 100644 --- a/gtk2_ardour/streamview.cc +++ b/gtk2_ardour/streamview.cc @@ -71,8 +71,10 @@ StreamView::StreamView (RouteTimeAxisView& tv) canvas_rect->set (ArdourCanvas::Rect (0, 0, ArdourCanvas::COORD_MAX, tv.current_height ())); canvas_rect->raise(1); // raise above tempo lines - canvas_rect->set_outline_what (0x2 | 0x8); + canvas_rect->set_outline_what (ArdourCanvas::Rectangle::What (ArdourCanvas::Rectangle::TOP | ArdourCanvas::Rectangle::BOTTOM)); canvas_rect->set_outline_color (RGBA_TO_UINT (0, 0, 0, 255)); + canvas_rect->set_fill_color (RGBA_TO_UINT (1.0, 0, 0, 255)); + canvas_rect->set_fill (true); canvas_rect->Event.connect (sigc::bind ( sigc::mem_fun (_trackview.editor(), &PublicEditor::canvas_stream_view_event), diff --git a/gtk2_ardour/tempo_lines.cc b/gtk2_ardour/tempo_lines.cc index a6177d2b1d..d73fb54b81 100644 --- a/gtk2_ardour/tempo_lines.cc +++ b/gtk2_ardour/tempo_lines.cc @@ -47,17 +47,13 @@ TempoLines::tempo_map_changed() void TempoLines::show () { - for (Lines::iterator i = _lines.begin(); i != _lines.end(); ++i) { - (*i)->show(); - } + _group->show (); } void TempoLines::hide () { - for (Lines::iterator i = _lines.begin(); i != _lines.end(); ++i) { - (*i)->hide(); - } + _group->hide (); } void @@ -111,6 +107,8 @@ TempoLines::draw (const ARDOUR::TempoMap::BBTPointList::const_iterator& begin, line->reparent (_group); } else { line = new ArdourCanvas::Line (_group); + CANVAS_DEBUG_NAME (line, "tempo measure line"); + line->set_ignore_events (true); } line->set_x0 (xpos); diff --git a/gtk2_ardour/time_axis_view.cc b/gtk2_ardour/time_axis_view.cc index cfa22ae805..280802ab68 100644 --- a/gtk2_ardour/time_axis_view.cc +++ b/gtk2_ardour/time_axis_view.cc @@ -32,6 +32,7 @@ #include <gtkmm2ext/selector.h> #include "canvas/rectangle.h" +#include "canvas/debug.h" #include "ardour_ui.h" #include "ardour_dialog.h" @@ -940,13 +941,16 @@ TimeAxisView::get_selection_rect (uint32_t id) rect = new SelectionRect; rect->rect = new ArdourCanvas::Rectangle (selection_group); + CANVAS_DEBUG_NAME (rect->rect, "selection rect"); rect->rect->set_outline_what (0); rect->rect->set_fill_color (ARDOUR_UI::config()->get_canvasvar_SelectionRect()); rect->start_trim = new ArdourCanvas::Rectangle (selection_group); + CANVAS_DEBUG_NAME (rect->rect, "selection rect start trim"); rect->start_trim->set_outline_what (0); rect->end_trim = new ArdourCanvas::Rectangle (selection_group); + CANVAS_DEBUG_NAME (rect->rect, "selection rect end trim"); rect->end_trim->set_outline_what (0); free_selection_rects.push_front (rect); diff --git a/gtk2_ardour/time_axis_view_item.cc b/gtk2_ardour/time_axis_view_item.cc index 57bda5fa26..4c2e31c22d 100644 --- a/gtk2_ardour/time_axis_view_item.cc +++ b/gtk2_ardour/time_axis_view_item.cc @@ -138,6 +138,7 @@ TimeAxisViewItem::TimeAxisViewItem (const TimeAxisViewItem& other) ArdourCanvas::Group* parent = other.group->parent(); group = new ArdourCanvas::Group (parent); + CANVAS_DEBUG_NAME (group, string_compose ("TAVI group for %1", get_item_name())); _selected = other._selected; @@ -171,6 +172,7 @@ TimeAxisViewItem::init (const string& it_name, double fpp, Gdk::Color const & ba } vestigial_frame = new ArdourCanvas::Rectangle (group, ArdourCanvas::Rect (0.0, 1.0, 2.0, trackview.current_height())); + CANVAS_DEBUG_NAME (vestigial_frame, string_compose ("vestigial frame for %1", get_item_name())); vestigial_frame->hide (); vestigial_frame->set_outline_color (ARDOUR_UI::config()->get_canvasvar_VestigialFrame()); vestigial_frame->set_fill_color (ARDOUR_UI::config()->get_canvasvar_VestigialFrame()); @@ -180,6 +182,7 @@ TimeAxisViewItem::init (const string& it_name, double fpp, Gdk::Color const & ba ArdourCanvas::Rect (0.0, 1.0, trackview.editor().sample_to_pixel(duration), trackview.current_height())); + CANVAS_DEBUG_NAME (frame, string_compose ("frame for %1", get_item_name())); if (_recregion) { frame->set_outline_color (ARDOUR_UI::config()->get_canvasvar_RecordingRect()); @@ -199,11 +202,13 @@ TimeAxisViewItem::init (const string& it_name, double fpp, Gdk::Color const & ba ArdourCanvas::Rect (0.0, trackview.editor().sample_to_pixel(item_duration), trackview.current_height() - TimeAxisViewItem::NAME_HIGHLIGHT_SIZE, trackview.current_height())); + CANVAS_DEBUG_NAME (name_highlight, string_compose ("name highlight for %1", get_item_name())); } else { name_highlight = new ArdourCanvas::Rectangle (group, ArdourCanvas::Rect (1.0, trackview.editor().sample_to_pixel(item_duration) - 1, trackview.current_height() - TimeAxisViewItem::NAME_HIGHLIGHT_SIZE, trackview.current_height())); + CANVAS_DEBUG_NAME (name_highlight, string_compose ("name highlight for %1", get_item_name())); } name_highlight->set_data ("timeaxisviewitem", this); @@ -217,6 +222,7 @@ TimeAxisViewItem::init (const string& it_name, double fpp, Gdk::Color const & ba if (visibility & ShowNameText) { name_text = new ArdourCanvas::Text (group); + CANVAS_DEBUG_NAME (name_text, string_compose ("name text for %1", get_item_name())); name_text->set_position (ArdourCanvas::Duple (NAME_X_OFFSET, trackview.current_height() - NAME_Y_OFFSET)); name_text->set_font_description (NAME_FONT); @@ -230,9 +236,16 @@ TimeAxisViewItem::init (const string& it_name, double fpp, Gdk::Color const & ba double width = TimeAxisViewItem::GRAB_HANDLE_WIDTH; frame_handle_start = new ArdourCanvas::Rectangle (group, ArdourCanvas::Rect (0.0, top, width, trackview.current_height())); - frame_handle_start->set_outline_what (ArdourCanvas::Rectangle::What (0)); + CANVAS_DEBUG_NAME (frame_handle_start, "TAVI frame handle start"); + frame_handle_start->set_outline (false); + frame_handle_start->set_fill (false); + frame_handle_start->Event.connect (sigc::bind (sigc::mem_fun (*this, &TimeAxisViewItem::frame_handle_crossing), frame_handle_start)); + frame_handle_end = new ArdourCanvas::Rectangle (group, ArdourCanvas::Rect (0.0, top, width, trackview.current_height())); - frame_handle_end->set_outline_what (ArdourCanvas::Rectangle::What (0)); + CANVAS_DEBUG_NAME (frame_handle_end, "TAVI frame handle end"); + frame_handle_end->set_outline (false); + frame_handle_end->set_fill (false); + frame_handle_end->Event.connect (sigc::bind (sigc::mem_fun (*this, &TimeAxisViewItem::frame_handle_crossing), frame_handle_end)); } else { frame_handle_start = frame_handle_end = 0; } @@ -819,12 +832,28 @@ TimeAxisViewItem::set_trim_handle_colors() frame_handle_start->set_fill_color (ARDOUR_UI::config()->get_canvasvar_TrimHandleLocked()); frame_handle_end->set_fill_color (ARDOUR_UI::config()->get_canvasvar_TrimHandleLocked()); } else { - frame_handle_start->set_fill_color (RGBA_TO_UINT (1, 1, 1, 0)); //ARDOUR_UI::config()->get_canvasvar_TrimHandle(); - frame_handle_end->set_fill_color (RGBA_TO_UINT (1, 1, 1, 0)); //ARDOUR_UI::config()->get_canvasvar_TrimHandle(); + frame_handle_start->set_fill_color (ARDOUR_UI::config()->get_canvasvar_TrimHandle()); + frame_handle_end->set_fill_color (ARDOUR_UI::config()->get_canvasvar_TrimHandle()); } } } +bool +TimeAxisViewItem::frame_handle_crossing (GdkEvent* ev, ArdourCanvas::Rectangle* item) +{ + switch (ev->type) { + case GDK_LEAVE_NOTIFY: + item->set_fill (false); + break; + case GDK_ENTER_NOTIFY: + item->set_fill (true); + break; + default: + break; + } + return false; +} + /** @return the frames per pixel */ double TimeAxisViewItem::get_samples_per_pixel () const @@ -901,6 +930,7 @@ TimeAxisViewItem::reset_width_dependent_items (double pixel_width) * the right-hand end of frame_handle_start and the left-hand * end of frame_handle_end, so disable the handles */ + frame_handle_start->hide(); frame_handle_end->hide(); } else { diff --git a/gtk2_ardour/time_axis_view_item.h b/gtk2_ardour/time_axis_view_item.h index f6f72b77bd..08cc421202 100644 --- a/gtk2_ardour/time_axis_view_item.h +++ b/gtk2_ardour/time_axis_view_item.h @@ -21,6 +21,7 @@ #define __gtk_ardour_time_axis_view_item_h__ #include <string> +#include <gdk/gdk.h> #include <gdkmm/color.h> #include <pangomm/fontdescription.h> #include "pbd/signals.h" @@ -244,6 +245,8 @@ class TimeAxisViewItem : public Selectable, public PBD::ScopedConnectionList ArdourCanvas::Rectangle* frame_handle_start; ///< `frame' (fade) handle for the start of the item, or 0 ArdourCanvas::Rectangle* frame_handle_end; ///< `frame' (fade) handle for the end of the item, or 0 + bool frame_handle_crossing (GdkEvent*, ArdourCanvas::Rectangle*); + double _height; Visibility visibility; bool _recregion; diff --git a/gtk2_ardour/verbose_cursor.cc b/gtk2_ardour/verbose_cursor.cc index 1f43f754e6..fec9e80ae1 100644 --- a/gtk2_ardour/verbose_cursor.cc +++ b/gtk2_ardour/verbose_cursor.cc @@ -22,6 +22,8 @@ #include "pbd/stacktrace.h" #include "ardour/profile.h" +#include "canvas/debug.h" + #include "ardour_ui.h" #include "audio_clock.h" #include "editor.h" @@ -42,10 +44,9 @@ VerboseCursor::VerboseCursor (Editor* editor) , _yoffset (0) { _canvas_item = new ArdourCanvas::Text (_editor->_track_canvas->root()); + CANVAS_DEBUG_NAME (_canvas_item, "verbose canvas cursor"); _canvas_item->set_ignore_events (true); _canvas_item->set_font_description (get_font_for_style (N_("VerboseCanvasCursor"))); - // CAIROCANVAS - // _canvas_item->property_anchor() = Gtk::ANCHOR_NW; } ArdourCanvas::Item * |