diff options
author | John Firebaugh <john.firebaugh@gmail.com> | 2016-07-08 16:23:13 -0700 |
---|---|---|
committer | John Firebaugh <john.firebaugh@gmail.com> | 2016-07-11 18:39:50 -0700 |
commit | ae838b397b6e5ca85d30fe1a8b9ccbb74864a7a6 (patch) | |
tree | b0c98220cab6a8ffed1c44a9f1f7e9ca71261bc6 /src/mbgl/renderer/render_tile.cpp | |
parent | a27b5586e56f8d967a5df4e883225dca0e7ddc3e (diff) | |
download | qtlocation-mapboxgl-ae838b397b6e5ca85d30fe1a8b9ccbb74864a7a6.tar.gz |
[core] Move translatedMatrix to RenderTile
Diffstat (limited to 'src/mbgl/renderer/render_tile.cpp')
-rw-r--r-- | src/mbgl/renderer/render_tile.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/mbgl/renderer/render_tile.cpp b/src/mbgl/renderer/render_tile.cpp index 513515ddf0..5c7c491be0 100644 --- a/src/mbgl/renderer/render_tile.cpp +++ b/src/mbgl/renderer/render_tile.cpp @@ -1,5 +1,34 @@ #include <mbgl/renderer/render_tile.hpp> +#include <mbgl/map/transform_state.hpp> namespace mbgl { +using namespace style; + +mat4 RenderTile::translatedMatrix(const std::array<float, 2>& translation, + TranslateAnchorType anchor, + const TransformState& state) const { + if (translation[0] == 0 && translation[1] == 0) { + return matrix; + } + + mat4 vtxMatrix; + + if (anchor == TranslateAnchorType::Viewport) { + const double sin_a = std::sin(-state.getAngle()); + const double cos_a = std::cos(-state.getAngle()); + matrix::translate(vtxMatrix, matrix, + id.pixelsToTileUnits(translation[0] * cos_a - translation[1] * sin_a, state.getZoom()), + id.pixelsToTileUnits(translation[0] * sin_a + translation[1] * cos_a, state.getZoom()), + 0); + } else { + matrix::translate(vtxMatrix, matrix, + id.pixelsToTileUnits(translation[0], state.getZoom()), + id.pixelsToTileUnits(translation[1], state.getZoom()), + 0); + } + + return vtxMatrix; +} + } // namespace mbgl |