Class: EXIFR::TIFF::Data

Inherits:
Object
  • Object
show all
Defined in:
lib/exifr/tiff.rb

Overview

:nodoc:

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(file) ⇒ Data

Returns a new instance of Data.

[View source]

648
649
650
651
652
653
654
655
656
657
658
659
# File 'lib/exifr/tiff.rb', line 648

def initialize(file)
  @io = file.respond_to?(:read) ? file : (@file = File.open(file, 'rb'))
  @buffer = ''
  @pos = 0

  case self[0..1]
  when 'II'; @short, @long, @float, @double = 'v', 'V', 'e', 'E'
  when 'MM'; @short, @long, @float, @double = 'n', 'N', 'g', 'G'
  else
    raise MalformedTIFF, "no byte order information found"
  end
end

Instance Attribute Details

#doubleObject (readonly)

Returns the value of attribute double.


646
647
648
# File 'lib/exifr/tiff.rb', line 646

def double
  @double
end

#fileObject (readonly)

Returns the value of attribute file.


646
647
648
# File 'lib/exifr/tiff.rb', line 646

def file
  @file
end

#floatObject (readonly)

Returns the value of attribute float.


646
647
648
# File 'lib/exifr/tiff.rb', line 646

def float
  @float
end

#longObject (readonly)

Returns the value of attribute long.


646
647
648
# File 'lib/exifr/tiff.rb', line 646

def long
  @long
end

#shortObject (readonly)

Returns the value of attribute short.


646
647
648
# File 'lib/exifr/tiff.rb', line 646

def short
  @short
end

Class Method Details

.open(file, &block) ⇒ Object

[View source]

661
662
663
664
665
666
# File 'lib/exifr/tiff.rb', line 661

def self.open(file, &block)
  data = new(file)
  yield data
ensure
  data && data.file && data.file.close
end

Instance Method Details

#[](pos) ⇒ Object

[View source]

668
669
670
671
672
673
674
675
676
677
678
# File 'lib/exifr/tiff.rb', line 668

def [](pos)
  unless pos.respond_to?(:begin) && pos.respond_to?(:end)
    pos = pos..pos
  end

  if pos.begin < @pos || pos.end >= @pos + @buffer.size
    read_for(pos)
  end

  @buffer && @buffer[(pos.begin - @pos)..(pos.end - @pos)]
end

#readlong(pos) ⇒ Object

[View source]

684
685
686
# File 'lib/exifr/tiff.rb', line 684

def readlong(pos)
  self[pos..(pos + 3)].unpack(@long)[0]
end

#readshort(pos) ⇒ Object

[View source]

680
681
682
# File 'lib/exifr/tiff.rb', line 680

def readshort(pos)
  self[pos..(pos + 1)].unpack(@short)[0]
end

#sizeObject

[View source]

688
689
690
691
# File 'lib/exifr/tiff.rb', line 688

def size
  @io.seek(0, IO::SEEK_END)
  @io.pos
end