class GBTiles::GBM::Import::GBMFile
Constants
- OBJECT_MARKER
Attributes
map_set[RW]
version[RW]
Public Class Methods
new()
click to toggle source
# File lib/gbtiles/gbm/import/gbm_file.rb, line 25 def initialize @map_set = GBTiles::GBM::Map::MapSet.new end
open(file)
click to toggle source
# File lib/gbtiles/gbm/import/gbm_file.rb, line 29 def self.open file import = GBTiles::GBM::Import::GBMFile.new # Check to see if this is a valid file type if (file.read(3) != "GBO") then raise IOError, "Not a valid file (expected: GBO)" end # Version number import.version = file.read(1) if import.version != "1" then raise IOError, "Cannot import version #{import.version}" end # For each object while !file.eof? # Check the marker marker = GBTiles::DataType.string(file.read(6)) if !OBJECT_MARKER.eql? marker then raise "Malformed file, expected marker #{OBJECT_MARKER}, got #{marker}" end object_type = GBTiles::DataType.word(file.read(2)) object_id = GBTiles::DataType.word(file.read(2)) master_id = GBTiles::DataType.word(file.read(2)) object_crc = GBTiles::DataType.long(file.read(4)) object_len = GBTiles::DataType.long(file.read(4)) object_data = file.read(object_len) case GBTiles::GBM::Map::OBJECT_TYPE.key(object_type) when :producer object = GBTiles::GBM::Map::Objects::Producer.initFromBitString object_data when :map object = GBTiles::GBM::Map::Objects::Map.initFromBitString object_data when :map_tile_data object = GBTiles::GBM::Map::Objects::MapTileData.initFromBitString object_data when :map_settings object = GBTiles::GBM::Map::Objects::MapSettings.initFromBitString object_data when :map_export_settings object = GBTiles::GBM::Map::Objects::MapExportSettings.initFromBitString object_data else object = GBTiles::GBM::Map::Objects::Unknown.new object_type object.object_data = object_data end object.object_id = object_id object.master_id = master_id import.map_set.objects << object end import end