summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBruno de Oliveira Abinader <bruno@mapbox.com>2015-11-10 11:50:04 +0200
committerBruno de Oliveira Abinader <bruno@mapbox.com>2015-11-11 16:59:49 +0200
commite2052ea3e46272f5b0eb26643c0d7e70bad46557 (patch)
tree6f06237a889bc740972845d65d178908d894159a /src
parente5c460f2db3f7506f4fc38b16747f0ace9151017 (diff)
downloadqtlocation-mapboxgl-e2052ea3e46272f5b0eb26643c0d7e70bad46557.tar.gz
[core] Added PrecisionPoint to represent pixel points
Diffstat (limited to 'src')
-rw-r--r--src/mbgl/annotation/point_annotation_impl.cpp2
-rw-r--r--src/mbgl/map/map.cpp4
-rw-r--r--src/mbgl/map/transform.cpp15
-rw-r--r--src/mbgl/map/transform.hpp4
-rw-r--r--src/mbgl/renderer/painter.cpp2
-rw-r--r--src/mbgl/util/geo.cpp2
6 files changed, 14 insertions, 15 deletions
diff --git a/src/mbgl/annotation/point_annotation_impl.cpp b/src/mbgl/annotation/point_annotation_impl.cpp
index a5f4ac269e..d313dab93c 100644
--- a/src/mbgl/annotation/point_annotation_impl.cpp
+++ b/src/mbgl/annotation/point_annotation_impl.cpp
@@ -13,7 +13,7 @@ void PointAnnotationImpl::updateLayer(const TileID& tileID, AnnotationTileLayer&
featureProperties.emplace("sprite", point.icon.empty() ? std::string("default_marker") : point.icon);
const uint16_t extent = 4096;
- const vec2<double> pp = point.position.project();
+ const mbgl::PrecisionPoint pp = point.position.project();
const uint32_t z2 = 1 << tileID.z;
const uint32_t x = pp.x * z2;
const uint32_t y = pp.y * z2;
diff --git a/src/mbgl/map/map.cpp b/src/mbgl/map/map.cpp
index 65fe66cab2..799f2be7af 100644
--- a/src/mbgl/map/map.cpp
+++ b/src/mbgl/map/map.cpp
@@ -156,8 +156,8 @@ void Map::easeTo(CameraOptions options) {
#pragma mark - Position
-void Map::moveBy(double dx, double dy, const Duration& duration) {
- transform->moveBy(dx, dy, duration);
+void Map::moveBy(const PrecisionPoint& point, const Duration& duration) {
+ transform->moveBy(point, duration);
update(Update::Repaint);
}
diff --git a/src/mbgl/map/transform.cpp b/src/mbgl/map/transform.cpp
index 1a6cbb77be..403d1a7a35 100644
--- a/src/mbgl/map/transform.cpp
+++ b/src/mbgl/map/transform.cpp
@@ -87,21 +87,20 @@ void Transform::easeTo(CameraOptions options) {
_easeTo(options, new_scale, angle, xn, yn);
}
-void Transform::moveBy(const double dx, const double dy, const Duration& duration) {
- if (std::isnan(dx) || std::isnan(dy)) {
+void Transform::moveBy(const PrecisionPoint& point, const Duration& duration) {
+ if (!point.isValid()) {
return;
}
- _moveBy(dx, dy, duration);
+ _moveBy(point, duration);
}
-void Transform::_moveBy(const double dx, const double dy, const Duration& duration) {
-
- double x = state.x + std::cos(state.angle) * dx + std::sin( state.angle) * dy;
- double y = state.y + std::cos(state.angle) * dy + std::sin(-state.angle) * dx;
+void Transform::_moveBy(const PrecisionPoint& point, const Duration& duration) {
+ double x = state.x + std::cos(state.angle) * point.x + std::sin( state.angle) * point.y;
+ double y = state.y + std::cos(state.angle) * point.y + std::sin(-state.angle) * point.x;
state.constrain(state.scale, y);
-
+
CameraOptions options;
options.duration = duration;
_easeTo(options, state.scale, state.angle, x, y);
diff --git a/src/mbgl/map/transform.hpp b/src/mbgl/map/transform.hpp
index a72e9f24ef..06a7487582 100644
--- a/src/mbgl/map/transform.hpp
+++ b/src/mbgl/map/transform.hpp
@@ -27,7 +27,7 @@ public:
void easeTo(const CameraOptions options);
// Position
- void moveBy(double dx, double dy, const Duration& = Duration::zero());
+ void moveBy(const PrecisionPoint&, const Duration& = Duration::zero());
void setLatLng(LatLng latLng, const Duration& = Duration::zero());
void setLatLng(LatLng latLng, vec2<double> point, const Duration& duration = Duration::zero());
void setLatLngZoom(LatLng latLng, double zoom, const Duration& = Duration::zero());
@@ -66,7 +66,7 @@ public:
bool isPanning() const { return state.isPanning(); }
private:
- void _moveBy(double dx, double dy, const Duration& = Duration::zero());
+ void _moveBy(const PrecisionPoint&, const Duration& = Duration::zero());
void _setScale(double scale, double cx, double cy, const Duration& = Duration::zero());
void _setScaleXY(double new_scale, double xn, double yn, const Duration& = Duration::zero());
void _easeTo(CameraOptions options, const double new_scale, const double new_angle,
diff --git a/src/mbgl/renderer/painter.cpp b/src/mbgl/renderer/painter.cpp
index 555d6684ac..140ab2991c 100644
--- a/src/mbgl/renderer/painter.cpp
+++ b/src/mbgl/renderer/painter.cpp
@@ -372,7 +372,7 @@ void Painter::renderBackground(const BackgroundLayer& layer) {
patternShader->u_opacity = properties.opacity;
LatLng latLng = state.getLatLng();
- vec2<double> center = state.latLngToPoint(latLng);
+ PrecisionPoint center = state.latLngToPoint(latLng);
float scale = 1 / std::pow(2, zoomFraction);
std::array<float, 2> sizeA = imagePosA.size;
diff --git a/src/mbgl/util/geo.cpp b/src/mbgl/util/geo.cpp
index 035eb2d20a..e82f4afad2 100644
--- a/src/mbgl/util/geo.cpp
+++ b/src/mbgl/util/geo.cpp
@@ -12,7 +12,7 @@ LatLng::LatLng(const TileID& id) {
latitude = 180.0 / M_PI * std::atan(0.5 * (std::exp(n) - std::exp(-n)));
}
-vec2<double> LatLng::project() const {
+PrecisionPoint LatLng::project() const {
// Clamp to the latitude limits of Mercator.
const double constrainedLatitude = ::fmin(::fmax(latitude, -util::LATITUDE_MAX), util::LATITUDE_MAX);