[SCM] calf/master: + GUI: implement reverse monochrome mode in VU meters, add PF_CTLO_REVERSE flag to enable it in stock GUIs
js at users.alioth.debian.org
js at users.alioth.debian.org
Tue May 7 15:38:00 UTC 2013
The following commit has been merged in the master branch:
commit 1cb9a3a4a10ffb7bc0bbfa7c7b9ab27acfd540b1
Author: Krzysztof Foltman <wdev at foltman.com>
Date: Thu Oct 30 23:26:36 2008 +0000
+ GUI: implement reverse monochrome mode in VU meters, add PF_CTLO_REVERSE flag to enable it in stock GUIs
diff --git a/src/calf/custom_ctl.h b/src/calf/custom_ctl.h
index cea65d6..a8bd755 100644
--- a/src/calf/custom_ctl.h
+++ b/src/calf/custom_ctl.h
@@ -54,9 +54,17 @@ extern GType calf_line_graph_get_type();
#define CALF_VUMETER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CALF_TYPE_VUMETER, CalfVUMeterClass))
#define CALF_IS_VUMETER_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE ((klass), CALF_TYPE_VUMETER))
+enum CalfVUMeterMode
+{
+ VU_STANDARD,
+ VU_MONOCHROME,
+ VU_MONOCHROME_REVERSE
+};
+
struct CalfVUMeter
{
GtkWidget parent;
+ CalfVUMeterMode mode;
float value;
};
@@ -69,6 +77,8 @@ extern GtkWidget *calf_vumeter_new();
extern GType calf_vumeter_get_type();
extern void calf_vumeter_set_value(CalfVUMeter *meter, float value);
extern float calf_vumeter_get_value(CalfVUMeter *meter);
+extern void calf_vumeter_set_mode(CalfVUMeter *meter, CalfVUMeterMode mode);
+extern CalfVUMeterMode calf_vumeter_get_mode(CalfVUMeter *meter);
#define CALF_TYPE_KNOB (calf_knob_get_type())
#define CALF_KNOB(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CALF_TYPE_KNOB, CalfKnob))
diff --git a/src/calf/giface.h b/src/calf/giface.h
index d1b2b89..f66e3ed 100644
--- a/src/calf/giface.h
+++ b/src/calf/giface.h
@@ -80,6 +80,7 @@ enum parameter_flags
PF_CTLO_HORIZ = 0x001000, ///< horizontal version of the control
PF_CTLO_VERT = 0x002000, ///< vertical version of the control
PF_CTLO_LABEL = 0x004000, ///< add a text display to the control (meters only)
+ PF_CTLO_REVERSE = 0x008000, ///< use VU_MONOCHROME_REVERSE mode (meters only)
PF_PROP_NOBOUNDS = 0x010000, ///< no epp:hasStrictBounds
PF_PROP_EXPENSIVE = 0x020000, ///< epp:expensive, may trigger expensive calculation
diff --git a/src/custom_ctl.cpp b/src/custom_ctl.cpp
index 4ff19a9..65a60af 100644
--- a/src/custom_ctl.cpp
+++ b/src/custom_ctl.cpp
@@ -190,16 +190,31 @@ calf_vumeter_expose (GtkWidget *widget, GdkEventExpose *event)
cairo_fill(c);
cairo_set_line_width(c, 1);
+ CalfVUMeterMode mode = vu->mode;
+
for (int x = ox; x <= ox + sx; x += 3)
{
float ts = (x - ox) * 1.0 / sx;
float r, g, b;
- if (ts < 0.75)
- r = ts / 0.75, g = 1, b = 0;
- else
- r = 1, g = 1 - (ts - 0.75) / 0.25, b = 0;
- if (vu->value < ts || vu->value <= 0)
- r *= 0.5, g *= 0.5, b *= 0.5;
+ switch(mode)
+ {
+ case VU_STANDARD:
+ if (ts < 0.75)
+ r = ts / 0.75, g = 1, b = 0;
+ else
+ r = 1, g = 1 - (ts - 0.75) / 0.25, b = 0;
+ if (vu->value < ts || vu->value <= 0)
+ r *= 0.5, g *= 0.5, b *= 0.5;
+ break;
+ case VU_MONOCHROME_REVERSE:
+ ts = 1 - ts;
+ // fall through
+ case VU_MONOCHROME:
+ r = 1, g = 1, b = 0;
+ if (vu->value < ts || vu->value <= 0)
+ r *= 0.5, g *= 0.5, b *= 0.5;
+ break;
+ }
GdkColor sc2 = { 0, (guint16)(65535 * r), (guint16)(65535 * g), (guint16)(65535 * b) };
gdk_cairo_set_source_color(c, &sc2);
cairo_move_to(c, x, oy);
@@ -311,6 +326,20 @@ extern float calf_vumeter_get_value(CalfVUMeter *meter)
return meter->value;
}
+extern void calf_vumeter_set_mode(CalfVUMeter *meter, CalfVUMeterMode mode)
+{
+ if (mode != meter->mode)
+ {
+ meter->mode = mode;
+ gtk_widget_queue_draw(GTK_WIDGET(meter));
+ }
+}
+
+extern CalfVUMeterMode calf_vumeter_get_mode(CalfVUMeter *meter)
+{
+ return meter->mode;
+}
+
///////////////////////////////////////// knob ///////////////////////////////////////////////
static gboolean
diff --git a/src/gui.cpp b/src/gui.cpp
index cfcea48..fd393b7 100644
--- a/src/gui.cpp
+++ b/src/gui.cpp
@@ -544,6 +544,8 @@ GtkWidget *plugin_gui::create(plugin_ctl_iface *_plugin)
{
params[i] = new vumeter_param_control();
widget = params[i]->create(this, i);
+ if (props.flags & PF_CTLO_REVERSE)
+ calf_vumeter_set_mode (CALF_VUMETER (widget), VU_MONOCHROME_REVERSE);
if (props.flags & PF_CTLO_LABEL)
{
gtk_table_attach (GTK_TABLE (container), widget, 1, 2, trow, trow + 1, (GtkAttachOptions)(GTK_EXPAND | GTK_FILL), GTK_SHRINK, 0, 0);
--
calf audio plugins packaging
More information about the pkg-multimedia-commits
mailing list