exerb 6.0.1

Sign up to get free protection for your applications and to get access to all the features.
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
+ #==============================================================================#