class BMFF::Box::Base

vim: set expandtab tabstop=2 shiftwidth=2 softtabstop=2 autoindent:

Attributes

io[RW]
largesize[RW]
offset[RW]
parent[RW]
size[RW]
type[RW]
usertype[RW]

Public Class Methods

register_box(*boxtypes) click to toggle source
# File lib/bmff/box/base.rb, line 8
def self.register_box(*boxtypes)
  boxtypes.each do |boxtype|
    BMFF::Box::Map.register_box(boxtype, self)
  end
end
register_uuid_box(uuid) click to toggle source
# File lib/bmff/box/base.rb, line 14
def self.register_uuid_box(uuid)
  BMFF::Box::Map.register_uuid_box(uuid, self)
end

Public Instance Methods

actual_size() click to toggle source
# File lib/bmff/box/base.rb, line 18
def actual_size
  return largesize if size == 1
  return nil if size == 0
  return size
end
container?() click to toggle source
# File lib/bmff/box/base.rb, line 61
def container?
  false
end
eob?() click to toggle source

end of box?

# File lib/bmff/box/base.rb, line 32
def eob?
  if actual_size
    return io.pos >= offset + actual_size
  else
    return io.eof?
  end
end
parse() click to toggle source
# File lib/bmff/box/base.rb, line 48
def parse
  parse_data
  if actual_size
    if io.pos > offset + actual_size
      raise RangeError, "Given box size is smaller than expected."
    end
  end
  seek_to_end
end
parse_data() click to toggle source
# File lib/bmff/box/base.rb, line 58
def parse_data
end
remaining_size() click to toggle source
# File lib/bmff/box/base.rb, line 24
def remaining_size
  if actual_size
    return (offset + actual_size) - io.pos
  end
  nil
end
root() click to toggle source
# File lib/bmff/box/base.rb, line 65
def root
  ancestor = parent
  ancestor = ancestor.parent while ancestor.respond_to?(:parent) && ancestor.parent
  ancestor
end
seek_to_end() click to toggle source
# File lib/bmff/box/base.rb, line 40
def seek_to_end
  if actual_size
    io.pos = offset + actual_size
  else
    io.seek(0, IO::SEEK_END)
  end
end