#include "canvas/debug.h"
+#include "ardour_ui.h"
#include "time_axis_view.h"
#include "streamview.h"
#include "editor_summary.h"
_view_rectangle_y (0, 0),
_zoom_dragging (false),
_old_follow_playhead (false),
+ _image (0),
_background_dirty (true)
{
add_events (Gdk::POINTER_MOTION_MASK|Gdk::KEY_PRESS_MASK|Gdk::KEY_RELEASE_MASK|Gdk::ENTER_NOTIFY_MASK|Gdk::LEAVE_NOTIFY_MASK);
set_flags (get_flags() | Gtk::CAN_FOCUS);
+
+ ARDOUR_UI::config()->ParameterChanged.connect (sigc::mem_fun (*this, &EditorSummary::parameter_changed));
+}
+
+EditorSummary::~EditorSummary ()
+{
+ cairo_surface_destroy (_image);
+}
+
+void
+EditorSummary::parameter_changed (string p)
+{
+
+ if (p == "color-regions-using-track-color") {
+ set_background_dirty ();
+ }
}
/** Handle a size allocation.
void
EditorSummary::on_size_allocate (Gtk::Allocation& alloc)
{
- Gtk::EventBox::on_size_allocate (alloc);
- _background_dirty = true;
- set_dirty ();
+ CairoWidget::on_size_allocate (alloc);
+ set_background_dirty ();
}
void
EditorSummary::render_background_image ()
{
- int stride;
- unsigned char *data;
- stride = cairo_format_stride_for_width (CAIRO_FORMAT_RGB24, get_width ());
- data = (unsigned char*) malloc (stride * get_height ());
- _image = cairo_image_surface_create_for_data (data, CAIRO_FORMAT_RGB24, get_width (), get_height (), stride);
+ cairo_surface_destroy (_image); // passing NULL is safe
+ _image = cairo_image_surface_create (CAIRO_FORMAT_RGB24, get_width (), get_height ());
cairo_t* cr = cairo_create (_image);
x->second = x->first + _editor->current_page_samples() * _x_scale;
y->first = editor_y_to_summary (_editor->vertical_adjustment.get_value ());
- y->second = editor_y_to_summary (_editor->vertical_adjustment.get_value () + _editor->visible_canvas_height());
+ y->second = editor_y_to_summary (_editor->vertical_adjustment.get_value () + _editor->visible_canvas_height() - _editor->get_trackview_group()->canvas_origin().y);
}
}
EditorSummary::set_editor_y (double const y)
{
double y1 = summary_y_to_editor (y);
- double const eh = _editor->visible_canvas_height();
+ double const eh = _editor->visible_canvas_height() - _editor->get_trackview_group()->canvas_origin().y;
double y2 = y1 + eh;
double const full_editor_height = _editor->_full_canvas_height;
}
}
- _background_dirty = true;
- set_dirty ();
+ set_background_dirty ();
}
void
EditorSummary::route_gui_changed (string c)
{
if (c == "color") {
- _background_dirty = true;
- set_dirty ();
+ set_background_dirty ();
}
}