Class: Ocran::EdIcon::IconFile

Inherits:
IconHeader
  • Object
show all
Defined in:
lib/ocran/ed_icon.rb

Instance Method Summary collapse

Constructor Details

#initialize(icon_filename) ⇒ IconFile

Returns a new instance of IconFile.



59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/ocran/ed_icon.rb', line 59

def initialize(icon_filename)
  @data = File.binread(icon_filename)
  super(Fiddle::Pointer.to_ptr(@data))

  entries_end = IconHeader.size + self.ImageCount * IconDirectoryEntry.size
  if entries_end > @data.bytesize
    raise "Icon file too small for declared ImageCount"
  end

  entries.each_with_index do |entry, i|
    if entry.ImageOffset + entry.ImageSize > @data.bytesize
      raise "Icon entry #{i} exceeds file bounds"
    end
  end
end

Instance Method Details

#entriesObject



75
76
77
# File 'lib/ocran/ed_icon.rb', line 75

def entries
  IconDirectoryEntry.new(self.tail).take(self.ImageCount)
end