diff options
author | John Firebaugh <john.firebaugh@gmail.com> | 2014-08-28 17:24:29 -0700 |
---|---|---|
committer | John Firebaugh <john.firebaugh@gmail.com> | 2014-08-28 17:24:29 -0700 |
commit | 9d6c7685d0c3a6979db5dd1ecbb17276a7bdb8f2 (patch) | |
tree | dba4680c8e05faed7ae792630e2f8566b4c00dfe /src/renderer | |
parent | e71a1a907717a8255278acaf19a1e115f8b52597 (diff) | |
download | qtlocation-mapboxgl-9d6c7685d0c3a6979db5dd1ecbb17276a7bdb8f2.tar.gz |
Implement {text,icon}-translate[-anchor]
Diffstat (limited to 'src/renderer')
-rw-r--r-- | src/renderer/painter_symbol.cpp | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/renderer/painter_symbol.cpp b/src/renderer/painter_symbol.cpp index c2d62bec7a..e412bc49d7 100644 --- a/src/renderer/painter_symbol.cpp +++ b/src/renderer/painter_symbol.cpp @@ -9,8 +9,7 @@ namespace mbgl { -void Painter::renderSymbol(SymbolBucket &bucket, std::shared_ptr<StyleLayer> layer_desc, - const Tile::ID &/*id*/, const mat4 &matrix) { +void Painter::renderSymbol(SymbolBucket &bucket, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID &id, const mat4 &matrix) { // Abort early. if (pass == RenderPass::Opaque) { return; @@ -21,6 +20,8 @@ void Painter::renderSymbol(SymbolBucket &bucket, std::shared_ptr<StyleLayer> lay glDisable(GL_STENCIL_TEST); if (bucket.hasTextData()) { + mat4 vtxMatrix = translatedMatrix(matrix, properties.text.translate, id, properties.text.translate_anchor); + mat4 exMatrix; matrix::copy(exMatrix, projMatrix); if (bucket.properties.placement == PlacementType::Line) { @@ -32,7 +33,7 @@ void Painter::renderSymbol(SymbolBucket &bucket, std::shared_ptr<StyleLayer> lay matrix::scale(exMatrix, exMatrix, fontSize / 24.0f, fontSize / 24.0f, 1.0f); useProgram(textShader->program); - textShader->setMatrix(matrix); + textShader->setMatrix(vtxMatrix); textShader->setExtrudeMatrix(exMatrix); GlyphAtlas &glyphAtlas = *map.getGlyphAtlas(); @@ -161,6 +162,8 @@ void Painter::renderSymbol(SymbolBucket &bucket, std::shared_ptr<StyleLayer> lay } if (bucket.hasIconData()) { + mat4 vtxMatrix = translatedMatrix(matrix, properties.icon.translate, id, properties.icon.translate_anchor); + mat4 exMatrix; matrix::copy(exMatrix, projMatrix); @@ -179,7 +182,7 @@ void Painter::renderSymbol(SymbolBucket &bucket, std::shared_ptr<StyleLayer> lay matrix::scale(exMatrix, exMatrix, fontScale, fontScale, 1.0f); useProgram(iconShader->program); - iconShader->setMatrix(matrix); + iconShader->setMatrix(vtxMatrix); iconShader->setExtrudeMatrix(exMatrix); SpriteAtlas &spriteAtlas = *map.getSpriteAtlas(); |