#include <gtkmm2ext/utils.h>
#include <gtkmm2ext/rgb_macros.h>
+#include <ardour/rc_configuration.h>
#include "ardour_ui.h"
#include "utils.h"
#include "logmeter.h"
static const int max_pattern_metric_size = 1026;
+sigc::signal<void> ResetAllPeakDisplays;
+sigc::signal<void,ARDOUR::Route*> ResetRoutePeakDisplays;
+sigc::signal<void,ARDOUR::RouteGroup*> ResetGroupPeakDisplays;
+sigc::signal<void> RedrawMetrics;
+
cairo_pattern_t*
meter_render_ticks (Gtk::Widget& w, vector<ARDOUR::DataType> types)
{
Glib::RefPtr<Gdk::Window> win (w.get_window());
+ bool background;
gint width, height;
win->get_size (width, height);
+ background =
+ w.get_name().substr(w.get_name().length() - 4) == "Left"
+ || w.get_name().substr(w.get_name().length() - 5) == "Right";
cairo_surface_t* surface = cairo_image_surface_create (CAIRO_FORMAT_RGB24, width, height);
cairo_t* cr = cairo_create (surface);
cairo_move_to (cr, 0, 0);
cairo_rectangle (cr, 0, 0, width, height);
{
- Gdk::Color c = w.get_style()->get_bg (Gtk::STATE_ACTIVE);
+ Gdk::Color c = w.get_style()->get_bg (background ? Gtk::STATE_ACTIVE : Gtk::STATE_NORMAL);
cairo_set_source_rgb (cr, c.get_red_p(), c.get_green_p(), c.get_blue_p());
}
cairo_fill (cr);
points.insert (std::pair<int,float>(-50, 0.5));
points.insert (std::pair<int,float>(-40, 0.5));
points.insert (std::pair<int,float>(-30, 0.5));
- points.insert (std::pair<int,float>(-25, 0.5));
+ if (Config->get_meter_line_up_level() == MeteringLineUp24) {
+ points.insert (std::pair<int,float>(-24, 0.5));
+ } else {
+ points.insert (std::pair<int,float>(-25, 0.5));
+ }
points.insert (std::pair<int,float>(-20, 1.0));
points.insert (std::pair<int,float>(-19, 0.5));
{
Glib::RefPtr<Gdk::Window> win (w.get_window());
- bool tickleft = true;
+ bool tickleft;
+ bool background;
gint width, height;
win->get_size (width, height);
tickleft = w.get_name().substr(w.get_name().length() - 4) == "Left";
+ background = tickleft || w.get_name().substr(w.get_name().length() - 5) == "Right";
cairo_surface_t* surface = cairo_image_surface_create (CAIRO_FORMAT_RGB24, width, height);
cairo_t* cr = cairo_create (surface);
cairo_move_to (cr, 0, 0);
cairo_rectangle (cr, 0, 0, width, height);
{
- Gdk::Color c = w.get_style()->get_bg (Gtk::STATE_ACTIVE);
+ Gdk::Color c = w.get_style()->get_bg (background ? Gtk::STATE_ACTIVE : Gtk::STATE_NORMAL);
cairo_set_source_rgb (cr, c.get_red_p(), c.get_green_p(), c.get_blue_p());
}
cairo_fill (cr);
points.insert (std::pair<int,float>(-30, 0.5));
points.insert (std::pair<int,float>(-20, 1.0));
if (types.size() == 1) {
- points.insert (std::pair<int,float>(-25, 0.5));
+ if (Config->get_meter_line_up_level() == MeteringLineUp24) {
+ points.insert (std::pair<int,float>(-24, 0.5));
+ } else {
+ points.insert (std::pair<int,float>(-25, 0.5));
+ }
points.insert (std::pair<int,float>(-15, 1.0));
}
points.insert (std::pair<int,float>(-18, 1.0));
void meter_clear_pattern_cache() {
metric_patterns.clear();
ticks_patterns.clear();
+ RedrawMetrics();
}