Class: FileData::OrdinalIfd
- Inherits:
-
Object
- Object
- FileData::OrdinalIfd
show all
- Includes:
- TagEnumerator
- Defined in:
- lib/file_data/formats/exif/ordinal_ifd.rb
Overview
Represents either the zeroth or first ifd
Constant Summary
TagEnumerator::TAG_RECORD_SIZE
Instance Attribute Summary collapse
Instance Method Summary
collapse
#read_num_tags, #tags_enum, #tags_size
Constructor Details
#initialize(exif_stream, index) ⇒ OrdinalIfd
Returns a new instance of OrdinalIfd.
11
12
13
14
|
# File 'lib/file_data/formats/exif/ordinal_ifd.rb', line 11
def initialize(exif_stream, index)
@stream = exif_stream
@index = index
end
|
Instance Attribute Details
#index ⇒ Object
Returns the value of attribute index.
7
8
9
|
# File 'lib/file_data/formats/exif/ordinal_ifd.rb', line 7
def index
@index
end
|
#stream ⇒ Object
Returns the value of attribute stream.
7
8
9
|
# File 'lib/file_data/formats/exif/ordinal_ifd.rb', line 7
def stream
@stream
end
|
Instance Method Details
#pointer_tag?(tag_id) ⇒ Boolean
30
31
32
|
# File 'lib/file_data/formats/exif/ordinal_ifd.rb', line 30
def pointer_tag?(tag_id)
ExifTags.tag_groups.key?(tag_id)
end
|
34
35
36
37
|
# File 'lib/file_data/formats/exif/ordinal_ifd.rb', line 34
def (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) ⇒ Object
22
23
24
25
26
27
28
|
# File 'lib/file_data/formats/exif/ordinal_ifd.rb', line 22
def process_tag(enumerator, tag_id)
if pointer_tag?(tag_id)
(enumerator, tag_id)
else
yield_tag(enumerator, :Tiff, tag_id)
end
end
|
#seek_ifd(pointer_value) ⇒ Object
43
44
45
|
# File 'lib/file_data/formats/exif/ordinal_ifd.rb', line 43
def seek_ifd(pointer_value)
stream.seek_exif(pointer_value)
end
|
#skip ⇒ Object
47
48
49
|
# File 'lib/file_data/formats/exif/ordinal_ifd.rb', line 47
def skip
stream.seek(tags_size(read_num_tags), IO::SEEK_CUR)
end
|
16
17
18
19
20
|
# 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) ⇒ Object
39
40
41
|
# 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
|