summaryrefslogtreecommitdiff
path: root/src/renderer
diff options
context:
space:
mode:
authorJohn Firebaugh <john.firebaugh@gmail.com>2014-08-28 17:24:29 -0700
committerJohn Firebaugh <john.firebaugh@gmail.com>2014-08-28 17:24:29 -0700
commit9d6c7685d0c3a6979db5dd1ecbb17276a7bdb8f2 (patch)
treedba4680c8e05faed7ae792630e2f8566b4c00dfe /src/renderer
parente71a1a907717a8255278acaf19a1e115f8b52597 (diff)
downloadqtlocation-mapboxgl-9d6c7685d0c3a6979db5dd1ecbb17276a7bdb8f2.tar.gz
Implement {text,icon}-translate[-anchor]
Diffstat (limited to 'src/renderer')
-rw-r--r--src/renderer/painter_symbol.cpp11
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();