80 lines
2.1 KiB
C
80 lines
2.1 KiB
C
|
/* nknob.h
|
||
|
* LV2 DrMr plugin
|
||
|
* Copyright 2012 Nick Lanham <nick@afternight.org>
|
||
|
*
|
||
|
* 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
|
||
|
* <http://github.com/nicklan/drmr>
|
||
|
*
|
||
|
* 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 <gdk/gdk.h>
|
||
|
#include <gtk/gtkrange.h>
|
||
|
|
||
|
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
|