Got gameplay working and board resizing with window.
[gmemory:gmemory.git] / src / gmemory-card.h
1 /*
2  *  GMemory - gmemory-card.h
3  *
4  *  Copyright (C) 2010 Openismus GmbH
5  *
6  *  Author: Chris Kühl <chrisk@openismus.com>
7  *
8  *  This program is free software: you can redistribute it and/or modify
9  *  it under the terms of the GNU General Public License as published by
10  *  the Free Software Foundation, either version 3 of the License, or
11  *  (at your option) any later version.
12  *
13  *  This program is distributed in the hope that it will be useful,
14  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
15  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  *  GNU General Public License for more details.
17  *
18  *  You should have received a copy of the GNU General Public License
19  *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
20  */
21
22 #ifndef __GMEMORY_CARD_H__
23 #define __GMEMORY_CARD_H__
24
25 #include <clutter/clutter.h>
26
27 G_BEGIN_DECLS /* Start extern "C" wrap */
28
29 #define GMEMORY_TYPE_CARD            (gmemory_card_get_type())
30 #define GMEMORY_CARD(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GMEMORY_TYPE_CARD, GMemoryCard))
31 #define GMEMORY_IS_CARD(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GMEMORY_TYPE_CARD))
32 #define GMEMORY_CARD_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST  ((klass), GMEMORY_TYPE_CARD, GMemoryCardClass))
33 #define GMEMORY_IS_CARD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE  ((klass), GMEMORY_TYPE_CARD))
34 #define GMEMORY_CARD_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS  ((obj), GMEMORY_TYPE_CARD, GMemoryCardClass))
35
36 typedef struct _GMemoryCard        GMemoryCard;
37 typedef struct _GMemoryCardClass   GMemoryCardClass;
38 typedef struct _GMemoryCardPrivate GMemoryCardPrivate;
39
40 #define DEFAULT_CARD_SIZE 50
41
42 typedef enum {
43         CARD_STATE_FACE_DOWN,
44         CARD_STATE_FACE_UP
45 } GMemoryCardState;
46
47 struct _GMemoryCard {
48         /* For starters, we'll make this a ClutterRectangle.
49          * Later it'll be a ClutterCairoTexture
50          */
51         ClutterRectangle  parent_instance;
52
53         /* private */
54         GMemoryCardPrivate *priv;
55 };
56
57 struct _GMemoryCardClass {
58         ClutterRectangleClass parent_class;
59
60         /* class members */
61         ClutterColor card_back_color;
62 };
63
64 /* Used by GMEMORY_TYPE_CARD. */
65 GType gmemory_card_get_type(void);
66
67 ClutterActor* gmemory_card_new(guint id);
68
69 /* Method definitions. */
70 void gmemory_card_set_id        (GMemoryCard *card, guint id);
71 void gmemory_card_set_size      (GMemoryCard *card, guint size);
72 void gmemory_card_set_face_color(GMemoryCard *card, gchar *face_color);
73 void gmemory_card_turn          (GMemoryCard *card, gboolean turn_face_up);
74
75 G_END_DECLS /* End extern "C" wrap */
76
77 #endif /* __GMEMORY_CARD_H__ */
78