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,103 @@
1
+ # Panel is a window
2
+ require 'wrb'
3
+
4
+ module WR
5
+
6
+ # This control is a window container that can layout any controls on. (WRB original)
7
+ class Panel < WinControl
8
+ include ModParent
9
+ WinStyles = {
10
+ :disabled => WS_DISABLED,
11
+ :hscroll => WS_HSCROLL,
12
+ :vscroll => WS_VSCROLL,
13
+ :border => WS_BORDER,
14
+ :thickframe => WS_THICKFRAME
15
+ }
16
+ attr_reader :sendto
17
+
18
+ def initialize(*args)
19
+ super
20
+ @_classname = "RUBYWIN"
21
+ @_acceptable_events = {}.update(SubclassedHandlers)
22
+ register_event(WM_GETFONT, "__getfont__")
23
+ register_event(WM_SETFONT, "__setfont__", 'ii')
24
+ end
25
+
26
+ # Sets so that this panel may send the messages to the specified window.
27
+ def sendto=(win)
28
+ if @controls
29
+ raise "Already exist controls." unless @controls.empty?
30
+ def @controls.sendto=(to)
31
+ @sendto = to
32
+ end
33
+ @controls.sendto = win
34
+ class << @controls
35
+ undef :sendto=
36
+ end
37
+ else
38
+ @controls = Controls.new(self, self, win)
39
+ end
40
+ @_sendto = win
41
+ end
42
+
43
+ # Retreives a window which would be received the messages from this panel.
44
+ def sendto()
45
+ @_sendto
46
+ end
47
+
48
+ # Adds a control to this panel.
49
+ def <<(*args)
50
+ controls << args
51
+ end
52
+
53
+ protected
54
+ def _apply_options(arg)
55
+ if st=WinStyles[arg]
56
+ @_style |= st
57
+ return nil
58
+ end
59
+ super
60
+ end
61
+
62
+ private
63
+ def __setfont__(hfont, redraw)
64
+ if !@_font
65
+ @_font = Font.wraphandle(hfont) if hfont!=0
66
+ elsif @_font._hfont != hfont
67
+ @_font.dispose
68
+ @_font = Font.wraphandle(hfont)
69
+ end
70
+ end
71
+ def __getfont__()#; dpp @_font
72
+ CancelDefWindowProc(@_font && @_font.is_a?(Font) ? @_font._hfont : 0)
73
+ end
74
+ end
75
+ end
76
+
77
+ #----- For testing. This will be removed soon. ------#
78
+ module WR
79
+ class MyForm < Form
80
+ def initialize()
81
+ self.font = ['Meiryo', -12]
82
+ self.inheritfont = true
83
+ _<< Button[:button1, "Button0", 10, 10, 100, 30]
84
+ # _panel1.events = :paint
85
+ end
86
+
87
+ def created()
88
+ _<< Panel[:panel1, "", 100, 100, 200, 200, :thickframe, :font=>:parent, :inheritfont=>true]
89
+ _panel1.sendto = self
90
+ _panel1 << Button[:button1, "Button1", 10, 10, 100, 30, :margin=>[0,nil,0,nil]]
91
+ _panel1 << Button[:button1, "Button2", 10, 100, 100, 30, :margin=>[0,nil,0,nil]]
92
+ def _panel1.self_paint(cv)
93
+ cv.LineTo(*clientsize)
94
+ end
95
+ dpp _panel1.sendto
96
+ end
97
+
98
+ def button1_clicked(*)
99
+ _panel1.visible ? _panel1.hide : _panel1.show
100
+ end
101
+ self.start
102
+ end
103
+ end if __FILE__ == $0
@@ -0,0 +1,55 @@
1
+ require 'wrb'
2
+
3
+ module WR
4
+
5
+ # The very small subset of GDI+ functions, only for getting and saving sevral types of an image file.<br>
6
+ # This class is using the GDI+ Flat API functions written by C. So see `wrb/ext/rw_graphics.c' and `rw_gdiplus.h' for more information.
7
+ class Picture < RWin::Picture
8
+
9
+ =begin
10
+ following methods are defined at the super class.
11
+ :singleton_methods
12
+ self._load(str)
13
+ Loads from a string. Give a String as <i>str</i>.
14
+ self.fromfile(path)
15
+ Loads from an image file. Give a String as <i>path</i> to image file.<br>
16
+ Allowed types of image are bitmap, jpeg, png, and so on.
17
+ :instance_methods
18
+ _dump(encoder, resolution)
19
+ _himage()
20
+ Retrieves a handle of self.<br>
21
+ Returns 32/64 bits integer as it.
22
+ getproperty(index)
23
+ Retreives a property of specified index.
24
+ getpropertylist()
25
+ Retreives the property list of self.<br>
26
+ Retruens an array of integers and strings.
27
+ resolution()
28
+ Retreives the resolution of self.<br>
29
+ Returns an array of two floats as [<i>xres, yres</i>].
30
+ rotateflip(rotate_type)
31
+ Rotates and flips this image. Give an integer fore <i>rotate_type</i>.
32
+ saveto(path, encoder="image/png")
33
+ Saves to file as an image file with specified encodeing.<br>
34
+ Give a String as <i>path</i> to image file. And give a String for encoder.
35
+ size()
36
+ Retreives the image size of self.<br>
37
+ Retruns an array of two integers as [<i>width, height</i>].
38
+ thumbnail(w, h)
39
+ Retreves a small image from this image with specified size.<br>
40
+ Returns a RWin::Picture object.
41
+ to_bitmap()
42
+ Creates a new bitmap from self. Returns a RWin::Bitmap object.
43
+ to_icon()
44
+ Creates a new icon from self. Returns a RWin::Icon object.
45
+
46
+ =end
47
+
48
+ # Dumps self to a string for Marshal object with specified encoder and resolution.<br>
49
+ # Give a string as encoder such as "png" or "jpeg", and a float as resolution.
50
+ def _dump(encoder='image/png', resolution=nil)
51
+ encoder[0, 0] = 'image/' if encoder.split('/').size == 1
52
+ super(encoder, resolution)
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,148 @@
1
+ require 'wrb/commdlg'
2
+
3
+ module WR
4
+ module RC
5
+ PD_ALLPAGES = 0x0
6
+ PD_SELECTION = 0x1
7
+ PD_PAGENUMS = 0x2
8
+ PD_NOSELECTION = 0x4
9
+ PD_NOPAGENUMS = 0x8
10
+ PD_COLLATE = 0x10
11
+ PD_PRINTTOFILE = 0x20
12
+ PD_PRINTSETUP = 0x40
13
+ PD_NOWARNING = 0x80
14
+ PD_RETURNDC = 0x100
15
+ PD_RETURNIC = 0x200
16
+ PD_RETURNDEFAULT = 0x400
17
+ PD_SHOWHELP = 0x800
18
+ PD_ENABLEPRINTHOOK = 0x1000
19
+ PD_ENABLESETUPHOOK = 0x2000
20
+ PD_ENABLEPRINTTEMPLATE = 0x4000
21
+ PD_ENABLESETUPTEMPLATE = 0x8000
22
+ PD_ENABLEPRINTTEMPLATEHANDLE = 0x10000
23
+ PD_ENABLESETUPTEMPLATEHANDLE = 0x20000
24
+ PD_USEDEVMODECOPIES = 0x40000
25
+ PD_USEDEVMODECOPIESANDCOLLATE = 0x40000
26
+ PD_DISABLEPRINTTOFILE = 0x80000
27
+ PD_HIDEPRINTTOFILE = 0x100000
28
+ PD_NONETWORKBUTTON = 0x200000
29
+ PD_CURRENTPAGE = 0x400000
30
+ PD_NOCURRENTPAGE = 0x800000
31
+ PD_EXCLUSIONFLAGS = 0x1000000
32
+ PD_USELARGETEMPLATE = 0x10000000
33
+
34
+ START_PAGE_GENERAL = 0xffffffff
35
+
36
+ PD_RESULT_CANCEL = 0
37
+ PD_RESULT_PRINT = 1
38
+ PD_RESULT_APPLY = 2
39
+ end
40
+
41
+ # This dialog box enables the user to specify the properties of a particular print job.
42
+ class PrintDlg < CommonDialog
43
+
44
+ API.typealias 'HGLOBAL', 'Q'
45
+ API.typealias 'LPPRINTHOOKPROC', 'Q'
46
+ API.typealias 'LPSETUPHOOKPROC', 'Q'
47
+
48
+ PRINTDLG = API.defstruct true, "
49
+ DWORD lStructSize;
50
+ HWND hwndOwner;
51
+ HGLOBAL hDevMode;
52
+ HGLOBAL hDevNames;
53
+ HDC hDC;
54
+ DWORD Flags;
55
+ WORD nFromPage;
56
+ WORD nToPage;
57
+ WORD nMinPage;
58
+ WORD nMaxPage;
59
+ WORD nCopies;
60
+ HINSTANCE hInstance;
61
+ LPARAM lCustData;
62
+ LPPRINTHOOKPROC lpfnPrintHook;
63
+ LPSETUPHOOKPROC lpfnSetupHook;
64
+ LPCWSTR lpPrintTemplateName;
65
+ LPCWSTR lpSetupTemplateName;
66
+ HGLOBAL hPrintTemplate;
67
+ HGLOBAL hSetupTemplate;"
68
+
69
+ API.defun "PrintDlg(LPPRINTDLGEX lppd)"
70
+
71
+ attr_reader :_printdlg
72
+
73
+ def self.show(owner=nil, flags: nil, frompage: nil, topage: nil, minpage: nil, maxpage: nil, copies: nil)
74
+ pd = self.new
75
+ pd.flags = flags if flags
76
+ pd.frompage = frompage if frompage
77
+ pd.topage = topage if topage
78
+ pd.minpage = minpage if minpage
79
+ pd.maxpage = maxpage if maxpage
80
+ pd.copies = copies if copies
81
+ pd.show(owner)
82
+ end
83
+
84
+ def initialize()
85
+ @_printdlg = PRINTDLG[PRINTDLG::Size]
86
+ end
87
+
88
+ def flags()
89
+ @_printdlg.Flags
90
+ end
91
+ def flags=(f)
92
+ @_printdlg.Flags = f
93
+ end
94
+
95
+ def frompage()
96
+ @_printdlg.nFromPage
97
+ end
98
+ def frompage=(n)
99
+ @_printdlg.nFromPage = n
100
+ end
101
+
102
+ def topage()
103
+ @_printdlg.nToPage
104
+ end
105
+ def topage=(n)
106
+ @_printdlg.nToPage = n
107
+ end
108
+
109
+ def minpage()
110
+ @_printdlg.nMinPage
111
+ end
112
+ def minpage=(n)
113
+ @_printdlg.nMinPage = n
114
+ end
115
+
116
+ def maxpage()
117
+ @_printdlg.nMaxPage
118
+ end
119
+ def maxpage=(n)
120
+ @_printdlg.nMaxPage = n
121
+ end
122
+
123
+ def copies()
124
+ @_printdlg.nCopies
125
+ end
126
+ def copies=(n)
127
+ @_printdlg.nCopies = n
128
+ end
129
+
130
+ def show(owner=nil)
131
+ @_printdlg.hwndOwner = owner if owner
132
+ r = API.PrintDlg(@_printdlg)
133
+ return nil if r==0
134
+ if @_printdlg.Flags & PD_RETURNDC != 0
135
+ return @_printdlg.hdc
136
+ end
137
+ devmode = API::DEVMODE.new_from_pointer(API.GlobalLock(@_printdlg.hDevMode));
138
+ API.GlobalUnlock(@_printdlg.hDevMode);
139
+ devmode
140
+ end
141
+ end
142
+ end
143
+
144
+ module WR
145
+ dpp PrintDlg.show(flags: RC::PD_SELECTION, maxpage: 10)
146
+ # dpp PrintDlg.new.show()
147
+ end if $0==__FILE__
148
+
@@ -0,0 +1,117 @@
1
+
2
+ module WR
3
+ require_relative './printdlg' unless defined?(PrintDlg)
4
+
5
+ # Displays a Print property sheet that enables the user to specify the properties of a particular print job.
6
+ class PrintDlgEx < CommonDialog
7
+
8
+ PRINTPAGERANGE = API.defstruct "
9
+ DWORD nFromPage;
10
+ DWORD nToPage;"
11
+
12
+ API.typealias 'HPROPSHEETPAGE', 'Q'
13
+ API.typealias 'LPUNKNOWN', 'Q'
14
+
15
+ PRINTDLGEX = API.defstruct "
16
+ DWORD lStructSize;
17
+ HWND hwndOwner;
18
+ HGLOBAL hDevMode;
19
+ HGLOBAL hDevNames;
20
+ HDC hDC;
21
+ DWORD Flags;
22
+ DWORD Flags2;
23
+ DWORD ExclusionFlags;
24
+ DWORD nPageRanges;
25
+ DWORD nMaxPageRanges;
26
+ PRINTPAGERANGE *lpPageRanges;
27
+ DWORD nMinPage;
28
+ DWORD nMaxPage;
29
+ DWORD nCopies;
30
+ HINSTANCE hInstance;
31
+ LPCTSTR lpPrintTemplateName;
32
+ LPUNKNOWN lpCallback;
33
+ DWORD nPropertyPages;
34
+ HPROPSHEETPAGE *lphPropertyPages;
35
+ DWORD nStartPage;
36
+ DWORD dwResultAction;"
37
+
38
+ API.defun "PrintDlgEx(LPPRINTDLGEX lppd)"
39
+
40
+ attr_reader :_printdlg
41
+
42
+ def self.show(owner=nil, flags: nil, frompage: nil, topage: nil, minpage: nil, maxpage: nil, copies: nil)
43
+ pd = self.new
44
+ pd.flags = flags if flags
45
+ pd.frompage = frompage if frompage
46
+ pd.topage = topage if topage
47
+ pd.minpage = minpage if minpage
48
+ pd.maxpage = maxpage if maxpage
49
+ pd.copies = copies if copies
50
+ pd.show(owner)
51
+ end
52
+
53
+ def initialize()
54
+ @_printdlgex = PRINTDLGEX[PRINTDLGEX::Size]
55
+ end
56
+
57
+ def flags()
58
+ @_printdlgex.Flags
59
+ end
60
+ def flags=(f)
61
+ @_printdlgex.Flags = f
62
+ end
63
+
64
+ def frompage()
65
+ @_printdlgex.nFromPage
66
+ end
67
+ def frompage=(n)
68
+ @_printdlgex.nFromPage = n
69
+ end
70
+
71
+ def topage()
72
+ @_printdlgex.nToPage
73
+ end
74
+ def topage=(n)
75
+ @_printdlgex.nToPage = n
76
+ end
77
+
78
+ def minpage()
79
+ @_printdlgex.nMinPage
80
+ end
81
+ def minpage=(n)
82
+ @_printdlgex.nMinPage = n
83
+ end
84
+
85
+ def maxpage()
86
+ @_printdlgex.nMaxPage
87
+ end
88
+ def maxpage=(n)
89
+ @_printdlgex.nMaxPage = n
90
+ end
91
+
92
+ def copies()
93
+ @_printdlgex.nCopies
94
+ end
95
+ def copies=(n)
96
+ @_printdlgex.nCopies = n
97
+ end
98
+
99
+ def show(owner=nil)
100
+ @_printdlgex.hwndOwner = owner if owner
101
+ r = API.PrintDlgEx(@_printdlgex)
102
+ # return nil if r==0
103
+ # if @_printdlgex.Flags & PD_RETURNDC != 0
104
+ # return @_printdlgex.hdc
105
+ # end
106
+ # devmode = API::DEVMODE.new_from_pointer(API.GlobalLock(@_printdlgex.hDevMode));
107
+ # API.GlobalUnlock(@_printdlgex.hDevMode);
108
+ # devmode
109
+ end
110
+ end
111
+ end
112
+
113
+ module WR
114
+ dpp PrintDlg.show(flags: RC::PD_SELECTION, maxpage: 10)
115
+ dp "@%#x", PrintDlgEx.new.show()
116
+ end if $0==__FILE__
117
+
@@ -0,0 +1,97 @@
1
+ require 'wrb'
2
+
3
+ # wrapper of DEVMODE
4
+ module WR
5
+ # Provides an interface that allows an application to access the printer.
6
+ class Printer < RWin::Printer
7
+
8
+ =begin
9
+ Following methods are defined at the super class.
10
+ :singleton_methods
11
+ self.GetDefaultPrinter()
12
+
13
+ :instance_methods
14
+ _devmode()
15
+ _hdc()
16
+ close()
17
+ open()
18
+ print()
19
+
20
+ =end
21
+
22
+ def self.open(dev)
23
+ return nil unless dev
24
+ prt = self.new(dev)
25
+ prt.open
26
+ end
27
+
28
+ def initialize(device)
29
+ super
30
+ @_devmode = self._devmode if self._hdc==0
31
+ end
32
+
33
+ def devicename()
34
+ @_devmode.dmDeviceName.to_s
35
+ end
36
+
37
+ def scale()
38
+ @_devmode.dmScale
39
+ end
40
+ def scale=(s)
41
+ @_devmode.dmScale = s
42
+ end
43
+
44
+ def orientation()
45
+ @_devmode.dmOrientation
46
+ end
47
+ def orientation(o)
48
+ @_devmode.dmOrientation = o
49
+ end
50
+
51
+ def papersize()
52
+ @_devmode.dmPaperSize
53
+ end
54
+ def papersize=(s)
55
+ @_devmode.dmPaperSize = s
56
+ end
57
+
58
+ def paperlength()
59
+ @_devmode.dmPaperLength
60
+ end
61
+ def paperlength=(l)
62
+ @_devmode.dmPaperLength = l
63
+ end
64
+
65
+ def paperwidth()
66
+ @_devmode.dmPaperWidth
67
+ end
68
+ def paperwidth=(w)
69
+ @_devmode.dmPaperWidth = w
70
+ end
71
+
72
+ def copies()
73
+ @_devmode.dmCopies
74
+ end
75
+ def copies=(n)
76
+ @_devmode.dmCopies = n
77
+ end
78
+
79
+ end
80
+ end
81
+
82
+ module WR
83
+ # devmode = PrintDlg.show
84
+ # exit unless devmode
85
+ prt = Printer.open(PrintDlg.show)
86
+ dpp prt.papersize
87
+ prt.print("TestPage", RWin::Canvas){|cv|
88
+ cv.TextOut(100, 100, 'Page 1')
89
+ cv.SetPen(0x0000ff)
90
+ cv.LineTo(1000, 1000)
91
+ cv.TextOut(1000, 1000, 'HogeHoge123')
92
+ cv.NextPage
93
+ cv.TextOut(100, 100, 'Page 2')
94
+ cv.LineTo(100, 1000)
95
+ } if prt
96
+
97
+ end if $0==__FILE__