diff options
author | artemp <artem@mapnik.org> | 2014-10-29 13:44:26 -0400 |
---|---|---|
committer | artemp <artem@mapnik.org> | 2014-10-29 13:44:26 -0400 |
commit | 3b5b15a4e4b1b86c9576969d868caa48520f8d8c (patch) | |
tree | 508671fd21f504071d11613559995d4837ac4ceb /src | |
parent | 372348131989aacedb1e24bf26fb7f92cdba5fe5 (diff) | |
download | qtlocation-mapboxgl-3b5b15a4e4b1b86c9576969d868caa48520f8d8c.tar.gz |
store glyphAtlas by value in Map object, pass by ref
change hasData signiture to expect ```StyleLayer const&```
Diffstat (limited to 'src')
-rw-r--r-- | src/map/map.cpp | 5 | ||||
-rw-r--r-- | src/map/raster_tile_data.cpp | 2 | ||||
-rw-r--r-- | src/map/tile_parser.cpp | 6 | ||||
-rw-r--r-- | src/map/vector_tile_data.cpp | 15 | ||||
-rw-r--r-- | src/renderer/painter.cpp | 2 | ||||
-rw-r--r-- | src/renderer/symbol_bucket.cpp | 2 |
6 files changed, 14 insertions, 18 deletions
diff --git a/src/map/map.cpp b/src/map/map.cpp index fd5468d4e2..e3aca9ee62 100644 --- a/src/map/map.cpp +++ b/src/map/map.cpp @@ -41,10 +41,10 @@ Map::Map(View& view_) main_thread(uv_thread_self()), #endif transform(view_), - glyphAtlas(std::make_shared<GlyphAtlas>(1024, 1024)), + glyphAtlas(1024, 1024), spriteAtlas(std::make_shared<SpriteAtlas>(512, 512)), texturepool(std::make_shared<Texturepool>()), - painter(*spriteAtlas, *glyphAtlas) { + painter(*spriteAtlas, glyphAtlas) { view.initialize(this); @@ -64,7 +64,6 @@ Map::~Map() { sprite.reset(); spriteAtlas.reset(); glyphStore.reset(); - glyphAtlas.reset(); style.reset(); fileSource.reset(); workers.reset(); diff --git a/src/map/raster_tile_data.cpp b/src/map/raster_tile_data.cpp index 99ca327fe7..fbef805f2c 100644 --- a/src/map/raster_tile_data.cpp +++ b/src/map/raster_tile_data.cpp @@ -29,6 +29,6 @@ void RasterTileData::render(Painter &painter, util::ptr<StyleLayer> layer_desc, bucket.render(painter, layer_desc, id, matrix); } -bool RasterTileData::hasData(util::ptr<StyleLayer> /*layer_desc*/) const { +bool RasterTileData::hasData(StyleLayer const& /*layer_desc*/) const { return bucket.hasData(); } diff --git a/src/map/tile_parser.cpp b/src/map/tile_parser.cpp index 235151cd47..6e505b7deb 100644 --- a/src/map/tile_parser.cpp +++ b/src/map/tile_parser.cpp @@ -39,7 +39,7 @@ TileParser::~TileParser() = default; TileParser::TileParser(const std::string &data, VectorTileData &tile_, const util::ptr<const Style> &style_, - const util::ptr<GlyphAtlas> &glyphAtlas_, + GlyphAtlas& glyphAtlas_, const util::ptr<GlyphStore> &glyphStore_, const util::ptr<SpriteAtlas> &spriteAtlas_, const util::ptr<Sprite> &sprite_) @@ -53,7 +53,7 @@ TileParser::TileParser(const std::string &data, VectorTileData &tile_, collision(std::make_unique<Collision>(tile.id.z, 4096, tile.source->tile_size, tile.depth)) { assert(&tile != nullptr); assert(style); - assert(glyphAtlas); + //assert(glyphAtlas); assert(glyphStore); assert(spriteAtlas); assert(sprite); @@ -177,7 +177,7 @@ std::unique_ptr<Bucket> TileParser::createLineBucket(const VectorTileLayer& laye std::unique_ptr<Bucket> TileParser::createSymbolBucket(const VectorTileLayer& layer, const FilterExpression &filter, const StyleBucketSymbol &symbol) { std::unique_ptr<SymbolBucket> bucket = std::make_unique<SymbolBucket>(symbol, *collision); - bucket->addFeatures(layer, filter, tile.id, *spriteAtlas, *sprite, *glyphAtlas, *glyphStore); + bucket->addFeatures(layer, filter, tile.id, *spriteAtlas, *sprite, glyphAtlas, *glyphStore); return obsolete() ? nullptr : std::move(bucket); } diff --git a/src/map/vector_tile_data.cpp b/src/map/vector_tile_data.cpp index b94bc66dea..4d9d2a5441 100644 --- a/src/map/vector_tile_data.cpp +++ b/src/map/vector_tile_data.cpp @@ -14,15 +14,12 @@ VectorTileData::VectorTileData(Tile::ID id_, Map &map_, const util::ptr<SourceIn } VectorTileData::~VectorTileData() { - util::ptr<GlyphAtlas> glyphAtlas = map.getGlyphAtlas(); - if (glyphAtlas) { - glyphAtlas->removeGlyphs(id.to_uint64()); - } + map.getGlyphAtlas().removeGlyphs(id.to_uint64()); } void VectorTileData::beforeParse() { - - parser = std::make_unique<TileParser>(data, *this, map.getStyle(), map.getGlyphAtlas(), map.getGlyphStore(), map.getSpriteAtlas(), map.getSprite()); + parser = std::make_unique<TileParser>(data, *this, map.getStyle(), map.getGlyphAtlas(), + map.getGlyphStore(), map.getSpriteAtlas(), map.getSprite()); } void VectorTileData::parse() { @@ -62,9 +59,9 @@ void VectorTileData::render(Painter &painter, util::ptr<StyleLayer> layer_desc, } } -bool VectorTileData::hasData(util::ptr<StyleLayer> layer_desc) const { - if (state == State::parsed && layer_desc->bucket) { - auto databucket_it = buckets.find(layer_desc->bucket->name); +bool VectorTileData::hasData(StyleLayer const& layer_desc) const { + if (state == State::parsed && layer_desc.bucket) { + auto databucket_it = buckets.find(layer_desc.bucket->name); if (databucket_it != buckets.end()) { assert(databucket_it->second); return databucket_it->second->hasData(); diff --git a/src/renderer/painter.cpp b/src/renderer/painter.cpp index 6abd51390a..07428a6980 100644 --- a/src/renderer/painter.cpp +++ b/src/renderer/painter.cpp @@ -356,7 +356,7 @@ void Painter::renderLayer(util::ptr<StyleLayer> layer_desc, const Tile::ID* id, void Painter::renderTileLayer(const Tile& tile, util::ptr<StyleLayer> layer_desc, const mat4 &matrix) { assert(tile.data); - if (tile.data->hasData(layer_desc) || layer_desc->type == StyleLayerType::Raster) { + if (tile.data->hasData(*layer_desc) || layer_desc->type == StyleLayerType::Raster) { gl::group group(util::sprintf<32>("render %d/%d/%d\n", tile.id.z, tile.id.y, tile.id.z)); prepareTile(tile); tile.data->render(*this, layer_desc, matrix); diff --git a/src/renderer/symbol_bucket.cpp b/src/renderer/symbol_bucket.cpp index 1fe91bffee..542c109dba 100644 --- a/src/renderer/symbol_bucket.cpp +++ b/src/renderer/symbol_bucket.cpp @@ -100,7 +100,7 @@ std::vector<SymbolFeature> SymbolBucket::processFeatures(const VectorTileLayer & void SymbolBucket::addFeatures(const VectorTileLayer &layer, const FilterExpression &filter, const Tile::ID &id, SpriteAtlas &spriteAtlas, Sprite &sprite, - GlyphAtlas &glyphAtlas, GlyphStore &glyphStore) { + GlyphAtlas & glyphAtlas, GlyphStore &glyphStore) { const std::vector<SymbolFeature> features = processFeatures(layer, filter, glyphStore, sprite); |