diff options
author | Bruno de Oliveira Abinader <bruno@mapbox.com> | 2016-10-29 17:27:16 +0300 |
---|---|---|
committer | Bruno de Oliveira Abinader <bruno@mapbox.com> | 2016-10-31 16:53:07 +0200 |
commit | a70bfd89108cf1aef75181819ae43e550a69255e (patch) | |
tree | 158af7ab005cb4edcb788b4d87c9396e7add4c4d | |
parent | f03afdee218680d95eb5b9b0ab04083bc7cea512 (diff) | |
download | qtlocation-mapboxgl-a70bfd89108cf1aef75181819ae43e550a69255e.tar.gz |
[core] Don't use GL_LINEAR if panning w/o rotation nor pitch
-rw-r--r-- | src/mbgl/map/map.cpp | 1 | ||||
-rw-r--r-- | src/mbgl/map/transform_state.cpp | 4 | ||||
-rw-r--r-- | src/mbgl/map/transform_state.hpp | 1 | ||||
-rw-r--r-- | src/mbgl/renderer/painter_symbol.cpp | 2 | ||||
-rw-r--r-- | test/api/annotations.test.cpp | 16 |
5 files changed, 17 insertions, 7 deletions
diff --git a/src/mbgl/map/map.cpp b/src/mbgl/map/map.cpp index 75f7788931..c7a47abebd 100644 --- a/src/mbgl/map/map.cpp +++ b/src/mbgl/map/map.cpp @@ -408,7 +408,6 @@ void Map::cancelTransitions() { void Map::setGestureInProgress(bool inProgress) { impl->transform.setGestureInProgress(inProgress); - impl->onUpdate(Update::Repaint); } bool Map::isGestureInProgress() const { diff --git a/src/mbgl/map/transform_state.cpp b/src/mbgl/map/transform_state.cpp index 5dc7feffc0..188b3aa79a 100644 --- a/src/mbgl/map/transform_state.cpp +++ b/src/mbgl/map/transform_state.cpp @@ -175,10 +175,6 @@ float TransformState::getPitch() const { #pragma mark - State -bool TransformState::isChanging() const { - return rotating || scaling || panning || gestureInProgress; -} - bool TransformState::isRotating() const { return rotating; } diff --git a/src/mbgl/map/transform_state.hpp b/src/mbgl/map/transform_state.hpp index 6faaf4ac41..c274ce1fcd 100644 --- a/src/mbgl/map/transform_state.hpp +++ b/src/mbgl/map/transform_state.hpp @@ -60,7 +60,6 @@ public: float getPitch() const; // State - bool isChanging() const; bool isRotating() const; bool isScaling() const; bool isPanning() const; diff --git a/src/mbgl/renderer/painter_symbol.cpp b/src/mbgl/renderer/painter_symbol.cpp index d4ac5f94e9..a7b0d3fa6c 100644 --- a/src/mbgl/renderer/painter_symbol.cpp +++ b/src/mbgl/renderer/painter_symbol.cpp @@ -70,7 +70,7 @@ void Painter::renderSymbol(PaintParameters& parameters, SpriteAtlas& atlas = *layer.impl->spriteAtlas; const bool iconScaled = values.paintSize != 1.0f || frame.pixelRatio != atlas.getPixelRatio() || bucket.iconsNeedLinear; const bool iconTransformed = values.rotationAlignment == AlignmentType::Map || state.getPitch() != 0; - atlas.bind(bucket.sdfIcons || state.isChanging() || iconScaled || iconTransformed, context, 0); + atlas.bind(bucket.sdfIcons || state.isScaling() || state.isRotating() || iconScaled || iconTransformed, context, 0); std::array<uint16_t, 2> texsize {{ atlas.getWidth(), atlas.getHeight() }}; diff --git a/test/api/annotations.test.cpp b/test/api/annotations.test.cpp index 06a0a61b0a..be71ba85c9 100644 --- a/test/api/annotations.test.cpp +++ b/test/api/annotations.test.cpp @@ -49,6 +49,7 @@ TEST(Annotations, SymbolAnnotation) { auto screenBox = ScreenBox { {}, { double(size.width), double(size.height) } }; auto features = test.map.queryPointAnnotations(screenBox); EXPECT_EQ(features.size(), 1u); + test.checkRendering("point_annotation"); test.map.setZoom(test.map.getMaxZoom()); test.checkRendering("point_annotation"); @@ -57,6 +58,21 @@ TEST(Annotations, SymbolAnnotation) { EXPECT_EQ(features.size(), 1u); } +TEST(Annotations, SymbolLinearInterpolation) +{ + AnnotationTest test; + + test.map.setStyleJSON(util::read_file("test/fixtures/api/empty.json")); + test.map.addAnnotationIcon("default_marker", namedMarker("default_marker.png")); + test.map.addAnnotation(SymbolAnnotation { Point<double>(0.15, 0.15), "default_marker" }); + test.checkRendering("point_annotation"); + + // Should not trigger GL_LINEAR when binding the symbol shader. + test.map.setGestureInProgress(true); + test.map.moveBy({}); + test.checkRendering("point_annotation"); +} + TEST(Annotations, LineAnnotation) { AnnotationTest test; |