#ifndef __GTK_MINEFIELD_H__
#define __GTK_MINEFIELD_H__
#include <gdk/gdk.h>
#include <gtk/gtkwidget.h>
#include <glib.h>
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
#define GTK_MINEFIELD(obj) GTK_CHECK_CAST(obj, gtk_minefield_get_type(), GtkMineFieldView)
#define GTK_MINEFIELD_CLASS(klass) GTK_CHECK_CLASS_CAST(klass, gtk_minefield_get_type(), GtkMineFieldViewClass);
#define GTK_IS_MINEFIELD(obj) GTK_CHECK_TYPE(obj, gtk_minefield_get_type())
typedef struct _MineField MineField;
typedef struct _GtkMineFieldView GtkMineFieldView;
typedef struct _GtkMineFieldViewClass GtkMineFieldViewClass;
struct _Mine {
guint mined:1;
guint shown:1;
guint marked:1;
guint down:1;
guint neighbours;
};
typedef struct _Mine mine;
typedef struct _Sign sign;
struct _Sign {
GdkPixmap *pixmap;
GdkBitmap *mask;
gint width;
gint height;
};
struct _MineField {
/* List of minefield widgets */
GList *views;
guint xsize;
guint ysize;
guint mcount;
mine *mines;
guint flags;
guint shown;
gint lose;
gint win;
};
struct _GtkMineFieldView {
GtkWidget widget;
MineField *data;
gint cdown;
guint cdownx;
guint cdowny;
gint bdown[3];
gint multi_mode;
guint minesize;
GdkFont *font;
GdkColorContext *cc;
sign flag;
sign mine;
struct {
char text[2];
gint dx, dy;
GdkGC *gc;
} numstr[9];
};
struct _GtkMineFieldViewClass
{
GtkWidgetClass parent_class;
void (*marks_changed) (GtkMineFieldView *mfield);
void (*explode) (GtkMineFieldView *mfield);
void (*look) (GtkMineFieldView *mfield);
void (*unlook) (GtkMineFieldView *mfield);
void (*win) (GtkMineFieldView *mfield);
};
MineField *minefield_new (void);
void minefield_destroy (MineField *data);
void minefield_set_size (MineField *data,
guint xsize, guint ysize);
void minefield_set_mines (MineField *data, guint mcount);
void minefield_restart (MineField *data);
void minefield_set_at (MineField *data, int x, int y,
char num, char state);
void minefield_get_at (MineField *data, int x, int y,
char *num, char *state);
guint gtk_minefield_get_type (void);
GtkWidget *gtk_minefield_new_view (MineField *data);
void gtk_minefield_set_minesize (GtkMineFieldView *data,
guint minesize);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* __GTK_MINEFIELD_H__ */
syntax highlighted by Code2HTML, v. 0.9.1