summaryrefslogtreecommitdiff
path: root/src/renderer/painter_line.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/renderer/painter_line.cpp')
-rw-r--r--src/renderer/painter_line.cpp26
1 files changed, 7 insertions, 19 deletions
diff --git a/src/renderer/painter_line.cpp b/src/renderer/painter_line.cpp
index 33bf279ca0..b68d46b010 100644
--- a/src/renderer/painter_line.cpp
+++ b/src/renderer/painter_line.cpp
@@ -66,17 +66,11 @@ void Painter::renderLine(LineBucket& bucket, std::shared_ptr<StyleLayer> layer_d
const std::shared_ptr<Sprite> &sprite = map.getSprite();
if (properties.image.size() && sprite) {
- SpriteAtlas &spriteAtlas = *map.getSpriteAtlas();
- Rect<uint16_t> imagePos = spriteAtlas.getImage(properties.image, *sprite);
+ SpriteAtlasPosition imagePos = map.getSpriteAtlas()->getPosition(properties.image, *sprite);
float factor = 8.0 / std::pow(2, map.getState().getIntegerZoom() - id.z);
float fade = std::fmod(map.getState().getZoom(), 1.0);
- std::array<float, 2> imageSize = {{
- imagePos.w * factor,
- imagePos.h * factor
- }};
-
useProgram(linepatternShader->program);
linepatternShader->setMatrix(vtxMatrix);
@@ -85,20 +79,14 @@ void Painter::renderLine(LineBucket& bucket, std::shared_ptr<StyleLayer> layer_d
linepatternShader->setRatio(ratio);
linepatternShader->setBlur(blur);
- linepatternShader->setPatternSize(imageSize);
- linepatternShader->setPatternTopLeft({{
- float(imagePos.x) / spriteAtlas.getWidth(),
- float(imagePos.y) / spriteAtlas.getHeight(),
- }});
- linepatternShader->setPatternBottomRight({{
- float(imagePos.x + imagePos.w) / spriteAtlas.getWidth(),
- float(imagePos.y + imagePos.h) / spriteAtlas.getHeight(),
- }});
+ linepatternShader->setPatternSize({{imagePos.size[0] * factor, imagePos.size[1]}});
+ linepatternShader->setPatternTopLeft(imagePos.tl);
+ linepatternShader->setPatternBottomRight(imagePos.br);
linepatternShader->setFade(fade);
-
- spriteAtlas.bind(true);
+
+ map.getSpriteAtlas()->bind(true);
glDepthRange(strata + strata_epsilon, 1.0f); // may or may not matter
-
+
bucket.drawLinePatterns(*linepatternShader);
} else {