diff options
author | Alexander Shalamov <alexander.shalamov@mapbox.com> | 2019-05-31 16:10:47 +0300 |
---|---|---|
committer | Alexander Shalamov <alexander.shalamov@mapbox.com> | 2019-06-05 00:03:13 -0700 |
commit | 0ba0b8c04069718e476457d39fd7dc0f085ab734 (patch) | |
tree | 3d55ddad6376babb03a57aad288d9c5f8dcb9111 /platform/ios/src/MGLMapView+OpenGL.mm | |
parent | 012e3931bf1060df89923404ea9324f170139797 (diff) | |
download | qtlocation-mapboxgl-0ba0b8c04069718e476457d39fd7dc0f085ab734.tar.gz |
[ios] Calculate size of a MGLMapViewOpenGLImpl renderable from MGLMapView bounds
Fixes: #14807
Diffstat (limited to 'platform/ios/src/MGLMapView+OpenGL.mm')
-rw-r--r-- | platform/ios/src/MGLMapView+OpenGL.mm | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/platform/ios/src/MGLMapView+OpenGL.mm b/platform/ios/src/MGLMapView+OpenGL.mm index cd9489d96f..e599024e26 100644 --- a/platform/ios/src/MGLMapView+OpenGL.mm +++ b/platform/ios/src/MGLMapView+OpenGL.mm @@ -28,6 +28,14 @@ @end +namespace { +CGFloat contentScaleFactor() { + return [UIScreen instancesRespondToSelector:@selector(nativeScale)] + ? [[UIScreen mainScreen] nativeScale] + : [[UIScreen mainScreen] scale]; +} +} // namespace + class MGLMapViewOpenGLRenderableResource final : public mbgl::gl::RenderableResource { public: MGLMapViewOpenGLRenderableResource(MGLMapViewOpenGLImpl& backend_) @@ -124,9 +132,7 @@ void MGLMapViewOpenGLImpl::createView() { resource.glView = [[GLKView alloc] initWithFrame:mapView.bounds context:resource.context]; resource.glView.delegate = resource.delegate; resource.glView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; - resource.glView.contentScaleFactor = [UIScreen instancesRespondToSelector:@selector(nativeScale)] - ? [[UIScreen mainScreen] nativeScale] - : [[UIScreen mainScreen] scale]; + resource.glView.contentScaleFactor = contentScaleFactor(); resource.glView.contentMode = UIViewContentModeCenter; resource.glView.drawableStencilFormat = GLKViewDrawableStencilFormat8; resource.glView.drawableDepthFormat = GLKViewDrawableDepthFormat16; @@ -137,7 +143,6 @@ void MGLMapViewOpenGLImpl::createView() { eaglLayer.presentsWithTransaction = NO; [mapView insertSubview:resource.glView atIndex:0]; - size = resource.framebufferSize(); } UIView* MGLMapViewOpenGLImpl::getView() { @@ -247,6 +252,12 @@ UIImage* MGLMapViewOpenGLImpl::snapshot() { return resource.glView.snapshot; } +void MGLMapViewOpenGLImpl::layoutChanged() { + const auto scaleFactor = contentScaleFactor(); + size = { static_cast<uint32_t>(mapView.bounds.size.width * scaleFactor), + static_cast<uint32_t>(mapView.bounds.size.height * scaleFactor) }; +} + EAGLContext* MGLMapViewOpenGLImpl::getEAGLContext() { auto& resource = getResource<MGLMapViewOpenGLRenderableResource>(); return resource.context; |