summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2013-04-24 15:42:14 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2013-04-24 15:42:14 -0400
commit6f664c1f67f9a62d44b3ee8c3cae8c341e0731d3 (patch)
tree88133cd525135ef198b7bf9c4a7f1081826a5ac5 /gtk2_ardour
parentb36e085001cabc13f20f6b6779d08d9816d76b00 (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.cc121
-rw-r--r--gtk2_ardour/audio_region_view.h1
-rw-r--r--gtk2_ardour/crossfade_edit.cc4
-rw-r--r--gtk2_ardour/editor.cc2
-rw-r--r--gtk2_ardour/editor_drag.cc25
-rw-r--r--gtk2_ardour/editor_tempodisplay.cc3
-rw-r--r--gtk2_ardour/ghostregion.cc5
-rw-r--r--gtk2_ardour/region_view.cc26
-rw-r--r--gtk2_ardour/region_view.h2
-rw-r--r--gtk2_ardour/streamview.cc4
-rw-r--r--gtk2_ardour/tempo_lines.cc10
-rw-r--r--gtk2_ardour/time_axis_view.cc4
-rw-r--r--gtk2_ardour/time_axis_view_item.cc38
-rw-r--r--gtk2_ardour/time_axis_view_item.h3
-rw-r--r--gtk2_ardour/verbose_cursor.cc5
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 *