Class: EXIFR::TIFF::Data
- Inherits:
-
Object
- Object
- EXIFR::TIFF::Data
- Defined in:
- lib/exifr/tiff.rb
Overview
:nodoc:
Instance Attribute Summary collapse
-
#file ⇒ Object
readonly
Returns the value of attribute file.
-
#long ⇒ Object
readonly
Returns the value of attribute long.
-
#short ⇒ Object
readonly
Returns the value of attribute short.
Class Method Summary collapse
Instance Method Summary collapse
- #[](pos) ⇒ Object
-
#initialize(file) ⇒ Data
constructor
A new instance of Data.
- #readlong(pos) ⇒ Object
- #readshort(pos) ⇒ Object
- #size ⇒ Object
Constructor Details
#initialize(file) ⇒ Data
Returns a new instance of Data.
641 642 643 644 645 646 647 648 649 650 651 652 |
# File 'lib/exifr/tiff.rb', line 641 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 = 'v', 'V' when 'MM'; @short, @long = 'n', 'N' else raise MalformedTIFF, "no byte order information found" end end |
Instance Attribute Details
#file ⇒ Object (readonly)
Returns the value of attribute file.
639 640 641 |
# File 'lib/exifr/tiff.rb', line 639 def file @file end |
#long ⇒ Object (readonly)
Returns the value of attribute long.
639 640 641 |
# File 'lib/exifr/tiff.rb', line 639 def long @long end |
#short ⇒ Object (readonly)
Returns the value of attribute short.
639 640 641 |
# File 'lib/exifr/tiff.rb', line 639 def short @short end |
Class Method Details
.open(file, &block) ⇒ Object
654 655 656 657 658 659 |
# File 'lib/exifr/tiff.rb', line 654 def self.open(file, &block) data = new(file) yield data ensure data && data.file && data.file.close end |
Instance Method Details
#[](pos) ⇒ Object
661 662 663 664 665 666 667 668 669 670 671 |
# File 'lib/exifr/tiff.rb', line 661 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
677 678 679 |
# File 'lib/exifr/tiff.rb', line 677 def readlong(pos) self[pos..(pos + 3)].unpack(@long)[0] end |
#readshort(pos) ⇒ Object
673 674 675 |
# File 'lib/exifr/tiff.rb', line 673 def readshort(pos) self[pos..(pos + 1)].unpack(@short)[0] end |
#size ⇒ Object
681 682 683 684 |
# File 'lib/exifr/tiff.rb', line 681 def size @io.seek(0, IO::SEEK_END) @io.pos end |