diff options
Diffstat (limited to 'src/mbgl/map')
-rw-r--r-- | src/mbgl/map/map.cpp | 17 | ||||
-rw-r--r-- | src/mbgl/map/transform_state.cpp | 9 | ||||
-rw-r--r-- | src/mbgl/map/transform_state.hpp | 2 |
3 files changed, 24 insertions, 4 deletions
diff --git a/src/mbgl/map/map.cpp b/src/mbgl/map/map.cpp index dd33d0b170..b5a1af172a 100644 --- a/src/mbgl/map/map.cpp +++ b/src/mbgl/map/map.cpp @@ -9,6 +9,7 @@ #include <mbgl/style/style.hpp> #include <mbgl/style/source.hpp> #include <mbgl/style/layer.hpp> +#include <mbgl/style/light.hpp> #include <mbgl/style/observer.hpp> #include <mbgl/style/transition_options.hpp> #include <mbgl/style/update_parameters.hpp> @@ -978,6 +979,22 @@ const style::Image* Map::getImage(const std::string& id) { return nullptr; } +void Map::setLight(std::unique_ptr<style::Light> light) { + if (!impl->style) { + return; + } + + impl->style->light = std::move(light); +} + +style::Light* Map::getLight() { + if (!impl->style) { + return nullptr; + } + + return impl->style->light.get(); +} + #pragma mark - Defaults std::string Map::getStyleName() const { diff --git a/src/mbgl/map/transform_state.cpp b/src/mbgl/map/transform_state.cpp index fe90d4b2e4..8c3c70feec 100644 --- a/src/mbgl/map/transform_state.cpp +++ b/src/mbgl/map/transform_state.cpp @@ -2,6 +2,7 @@ #include <mbgl/tile/tile_id.hpp> #include <mbgl/util/constants.hpp> #include <mbgl/util/interpolate.hpp> +#include <mbgl/util/projection.hpp> #include <mbgl/math/log2.hpp> #include <mbgl/math/clamp.hpp> @@ -26,7 +27,7 @@ void TransformState::matrixFor(mat4& matrix, const UnwrappedTileID& tileID) cons matrix::scale(matrix, matrix, s / util::EXTENT, s / util::EXTENT, 1); } -void TransformState::getProjMatrix(mat4& projMatrix) const { +void TransformState::getProjMatrix(mat4& projMatrix, uint16_t nearZ) const { if (size.isEmpty()) { return; } @@ -45,7 +46,7 @@ void TransformState::getProjMatrix(mat4& projMatrix) const { // Add a bit extra to avoid precision problems when a fragment's distance is exactly `furthestDistance` const double farZ = furthestDistance * 1.01; - matrix::perspective(projMatrix, getFieldOfView(), double(size.width) / size.height, 1, farZ); + matrix::perspective(projMatrix, getFieldOfView(), double(size.width) / size.height, nearZ, farZ); const bool flippedY = viewportMode == ViewportMode::FlippedY; matrix::scale(projMatrix, projMatrix, 1, flippedY ? 1 : -1, 1); @@ -64,6 +65,9 @@ void TransformState::getProjMatrix(mat4& projMatrix) const { matrix::translate(projMatrix, projMatrix, pixel_x() - size.width / 2.0f, pixel_y() - size.height / 2.0f, 0); + + matrix::scale(projMatrix, projMatrix, 1, 1, + 1.0 / Projection::getMetersPerPixelAtLatitude(getLatLng(LatLng::Unwrapped).latitude(), getZoom())); } #pragma mark - Dimensions @@ -233,7 +237,6 @@ bool TransformState::isGestureInProgress() const { return gestureInProgress; } - #pragma mark - Projection double TransformState::zoomScale(double zoom) const { diff --git a/src/mbgl/map/transform_state.hpp b/src/mbgl/map/transform_state.hpp index 85d5d96700..d0bf455ead 100644 --- a/src/mbgl/map/transform_state.hpp +++ b/src/mbgl/map/transform_state.hpp @@ -24,7 +24,7 @@ public: // Matrix void matrixFor(mat4&, const UnwrappedTileID&) const; - void getProjMatrix(mat4& matrix) const; + void getProjMatrix(mat4& matrix, uint16_t nearZ = 1) const; // Dimensions Size getSize() const; |