From 4694aa40ada7d33732806f7fbb50b9abb2c412da Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Tue, 2 Sep 2014 11:33:45 -0700 Subject: Add SpriteAtlas::getPosition() --- src/renderer/painter_fill.cpp | 26 ++++---------------------- 1 file changed, 4 insertions(+), 22 deletions(-) (limited to 'src/renderer/painter_fill.cpp') diff --git a/src/renderer/painter_fill.cpp b/src/renderer/painter_fill.cpp index 97ca1767f9..45706cca1b 100644 --- a/src/renderer/painter_fill.cpp +++ b/src/renderer/painter_fill.cpp @@ -61,36 +61,18 @@ void Painter::renderFill(FillBucket& bucket, std::shared_ptr layer_d Sprite &sprite = *map.getSprite(); if (pass == RenderPass::Translucent && sprite) { SpriteAtlas &spriteAtlas = *map.getSpriteAtlas(); - const Rect pos = spriteAtlas.getImage(properties.image, sprite); - - // `repeating` indicates that the image will be used in a repeating pattern - // repeating pattern images are assumed to have a 1px padding that mirrors the opposite edge - // positions for repeating images are adjusted to exclude the edge - const int repeating = 1; - const std::array size {{ - float(pos.w) / spriteAtlas.getPixelRatio(), - float(pos.h) / spriteAtlas.getPixelRatio(), - }}; - const std::array tl {{ - (float(pos.x + repeating) / spriteAtlas.getWidth()), - (float(pos.y + repeating) / spriteAtlas.getHeight()), - }}; - const std::array br {{ - (float(pos.x + pos.w - 2 * repeating) / spriteAtlas.getWidth()), - (float(pos.y + pos.h - 2 * repeating) / spriteAtlas.getHeight()), - }}; + const SpriteAtlasPosition pos = spriteAtlas.getPosition(properties.image, sprite, true); const float mix = std::fmod(float(map.getState().getZoom()), 1.0f); - const float factor = 8.0 / std::pow(2, map.getState().getIntegerZoom() - id.z); mat3 patternMatrix; matrix::identity(patternMatrix); - matrix::scale(patternMatrix, patternMatrix, 1.0f / (size[0] * factor), 1.0f / (size[1] * factor)); + matrix::scale(patternMatrix, patternMatrix, 1.0f / (pos.size[0] * factor), 1.0f / (pos.size[1] * factor)); useProgram(patternShader->program); patternShader->setMatrix(vtxMatrix); - patternShader->setPatternTopLeft(tl); - patternShader->setPatternBottomRight(br); + patternShader->setPatternTopLeft(pos.tl); + patternShader->setPatternBottomRight(pos.br); patternShader->setOpacity(properties.opacity); patternShader->setImage(0); patternShader->setMix(mix); -- cgit v1.2.1