view src/xs_curve.h @ 957:0e60e5d56fdd

Change how the backend emulator library is initialized for libSIDPlay2 and FP, as it seems the engine configuration has some persistence despite reconfiguration between loaded files if same engine object is retained. This caused, for example, 2SID stereo tunes being played "mono" if played after a normal 1-SID tune. Duh.
author Matti Hamalainen <ccr@tnsp.org>
date Tue, 20 Nov 2012 22:13:48 +0200
parents b5b6b13a6d85
children
line wrap: on
line source

#ifndef XS_CURVE_H
#define XS_CURVE_H

#include <gdk/gdk.h>
#include <gtk/gtkdrawingarea.h>

#ifdef __cplusplus
extern "C" {
#endif

/* Macros for type-classing this GtkWidget/object
 */
#define XS_TYPE_CURVE            (xs_curve_get_type())
#define XS_CURVE(obj)            (GTK_CHECK_CAST ((obj), XS_TYPE_CURVE, XSCurve))
#define XS_CURVE_CLASS(luokka)        (GTK_CHECK_CLASS_CAST ((luokka), XS_TYPE_CURVE, XSCurveClass))
#define XS_IS_CURVE(obj)        (GTK_CHECK_TYPE ((obj), XS_TYPE_CURVE))
#define XS_IS_CURVE_CLASS(luokka)    (GTK_CHECK_CLASS_TYPE ((luokka), XS_TYPE_CURVE))


/* Structures
 */
typedef struct _XSCurve XSCurve;
typedef struct _XSCurveClass XSCurveClass;

typedef struct {
    gfloat x,y;
} xs_point_t;

typedef struct {
    gint x, y;
} xs_int_point_t;

struct _XSCurve {
    GtkDrawingArea graph;

    gint cursor_type;
    gfloat min_x;
    gfloat max_x;
    gfloat min_y;
    gfloat max_y;
    GdkPixmap *pixmap;
    gint grab_point;    /* point currently grabbed */

    /* control points */
    gint nctlpoints;    /* number of control points */
    xs_point_t *ctlpoints;    /* array of control points */
};

struct _XSCurveClass {
    GtkDrawingAreaClass parent_class;
};


GtkType        xs_curve_get_type    (void);
GtkWidget*    xs_curve_new        (void);
void        xs_curve_reset        (XSCurve *curve);
void        xs_curve_set_range    (XSCurve *curve,
                     gfloat min_x, gfloat min_y,
                     gfloat max_x, gfloat max_y);
gboolean    xs_curve_realloc_data    (XSCurve *curve, gint npoints);
void        xs_curve_get_data    (XSCurve *curve, xs_point_t ***points, gint **npoints);
gboolean    xs_curve_set_points    (XSCurve *curve, xs_int_point_t *points, gint npoints);
gboolean    xs_curve_get_points    (XSCurve *curve, xs_int_point_t **points, gint *npoints);

#ifdef __cplusplus
}
#endif

#endif /* XS_CURVE_H */