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
tags() click to toggle source
# File lib/file_data/formats/exif/ordinal_ifd.rb, line 16
def tags
  Enumerator.new do |e|
    tags_enum.each { |tag_id| process_tag(e, tag_id) }
  end
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