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.
- checksums.yaml +7 -0
- data/README +28 -0
- data/Rakefile +66 -0
- data/bin/wrb +41 -0
- data/bin/wrb.bat +6 -0
- data/ext/rwin/aatree.c +192 -0
- data/ext/rwin/aatree.h +55 -0
- data/ext/rwin/extconf.rb +47 -0
- data/ext/rwin/rw_api.c +2058 -0
- data/ext/rwin/rw_devices.c +215 -0
- data/ext/rwin/rw_gdiplus.h +278 -0
- data/ext/rwin/rw_graphics.c +1583 -0
- data/ext/rwin/rw_resources.c +1988 -0
- data/ext/rwin/rw_ubfuncs.c +281 -0
- data/ext/rwin/rw_windows.c +1936 -0
- data/ext/rwin/rwin.c +451 -0
- data/ext/rwin/rwin.h +442 -0
- data/lib/rwin.rb +820 -0
- data/lib/wrb.rb +20 -0
- data/lib/wrb/applications/frmdesigner/angle.cur +0 -0
- data/lib/wrb/applications/frmdesigner/angle2.cur +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Button.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Button.rb +34 -0
- data/lib/wrb/applications/frmdesigner/controls/Checkbox.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Checkbox.rb +10 -0
- data/lib/wrb/applications/frmdesigner/controls/Combobox.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Combobox.rb +88 -0
- data/lib/wrb/applications/frmdesigner/controls/ComboboxEx.rb +97 -0
- data/lib/wrb/applications/frmdesigner/controls/Comboboxex.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/DateTimePicker.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/DateTimePicker.rb +11 -0
- data/lib/wrb/applications/frmdesigner/controls/Edit.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Edit.rb +8 -0
- data/lib/wrb/applications/frmdesigner/controls/Groupbox.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Groupbox.rb +9 -0
- data/lib/wrb/applications/frmdesigner/controls/Hotkeyctrl.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Hotkeyctrl.rb +9 -0
- data/lib/wrb/applications/frmdesigner/controls/Imagelist.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Imagelist.rb +115 -0
- data/lib/wrb/applications/frmdesigner/controls/Listbox.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Listbox.rb +77 -0
- data/lib/wrb/applications/frmdesigner/controls/Listview.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Listview.rb +157 -0
- data/lib/wrb/applications/frmdesigner/controls/Menu.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Menu.rb +198 -0
- data/lib/wrb/applications/frmdesigner/controls/Menubar.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Menubar.rb +9 -0
- data/lib/wrb/applications/frmdesigner/controls/MonthCalender.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Monthcalender.rb +9 -0
- data/lib/wrb/applications/frmdesigner/controls/Panel.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Panel.rb +30 -0
- data/lib/wrb/applications/frmdesigner/controls/Progressbar.rb +10 -0
- data/lib/wrb/applications/frmdesigner/controls/Radiobutton.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Radiobutton.rb +13 -0
- data/lib/wrb/applications/frmdesigner/controls/Rebar.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Rebar.rb +162 -0
- data/lib/wrb/applications/frmdesigner/controls/Splitter.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Splitter.rb +66 -0
- data/lib/wrb/applications/frmdesigner/controls/Static.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Static.rb +9 -0
- data/lib/wrb/applications/frmdesigner/controls/Statusbar.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Statusbar.rb +103 -0
- data/lib/wrb/applications/frmdesigner/controls/Tabctrl.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Tabctrl.rb +136 -0
- data/lib/wrb/applications/frmdesigner/controls/Timer.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Timer.rb +36 -0
- data/lib/wrb/applications/frmdesigner/controls/Toolbar.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Toolbar.rb +165 -0
- data/lib/wrb/applications/frmdesigner/controls/Trackbar.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Trackbar.rb +34 -0
- data/lib/wrb/applications/frmdesigner/controls/Treeview.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Treeview.rb +107 -0
- data/lib/wrb/applications/frmdesigner/controls/Updown.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Updown.rb +31 -0
- data/lib/wrb/applications/frmdesigner/controls/default.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/progressbar.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/unselect.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/fddialogs.rb +87 -0
- data/lib/wrb/applications/frmdesigner/fdesign.rb +1315 -0
- data/lib/wrb/applications/frmdesigner/fdmodules.rb +1394 -0
- data/lib/wrb/applications/frmdesigner/fdparseform.rb +197 -0
- data/lib/wrb/applications/frmdesigner/img13.bmp +0 -0
- data/lib/wrb/base.rb +1294 -0
- data/lib/wrb/combocommon.rb +77 -0
- data/lib/wrb/commctrlconst.rb +139 -0
- data/lib/wrb/commdlg.rb +77 -0
- data/lib/wrb/components/animate.rb +114 -0
- data/lib/wrb/components/bitmap.rb +116 -0
- data/lib/wrb/components/button.rb +134 -0
- data/lib/wrb/components/canvas.rb +266 -0
- data/lib/wrb/components/checkbox.rb +118 -0
- data/lib/wrb/components/choosecolordlg.rb +87 -0
- data/lib/wrb/components/choosefontdlg.rb +142 -0
- data/lib/wrb/components/clipboard.rb +174 -0
- data/lib/wrb/components/combobox.rb +282 -0
- data/lib/wrb/components/comboboxex.rb +574 -0
- data/lib/wrb/components/cursor.rb +91 -0
- data/lib/wrb/components/datetimepicker.rb +197 -0
- data/lib/wrb/components/ddeclient.rb +180 -0
- data/lib/wrb/components/ddeserver.rb +131 -0
- data/lib/wrb/components/dialog.rb +228 -0
- data/lib/wrb/components/edit.rb +412 -0
- data/lib/wrb/components/font.rb +35 -0
- data/lib/wrb/components/form.rb +65 -0
- data/lib/wrb/components/groupbox.rb +122 -0
- data/lib/wrb/components/header.rb +479 -0
- data/lib/wrb/components/hotkeyctrl.rb +72 -0
- data/lib/wrb/components/icon.rb +109 -0
- data/lib/wrb/components/imagelist.rb +396 -0
- data/lib/wrb/components/inifile.rb +97 -0
- data/lib/wrb/components/listbox.rb +149 -0
- data/lib/wrb/components/listview.rb +1467 -0
- data/lib/wrb/components/menu.rb +592 -0
- data/lib/wrb/components/menubar.rb +84 -0
- data/lib/wrb/components/monthcalender.rb +164 -0
- data/lib/wrb/components/openfilenamedlg.rb +147 -0
- data/lib/wrb/components/pager.rb +199 -0
- data/lib/wrb/components/panel.rb +103 -0
- data/lib/wrb/components/picture.rb +55 -0
- data/lib/wrb/components/printdlg.rb +148 -0
- data/lib/wrb/components/printdlgex.rb +117 -0
- data/lib/wrb/components/printer.rb +97 -0
- data/lib/wrb/components/progressbar.rb +140 -0
- data/lib/wrb/components/radiobutton.rb +49 -0
- data/lib/wrb/components/rebar.rb +830 -0
- data/lib/wrb/components/registry.rb +408 -0
- data/lib/wrb/components/richedit.rb +1181 -0
- data/lib/wrb/components/savefilenamedlg.rb +27 -0
- data/lib/wrb/components/scintilla.rb +1298 -0
- data/lib/wrb/components/scrollbar.rb +239 -0
- data/lib/wrb/components/splitter.rb +494 -0
- data/lib/wrb/components/static.rb +198 -0
- data/lib/wrb/components/statusbar.rb +490 -0
- data/lib/wrb/components/tabctrl.rb +686 -0
- data/lib/wrb/components/timer.rb +117 -0
- data/lib/wrb/components/toolbar.rb +1107 -0
- data/lib/wrb/components/tooltip.rb +651 -0
- data/lib/wrb/components/trackbar.rb +298 -0
- data/lib/wrb/components/treeview.rb +845 -0
- data/lib/wrb/components/updown.rb +198 -0
- data/lib/wrb/ddeml.rb +241 -0
- data/lib/wrb/documents/animate.html +46 -0
- data/lib/wrb/documents/bitmap.html +69 -0
- data/lib/wrb/documents/button.html +78 -0
- data/lib/wrb/documents/canvas.html +137 -0
- data/lib/wrb/documents/checkbox.html +77 -0
- data/lib/wrb/documents/choosecolordlg.html +29 -0
- data/lib/wrb/documents/choosefontdlg.html +31 -0
- data/lib/wrb/documents/clipboard.html +31 -0
- data/lib/wrb/documents/combobox.html +117 -0
- data/lib/wrb/documents/comboboxex.html +139 -0
- data/lib/wrb/documents/control.html +53 -0
- data/lib/wrb/documents/cursor.html +45 -0
- data/lib/wrb/documents/datetimepicker.html +70 -0
- data/lib/wrb/documents/ddeclient.html +33 -0
- data/lib/wrb/documents/ddeserver.html +26 -0
- data/lib/wrb/documents/dialog.html +78 -0
- data/lib/wrb/documents/edit.html +169 -0
- data/lib/wrb/documents/empty.html +11 -0
- data/lib/wrb/documents/favicon.png +0 -0
- data/lib/wrb/documents/font.html +38 -0
- data/lib/wrb/documents/form.html +63 -0
- data/lib/wrb/documents/groupbox.html +57 -0
- data/lib/wrb/documents/header.html +85 -0
- data/lib/wrb/documents/hotkeyctrl.html +42 -0
- data/lib/wrb/documents/icon.html +45 -0
- data/lib/wrb/documents/imagelist.html +101 -0
- data/lib/wrb/documents/images/button.png +0 -0
- data/lib/wrb/documents/images/checkbox.png +0 -0
- data/lib/wrb/documents/images/combobox.png +0 -0
- data/lib/wrb/documents/images/comboboxex.png +0 -0
- data/lib/wrb/documents/images/datetimepicker.png +0 -0
- data/lib/wrb/documents/images/edit.png +0 -0
- data/lib/wrb/documents/images/groupbox.png +0 -0
- data/lib/wrb/documents/images/hotkeyctrl.png +0 -0
- data/lib/wrb/documents/images/listbox.png +0 -0
- data/lib/wrb/documents/images/listview.png +0 -0
- data/lib/wrb/documents/images/menu.png +0 -0
- data/lib/wrb/documents/images/menubar.png +0 -0
- data/lib/wrb/documents/images/monthcalender.png +0 -0
- data/lib/wrb/documents/images/progressbar.png +0 -0
- data/lib/wrb/documents/images/radiobutton.png +0 -0
- data/lib/wrb/documents/images/rebar.png +0 -0
- data/lib/wrb/documents/images/richedit.png +0 -0
- data/lib/wrb/documents/images/splitter.png +0 -0
- data/lib/wrb/documents/images/static.png +0 -0
- data/lib/wrb/documents/images/statusbar.png +0 -0
- data/lib/wrb/documents/images/tabctrl.png +0 -0
- data/lib/wrb/documents/images/toolbar.png +0 -0
- data/lib/wrb/documents/images/tooltip.png +0 -0
- data/lib/wrb/documents/images/trackbar.png +0 -0
- data/lib/wrb/documents/images/treeview.png +0 -0
- data/lib/wrb/documents/images/updown.png +0 -0
- data/lib/wrb/documents/index.html +155 -0
- data/lib/wrb/documents/inifile.html +36 -0
- data/lib/wrb/documents/license.txt +22 -0
- data/lib/wrb/documents/listbox.html +96 -0
- data/lib/wrb/documents/listview.html +277 -0
- data/lib/wrb/documents/make_doc.rb +596 -0
- data/lib/wrb/documents/menu.html +144 -0
- data/lib/wrb/documents/menubar.html +54 -0
- data/lib/wrb/documents/monthcalender.html +48 -0
- data/lib/wrb/documents/openfilenamedlg.html +36 -0
- data/lib/wrb/documents/pager.html +63 -0
- data/lib/wrb/documents/panel.html +32 -0
- data/lib/wrb/documents/picture.html +48 -0
- data/lib/wrb/documents/printdlg.html +35 -0
- data/lib/wrb/documents/printdlgex.html +35 -0
- data/lib/wrb/documents/printer.html +40 -0
- data/lib/wrb/documents/progressbar.html +69 -0
- data/lib/wrb/documents/radiobutton.html +51 -0
- data/lib/wrb/documents/rebar.html +143 -0
- data/lib/wrb/documents/registry.html +36 -0
- data/lib/wrb/documents/richedit.html +232 -0
- data/lib/wrb/documents/samples/editimg.bmp +0 -0
- data/lib/wrb/documents/samples/editimg.iml +0 -0
- data/lib/wrb/documents/samples/fileimg.bmp +0 -0
- data/lib/wrb/documents/samples/fileimg.iml +0 -0
- data/lib/wrb/documents/samples/sample_button.rb +21 -0
- data/lib/wrb/documents/samples/sample_checkbox.rb +18 -0
- data/lib/wrb/documents/samples/sample_combobox.rb +18 -0
- data/lib/wrb/documents/samples/sample_comboboxex.rb +23 -0
- data/lib/wrb/documents/samples/sample_datetimepicker.rb +11 -0
- data/lib/wrb/documents/samples/sample_edit.rb +25 -0
- data/lib/wrb/documents/samples/sample_groupbox.rb +19 -0
- data/lib/wrb/documents/samples/sample_hotkeyctrl.rb +12 -0
- data/lib/wrb/documents/samples/sample_listbox.rb +12 -0
- data/lib/wrb/documents/samples/sample_listview.rb +32 -0
- data/lib/wrb/documents/samples/sample_menu.rb +21 -0
- data/lib/wrb/documents/samples/sample_menubar.rb +23 -0
- data/lib/wrb/documents/samples/sample_monthcalender.rb +11 -0
- data/lib/wrb/documents/samples/sample_progressbar.rb +14 -0
- data/lib/wrb/documents/samples/sample_radiobutton.rb +14 -0
- data/lib/wrb/documents/samples/sample_rebar.rb +25 -0
- data/lib/wrb/documents/samples/sample_richedit.rb +60 -0
- data/lib/wrb/documents/samples/sample_splitter.rb +33 -0
- data/lib/wrb/documents/samples/sample_static.rb +15 -0
- data/lib/wrb/documents/samples/sample_statusbar.rb +17 -0
- data/lib/wrb/documents/samples/sample_tabctrl.rb +19 -0
- data/lib/wrb/documents/samples/sample_toolbar.rb +29 -0
- data/lib/wrb/documents/samples/sample_tooltip.rb +50 -0
- data/lib/wrb/documents/samples/sample_trackbar.rb +30 -0
- data/lib/wrb/documents/samples/sample_treeview.rb +19 -0
- data/lib/wrb/documents/samples/sample_updown.rb +18 -0
- data/lib/wrb/documents/samples/sampleimg16.iml +0 -0
- data/lib/wrb/documents/samples/sampleimg32.iml +0 -0
- data/lib/wrb/documents/samples/samplemg16.png +0 -0
- data/lib/wrb/documents/samples/samplemg32.png +0 -0
- data/lib/wrb/documents/samples/wrb.ico +0 -0
- data/lib/wrb/documents/savefilenamedlg.html +19 -0
- data/lib/wrb/documents/scrollbar.html +60 -0
- data/lib/wrb/documents/splitter.html +96 -0
- data/lib/wrb/documents/static.html +84 -0
- data/lib/wrb/documents/statusbar.html +110 -0
- data/lib/wrb/documents/tabctrl.html +151 -0
- data/lib/wrb/documents/timer.html +43 -0
- data/lib/wrb/documents/toolbar.html +181 -0
- data/lib/wrb/documents/tooltip.html +131 -0
- data/lib/wrb/documents/trackbar.html +107 -0
- data/lib/wrb/documents/treeview.html +210 -0
- data/lib/wrb/documents/updown.html +85 -0
- data/lib/wrb/documents/wincontrol.html +258 -0
- data/lib/wrb/documents/window.html +499 -0
- data/lib/wrb/documents/wrb.css +228 -0
- data/lib/wrb/gmem.rb +26 -0
- data/lib/wrb/imecommon.rb +59 -0
- data/lib/wrb/listcommon.rb +185 -0
- data/lib/wrb/lzss.rb +126 -0
- data/lib/wrb/scrollinfo.rb +142 -0
- data/lib/wrb/toplevelcommon.rb +634 -0
- 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
|
+
|