class Exif::Tag::MakerNote::LensParameters
0x0098 - LensParamaters
Constants
- XLAT0
- XLAT1
Public Instance Methods
_format0(data)
click to toggle source
# File lib/exifparser/makernote/nikon2.rb, line 333 def _format0(data) data.unpack("C*").collect{|e| e.to_i} end
decrypt_data(data, serial, count)
click to toggle source
# File lib/exifparser/makernote/nikon2.rb, line 407 def decrypt_data(data, serial, count) serialno = serial.to_i if serialno == 0 if serial[0,3] == "D50" serialno = 0x22 else serialno = 0x60 end end key = 0 4.times do |i| key ^= ((count >> (i*8)) & 0xff) end ci = XLAT0[serialno & 0xff] cj = XLAT1[key] ck = 0x60; pdata = [] data.each do |dat| cj += ((ci * ck) & 0xff) cj &= 0xff ck += 1 pdata.push(dat ^= cj) end return pdata end
to_hex()
click to toggle source
# File lib/exifparser/makernote/nikon2.rb, line 337 def to_hex str = "" @formatted.each do |dat| str += sprintf("%02x ", dat) end return str end
to_s()
click to toggle source
# File lib/exifparser/makernote/nikon2.rb, line 379 def to_s data = @formatted lens_data = "" version = data[0, 4].pack('C*') case version when "0100" lens_data = data[6, 7] when "0101" lens_data = data[11, 7] when "0201", "0202", "0203" decryptted = decrypt_data(data[4..(data.length - 1)], @@nikon_serial_no, @@release_count) lens_data = decryptted[7, 7] when "0204" decryptted = decrypt_data(data[4..(data.length - 1)], @@nikon_serial_no, @@release_count) lens_data = decryptted[8, 7] end return "" if lens_data.length == 0 self.extend NikonFmount ret = Tag::NikonFmount::LensName[lens_data] return ret != nil ? ret : "" end