/* nknob.h * LV2 DrMr plugin * Copyright 2012 Nick Lanham * * NKnob - A simplified version of phatknob that just is a new gui * over a GtkRange (i.e. it can be used exactly like a * GtkRange from the outside) * * From PhatKnob code: * Most of this code comes from gAlan 0.2.0, copyright (C) 1999 * Tony Garnock-Jones, with modifications by Sean Bolton, * copyright (c) 2004. (gtkdial.c rolls over in its grave.) * * Phatised by Loki Davison. * * GNU Public License v3. source code is available at * * * THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * */ #ifndef __NKNOB_H__ #define __NKNOB_H__ #include #include G_BEGIN_DECLS #define N_KNOB(obj) GTK_CHECK_CAST(obj, n_knob_get_type(), NKnob) #define N_KNOB_CLASS(klass) GTK_CHECK_CLASS_CAST(klass, n_knob_get_type(), NKnobClass) #define N_IS_KNOB(obj) GTK_CHECK_TYPE(obj, n_knob_get_type()) #define N_TYPE_KNOB (n_knob_get_type ( )) typedef struct _NKnob NKnob; typedef struct _NKnobClass NKnobClass; struct _NKnob { GtkRange range; /* State of widget (to do with user interaction) */ guint8 state; gint saved_x, saved_y; /* size of the widget */ gint size; /* Pixmap for knob */ GdkPixbuf *pixbuf; GdkBitmap *mask; GdkGC *mask_gc; GdkGC *red_gc; }; struct _NKnobClass { GtkRangeClass parent_class; }; GType n_knob_get_type ( ); GtkWidget* n_knob_new (GtkAdjustment* adjustment); GtkWidget* n_knob_new_with_range (double value, double lower, double upper, double step); G_END_DECLS #endif