From e2ad0e008a404b27314d4a2892d733f2f13656bf Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Thu, 17 Dec 2015 18:03:25 -0800 Subject: [PATCH] [core] Fix background-pattern origin Regressed in 6e41664cb033ee5edf6ae5ac66ed518d9f0d1f89. This restores it to the same behavior as gl-js, backed by test-suite tests. --- package.json | 2 +- src/mbgl/renderer/painter.cpp | 11 ++++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index ad8bbb8fd..aa101fd1e 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ ], "devDependencies": { "aws-sdk": "^2.2.21", - "mapbox-gl-test-suite": "mapbox/mapbox-gl-test-suite#48d397ea31e551324f85f0eb2088a5017023cab5", + "mapbox-gl-test-suite": "mapbox/mapbox-gl-test-suite#d6e8968a784ac74bc2559177e72252911ef93d97", "node-gyp": "^3.2.1", "request": "^2.67.0", "tape": "^4.2.2" diff --git a/src/mbgl/renderer/painter.cpp b/src/mbgl/renderer/painter.cpp index ebffa6f3a..35bc10ab6 100644 --- a/src/mbgl/renderer/painter.cpp +++ b/src/mbgl/renderer/painter.cpp @@ -34,6 +34,7 @@ #include #include +#include #if defined(DEBUG) #include @@ -279,7 +280,7 @@ void Painter::renderBackground(const BackgroundLayer& layer) { patternShader->u_opacity = properties.opacity; LatLng latLng = state.getLatLng(); - PrecisionPoint center = state.latLngToPoint(latLng); + TileCoordinate center = state.latLngToCoordinate(latLng); float scale = 1 / std::pow(2, zoomFraction); std::array sizeA = (*imagePosA).size; @@ -289,8 +290,8 @@ void Painter::renderBackground(const BackgroundLayer& layer) { 1.0f / (sizeA[0] * properties.pattern.value.fromScale), 1.0f / (sizeA[1] * properties.pattern.value.fromScale)); matrix::translate(matrixA, matrixA, - std::fmod(center.x * 512, sizeA[0] * properties.pattern.value.fromScale), - std::fmod(center.y * 512, sizeA[1] * properties.pattern.value.fromScale)); + std::fmod(center.column * util::tileSize, sizeA[0] * properties.pattern.value.fromScale), + std::fmod(center.row * util::tileSize, sizeA[1] * properties.pattern.value.fromScale)); matrix::rotate(matrixA, matrixA, -state.getAngle()); matrix::scale(matrixA, matrixA, scale * state.getWidth() / 2, @@ -303,8 +304,8 @@ void Painter::renderBackground(const BackgroundLayer& layer) { 1.0f / (sizeB[0] * properties.pattern.value.toScale), 1.0f / (sizeB[1] * properties.pattern.value.toScale)); matrix::translate(matrixB, matrixB, - std::fmod(center.x * 512, sizeB[0] * properties.pattern.value.toScale), - std::fmod(center.y * 512, sizeB[1] * properties.pattern.value.toScale)); + std::fmod(center.column * util::tileSize, sizeB[0] * properties.pattern.value.toScale), + std::fmod(center.row * util::tileSize, sizeB[1] * properties.pattern.value.toScale)); matrix::rotate(matrixB, matrixB, -state.getAngle()); matrix::scale(matrixB, matrixB, scale * state.getWidth() / 2,