From e469ce0961196a3075c391b2256c84e6042c1e2a Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Wed, 24 Jul 2013 22:05:24 +0200 Subject: get meter color from gtkrc style file --- gtk2_ardour/utils.cc | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) (limited to 'gtk2_ardour/utils.cc') diff --git a/gtk2_ardour/utils.cc b/gtk2_ardour/utils.cc index d4bc460269..72a922046f 100644 --- a/gtk2_ardour/utils.cc +++ b/gtk2_ardour/utils.cc @@ -301,6 +301,53 @@ rgba_from_style (string style, uint32_t r, uint32_t g, uint32_t b, uint32_t a, s } } +bool +rgba_p_from_style (string style, float *r, float *g, float *b, string attr, int state) +{ + static Gtk::Window* window = 0; + assert (r && g && b); + + if (window == 0) { + window = new Window (WINDOW_TOPLEVEL); + } + + Gtk::EventBox foo; + + window->add (foo); + + foo.set_name (style); + foo.ensure_style (); + + GtkRcStyle* rc = foo.get_style()->gobj()->rc_style; + + if (!rc) { + warning << string_compose (_("missing RGBA style for \"%1\""), style) << endl; + return false; + } + if (attr == "fg") { + *r = rc->fg[state].red / 65535.0; + *g = rc->fg[state].green / 65535.0; + *b = rc->fg[state].blue / 65535.0; + } else if (attr == "bg") { + *r = rc->bg[state].red / 65535.0; + *g = rc->bg[state].green / 65535.0; + *b = rc->bg[state].blue / 65535.0; + } else if (attr == "base") { + *r = rc->base[state].red / 65535.0; + *g = rc->base[state].green / 65535.0; + *b = rc->base[state].blue / 65535.0; + } else if (attr == "text") { + *r = rc->text[state].red / 65535.0; + *g = rc->text[state].green / 65535.0; + *b = rc->text[state].blue / 65535.0; + } else { + return false; + } + + window->remove (); + return true; +} + bool canvas_item_visible (ArdourCanvas::Item* item) { -- cgit v1.2.3 From cd28d62b26214770cfc269aafe666ec2fb3f2607 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Sun, 28 Jul 2013 20:32:52 +0200 Subject: fix compiler warnings. --- gtk2_ardour/editor_ops.cc | 2 +- gtk2_ardour/logmeter.h | 24 ++++++++++++------------ gtk2_ardour/meter_patterns.cc | 6 ++++-- gtk2_ardour/meterbridge.cc | 2 +- gtk2_ardour/mixer_ui.cc | 2 +- gtk2_ardour/transcode_ffmpeg.cc | 2 +- gtk2_ardour/utils.cc | 2 +- libs/ardour/meter.cc | 18 ++++++++++-------- libs/ardour/track.cc | 3 +++ libs/pbd/pbd/ringbuffer.h | 1 + libs/surfaces/osc/osc.h | 4 ++-- 11 files changed, 37 insertions(+), 29 deletions(-) (limited to 'gtk2_ardour/utils.cc') diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc index b70d0f0664..93a53dd1d3 100644 --- a/gtk2_ardour/editor_ops.cc +++ b/gtk2_ardour/editor_ops.cc @@ -6950,7 +6950,7 @@ Editor::uncombine_regions () void Editor::toggle_midi_input_active (bool flip_others) { - bool onoff; + bool onoff = false; boost::shared_ptr rl (new RouteList); for (TrackSelection::iterator i = selection->tracks.begin(); i != selection->tracks.end(); ++i) { diff --git a/gtk2_ardour/logmeter.h b/gtk2_ardour/logmeter.h index c7b18ea6b9..a244fb4bbe 100644 --- a/gtk2_ardour/logmeter.h +++ b/gtk2_ardour/logmeter.h @@ -35,16 +35,16 @@ alt_log_meter (float power) #endif /* prototypes - avoid compiler warning */ -inline float log_meter (float db); -inline float meter_deflect_ppm (float); -inline float meter_deflect_din (float); -inline float meter_deflect_nordic (float); -inline float meter_deflect_vu (float); -inline float meter_deflect_k (float, float); +static inline float log_meter (float db); +static inline float meter_deflect_ppm (float); +static inline float meter_deflect_din (float); +static inline float meter_deflect_nordic (float); +static inline float meter_deflect_vu (float); +static inline float meter_deflect_k (float, float); -inline float +static inline float log_meter (float db) { gfloat def = 0.0f; /* Meter deflection %age */ @@ -75,7 +75,7 @@ log_meter (float db) return def/115.0f; } -inline float +static inline float meter_deflect_ppm (float db) { if (db < -30) { @@ -91,7 +91,7 @@ meter_deflect_ppm (float db) } } -inline float +static inline float meter_deflect_din (float db) { float rv = dB_to_coefficient(db); @@ -103,7 +103,7 @@ meter_deflect_din (float db) } } -inline float +static inline float meter_deflect_nordic (float db) { if (db < -60) { @@ -118,7 +118,7 @@ meter_deflect_nordic (float db) } } -inline float +static inline float meter_deflect_vu (float db) { const float rv = 6.77165f * dB_to_coefficient(db); @@ -126,7 +126,7 @@ meter_deflect_vu (float db) return rv; } -inline float +static inline float meter_deflect_k (float db, float krange) { db+=krange; diff --git a/gtk2_ardour/meter_patterns.cc b/gtk2_ardour/meter_patterns.cc index 92d4078441..2166cc03ae 100644 --- a/gtk2_ardour/meter_patterns.cc +++ b/gtk2_ardour/meter_patterns.cc @@ -243,7 +243,7 @@ static void set_bg_color(Gtk::Widget& w, cairo_t* cr, MeterType type) { } } -static void set_fg_color(Gtk::Widget& w, MeterType type, Gdk::Color * c) { +static void set_fg_color(Gtk::Widget&, MeterType type, Gdk::Color * c) { float r,g,b; switch(type) { case MeterVU: @@ -812,7 +812,7 @@ meter_render_metrics (Gtk::Widget& w, MeterType type, vector types) break; } - gint pos; + gint pos = -1; for (std::map::const_iterator j = points.begin(); j != points.end(); ++j) { float fraction = 0; @@ -850,6 +850,8 @@ meter_render_metrics (Gtk::Widget& w, MeterType type, vector types) break; } + if (pos < 0) continue; + layout->set_text(j->second.c_str()); int tw, th; diff --git a/gtk2_ardour/meterbridge.cc b/gtk2_ardour/meterbridge.cc index a2bcf5cc06..c8566adb64 100644 --- a/gtk2_ardour/meterbridge.cc +++ b/gtk2_ardour/meterbridge.cc @@ -596,7 +596,7 @@ Meterbridge::remove_strip (MeterStrip* strip) } void -Meterbridge::sync_order_keys (RouteSortOrderKey src) +Meterbridge::sync_order_keys (RouteSortOrderKey) { Glib::Threads::Mutex::Lock lm (_resync_mutex); diff --git a/gtk2_ardour/mixer_ui.cc b/gtk2_ardour/mixer_ui.cc index be43a3d6a0..7e8188cac9 100644 --- a/gtk2_ardour/mixer_ui.cc +++ b/gtk2_ardour/mixer_ui.cc @@ -1926,7 +1926,7 @@ void Mixer_UI::toggle_midi_input_active (bool flip_others) { boost::shared_ptr rl (new RouteList); - bool onoff; + bool onoff = false; set_route_targets_for_operation (); diff --git a/gtk2_ardour/transcode_ffmpeg.cc b/gtk2_ardour/transcode_ffmpeg.cc index 9e4aa39fa0..b35f843d15 100644 --- a/gtk2_ardour/transcode_ffmpeg.cc +++ b/gtk2_ardour/transcode_ffmpeg.cc @@ -392,7 +392,7 @@ TranscodeFfmpeg::encode (std::string outfile, std::string inf_a, std::string inf } bool -TranscodeFfmpeg::extract_audio (std::string outfile, ARDOUR::framecnt_t samplerate, unsigned int stream) +TranscodeFfmpeg::extract_audio (std::string outfile, ARDOUR::framecnt_t /*samplerate*/, unsigned int stream) { if (!probeok) return false; if (stream >= m_audio.size()) return false; diff --git a/gtk2_ardour/utils.cc b/gtk2_ardour/utils.cc index 72a922046f..97368a7863 100644 --- a/gtk2_ardour/utils.cc +++ b/gtk2_ardour/utils.cc @@ -395,7 +395,7 @@ emulate_key_event (Gtk::Widget* w, unsigned int keyval) ev.state = 0; ev.keyval = keyval; ev.length = 0; - ev.string = (gchar*) ""; + ev.string = ""; ev.hardware_keycode = keymapkey[0].keycode; ev.group = keymapkey[0].group; g_free(keymapkey); diff --git a/libs/ardour/meter.cc b/libs/ardour/meter.cc index 26e865bec3..765038b728 100644 --- a/libs/ardour/meter.cc +++ b/libs/ardour/meter.cc @@ -327,6 +327,8 @@ PeakMeter::meter () } } +#define CHECKSIZE(MTR) (n < MTR.size() + n_midi && n >= n_midi) + float PeakMeter::meter_level(uint32_t n, MeterType type) { switch (type) { @@ -334,8 +336,8 @@ PeakMeter::meter_level(uint32_t n, MeterType type) { case MeterK20: case MeterK14: { - const int n_midi = current_meters.n_midi(); - if ((n - n_midi) < _kmeter.size() && (n - n_midi) >= 0) { + const uint32_t n_midi = current_meters.n_midi(); + if (CHECKSIZE(_kmeter)) { return accurate_coefficient_to_dB (_kmeter[n - n_midi]->read()); } } @@ -343,8 +345,8 @@ PeakMeter::meter_level(uint32_t n, MeterType type) { case MeterIEC1DIN: case MeterIEC1NOR: { - const int n_midi = current_meters.n_midi(); - if ((n - n_midi) < _iec1meter.size() && (n - n_midi) >= 0) { + const uint32_t n_midi = current_meters.n_midi(); + if (CHECKSIZE(_iec1meter)) { return accurate_coefficient_to_dB (_iec1meter[n - n_midi]->read()); } } @@ -352,16 +354,16 @@ PeakMeter::meter_level(uint32_t n, MeterType type) { case MeterIEC2BBC: case MeterIEC2EBU: { - const int n_midi = current_meters.n_midi(); - if ((n - n_midi) < _iec2meter.size() && (n - n_midi) >= 0) { + const uint32_t n_midi = current_meters.n_midi(); + if (CHECKSIZE(_iec2meter)) { return accurate_coefficient_to_dB (_iec2meter[n - n_midi]->read()); } } break; case MeterVU: { - const int n_midi = current_meters.n_midi(); - if ((n - n_midi) < _vumeter.size() && (n - n_midi) >= 0) { + const uint32_t n_midi = current_meters.n_midi(); + if (CHECKSIZE(_vumeter)) { return accurate_coefficient_to_dB (_vumeter[n - n_midi]->read()); } } diff --git a/libs/ardour/track.cc b/libs/ardour/track.cc index 5dfc956c75..9db8e1ff3a 100644 --- a/libs/ardour/track.cc +++ b/libs/ardour/track.cc @@ -398,6 +398,9 @@ Track::no_roll (pframes_t nframes, framepos_t start_frame, framepos_t end_frame, case MonitoringInput: be_silent = false; break; + default: + be_silent = false; + break; } } diff --git a/libs/pbd/pbd/ringbuffer.h b/libs/pbd/pbd/ringbuffer.h index f14fa71851..652457b493 100644 --- a/libs/pbd/pbd/ringbuffer.h +++ b/libs/pbd/pbd/ringbuffer.h @@ -233,6 +233,7 @@ RingBuffer::get_read_vector (RingBuffer::rw_vector *vec) vec->buf[0] = &buf[r]; vec->len[0] = free_cnt; + vec->buf[1] = 0; vec->len[1] = 0; } } diff --git a/libs/surfaces/osc/osc.h b/libs/surfaces/osc/osc.h index 5c3422799b..84dd0d9c86 100644 --- a/libs/surfaces/osc/osc.h +++ b/libs/surfaces/osc/osc.h @@ -188,7 +188,7 @@ class OSC : public ARDOUR::ControlProtocol, public AbstractUI static int _ ## name (const char *path, const char *types, lo_arg **argv, int argc, void *data, void *user_data) { \ return static_cast(user_data)->cb_ ## name (path, types, argv, argc, data); \ } \ - int cb_ ## name (const char *, const char *, lo_arg **argv, int argc, void *data) { \ + int cb_ ## name (const char *, const char *, lo_arg **argv, int argc, void *) { \ if (argc > 1) { \ name (argv[0]->arg1type, argv[1]->arg2type,argv[2]->arg3type); \ } \ @@ -199,7 +199,7 @@ class OSC : public ARDOUR::ControlProtocol, public AbstractUI static int _ ## name (const char *path, const char *types, lo_arg **argv, int argc, void *data, void *user_data) { \ return static_cast(user_data)->cb_ ## name (path, types, argv, argc, data); \ } \ - int cb_ ## name (const char *, const char *, lo_arg **argv, int argc, void *data) { \ + int cb_ ## name (const char *, const char *, lo_arg **argv, int argc, void *) { \ if (argc > 1) { \ name (argv[0]->arg1type, argv[1]->arg2type,argv[2]->arg3type,argv[3]->arg4type); \ } \ -- cgit v1.2.3