Module: Dimensions::TiffScanning

Included in:
ExifScanner, TiffScanner
Defined in:
lib/dimensions/tiff_scanning.rb

Instance Method Summary collapse

Instance Method Details

#read_integer_valueObject



34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/dimensions/tiff_scanning.rb', line 34

def read_integer_value
  type = read_short
  advance(4)

  if type == 3
    read_short
  elsif type == 4
    read_long
  else
    raise_scan_error
  end
end

#scan_and_skip_to_offsetObject



18
19
20
21
# File 'lib/dimensions/tiff_scanning.rb', line 18

def scan_and_skip_to_offset
  offset = read_long
  skip_to(offset)
end

#scan_endiannessObject



9
10
11
12
# File 'lib/dimensions/tiff_scanning.rb', line 9

def scan_endianness
  tag = [read_char, read_char]
  tag == [0x4D, 0x4D] ? big! : little!
end

#scan_headerObject



3
4
5
6
7
# File 'lib/dimensions/tiff_scanning.rb', line 3

def scan_header
  scan_endianness
  scan_tag_mark
  scan_and_skip_to_offset
end

#scan_ifdObject



23
24
25
26
27
28
29
30
31
32
# File 'lib/dimensions/tiff_scanning.rb', line 23

def scan_ifd
  offset = pos
  entry_count = read_short

  entry_count.times do |i|
    skip_to(offset + 2 + (12 * i))
    tag = read_short
    yield tag
  end
end

#scan_tag_markObject



14
15
16
# File 'lib/dimensions/tiff_scanning.rb', line 14

def scan_tag_mark
  raise_scan_error unless read_short == 0x002A
end