wrb 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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,72 @@
1
+ require 'wrb'
2
+
3
+ module WR
4
+ module RC
5
+ HOTKEYF_SHIFT = 0x1
6
+ HOTKEYF_CONTROL = 0x2
7
+ HOTKEYF_ALT = 0x4
8
+ HOTKEYF_EXT = 0x8
9
+
10
+ HKCOMB_NONE = 0x1
11
+ HKCOMB_S = 0x2
12
+ HKCOMB_C = 0x4
13
+ HKCOMB_A = 0x8
14
+ HKCOMB_SC = 0x10
15
+ HKCOMB_SA = 0x20
16
+ HKCOMB_CA = 0x40
17
+ HKCOMB_SCA = 0x80
18
+
19
+ HKM_SETHOTKEY = WM_USER+1
20
+ HKM_GETHOTKEY = WM_USER+2
21
+ HKM_SETRULES = WM_USER+3
22
+ end
23
+
24
+ PreDefinedEvents = {}
25
+
26
+ # A window that enables the user to enter a combination of keystrokes to be used as a hot key.
27
+ # <br>See also <a href="https://docs.microsoft.com/en-us/windows/desktop/Controls/
28
+ # window-controls"> Windows Control section of Microsoft Docs.</a>
29
+ class Hotkeyctrl < WinControl
30
+ def initialize(*args)
31
+ super
32
+ @_classname = "msctls_hotkey32"
33
+ @_acceptable_events = PreDefinedEvents.dup
34
+ end
35
+
36
+ # Gets the virtual key code and modifier flags of a hot key from this Hotkeyctrl.<br>
37
+ # Returns an array of [modifier, keycode].
38
+ def get()
39
+ r = SendMessage(HKM_GETHOTKEY, 0, 0)
40
+ keycode = r & 0xff
41
+ modifier = (r >> 8) & 0xff
42
+ [modifier, keycode]
43
+ end
44
+
45
+ # Sets the hot key combination for this Hotkeyctrl.
46
+ def set(modifier, keycode)
47
+ hk = (modifier << 8 + keycode) & 0xffff
48
+ SendMessage(HKM_SETHOTKEY, hk, 0)
49
+ end
50
+
51
+ # Defines the invalid combinations and the default modifier combination for this Hotkeyctrl.
52
+ def setrules(combination, modifier)
53
+ SendMessage(HKM_SETRULES, combination, modifier)
54
+ end
55
+ end
56
+ end
57
+
58
+ module WR
59
+ class MyForm < Form
60
+ def initialize()
61
+ resize 280, 210
62
+ inheritfont Font['Meiryo', 20]
63
+ _<< Hotkeyctrl[:hk1, "", 10, 10, 200, 24]
64
+ end
65
+
66
+ def created()
67
+ _.hk1.SetFocus
68
+ end
69
+
70
+ self.start
71
+ end
72
+ end if __FILE__==$0
@@ -0,0 +1,109 @@
1
+ require 'wrb'
2
+ require 'wrb/lzss'
3
+
4
+ module WR
5
+ module RC
6
+ OIC_SAMPLE = 32512
7
+ OIC_HAND = 32513
8
+ OIC_QUES = 32514
9
+ OIC_BANG = 32515
10
+ OIC_NOTE = 32516
11
+ OIC_WINLOGO = 32517
12
+ OIC_WARNING = OIC_BANG
13
+ OIC_ERROR = OIC_HAND
14
+ OIC_INFORMATION = OIC_NOTE
15
+ end
16
+
17
+ # A picture that consists of a bitmap image combined with a mask to create transparent areas in the picture.
18
+ # <br>See also <a href="https://docs.microsoft.com/en-us/windows/desktop/menurc/resources">
19
+ # Menus and Other Resources section of Microsft Docs</a>
20
+ class Icon < RWin::Icon
21
+ =begin
22
+ following methods are defined at the super class.
23
+ :singleton_methods
24
+ self.new(bmmask, bmcolor)
25
+ Creates a new icon with the specified arguments.
26
+ self._load(str)
27
+ Loads from a string. Give a String as <i>str</i>.
28
+ self.fromfile()
29
+ Loads from a icon file. Give a String as <i>path</i> to icon file.
30
+ self.fromresource()
31
+ Creates a new icon from the resources of current application.<br>
32
+ Give an integer for index of icon resources.
33
+
34
+ :instance_methods
35
+ _dump()
36
+ Dumps self to a string for Marshal object.
37
+ _hicon()
38
+ Retrieves a handle of self. Returns 32/64 bits integer as it.
39
+ dispose()
40
+ Disposes self from resource table and sets hicon to 0. Returns true/false.
41
+ to_bmps()
42
+ Creates new bitmap data from self. Returns an array of [bmmask, bmcolor, xHotspot, yHotspot].
43
+
44
+ =end
45
+
46
+ include RC
47
+ ICONINFO = API.defstruct "
48
+ BOOL fIcon;
49
+ DWORD xHotspot;
50
+ DWORD yHotspot;
51
+ HBITMAP hbmMask;
52
+ HBITMAP hbmColor;"
53
+
54
+ attr_accessor :name
55
+
56
+ # Creates a new icon with the specified arguments.
57
+ def self.[](*args)
58
+ self.new(*args)
59
+ end
60
+
61
+ # def self.fromfile(*args)
62
+ # nm = args.shift if args[0].is_a?(Symbol)
63
+ # obj = super
64
+ # obj.name = nm
65
+ # obj
66
+ # end
67
+
68
+ # Loads new bitmap object from a LZSS compressd string.
69
+ # Give a String as <i>str</i>.
70
+ def self.loadb64(str)
71
+ self._load(LZSS.expand(str.unpack('m')[0]))
72
+ end
73
+
74
+ # Dumps self to a base64 encoded string with LZSS compression.
75
+ def dumpb64()
76
+ [LZSS.compress(self._dump)].pack('m')
77
+ end
78
+ end
79
+ end
80
+
81
+ module WR
82
+ class MyForm < Form
83
+ def initialize()
84
+ resize 210, 210
85
+ bmp_xor = Bitmap.loadb64 "IRNGwMAAAAAAAAAG0AcBRALAQAAAAAQQEwAIADEBk4ECQJjgWG/3+/3+/3+/3+/3+/3+/3+/3+/3+/4CfwJfgb/BJ+C38G34P/wkfhR/C1+GP8Nn4dfw/Vfj0cD5dDAezcUD0aKAeLFMDuXJAdauEERqXq9X+ej0/wAAH+AAA/wAAH+AAA/wBAMiKJMEv4JYOhRAB0KIAOhRAB0KIAQDGi9TBd+DYYPB7/JpNf4fD8HsYSxwS/gu/BvOO1MLr4ZgFwuP9BoN/sBgP9JJJ/nM5v+FL8Lf4YHyQDiNfBdBcLh/qFQv8TCZ/iYTQCRiC/EX+JB8GDwQCH+ZDI/1SqYi6RlTAYDhgfF0+MB8v9I7UwXQhbgLhdHvqDqEcX46/x4PiQZF0CF0EF3JLAThwkS/I3+SB8YCYuhyLjlR/KF+Uv8qD48DSiwkXBHRCYNgRBjsoiA/H5JA+Xp8wD4wDy6AlFhIuCbNIYCDlmeA+XzSmGaL81f5sH04DnAhNFCXQEGCQOBXvOZBzKEBP1+wYPnY/PA+p48+EKDoTRQl4gDAQ8ggC3bPzNvpwFT/AfD4f8GMKAv0F/oQfWg+tl9cT66316Pr9fYM+w99jD7IX2VPqA/UK+pL9Tf6oHx4GqyfVqysL9Zf60HwYPrm/CE+vj9gP7vU2IfsVfZF+yv9mD4kH2jfiifax+2H8MD7c/2ipuC/cX+5B8eD7pvyBPu4/eD+MB96f4YH3y/vu/eA/AD+Ar8Ev4N/wgfnAPGD+HaZkn4kfxR/oa/RZmTZtIh4oPx7/kA/UB+pL8sH5q8ywflyDW1+uz9f37EPtvDog/RBe0b9rH7av2+fuO/dB+7L94n71v30fv6M"
86
+
87
+ bmp_and = Bitmap.loadb64 "IRNGwMAAAAAAAAAG0AcBRALAQAAAAAQQEwAIADEBk4ECQJjgWG/3+/3+/3+/3+/3+/3+/3+/3+/3+/4CfwJfgb/BJ+C38G34P/wkfhR/C1+GP8Nn4dfw/fiH/EhWJrIAAEA6oonxVsgefGpCL1MF34N/xqjhD/CZ+O18L34Z/w4fh5/I6+Et8Sn4nfxTfiv/Eg+MH8ZX40/xufl9fHd+Pf8gH5CfzWvjbfJJ+QacmH5OfzuvkLfKp+DB8s35b/yoPmB/REmZD8zP6PXy1vm0/L6+cb85/5sHzw/hgfPn+fz9Tr6Dv1ZPog/RT+s19aD62X1xPrrfXo+v19gz7D32MPshfZU+p79oT6sP1c/tdfUW+tT9Tr65v13/rQfYD+YB9if7HP3evsu/ek+0D9pP77X2Nvtk/Za+3b9v/7YH3I/oQfdH+6z+Jr7vv4xPvQ/ez/H191b79P3evwG/gf+/B+EP6oH4Z/w8/m6/ON+dgM87YOvxm/jf/Q1+iz9H35J/yc/p6/UN+pj9VX6vGzOflgzXN+vj9hX7HP2XftA/al+2T9u37iP3Nfus/d9+9D98X79J"
88
+ self.icon = ico = Icon.fromresource(1)
89
+ # @bmp_cross = Bitmap.fromfile('../resources/cross.bmp')
90
+ # @bmp_cross_mask = Bitmap.fromfile('../resources/cross_mask.bmp')
91
+ # ico = Icon[@bmp_cross_mask, @bmp_cross]
92
+ # self.icon = Icon[bmp_and, bmp_xor]
93
+ s = ico._dump
94
+ # open('../../libtests/closs.ico', 'wb'){|f| f.write(s)}
95
+ # dpp Icon._load(s)
96
+ @bmclr, @bmmask, fcursor = ico.to_bmps
97
+ dpp @bmclr, @bmmask, fcursor
98
+ accept_events :paint
99
+ end
100
+
101
+ def self_paint(cv)
102
+ cv.BitBlt(0, 0, @bmclr)
103
+ cv.BitBlt(32, 0, @bmmask)
104
+ # cv.BitBlt(0, 32, @bmp_cross_mask)
105
+ end
106
+
107
+ self.start
108
+ end
109
+ end if __FILE__ == $0
@@ -0,0 +1,396 @@
1
+ require 'wrb/lzss'
2
+ require 'wrb/commctrlconst'
3
+ module WR
4
+ module RC
5
+ ILC_MASK = 0x1
6
+ ILC_COLOR = 0x0
7
+ ILC_COLORDDB = 0xfe
8
+ ILC_COLOR4 = 0x4
9
+ ILC_COLOR8 = 0x8
10
+ ILC_COLOR16 = 0x10
11
+ ILC_COLOR24 = 0x18
12
+ ILC_COLOR32 = 0x20
13
+ ILC_PALETTE = 0x800
14
+ ILC_MIRROR = 0x2000
15
+ ILC_PERITEMMIRROR = 0x8000
16
+
17
+ ILD_NORMAL = 0x0
18
+ ILD_TRANSPARENT = 0x1
19
+ ILD_MASK = 0x10
20
+ ILD_IMAGE = 0x20
21
+ ILD_ROP = 0x40
22
+ ILD_BLEND25 = 0x2
23
+ ILD_BLEND50 = 0x4
24
+ ILD_OVERLAYMASK = 0xf00
25
+ def self.INDEXTOOVERLAYMASK(i) ((i) << 8); end
26
+ ILD_PRESERVEALPHA = 0x1000
27
+ ILD_SCALE = 0x2000
28
+ ILD_DPISCALE = 0x4000
29
+ ILD_SELECTED = ILD_BLEND50
30
+ ILD_FOCUS = ILD_BLEND25
31
+ ILD_BLEND = ILD_BLEND50
32
+
33
+ CLR_HILIGHT = CLR_DEFAULT = -0x01000000
34
+
35
+ ILS_NORMAL = 0x0
36
+ ILS_GLOW = 0x1
37
+ ILS_SHADOW = 0x2
38
+ ILS_SATURATE = 0x4
39
+ ILS_ALPHA = 0x8
40
+ end
41
+
42
+ # A collection of images of the same size, each of which can be referred to by its index.<br>
43
+ #See also <a href="https://docs.microsoft.com/en-us/windows/desktop/Controls/window-controls">
44
+ # Windows Control section of Microsoft Docs.</a>
45
+ class Imagelist < RWin::Imagelist
46
+
47
+ =begin
48
+ self.new(name=nil, width, height, flags, initial, glow)
49
+ Creates new image list with arguments.<br>
50
+ Give <i>true/:masked</i> as <i>flags</i> for using mask image.<br>
51
+ `name' is for adding on the toplevel window, give a Symbol if needed.
52
+
53
+ following methods are defined in the super class.
54
+ :singleton_methods
55
+ self._load(str)
56
+ Loads from a string. Give a String as <i>str</i>.
57
+
58
+ :instance_methods
59
+ _dump()
60
+ Dumps self to a string for Marshal object.
61
+ _himagelist()
62
+ Retrieves an imagelist handle of self. Returns 32/64 bits integer as it.
63
+ add(color, mask=nil)
64
+ Adds an image or images to this image list. Give a Bitmap object as each <i>color</i> and <i>mask</i>.
65
+ addicon(icon)
66
+ Adds an image from specified icon. Give an Icon object as <i>icon</i>.
67
+ addmasked(bitmap, maskcolor=nil)
68
+ Adds an image from specified bitmap and mask-color.<br>
69
+ If omitted maskcolor, color of (0, 0) pixcel in specified bitmap will be used as mask-color.
70
+ bkcolor()
71
+ Gets the background color for this image list.
72
+ bkcolor=(clr)
73
+ Sets the background color for this image list. Give a RGB integer as <i>clr</i>.
74
+ clear()
75
+ Deletes all images in this image list.
76
+ delete()
77
+ Destroys this image list. and remove from resource list.
78
+ dispose()
79
+ Alias of delete.
80
+ icon(index)
81
+ Retreives Icon object from specified index. Returns RWin::Icon.
82
+ iconsize()
83
+ Retrieves the dimensions of images in this image list.
84
+ Retruns array of two integers as <i>[w, h]</i>.
85
+ imageinfo()
86
+ Retreives a CStruct object. Wrap this with <i>IMAGEINFO</i> structure to handle by names.
87
+ merge(imagelist)
88
+ Merges specified <i>imagelist</i> into this.
89
+ remove(index)
90
+ Rmoves an image at specified <i>index</i> from this image list.
91
+ replace(index, color, mask=nil)
92
+ Replaces to a new image at specified <i>index</i> in this image list.
93
+ replaceicon(index, icon)
94
+ Replaces to a new image at specified <i>index</i> in this image list using an <i>icon</i>.
95
+ resize(newsize)
96
+ Resizes size of this imagelist. (not icon size)
97
+ size()
98
+ Retreives count of images in this imagelist.
99
+
100
+ =end
101
+
102
+ include RC
103
+
104
+ # Wrapper of a specified index of an Imagelist.
105
+ class Item
106
+ attr_reader :index
107
+
108
+ include RC
109
+ def initialize(onr, idx)
110
+ @owner = onr
111
+ @index = idx
112
+ end
113
+
114
+ def
115
+ imageinfo() @owner.imageinfo(@index)
116
+ end
117
+
118
+ def icon()
119
+ @owner.icon(@index)
120
+ end
121
+
122
+ def delete()
123
+ @owner.delete!(@index)
124
+ end
125
+
126
+ def replace(bmp, mask=nil)
127
+ @owner.replace(@index, bmp, mask)
128
+ end
129
+
130
+ def replaceicon(ico)
131
+ @owner.replaceicon(@index, ico)
132
+ end
133
+
134
+ def draw(cv, x, y)
135
+ cv.DrawImagelist(@owner, @index, x, y)
136
+ end
137
+ end
138
+
139
+ # Creates new image list with arguments.<br>
140
+ # Arguments are same as `self.create(...)'.
141
+ def self.[](*args) self.new(*args); end
142
+
143
+ attr_accessor :name
144
+ attr_reader :downlevel
145
+ alias count size
146
+
147
+ def initialize(*args)
148
+ @name = args.shift if args[0].is_a?(Symbol)
149
+ args[2] = ILC_MASK | ILC_COLOR24 if args[2]==:masked || args[2]==true
150
+ @_creation_flags = args[2].to_i
151
+ super *args
152
+ end
153
+
154
+ # Replaces to a new image at specified <i>index</i> in this image list using a Bitmap or an Icon.<br>
155
+ # If Bitmap given, will be masked automaticaly by using color of (0, 0) pixcel in it.
156
+ def replace(idx, obj, mask=nil)
157
+ if obj.is_a?(RWin::Bitmap)
158
+ mask ||= obj.to_maskimage
159
+ super(idx, obj, mask)
160
+ elsif obj.is_a?(RWin::Icon)
161
+ replaceicon(idx, obj)
162
+ else
163
+ raise ArgumentError("Argument is neither Bitmap nor Icon, but got #{obj}")
164
+ end
165
+ end
166
+
167
+ # Adds a specified bitmap or imagelist at last.
168
+ # Both a Bitmap and Imagelist can be given as <i>arg</i>.
169
+ def <<(arg)
170
+ if @_creation_flags & ILC_MASK == 0 || (arg.is_a?(Array) && arg[1].is_a?(RWin::Bitmap))
171
+ add(*arg)
172
+ elsif arg.is_a?(RWin::Imagelist)
173
+ arg.each{|i| self.addicon i.icon}
174
+ else
175
+ bmp, maskcolor = arg
176
+ bmp = bmp.to_24 if bmp.depth > 24
177
+ maskcolor = bmp.GetPixel(0, 0) unless maskcolor
178
+ addmasked(bmp, maskcolor)
179
+ end
180
+ end
181
+
182
+ # Retreives whether this imagelist was masked or not.
183
+ def masked()
184
+ @_creation_flags & ILC_MASK != 0
185
+ end
186
+ alias masked? masked
187
+
188
+ # Retreives information of item at specified index. Returns Imagelist::Item.
189
+ def [](index)
190
+ if index >= self.size
191
+ raise ArgumentError, "Too big index:#{index} (num of images is #{self.size}).", caller(1)
192
+ end
193
+ Item.new(self, index)
194
+ end
195
+
196
+ # each(){|item| ... }
197
+ # Performs the block for each <i>item</i> in this imagelist as a block parameter.
198
+ def each()
199
+ self.size.times{|i| yield Item.new(self, i)}
200
+ end
201
+
202
+ # Sets whether created this by commctl32.dll version 5 or not.
203
+ def downlevel=(f)
204
+ case f
205
+ when true, false, nil
206
+ @downlevel = f
207
+ else
208
+ raise ArgumentError, "Argument must be true, false or nil."
209
+ end
210
+ end
211
+
212
+ # Loads new image list object from a LZSS compressd string.<br>
213
+ # Give a String as <i>str</i>.
214
+ def self.loadb64(name=nil, str)
215
+ s = LZSS.expand(str.unpack('m')[0])
216
+ v = s[0, 4]
217
+ case v
218
+ when "IL\x01\x01"
219
+ downlevel = true
220
+ when "IL \x06"
221
+ raise ArgumentError, "COMCTL VERSION mismatch(need 6)." if APP::COMCTL_MAJOR_VERSION!=6
222
+ else
223
+ raise ArgumentError, "Not Imagelist stream."
224
+ end
225
+ r = self._load(LZSS.expand(str.unpack('m')[0]))
226
+ r.name = name if name
227
+ r.downlevel = downlevel
228
+ r
229
+ end
230
+
231
+ # Loads from a image list file.<br>
232
+ # Give a String as <i>path</i> to image list file.
233
+ def self.fromfile(name=nil, path)
234
+ v = nil
235
+ s = open(path, 'rb'){|f| v=f.read(4); f.rewind; f.read}
236
+ case v
237
+ when "IL\x01\x01"
238
+ downlevel = true
239
+ when "IL \x06"
240
+ raise ArgumentError, "COMCTL VERSION mismatch(need 6)." if APP::COMCTL_MAJOR_VERSION!=6
241
+ else
242
+ raise ArgumentError, "Not Imagelist file."
243
+ end
244
+ r = self._load(s)
245
+ r.downlevel = downlevel
246
+ r.name = name if name
247
+ r
248
+ end
249
+
250
+ # Retreives whether the file was created by commctl32.dll version 5.
251
+ # If retruns true the image list file was created by old versioned commctl32.dll.
252
+ def self.file_is_downcase?(path)
253
+ v = open(path, 'rb'){|f| f.read(4)}
254
+ case v
255
+ when "IL\x01\x01"
256
+ true
257
+ when "IL \x06"
258
+ false
259
+ else
260
+ raise "Not Imagelist file."
261
+ end
262
+ end
263
+
264
+ # Creates a new imagelist duplicated this image list.
265
+ def dup()
266
+ obj = super()
267
+ obj.instance_eval "@_creation_flags=#{@_creation_flags}" if @_creation_flags
268
+ obj.instance_eval "@downlevel=#{@downlevel}" if @downlevel
269
+ obj
270
+ end
271
+
272
+ # Saves to specified path as imagelist file.<br>
273
+ # If given true as downlevel, saves forced as a commctl32.dll version 5 file.
274
+ def savefile(path, downlevel=nil) # The path shuld be an absolute path.
275
+ downlevel = @downlevel if downlevel.nil?
276
+ open(path, 'wb'){|f| f.write(self._dump(downlevel))}
277
+ end
278
+
279
+ # Dumps self to a LZSS compressed and base64 encoded string.
280
+ def dumpb64(downlevel=nil)
281
+ downlevel = @downlevel if downlevel.nil?
282
+ [LZSS.compress(self._dump(downlevel))].pack('m')
283
+ end
284
+ end # class Imagelist
285
+ end
286
+
287
+ __END__
288
+ module WR
289
+ @im = Imagelist.loadb64 "
290
+ JJMAIBAoAAwAAgACAACAAf7/f7/AoQgDDAKEhE07AAAAAAQBAgECKIBgECAg
291
+ AggKAAYGAQGyAkCFAAAAAAAAAIBsIAAABAQPQQCAgDnANCAWAAYDAYAAQEAk
292
+ QA/wAAH/BdB/v+AOcBAIBYQgBgo/BjxEIhEIhEQXBg9/CuJEDMZjMZjiEx8K
293
+ pUWg4EIwQfhlKj1xBB+HNKLfcEH4g0o9friFGURr4ppot9vt9vuGB8Ulkev1
294
+ +v1/Dg+LSyLfcQD4w0ghERtRiRfGqsERQvjfVGlKO78hBIMhx/PkHfIg+Rl8
295
+ kT5K3yaHjviMxgAABIIVESEEkMKP4oAwIBkEJIQWQwo7jADBACQQqLkIJIYW
296
+ CAsghUfIQSQwsEBpBCSEFkMLBAaQQkhBZDCwQHkEHIQBMpuZeEhgH1IYGHAs
297
+ ghZCAJlPzTwkMAqlfAoKYAcghZCAJlMIBIABFvtFKpVTdwjOKCJBBAAASEAT
298
+ KZACZgEAqlUqlBOw+fGCZTKZTKQn1hAf+gAYJgQjAgFVT7/oRFBAWDF9CBUz
299
+ RKEFQgvogLB/EAACFEJCJo+o7JAIGjtYBpIGAaO30qRpfBTCClmgfpdoD6Ya
300
+ AemWgDpppBE2BgofggWj3jUDN/vmAQh1gIIj4DCUxhpknUsKp4oAD4AD4AD8
301
+ AYgeAAeAAfAQADgADgADwGAAYAAYAAcCAACAACAADAoCrIcDB4HThcAB9Hv9
302
+ Hv9GDNAB+s0L8AL8P9aIX8AH4P60hAF+AGtYTzf0Ag3u/4jX1wiA
303
+ "
304
+ # iml = Imagelist.new(16, 16, :masked)
305
+ #
306
+ ## iml << Bitmap.fromfile('../resources/fileimg.bmp')
307
+ # iml.savefile('../resources/fileimg5.iml')
308
+ # dpp open('../resources/fileimg5.iml', 'rb'){|f| f.read(4)}
309
+ # dpp open('../resources/fileimg6.iml', 'rb'){|f| f.read(4)}
310
+ # dpp Imagelist.fromfile('../resources/fileimg.iml').size
311
+
312
+ end if $0 == __FILE__
313
+ __END__
314
+
315
+ module WR
316
+ class Form1 < Form
317
+ Canvas
318
+ def initialize
319
+ resize(640, 480)
320
+ _<< Button[:btdump, "Dump", 0, 0, 80, 24, :margin=>[nil, nil, 80, nil]]
321
+ _<< Button[:btload, "Load", 0, 0, 80, 24, :margin=>[nil, nil, 0, nil]]
322
+ register_event WM_PAINT, "self_paint", "c"
323
+ @iml = _<< Imagelist.new(:image16, 16, 16, ILC_MASK | ILC_COLOR32)
324
+ bmp1 = Bitmap.loadb64(
325
+ "IRNGwDAAAAAAAAAG0AcBRALAIAAAAAIQEwAIADEBk4ECQJjgWGwGAwGAwGAwGAwGAwGAwGAwGAwGAwICfwJeQCAQCAQCAQCAQCAQCAQCAQCAQEBHYK+QMAf7/f7/f7/f7/f7/f7/f7/gHVBOCBh8DD4ITQMPgwfBvmDB8JD4GHxGphgfBg+Bh8PP4gpw8PiQfDA+Eh8VP4MHx4DjAfGPCOLMbD42HxxTjW/JDCPB8GBpMJgB/v8AP9/ybWkgfJSOBa0pf5VPwLZguzLT+XLMIdoSBg==")
326
+ bmp2 = Bitmap.loadb64(
327
+ "IRNGwDAAAAAAAAAG0AcBRALAIAAAAAIQEwAIADEBk4ECQJjgWGwGAwGAwGAwGAwGAwGAwGAwGAwGAwICfwJfYDAQCAQCAQCAQCAQCAQCAQCAQCAQEBHYLWQMAf7/f7/f7/f7/f7/f7/f7/gHVBOCBh8DA4NOQFWgwfBg+Dk0GD4SDQYPhUBCQ+GB8M+YYHwYPiZHDA+MGcSD4MHxrZhgfBg+Bh8Xf45DRsPjAfHFONb8kYI8HxRzjtfDwaSH8gf5UHysvlifLW+XR8vowA==")
328
+ bmp3 = Bitmap.loadb64(
329
+ "IRNGwDAAAAAAAAAG0AcBRALAIAAAAAIQEwAIADEBk4ECQJjgWGwGAwGAwGAwIA5IBAIBAIBAIBAIBAIBAIBAIBAICAjsC2YHIQMAf7/f7/f7/f7/f7/f7/f7/gHVBOCCv8DA4NOQFWhDtAnaDB8HJoMEwMMgwfCoCBh8MD4Z8wYPh4NDA+DB8HI4kHwwPgrzEg+DrMSD4wHxxZiofGA+OKca1o68x4PijnAtmBhkkP4FuSN/jo/Jn+U18Ff5TuMBgMBgQE/gS8A=")
330
+ bmp4 = Bitmap.loadb64(
331
+ "IRNGwDAAAAAAAAAG0AcBRALAIAAAAAIQEwAIADEBk4ECQJjgWGwGAwGAwGA/3+/4BJsBgMBgMBgMBgMBgMBgMCAn8CVUAgEBAz+CF8FRoGAQM/g5fAwyDN8KX4YBwYDgzfDV+Bh8MwwAgEBEC+Eh8MkwA/3+AH+/4GfxRJhJtAtSBn8XLoqwQLWgGPCZ+NWsC2o/ZwmfjsXCNeRWUGb5A/wk5h//I3+SkEDP4mRyZPk7ND5+LKEpT5U0xWalg/LR9gMCMY0u5g==")
332
+ bmp5 = Bitmap.loadb64(
333
+ "IRNGwDAAAAAAAAAG0AcBRALAIAAAAAIQEwAIADEBk4ECQJjgWGwGAwGAwGAAAAgAAAEAAAAgAAAEAAAAgAAAEAAICXQKjgWmgEAgEAgEAgEAgEAgEAgEAgEAgEAgICfQVAgutAwB/v9/v9/v9/v9/v9/v9/v9/v+AhcFEIGHwMwg0/BIOBh8GD4OUwYPgkNDMyDB8R0IYHwwPh4fDA+IQ0PD4kHwwPiofGJ+JB8MD4xnxgPiQfH1OMB8SD49nx4PkhnKLmV6cltpIDSoLAEkmZeBSu0lQMwGAwGBANiXd8CqQA==")
334
+ @iml << bmp1
335
+ @iml << bmp2
336
+ @iml << bmp3
337
+ @iml << bmp4
338
+ @iml << bmp5
339
+
340
+ # @im = Imagelist.fromfile('../../libtests/imagetest.iml')
341
+ @im = Imagelist.loadb64 "JJMAIBAoAAwAAgACAACAAf7/f7/AsAYoBQkImnYAAAAACAIEAgRRAMAgQEAEEBQADAwCA2QEgQoAAAAAAAABANhAAAAICB6CAQEAc4BoQCwADAYDAACAgEiAH+AAA/4LoP9/wBzgIBALCEAMFH4MeIhEIhEIiC4MHv4VxIgZjMZjMcQmPhVKi0HAhGCD8MpUeuIIPw5pRb7gg/EGlHr9cQoyiNfFNNFvt9vt9wwPiksj1+v1+v4cHxaWRb7iAfGGkEIiNqMSL41VgiKF8b6o0pR3fkIJBkOP58g75EHyMvkifJW+TQ8d8RmMAAAJBCoiQgkhhR/FAGBAMghJCCyGFHcYAYIASCFRchBJDCwQFkEKj5CCSGFggNIISQgshhYIDSCEkILIYWCA8gg5CAJlNzLwkMA+pDAw4FkELIQBMp+aeEhgFUr4FBTADkELIQBMphAJAAIt9opVKqbuEZxQRIIIAACQgCZTIATMAgFUqlUoJ2Hz4wTKZTKZSE+sID/0ADBMCEYEAqqff9CIoICwYvoQKmaJQgqEF9EBYP4gAAQohIRNH1HZIBA0drANJAwDR2+lSNL4KYQUs0D9LtAfTDQD0y0AdNNIImwMFD8EC0e8agZv98wCEOsBBEfAYSmMNMk6lhVQhqjCAA+AA+AA/AGIHgAHgAHwEAA4AA4AA8BgAGAAGAAHAgAAgAAgAAwKAqyHAweB04XAAfR7/R7/RgzQAfrNC/AC/D/WiF/AB+D+DQQBfgBg4E839AIN7v8AgA=="
342
+ @bm = Bitmap.fromfile('../../libtests/test24bits.bmp')
343
+ @mm = Bitmap.fromfile('../../libtests/test24bitsmask.bmp')
344
+ # @im2 = Imagelist.new(16, 16, ILC_COLOR32|ILC_MASK) # << [@bm, @mm]
345
+ # @bmp2 = Bitmap.fromfile('E:/Users/yukio/hg/wrb/lib/libtests/img24bit.bmp')
346
+ # @bmpdelta = Bitmap.fromfile('E:/Users/yukio/hg/wrb/lib/libtests/imgdelta.bmp')
347
+ # @maskdelta = Bitmap.fromfile('E:/Users/yukio/hg/wrb/lib/libtests/imgdeltamaskmono.bmp')
348
+ @bmpdelta = Bitmap.fromfile('../../libtests/imgdelta.bmp')
349
+ @maskdelta = Bitmap.fromfile('../../libtests/imgdeltamask.bmp')
350
+ @maskdelta2 = @bmpdelta.to_maskimage
351
+
352
+ # @im2.add @bm, @bm.to_maskimage
353
+ # @im2.add @bmpdelta, @maskdelta2
354
+ #
355
+ # @iml[0].replace(@bm, @bm.to_maskimage)
356
+ @im[0].replace(@bm)
357
+ # @iml.replace(1, @bmpdelta, @maskdelta2)
358
+ @im.replace(1, @bmpdelta)
359
+ end
360
+
361
+ def self_paint(cv)
362
+ # cv.SetBrush(0xff0000)
363
+ # cv.Rectangle(0, 0, 300, 300)
364
+ @im.each_with_index{|i, idx| i.draw(cv, 10+idx*20, 10)}
365
+ # cv.DrawImagelist(@im, 0, 10, 10)
366
+ # cv.DrawImagelist(@im, 1, 30, 10)
367
+ # cv.DrawImagelist(@im, 2, 50, 10)
368
+ # cv.DrawImagelist(@im, 3, 70, 10)
369
+ cv.DrawIcon(@im[3].icon, 90, 10)
370
+
371
+ cv.DrawImagelist(_.image16, 0, 10, 50)
372
+ cv.DrawImagelist(_.image16, 1, 30, 50)
373
+ cv.DrawImagelist(_.image16, 2, 50, 50)
374
+ cv.DrawImagelist(_.image16, 3, 70, 50)
375
+ cv.DrawImagelist(_.image16, 4, 90, 50)
376
+
377
+ # cv.DrawImagelist(@im2, 0, 10, 80)
378
+ # cv.DrawImagelist(@im2, 1, 30, 80)
379
+
380
+ end
381
+
382
+ def btdump_clicked(*)
383
+ dpp Dir.pwd
384
+ @im.savefile('../../libtests/imagetest.iml')
385
+ end
386
+
387
+ def btload_clicked(*)
388
+ @im = Imagelist.fromfile('../../libtests/imagetest.iml')
389
+ refresh
390
+ end
391
+
392
+ self.start
393
+ end
394
+
395
+ end if $0 == __FILE__
396
+