summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorartemp <artem@mapnik.org>2014-10-29 13:44:26 -0400
committerartemp <artem@mapnik.org>2014-10-29 13:44:26 -0400
commit3b5b15a4e4b1b86c9576969d868caa48520f8d8c (patch)
tree508671fd21f504071d11613559995d4837ac4ceb /src
parent372348131989aacedb1e24bf26fb7f92cdba5fe5 (diff)
downloadqtlocation-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.cpp5
-rw-r--r--src/map/raster_tile_data.cpp2
-rw-r--r--src/map/tile_parser.cpp6
-rw-r--r--src/map/vector_tile_data.cpp15
-rw-r--r--src/renderer/painter.cpp2
-rw-r--r--src/renderer/symbol_bucket.cpp2
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);