summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorSampo Savolainen <v2@iki.fi>2007-04-02 21:18:15 +0000
committerSampo Savolainen <v2@iki.fi>2007-04-02 21:18:15 +0000
commitedfc81352e66a412c6bc180c15f788512eccbe42 (patch)
tree48bf65ba147d89af0324b619a970b3a6909d4da8 /gtk2_ardour
parent54de4975722073a555ff79a01f7015217313065f (diff)
Make colors for clip markers controllable by ardour.colors. Default
color is totally transparent. Thanks Torben! git-svn-id: svn://localhost/ardour2/trunk@1656 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/ardour.colors3
-rw-r--r--gtk2_ardour/audio_region_view.cc27
-rw-r--r--gtk2_ardour/canvas-waveview.c55
-rw-r--r--gtk2_ardour/canvas-waveview.h3
-rw-r--r--gtk2_ardour/colors.h3
-rw-r--r--gtk2_ardour/time_axis_view_item.cc2
-rw-r--r--gtk2_ardour/waveview.cc16
-rw-r--r--gtk2_ardour/waveview.h4
8 files changed, 99 insertions, 14 deletions
diff --git a/gtk2_ardour/ardour.colors b/gtk2_ardour/ardour.colors
index 84283d6be3..b68d270e6e 100644
--- a/gtk2_ardour/ardour.colors
+++ b/gtk2_ardour/ardour.colors
@@ -1,4 +1,5 @@
cWaveForm 0.0 0.0 0.0 0.80
+cWaveFormClip 1.0 0.0 0.0 0.90
cMutedWaveForm 0.35 0.35 0.35 1.0
cSelectedFrameBase 0.71 0.57 0.66 1.0
cFrameBase 0.75 0.75 0.76 1.0
@@ -70,6 +71,8 @@ cMeasureLineBar 0.55 0.55 0.60 0.55
cGhostTrackBaseOutline 0.00 0.00 0.00 1.00
cGhostTrackBaseFill 0.27 0.00 0.49 0.50
cGhostTrackWave 0.0 3.00 0.0 0.30
+cGhostTrackWaveClip 1.0 0.0 0.0 0.0
+cGhostTrackZeroLine 0.9 0.0 0.9 0.40
cImageTrackBase 0.87 0.87 0.85 1.00
cImageTrackOutline 0.00 0.00 0.00 1.00
cMarkerTrackBase 0.87 0.87 0.85 1.00
diff --git a/gtk2_ardour/audio_region_view.cc b/gtk2_ardour/audio_region_view.cc
index 04324a7d60..9e16390751 100644
--- a/gtk2_ardour/audio_region_view.cc
+++ b/gtk2_ardour/audio_region_view.cc
@@ -678,6 +678,9 @@ AudioRegionView::set_colors ()
} else {
waves[n]->property_wave_color() = color_map[cWaveForm];
}
+
+ waves[n]->property_clip_color() = color_map[cWaveFormClip];
+ waves[n]->property_zero_color() = color_map[cZeroLine];
}
}
@@ -752,7 +755,7 @@ AudioRegionView::set_envelope_visible (bool yn)
void
AudioRegionView::create_waves ()
{
- bool create_zero_line = true;
+ bool create_zero_line = false;
RouteTimeAxisView& atv (*(dynamic_cast<RouteTimeAxisView*>(&trackview))); // ick
@@ -786,7 +789,9 @@ AudioRegionView::create_waves ()
}
}
- if (create_zero_line) {
+ // Blame torben
+ //if (create_zero_line) {
+ if (0) {
if (zero_line) {
delete zero_line;
}
@@ -830,6 +835,8 @@ AudioRegionView::create_one_wave (uint32_t which, bool direct)
wave->property_samples_per_unit() = samples_per_unit;
wave->property_amplitude_above_axis() = _amplitude_above_axis;
wave->property_wave_color() = _region->muted() ? color_map[cMutedWaveForm] : color_map[cWaveForm];
+ wave->property_clip_color() = color_map[cWaveFormClip];
+ wave->property_zero_color() = color_map[cZeroLine];
wave->property_region_start() = _region->start();
wave->property_rectified() = (bool) (_flags & WaveformRectified);
wave->property_logscaled() = (bool) (_flags & WaveformLogScaled);
@@ -868,6 +875,7 @@ AudioRegionView::create_one_wave (uint32_t which, bool direct)
/* all waves created, don't hook into peaks ready anymore */
data_ready_connection.disconnect ();
+ if(0)
if (!zero_line) {
zero_line = new ArdourCanvas::SimpleLine (*group);
zero_line->property_x1() = (gdouble) 1.0;
@@ -1075,6 +1083,8 @@ AudioRegionView::add_ghost (AutomationTimeAxisView& atv)
wave->property_samples_per_unit() = samples_per_unit;
wave->property_amplitude_above_axis() = _amplitude_above_axis;
wave->property_wave_color() = color_map[cGhostTrackWave];
+ wave->property_clip_color() = color_map[cGhostTrackWaveClip];
+ wave->property_zero_color() = color_map[cGhostTrackZeroLine];
wave->property_region_start() = _region->start();
ghost->waves.push_back(wave);
@@ -1159,6 +1169,10 @@ AudioRegionView::color_handler (ColorID id, uint32_t val)
switch (id) {
case cMutedWaveForm:
case cWaveForm:
+ case cWaveFormClip:
+ case cGhostTrackWave:
+ case cGhostTrackWaveClip:
+ case cZeroLine:
set_colors ();
break;
@@ -1166,15 +1180,6 @@ AudioRegionView::color_handler (ColorID id, uint32_t val)
case cGainLine:
envelope_active_changed();
break;
-
- case cZeroLine:
- if (zero_line) {
- zero_line->property_color_rgba() = (guint) color_map[cZeroLine];
- }
- break;
-
- case cGhostTrackWave:
- break;
default:
break;
diff --git a/gtk2_ardour/canvas-waveview.c b/gtk2_ardour/canvas-waveview.c
index c8e9f61332..e4c1a80cfa 100644
--- a/gtk2_ardour/canvas-waveview.c
+++ b/gtk2_ardour/canvas-waveview.c
@@ -30,6 +30,7 @@
#include "canvas-waveview.h"
#include "rgb_macros.h"
+
extern void c_stacktrace();
enum {
@@ -49,6 +50,8 @@ enum {
PROP_Y,
PROP_HEIGHT,
PROP_WAVE_COLOR,
+ PROP_CLIP_COLOR,
+ PROP_ZERO_COLOR,
PROP_RECTIFIED,
PROP_REGION_START,
PROP_LOGSCALED,
@@ -251,6 +254,20 @@ gnome_canvas_waveview_class_init (GnomeCanvasWaveViewClass *class)
g_object_class_install_property
(gobject_class,
+ PROP_CLIP_COLOR,
+ g_param_spec_uint ("clip_color", NULL, NULL,
+ 0, G_MAXUINT, 0,
+ (G_PARAM_READABLE | G_PARAM_WRITABLE)));
+
+ g_object_class_install_property
+ (gobject_class,
+ PROP_ZERO_COLOR,
+ g_param_spec_uint ("zero_color", NULL, NULL,
+ 0, G_MAXUINT, 0,
+ (G_PARAM_READABLE | G_PARAM_WRITABLE)));
+
+ g_object_class_install_property
+ (gobject_class,
PROP_RECTIFIED,
g_param_spec_boolean ("rectified", NULL, NULL,
FALSE,
@@ -326,6 +343,8 @@ gnome_canvas_waveview_init (GnomeCanvasWaveView *waveview)
waveview->reload_cache_in_render = FALSE;
waveview->wave_color = RGBA_TO_UINT(44,35,126,255);
+ waveview->clip_color = RGBA_TO_UINT(44,0,0,100);
+ waveview->zero_color = RGBA_TO_UINT(44,0,128,100);
}
static void
@@ -797,6 +816,20 @@ gnome_canvas_waveview_set_property (GObject *object,
}
break;
+ case PROP_CLIP_COLOR:
+ if (waveview->clip_color != g_value_get_uint(value)) {
+ waveview->clip_color = g_value_get_uint(value);
+ redraw = TRUE;
+ }
+ break;
+
+ case PROP_ZERO_COLOR:
+ if (waveview->zero_color != g_value_get_uint(value)) {
+ waveview->zero_color = g_value_get_uint(value);
+ redraw = TRUE;
+ }
+ break;
+
case PROP_RECTIFIED:
if (waveview->rectified != g_value_get_boolean(value)) {
waveview->rectified = g_value_get_boolean(value);
@@ -909,6 +942,14 @@ gnome_canvas_waveview_get_property (GObject *object,
g_value_set_uint (value, waveview->wave_color);
break;
+ case PROP_CLIP_COLOR:
+ g_value_set_uint (value, waveview->clip_color);
+ break;
+
+ case PROP_ZERO_COLOR:
+ g_value_set_uint (value, waveview->zero_color);
+ break;
+
case PROP_RECTIFIED:
g_value_set_boolean (value, waveview->rectified);
break;
@@ -969,6 +1010,8 @@ gnome_canvas_waveview_update (GnomeCanvasItem *item, double *affine, ArtSVP *cli
UINT_TO_RGBA (waveview->wave_color, &waveview->wave_r, &waveview->wave_g, &waveview->wave_b,
&waveview->wave_a);
+ UINT_TO_RGBA (waveview->clip_color, &waveview->clip_r, &waveview->clip_g, &waveview->clip_b,
+ &waveview->clip_a);
// check_cache (waveview, "end of update");
}
@@ -1066,6 +1109,7 @@ gnome_canvas_waveview_render (GnomeCanvasItem *item,
#define origin half_height
+
for (x = begin; x < end; x++) {
double max, min;
@@ -1126,11 +1170,11 @@ gnome_canvas_waveview_render (GnomeCanvasItem *item,
}
if (clip_max) {
- PAINT_VERT(buf, 255, 0, 0, x, pymax, pymax+clip_length);
+ PAINT_VERTA(buf, waveview->clip_r, waveview->clip_g, waveview->clip_b, waveview->clip_a, x, pymax, pymax+clip_length);
}
if (clip_min) {
- PAINT_VERT(buf, 255, 0, 0, x, pymin-clip_length, pymin);
+ PAINT_VERTA(buf, waveview->clip_r, waveview->clip_g, waveview->clip_b, waveview->clip_a, x, pymin-clip_length, pymin);
}
/* presto, we're done */
@@ -1138,6 +1182,13 @@ gnome_canvas_waveview_render (GnomeCanvasItem *item,
cache_index++;
}
+ // Paint zeroline.
+ //PAINT_HORIZA(buf, waveview->zero_r, waveview->zero_g, waveview->zero_b, waveview->zero_a, begin, endi-1, origin );
+
+ unsigned char zero_r, zero_g, zero_b, zero_a;
+ UINT_TO_RGBA( waveview->zero_color, &zero_r, &zero_g, &zero_b, &zero_a );
+ int zeroline_y = (int) rint ((item->y1 + origin) * item->canvas->pixels_per_unit);
+ PAINT_HORIZA(buf, zero_r, zero_g, zero_b, zero_a, begin, end, zeroline_y);
#undef origin
}
diff --git a/gtk2_ardour/canvas-waveview.h b/gtk2_ardour/canvas-waveview.h
index 81cf35910e..6a7410546e 100644
--- a/gtk2_ardour/canvas-waveview.h
+++ b/gtk2_ardour/canvas-waveview.h
@@ -99,6 +99,8 @@ struct _GnomeCanvasWaveView
double height;
double half_height;
uint32_t wave_color;
+ uint32_t clip_color;
+ uint32_t zero_color;
char rectified;
char logscaled;
@@ -113,6 +115,7 @@ struct _GnomeCanvasWaveView
int32_t bbox_lrx;
int32_t bbox_lry;
unsigned char wave_r, wave_g, wave_b, wave_a;
+ unsigned char clip_r, clip_g, clip_b, clip_a;
uint32_t samples;
uint32_t region_start;
int32_t reload_cache_in_render;
diff --git a/gtk2_ardour/colors.h b/gtk2_ardour/colors.h
index a64ba1c8b4..3fba0e0a4d 100644
--- a/gtk2_ardour/colors.h
+++ b/gtk2_ardour/colors.h
@@ -1,6 +1,7 @@
/* no guard clauses here */
COLORID(cWaveForm)
+COLORID(cWaveFormClip)
COLORID(cMutedWaveForm)
COLORID(cSelectedFrameBase)
COLORID(cFrameBase)
@@ -72,6 +73,8 @@ COLORID(cMeasureLineBar)
COLORID(cGhostTrackBaseOutline)
COLORID(cGhostTrackBaseFill)
COLORID(cGhostTrackWave)
+COLORID(cGhostTrackWaveClip)
+COLORID(cGhostTrackZeroLine)
COLORID(cImageTrackBase)
COLORID(cImageTrackOutline)
COLORID(cMarkerTrackBase)
diff --git a/gtk2_ardour/time_axis_view_item.cc b/gtk2_ardour/time_axis_view_item.cc
index fb45655256..09d959358d 100644
--- a/gtk2_ardour/time_axis_view_item.cc
+++ b/gtk2_ardour/time_axis_view_item.cc
@@ -130,7 +130,7 @@ TimeAxisViewItem::init (const string& it_name, double spu, Gdk::Color& base_colo
frame_position = start ;
item_duration = duration ;
name_connected = false;
- fill_opacity = 130;
+ fill_opacity = 60;
position_locked = false ;
max_item_duration = ARDOUR::max_frames;
min_item_duration = 0 ;
diff --git a/gtk2_ardour/waveview.cc b/gtk2_ardour/waveview.cc
index d9316c110e..fef90cde22 100644
--- a/gtk2_ardour/waveview.cc
+++ b/gtk2_ardour/waveview.cc
@@ -251,6 +251,22 @@ Glib::PropertyProxy_ReadOnly<guint> WaveView::property_wave_color() const
{
return Glib::PropertyProxy_ReadOnly<guint> (this, "wave_color");
}
+Glib::PropertyProxy<guint> WaveView::property_clip_color()
+{
+ return Glib::PropertyProxy<guint> (this, "clip_color");
+}
+Glib::PropertyProxy_ReadOnly<guint> WaveView::property_clip_color() const
+{
+ return Glib::PropertyProxy_ReadOnly<guint> (this, "clip_color");
+}
+Glib::PropertyProxy<guint> WaveView::property_zero_color()
+{
+ return Glib::PropertyProxy<guint> (this, "zero_color");
+}
+Glib::PropertyProxy_ReadOnly<guint> WaveView::property_zero_color() const
+{
+ return Glib::PropertyProxy_ReadOnly<guint> (this, "zero_color");
+}
Glib::PropertyProxy<gint> WaveView::property_rectified()
{
return Glib::PropertyProxy<gint> (this, "rectified");
diff --git a/gtk2_ardour/waveview.h b/gtk2_ardour/waveview.h
index cfa7fd416d..99028f2519 100644
--- a/gtk2_ardour/waveview.h
+++ b/gtk2_ardour/waveview.h
@@ -142,7 +142,11 @@ public:
Glib::PropertyProxy_ReadOnly<double> property_height() const;
Glib::PropertyProxy<guint> property_wave_color();
Glib::PropertyProxy_ReadOnly<guint> property_wave_color() const;
+ Glib::PropertyProxy<guint> property_clip_color();
+ Glib::PropertyProxy_ReadOnly<guint> property_clip_color() const;
Glib::PropertyProxy<gint> property_rectified();
+ Glib::PropertyProxy<guint> property_zero_color();
+ Glib::PropertyProxy_ReadOnly<guint> property_zero_color() const;
Glib::PropertyProxy_ReadOnly<gint> property_rectified() const;
Glib::PropertyProxy<guint> property_region_start();
Glib::PropertyProxy_ReadOnly<guint> property_region_start() const;