[core] Added padding option to CameraOptions

Moved EdgeInsets to geo.hpp so CameraOptions and Transform can refer to it. Added a padding option to CameraOptions that alters the frame of reference for the center option. Added optional padding parameters to LatLng getters and setters.

Working towards #2600.
This commit is contained in:
Minh Nguyễn
2016-01-15 08:23:10 -08:00
committed by Minh Nguyễn
parent cb126eafe0
commit 143f8a7817
8 changed files with 135 additions and 18 deletions

View File

@@ -2,6 +2,7 @@
#include "../fixtures/mock_view.hpp"
#include <mbgl/map/transform.hpp>
#include <mbgl/util/geo.hpp>
using namespace mbgl;
@@ -193,8 +194,7 @@ TEST(Transform, Anchor) {
ASSERT_DOUBLE_EQ(10, transform.getZoom());
ASSERT_DOUBLE_EQ(0, transform.getAngle());
const auto size = view.getSize();
const PrecisionPoint anchorPoint = { size[0] * 0.8, size[1] * 0.3 };
const PrecisionPoint anchorPoint = {0, 0};
const LatLng anchorLatLng = transform.getState().pointToLatLng(anchorPoint);
transform.setAngle(M_PI_4, anchorPoint);
@@ -202,3 +202,35 @@ TEST(Transform, Anchor) {
ASSERT_NE(anchorLatLng, transform.getLatLng());
ASSERT_DOUBLE_EQ(anchorLatLng, transform.getState().pointToLatLng(anchorPoint));
}
TEST(Transform, Padding) {
MockView view;
Transform transform(view, ConstrainMode::HeightOnly);
transform.resize({{ 1000, 1000 }});
ASSERT_DOUBLE_EQ(0, transform.getLatLng().latitude);
ASSERT_DOUBLE_EQ(0, transform.getLatLng().longitude);
transform.setLatLngZoom({ 10, -100 }, 10);
const LatLng trueCenter = transform.getLatLng();
ASSERT_DOUBLE_EQ(10, trueCenter.latitude);
ASSERT_DOUBLE_EQ(-100, trueCenter.longitude);
ASSERT_DOUBLE_EQ(10, transform.getZoom());
const LatLng manualShiftedCenter = transform.getState().pointToLatLng({
1000.0 / 2.0,
1000.0 / 4.0,
});
EdgeInsets padding;
padding.top = 1000.0 / 2.0;
ASSERT_GT(padding.top, 0);
ASSERT_TRUE(padding);
const LatLng shiftedCenter = transform.getLatLng(padding);
ASSERT_NE(trueCenter.latitude, shiftedCenter.latitude);
ASSERT_DOUBLE_EQ(trueCenter.longitude, shiftedCenter.longitude);
ASSERT_DOUBLE_EQ(manualShiftedCenter.latitude, shiftedCenter.latitude);
ASSERT_DOUBLE_EQ(manualShiftedCenter.longitude, shiftedCenter.longitude);
}