Add a couple of missing ellipses to menu items.
[ardour.git] / gtk2_ardour / canvas-waveview.c
index f3a3117622528551b51875959b28ea9562f64b3d..1e28a2733090f00863c221fa8173349125e3a30f 100644 (file)
@@ -24,6 +24,7 @@
 #include <cairo.h>
 #include <string.h>
 #include <limits.h>
+#include <unistd.h>
 
 #include "ardour/dB.h"
 
 #include "canvas-waveview.h"
 #include "rgb_macros.h"
 
+/* POSIX guarantees casting between void* and function pointers, ISO C doesn't
+ * We can work around warnings by going one step deeper in our casts
+ */
+#ifdef _POSIX_VERSION
+#define POSIX_FUNC_PTR_CAST(type, object) *((type*) &(object))
+#endif // _POSIX_VERSION
 
 extern void c_stacktrace();
 
@@ -751,6 +758,7 @@ gnome_canvas_waveview_set_property (GObject      *object,
        item = GNOME_CANVAS_ITEM (object);
        waveview = GNOME_CANVAS_WAVEVIEW (object);
 
+       void * ptr;
        switch (prop_id) {
        case PROP_DATA_SRC:
                gnome_canvas_waveview_set_data_src (waveview, g_value_get_pointer(value));
@@ -763,26 +771,26 @@ gnome_canvas_waveview_set_property (GObject      *object,
                break;
 
        case PROP_LENGTH_FUNCTION:
-               waveview->length_function = (gulong (*)(void*)) g_value_get_pointer(value);
+               ptr = g_value_get_pointer(value);
+               waveview->length_function = POSIX_FUNC_PTR_CAST(waveview_length_function_t, ptr);
                redraw = TRUE;
                break;
 
        case PROP_SOURCEFILE_LENGTH_FUNCTION:
-               waveview->sourcefile_length_function = (gulong (*)(void*,double)) g_value_get_pointer(value);
+               ptr = g_value_get_pointer(value);
+               waveview->sourcefile_length_function = POSIX_FUNC_PTR_CAST(waveview_sourcefile_length_function_t, ptr);
                redraw = TRUE;
                break;
 
        case PROP_PEAK_FUNCTION:
-               waveview->peak_function = 
-                       (void (*)(void*,gulong,gulong,gulong,gpointer,guint32,double))
-                        g_value_get_pointer(value);
+               ptr = g_value_get_pointer(value);
+               waveview->peak_function = POSIX_FUNC_PTR_CAST(waveview_peak_function_t, ptr);
                redraw = TRUE;
                break;
 
        case PROP_GAIN_FUNCTION:
-               waveview->gain_curve_function = 
-                       (void (*)(void *arg, double start, double end, float* vector, gint64 veclen))
-                        g_value_get_pointer(value);
+               ptr = g_value_get_pointer(value);
+               waveview->gain_curve_function = POSIX_FUNC_PTR_CAST(waveview_gain_curve_function_t, ptr);
                         redraw = TRUE;
                break;
 
@@ -950,19 +958,19 @@ gnome_canvas_waveview_get_property (
                break;
 
        case PROP_LENGTH_FUNCTION:
-               g_value_set_pointer(value, (void*) waveview->length_function);
+               g_value_set_pointer(value, POSIX_FUNC_PTR_CAST(void*, waveview->length_function));
                break;
 
        case PROP_SOURCEFILE_LENGTH_FUNCTION:
-               g_value_set_pointer(value, (void*) waveview->sourcefile_length_function);
+               g_value_set_pointer(value, POSIX_FUNC_PTR_CAST(void*, waveview->sourcefile_length_function));
                break;
 
        case PROP_PEAK_FUNCTION:
-               g_value_set_pointer(value, (void*) waveview->peak_function);
+               g_value_set_pointer(value, POSIX_FUNC_PTR_CAST(void*, waveview->peak_function));
                break;
 
        case PROP_GAIN_FUNCTION:
-               g_value_set_pointer(value, (void*) waveview->gain_curve_function);
+               g_value_set_pointer(value, POSIX_FUNC_PTR_CAST(void*, waveview->gain_curve_function));
                break;
 
        case PROP_GAIN_SRC:
@@ -1610,12 +1618,11 @@ gnome_canvas_waveview_render (GnomeCanvasItem *item,
                }
        }
 
-       if (!waveview->rectified && waveview->zero_line) {
+       if (!waveview->rectified && waveview->zero_line && waveview->height >= 100) {
                // 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 );
+               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, zbegin, zend, zeroline_y);
        }