exerb 6.0.1

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 (179) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +8 -0
  3. data/ChangeLog.ja.rd +305 -0
  4. data/README.en.txt +12 -0
  5. data/README.ja.html +143 -0
  6. data/README.ja.txt +6 -0
  7. data/README.md +50 -0
  8. data/Rakefile +205 -0
  9. data/bin/exerb +185 -0
  10. data/bin/mkexy +47 -0
  11. data/doc/LGPL +513 -0
  12. data/doc/class.ja.html +92 -0
  13. data/doc/command.ja.html +109 -0
  14. data/doc/core.ja.html +72 -0
  15. data/doc/example.ja.html +89 -0
  16. data/doc/faq.ja.html +59 -0
  17. data/doc/inside.ja.rd +404 -0
  18. data/doc/license.ja.html +62 -0
  19. data/doc/logo.gif +0 -0
  20. data/doc/misc.ja.html +72 -0
  21. data/doc/navi.gif +0 -0
  22. data/doc/recipe.ja.html +317 -0
  23. data/doc/style.css +187 -0
  24. data/doc/tutorial.ja.html +182 -0
  25. data/example/Makefile +54 -0
  26. data/example/cat_n.rb +14 -0
  27. data/example/exception.rb +9 -0
  28. data/example/ext/Win32API.so +0 -0
  29. data/example/ext/swin.so +0 -0
  30. data/example/msgbox.rb +14 -0
  31. data/example/rubytk.rb +22 -0
  32. data/example/runtime.ico +0 -0
  33. data/example/runtime.rb +19 -0
  34. data/example/vr/clipboard.rb +106 -0
  35. data/example/vr/compat/rubycompat.rb +18 -0
  36. data/example/vr/compat/vrcomctl.rb +12 -0
  37. data/example/vr/compat/vrcontrol.rb +50 -0
  38. data/example/vr/compat/vrmmedia.rb +24 -0
  39. data/example/vr/contrib/inifile.rb +116 -0
  40. data/example/vr/contrib/msgboxconst.rb +55 -0
  41. data/example/vr/contrib/toolbar.rb +371 -0
  42. data/example/vr/contrib/vrctlcolor.rb +110 -0
  43. data/example/vr/contrib/vrhotkey.rb +35 -0
  44. data/example/vr/contrib/vrlistviewex.rb +71 -0
  45. data/example/vr/contrib/vrstdscrollbar.rb +414 -0
  46. data/example/vr/contrib/vrwincomponent.rb +54 -0
  47. data/example/vr/dragdropformat.rb +209 -0
  48. data/example/vr/rscutil.rb +168 -0
  49. data/example/vr/sysmod.rb +249 -0
  50. data/example/vr/vractivex.rb +56 -0
  51. data/example/vr/vrclipboard.rb +53 -0
  52. data/example/vr/vrcomctl.rb +1819 -0
  53. data/example/vr/vrcontrol.rb +1374 -0
  54. data/example/vr/vrdde.rb +623 -0
  55. data/example/vr/vrddrop.rb +190 -0
  56. data/example/vr/vrdialog.rb +406 -0
  57. data/example/vr/vrhandler.rb +195 -0
  58. data/example/vr/vrlayout.old.rb +209 -0
  59. data/example/vr/vrlayout.rb +173 -0
  60. data/example/vr/vrlayout2.rb +340 -0
  61. data/example/vr/vrmargin.rb +141 -0
  62. data/example/vr/vrmgdlayout.rb +381 -0
  63. data/example/vr/vrmmedia.rb +287 -0
  64. data/example/vr/vrolednd.rb +192 -0
  65. data/example/vr/vrowndraw.rb +108 -0
  66. data/example/vr/vrrichedit.rb +366 -0
  67. data/example/vr/vrtimer.rb +148 -0
  68. data/example/vr/vrtooltip.rb +273 -0
  69. data/example/vr/vrtray.rb +143 -0
  70. data/example/vr/vrtvitem.rb +118 -0
  71. data/example/vr/vrtwopane.rb +223 -0
  72. data/example/vr/vruby.rb +1051 -0
  73. data/example/vr/winconst.rb +158 -0
  74. data/example/vruby.rb +38 -0
  75. data/exerb.gemspec +26 -0
  76. data/extconf.rb +7 -0
  77. data/lib/exerb/archive.rb +143 -0
  78. data/lib/exerb/config.rb +51 -0
  79. data/lib/exerb/error.rb +15 -0
  80. data/lib/exerb/executable.rb +68 -0
  81. data/lib/exerb/file_table.rb +189 -0
  82. data/lib/exerb/mkexy.rb +81 -0
  83. data/lib/exerb/name_table.rb +120 -0
  84. data/lib/exerb/recipe.rb +465 -0
  85. data/lib/exerb/resource.rb +190 -0
  86. data/lib/exerb/resource/base.rb +29 -0
  87. data/lib/exerb/resource/binary.rb +31 -0
  88. data/lib/exerb/resource/dialog.rb +30 -0
  89. data/lib/exerb/resource/group_icon.rb +85 -0
  90. data/lib/exerb/resource/icon.rb +52 -0
  91. data/lib/exerb/resource/version_info.rb +155 -0
  92. data/lib/exerb/resource_library.rb +120 -0
  93. data/lib/exerb/utility.rb +95 -0
  94. data/lib/exerb/utility2.rb +122 -0
  95. data/lib/exerb/version.rb +13 -0
  96. data/lib/exerb/win32/const/resource.rb +51 -0
  97. data/lib/exerb/win32/icon_file.rb +78 -0
  98. data/lib/exerb/win32/pe_file.rb +59 -0
  99. data/lib/exerb/win32/resource_directory.rb +105 -0
  100. data/lib/exerb/win32/resource_directory_root.rb +67 -0
  101. data/lib/exerb/win32/resource_entry.rb +98 -0
  102. data/lib/exerb/win32/struct/base.rb +43 -0
  103. data/lib/exerb/win32/struct/icon_dir_entry.rb +83 -0
  104. data/lib/exerb/win32/struct/icon_header.rb +43 -0
  105. data/lib/exerb/win32/struct/icon_res_entry.rb +48 -0
  106. data/lib/exerb/win32/struct/image_dos_header.rb +73 -0
  107. data/lib/exerb/win32/struct/image_file_header.rb +47 -0
  108. data/lib/exerb/win32/struct/image_nt_headers32.rb +53 -0
  109. data/lib/exerb/win32/struct/image_optional_header32.rb +107 -0
  110. data/lib/exerb/win32/struct/image_resource_data_entry.rb +45 -0
  111. data/lib/exerb/win32/struct/image_resource_directory.rb +47 -0
  112. data/lib/exerb/win32/struct/image_resource_directory_entry.rb +72 -0
  113. data/lib/exerb/win32/struct/image_section_header.rb +53 -0
  114. data/lib/exerb/win32/struct/version_info_block.rb +75 -0
  115. data/lib/exerb/win32/struct/vs_fixed_file_info.rb +62 -0
  116. data/src/exerb/cui.c +48 -0
  117. data/src/exerb/default.rb +1 -0
  118. data/src/exerb/exerb.c +877 -0
  119. data/src/exerb/exerb.h +92 -0
  120. data/src/exerb/gui.c +176 -0
  121. data/src/exerb/module.c +138 -0
  122. data/src/exerb/module.h +7 -0
  123. data/src/exerb/patch.c +27 -0
  124. data/src/exerb/resource.h +22 -0
  125. data/src/exerb/resource.rc +121 -0
  126. data/src/exerb/ruby.ico +0 -0
  127. data/src/exerb/utility.c +263 -0
  128. data/src/exerb/utility.h +33 -0
  129. data/test/alltests.rb +16 -0
  130. data/test/test-argv.rb +26 -0
  131. data/test/test-argv/test-argv.rb +9 -0
  132. data/test/test-argv/test-argv.ret +1 -0
  133. data/test/test-dollarzero.rb +26 -0
  134. data/test/test-dollarzero/test-dollarzero.rb +10 -0
  135. data/test/test-dollarzero/test-dollarzero.ret +2 -0
  136. data/test/test-dot.rb +26 -0
  137. data/test/test-dot/dot.dot.dot.rb +9 -0
  138. data/test/test-dot/dot.dot.rb +9 -0
  139. data/test/test-dot/test-dot.rb +13 -0
  140. data/test/test-dot/test-dot.ret +5 -0
  141. data/test/test-exitcode.rb +28 -0
  142. data/test/test-exitcode/test-exitcode.rb +9 -0
  143. data/test/test-kcode.rb +43 -0
  144. data/test/test-kcode/euc.rb +10 -0
  145. data/test/test-kcode/euc.ret +2 -0
  146. data/test/test-kcode/none.rb +10 -0
  147. data/test/test-kcode/none.ret +2 -0
  148. data/test/test-kcode/sjis.rb +10 -0
  149. data/test/test-kcode/sjis.ret +2 -0
  150. data/test/test-kcode/utf8.rb +10 -0
  151. data/test/test-kcode/utf8.ret +2 -0
  152. data/test/test-loadpath.rb +24 -0
  153. data/test/test-loadpath/test-loadpath.rb +9 -0
  154. data/test/test-nest.rb +18 -0
  155. data/test/test-nest/foo.rb +1 -0
  156. data/test/test-nest/foo/bar.rb +2 -0
  157. data/test/test-nest/foo/foo.rb +1 -0
  158. data/test/test-nest/test-nest.rb +1 -0
  159. data/test/test-nest/test-nest.ret +1 -0
  160. data/test/test-preload.rb +24 -0
  161. data/test/test-preload/test-preload.rb +9 -0
  162. data/test/test-regexp.rb +26 -0
  163. data/test/test-regexp/test-regexp.rb +23 -0
  164. data/test/test-regexp/test-regexp.ret +13 -0
  165. data/test/test-require1.rb +26 -0
  166. data/test/test-require1/require1.rb +9 -0
  167. data/test/test-require1/require2.rb +9 -0
  168. data/test/test-require1/require3.rb +9 -0
  169. data/test/test-require1/require4.rb +9 -0
  170. data/test/test-require1/require5.rb +9 -0
  171. data/test/test-require1/require6.rb +9 -0
  172. data/test/test-require1/test-require1.rb +41 -0
  173. data/test/test-require1/test-require1.ret +27 -0
  174. data/test/test-socket.rb +26 -0
  175. data/test/test-socket/test-socket.rb +7 -0
  176. data/test/test-socket/test-socket.ret +1 -0
  177. data/test/testcase.rb +66 -0
  178. data/vendor/mkexports.rb +167 -0
  179. metadata +352 -0
@@ -0,0 +1,59 @@
1
+
2
+ #==============================================================================#
3
+ # $Id: pe_file.rb,v 1.5 2005/04/17 15:56:25 yuya Exp $
4
+ #==============================================================================#
5
+
6
+ require 'stringio'
7
+ require 'exerb/win32/struct/image_dos_header'
8
+ require 'exerb/win32/struct/image_nt_headers32'
9
+ require 'exerb/win32/struct/image_section_header'
10
+
11
+ #==============================================================================#
12
+
13
+ module Exerb
14
+ module Win32
15
+ end # Win32
16
+ end # Exerb
17
+
18
+ #==============================================================================#
19
+
20
+ class Exerb::Win32::PeFile
21
+
22
+ def initialize
23
+ @dos_header = nil
24
+ @nt_headers = nil
25
+ @sections = nil
26
+ end
27
+
28
+ attr_accessor :dos_header, :nt_headers, :sections
29
+
30
+ def self.read(io)
31
+ return self.new.read(io)
32
+ end
33
+
34
+ def self.new_from_binary(bin)
35
+ return self.read(StringIO.new(bin))
36
+ end
37
+
38
+ def self.new_from_file(filepath)
39
+ return File.open(filepath, 'rb') { |file| self.read(file) }
40
+ end
41
+
42
+ def read(io)
43
+ @dos_header = Exerb::Win32::Struct::ImageDosHeader.read(io)
44
+ io.seek(-@dos_header.size, IO::SEEK_CUR)
45
+ io.seek(@dos_header.offset_to_new_header, IO::SEEK_CUR)
46
+ @nt_headers = Exerb::Win32::Struct::ImageNtHeaders32.read(io)
47
+ @sections = (1..@nt_headers.file_header.number_of_sections).collect { Exerb::Win32::Struct::ImageSectionHeader.read(io) }
48
+
49
+ return self
50
+ end
51
+
52
+ def find_section(name)
53
+ return @sections.find { |section| section.name == name }
54
+ end
55
+
56
+ end # Exerb::Win32::PeFile
57
+
58
+ #==============================================================================#
59
+ #==============================================================================#
@@ -0,0 +1,105 @@
1
+
2
+ #==============================================================================#
3
+ # $Id: resource_directory.rb,v 1.7 2005/04/17 15:56:25 yuya Exp $
4
+ #==============================================================================#
5
+
6
+ require 'exerb/win32/struct/image_resource_directory'
7
+ require 'exerb/win32/struct/image_resource_directory_entry'
8
+
9
+ #==============================================================================#
10
+
11
+ module Exerb
12
+ module Win32
13
+ end # Win32
14
+ end # Exerb
15
+
16
+ #==============================================================================#
17
+
18
+ class Exerb::Win32::ResourceDirectory
19
+
20
+ def initialize(name)
21
+ @name = name
22
+ @entries = []
23
+
24
+ yield(self) if block_given?
25
+ end
26
+
27
+ attr_accessor :name, :entries
28
+
29
+ def self.read(io, base, name = nil)
30
+ return self.new(nil).read(io, base, name)
31
+ end
32
+
33
+ def <<(entry)
34
+ @entries << entry
35
+ end
36
+
37
+ def serialize(elements, level)
38
+ elements[0][level] = [] if elements[0][level].nil?
39
+ elements[0][level] << self
40
+ @entries.each { |entry| elements[0][level] << Exerb::Win32::ResourceDirectory::Entry.new(entry) }
41
+ @entries.each { |entry| entry.serialize(elements, level + 1) }
42
+ return elements
43
+ end
44
+
45
+ def pack(table, reloc, base)
46
+ dir = Exerb::Win32::Struct::ImageResourceDirectory.new
47
+ dir.characteristics = 0
48
+ dir.time_date_stamp = 0
49
+ dir.major_version = 0
50
+ dir.minor_version = 0
51
+ dir.number_of_name_entries = 0
52
+ dir.number_of_id_entries = @entries.size
53
+
54
+ return dir.pack
55
+ end
56
+
57
+ def read(io, base, name)
58
+ dir = Exerb::Win32::Struct::ImageResourceDirectory.read(io)
59
+
60
+ @name = name
61
+ @entries = (1..(dir.number_of_name_entries + dir.number_of_id_entries)).collect {
62
+ Exerb::Win32::Struct::ImageResourceDirectoryEntry.read(io)
63
+ }.collect { |entry|
64
+ if entry.data_is_directory?
65
+ io.seek(entry.offset_to_directory)
66
+ Exerb::Win32::ResourceDirectory.read(io, base, entry.name)
67
+ else
68
+ io.seek(entry.offset_to_data)
69
+ Exerb::Win32::ResourceEntry.read(io, base, entry.name)
70
+ end
71
+ }
72
+
73
+ return self
74
+ end
75
+
76
+ end # Exerb::Win32::ResourceDirectory
77
+
78
+ #==============================================================================#
79
+
80
+ class Exerb::Win32::ResourceDirectory::Entry
81
+
82
+ def initialize(entry)
83
+ @entry = entry
84
+ end
85
+
86
+ attr_accessor :entry
87
+
88
+ def pack(table, reloc, base)
89
+ entry = Exerb::Win32::Struct::ImageResourceDirectoryEntry.new
90
+
91
+ if @entry.kind_of?(Exerb::Win32::ResourceDirectory)
92
+ entry.name = @entry.name
93
+ entry.offset_to_directory = table[@entry]
94
+ else
95
+ entry.name = @entry.lang
96
+ entry.offset_to_data = table[@entry]
97
+ end
98
+
99
+ return entry.pack
100
+ end
101
+
102
+ end # Exerb::Win32::ResourceDirectory::Entry
103
+
104
+ #==============================================================================#
105
+ #==============================================================================#
@@ -0,0 +1,67 @@
1
+
2
+ #==============================================================================#
3
+ # $Id: resource_directory_root.rb,v 1.6 2005/04/17 15:56:25 yuya Exp $
4
+ #==============================================================================#
5
+
6
+ require 'exerb/utility'
7
+ require 'exerb/win32/resource_directory'
8
+
9
+ #==============================================================================#
10
+
11
+ module Exerb
12
+ module Win32
13
+ end # Win32
14
+ end # Exerb
15
+
16
+ #==============================================================================#
17
+
18
+ class Exerb::Win32::ResourceDirectoryRoot < Exerb::Win32::ResourceDirectory
19
+
20
+ def initialize
21
+ super(0)
22
+ end
23
+
24
+ def self.read(io, base)
25
+ return self.new.read(io, base, 0)
26
+ end
27
+
28
+ def serial
29
+ return self.serialize([[], [], []], 0)
30
+ end
31
+
32
+ def pack_all(base, reloc_table = [])
33
+ table = Hash.new(0)
34
+ reloc = {}
35
+ address = 0
36
+ buffer = ''
37
+
38
+ self.serial.each { |entries|
39
+ entries.flatten!
40
+ entries.compact!
41
+ }.each { |entries|
42
+ entries.each { |entry|
43
+ table[entry] = address
44
+ address += entry.pack(table, {}, base).size
45
+ }
46
+ address += (address % 16 == 0 ? 0 : 16 - address % 16)
47
+ }.each { |entries|
48
+ entries.each { |entry|
49
+ buffer << entry.pack(table, reloc, base)
50
+ }
51
+ buffer = Exerb::Utility.alignment16(buffer)
52
+ }
53
+
54
+ reloc.keys.each { |obj|
55
+ reloc[obj].each { |delta|
56
+ reloc_table << table[obj] + delta
57
+ }
58
+ }
59
+ reloc_table.sort!
60
+
61
+ return buffer
62
+ end
63
+
64
+ end # Exerb::Win32::ResourceDirectoryRoot
65
+
66
+ #==============================================================================#
67
+ #==============================================================================#
@@ -0,0 +1,98 @@
1
+
2
+ #==============================================================================#
3
+ # $Id: resource_entry.rb,v 1.8 2005/04/17 15:56:25 yuya Exp $
4
+ #==============================================================================#
5
+
6
+ require 'exerb/win32/struct/image_resource_data_entry'
7
+
8
+ #==============================================================================#
9
+
10
+ module Exerb
11
+ module Win32
12
+ end # Win32
13
+ end # Exerb
14
+
15
+ #==============================================================================#
16
+
17
+ class Exerb::Win32::ResourceEntry
18
+
19
+ def initialize(entry_data, lang = nil)
20
+ @entry_data = Exerb::Win32::ResourceEntry::Data.new(entry_data)
21
+ @lang = lang
22
+ end
23
+
24
+ attr_accessor :entry_data, :lang
25
+
26
+ def self.read(io, base, lang)
27
+ return self.new(nil).read(io, base, lang)
28
+ end
29
+
30
+ def serialize(elements, level)
31
+ elements[1][level] = [] if elements[1][level].nil?
32
+ elements[1][level] << self
33
+ @entry_data.serialize(elements, level + 1)
34
+ return elements
35
+ end
36
+
37
+ def pack(table, reloc, base)
38
+ data = Exerb::Win32::Struct::ImageResourceDataEntry.new
39
+ data.offset_to_data = table[@entry_data] + base
40
+ data.size_of_data = @entry_data.size
41
+ data.code_page = 0x0000
42
+ data.reserved = 0x0000
43
+
44
+ reloc[self] ||= []
45
+ reloc[self] << 0
46
+
47
+ return data.pack
48
+ end
49
+
50
+ def read(io, base, lang)
51
+ data = Exerb::Win32::Struct::ImageResourceDataEntry.read(io)
52
+ io.seek(data.offset_to_data - base)
53
+
54
+ @entry_data = Exerb::Win32::ResourceEntry::Data.read(io, base, data.size_of_data)
55
+ @lang = lang
56
+
57
+ return self
58
+ end
59
+
60
+ end # Exerb::Win32::ResourceEntry
61
+
62
+ #==============================================================================#
63
+
64
+ class Exerb::Win32::ResourceEntry::Data
65
+
66
+ def initialize(data)
67
+ @data = data
68
+ end
69
+
70
+ attr_accessor :data
71
+
72
+ def self.read(io, base, size)
73
+ return self.new(nil).read(io, base, size)
74
+ end
75
+
76
+ def serialize(elements, level)
77
+ elements[2][level] = [] if elements[2][level].nil?
78
+ elements[2][level] << self
79
+ return elements
80
+ end
81
+
82
+ def pack(table, reloc, base)
83
+ return Exerb::Utility.alignment16(@data)
84
+ end
85
+
86
+ def size
87
+ return @data.size
88
+ end
89
+
90
+ def read(io, base, size)
91
+ @data = io.read(size)
92
+ return self
93
+ end
94
+
95
+ end # Exerb::Win32::ResourceEntry::Data
96
+
97
+ #==============================================================================#
98
+ #==============================================================================#
@@ -0,0 +1,43 @@
1
+
2
+ #==============================================================================#
3
+ # $Id: base.rb,v 1.4 2005/04/17 15:56:25 yuya Exp $
4
+ #==============================================================================#
5
+
6
+ module Exerb
7
+ module Win32
8
+ module Struct
9
+ end # Struct
10
+ end # Win32
11
+ end # Exerb
12
+
13
+ #==============================================================================#
14
+
15
+ class Exerb::Win32::Struct::Base
16
+
17
+ def initialize
18
+ @position = nil
19
+ end
20
+
21
+ attr_reader :position
22
+
23
+ def self.read(io)
24
+ return self.new.read(io)
25
+ end
26
+
27
+ def size
28
+ return self.pack.size
29
+ end
30
+
31
+ def read(io)
32
+ @position = io.pos
33
+ return self.unpack(io.read(self.size))
34
+ end
35
+
36
+ def update(str)
37
+ str[@position, self.size] = self.pack
38
+ end
39
+
40
+ end # Exerb::Win32::Struct::Base
41
+
42
+ #==============================================================================#
43
+ #==============================================================================#
@@ -0,0 +1,83 @@
1
+
2
+ #==============================================================================#
3
+ # $Id: icon_dir_entry.rb,v 1.5 2010/06/26 03:13:36 arton Exp $
4
+ #==============================================================================#
5
+
6
+ require 'exerb/win32/struct/base'
7
+
8
+ #==============================================================================#
9
+
10
+ module Exerb
11
+ module Win32
12
+ module Struct
13
+ end # Struct
14
+ end # Win32
15
+ end # Exerb
16
+
17
+ #==============================================================================#
18
+
19
+ class Exerb::Win32::Struct::IconDirEntry < Exerb::Win32::Struct::Base
20
+
21
+ FORMAT = 'CCCCSSLL'
22
+
23
+ def initialize
24
+ @width = 0
25
+ @height = 0
26
+ @color_count = 0
27
+ @reserved = 0
28
+ @planes = 0
29
+ @bit_count = 0
30
+ @bytes_in_res = 0
31
+ @image_offset = 0
32
+ end
33
+
34
+ attr_accessor :width, :height, :color_count, :reserved, :planes, :bit_count, :bytes_in_res, :image_offset
35
+
36
+ def pack
37
+ return [@width, @height, @color_count, @reserved, @planes, @bit_count, @bytes_in_res, @image_offset].pack(FORMAT)
38
+ end
39
+
40
+ def unpack(bin)
41
+ @width, @height, @color_count, @reserved, @planes, @bit_count, @bytes_in_res, @image_offset = bin.unpack(FORMAT)
42
+ return self
43
+ end
44
+
45
+ end # Exerb::Win32::Struct::IconDirEntry
46
+
47
+ #==============================================================================#
48
+
49
+ class Exerb::Win32::Struct::IconImageHeader < Exerb::Win32::Struct::Base
50
+
51
+ FORMAT = 'LllSSLLllLL'
52
+
53
+ def initialize
54
+ # This struct is identical to BITMAPINFOHEADER.
55
+
56
+ @_size = 0
57
+ @width = 0
58
+ @height = 0
59
+ @planes = 0
60
+ @bit_count = 0
61
+ @compression = 0
62
+ @size_image = 0
63
+ @xpels_per_meter = 0
64
+ @ypels_per_meter = 0
65
+ @clr_used = 0
66
+ @clr_important = 0
67
+ end
68
+
69
+ attr_accessor :_size, :width, :height, :planes, :bit_count, :compression, :size_image, :xpels_per_meter, :ypels_per_meter, :clr_used, :clr_important
70
+
71
+ def pack
72
+ return [@_size, @width, @height, @planes, @bit_count, @compression, @size_image, @xpels_per_meter, @ypels_per_meter, @clr_used, @clr_important].pack(FORMAT)
73
+ end
74
+
75
+ def unpack(bin)
76
+ @_size, @width, @height, @planes, @bit_count, @compression, @size_image, @xpels_per_meter, @ypels_per_meter, @clr_used, @clr_important = bin.unpack(FORMAT)
77
+ return self
78
+ end
79
+
80
+ end # Exerb::Win32::Struct::IconImageHeader
81
+
82
+ #==============================================================================#
83
+ #==============================================================================#