diff options
author | Jason Wray <friedbunny@users.noreply.github.com> | 2018-04-16 19:17:37 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-04-16 19:17:37 -0400 |
commit | 3d3b87e020b727d38c56d0c9aa357cf8d4f14951 (patch) | |
tree | 9cbcad2fd736e65b6f7ee2f202329eba19ed6dd5 /platform/darwin/src/MGLOpenGLStyleLayer.mm | |
parent | d4e597eb94a90a816fcc480fa7b6719430a20b84 (diff) | |
download | qtlocation-mapboxgl-3d3b87e020b727d38c56d0c9aa357cf8d4f14951.tar.gz |
[ios] Fix type narrowing issue with MGLOpenGLStyleLayer projection matrix (#11664)
`CATransform3D`'s matrix is internally typed as `CGFloat`, which we were implicitly casting to from `double`.... except that the `-Wc++11-narrowing` flag disallows implicit narrowing casts and we need `double` precision, anyway.
* [ios, macos] Use MGLMatrix4 a 4x4 double matrix for MGLOpenGLStyleLayer projection matrix.
* [ios, macos] Don't use union for MGLMatrix4
Diffstat (limited to 'platform/darwin/src/MGLOpenGLStyleLayer.mm')
-rw-r--r-- | platform/darwin/src/MGLOpenGLStyleLayer.mm | 14 |
1 files changed, 2 insertions, 12 deletions
diff --git a/platform/darwin/src/MGLOpenGLStyleLayer.mm b/platform/darwin/src/MGLOpenGLStyleLayer.mm index 2389888632..d89fbc80c3 100644 --- a/platform/darwin/src/MGLOpenGLStyleLayer.mm +++ b/platform/darwin/src/MGLOpenGLStyleLayer.mm @@ -3,21 +3,11 @@ #import "MGLMapView_Private.h" #import "MGLStyle_Private.h" #import "MGLStyleLayer_Private.h" +#import "MGLGeometry_Private.h" #include <mbgl/style/layers/custom_layer.hpp> #include <mbgl/math/wrap.hpp> - -CATransform3D CATransform3DMake(std::array<double, 16> array) { - CATransform3D t = { - .m11 = array[0], .m12 = array[1], .m13 = array[2], .m14 = array[3], - .m21 = array[4], .m22 = array[5], .m23 = array[6], .m24 = array[7], - .m31 = array[8], .m32 = array[9], .m33 = array[10], .m34 = array[11], - .m41 = array[12], .m42 = array[13], .m43 = array[14], .m44 = array[15] - }; - return t; -} - class MGLOpenGLLayerHost : public mbgl::style::CustomLayerHost { public: MGLOpenGLLayerHost(MGLOpenGLStyleLayer *styleLayer) { @@ -42,7 +32,7 @@ public: .direction = mbgl::util::wrap(params.bearing, 0., 360.), .pitch = static_cast<CGFloat>(params.pitch), .fieldOfView = static_cast<CGFloat>(params.fieldOfView), - .projectionMatrix = CATransform3DMake(params.projectionMatrix) + .projectionMatrix = MGLMatrix4Make(params.projectionMatrix) }; [layer drawInMapView:layer.style.mapView withContext:drawingContext]; } |