diff options
author | Łukasz Paczos <lukas.paczos@gmail.com> | 2019-02-19 11:07:31 +0100 |
---|---|---|
committer | Łukasz Paczos <lukas.paczos@gmail.com> | 2019-02-19 11:07:31 +0100 |
commit | fbdf2bd80f90610534052c68b25132d059d3b6c3 (patch) | |
tree | 9e88379c0508c517f660543eb66db51f2b531eb3 | |
parent | 4a8b91f67442c155ebd0a4885f8f0b0eb7e220ec (diff) | |
download | qtlocation-mapboxgl-fbdf2bd80f90610534052c68b25132d059d3b6c3.tar.gz |
wip
15 files changed, 377 insertions, 208 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/camera/CameraUpdateFactory.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/camera/CameraUpdateFactory.java index c4cc6d0196..1fe1618061 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/camera/CameraUpdateFactory.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/camera/CameraUpdateFactory.java @@ -311,76 +311,6 @@ public final class CameraUpdateFactory { } } - static final class CameraMoveUpdate implements CameraUpdate { - - private float x; - private float y; - - CameraMoveUpdate(float x, float y) { - this.x = x; - this.y = y; - } - - @Override - public CameraPosition getCameraPosition(@NonNull MapboxMap mapboxMap) { - UiSettings uiSettings = mapboxMap.getUiSettings(); - Projection projection = mapboxMap.getProjection(); - // Calculate the new center point - float viewPortWidth = uiSettings.getWidth(); - float viewPortHeight = uiSettings.getHeight(); - int[] padding = mapboxMap.getPadding(); - - // we inverse the map padding, is reapplied when using moveTo/easeTo or animateTo - PointF targetPoint = new PointF( - (viewPortWidth - padding[0] + padding[1]) / 2 + x, - (viewPortHeight + padding[1] - padding[3]) / 2 + y - ); - - LatLng latLng = projection.fromScreenLocation(targetPoint); - CameraPosition previousPosition = mapboxMap.getCameraPosition(); - CameraPosition position = - new CameraPosition.Builder() - .target(latLng) - .zoom(previousPosition.zoom) - .tilt(previousPosition.tilt) - .bearing(previousPosition.bearing) - .build(); - return position; - } - - @Override - public boolean equals(@Nullable Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - - CameraMoveUpdate that = (CameraMoveUpdate) o; - - if (Float.compare(that.x, x) != 0) { - return false; - } - return Float.compare(that.y, y) == 0; - } - - @Override - public int hashCode() { - int result = (x != +0.0f ? Float.floatToIntBits(x) : 0); - result = 31 * result + (y != +0.0f ? Float.floatToIntBits(y) : 0); - return result; - } - - @Override - public String toString() { - return "CameraMoveUpdate{" - + "x=" + x - + ", y=" + y - + '}'; - } - } - static final class ZoomUpdate implements CameraUpdate { @IntDef( {ZOOM_IN, ZOOM_OUT, ZOOM_BY, ZOOM_TO, ZOOM_TO_POINT}) diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapGestureDetector.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapGestureDetector.java index 43dd168016..5b96d5683c 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapGestureDetector.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapGestureDetector.java @@ -559,7 +559,7 @@ final class MapGestureDetector { scaleFocalPoint = focalPoint; } else if (quickZoom) { // around center - scaleFocalPoint = new PointF(uiSettings.getWidth() / 2, uiSettings.getHeight() / 2); + scaleFocalPoint = new PointF(projection.getWidth() / 2, projection.getHeight() / 2); } else { // around gesture scaleFocalPoint = detector.getFocalPoint(); diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapKeyListener.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapKeyListener.java index afb80027d9..269697410b 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapKeyListener.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapKeyListener.java @@ -20,6 +20,7 @@ import android.view.ViewConfiguration; */ final class MapKeyListener { + private final Projection projection; private final Transform transform; private final UiSettings uiSettings; private final MapGestureDetector mapGestureDetector; @@ -27,7 +28,8 @@ final class MapKeyListener { @Nullable private TrackballLongPressTimeOut currentTrackballLongPressTimeOut; - MapKeyListener(Transform transform, UiSettings uiSettings, MapGestureDetector mapGestureDetector) { + MapKeyListener(Projection projection, Transform transform, UiSettings uiSettings, MapGestureDetector mapGestureDetector) { + this.projection = projection; this.transform = transform; this.uiSettings = uiSettings; this.mapGestureDetector = mapGestureDetector; @@ -127,7 +129,7 @@ final class MapKeyListener { } // Zoom out - PointF focalPoint = new PointF(uiSettings.getWidth() / 2, uiSettings.getHeight() / 2); + PointF focalPoint = new PointF(projection.getWidth() / 2, projection.getHeight() / 2); mapGestureDetector.zoomOutAnimated(focalPoint, true); return true; @@ -163,7 +165,7 @@ final class MapKeyListener { } // Zoom in - PointF focalPoint = new PointF(uiSettings.getWidth() / 2, uiSettings.getHeight() / 2); + PointF focalPoint = new PointF(projection.getWidth() / 2, projection.getHeight() / 2); mapGestureDetector.zoomInAnimated(focalPoint, true); return true; } @@ -218,7 +220,7 @@ final class MapKeyListener { // Only handle if we have not already long pressed if (currentTrackballLongPressTimeOut != null) { // Zoom in - PointF focalPoint = new PointF(uiSettings.getWidth() / 2, uiSettings.getHeight() / 2); + PointF focalPoint = new PointF(projection.getWidth() / 2, projection.getHeight() / 2); mapGestureDetector.zoomInAnimated(focalPoint, true); } return true; @@ -260,7 +262,7 @@ final class MapKeyListener { // Check if the trackball is still pressed if (!cancelled) { // Zoom out - PointF pointF = new PointF(uiSettings.getWidth() / 2, uiSettings.getHeight() / 2); + PointF pointF = new PointF(projection.getWidth() / 2, projection.getHeight() / 2); mapGestureDetector.zoomOutAnimated(pointF, true); // Ensure the up action is not run diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapPresenter.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapPresenter.java index 483e0a7e60..5dac5be4b8 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapPresenter.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapPresenter.java @@ -2,6 +2,59 @@ package com.mapbox.mapboxsdk.maps; import com.mapbox.mapboxsdk.MapboxPresenter; -interface MapPresenter extends MapboxPresenter<MapView> { +public interface MapPresenter extends MapboxPresenter<MapView> { + void onSurfaceCreated(); + + void addOnCameraWillChangeListener(MapView.OnCameraWillChangeListener listener); + + void removeOnCameraWillChangeListener(MapView.OnCameraWillChangeListener listener); + + void addOnCameraIsChangingListener(MapView.OnCameraIsChangingListener listener); + + void removeOnCameraIsChangingListener(MapView.OnCameraIsChangingListener listener); + + void addOnCameraDidChangeListener(MapView.OnCameraDidChangeListener listener); + + void removeOnCameraDidChangeListener(MapView.OnCameraDidChangeListener listener); + + void addOnWillStartLoadingMapListener(MapView.OnWillStartLoadingMapListener listener); + + void removeOnWillStartLoadingMapListener(MapView.OnWillStartLoadingMapListener listener); + + void addOnDidFinishLoadingMapListener(MapView.OnDidFinishLoadingMapListener listener); + + void removeOnDidFinishLoadingMapListener(MapView.OnDidFinishLoadingMapListener listener); + + void addOnDidFailLoadingMapListener(MapView.OnDidFailLoadingMapListener listener); + + void removeOnDidFailLoadingMapListener(MapView.OnDidFailLoadingMapListener listener); + + void addOnWillStartRenderingFrameListener(MapView.OnWillStartRenderingFrameListener listener); + + void removeOnWillStartRenderingFrameListener(MapView.OnWillStartRenderingFrameListener listener); + + void addOnDidFinishRenderingFrameListener(MapView.OnDidFinishRenderingFrameListener listener); + + void removeOnDidFinishRenderingFrameListener(MapView.OnDidFinishRenderingFrameListener listener); + + void addOnWillStartRenderingMapListener(MapView.OnWillStartRenderingMapListener listener); + + void removeOnWillStartRenderingMapListener(MapView.OnWillStartRenderingMapListener listener); + + void addOnDidFinishRenderingMapListener(MapView.OnDidFinishRenderingMapListener listener); + + void removeOnDidFinishRenderingMapListener(MapView.OnDidFinishRenderingMapListener listener); + + void addOnDidBecomeIdleListener(MapView.OnDidBecomeIdleListener listener); + + void removeOnDidBecomeIdleListener(MapView.OnDidBecomeIdleListener listener); + + void addOnDidFinishLoadingStyleListener(MapView.OnDidFinishLoadingStyleListener listener); + + void removeOnDidFinishLoadingStyleListener(MapView.OnDidFinishLoadingStyleListener listener); + + void addOnSourceChangedListener(MapView.OnSourceChangedListener listener); + + void removeOnSourceChangedListener(MapView.OnSourceChangedListener listener); } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapPresenterImpl.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapPresenterImpl.java index 319522f233..653420941a 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapPresenterImpl.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapPresenterImpl.java @@ -6,26 +6,181 @@ import android.support.annotation.NonNull; import com.mapbox.mapboxsdk.maps.renderer.MapRenderer; class MapPresenterImpl implements MapPresenter { + + private final MapChangeReceiver mapChangeReceiver; + private final MapView mapView; private final MapboxMapOptions mapboxMapOptions; - private MapRenderer renderer; + private final MapRenderer renderer; + private final NativeMapView nativeMapView; - MapPresenterImpl(@NonNull MapView mapView, @NonNull Context context, @NonNull MapboxMapOptions mapboxMapOptions) { + MapPresenterImpl(@NonNull MapView mapView, @NonNull Context context, @NonNull MapboxMapOptions mapboxMapOptions, + @NonNull MapChangeReceiver mapChangeReceiver) { this.mapView = mapView; this.mapboxMapOptions = mapboxMapOptions; - initialize(); - } + this.mapChangeReceiver = mapChangeReceiver; - private void initialize() { mapView.setForegroundColor(mapboxMapOptions.getForegroundLoadColor()); mapView.inflateInternalViews(); mapView.setViewOptions(); String localFontFamily = mapboxMapOptions.getLocalIdeographFontFamily(); if (mapboxMapOptions.getTextureMode()) { - renderer = mapView.initializeTextureView(localFontFamily, mapboxMapOptions.getTranslucentTextureSurface()); + renderer = mapView.createTextureView(this, localFontFamily, + mapboxMapOptions.getTranslucentTextureSurface()); } else { - renderer = mapView.initializeSurfaceView(localFontFamily); + renderer = mapView.createSurfaceView(this, localFontFamily, + mapboxMapOptions.getRenderSurfaceOnTop()); + } + + nativeMapView = mapView.createNativeMapView(getPixelRatio(), mapboxMapOptions.getCrossSourceCollisions(), + mapChangeReceiver, renderer); + } + + private float getPixelRatio() { + // check is user defined his own pixel ratio value + float pixelRatio = mapboxMapOptions.getPixelRatio(); + if (pixelRatio == 0) { + // if not, get the one defined by the system + pixelRatio = mapView.getDensity(); } + return pixelRatio; + } + + @Override + public void onSurfaceCreated() { + + } + + @Override + public void addOnCameraWillChangeListener(MapView.OnCameraWillChangeListener listener) { + mapChangeReceiver.addOnCameraWillChangeListener(listener); + } + + @Override + public void removeOnCameraWillChangeListener(MapView.OnCameraWillChangeListener listener) { + mapChangeReceiver.removeOnCameraWillChangeListener(listener); + } + + @Override + public void addOnCameraIsChangingListener(MapView.OnCameraIsChangingListener listener) { + mapChangeReceiver.addOnCameraIsChangingListener(listener); + } + + @Override + public void removeOnCameraIsChangingListener(MapView.OnCameraIsChangingListener listener) { + mapChangeReceiver.removeOnCameraIsChangingListener(listener); + } + + @Override + public void addOnCameraDidChangeListener(MapView.OnCameraDidChangeListener listener) { + mapChangeReceiver.addOnCameraDidChangeListener(listener); + } + + @Override + public void removeOnCameraDidChangeListener(MapView.OnCameraDidChangeListener listener) { + mapChangeReceiver.removeOnCameraDidChangeListener(listener); + } + + @Override + public void addOnWillStartLoadingMapListener(MapView.OnWillStartLoadingMapListener listener) { + mapChangeReceiver.addOnWillStartLoadingMapListener(listener); + } + + @Override + public void removeOnWillStartLoadingMapListener(MapView.OnWillStartLoadingMapListener listener) { + mapChangeReceiver.removeOnWillStartLoadingMapListener(listener); + } + + @Override + public void addOnDidFinishLoadingMapListener(MapView.OnDidFinishLoadingMapListener listener) { + mapChangeReceiver.addOnDidFinishLoadingMapListener(listener); + } + + @Override + public void removeOnDidFinishLoadingMapListener(MapView.OnDidFinishLoadingMapListener listener) { + mapChangeReceiver.removeOnDidFinishLoadingMapListener(listener); + } + + @Override + public void addOnDidFailLoadingMapListener(MapView.OnDidFailLoadingMapListener listener) { + mapChangeReceiver.addOnDidFailLoadingMapListener(listener); + } + + @Override + public void removeOnDidFailLoadingMapListener(MapView.OnDidFailLoadingMapListener listener) { + mapChangeReceiver.removeOnDidFailLoadingMapListener(listener); + } + + @Override + public void addOnWillStartRenderingFrameListener(MapView.OnWillStartRenderingFrameListener listener) { + mapChangeReceiver.addOnWillStartRenderingFrameListener(listener); + } + + @Override + public void removeOnWillStartRenderingFrameListener(MapView.OnWillStartRenderingFrameListener listener) { + + mapChangeReceiver.removeOnWillStartRenderingFrameListener(listener); + } + + @Override + public void addOnDidFinishRenderingFrameListener(MapView.OnDidFinishRenderingFrameListener listener) { + mapChangeReceiver.addOnDidFinishRenderingFrameListener(listener); + } + + @Override + public void removeOnDidFinishRenderingFrameListener(MapView.OnDidFinishRenderingFrameListener listener) { + + mapChangeReceiver.removeOnDidFinishRenderingFrameListener(listener); + } + + @Override + public void addOnWillStartRenderingMapListener(MapView.OnWillStartRenderingMapListener listener) { + mapChangeReceiver.addOnWillStartRenderingMapListener(listener); + } + + @Override + public void removeOnWillStartRenderingMapListener(MapView.OnWillStartRenderingMapListener listener) { + mapChangeReceiver.removeOnWillStartRenderingMapListener(listener); + } + + @Override + public void addOnDidFinishRenderingMapListener(MapView.OnDidFinishRenderingMapListener listener) { + mapChangeReceiver.addOnDidFinishRenderingMapListener(listener); + } + + @Override + public void removeOnDidFinishRenderingMapListener(MapView.OnDidFinishRenderingMapListener listener) { + mapChangeReceiver.removeOnDidFinishRenderingMapListener(listener); + } + + @Override + public void addOnDidBecomeIdleListener(MapView.OnDidBecomeIdleListener listener) { + mapChangeReceiver.addOnDidBecomeIdleListener(listener); + } + + @Override + public void removeOnDidBecomeIdleListener(MapView.OnDidBecomeIdleListener listener) { + mapChangeReceiver.removeOnDidBecomeIdleListener(listener); + } + + @Override + public void addOnDidFinishLoadingStyleListener(MapView.OnDidFinishLoadingStyleListener listener) { + mapChangeReceiver.addOnDidFinishLoadingStyleListener(listener); + } + + @Override + public void removeOnDidFinishLoadingStyleListener(MapView.OnDidFinishLoadingStyleListener listener) { + mapChangeReceiver.removeOnDidFinishLoadingStyleListener(listener); + } + + @Override + public void addOnSourceChangedListener(MapView.OnSourceChangedListener listener) { + mapChangeReceiver.addOnSourceChangedListener(listener); + } + + @Override + public void removeOnSourceChangedListener(MapView.OnSourceChangedListener listener) { + mapChangeReceiver.removeOnSourceChangedListener(listener); } } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java index b1f00b2b72..6f22585e96 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java @@ -39,9 +39,6 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.List; -import javax.microedition.khronos.egl.EGLConfig; -import javax.microedition.khronos.opengles.GL10; - import static com.mapbox.mapboxsdk.maps.widgets.CompassView.TIME_MAP_NORTH_ANIMATION; import static com.mapbox.mapboxsdk.maps.widgets.CompassView.TIME_WAIT_IDLE; @@ -62,8 +59,6 @@ import static com.mapbox.mapboxsdk.maps.widgets.CompassView.TIME_WAIT_IDLE; public class MapView extends FrameLayout implements NativeMapView.ViewCallback { private MapPresenter mapPresenter; - - private final MapChangeReceiver mapChangeReceiver = new MapChangeReceiver(); private final MapCallback mapCallback = new MapCallback(); private final InitialRenderCallback initialRenderCallback = new InitialRenderCallback(); @@ -73,7 +68,6 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { private MapboxMap mapboxMap; private AttributionClickListener attributionClickListener; private MapboxMapOptions mapboxMapOptions; - private MapRenderer mapRenderer; private boolean destroyed; private boolean hasSurface; @@ -124,8 +118,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { mapboxMapOptions = options; - mapPresenter = new MapPresenterImpl(this, context, options); - initialiseDrawingSurface(options); + mapPresenter = new MapPresenterImpl(this, context, options, new MapChangeReceiver()); } private void initialiseMap() { @@ -162,7 +155,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { // user input mapGestureDetector = new MapGestureDetector(context, transform, proj, uiSettings, annotationManager, cameraDispatcher); - mapKeyListener = new MapKeyListener(transform, uiSettings, mapGestureDetector); + mapKeyListener = new MapKeyListener(proj, transform, uiSettings, mapGestureDetector); // compass compassView.injectCompassAnimationListener(createCompassAnimationListener(cameraDispatcher)); @@ -264,20 +257,6 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { } } - private void initialiseDrawingSurface(MapboxMapOptions options) { - String localFontFamily = options.getLocalIdeographFontFamily(); - if (options.getTextureMode()) { - - } else { - - } - - boolean crossSourceCollisions = mapboxMapOptions.getCrossSourceCollisions(); - nativeMapView = new NativeMapView( - getContext(), getPixelRatio(), crossSourceCollisions, this, mapChangeReceiver, mapRenderer - ); - } - private void onSurfaceCreated() { hasSurface = true; post(new Runnable() { @@ -487,15 +466,6 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { } } - private float getPixelRatio() { - // check is user defined his own pixel ratio value - float pixelRatio = mapboxMapOptions.getPixelRatio(); - if (pixelRatio == 0) { - // if not, get the one defined by the system - pixelRatio = getResources().getDisplayMetrics().density; - } - return pixelRatio; - } // // ViewCallback @@ -517,7 +487,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { * @param listener The callback that's invoked when the camera region will change */ public void addOnCameraWillChangeListener(OnCameraWillChangeListener listener) { - mapChangeReceiver.addOnCameraWillChangeListener(listener); + mapPresenter.addOnCameraWillChangeListener(listener); } /** @@ -526,7 +496,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { * @param listener The callback that's invoked when the camera region will change */ public void removeOnCameraWillChangeListener(OnCameraWillChangeListener listener) { - mapChangeReceiver.removeOnCameraWillChangeListener(listener); + mapPresenter.removeOnCameraWillChangeListener(listener); } /** @@ -535,7 +505,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { * @param listener The callback that's invoked when the camera is changing */ public void addOnCameraIsChangingListener(OnCameraIsChangingListener listener) { - mapChangeReceiver.addOnCameraIsChangingListener(listener); + mapPresenter.addOnCameraIsChangingListener(listener); } /** @@ -544,7 +514,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { * @param listener The callback that's invoked when the camera is changing */ public void removeOnCameraIsChangingListener(OnCameraIsChangingListener listener) { - mapChangeReceiver.removeOnCameraIsChangingListener(listener); + mapPresenter.removeOnCameraIsChangingListener(listener); } /** @@ -553,7 +523,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { * @param listener The callback that's invoked when the camera region did change */ public void addOnCameraDidChangeListener(OnCameraDidChangeListener listener) { - mapChangeReceiver.addOnCameraDidChangeListener(listener); + mapPresenter.addOnCameraDidChangeListener(listener); } /** @@ -562,7 +532,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { * @param listener The callback that's invoked when the camera region did change */ public void removeOnCameraDidChangeListener(OnCameraDidChangeListener listener) { - mapChangeReceiver.removeOnCameraDidChangeListener(listener); + mapPresenter.removeOnCameraDidChangeListener(listener); } /** @@ -571,7 +541,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { * @param listener The callback that's invoked when the map will start loading */ public void addOnWillStartLoadingMapListener(OnWillStartLoadingMapListener listener) { - mapChangeReceiver.addOnWillStartLoadingMapListener(listener); + mapPresenter.addOnWillStartLoadingMapListener(listener); } /** @@ -580,7 +550,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { * @param listener The callback that's invoked when the map will start loading */ public void removeOnWillStartLoadingMapListener(OnWillStartLoadingMapListener listener) { - mapChangeReceiver.removeOnWillStartLoadingMapListener(listener); + mapPresenter.removeOnWillStartLoadingMapListener(listener); } /** @@ -589,7 +559,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { * @param listener The callback that's invoked when the map has finished loading */ public void addOnDidFinishLoadingMapListener(OnDidFinishLoadingMapListener listener) { - mapChangeReceiver.addOnDidFinishLoadingMapListener(listener); + mapPresenter.addOnDidFinishLoadingMapListener(listener); } /** @@ -598,7 +568,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { * @param listener The callback that's invoked when the map has finished loading */ public void removeOnDidFinishLoadingMapListener(OnDidFinishLoadingMapListener listener) { - mapChangeReceiver.removeOnDidFinishLoadingMapListener(listener); + mapPresenter.removeOnDidFinishLoadingMapListener(listener); } /** @@ -607,7 +577,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { * @param listener The callback that's invoked when the map failed to load */ public void addOnDidFailLoadingMapListener(OnDidFailLoadingMapListener listener) { - mapChangeReceiver.addOnDidFailLoadingMapListener(listener); + mapPresenter.addOnDidFailLoadingMapListener(listener); } /** @@ -616,7 +586,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { * @param listener The callback that's invoked when the map failed to load */ public void removeOnDidFailLoadingMapListener(OnDidFailLoadingMapListener listener) { - mapChangeReceiver.removeOnDidFailLoadingMapListener(listener); + mapPresenter.removeOnDidFailLoadingMapListener(listener); } /** @@ -625,7 +595,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { * @param listener The callback that's invoked when the camera will start rendering a frame */ public void addOnWillStartRenderingFrameListener(OnWillStartRenderingFrameListener listener) { - mapChangeReceiver.addOnWillStartRenderingFrameListener(listener); + mapPresenter.addOnWillStartRenderingFrameListener(listener); } /** @@ -634,7 +604,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { * @param listener The callback that's invoked when the camera will start rendering a frame */ public void removeOnWillStartRenderingFrameListener(OnWillStartRenderingFrameListener listener) { - mapChangeReceiver.removeOnWillStartRenderingFrameListener(listener); + mapPresenter.removeOnWillStartRenderingFrameListener(listener); } /** @@ -643,7 +613,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { * @param listener The callback that's invoked when the map has finished rendering a frame */ public void addOnDidFinishRenderingFrameListener(OnDidFinishRenderingFrameListener listener) { - mapChangeReceiver.addOnDidFinishRenderingFrameListener(listener); + mapPresenter.addOnDidFinishRenderingFrameListener(listener); } /** @@ -652,7 +622,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { * @param listener The callback that's invoked when the map has finished rendering a frame */ public void removeOnDidFinishRenderingFrameListener(OnDidFinishRenderingFrameListener listener) { - mapChangeReceiver.removeOnDidFinishRenderingFrameListener(listener); + mapPresenter.removeOnDidFinishRenderingFrameListener(listener); } /** @@ -661,7 +631,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { * @param listener The callback that's invoked when the map will start rendering */ public void addOnWillStartRenderingMapListener(OnWillStartRenderingMapListener listener) { - mapChangeReceiver.addOnWillStartRenderingMapListener(listener); + mapPresenter.addOnWillStartRenderingMapListener(listener); } /** @@ -670,7 +640,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { * @param listener The callback that's invoked when the map will start rendering */ public void removeOnWillStartRenderingMapListener(OnWillStartRenderingMapListener listener) { - mapChangeReceiver.removeOnWillStartRenderingMapListener(listener); + mapPresenter.removeOnWillStartRenderingMapListener(listener); } /** @@ -679,7 +649,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { * @param listener The callback that's invoked when the map has finished rendering */ public void addOnDidFinishRenderingMapListener(OnDidFinishRenderingMapListener listener) { - mapChangeReceiver.addOnDidFinishRenderingMapListener(listener); + mapPresenter.addOnDidFinishRenderingMapListener(listener); } /** @@ -688,7 +658,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { * @param listener The callback that's invoked when the map has has finished rendering. */ public void removeOnDidFinishRenderingMapListener(OnDidFinishRenderingMapListener listener) { - mapChangeReceiver.removeOnDidFinishRenderingMapListener(listener); + mapPresenter.removeOnDidFinishRenderingMapListener(listener); } /** @@ -697,7 +667,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { * @param listener The callback that's invoked when the map has entered the idle state. */ public void addOnDidBecomeIdleListener(OnDidBecomeIdleListener listener) { - mapChangeReceiver.addOnDidBecomeIdleListener(listener); + mapPresenter.addOnDidBecomeIdleListener(listener); } /** @@ -706,7 +676,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { * @param listener The callback that's invoked when the map has entered the idle state. */ public void removeOnDidBecomeIdleListener(OnDidBecomeIdleListener listener) { - mapChangeReceiver.removeOnDidBecomeIdleListener(listener); + mapPresenter.removeOnDidBecomeIdleListener(listener); } /** @@ -716,7 +686,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { * @param listener The callback that's invoked when the style has finished loading */ public void addOnDidFinishLoadingStyleListener(OnDidFinishLoadingStyleListener listener) { - mapChangeReceiver.addOnDidFinishLoadingStyleListener(listener); + mapPresenter.addOnDidFinishLoadingStyleListener(listener); } /** @@ -725,7 +695,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { * @param listener The callback that's invoked when the style has finished loading */ public void removeOnDidFinishLoadingStyleListener(OnDidFinishLoadingStyleListener listener) { - mapChangeReceiver.removeOnDidFinishLoadingStyleListener(listener); + mapPresenter.removeOnDidFinishLoadingStyleListener(listener); } /** @@ -734,7 +704,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { * @param listener The callback that's invoked when the source has changed */ public void addOnSourceChangedListener(OnSourceChangedListener listener) { - mapChangeReceiver.addOnSourceChangedListener(listener); + mapPresenter.addOnSourceChangedListener(listener); } /** @@ -743,7 +713,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { * @param listener The callback that's invoked when the source has changed */ public void removeOnSourceChangedListener(OnSourceChangedListener listener) { - mapChangeReceiver.removeOnSourceChangedListener(listener); + mapPresenter.removeOnSourceChangedListener(listener); } @@ -769,36 +739,40 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { setWillNotDraw(false); } - MapRenderer initializeTextureView(@Nullable String localFontFamily, boolean translucent) { + MapRenderer createTextureView(@NonNull MapPresenter mapPresenter, @Nullable String localFontFamily, + boolean translucent) { TextureView textureView = new TextureView(getContext()); - mapRenderer = new TextureViewMapRenderer(getContext(), - textureView, localFontFamily, translucent) { - @Override - protected void onSurfaceCreated(GL10 gl, EGLConfig config) { - MapView.this.onSurfaceCreated(); - super.onSurfaceCreated(gl, config); - } - }; - + MapRenderer mapRenderer = + new TextureViewMapRenderer(mapPresenter, getContext(), textureView, localFontFamily, translucent); addView(textureView, 0); return mapRenderer; } - MapRenderer initializeSurfaceView(@Nullable String localFontFamily) { + MapRenderer createSurfaceView(@NonNull MapPresenter mapPresenter, @Nullable String localFontFamily, + boolean renderSurfaceOnTop) { GLSurfaceView glSurfaceView = new GLSurfaceView(getContext()); - glSurfaceView.setZOrderMediaOverlay(mapboxMapOptions.getRenderSurfaceOnTop()); - mapRenderer = new GLSurfaceViewMapRenderer(getContext(), glSurfaceView, localFontFamily) { - @Override - public void onSurfaceCreated(GL10 gl, EGLConfig config) { - MapView.this.onSurfaceCreated(); - super.onSurfaceCreated(gl, config); - } - }; - + glSurfaceView.setZOrderMediaOverlay(renderSurfaceOnTop); + MapRenderer mapRenderer = new GLSurfaceViewMapRenderer(mapPresenter, getContext(), glSurfaceView, localFontFamily); addView(glSurfaceView, 0); return mapRenderer; } + float getDensity() { + return getResources().getDisplayMetrics().density; + } + + NativeMapView createNativeMapView(float pixelRatio, boolean crossSourceCollisions, + MapChangeReceiver mapChangeReceiver, MapRenderer renderer) { + return new NativeMapView( + FileSource.getInstance(getContext()), + pixelRatio, + crossSourceCollisions, + this, + mapChangeReceiver, + renderer + ); + } + /** * Interface definition for a callback to be invoked when the camera will change. * <p> diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java index 10942d521c..9fd4663b57 100755 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java @@ -10,6 +10,7 @@ import android.support.annotation.Keep; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.text.TextUtils; + import com.mapbox.geojson.Feature; import com.mapbox.geojson.Geometry; import com.mapbox.mapboxsdk.LibraryLoader; @@ -80,22 +81,15 @@ final class NativeMapView implements NativeMap { } // - // Constructors + // Constructor // - public NativeMapView(@NonNull final Context context, final boolean crossSourceCollisions, - final ViewCallback viewCallback, final StateCallback stateCallback, - final MapRenderer mapRenderer) { - this(context, context.getResources().getDisplayMetrics().density, crossSourceCollisions, viewCallback, - stateCallback, mapRenderer); - } - - public NativeMapView(final Context context, final float pixelRatio, final boolean crossSourceCollisions, - final ViewCallback viewCallback, final StateCallback stateCallback, + public NativeMapView(final FileSource fileSource, final float pixelRatio, final boolean crossSourceCollisions, + @Nullable final ViewCallback viewCallback, @Nullable final StateCallback stateCallback, final MapRenderer mapRenderer) { this.mapRenderer = mapRenderer; this.viewCallback = viewCallback; - this.fileSource = FileSource.getInstance(context); + this.fileSource = fileSource; this.pixelRatio = pixelRatio; this.thread = Thread.currentThread(); this.stateCallback = stateCallback; diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/UiSettings.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/UiSettings.java index 3e24b8c797..73cc343f28 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/UiSettings.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/UiSettings.java @@ -974,7 +974,9 @@ public final class UiSettings { * Returns the measured height of the MapView * * @return height in pixels + * @deprecated use {@link MapView#getHeight()} instead */ + @Deprecated public float getHeight() { return projection.getHeight(); } @@ -983,7 +985,9 @@ public final class UiSettings { * Returns the measured width of the MapView * * @return widht in pixels + * @deprecated use {@link MapView#getWidth()} instead */ + @Deprecated public float getWidth() { return projection.getWidth(); } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/MapRenderer.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/MapRenderer.java index a9bea97836..68719a5f59 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/MapRenderer.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/MapRenderer.java @@ -3,9 +3,10 @@ package com.mapbox.mapboxsdk.maps.renderer; import android.content.Context; import android.support.annotation.CallSuper; import android.support.annotation.Keep; - import android.support.annotation.NonNull; + import com.mapbox.mapboxsdk.log.Logger; +import com.mapbox.mapboxsdk.maps.MapPresenter; import com.mapbox.mapboxsdk.maps.MapboxMap; import com.mapbox.mapboxsdk.storage.FileSource; @@ -27,10 +28,13 @@ public abstract class MapRenderer implements MapRendererScheduler { // Holds the pointer to the native peer after initialisation private long nativePtr = 0; + private final MapPresenter mapPresenter; + private double expectedRenderTime = 0; private MapboxMap.OnFpsChangedListener onFpsChangedListener; - public MapRenderer(@NonNull Context context, String localIdeographFontFamily) { + public MapRenderer(@NonNull MapPresenter mapPresenter, @NonNull Context context, String localIdeographFontFamily) { + this.mapPresenter = mapPresenter; FileSource fileSource = FileSource.getInstance(context); float pixelRatio = context.getResources().getDisplayMetrics().density; String programCacheDir = FileSource.getInternalCachePath(context); @@ -65,6 +69,7 @@ public abstract class MapRenderer implements MapRendererScheduler { @CallSuper protected void onSurfaceCreated(GL10 gl, EGLConfig config) { + mapPresenter.onSurfaceCreated(); nativeOnSurfaceCreated(); } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/RendererPresenter.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/RendererPresenter.java new file mode 100644 index 0000000000..2a728c73b0 --- /dev/null +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/RendererPresenter.java @@ -0,0 +1,4 @@ +package com.mapbox.mapboxsdk.maps.renderer; + +public interface RendererPresenter { +} diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/RendererPresenterImpl.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/RendererPresenterImpl.java new file mode 100644 index 0000000000..8035420777 --- /dev/null +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/RendererPresenterImpl.java @@ -0,0 +1,15 @@ +package com.mapbox.mapboxsdk.maps.renderer; + +import android.support.annotation.NonNull; + +import com.mapbox.mapboxsdk.maps.MapPresenter; + +public class RendererPresenterImpl implements RendererPresenter { + private final MapRenderer renderer; + private final MapPresenter mapPresenter; + + public RendererPresenterImpl(@NonNull MapRenderer renderer, @NonNull MapPresenter mapPresenter) { + this.renderer = renderer; + this.mapPresenter = mapPresenter; + } +} diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/glsurfaceview/GLSurfaceViewMapRenderer.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/glsurfaceview/GLSurfaceViewMapRenderer.java index 584c9dcf57..6e86b6395a 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/glsurfaceview/GLSurfaceViewMapRenderer.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/glsurfaceview/GLSurfaceViewMapRenderer.java @@ -4,6 +4,8 @@ import android.content.Context; import android.opengl.GLSurfaceView; import android.support.annotation.NonNull; + +import com.mapbox.mapboxsdk.maps.MapPresenter; import com.mapbox.mapboxsdk.maps.renderer.MapRenderer; import com.mapbox.mapboxsdk.maps.renderer.egl.EGLConfigChooser; @@ -23,10 +25,10 @@ public class GLSurfaceViewMapRenderer extends MapRenderer implements GLSurfaceVi @NonNull private final GLSurfaceView glSurfaceView; - public GLSurfaceViewMapRenderer(Context context, + public GLSurfaceViewMapRenderer(@NonNull MapPresenter mapPresenter, Context context, GLSurfaceView glSurfaceView, String localIdeographFontFamily) { - super(context, localIdeographFontFamily); + super(mapPresenter, context, localIdeographFontFamily); this.glSurfaceView = glSurfaceView; glSurfaceView.setEGLContextClientVersion(2); glSurfaceView.setEGLConfigChooser(new EGLConfigChooser()); diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/textureview/TextureViewMapRenderer.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/textureview/TextureViewMapRenderer.java index ad25dea0d3..d58b6e0de4 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/textureview/TextureViewMapRenderer.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/textureview/TextureViewMapRenderer.java @@ -4,6 +4,7 @@ import android.content.Context; import android.support.annotation.NonNull; import android.view.TextureView; +import com.mapbox.mapboxsdk.maps.MapPresenter; import com.mapbox.mapboxsdk.maps.renderer.MapRenderer; import javax.microedition.khronos.egl.EGLConfig; @@ -27,11 +28,11 @@ public class TextureViewMapRenderer extends MapRenderer { * @param localIdeographFontFamily the local font family * @param translucentSurface the translucency flag */ - public TextureViewMapRenderer(@NonNull Context context, + public TextureViewMapRenderer(@NonNull MapPresenter mapPresenter, @NonNull Context context, @NonNull TextureView textureView, String localIdeographFontFamily, boolean translucentSurface) { - super(context, localIdeographFontFamily); + super(mapPresenter, context, localIdeographFontFamily); this.translucentSurface = translucentSurface; renderThread = new TextureViewRenderThread(textureView, this); renderThread.start(); diff --git a/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/maps/MapPresenterTest.kt b/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/maps/MapPresenterTest.kt index 612e8c3995..c1bf44e81c 100644 --- a/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/maps/MapPresenterTest.kt +++ b/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/maps/MapPresenterTest.kt @@ -1,11 +1,10 @@ package com.mapbox.mapboxsdk.maps import android.content.Context -import org.junit.After +import com.mapbox.mapboxsdk.maps.renderer.MapRenderer import org.junit.Before import org.junit.Test import org.junit.runner.RunWith -import org.mockito.Mockito import org.mockito.Mockito.* import org.mockito.junit.MockitoJUnitRunner @@ -15,18 +14,25 @@ class MapPresenterTest { private lateinit var mapView: MapView private lateinit var context: Context private lateinit var mapboxMapOptions: MapboxMapOptions + private lateinit var mapRenderer: MapRenderer + private lateinit var mapChangeReceiver: MapChangeReceiver @Before fun setup() { mapView = mock(MapView::class.java) context = mock(Context::class.java) + mapChangeReceiver = mock(MapChangeReceiver::class.java) mapboxMapOptions = mock(MapboxMapOptions::class.java) doReturn(0xFFF0E9E1.toInt()).`when`(mapboxMapOptions).foregroundLoadColor doReturn(false).`when`(mapboxMapOptions).textureMode doReturn(null).`when`(mapboxMapOptions).localIdeographFontFamily + doReturn(1f).`when`(mapboxMapOptions).pixelRatio - mapPresenter = MapPresenterImpl(mapView, context, mapboxMapOptions) + doReturn(mapRenderer).`when`(mapView).createSurfaceView(any(), any(), any()) + doReturn(mapRenderer).`when`(mapView).createTextureView(any(), any(), any()) + + mapPresenter = MapPresenterImpl(mapView, context, mapboxMapOptions, mapChangeReceiver) } @Test @@ -46,44 +52,67 @@ class MapPresenterTest { @Test fun init_initializeTextureView() { + reset(mapView) doReturn(true).`when`(mapboxMapOptions).textureMode doReturn(false).`when`(mapboxMapOptions).translucentTextureSurface doReturn(null).`when`(mapboxMapOptions).localIdeographFontFamily - mapPresenter = MapPresenterImpl(mapView, context, mapboxMapOptions) - verify(mapView).initializeTextureView(null, false) + mapPresenter = MapPresenterImpl(mapView, context, mapboxMapOptions, mapChangeReceiver) + verify(mapView).createTextureView(mapPresenter, null, false) } @Test - fun init_initializeTranslucentTextureView() { + fun init_initializeTextureView_translucent() { + reset(mapView) doReturn(true).`when`(mapboxMapOptions).textureMode doReturn(true).`when`(mapboxMapOptions).translucentTextureSurface doReturn(null).`when`(mapboxMapOptions).localIdeographFontFamily - mapPresenter = MapPresenterImpl(mapView, context, mapboxMapOptions) - verify(mapView).initializeTextureView(null, true) + mapPresenter = MapPresenterImpl(mapView, context, mapboxMapOptions, mapChangeReceiver) + verify(mapView).createTextureView(mapPresenter, null, true) } @Test - fun init_initializeTextureViewWithLocalFonts() { + fun init_initializeTextureView_localFonts() { + reset(mapView) doReturn(true).`when`(mapboxMapOptions).textureMode doReturn(true).`when`(mapboxMapOptions).translucentTextureSurface doReturn("comic-sans").`when`(mapboxMapOptions).localIdeographFontFamily - mapPresenter = MapPresenterImpl(mapView, context, mapboxMapOptions) - verify(mapView).initializeTextureView("comic-sans", true) + mapPresenter = MapPresenterImpl(mapView, context, mapboxMapOptions, mapChangeReceiver) + verify(mapView).createTextureView(mapPresenter, "comic-sans", true) } @Test fun init_initializeSurfaceView() { + reset(mapView) doReturn(false).`when`(mapboxMapOptions).textureMode doReturn(null).`when`(mapboxMapOptions).localIdeographFontFamily - mapPresenter = MapPresenterImpl(mapView, context, mapboxMapOptions) - verify(mapView).initializeSurfaceView(null) + doReturn(false).`when`(mapboxMapOptions).renderSurfaceOnTop + mapPresenter = MapPresenterImpl(mapView, context, mapboxMapOptions, mapChangeReceiver) + verify(mapView).createSurfaceView(mapPresenter, null, false) } @Test - fun init_initializeSurfaceViewWithLocalFonts() { + fun init_initializeSurfaceView_LocalFonts() { + reset(mapView) doReturn(false).`when`(mapboxMapOptions).textureMode doReturn("comic-sans").`when`(mapboxMapOptions).localIdeographFontFamily -// mapPresenter = MapPresenterImpl(mapView, context, mapboxMapOptions) -// verify(mapView).initializeSurfaceView("comic-sans") + doReturn(true).`when`(mapboxMapOptions).renderSurfaceOnTop + mapPresenter = MapPresenterImpl(mapView, context, mapboxMapOptions, mapChangeReceiver) + verify(mapView).createSurfaceView(mapPresenter, "comic-sans", true) + } + + @Test + fun init_initializeNativeMapView() { + reset(mapView) + doReturn(false).`when`(mapboxMapOptions).crossSourceCollisions + mapPresenter = MapPresenterImpl(mapView, context, mapboxMapOptions, mapChangeReceiver) + verify(mapView).createNativeMapView(1f, false, mapChangeReceiver, mapRenderer) + } + + @Test + fun init_initializeNativeMapView_crossSourceCollisions() { + reset(mapView) + doReturn(true).`when`(mapboxMapOptions).crossSourceCollisions + mapPresenter = MapPresenterImpl(mapView, context, mapboxMapOptions, mapChangeReceiver) + verify(mapView).createNativeMapView(1f, true, mapChangeReceiver, mapRenderer) } }
\ No newline at end of file diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/maps/BaseLayerTest.kt b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/maps/BaseLayerTest.kt index 4b3b97b481..f8ea46231f 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/maps/BaseLayerTest.kt +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/maps/BaseLayerTest.kt @@ -2,25 +2,26 @@ package com.mapbox.mapboxsdk.maps import android.support.test.InstrumentationRegistry import android.support.test.runner.AndroidJUnit4 +import com.mapbox.mapboxsdk.storage.FileSource import com.mapbox.mapboxsdk.style.layers.Layer import org.junit.runner.RunWith @RunWith(AndroidJUnit4::class) abstract class BaseLayerTest { - private lateinit var nativeMapView: NativeMapView + private lateinit var nativeMapView: NativeMapView - companion object { - const val WIDTH = 500 - const val HEIGHT = WIDTH - } + companion object { + const val WIDTH = 500 + const val HEIGHT = WIDTH + } - fun before() { - val context = InstrumentationRegistry.getContext() - nativeMapView = NativeMapView(context, false, null, null, NativeMapViewTest.DummyRenderer(context)) - nativeMapView.resizeView(WIDTH, HEIGHT) - } + fun before() { + val context = InstrumentationRegistry.getContext() + nativeMapView = NativeMapView(FileSource.getInstance(context), context.resources.displayMetrics.density, false, null, null, NativeMapViewTest.DummyRenderer(context)) + nativeMapView.resizeView(WIDTH, HEIGHT) + } - fun setupLayer(layer: Layer) { - nativeMapView.addLayer(layer) - } + fun setupLayer(layer: Layer) { + nativeMapView.addLayer(layer) + } }
\ No newline at end of file |