diff options
author | Mikko Pulkki <mikko.pulkki@mapbox.com> | 2020-03-23 18:21:13 +0200 |
---|---|---|
committer | Mikko Pulkki <55925868+mpulkki-mapbox@users.noreply.github.com> | 2020-04-06 12:10:21 +0300 |
commit | d0c103fa8f0bade2be56d50a745f16b4e9ed6b29 (patch) | |
tree | e41956f80cfd63d7ab4e154c9785b39e7e6c99d4 /src/mbgl/map | |
parent | 69dc210598ff8319de53bb603438ba89d47d6229 (diff) | |
download | qtlocation-mapboxgl-d0c103fa8f0bade2be56d50a745f16b4e9ed6b29.tar.gz |
Refactor tileCover to support lod tiles
Diffstat (limited to 'src/mbgl/map')
-rw-r--r-- | src/mbgl/map/transform_state.cpp | 10 | ||||
-rw-r--r-- | src/mbgl/map/transform_state.hpp | 2 |
2 files changed, 11 insertions, 1 deletions
diff --git a/src/mbgl/map/transform_state.cpp b/src/mbgl/map/transform_state.cpp index b5513f3d83..1894c59e2b 100644 --- a/src/mbgl/map/transform_state.cpp +++ b/src/mbgl/map/transform_state.cpp @@ -171,9 +171,12 @@ void TransformState::updateMatricesIfNeeded() const { getProjMatrix(projectionMatrix); coordMatrix = coordinatePointMatrix(projectionMatrix); - bool err = matrix::invert(invertedMatrix, coordMatrix); + bool err = matrix::invert(invProjectionMatrix, projectionMatrix); + if (err) throw std::runtime_error("failed to invert projectionMatrix"); + err = matrix::invert(invertedMatrix, coordMatrix); if (err) throw std::runtime_error("failed to invert coordinatePointMatrix"); + requestMatricesUpdate = false; } @@ -182,6 +185,11 @@ const mat4& TransformState::getProjectionMatrix() const { return projectionMatrix; } +const mat4& TransformState::getInvProjectionMatrix() const { + updateMatricesIfNeeded(); + return invProjectionMatrix; +} + const mat4& TransformState::getCoordMatrix() const { updateMatricesIfNeeded(); return coordMatrix; diff --git a/src/mbgl/map/transform_state.hpp b/src/mbgl/map/transform_state.hpp index b7fa97eea6..69f0eebd40 100644 --- a/src/mbgl/map/transform_state.hpp +++ b/src/mbgl/map/transform_state.hpp @@ -216,6 +216,7 @@ public: void constrain(double& scale, double& x, double& y) const; const mat4& getProjectionMatrix() const; + const mat4& getInvProjectionMatrix() const; private: bool rotatedNorth() const; @@ -282,6 +283,7 @@ private: mutable bool requestMatricesUpdate{true}; mutable mat4 projectionMatrix; + mutable mat4 invProjectionMatrix; mutable mat4 coordMatrix; mutable mat4 invertedMatrix; }; |