Class: EXIFR::TIFF::Data
- Inherits:
-
Object
- Object
- EXIFR::TIFF::Data
- Defined in:
- lib/exifr/tiff.rb
Overview
:nodoc:
Instance Attribute Summary collapse
-
#double ⇒ Object
readonly
Returns the value of attribute double.
-
#file ⇒ Object
readonly
Returns the value of attribute file.
-
#float ⇒ Object
readonly
Returns the value of attribute float.
-
#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.
652 653 654 655 656 657 658 659 660 661 662 663 |
# File 'lib/exifr/tiff.rb', line 652 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
#double ⇒ Object (readonly)
Returns the value of attribute double.
650 651 652 |
# File 'lib/exifr/tiff.rb', line 650 def double @double end |
#file ⇒ Object (readonly)
Returns the value of attribute file.
650 651 652 |
# File 'lib/exifr/tiff.rb', line 650 def file @file end |
#float ⇒ Object (readonly)
Returns the value of attribute float.
650 651 652 |
# File 'lib/exifr/tiff.rb', line 650 def float @float end |
#long ⇒ Object (readonly)
Returns the value of attribute long.
650 651 652 |
# File 'lib/exifr/tiff.rb', line 650 def long @long end |
#short ⇒ Object (readonly)
Returns the value of attribute short.
650 651 652 |
# File 'lib/exifr/tiff.rb', line 650 def short @short end |
Class Method Details
.open(file, &block) ⇒ Object
665 666 667 668 669 670 |
# File 'lib/exifr/tiff.rb', line 665 def self.open(file, &block) data = new(file) yield data ensure data && data.file && data.file.close end |
Instance Method Details
#[](pos) ⇒ Object
672 673 674 675 676 677 678 679 680 681 682 |
# File 'lib/exifr/tiff.rb', line 672 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
688 689 690 |
# File 'lib/exifr/tiff.rb', line 688 def readlong(pos) self[pos..(pos + 3)].unpack(@long)[0] end |
#readshort(pos) ⇒ Object
684 685 686 |
# File 'lib/exifr/tiff.rb', line 684 def readshort(pos) self[pos..(pos + 1)].unpack(@short)[0] end |
#size ⇒ Object
692 693 694 695 |
# File 'lib/exifr/tiff.rb', line 692 def size @io.seek(0, IO::SEEK_END) @io.pos end |