wrb 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (271) hide show
  1. checksums.yaml +7 -0
  2. data/README +28 -0
  3. data/Rakefile +66 -0
  4. data/bin/wrb +41 -0
  5. data/bin/wrb.bat +6 -0
  6. data/ext/rwin/aatree.c +192 -0
  7. data/ext/rwin/aatree.h +55 -0
  8. data/ext/rwin/extconf.rb +47 -0
  9. data/ext/rwin/rw_api.c +2058 -0
  10. data/ext/rwin/rw_devices.c +215 -0
  11. data/ext/rwin/rw_gdiplus.h +278 -0
  12. data/ext/rwin/rw_graphics.c +1583 -0
  13. data/ext/rwin/rw_resources.c +1988 -0
  14. data/ext/rwin/rw_ubfuncs.c +281 -0
  15. data/ext/rwin/rw_windows.c +1936 -0
  16. data/ext/rwin/rwin.c +451 -0
  17. data/ext/rwin/rwin.h +442 -0
  18. data/lib/rwin.rb +820 -0
  19. data/lib/wrb.rb +20 -0
  20. data/lib/wrb/applications/frmdesigner/angle.cur +0 -0
  21. data/lib/wrb/applications/frmdesigner/angle2.cur +0 -0
  22. data/lib/wrb/applications/frmdesigner/controls/Button.bmp +0 -0
  23. data/lib/wrb/applications/frmdesigner/controls/Button.rb +34 -0
  24. data/lib/wrb/applications/frmdesigner/controls/Checkbox.bmp +0 -0
  25. data/lib/wrb/applications/frmdesigner/controls/Checkbox.rb +10 -0
  26. data/lib/wrb/applications/frmdesigner/controls/Combobox.bmp +0 -0
  27. data/lib/wrb/applications/frmdesigner/controls/Combobox.rb +88 -0
  28. data/lib/wrb/applications/frmdesigner/controls/ComboboxEx.rb +97 -0
  29. data/lib/wrb/applications/frmdesigner/controls/Comboboxex.bmp +0 -0
  30. data/lib/wrb/applications/frmdesigner/controls/DateTimePicker.bmp +0 -0
  31. data/lib/wrb/applications/frmdesigner/controls/DateTimePicker.rb +11 -0
  32. data/lib/wrb/applications/frmdesigner/controls/Edit.bmp +0 -0
  33. data/lib/wrb/applications/frmdesigner/controls/Edit.rb +8 -0
  34. data/lib/wrb/applications/frmdesigner/controls/Groupbox.bmp +0 -0
  35. data/lib/wrb/applications/frmdesigner/controls/Groupbox.rb +9 -0
  36. data/lib/wrb/applications/frmdesigner/controls/Hotkeyctrl.bmp +0 -0
  37. data/lib/wrb/applications/frmdesigner/controls/Hotkeyctrl.rb +9 -0
  38. data/lib/wrb/applications/frmdesigner/controls/Imagelist.bmp +0 -0
  39. data/lib/wrb/applications/frmdesigner/controls/Imagelist.rb +115 -0
  40. data/lib/wrb/applications/frmdesigner/controls/Listbox.bmp +0 -0
  41. data/lib/wrb/applications/frmdesigner/controls/Listbox.rb +77 -0
  42. data/lib/wrb/applications/frmdesigner/controls/Listview.bmp +0 -0
  43. data/lib/wrb/applications/frmdesigner/controls/Listview.rb +157 -0
  44. data/lib/wrb/applications/frmdesigner/controls/Menu.bmp +0 -0
  45. data/lib/wrb/applications/frmdesigner/controls/Menu.rb +198 -0
  46. data/lib/wrb/applications/frmdesigner/controls/Menubar.bmp +0 -0
  47. data/lib/wrb/applications/frmdesigner/controls/Menubar.rb +9 -0
  48. data/lib/wrb/applications/frmdesigner/controls/MonthCalender.bmp +0 -0
  49. data/lib/wrb/applications/frmdesigner/controls/Monthcalender.rb +9 -0
  50. data/lib/wrb/applications/frmdesigner/controls/Panel.bmp +0 -0
  51. data/lib/wrb/applications/frmdesigner/controls/Panel.rb +30 -0
  52. data/lib/wrb/applications/frmdesigner/controls/Progressbar.rb +10 -0
  53. data/lib/wrb/applications/frmdesigner/controls/Radiobutton.bmp +0 -0
  54. data/lib/wrb/applications/frmdesigner/controls/Radiobutton.rb +13 -0
  55. data/lib/wrb/applications/frmdesigner/controls/Rebar.bmp +0 -0
  56. data/lib/wrb/applications/frmdesigner/controls/Rebar.rb +162 -0
  57. data/lib/wrb/applications/frmdesigner/controls/Splitter.bmp +0 -0
  58. data/lib/wrb/applications/frmdesigner/controls/Splitter.rb +66 -0
  59. data/lib/wrb/applications/frmdesigner/controls/Static.bmp +0 -0
  60. data/lib/wrb/applications/frmdesigner/controls/Static.rb +9 -0
  61. data/lib/wrb/applications/frmdesigner/controls/Statusbar.bmp +0 -0
  62. data/lib/wrb/applications/frmdesigner/controls/Statusbar.rb +103 -0
  63. data/lib/wrb/applications/frmdesigner/controls/Tabctrl.bmp +0 -0
  64. data/lib/wrb/applications/frmdesigner/controls/Tabctrl.rb +136 -0
  65. data/lib/wrb/applications/frmdesigner/controls/Timer.bmp +0 -0
  66. data/lib/wrb/applications/frmdesigner/controls/Timer.rb +36 -0
  67. data/lib/wrb/applications/frmdesigner/controls/Toolbar.bmp +0 -0
  68. data/lib/wrb/applications/frmdesigner/controls/Toolbar.rb +165 -0
  69. data/lib/wrb/applications/frmdesigner/controls/Trackbar.bmp +0 -0
  70. data/lib/wrb/applications/frmdesigner/controls/Trackbar.rb +34 -0
  71. data/lib/wrb/applications/frmdesigner/controls/Treeview.bmp +0 -0
  72. data/lib/wrb/applications/frmdesigner/controls/Treeview.rb +107 -0
  73. data/lib/wrb/applications/frmdesigner/controls/Updown.bmp +0 -0
  74. data/lib/wrb/applications/frmdesigner/controls/Updown.rb +31 -0
  75. data/lib/wrb/applications/frmdesigner/controls/default.bmp +0 -0
  76. data/lib/wrb/applications/frmdesigner/controls/progressbar.bmp +0 -0
  77. data/lib/wrb/applications/frmdesigner/controls/unselect.bmp +0 -0
  78. data/lib/wrb/applications/frmdesigner/fddialogs.rb +87 -0
  79. data/lib/wrb/applications/frmdesigner/fdesign.rb +1315 -0
  80. data/lib/wrb/applications/frmdesigner/fdmodules.rb +1394 -0
  81. data/lib/wrb/applications/frmdesigner/fdparseform.rb +197 -0
  82. data/lib/wrb/applications/frmdesigner/img13.bmp +0 -0
  83. data/lib/wrb/base.rb +1294 -0
  84. data/lib/wrb/combocommon.rb +77 -0
  85. data/lib/wrb/commctrlconst.rb +139 -0
  86. data/lib/wrb/commdlg.rb +77 -0
  87. data/lib/wrb/components/animate.rb +114 -0
  88. data/lib/wrb/components/bitmap.rb +116 -0
  89. data/lib/wrb/components/button.rb +134 -0
  90. data/lib/wrb/components/canvas.rb +266 -0
  91. data/lib/wrb/components/checkbox.rb +118 -0
  92. data/lib/wrb/components/choosecolordlg.rb +87 -0
  93. data/lib/wrb/components/choosefontdlg.rb +142 -0
  94. data/lib/wrb/components/clipboard.rb +174 -0
  95. data/lib/wrb/components/combobox.rb +282 -0
  96. data/lib/wrb/components/comboboxex.rb +574 -0
  97. data/lib/wrb/components/cursor.rb +91 -0
  98. data/lib/wrb/components/datetimepicker.rb +197 -0
  99. data/lib/wrb/components/ddeclient.rb +180 -0
  100. data/lib/wrb/components/ddeserver.rb +131 -0
  101. data/lib/wrb/components/dialog.rb +228 -0
  102. data/lib/wrb/components/edit.rb +412 -0
  103. data/lib/wrb/components/font.rb +35 -0
  104. data/lib/wrb/components/form.rb +65 -0
  105. data/lib/wrb/components/groupbox.rb +122 -0
  106. data/lib/wrb/components/header.rb +479 -0
  107. data/lib/wrb/components/hotkeyctrl.rb +72 -0
  108. data/lib/wrb/components/icon.rb +109 -0
  109. data/lib/wrb/components/imagelist.rb +396 -0
  110. data/lib/wrb/components/inifile.rb +97 -0
  111. data/lib/wrb/components/listbox.rb +149 -0
  112. data/lib/wrb/components/listview.rb +1467 -0
  113. data/lib/wrb/components/menu.rb +592 -0
  114. data/lib/wrb/components/menubar.rb +84 -0
  115. data/lib/wrb/components/monthcalender.rb +164 -0
  116. data/lib/wrb/components/openfilenamedlg.rb +147 -0
  117. data/lib/wrb/components/pager.rb +199 -0
  118. data/lib/wrb/components/panel.rb +103 -0
  119. data/lib/wrb/components/picture.rb +55 -0
  120. data/lib/wrb/components/printdlg.rb +148 -0
  121. data/lib/wrb/components/printdlgex.rb +117 -0
  122. data/lib/wrb/components/printer.rb +97 -0
  123. data/lib/wrb/components/progressbar.rb +140 -0
  124. data/lib/wrb/components/radiobutton.rb +49 -0
  125. data/lib/wrb/components/rebar.rb +830 -0
  126. data/lib/wrb/components/registry.rb +408 -0
  127. data/lib/wrb/components/richedit.rb +1181 -0
  128. data/lib/wrb/components/savefilenamedlg.rb +27 -0
  129. data/lib/wrb/components/scintilla.rb +1298 -0
  130. data/lib/wrb/components/scrollbar.rb +239 -0
  131. data/lib/wrb/components/splitter.rb +494 -0
  132. data/lib/wrb/components/static.rb +198 -0
  133. data/lib/wrb/components/statusbar.rb +490 -0
  134. data/lib/wrb/components/tabctrl.rb +686 -0
  135. data/lib/wrb/components/timer.rb +117 -0
  136. data/lib/wrb/components/toolbar.rb +1107 -0
  137. data/lib/wrb/components/tooltip.rb +651 -0
  138. data/lib/wrb/components/trackbar.rb +298 -0
  139. data/lib/wrb/components/treeview.rb +845 -0
  140. data/lib/wrb/components/updown.rb +198 -0
  141. data/lib/wrb/ddeml.rb +241 -0
  142. data/lib/wrb/documents/animate.html +46 -0
  143. data/lib/wrb/documents/bitmap.html +69 -0
  144. data/lib/wrb/documents/button.html +78 -0
  145. data/lib/wrb/documents/canvas.html +137 -0
  146. data/lib/wrb/documents/checkbox.html +77 -0
  147. data/lib/wrb/documents/choosecolordlg.html +29 -0
  148. data/lib/wrb/documents/choosefontdlg.html +31 -0
  149. data/lib/wrb/documents/clipboard.html +31 -0
  150. data/lib/wrb/documents/combobox.html +117 -0
  151. data/lib/wrb/documents/comboboxex.html +139 -0
  152. data/lib/wrb/documents/control.html +53 -0
  153. data/lib/wrb/documents/cursor.html +45 -0
  154. data/lib/wrb/documents/datetimepicker.html +70 -0
  155. data/lib/wrb/documents/ddeclient.html +33 -0
  156. data/lib/wrb/documents/ddeserver.html +26 -0
  157. data/lib/wrb/documents/dialog.html +78 -0
  158. data/lib/wrb/documents/edit.html +169 -0
  159. data/lib/wrb/documents/empty.html +11 -0
  160. data/lib/wrb/documents/favicon.png +0 -0
  161. data/lib/wrb/documents/font.html +38 -0
  162. data/lib/wrb/documents/form.html +63 -0
  163. data/lib/wrb/documents/groupbox.html +57 -0
  164. data/lib/wrb/documents/header.html +85 -0
  165. data/lib/wrb/documents/hotkeyctrl.html +42 -0
  166. data/lib/wrb/documents/icon.html +45 -0
  167. data/lib/wrb/documents/imagelist.html +101 -0
  168. data/lib/wrb/documents/images/button.png +0 -0
  169. data/lib/wrb/documents/images/checkbox.png +0 -0
  170. data/lib/wrb/documents/images/combobox.png +0 -0
  171. data/lib/wrb/documents/images/comboboxex.png +0 -0
  172. data/lib/wrb/documents/images/datetimepicker.png +0 -0
  173. data/lib/wrb/documents/images/edit.png +0 -0
  174. data/lib/wrb/documents/images/groupbox.png +0 -0
  175. data/lib/wrb/documents/images/hotkeyctrl.png +0 -0
  176. data/lib/wrb/documents/images/listbox.png +0 -0
  177. data/lib/wrb/documents/images/listview.png +0 -0
  178. data/lib/wrb/documents/images/menu.png +0 -0
  179. data/lib/wrb/documents/images/menubar.png +0 -0
  180. data/lib/wrb/documents/images/monthcalender.png +0 -0
  181. data/lib/wrb/documents/images/progressbar.png +0 -0
  182. data/lib/wrb/documents/images/radiobutton.png +0 -0
  183. data/lib/wrb/documents/images/rebar.png +0 -0
  184. data/lib/wrb/documents/images/richedit.png +0 -0
  185. data/lib/wrb/documents/images/splitter.png +0 -0
  186. data/lib/wrb/documents/images/static.png +0 -0
  187. data/lib/wrb/documents/images/statusbar.png +0 -0
  188. data/lib/wrb/documents/images/tabctrl.png +0 -0
  189. data/lib/wrb/documents/images/toolbar.png +0 -0
  190. data/lib/wrb/documents/images/tooltip.png +0 -0
  191. data/lib/wrb/documents/images/trackbar.png +0 -0
  192. data/lib/wrb/documents/images/treeview.png +0 -0
  193. data/lib/wrb/documents/images/updown.png +0 -0
  194. data/lib/wrb/documents/index.html +155 -0
  195. data/lib/wrb/documents/inifile.html +36 -0
  196. data/lib/wrb/documents/license.txt +22 -0
  197. data/lib/wrb/documents/listbox.html +96 -0
  198. data/lib/wrb/documents/listview.html +277 -0
  199. data/lib/wrb/documents/make_doc.rb +596 -0
  200. data/lib/wrb/documents/menu.html +144 -0
  201. data/lib/wrb/documents/menubar.html +54 -0
  202. data/lib/wrb/documents/monthcalender.html +48 -0
  203. data/lib/wrb/documents/openfilenamedlg.html +36 -0
  204. data/lib/wrb/documents/pager.html +63 -0
  205. data/lib/wrb/documents/panel.html +32 -0
  206. data/lib/wrb/documents/picture.html +48 -0
  207. data/lib/wrb/documents/printdlg.html +35 -0
  208. data/lib/wrb/documents/printdlgex.html +35 -0
  209. data/lib/wrb/documents/printer.html +40 -0
  210. data/lib/wrb/documents/progressbar.html +69 -0
  211. data/lib/wrb/documents/radiobutton.html +51 -0
  212. data/lib/wrb/documents/rebar.html +143 -0
  213. data/lib/wrb/documents/registry.html +36 -0
  214. data/lib/wrb/documents/richedit.html +232 -0
  215. data/lib/wrb/documents/samples/editimg.bmp +0 -0
  216. data/lib/wrb/documents/samples/editimg.iml +0 -0
  217. data/lib/wrb/documents/samples/fileimg.bmp +0 -0
  218. data/lib/wrb/documents/samples/fileimg.iml +0 -0
  219. data/lib/wrb/documents/samples/sample_button.rb +21 -0
  220. data/lib/wrb/documents/samples/sample_checkbox.rb +18 -0
  221. data/lib/wrb/documents/samples/sample_combobox.rb +18 -0
  222. data/lib/wrb/documents/samples/sample_comboboxex.rb +23 -0
  223. data/lib/wrb/documents/samples/sample_datetimepicker.rb +11 -0
  224. data/lib/wrb/documents/samples/sample_edit.rb +25 -0
  225. data/lib/wrb/documents/samples/sample_groupbox.rb +19 -0
  226. data/lib/wrb/documents/samples/sample_hotkeyctrl.rb +12 -0
  227. data/lib/wrb/documents/samples/sample_listbox.rb +12 -0
  228. data/lib/wrb/documents/samples/sample_listview.rb +32 -0
  229. data/lib/wrb/documents/samples/sample_menu.rb +21 -0
  230. data/lib/wrb/documents/samples/sample_menubar.rb +23 -0
  231. data/lib/wrb/documents/samples/sample_monthcalender.rb +11 -0
  232. data/lib/wrb/documents/samples/sample_progressbar.rb +14 -0
  233. data/lib/wrb/documents/samples/sample_radiobutton.rb +14 -0
  234. data/lib/wrb/documents/samples/sample_rebar.rb +25 -0
  235. data/lib/wrb/documents/samples/sample_richedit.rb +60 -0
  236. data/lib/wrb/documents/samples/sample_splitter.rb +33 -0
  237. data/lib/wrb/documents/samples/sample_static.rb +15 -0
  238. data/lib/wrb/documents/samples/sample_statusbar.rb +17 -0
  239. data/lib/wrb/documents/samples/sample_tabctrl.rb +19 -0
  240. data/lib/wrb/documents/samples/sample_toolbar.rb +29 -0
  241. data/lib/wrb/documents/samples/sample_tooltip.rb +50 -0
  242. data/lib/wrb/documents/samples/sample_trackbar.rb +30 -0
  243. data/lib/wrb/documents/samples/sample_treeview.rb +19 -0
  244. data/lib/wrb/documents/samples/sample_updown.rb +18 -0
  245. data/lib/wrb/documents/samples/sampleimg16.iml +0 -0
  246. data/lib/wrb/documents/samples/sampleimg32.iml +0 -0
  247. data/lib/wrb/documents/samples/samplemg16.png +0 -0
  248. data/lib/wrb/documents/samples/samplemg32.png +0 -0
  249. data/lib/wrb/documents/samples/wrb.ico +0 -0
  250. data/lib/wrb/documents/savefilenamedlg.html +19 -0
  251. data/lib/wrb/documents/scrollbar.html +60 -0
  252. data/lib/wrb/documents/splitter.html +96 -0
  253. data/lib/wrb/documents/static.html +84 -0
  254. data/lib/wrb/documents/statusbar.html +110 -0
  255. data/lib/wrb/documents/tabctrl.html +151 -0
  256. data/lib/wrb/documents/timer.html +43 -0
  257. data/lib/wrb/documents/toolbar.html +181 -0
  258. data/lib/wrb/documents/tooltip.html +131 -0
  259. data/lib/wrb/documents/trackbar.html +107 -0
  260. data/lib/wrb/documents/treeview.html +210 -0
  261. data/lib/wrb/documents/updown.html +85 -0
  262. data/lib/wrb/documents/wincontrol.html +258 -0
  263. data/lib/wrb/documents/window.html +499 -0
  264. data/lib/wrb/documents/wrb.css +228 -0
  265. data/lib/wrb/gmem.rb +26 -0
  266. data/lib/wrb/imecommon.rb +59 -0
  267. data/lib/wrb/listcommon.rb +185 -0
  268. data/lib/wrb/lzss.rb +126 -0
  269. data/lib/wrb/scrollinfo.rb +142 -0
  270. data/lib/wrb/toplevelcommon.rb +634 -0
  271. metadata +315 -0
@@ -0,0 +1,215 @@
1
+ /*
2
+ # Project WRB was forked from Project VisualuRuby(temp-name).
3
+ # Author of this project: BANJO Koyu <banjokoyu at gmail.com>
4
+ # The URL of this project: https://bitbucket.org/wrb/
5
+ #
6
+ # This is a ext-library part of WRB.
7
+ */
8
+
9
+ /* Printer etc... which has hdc */
10
+ #include "rwin.h"
11
+
12
+ typedef struct {
13
+ HDC hdc;
14
+ DEVMODE *devmode;
15
+ } RwPrinter;
16
+
17
+ VALUE cRwPrinter;
18
+
19
+ void
20
+ rwpriner_free(void* ptr){
21
+ if(ptr){
22
+ RwPrinter* rp = ptr;
23
+ if(rp->hdc)DeleteDC(rp->hdc);
24
+ if(rp->devmode) free(rp->devmode);
25
+ free(rp);
26
+ }
27
+ }
28
+
29
+ static size_t
30
+ rwprinter_memsize(const void *ptr){
31
+ return ptr ? sizeof(RwPrinter) : 0;
32
+ }
33
+
34
+ const rb_data_type_t
35
+ rwprinter_data_type = {
36
+ "Printer", {NULL, rwpriner_free, rwprinter_memsize}, NULL, NULL
37
+ };
38
+
39
+ #define RwPrinter_Data_Make_Struct(obj, sval) \
40
+ TypedData_Make_Struct(obj, RwPrinter, &rwprinter_data_type, sval)
41
+
42
+ #define RwPrinter_Data_Get_Struct(obj, sval) \
43
+ TypedData_Get_Struct(obj, RwPrinter, &rwprinter_data_type, sval)
44
+
45
+ static VALUE
46
+ alloc_rwpriner(VALUE klass){
47
+ RwPrinter *rp;
48
+ VALUE robj = RwPrinter_Data_Make_Struct(klass, rp);
49
+ rp->hdc = 0;
50
+ rp->devmode = NULL;
51
+ return robj;
52
+ }
53
+
54
+ static DEVMODE*
55
+ get_devmode_from_name(TCHAR *pname){
56
+ int neeeded_len;
57
+ HANDLE hprinter;
58
+ HGLOBAL hgmmem;
59
+ DEVMODE *pdevmode;
60
+ if(!OpenPrinter(pname, &hprinter, NULL)) rb_raise(rb_eRuntimeError, "could't open printer");
61
+ neeeded_len = DocumentProperties(NULL, hprinter, pname, NULL, NULL, 0);
62
+ hgmmem = GlobalAlloc(GHND, neeeded_len);
63
+ pdevmode = GlobalLock(hgmmem);
64
+ DocumentProperties(NULL, hprinter, pname, pdevmode, NULL, DM_OUT_BUFFER);
65
+ return pdevmode;
66
+ }
67
+
68
+ static VALUE
69
+ rwprinter_initialize(VALUE self, VALUE v_device){
70
+ HGLOBAL hdevmode;
71
+ DEVMODE *pdevmode;
72
+ RwPrinter *rp = DATA_PTR(self);
73
+ RW_CALLOC(rp->devmode, sizeof(DEVMODE));
74
+ switch(TYPE(v_device)){
75
+ case T_FIXNUM: case T_BIGNUM:
76
+ hdevmode = (HANDLE)NUM2HANDLE(v_device);
77
+ if(pdevmode = GlobalLock(hdevmode)){
78
+ memcpy(rp->devmode, pdevmode, sizeof(DEVMODE));
79
+ GlobalUnlock(hdevmode);
80
+ break;
81
+ } else {
82
+ rb_raise(rb_eArgError, "invalid handle (perhaps not of DEVMODE)");
83
+ }
84
+ case T_STRING:
85
+ if(pdevmode = get_devmode_from_name(rw_str2tchar(v_device))){
86
+ memcpy(rp->devmode, pdevmode, sizeof(DEVMODE));
87
+ break;
88
+ }
89
+ case T_DATA:
90
+ if(rb_typeddata_is_kind_of(v_device, &cstruct_data_type)){
91
+ CStructData *cs;
92
+ CStruct_Data_Get_Struct(v_device, cs);
93
+ if (cs->dtlen != sizeof(DEVMODE)){
94
+ rb_raise(rb_eArgError, "Size of DEVMODE different: ecpected %d, but got %d",
95
+ (int)sizeof(DEVMODE), (int)cs->dtlen);
96
+ }
97
+ memcpy(rp->devmode, cs->dtstr+cs->dtoffset, cs->dtlen);
98
+ break;
99
+ }
100
+ default:
101
+ rb_raise(rb_eArgError, "invalid device type:%s", RSTRING_PTR(rb_inspect(v_device)));
102
+ }
103
+ return self;
104
+ }
105
+
106
+ static VALUE
107
+ rwprinter_open(VALUE self){
108
+ RwPrinter *rp = DATA_PTR(self);
109
+ if(!rp->hdc){
110
+ rp->hdc = CreateDC(TEXT("WINSPOOL"), (TCHAR*)rp->devmode->dmDeviceName, NULL,
111
+ rp->devmode);
112
+ if(!rp->hdc) rb_raise(rb_eRuntimeError, "failed to CreateDC");
113
+ } else {
114
+ rb_warn("Already printer was opend");
115
+ }
116
+ if(rb_block_given_p()){
117
+ rb_yield(self);
118
+ DeleteDC(rp->hdc);
119
+ rp->hdc = 0;
120
+ }
121
+ return self;
122
+ }
123
+
124
+ static VALUE
125
+ rwprinter_close(VALUE self){
126
+ RwPrinter *rp = DATA_PTR(self);
127
+ if(rp->hdc){
128
+ DeleteDC(rp->hdc);
129
+ rp->hdc = 0;
130
+ }
131
+ return self;
132
+ }
133
+
134
+ static VALUE
135
+ v_cv1_nextpage(VALUE self){
136
+ RwCanvas *cv = DATA_PTR(self);
137
+ EndPage(cv->hdc);
138
+ StartPage(cv->hdc);
139
+ return self;
140
+ }
141
+
142
+ static VALUE
143
+ v_cv1_abortdoc(VALUE self){
144
+ RwCanvas *cv = DATA_PTR(self);
145
+ AbortDoc(cv->hdc);
146
+ return self;
147
+ }
148
+
149
+ static VALUE
150
+ rwprinter_print(int argc, VALUE *argv, VALUE self){
151
+ DOCINFO di;
152
+ VALUE v_docname, klass, v_cv;
153
+ RwPrinter *rp = DATA_PTR(self);
154
+ rb_scan_args(argc, argv, "11", &v_docname, &klass);
155
+ if(!rp->hdc) rb_raise(rb_eRuntimeError, "Printer not opened");
156
+ if(!rb_block_given_p()) rb_raise(rb_eRuntimeError, "Need block");
157
+ ZeroMemory(&di, sizeof(DOCINFO));
158
+ di.cbSize = sizeof(DOCINFO);
159
+ di.lpszDocName = rw_str2tchar(v_docname);
160
+ v_cv = rwcvs_new_from_hdc(NIL_P(klass) ? cRwCanvas : klass, rp->hdc);
161
+ rb_define_singleton_method(v_cv, "NextPage", v_cv1_nextpage, 0);
162
+ rb_define_singleton_method(v_cv, "AbortDoc", v_cv1_abortdoc, 0);
163
+ StartDoc(rp->hdc, &di);
164
+ StartPage(rp->hdc);
165
+ rb_yield(v_cv);
166
+ EndPage(rp->hdc);
167
+ EndDoc(rp->hdc);
168
+ return self;
169
+ }
170
+
171
+ static VALUE
172
+ rwprinter1_getdefaultptr(){
173
+ TCHAR *buff;
174
+ DWORD cch;
175
+ GetDefaultPrinter(NULL, &cch);
176
+ buff = alloca(cch*sizeof(WCHAR));
177
+ GetDefaultPrinter(buff, &cch);
178
+ return rw_encode_external(buff);
179
+ }
180
+
181
+ static VALUE
182
+ rwprinter_getdevmode(VALUE self){
183
+ RwPrinter *rp = DATA_PTR(self);
184
+ if(rp->hdc) rb_raise(rb_eRuntimeError, "already printer opened, so can't retrieve devmode");
185
+ if(!rp->devmode) rb_raise(rb_eRuntimeError, "devmode not established");
186
+ return cstruct_wrapptr(ccsDEVMODE, (char*)rp->devmode, 0);
187
+ }
188
+
189
+ static VALUE
190
+ rwprinter_gethdc(VALUE self){
191
+ RwPrinter *rp = DATA_PTR(self);
192
+ return ULONG_PTR2NUM((ULONG_PTR)rp->hdc);
193
+ }
194
+
195
+
196
+ static void
197
+ rw_init_Printer(){
198
+ cRwPrinter = rb_define_class_under(mRwin, "Printer", rb_cData);
199
+ rb_define_alloc_func(cRwPrinter, alloc_rwpriner);
200
+
201
+ rb_define_method(cRwPrinter, "initialize", rwprinter_initialize, 1);
202
+ rb_define_method(cRwPrinter, "open", rwprinter_open, 0);
203
+ rb_define_method(cRwPrinter, "close", rwprinter_close, 0);
204
+ rb_define_method(cRwPrinter, "print", rwprinter_print, -1);
205
+ rb_define_method(cRwPrinter, "_devmode", rwprinter_getdevmode, 0);
206
+ rb_define_method(cRwPrinter, "_hdc", rwprinter_gethdc, 0);
207
+
208
+ /* API functions */
209
+ rb_define_singleton_method(cRwPrinter, "GetDefaultPrinter", rwprinter1_getdefaultptr, 0);
210
+ }
211
+
212
+ void
213
+ Init_rw_devices(){
214
+ rw_init_Printer();
215
+ }
@@ -0,0 +1,278 @@
1
+ /*
2
+ # Project WRB was forked from Project VisualuRuby(temp-name).
3
+ # Author of this project: BANJO Koyu <banjokoyu at gmail.com>
4
+ # The URL of this project: https://bitbucket.org/wrb/
5
+ #
6
+ # This is a ext-library part of WRB.
7
+ */
8
+
9
+ #ifndef __RW_GDIPLUS_H
10
+ #define __RW_GDIPLUS_H
11
+
12
+ #define WINGDIPAPI __stdcall
13
+ #define GDIPCONST const
14
+
15
+
16
+ typedef float REAL;
17
+ typedef DWORD ARGB;
18
+ typedef INT PixelFormat;
19
+
20
+ typedef void *DebugEventProc;
21
+
22
+ //typedef BOOL CALLBACK (*EnumerateMetafileProc)(EmfPlusRecordType,UINT,UINT,const BYTE*,VOID*);
23
+
24
+ typedef void *DrawImageAbort;
25
+ typedef void *GetThumbnailImageAbort;
26
+ typedef void *NotificationHookProc;
27
+ typedef void *NotificationUnhookProc;
28
+
29
+ typedef void CGpEffect;
30
+ typedef void GpAdjustableArrowCap;
31
+ typedef void GpBitmap;
32
+ typedef void GpBrush;
33
+ typedef void GpCachedBitmap;
34
+ typedef void GpCustomLineCap;
35
+ typedef void GpFont;
36
+ typedef void GpFontFamily;
37
+ typedef void GpFontCollection;
38
+ typedef void GpGraphics;
39
+ typedef void GpHatch;
40
+ typedef void GpImage;
41
+ typedef void GpImageAttributes;
42
+ typedef void GpLineGradient;
43
+ typedef void GpMatrix;
44
+ typedef void GpMetafile;
45
+ typedef void GpPath;
46
+ typedef void GpPathData;
47
+ typedef void GpPathGradient;
48
+ typedef void GpPathIterator;
49
+ typedef void GpPen;
50
+ typedef void GpRegion;
51
+ typedef void GpSolidFill;
52
+ typedef void GpStringFormat;
53
+ typedef void GpTexture;
54
+
55
+ typedef struct GdiplusStartupInput {
56
+ UINT32 GdiplusVersion;
57
+ DebugEventProc DebugEventCallback;
58
+ BOOL SuppressBackgroundThread;
59
+ BOOL SuppressExternalCodecs;
60
+ } GdiplusStartupInput;
61
+
62
+ typedef struct GdiplusStartupOutput {
63
+ NotificationHookProc NotificationHook;
64
+ NotificationUnhookProc NotificationUnhook;
65
+ } GdiplusStartupOutput;
66
+ typedef enum GpStatus {
67
+ Ok = 0,
68
+ GenericError = 1,
69
+ InvalidParameter = 2,
70
+ OutOfMemory = 3,
71
+ ObjectBusy = 4,
72
+ InsufficientBuffer = 5,
73
+ NotImplemented = 6,
74
+ Win32Error = 7,
75
+ WrongState = 8,
76
+ Aborted = 9,
77
+ FileNotFound = 10,
78
+ ValueOverflow = 11,
79
+ AccessDenied = 12,
80
+ UnknownImageFormat = 13,
81
+ FontFamilyNotFound = 14,
82
+ FontStyleNotFound = 15,
83
+ NotTrueTypeFont = 16,
84
+ UnsupportedGdiplusVersion = 17,
85
+ GdiplusNotInitialized = 18,
86
+ PropertyNotFound = 19,
87
+ PropertyNotSupported = 20,
88
+ ProfileNotFound = 21
89
+ } GpStatus;
90
+
91
+ typedef struct Size {
92
+ INT Width;
93
+ INT Height;
94
+ } Size;
95
+
96
+ typedef struct SizeF {
97
+ REAL Width;
98
+ REAL Height;
99
+ } SizeF;
100
+
101
+ typedef struct Point {
102
+ INT X;
103
+ INT Y;
104
+ } Point;
105
+
106
+ typedef struct PointF {
107
+ REAL X;
108
+ REAL Y;
109
+ } PointF;
110
+
111
+ typedef struct Rect {
112
+ INT X;
113
+ INT Y;
114
+ INT Width;
115
+ INT Height;
116
+ } Rect;
117
+
118
+ typedef struct RectF {
119
+ REAL X;
120
+ REAL Y;
121
+ REAL Width;
122
+ REAL Height;
123
+ } RectF;
124
+
125
+ typedef struct CharacterRange {
126
+ INT First;
127
+ INT Length;
128
+ } CharacterRange;
129
+
130
+ typedef struct PathData {
131
+ INT Count;
132
+ PointF *Points;
133
+ BYTE *Types;
134
+ } PathData;
135
+
136
+ typedef struct PropertyItem {
137
+ PROPID id;
138
+ ULONG length;
139
+ WORD type;
140
+ VOID *value;
141
+ } PropertyItem;
142
+
143
+ typedef enum RotateFlipType {
144
+ RotateNoneFlipNone = 0,
145
+ Rotate90FlipNone = 1,
146
+ Rotate180FlipNone = 2,
147
+ Rotate270FlipNone = 3,
148
+ RotateNoneFlipX = 4,
149
+ Rotate90FlipX = 5,
150
+ Rotate180FlipX = 6,
151
+ Rotate270FlipX = 7,
152
+ Rotate180FlipXY = 0,
153
+ Rotate270FlipXY = 1,
154
+ RotateNoneFlipXY = 2,
155
+ Rotate90FlipXY = 3,
156
+ Rotate180FlipY = 4,
157
+ Rotate270FlipY = 5,
158
+ RotateNoneFlipY = 6,
159
+ Rotate90FlipY = 7
160
+ } RotateFlipType;
161
+
162
+ typedef struct BitmapData {
163
+ UINT Width;
164
+ UINT Height;
165
+ INT Stride;
166
+ INT PixelFormat; /* MSDN: "PixelFormat PixelFormat;" */
167
+ VOID *Scan0;
168
+ UINT_PTR Reserved;
169
+ } BitmapData;
170
+
171
+ typedef struct EncoderParameter {
172
+ GUID Guid;
173
+ ULONG NumberOfValues;
174
+ ULONG Type;
175
+ VOID *Value;
176
+ } EncoderParameter;
177
+
178
+ typedef struct EncoderParameters {
179
+ UINT Count;
180
+ EncoderParameter Parameter[1];
181
+ } EncoderParameters;
182
+
183
+
184
+ typedef struct ImageCodecInfo {
185
+ CLSID Clsid;
186
+ GUID FormatID;
187
+ WCHAR *CodecName;
188
+ WCHAR *DllName;
189
+ WCHAR *FormatDescription;
190
+ WCHAR *FilenameExtension;
191
+ WCHAR *MimeType;
192
+ DWORD Flags;
193
+ DWORD Version;
194
+ DWORD SigCount;
195
+ DWORD SigSize;
196
+ BYTE *SigPattern;
197
+ BYTE *SigMask;
198
+ } ImageCodecInfo;
199
+
200
+
201
+ #define PropertyTagTypeByte ((WORD) 1)
202
+ #define PropertyTagTypeASCII ((WORD) 2)
203
+ #define PropertyTagTypeShort ((WORD) 3)
204
+ #define PropertyTagTypeLong ((WORD) 4)
205
+ #define PropertyTagTypeRational ((WORD) 5)
206
+ #define PropertyTagTypeUndefined ((WORD) 7)
207
+ #define PropertyTagTypeSLONG ((WORD) 9)
208
+ #define PropertyTagTypeSRational ((WORD) 10)
209
+
210
+
211
+ /* from gdiplusenums */
212
+ typedef enum EncoderParameterValueType {
213
+ EncoderParameterValueTypeByte = 1,
214
+ EncoderParameterValueTypeASCII = 2,
215
+ EncoderParameterValueTypeShort = 3,
216
+ EncoderParameterValueTypeLong = 4,
217
+ EncoderParameterValueTypeRational = 5,
218
+ EncoderParameterValueTypeLongRange = 6,
219
+ EncoderParameterValueTypeUndefined = 7,
220
+ EncoderParameterValueTypeRationalRange = 8,
221
+ EncoderParameterValueTypePointer = 9
222
+ } EncoderParameterValueType;
223
+
224
+
225
+
226
+
227
+ GpStatus WINGDIPAPI GdiplusStartup(ULONG_PTR*,GDIPCONST GdiplusStartupInput*,GdiplusStartupOutput*);
228
+ VOID WINGDIPAPI GdiplusShutdown(ULONG_PTR);
229
+ GpStatus WINGDIPAPI GdiplusNotificationHook(ULONG_PTR*);
230
+ VOID WINGDIPAPI GdiplusNotificationUnhook(ULONG_PTR);
231
+
232
+ /* Bitmap functions */
233
+ GpStatus WINGDIPAPI GdipCreateHBITMAPFromBitmap(GpBitmap*,HBITMAP*,ARGB);
234
+ GpStatus WINGDIPAPI GdipCreateHICONFromBitmap(GpBitmap*,HICON*);
235
+
236
+ /* Image functions */
237
+ GpStatus WINGDIPAPI GdipDisposeImage(GpImage*);
238
+ GpStatus WINGDIPAPI GdipGetImageWidth(GpImage*,UINT*);
239
+ GpStatus WINGDIPAPI GdipGetImageHeight(GpImage*,UINT*);
240
+ GpStatus WINGDIPAPI GdipGetImageHorizontalResolution(GpImage*,REAL*);
241
+ GpStatus WINGDIPAPI GdipGetImageVerticalResolution(GpImage*,REAL*);
242
+ GpStatus WINGDIPAPI GdipGetImageFlags(GpImage*,UINT*);
243
+ GpStatus WINGDIPAPI GdipGetPropertyCount(GpImage*,UINT*);
244
+ GpStatus WINGDIPAPI GdipGetPropertyIdList(GpImage*,UINT,PROPID*);
245
+ GpStatus WINGDIPAPI GdipGetPropertyItemSize(GpImage*,PROPID,UINT*);
246
+ GpStatus WINGDIPAPI GdipGetPropertyItem(GpImage*,PROPID,UINT,PropertyItem*);
247
+ GpStatus WINGDIPAPI GdipLoadImageFromStream(IStream*,GpImage**);
248
+ GpStatus WINGDIPAPI GdipLoadImageFromFile(GDIPCONST WCHAR*,GpImage**);
249
+ GpStatus WINGDIPAPI GdipSaveImageToStream(GpImage*,IStream*,GDIPCONST CLSID*,GDIPCONST EncoderParameters*);
250
+ GpStatus WINGDIPAPI GdipSaveImageToFile(GpImage*,GDIPCONST WCHAR*,GDIPCONST CLSID*,GDIPCONST EncoderParameters*);
251
+ GpStatus WINGDIPAPI GdipImageRotateFlip(GpImage*,RotateFlipType);
252
+ GpStatus WINGDIPAPI GdipGetImageThumbnail(GpImage*,UINT,UINT,GpImage**,GetThumbnailImageAbort,VOID*);
253
+
254
+ /* Image codec functions */
255
+ GpStatus WINGDIPAPI GdipGetImageEncodersSize(UINT*,UINT*);
256
+ GpStatus WINGDIPAPI GdipGetImageEncoders(UINT,UINT,ImageCodecInfo*);
257
+
258
+ //GdipCreateHBITMAPFromBitmap(ri->himage, &hbitmap, background);
259
+ //GdipCreateHICONFromBitmap(ri->himage, &hicon))
260
+
261
+ //GdipDisposeImage(ri->himage);
262
+ //GdipGetImageWidth(ri->himage, & w);
263
+ //GdipGetImageHeight(ri->himage, & h);
264
+ //GdipGetImageHorizontalResolution(ri->himage, & horiz);
265
+ //GdipGetImageVerticalResolution(ri->himage, & vert);
266
+ //GdipGetPropertyCount(ri->himage, &count);
267
+ //GdipGetPropertyIdList(ri->himage, count, propids);
268
+ //GdipGetPropertyItemSize(ri->himage, id, &size);
269
+ //GdipGetPropertyItem(ri->himage, id, size, pi);
270
+ //GdipLoadImageFromFile(rw_str2wchar(v_path)
271
+ //GdipLoadImageFromStream(pstream, &himage)
272
+ //GdipSaveImageToStream(ri->himage, pstream, &enc_clsid, enc_params)==Ok)
273
+ //GdipSaveImageToFile(ri->himage, rw_str2wchar(v_save2), &enc_clsid, enc_params);
274
+
275
+ //GdipImageRotateFlip(ri->himage, FIX2INT(v_rotate))) return Qtrue;
276
+ //GdipGetImageThumbnail(ri->himage,FIX2INT(v_w), FIX2INT(v_h), &himage, NULL, NULL);
277
+
278
+ #endif /* __RW_GDIPLUS_H */