f025f6ebd5c2de6e12fab3ce9f4504cb78cfd532
[ruby-ecore.git] / src / ecore_x / rb_cursor.c
1 /*
2  * $Id: rb_cursor.c 351 2006-02-10 15:25:40Z tilman $
3  *
4  * Copyright (C) 2004 ruby-ecore team (see AUTHORS)
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this library; if not, write to the Free Software
18  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19  */
20
21 #include <ruby.h>
22
23 #include <Ecore_X.h>
24 #include <Ecore_X_Cursor.h>
25
26 #define __RB_CURSOR_C
27 #include "../ecore/rb_ecore.h"
28 #include "rb_ecore_x.h"
29 #include "rb_cursor.h"
30
31 VALUE cCursor;
32
33 static void c_free (RbCursor *c)
34 {
35         if (c->real && c->need_free)
36                 ecore_x_cursor_free (c->real);
37
38         free (c);
39 }
40
41 static VALUE c_alloc (VALUE klass)
42 {
43         RbCursor *cursor = NULL;
44
45         return Data_Make_Struct (klass, RbCursor, NULL, c_free, cursor);
46 }
47
48 static VALUE c_new_from_shape (VALUE klass, VALUE shape)
49 {
50         VALUE self;
51         RbCursor *cursor = NULL;
52
53         self = rb_class_new_instance (1, &shape, klass);
54
55         Data_Get_Struct (self, RbCursor, cursor);
56
57         cursor->real = ecore_x_cursor_shape_get (FIX2INT (shape));
58         cursor->need_free = false;
59
60         return self;
61 }
62
63 void Init_Cursor (void)
64 {
65         cCursor = rb_define_class_under (mX, "Cursor", rb_cObject);
66
67         rb_define_alloc_func (cCursor, c_alloc);
68         rb_define_singleton_method (cCursor, "new_from_shape",
69                                     c_new_from_shape, 1);
70
71         /* shape constants */
72         DEF_CONST (cCursor, ECORE_X_CURSOR_, X);
73         DEF_CONST (cCursor, ECORE_X_CURSOR_, ARROW);
74         DEF_CONST (cCursor, ECORE_X_CURSOR_, BASED_ARROW_DOWN);
75         DEF_CONST (cCursor, ECORE_X_CURSOR_, UP);
76         DEF_CONST (cCursor, ECORE_X_CURSOR_, BOAT);
77         DEF_CONST (cCursor, ECORE_X_CURSOR_, BOTTOM_LEFT_CORNER);
78         DEF_CONST (cCursor, ECORE_X_CURSOR_, BOTTOM_RIGHT_CORNER);
79         DEF_CONST (cCursor, ECORE_X_CURSOR_, BOTTOM_SIDE);
80         DEF_CONST (cCursor, ECORE_X_CURSOR_, BOTTOM_TEE);
81         DEF_CONST (cCursor, ECORE_X_CURSOR_, BOX_SPIRAL);
82         DEF_CONST (cCursor, ECORE_X_CURSOR_, CENTER_PTR);
83         DEF_CONST (cCursor, ECORE_X_CURSOR_, CIRCLE);
84         DEF_CONST (cCursor, ECORE_X_CURSOR_, CLOCK);
85         DEF_CONST (cCursor, ECORE_X_CURSOR_, COFFEE_MUG);
86         DEF_CONST (cCursor, ECORE_X_CURSOR_, CROSS);
87         DEF_CONST (cCursor, ECORE_X_CURSOR_, CROSS_REVERSE);
88         DEF_CONST (cCursor, ECORE_X_CURSOR_, CROSSHAIR);
89         DEF_CONST (cCursor, ECORE_X_CURSOR_, DIAMOND_CROSS);
90         DEF_CONST (cCursor, ECORE_X_CURSOR_, DOT);
91         DEF_CONST (cCursor, ECORE_X_CURSOR_, DOT_BOX_MASK);
92         DEF_CONST (cCursor, ECORE_X_CURSOR_, DOUBLE_ARROW);
93         DEF_CONST (cCursor, ECORE_X_CURSOR_, DRAFT_LARGE);
94         DEF_CONST (cCursor, ECORE_X_CURSOR_, DRAFT_SMALL);
95         DEF_CONST (cCursor, ECORE_X_CURSOR_, DRAPED_BOX);
96         DEF_CONST (cCursor, ECORE_X_CURSOR_, EXCHANGE);
97         DEF_CONST (cCursor, ECORE_X_CURSOR_, FLEUR);
98         DEF_CONST (cCursor, ECORE_X_CURSOR_, GOBBLER);
99         DEF_CONST (cCursor, ECORE_X_CURSOR_, GUMBY);
100         DEF_CONST (cCursor, ECORE_X_CURSOR_, HAND1);
101         DEF_CONST (cCursor, ECORE_X_CURSOR_, HAND2);
102         DEF_CONST (cCursor, ECORE_X_CURSOR_, HEART);
103         DEF_CONST (cCursor, ECORE_X_CURSOR_, ICON);
104         DEF_CONST (cCursor, ECORE_X_CURSOR_, IRON_CROSS);
105         DEF_CONST (cCursor, ECORE_X_CURSOR_, LEFT_PTR);
106         DEF_CONST (cCursor, ECORE_X_CURSOR_, LEFT_SIDE);
107         DEF_CONST (cCursor, ECORE_X_CURSOR_, LEFT_TEE);
108         DEF_CONST (cCursor, ECORE_X_CURSOR_, LEFTBUTTON);
109         DEF_CONST (cCursor, ECORE_X_CURSOR_, LL_ANGLE);
110         DEF_CONST (cCursor, ECORE_X_CURSOR_, LR_ANGLE);
111         DEF_CONST (cCursor, ECORE_X_CURSOR_, MAN);
112         DEF_CONST (cCursor, ECORE_X_CURSOR_, MIDDLEBUTTON);
113         DEF_CONST (cCursor, ECORE_X_CURSOR_, MOUSE);
114         DEF_CONST (cCursor, ECORE_X_CURSOR_, PENCIL);
115         DEF_CONST (cCursor, ECORE_X_CURSOR_, PIRATE);
116         DEF_CONST (cCursor, ECORE_X_CURSOR_, PLUS);
117         DEF_CONST (cCursor, ECORE_X_CURSOR_, QUESTION_ARROW);
118         DEF_CONST (cCursor, ECORE_X_CURSOR_, RIGHT_PTR);
119         DEF_CONST (cCursor, ECORE_X_CURSOR_, RIGHT_SIDE);
120         DEF_CONST (cCursor, ECORE_X_CURSOR_, RIGHT_TEE);
121         DEF_CONST (cCursor, ECORE_X_CURSOR_, RIGHTBUTTON);
122         DEF_CONST (cCursor, ECORE_X_CURSOR_, RTL_LOGO);
123         DEF_CONST (cCursor, ECORE_X_CURSOR_, SAILBOAT);
124         DEF_CONST (cCursor, ECORE_X_CURSOR_, SB_DOWN_ARROW);
125         DEF_CONST (cCursor, ECORE_X_CURSOR_, SB_H_DOUBLE_ARROW);
126         DEF_CONST (cCursor, ECORE_X_CURSOR_, SB_LEFT_ARROW);
127         DEF_CONST (cCursor, ECORE_X_CURSOR_, SB_RIGHT_ARROW);
128         DEF_CONST (cCursor, ECORE_X_CURSOR_, SB_UP_ARROW);
129         DEF_CONST (cCursor, ECORE_X_CURSOR_, SB_V_DOUBLE_ARROW);
130         DEF_CONST (cCursor, ECORE_X_CURSOR_, SHUTTLE);
131         DEF_CONST (cCursor, ECORE_X_CURSOR_, SIZING);
132         DEF_CONST (cCursor, ECORE_X_CURSOR_, SPIDER);
133         DEF_CONST (cCursor, ECORE_X_CURSOR_, SPRAYCAN);
134         DEF_CONST (cCursor, ECORE_X_CURSOR_, STAR);
135         DEF_CONST (cCursor, ECORE_X_CURSOR_, TARGET);
136         DEF_CONST (cCursor, ECORE_X_CURSOR_, TCROSS);
137         DEF_CONST (cCursor, ECORE_X_CURSOR_, TOP_LEFT_ARROW);
138         DEF_CONST (cCursor, ECORE_X_CURSOR_, TOP_LEFT_CORNER);
139         DEF_CONST (cCursor, ECORE_X_CURSOR_, TOP_RIGHT_CORNER);
140         DEF_CONST (cCursor, ECORE_X_CURSOR_, TOP_SIDE);
141         DEF_CONST (cCursor, ECORE_X_CURSOR_, TOP_TEE);
142         DEF_CONST (cCursor, ECORE_X_CURSOR_, TREK);
143         DEF_CONST (cCursor, ECORE_X_CURSOR_, UL_ANGLE);
144         DEF_CONST (cCursor, ECORE_X_CURSOR_, UMBRELLA);
145         DEF_CONST (cCursor, ECORE_X_CURSOR_, UR_ANGLE);
146         DEF_CONST (cCursor, ECORE_X_CURSOR_, WATCH);
147         DEF_CONST (cCursor, ECORE_X_CURSOR_, XTERM);
148 }