shoes 3.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (275) hide show
  1. data/.gitignore +12 -0
  2. data/CHANGELOG +29 -0
  3. data/COPYING +30 -0
  4. data/README.md +76 -0
  5. data/README.old +117 -0
  6. data/Rakefile +130 -0
  7. data/Rakefile.bk +651 -0
  8. data/app.yaml +7 -0
  9. data/bin/main.skel +104 -0
  10. data/bugs/issue-012e9468ddc7b0cb7e1503413a8a11c4f8707b67.yaml +21 -0
  11. data/bugs/issue-0711ff8b67baa63586f11d0096fee9dd4436bf58.yaml +23 -0
  12. data/bugs/issue-07f87998d93eb401e22395c11085676389b935c4.yaml +22 -0
  13. data/bugs/issue-0bff2d80008803cbc7efbcdacdc60ef2163664d2.yaml +22 -0
  14. data/bugs/issue-0c66f223d19efbca7b692f3b91961f407ad7abec.yaml +24 -0
  15. data/bugs/issue-183bc3c7a8f575aff2b24e0bf22aa0dfcc8e4fc2.yaml +29 -0
  16. data/bugs/issue-1bad1e60a04cb3adb6a8f3ded128af2e16b56ffe.yaml +18 -0
  17. data/bugs/issue-1f1d43f76bf4de79d7f94adbae6dd506a9d81633.yaml +41 -0
  18. data/bugs/issue-320924117cadb045cc91f2a6fca922b4d81d4bb5.yaml +20 -0
  19. data/bugs/issue-33e5c8355fbf65252ea9e939714651df8bd8cb3b.yaml +25 -0
  20. data/bugs/issue-36f7c8262a72bcd5e28cfa4ed29328b8237ea79b.yaml +20 -0
  21. data/bugs/issue-39bf04ee50c3bef67b89b8e9beb28657805587ce.yaml +18 -0
  22. data/bugs/issue-3e28ba7754f73d02ef416eef989af707a8c00f01.yaml +23 -0
  23. data/bugs/issue-3f638cc03f41f9c3fdf217355321f1563f8fee45.yaml +22 -0
  24. data/bugs/issue-41e48e14f1ef4f6deb69be68165d7dd3ffd99156.yaml +22 -0
  25. data/bugs/issue-4c9408166a2aa5dd333bbb05520deebf4ded08e0.yaml +22 -0
  26. data/bugs/issue-55c687e108ecd5aeb8e0d0aeb4294984f84acd3e.yaml +18 -0
  27. data/bugs/issue-5811d34692cc292717a58ec1df1f8948cf30d826.yaml +28 -0
  28. data/bugs/issue-5a7c1f59a0526f9cea7fb366867cf1e6ed8ef69d.yaml +22 -0
  29. data/bugs/issue-688a2c2566bef6a03efa57a4ae1f7cfa8fc74444.yaml +21 -0
  30. data/bugs/issue-78b16c7988ade2ef96e716fa8cb9a004bd4ced65.yaml +33 -0
  31. data/bugs/issue-804ee49f9800154eddf0650690c7a9bb5626253f.yaml +27 -0
  32. data/bugs/issue-807dd1c610b2e941a5d454e26b2eac27e89a0ab4.yaml +22 -0
  33. data/bugs/issue-822ee33ec11ebd25f90ea86e8438de7891e63aee.yaml +18 -0
  34. data/bugs/issue-82ff7152cebb8a1cb065b864cb4fe22de2328146.yaml +29 -0
  35. data/bugs/issue-856afbdcdd4970ad54b8ce4a6c017fbaab45f49d.yaml +31 -0
  36. data/bugs/issue-8d49e32fb21522651c67490adb4d80076dbb14e1.yaml +24 -0
  37. data/bugs/issue-91583359653a9d530c1e32be72d874d847a306e7.yaml +21 -0
  38. data/bugs/issue-af41a5229613172764e7d3c98431172db337053d.yaml +20 -0
  39. data/bugs/issue-bd9856b3788dd429c998a5af1b2aae8221cb80b7.yaml +28 -0
  40. data/bugs/issue-be22aef5c564fb7b5e9938343136a9cd6a2edb7b.yaml +22 -0
  41. data/bugs/issue-bf8697523c77c326e7e35fc82cf3dd739ae92310.yaml +27 -0
  42. data/bugs/issue-cdd4b4795f34d6ff46e56ece10f8216a4a5456b2.yaml +25 -0
  43. data/bugs/issue-d9bfb5581d745ef9deb3b9b2e08ef74d1cd43082.yaml +20 -0
  44. data/bugs/issue-e0ce2f687cc096f35715d28b0af88589f4ab6cc6.yaml +18 -0
  45. data/bugs/issue-e4b0aca4a10a574b333aeaecaaf221dbc5ed22c6.yaml +38 -0
  46. data/bugs/issue-f263746594b95ba778455730478ee8df60ee639d.yaml +22 -0
  47. data/bugs/project.yaml +72 -0
  48. data/builddeps.sh +102 -0
  49. data/fonts/Coolvetica.ttf +0 -0
  50. data/fonts/Lacuna.ttf +0 -0
  51. data/gemlib/shoes.rb +1 -0
  52. data/lib/shoes.rb +548 -0
  53. data/lib/shoes/cache.rb +54 -0
  54. data/lib/shoes/chipmunk.rb +35 -0
  55. data/lib/shoes/data.rb +39 -0
  56. data/lib/shoes/help.rb +468 -0
  57. data/lib/shoes/image.rb +25 -0
  58. data/lib/shoes/inspect.rb +128 -0
  59. data/lib/shoes/log.rb +48 -0
  60. data/lib/shoes/minitar.rb +986 -0
  61. data/lib/shoes/override.rb +38 -0
  62. data/lib/shoes/pack.rb +543 -0
  63. data/lib/shoes/search.rb +46 -0
  64. data/lib/shoes/setup.rb +329 -0
  65. data/lib/shoes/shy.rb +131 -0
  66. data/lib/shoes/shybuilder.rb +44 -0
  67. data/lib/shoes/version.rb +3 -0
  68. data/make/darwin/deps.vlc +12 -0
  69. data/make/darwin/dylibs.shoes +22 -0
  70. data/make/darwin/dylibs.video +11 -0
  71. data/make/darwin/env.rb +81 -0
  72. data/make/darwin/tasks.rb +105 -0
  73. data/make/linux/env.rb +65 -0
  74. data/make/linux/tasks.rb +61 -0
  75. data/make/make.rb +85 -0
  76. data/make/mingw/dlls +19 -0
  77. data/make/mingw/env.rb +69 -0
  78. data/make/mingw/tasks.rb +70 -0
  79. data/make/rakefile_common.rb +8 -0
  80. data/manual-snapshots/class-book.png +0 -0
  81. data/manual-snapshots/expert-definr.png +0 -0
  82. data/manual-snapshots/expert-funnies.png +0 -0
  83. data/manual-snapshots/expert-irb.png +0 -0
  84. data/manual-snapshots/expert-minesweeper.png +0 -0
  85. data/manual-snapshots/expert-othello.png +0 -0
  86. data/manual-snapshots/expert-pong.png +0 -0
  87. data/manual-snapshots/expert-tankspank.png +0 -0
  88. data/manual-snapshots/good-arc.png +0 -0
  89. data/manual-snapshots/good-clock.png +0 -0
  90. data/manual-snapshots/good-follow.png +0 -0
  91. data/manual-snapshots/good-reminder.png +0 -0
  92. data/manual-snapshots/good-vjot.png +0 -0
  93. data/manual-snapshots/simple-accordion.png +0 -0
  94. data/manual-snapshots/simple-anim-shapes.png +0 -0
  95. data/manual-snapshots/simple-anim-text.png +0 -0
  96. data/manual-snapshots/simple-arc.png +0 -0
  97. data/manual-snapshots/simple-bounce.png +0 -0
  98. data/manual-snapshots/simple-calc.png +0 -0
  99. data/manual-snapshots/simple-chipmunk.png +0 -0
  100. data/manual-snapshots/simple-control-sizes.png +0 -0
  101. data/manual-snapshots/simple-curve.png +0 -0
  102. data/manual-snapshots/simple-dialogs.png +0 -0
  103. data/manual-snapshots/simple-downloader.png +0 -0
  104. data/manual-snapshots/simple-draw.png +0 -0
  105. data/manual-snapshots/simple-editor.png +0 -0
  106. data/manual-snapshots/simple-form.png +0 -0
  107. data/manual-snapshots/simple-mask.png +0 -0
  108. data/manual-snapshots/simple-menu.png +0 -0
  109. data/manual-snapshots/simple-menu1.png +0 -0
  110. data/manual-snapshots/simple-rubygems.png +0 -0
  111. data/manual-snapshots/simple-slide.png +0 -0
  112. data/manual-snapshots/simple-sphere.png +0 -0
  113. data/manual-snapshots/simple-sqlite3.png +0 -0
  114. data/manual-snapshots/simple-timer.png +0 -0
  115. data/manual-snapshots/simple-video.png +0 -0
  116. data/platform/mac/Info.plist +55 -0
  117. data/platform/mac/build-deps.sh +658 -0
  118. data/platform/mac/command-manual.rb +1 -0
  119. data/platform/mac/deps-osx.patch +159 -0
  120. data/platform/mac/dmg_ds_store +0 -0
  121. data/platform/mac/pangorc +2 -0
  122. data/platform/mac/pkg-dmg +1447 -0
  123. data/platform/mac/shoes +31 -0
  124. data/platform/mac/shoes-launch +7 -0
  125. data/platform/mac/stub.m +178 -0
  126. data/platform/mac/version.plist +14 -0
  127. data/platform/msw/base.nsi +644 -0
  128. data/platform/msw/installer-1.bmp +0 -0
  129. data/platform/msw/installer-2.bmp +0 -0
  130. data/platform/msw/shoes.exe.manifest +17 -0
  131. data/platform/msw/shoes.ico +0 -0
  132. data/platform/msw/stub-inject.c +59 -0
  133. data/platform/msw/stub.c +271 -0
  134. data/platform/msw/stub32.h +14 -0
  135. data/platform/msw/stub32.rc +16 -0
  136. data/platform/nix/INSTALL +56 -0
  137. data/platform/nix/Makefile +144 -0
  138. data/platform/nix/shoes.launch +20 -0
  139. data/platform/skel.rb +27 -0
  140. data/rakefile_darwin.rb +7 -0
  141. data/rakefile_linux.rb +3 -0
  142. data/rakefile_mingw.rb +7 -0
  143. data/samples/class-book.rb +43 -0
  144. data/samples/class-book.yaml +387 -0
  145. data/samples/expert-definr.rb +23 -0
  146. data/samples/expert-funnies.rb +51 -0
  147. data/samples/expert-irb.rb +112 -0
  148. data/samples/expert-minesweeper.rb +267 -0
  149. data/samples/expert-othello.rb +319 -0
  150. data/samples/expert-pong.rb +62 -0
  151. data/samples/expert-tankspank.rb +385 -0
  152. data/samples/good-arc.rb +37 -0
  153. data/samples/good-clock.rb +51 -0
  154. data/samples/good-follow.rb +26 -0
  155. data/samples/good-reminder.rb +174 -0
  156. data/samples/good-vjot.rb +56 -0
  157. data/samples/simple-accordion.rb +75 -0
  158. data/samples/simple-anim-shapes.rb +17 -0
  159. data/samples/simple-anim-text.rb +13 -0
  160. data/samples/simple-arc.rb +23 -0
  161. data/samples/simple-bounce.rb +24 -0
  162. data/samples/simple-calc.rb +70 -0
  163. data/samples/simple-chipmunk.rb +26 -0
  164. data/samples/simple-control-sizes.rb +24 -0
  165. data/samples/simple-curve.rb +26 -0
  166. data/samples/simple-dialogs.rb +29 -0
  167. data/samples/simple-downloader.rb +27 -0
  168. data/samples/simple-draw.rb +13 -0
  169. data/samples/simple-editor.rb +28 -0
  170. data/samples/simple-form.rb +28 -0
  171. data/samples/simple-form.shy +0 -0
  172. data/samples/simple-mask.rb +21 -0
  173. data/samples/simple-menu.rb +31 -0
  174. data/samples/simple-menu1.rb +35 -0
  175. data/samples/simple-rubygems.rb +29 -0
  176. data/samples/simple-slide.rb +45 -0
  177. data/samples/simple-sphere.rb +28 -0
  178. data/samples/simple-sqlite3.rb +13 -0
  179. data/samples/simple-timer.rb +13 -0
  180. data/samples/simple-video.rb +13 -0
  181. data/shoes.gemspec +21 -0
  182. data/shoes/app.c +591 -0
  183. data/shoes/app.h +110 -0
  184. data/shoes/appwin32.h +13 -0
  185. data/shoes/appwin32.rc +28 -0
  186. data/shoes/canvas.c +2202 -0
  187. data/shoes/canvas.h +682 -0
  188. data/shoes/code.h +14 -0
  189. data/shoes/config.h +232 -0
  190. data/shoes/effects.c +243 -0
  191. data/shoes/effects.h +7 -0
  192. data/shoes/http.h +44 -0
  193. data/shoes/http/common.h +86 -0
  194. data/shoes/http/curl.c +259 -0
  195. data/shoes/http/nsurl.m +274 -0
  196. data/shoes/http/windownload.c +114 -0
  197. data/shoes/http/winhttp.c +216 -0
  198. data/shoes/http/winhttp.h +19 -0
  199. data/shoes/image.c +1020 -0
  200. data/shoes/internal.c +46 -0
  201. data/shoes/internal.h +63 -0
  202. data/shoes/native.h +110 -0
  203. data/shoes/native/cocoa.h +105 -0
  204. data/shoes/native/cocoa.m +1557 -0
  205. data/shoes/native/gtk.c +1257 -0
  206. data/shoes/native/windows.c +2392 -0
  207. data/shoes/ruby.c +5221 -0
  208. data/shoes/ruby.h +299 -0
  209. data/shoes/world.c +243 -0
  210. data/shoes/world.h +63 -0
  211. data/static/Shoes.icns +0 -0
  212. data/static/avatar.png +0 -0
  213. data/static/code_highlighter.js +188 -0
  214. data/static/code_highlighter_ruby.js +26 -0
  215. data/static/icon-debug.png +0 -0
  216. data/static/icon-error.png +0 -0
  217. data/static/icon-info.png +0 -0
  218. data/static/icon-warn.png +0 -0
  219. data/static/listbox_button1.png +0 -0
  220. data/static/listbox_button2.png +0 -0
  221. data/static/man-app.png +0 -0
  222. data/static/man-builds.png +0 -0
  223. data/static/man-builds1.png +0 -0
  224. data/static/man-editor-notepad.png +0 -0
  225. data/static/man-editor-osx.png +0 -0
  226. data/static/man-ele-background.png +0 -0
  227. data/static/man-ele-border.png +0 -0
  228. data/static/man-ele-button.png +0 -0
  229. data/static/man-ele-check.png +0 -0
  230. data/static/man-ele-editbox.png +0 -0
  231. data/static/man-ele-editline.png +0 -0
  232. data/static/man-ele-image.png +0 -0
  233. data/static/man-ele-listbox.png +0 -0
  234. data/static/man-ele-progress.png +0 -0
  235. data/static/man-ele-radio.png +0 -0
  236. data/static/man-ele-shape.png +0 -0
  237. data/static/man-ele-textblock.png +0 -0
  238. data/static/man-ele-video.png +0 -0
  239. data/static/man-intro-dmg.png +0 -0
  240. data/static/man-intro-exe.png +0 -0
  241. data/static/man-look-tiger.png +0 -0
  242. data/static/man-look-ubuntu.png +0 -0
  243. data/static/man-look-vista.png +0 -0
  244. data/static/man-run-osx.png +0 -0
  245. data/static/man-run-vista.png +0 -0
  246. data/static/man-run-xp.png +0 -0
  247. data/static/man-shot1.png +0 -0
  248. data/static/manual-en.txt +3531 -0
  249. data/static/manual-ja.txt +2825 -0
  250. data/static/manual.css +167 -0
  251. data/static/menu-corner1.png +0 -0
  252. data/static/menu-corner2.png +0 -0
  253. data/static/menu-gray.png +0 -0
  254. data/static/menu-left.png +0 -0
  255. data/static/menu-right.png +0 -0
  256. data/static/menu-top.png +0 -0
  257. data/static/shoes-dmg.jpg +0 -0
  258. data/static/shoes-icon-blue.png +0 -0
  259. data/static/shoes-icon.png +0 -0
  260. data/static/shoes-manual-apps.gif +0 -0
  261. data/static/shoes_main_window.png +0 -0
  262. data/static/stripe.png +0 -0
  263. data/static/stubs/blank.exe +0 -0
  264. data/static/stubs/blank.hfz +0 -0
  265. data/static/stubs/blank.run +375 -0
  266. data/static/stubs/cocoa-install +0 -0
  267. data/static/stubs/sh-install +49 -0
  268. data/static/stubs/shoes-stub-inject.exe +0 -0
  269. data/static/stubs/shoes-stub.exe +0 -0
  270. data/static/tutor-back.png +0 -0
  271. data/test/shoes_test.rb +8 -0
  272. data/test/test_helper.rb +25 -0
  273. data/use-deps +12 -0
  274. data/use-tmp-dep +8 -0
  275. metadata +509 -0
@@ -0,0 +1,682 @@
1
+ //
2
+ // shoes/canvas.h
3
+ // Ruby methods for all the drawing ops.
4
+ //
5
+ #ifndef SHOES_CANVAS_H
6
+ #define SHOES_CANVAS_H
7
+
8
+ #include <cairo.h>
9
+ #include <cairo-svg.h>
10
+ #include <cairo-ps.h>
11
+ #include <cairo-pdf.h>
12
+
13
+ #include <pango/pangocairo.h>
14
+ #include <ruby.h>
15
+
16
+ #include "shoes/config.h"
17
+ #include "shoes/code.h"
18
+
19
+ struct _shoes_app;
20
+
21
+ typedef unsigned int PIXEL;
22
+
23
+ extern const double RAD2PI, PIM2, PI;
24
+ extern const char *dialog_title, *dialog_title_says;
25
+
26
+ #define REL_WINDOW 1
27
+ #define REL_CANVAS 2
28
+ #define REL_CURSOR 3
29
+ #define REL_TILE 4
30
+ #define REL_STICKY 5
31
+ #define REL_SCALE 8
32
+
33
+ #define REL_COORDS(x) (x & 0x07)
34
+ #define REL_FLAGS(x) (x & 0xF8)
35
+
36
+ #define FLAG_POSITION 0x0F
37
+ #define FLAG_ABSX 0x10
38
+ #define FLAG_ABSY 0x20
39
+ #define FLAG_ORIGIN 0x40
40
+
41
+ #define HOVER_MOTION 0x01
42
+ #define HOVER_CLICK 0x02
43
+
44
+ //
45
+ // affine transforms, to avoid littering these structs everywhere
46
+ //
47
+ typedef struct {
48
+ cairo_matrix_t tf;
49
+ ID mode;
50
+ int refs;
51
+ } shoes_transform;
52
+
53
+ //
54
+ // place struct
55
+ // (outlines the area where a control has been placed)
56
+ //
57
+ typedef struct {
58
+ int x, y, w, h, dx, dy;
59
+ int ix, iy, iw, ih;
60
+ unsigned char flags;
61
+ } shoes_place;
62
+
63
+ #define SETUP_BASIC() \
64
+ shoes_basic *basic; \
65
+ Data_Get_Struct(self, shoes_basic, basic);
66
+ #define COPY_PENS(attr1, attr2) \
67
+ if (NIL_P(ATTR(attr1, stroke))) ATTRSET(attr1, stroke, ATTR(attr2, stroke)); \
68
+ if (NIL_P(ATTR(attr1, fill))) ATTRSET(attr1, fill, ATTR(attr2, fill)); \
69
+ if (NIL_P(ATTR(attr1, strokewidth))) ATTRSET(attr1, strokewidth, ATTR(attr2, strokewidth)); \
70
+ if (NIL_P(ATTR(attr1, cap))) ATTRSET(attr1, cap, ATTR(attr2, cap));
71
+ #define DRAW(c, app, blk) \
72
+ { \
73
+ rb_ary_push(app->nesting, c); \
74
+ blk; \
75
+ rb_ary_pop(app->nesting); \
76
+ }
77
+ #define PATTERN_DIM(self_t, x) (self_t->cached != NULL ? self_t->cached->x : 1)
78
+ #define PATTERN(self_t) (self_t->cached != NULL ? self_t->cached->pattern : self_t->pattern)
79
+ #define ABSX(place) ((place).flags & FLAG_ABSX)
80
+ #define ABSY(place) ((place).flags & FLAG_ABSY)
81
+ #define POS(place) ((place).flags & FLAG_POSITION)
82
+ #define ORIGIN(place) ((place).flags & FLAG_ORIGIN)
83
+ #define CPX(c) (c != NULL && (c->place.flags & FLAG_ORIGIN) ? 0 : c->place.ix)
84
+ #define CPY(c) (c != NULL && (c->place.flags & FLAG_ORIGIN) ? 0 : c->place.iy)
85
+ #define CPB(c) ((c->place.h - c->place.ih) - (c->place.iy - c->place.y))
86
+ #define CPH(c) (ORIGIN(c->place) ? c->height : (c->fully - CPB(c)) - CPY(c))
87
+ #define CPW(c) (c->place.iw)
88
+ #define CCR(c) (c->cr == NULL ? c->app->scratch : c->cr)
89
+ #define SWPOS(x) ((int)sw % 2 == 0 ? x * 1. : x + .5)
90
+
91
+ //
92
+ // color struct
93
+ //
94
+ typedef struct {
95
+ unsigned char r, g, b, a, on;
96
+ } shoes_color;
97
+
98
+ #define SHOES_COLOR_OPAQUE 0xFF
99
+ #define SHOES_COLOR_TRANSPARENT 0x0
100
+ #define SHOES_COLOR_DARK (0x55 * 3)
101
+ #define SHOES_COLOR_LIGHT (0xAA * 3)
102
+
103
+ //
104
+ // basic struct
105
+ //
106
+ typedef struct {
107
+ VALUE parent;
108
+ VALUE attr;
109
+ } shoes_basic;
110
+
111
+ typedef struct {
112
+ VALUE parent;
113
+ VALUE attr;
114
+ shoes_place place;
115
+ } shoes_element;
116
+
117
+ //
118
+ // shape struct
119
+ //
120
+ typedef struct {
121
+ VALUE parent;
122
+ VALUE attr;
123
+ shoes_place place;
124
+ ID name;
125
+ char hover;
126
+ cairo_path_t *line;
127
+ shoes_transform *st;
128
+ } shoes_shape;
129
+
130
+ //
131
+ // flow struct
132
+ //
133
+ typedef struct {
134
+ VALUE parent;
135
+ VALUE attr;
136
+ VALUE contents;
137
+ } shoes_flow;
138
+
139
+ //
140
+ // link struct
141
+ //
142
+ typedef struct {
143
+ int start;
144
+ int end;
145
+ VALUE ele;
146
+ } shoes_link;
147
+
148
+ //
149
+ // text cursor
150
+ //
151
+ typedef struct {
152
+ int pos, x, y, hi;
153
+ } shoes_textcursor;
154
+
155
+ //
156
+ // text block struct
157
+ //
158
+ typedef struct {
159
+ VALUE parent;
160
+ VALUE attr;
161
+ shoes_place place;
162
+ VALUE texts;
163
+ VALUE links;
164
+ shoes_textcursor *cursor;
165
+ PangoLayout *layout;
166
+ PangoAttrList *pattr;
167
+ GString *text;
168
+ gsize len;
169
+ char cached, hover;
170
+ shoes_transform *st;
171
+ } shoes_textblock;
172
+
173
+ //
174
+ // text struct
175
+ //
176
+ typedef struct {
177
+ VALUE parent;
178
+ VALUE attr;
179
+ VALUE texts;
180
+ char hover;
181
+ } shoes_text;
182
+
183
+ //
184
+ // cached image
185
+ //
186
+ typedef enum {
187
+ SHOES_IMAGE_NONE,
188
+ SHOES_IMAGE_PNG,
189
+ SHOES_IMAGE_JPEG,
190
+ SHOES_IMAGE_GIF
191
+ } shoes_image_format;
192
+
193
+ typedef struct {
194
+ cairo_surface_t *surface;
195
+ cairo_pattern_t *pattern;
196
+ int width, height, mtime;
197
+ shoes_image_format format;
198
+ } shoes_cached_image;
199
+
200
+ #define SHOES_CACHE_FILE 0
201
+ #define SHOES_CACHE_ALIAS 1
202
+ #define SHOES_CACHE_MEM 2
203
+
204
+ typedef struct {
205
+ unsigned char type;
206
+ shoes_cached_image *image;
207
+ } shoes_cache_entry;
208
+
209
+ //
210
+ // image struct
211
+ //
212
+ #define SHOES_IMAGE_EXPIRE (60 * 60)
213
+ typedef struct {
214
+ VALUE parent;
215
+ VALUE attr;
216
+ shoes_place place;
217
+ unsigned char type;
218
+ shoes_cached_image *cached;
219
+ shoes_transform *st;
220
+ cairo_t *cr;
221
+ VALUE path;
222
+ char hover;
223
+ } shoes_image;
224
+
225
+ #ifdef VIDEO
226
+ #define SHOES_VIDEO 1
227
+ //
228
+ // video struct
229
+ //
230
+ typedef struct {
231
+ VALUE parent;
232
+ VALUE attr;
233
+ shoes_place place;
234
+ SHOES_CONTROL_REF ref;
235
+ libvlc_exception_t excp;
236
+ #ifdef VIDEO
237
+ #ifdef VLC_0_8
238
+ libvlc_instance_t *vlc;
239
+ #else
240
+ libvlc_media_player_t *vlc;
241
+ #endif
242
+ #endif
243
+ int init;
244
+ VALUE path;
245
+ SHOES_SLOT_OS *slot;
246
+ } shoes_video;
247
+ #else
248
+ #define SHOES_VIDEO 0
249
+ #endif
250
+
251
+ //
252
+ // pattern struct
253
+ //
254
+ typedef struct {
255
+ VALUE parent;
256
+ VALUE attr;
257
+ shoes_place place;
258
+ VALUE source;
259
+ char hover;
260
+ shoes_cached_image *cached;
261
+ cairo_pattern_t *pattern;
262
+ } shoes_pattern;
263
+
264
+ //
265
+ // native controls struct
266
+ //
267
+ #define CONTROL_NORMAL 0
268
+ #define CONTROL_READONLY 1
269
+ #define CONTROL_DISABLED 2
270
+
271
+ typedef struct {
272
+ VALUE parent;
273
+ VALUE attr;
274
+ shoes_place place;
275
+ SHOES_CONTROL_REF ref;
276
+ } shoes_control;
277
+
278
+ #define ANIM_NADA 0
279
+ #define ANIM_STARTED 1
280
+ #define ANIM_PAUSED 2
281
+ #define ANIM_STOPPED 3
282
+
283
+ //
284
+ // animation struct
285
+ //
286
+ typedef struct {
287
+ VALUE parent;
288
+ VALUE block;
289
+ unsigned int rate, frame;
290
+ char started;
291
+ SHOES_TIMER_REF ref;
292
+ } shoes_timer;
293
+
294
+ typedef void (*shoes_effect_filter)(cairo_t *, VALUE attr, shoes_place *);
295
+
296
+ typedef struct {
297
+ VALUE parent;
298
+ VALUE attr;
299
+ shoes_place place;
300
+ shoes_effect_filter filter;
301
+ } shoes_effect;
302
+
303
+ typedef struct {
304
+ VALUE parent;
305
+ VALUE attr;
306
+ VALUE response;
307
+ unsigned char state;
308
+ unsigned LONG_LONG total;
309
+ unsigned LONG_LONG transferred;
310
+ unsigned long percent;
311
+ } shoes_http_klass;
312
+
313
+ #define CANVAS_NADA 0
314
+ #define CANVAS_STARTED 1
315
+ #define CANVAS_PAINT 2
316
+ #define CANVAS_EMPTY 3
317
+ #define CANVAS_REMOVED 4
318
+
319
+ //
320
+ // temporary canvas (used internally for painting)
321
+ //
322
+ typedef struct {
323
+ VALUE parent;
324
+ VALUE attr;
325
+ shoes_place place;
326
+ cairo_t *cr, *shape;
327
+ shoes_transform *st, **sts;
328
+ int stl, stt;
329
+ VALUE contents;
330
+ unsigned char stage;
331
+ long insertion;
332
+ int cx, cy; // cursor x and y (stored in absolute coords)
333
+ int endx, endy; // jump points if the cursor spills over
334
+ int topy, fully; // since we often stack vertically
335
+ int width, height; // the full height and width used by this box
336
+ char hover;
337
+ struct _shoes_app *app;
338
+ SHOES_SLOT_OS *slot;
339
+ SHOES_GROUP_OS group;
340
+ } shoes_canvas;
341
+
342
+ void shoes_control_hide_ref(SHOES_CONTROL_REF);
343
+ void shoes_control_show_ref(SHOES_CONTROL_REF);
344
+
345
+ VALUE shoes_app_main(int, VALUE *, VALUE);
346
+ VALUE shoes_app_window(int, VALUE *, VALUE, VALUE);
347
+ VALUE shoes_app_contents(VALUE);
348
+ VALUE shoes_app_get_width(VALUE);
349
+ VALUE shoes_app_get_height(VALUE);
350
+
351
+ VALUE shoes_basic_remove(VALUE);
352
+
353
+ shoes_transform *shoes_transform_new(shoes_transform *);
354
+ shoes_transform *shoes_transform_touch(shoes_transform *);
355
+ shoes_transform *shoes_transform_detach(shoes_transform *);
356
+ void shoes_transform_release(shoes_transform *);
357
+
358
+ VALUE shoes_canvas_info (VALUE, VALUE);
359
+ VALUE shoes_canvas_debug(VALUE, VALUE);
360
+ VALUE shoes_canvas_warn (VALUE, VALUE);
361
+ VALUE shoes_canvas_error(VALUE, VALUE);
362
+ void shoes_info (const char *fmt, ...);
363
+ void shoes_debug(const char *fmt, ...);
364
+ void shoes_warn (const char *fmt, ...);
365
+ void shoes_error(const char *fmt, ...);
366
+
367
+ void shoes_canvas_mark(shoes_canvas *);
368
+ VALUE shoes_canvas_alloc(VALUE);
369
+ VALUE shoes_canvas_new(VALUE, struct _shoes_app *);
370
+ void shoes_canvas_clear(VALUE);
371
+ shoes_canvas *shoes_canvas_init(VALUE, SHOES_SLOT_OS *, VALUE, int, int);
372
+ void shoes_slot_scroll_to(shoes_canvas *, int, int);
373
+ void shoes_canvas_paint(VALUE);
374
+ void shoes_apply_transformation(cairo_t *, shoes_transform *, shoes_place *, unsigned char);
375
+ void shoes_undo_transformation(cairo_t *, shoes_transform *, shoes_place *, unsigned char);
376
+ void shoes_canvas_shape_do(shoes_canvas *, double, double, double, double, unsigned char);
377
+ VALUE shoes_canvas_style(int, VALUE *, VALUE);
378
+ VALUE shoes_canvas_owner(VALUE);
379
+ VALUE shoes_canvas_close(VALUE);
380
+ VALUE shoes_canvas_get_top(VALUE);
381
+ VALUE shoes_canvas_get_left(VALUE);
382
+ VALUE shoes_canvas_get_width(VALUE);
383
+ VALUE shoes_canvas_get_height(VALUE);
384
+ VALUE shoes_canvas_get_scroll_height(VALUE);
385
+ VALUE shoes_canvas_get_scroll_max(VALUE);
386
+ VALUE shoes_canvas_get_scroll_top(VALUE);
387
+ VALUE shoes_canvas_set_scroll_top(VALUE, VALUE);
388
+ VALUE shoes_canvas_get_gutter_width(VALUE);
389
+ VALUE shoes_canvas_displace(VALUE, VALUE, VALUE);
390
+ VALUE shoes_canvas_move(VALUE, VALUE, VALUE);
391
+ VALUE shoes_canvas_nostroke(VALUE);
392
+ VALUE shoes_canvas_stroke(int, VALUE *, VALUE);
393
+ VALUE shoes_canvas_strokewidth(VALUE, VALUE);
394
+ VALUE shoes_canvas_dash(VALUE, VALUE);
395
+ VALUE shoes_canvas_cap(VALUE, VALUE);
396
+ VALUE shoes_canvas_nofill(VALUE);
397
+ VALUE shoes_canvas_fill(int, VALUE *, VALUE);
398
+ VALUE shoes_canvas_rgb(int, VALUE *, VALUE);
399
+ VALUE shoes_canvas_gray(int, VALUE *, VALUE);
400
+ VALUE shoes_canvas_rect(int, VALUE *, VALUE);
401
+ VALUE shoes_canvas_arc(int, VALUE *, VALUE);
402
+ VALUE shoes_canvas_oval(int, VALUE *, VALUE);
403
+ VALUE shoes_canvas_line(int, VALUE *, VALUE);
404
+ VALUE shoes_canvas_arrow(int, VALUE *, VALUE);
405
+ VALUE shoes_canvas_star(int, VALUE *, VALUE);
406
+ VALUE shoes_canvas_para(int argc, VALUE *argv, VALUE self);
407
+ VALUE shoes_canvas_banner(int argc, VALUE *argv, VALUE self);
408
+ VALUE shoes_canvas_title(int argc, VALUE *argv, VALUE self);
409
+ VALUE shoes_canvas_subtitle(int argc, VALUE *argv, VALUE self);
410
+ VALUE shoes_canvas_tagline(int argc, VALUE *argv, VALUE self);
411
+ VALUE shoes_canvas_caption(int argc, VALUE *argv, VALUE self);
412
+ VALUE shoes_canvas_inscription(int argc, VALUE *argv, VALUE self);
413
+ VALUE shoes_canvas_code(int argc, VALUE *argv, VALUE self);
414
+ VALUE shoes_canvas_del(int argc, VALUE *argv, VALUE self);
415
+ VALUE shoes_canvas_em(int argc, VALUE *argv, VALUE self);
416
+ VALUE shoes_canvas_ins(int argc, VALUE *argv, VALUE self);
417
+ VALUE shoes_canvas_link(int argc, VALUE *argv, VALUE self);
418
+ VALUE shoes_canvas_span(int argc, VALUE *argv, VALUE self);
419
+ VALUE shoes_canvas_strong(int argc, VALUE *argv, VALUE self);
420
+ VALUE shoes_canvas_sub(int argc, VALUE *argv, VALUE self);
421
+ VALUE shoes_canvas_sup(int argc, VALUE *argv, VALUE self);
422
+ VALUE shoes_canvas_background(int, VALUE *, VALUE);
423
+ VALUE shoes_canvas_border(int, VALUE *, VALUE);
424
+ VALUE shoes_canvas_video(int, VALUE *, VALUE);
425
+ VALUE shoes_canvas_blur(int, VALUE *, VALUE);
426
+ VALUE shoes_canvas_glow(int, VALUE *, VALUE);
427
+ VALUE shoes_canvas_shadow(int, VALUE *, VALUE);
428
+ VALUE shoes_canvas_image(int, VALUE *, VALUE);
429
+ VALUE shoes_canvas_animate(int, VALUE *, VALUE);
430
+ VALUE shoes_canvas_every(int, VALUE *, VALUE);
431
+ VALUE shoes_canvas_timer(int, VALUE *, VALUE);
432
+ VALUE shoes_canvas_imagesize(VALUE, VALUE);
433
+ VALUE shoes_canvas_shape(int, VALUE *, VALUE);
434
+ void shoes_canvas_remove_item(VALUE, VALUE, char, char);
435
+ VALUE shoes_canvas_move_to(VALUE, VALUE, VALUE);
436
+ VALUE shoes_canvas_line_to(VALUE, VALUE, VALUE);
437
+ VALUE shoes_canvas_curve_to(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
438
+ VALUE shoes_canvas_arc_to(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
439
+ VALUE shoes_canvas_transform(VALUE, VALUE);
440
+ VALUE shoes_canvas_translate(VALUE, VALUE, VALUE);
441
+ VALUE shoes_canvas_rotate(VALUE, VALUE);
442
+ VALUE shoes_canvas_scale(int, VALUE *, VALUE);
443
+ VALUE shoes_canvas_skew(int, VALUE *, VALUE);
444
+ VALUE shoes_canvas_push(VALUE);
445
+ VALUE shoes_canvas_pop(VALUE);
446
+ VALUE shoes_canvas_reset(VALUE);
447
+ VALUE shoes_canvas_button(int, VALUE *, VALUE);
448
+ VALUE shoes_canvas_list_box(int, VALUE *, VALUE);
449
+ VALUE shoes_canvas_edit_line(int, VALUE *, VALUE);
450
+ VALUE shoes_canvas_edit_box(int, VALUE *, VALUE);
451
+ VALUE shoes_canvas_progress(int, VALUE *, VALUE);
452
+ VALUE shoes_canvas_slider(int, VALUE *, VALUE);
453
+ VALUE shoes_canvas_check(int, VALUE *, VALUE);
454
+ VALUE shoes_canvas_radio(int, VALUE *, VALUE);
455
+ VALUE shoes_canvas_contents(VALUE);
456
+ VALUE shoes_canvas_children(VALUE);
457
+ void shoes_canvas_size(VALUE, int, int);
458
+ VALUE shoes_canvas_clear_contents(int, VALUE *, VALUE);
459
+ VALUE shoes_canvas_remove(VALUE);
460
+ VALUE shoes_canvas_draw(VALUE, VALUE, VALUE);
461
+ VALUE shoes_canvas_after(int, VALUE *, VALUE);
462
+ VALUE shoes_canvas_before(int, VALUE *, VALUE);
463
+ VALUE shoes_canvas_append(int, VALUE *, VALUE);
464
+ VALUE shoes_canvas_prepend(int, VALUE *, VALUE);
465
+ VALUE shoes_canvas_flow(int, VALUE *, VALUE);
466
+ VALUE shoes_canvas_stack(int, VALUE *, VALUE);
467
+ VALUE shoes_canvas_mask(int, VALUE *, VALUE);
468
+ VALUE shoes_canvas_widget(int, VALUE *, VALUE);
469
+ VALUE shoes_canvas_hide(VALUE);
470
+ VALUE shoes_canvas_show(VALUE);
471
+ VALUE shoes_canvas_toggle(VALUE);
472
+ VALUE shoes_canvas_mouse(VALUE);
473
+ VALUE shoes_canvas_start(int, VALUE *, VALUE);
474
+ VALUE shoes_canvas_finish(int, VALUE *, VALUE);
475
+ VALUE shoes_canvas_hover(int, VALUE *, VALUE);
476
+ VALUE shoes_canvas_leave(int, VALUE *, VALUE);
477
+ VALUE shoes_canvas_click(int, VALUE *, VALUE);
478
+ VALUE shoes_canvas_release(int, VALUE *, VALUE);
479
+ VALUE shoes_canvas_motion(int, VALUE *, VALUE);
480
+ VALUE shoes_canvas_keydown(int, VALUE *, VALUE);
481
+ VALUE shoes_canvas_keypress(int, VALUE *, VALUE);
482
+ VALUE shoes_canvas_keyup(int, VALUE *, VALUE);
483
+ int shoes_canvas_independent(shoes_canvas *);
484
+ VALUE shoes_find_canvas(VALUE);
485
+ VALUE shoes_canvas_get_app(VALUE);
486
+ void shoes_canvas_repaint_all(VALUE);
487
+ void shoes_canvas_compute(VALUE);
488
+ VALUE shoes_canvas_goto(VALUE, VALUE);
489
+ VALUE shoes_canvas_send_click(VALUE, int, int, int);
490
+ void shoes_canvas_send_release(VALUE, int, int, int);
491
+ VALUE shoes_canvas_send_motion(VALUE, int, int, VALUE);
492
+ void shoes_canvas_send_wheel(VALUE, ID, int, int);
493
+ void shoes_canvas_send_keydown(VALUE, VALUE);
494
+ void shoes_canvas_send_keypress(VALUE, VALUE);
495
+ void shoes_canvas_send_keyup(VALUE, VALUE);
496
+ VALUE shoes_canvas_get_cursor(VALUE);
497
+ VALUE shoes_canvas_set_cursor(VALUE, VALUE);
498
+ VALUE shoes_canvas_get_clipboard(VALUE);
499
+ VALUE shoes_canvas_set_clipboard(VALUE, VALUE);
500
+ VALUE shoes_canvas_window(int, VALUE *, VALUE);
501
+ VALUE shoes_canvas_dialog(int, VALUE *, VALUE);
502
+ VALUE shoes_canvas_window_plain(VALUE);
503
+ VALUE shoes_canvas_dialog_plain(VALUE);
504
+ VALUE shoes_canvas_snapshot(int, VALUE *, VALUE);
505
+ VALUE shoes_canvas_download(int, VALUE *, VALUE);
506
+
507
+ SHOES_SLOT_OS *shoes_slot_alloc(shoes_canvas *, SHOES_SLOT_OS *, int);
508
+ VALUE shoes_slot_new(VALUE, VALUE, VALUE);
509
+ VALUE shoes_flow_new(VALUE, VALUE);
510
+ VALUE shoes_stack_new(VALUE, VALUE);
511
+ VALUE shoes_mask_new(VALUE, VALUE);
512
+ VALUE shoes_widget_new(VALUE, VALUE, VALUE);
513
+
514
+ void shoes_control_mark(shoes_control *);
515
+ VALUE shoes_control_new(VALUE, VALUE, VALUE);
516
+ VALUE shoes_control_alloc(VALUE);
517
+ void shoes_control_send(VALUE, ID);
518
+ VALUE shoes_control_get_top(VALUE);
519
+ VALUE shoes_control_get_left(VALUE);
520
+ VALUE shoes_control_get_width(VALUE);
521
+ VALUE shoes_control_get_height(VALUE);
522
+ VALUE shoes_control_remove(VALUE);
523
+ VALUE shoes_control_show(VALUE);
524
+ VALUE shoes_control_temporary_show(VALUE);
525
+ VALUE shoes_control_hide(VALUE);
526
+ VALUE shoes_control_temporary_hide(VALUE);
527
+ VALUE shoes_control_focus(VALUE);
528
+ VALUE shoes_control_get_state(VALUE);
529
+ VALUE shoes_control_set_state(VALUE, VALUE);
530
+
531
+ VALUE shoes_button_draw(VALUE, VALUE, VALUE);
532
+ void shoes_button_send_click(VALUE);
533
+ VALUE shoes_edit_line_draw(VALUE, VALUE, VALUE);
534
+ VALUE shoes_edit_line_get_text(VALUE);
535
+ VALUE shoes_edit_line_set_text(VALUE, VALUE);
536
+ VALUE shoes_edit_box_draw(VALUE, VALUE, VALUE);
537
+ VALUE shoes_edit_box_get_text(VALUE);
538
+ VALUE shoes_edit_box_set_text(VALUE, VALUE);
539
+ VALUE shoes_list_box_text(VALUE);
540
+ VALUE shoes_list_box_draw(VALUE, VALUE, VALUE);
541
+ VALUE shoes_progress_draw(VALUE, VALUE, VALUE);
542
+
543
+ void shoes_shape_mark(shoes_shape *);
544
+ VALUE shoes_shape_attr(int, VALUE *, int, ...);
545
+ void shoes_shape_sketch(cairo_t *, ID, shoes_place *, shoes_transform *, VALUE, cairo_path_t *, unsigned char);
546
+ VALUE shoes_shape_new(VALUE, ID, VALUE, shoes_transform *, cairo_path_t *);
547
+ VALUE shoes_shape_alloc(VALUE);
548
+ VALUE shoes_shape_draw(VALUE, VALUE, VALUE);
549
+ VALUE shoes_shape_move(VALUE, VALUE, VALUE);
550
+ VALUE shoes_shape_get_top(VALUE);
551
+ VALUE shoes_shape_get_left(VALUE);
552
+ VALUE shoes_shape_get_width(VALUE);
553
+ VALUE shoes_shape_get_height(VALUE);
554
+ VALUE shoes_shape_motion(VALUE, int, int, char *);
555
+ VALUE shoes_shape_send_click(VALUE, int, int, int);
556
+ void shoes_shape_send_release(VALUE, int, int, int);
557
+
558
+ void shoes_image_ensure_dup(shoes_image *);
559
+ void shoes_image_mark(shoes_image *);
560
+ VALUE shoes_image_new(VALUE, VALUE, VALUE, VALUE, shoes_transform *);
561
+ VALUE shoes_image_alloc(VALUE);
562
+ void shoes_image_image(VALUE, VALUE, VALUE);
563
+ VALUE shoes_image_draw(VALUE, VALUE, VALUE);
564
+ VALUE shoes_image_get_top(VALUE);
565
+ VALUE shoes_image_get_left(VALUE);
566
+ VALUE shoes_image_get_width(VALUE);
567
+ VALUE shoes_image_get_height(VALUE);
568
+ VALUE shoes_image_motion(VALUE, int, int, char *);
569
+ VALUE shoes_image_send_click(VALUE, int, int, int);
570
+ void shoes_image_send_release(VALUE, int, int, int);
571
+
572
+ shoes_effect_filter shoes_effect_for_type(ID);
573
+ void shoes_effect_mark(shoes_effect *);
574
+ VALUE shoes_effect_new(ID, VALUE, VALUE);
575
+ VALUE shoes_effect_alloc(VALUE);
576
+ VALUE shoes_effect_draw(VALUE, VALUE, VALUE);
577
+
578
+ #ifdef VIDEO
579
+ void shoes_video_mark(shoes_video *);
580
+ VALUE shoes_video_new(VALUE, VALUE, VALUE, VALUE);
581
+ VALUE shoes_video_alloc(VALUE);
582
+ VALUE shoes_video_draw(VALUE, VALUE, VALUE);
583
+ VALUE shoes_video_show(VALUE);
584
+ VALUE shoes_video_hide(VALUE);
585
+ VALUE shoes_video_get_top(VALUE);
586
+ VALUE shoes_video_get_left(VALUE);
587
+ VALUE shoes_video_get_width(VALUE);
588
+ VALUE shoes_video_get_height(VALUE);
589
+ VALUE shoes_video_remove(VALUE);
590
+ #endif
591
+
592
+ VALUE shoes_pattern_self(VALUE);
593
+ VALUE shoes_pattern_method(VALUE, VALUE);
594
+ VALUE shoes_pattern_args(int, VALUE *, VALUE);
595
+ void shoes_pattern_mark(shoes_pattern *);
596
+ VALUE shoes_pattern_new(VALUE, VALUE, VALUE, VALUE);
597
+ VALUE shoes_pattern_alloc(VALUE);
598
+ VALUE shoes_pattern_motion(VALUE, int, int, char *);
599
+ VALUE shoes_background_draw(VALUE, VALUE, VALUE);
600
+ VALUE shoes_border_draw(VALUE, VALUE, VALUE);
601
+ VALUE shoes_subpattern_new(VALUE, VALUE, VALUE);
602
+
603
+ void shoes_timer_mark(shoes_timer *);
604
+ VALUE shoes_timer_new(VALUE, VALUE, VALUE, VALUE);
605
+ VALUE shoes_timer_alloc(VALUE);
606
+ VALUE shoes_timer_init(VALUE, VALUE);
607
+ VALUE shoes_timer_remove(VALUE);
608
+ VALUE shoes_timer_start(VALUE);
609
+ VALUE shoes_timer_stop(VALUE);
610
+ void shoes_timer_call(VALUE);
611
+
612
+ void shoes_color_mark(shoes_color *);
613
+ VALUE shoes_color_new(int, int, int, int);
614
+ VALUE shoes_color_alloc(VALUE);
615
+ VALUE shoes_color_rgb(int, VALUE *, VALUE);
616
+ VALUE shoes_color_gray(int, VALUE *, VALUE);
617
+ cairo_pattern_t *shoes_color_pattern(VALUE);
618
+ void shoes_color_grad_stop(cairo_pattern_t *, double, VALUE);
619
+ VALUE shoes_color_args(int, VALUE *, VALUE);
620
+ VALUE shoes_color_parse(VALUE, VALUE);
621
+ VALUE shoes_color_is_black(VALUE);
622
+ VALUE shoes_color_is_dark(VALUE);
623
+ VALUE shoes_color_is_light(VALUE);
624
+ VALUE shoes_color_is_white(VALUE);
625
+ VALUE shoes_color_invert(VALUE);
626
+ VALUE shoes_color_to_s(VALUE);
627
+ VALUE shoes_color_to_pattern(VALUE);
628
+ VALUE shoes_color_gradient(int, VALUE *, VALUE);
629
+
630
+ void shoes_link_mark(shoes_link *);
631
+ VALUE shoes_link_new(VALUE, int, int);
632
+ VALUE shoes_link_alloc(VALUE);
633
+ VALUE shoes_text_new(VALUE, VALUE, VALUE);
634
+ VALUE shoes_text_alloc(VALUE);
635
+
636
+ void shoes_text_mark(shoes_text *);
637
+ void shoes_textblock_mark(shoes_textblock *);
638
+ VALUE shoes_textblock_new(VALUE, VALUE, VALUE, VALUE, shoes_transform *);
639
+ VALUE shoes_textblock_alloc(VALUE);
640
+ VALUE shoes_textblock_get_top(VALUE);
641
+ VALUE shoes_textblock_get_left(VALUE);
642
+ VALUE shoes_textblock_get_width(VALUE);
643
+ VALUE shoes_textblock_get_height(VALUE);
644
+ VALUE shoes_textblock_set_cursor(VALUE, VALUE);
645
+ VALUE shoes_textblock_get_cursor(VALUE);
646
+ VALUE shoes_textblock_draw(VALUE, VALUE, VALUE);
647
+ VALUE shoes_textblock_motion(VALUE, int, int, char *);
648
+ VALUE shoes_textblock_send_click(VALUE, int, int, int, VALUE *);
649
+ void shoes_textblock_send_release(VALUE, int, int, int);
650
+
651
+ void shoes_http_mark(shoes_http_klass *);
652
+ VALUE shoes_http_new(VALUE, VALUE, VALUE);
653
+ VALUE shoes_http_alloc(VALUE);
654
+ VALUE shoes_http_threaded(VALUE, VALUE, VALUE);
655
+ int shoes_message_download(VALUE, void *);
656
+ int shoes_catch_message(unsigned int name, VALUE obj, void *data);
657
+
658
+ VALUE shoes_response_new(VALUE, int);
659
+ VALUE shoes_response_body(VALUE);
660
+ VALUE shoes_response_headers(VALUE);
661
+ VALUE shoes_response_status(VALUE);
662
+
663
+ VALUE shoes_p(VALUE, VALUE);
664
+
665
+ extern const double SHOES_PIM2, SHOES_PI, SHOES_RAD2PI, SHOES_HALFPI;
666
+
667
+ //
668
+ // shoes/image.c
669
+ //
670
+ typedef struct {
671
+ unsigned long status;
672
+ char *cachepath, *filepath, *uripath, *etag;
673
+ char hexdigest[42];
674
+ VALUE slot;
675
+ } shoes_image_download_event;
676
+
677
+ shoes_code shoes_load_imagesize(VALUE, int *, int *);
678
+ shoes_cached_image *shoes_cached_image_new(int, int, cairo_surface_t *);
679
+ shoes_cached_image *shoes_load_image(VALUE, VALUE);
680
+ unsigned char shoes_image_downloaded(shoes_image_download_event *);
681
+
682
+ #endif