class FileData::OrdinalIfd
Represents either the zeroth or first ifd
Attributes
index[R]
stream[R]
Public Class Methods
new(exif_stream, index)
click to toggle source
# File lib/file_data/formats/exif/ordinal_ifd.rb, line 11 def initialize(exif_stream, index) @stream = exif_stream @index = index end
Public Instance Methods
pointer_tag?(tag_id)
click to toggle source
# File lib/file_data/formats/exif/ordinal_ifd.rb, line 30 def pointer_tag?(tag_id) ExifTags.tag_groups.key?(tag_id) end
process_extra_ifd(enumerator, tag_id)
click to toggle source
# File lib/file_data/formats/exif/ordinal_ifd.rb, line 34 def process_extra_ifd(enumerator, tag_id) seek_ifd(stream.read_tag_value) tags_enum.each { |t| yield_tag(enumerator, tag_id, t) } end
process_tag(enumerator, tag_id)
click to toggle source
# File lib/file_data/formats/exif/ordinal_ifd.rb, line 22 def process_tag(enumerator, tag_id) if pointer_tag?(tag_id) process_extra_ifd(enumerator, tag_id) else yield_tag(enumerator, :Tiff, tag_id) end end
seek_ifd(pointer_value)
click to toggle source
# File lib/file_data/formats/exif/ordinal_ifd.rb, line 43 def seek_ifd(pointer_value) stream.seek_exif(pointer_value) end
skip()
click to toggle source
# File lib/file_data/formats/exif/ordinal_ifd.rb, line 47 def skip stream.seek(tags_size(read_num_tags), IO::SEEK_CUR) end
yield_tag(enumerator, ifd_id, tag_id)
click to toggle source
# File lib/file_data/formats/exif/ordinal_ifd.rb, line 39 def yield_tag(enumerator, ifd_id, tag_id) enumerator.yield [index, ifd_id, tag_id] end