1use core::ffi::*;
4use core::ptr::NonNull;
5use objc2::__framework_prelude::*;
6#[cfg(feature = "objc2-core-foundation")]
7use objc2_core_foundation::*;
8#[cfg(feature = "objc2-core-location")]
9use objc2_core_location::*;
10use objc2_foundation::*;
11
12use crate::*;
13
14#[cfg(feature = "objc2-core-location")]
16#[repr(C)]
17#[derive(Clone, Copy, Debug, PartialEq)]
18pub struct MKCoordinateSpan {
19 pub latitudeDelta: CLLocationDegrees,
20 pub longitudeDelta: CLLocationDegrees,
21}
22
23#[cfg(feature = "objc2-core-location")]
24unsafe impl Encode for MKCoordinateSpan {
25 const ENCODING: Encoding = Encoding::Struct(
26 "?",
27 &[<CLLocationDegrees>::ENCODING, <CLLocationDegrees>::ENCODING],
28 );
29}
30
31#[cfg(feature = "objc2-core-location")]
32unsafe impl RefEncode for MKCoordinateSpan {
33 const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
34}
35
36#[cfg(feature = "objc2-core-location")]
38#[repr(C)]
39#[derive(Clone, Copy, Debug, PartialEq)]
40pub struct MKCoordinateRegion {
41 pub center: CLLocationCoordinate2D,
42 pub span: MKCoordinateSpan,
43}
44
45#[cfg(feature = "objc2-core-location")]
46unsafe impl Encode for MKCoordinateRegion {
47 const ENCODING: Encoding = Encoding::Struct(
48 "?",
49 &[
50 <CLLocationCoordinate2D>::ENCODING,
51 <MKCoordinateSpan>::ENCODING,
52 ],
53 );
54}
55
56#[cfg(feature = "objc2-core-location")]
57unsafe impl RefEncode for MKCoordinateRegion {
58 const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
59}
60
61#[cfg(feature = "objc2-core-location")]
62impl MKCoordinateSpan {
63 }
65
66#[cfg(feature = "objc2-core-location")]
67impl MKCoordinateRegion {
68 #[doc(alias = "MKCoordinateRegionMakeWithDistance")]
71 #[cfg(feature = "objc2-core-location")]
72 #[inline]
73 pub unsafe fn with_distance(
74 center_coordinate: CLLocationCoordinate2D,
75 latitudinal_meters: CLLocationDistance,
76 longitudinal_meters: CLLocationDistance,
77 ) -> MKCoordinateRegion {
78 extern "C-unwind" {
79 fn MKCoordinateRegionMakeWithDistance(
80 center_coordinate: CLLocationCoordinate2D,
81 latitudinal_meters: CLLocationDistance,
82 longitudinal_meters: CLLocationDistance,
83 ) -> MKCoordinateRegion;
84 }
85 unsafe {
86 MKCoordinateRegionMakeWithDistance(
87 center_coordinate,
88 latitudinal_meters,
89 longitudinal_meters,
90 )
91 }
92 }
93}
94
95#[repr(C)]
97#[derive(Clone, Copy, Debug, PartialEq)]
98pub struct MKMapPoint {
99 pub x: c_double,
100 pub y: c_double,
101}
102
103unsafe impl Encode for MKMapPoint {
104 const ENCODING: Encoding = Encoding::Struct("?", &[<c_double>::ENCODING, <c_double>::ENCODING]);
105}
106
107unsafe impl RefEncode for MKMapPoint {
108 const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
109}
110
111#[repr(C)]
113#[derive(Clone, Copy, Debug, PartialEq)]
114pub struct MKMapSize {
115 pub width: c_double,
116 pub height: c_double,
117}
118
119unsafe impl Encode for MKMapSize {
120 const ENCODING: Encoding = Encoding::Struct("?", &[<c_double>::ENCODING, <c_double>::ENCODING]);
121}
122
123unsafe impl RefEncode for MKMapSize {
124 const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
125}
126
127#[repr(C)]
129#[derive(Clone, Copy, Debug, PartialEq)]
130pub struct MKMapRect {
131 pub origin: MKMapPoint,
132 pub size: MKMapSize,
133}
134
135unsafe impl Encode for MKMapRect {
136 const ENCODING: Encoding =
137 Encoding::Struct("?", &[<MKMapPoint>::ENCODING, <MKMapSize>::ENCODING]);
138}
139
140unsafe impl RefEncode for MKMapRect {
141 const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
142}
143
144#[cfg(feature = "objc2-core-foundation")]
146pub type MKZoomScale = CGFloat;
147
148extern "C" {
149 pub static MKMapSizeWorld: MKMapSize;
151}
152
153extern "C" {
154 pub static MKMapRectWorld: MKMapRect;
156}
157
158impl MKMapPoint {
159 #[doc(alias = "MKMapPointForCoordinate")]
160 #[cfg(feature = "objc2-core-location")]
161 #[inline]
162 pub unsafe fn for_coordinate(coordinate: CLLocationCoordinate2D) -> MKMapPoint {
163 extern "C-unwind" {
164 fn MKMapPointForCoordinate(coordinate: CLLocationCoordinate2D) -> MKMapPoint;
165 }
166 unsafe { MKMapPointForCoordinate(coordinate) }
167 }
168}
169
170extern "C-unwind" {
171 #[cfg(feature = "objc2-core-location")]
172 pub fn MKCoordinateForMapPoint(map_point: MKMapPoint) -> CLLocationCoordinate2D;
173}
174
175extern "C-unwind" {
176 #[cfg(feature = "objc2-core-location")]
177 pub fn MKMetersPerMapPointAtLatitude(latitude: CLLocationDegrees) -> CLLocationDistance;
178}
179
180extern "C-unwind" {
181 #[cfg(feature = "objc2-core-location")]
182 pub fn MKMapPointsPerMeterAtLatitude(latitude: CLLocationDegrees) -> c_double;
183}
184
185extern "C-unwind" {
186 #[cfg(feature = "objc2-core-location")]
187 pub fn MKMetersBetweenMapPoints(a: MKMapPoint, b: MKMapPoint) -> CLLocationDistance;
188}
189
190extern "C" {
191 pub static MKMapRectNull: MKMapRect;
193}
194
195impl MKMapPoint {
196 }
198
199impl MKMapSize {
200 }
202
203impl MKMapRect {
204 }
222
223impl MKMapPoint {
224 }
226
227impl MKMapSize {
228 }
230
231impl MKMapRect {
232 }
238
239impl MKMapRect {
246 #[doc(alias = "MKMapRectUnion")]
247 #[inline]
248 pub unsafe fn union(self: MKMapRect, rect2: MKMapRect) -> MKMapRect {
249 extern "C-unwind" {
250 fn MKMapRectUnion(rect1: MKMapRect, rect2: MKMapRect) -> MKMapRect;
251 }
252 unsafe { MKMapRectUnion(self, rect2) }
253 }
254
255 #[doc(alias = "MKMapRectIntersection")]
256 #[inline]
257 pub unsafe fn intersection(self: MKMapRect, rect2: MKMapRect) -> MKMapRect {
258 extern "C-unwind" {
259 fn MKMapRectIntersection(rect1: MKMapRect, rect2: MKMapRect) -> MKMapRect;
260 }
261 unsafe { MKMapRectIntersection(self, rect2) }
262 }
263
264 #[doc(alias = "MKMapRectInset")]
265 #[inline]
266 pub unsafe fn inset(self: MKMapRect, dx: c_double, dy: c_double) -> MKMapRect {
267 extern "C-unwind" {
268 fn MKMapRectInset(rect: MKMapRect, dx: c_double, dy: c_double) -> MKMapRect;
269 }
270 unsafe { MKMapRectInset(self, dx, dy) }
271 }
272
273 #[doc(alias = "MKMapRectOffset")]
274 #[inline]
275 pub unsafe fn offset(self: MKMapRect, dx: c_double, dy: c_double) -> MKMapRect {
276 extern "C-unwind" {
277 fn MKMapRectOffset(rect: MKMapRect, dx: c_double, dy: c_double) -> MKMapRect;
278 }
279 unsafe { MKMapRectOffset(self, dx, dy) }
280 }
281
282 #[doc(alias = "MKMapRectDivide")]
283 #[cfg(feature = "objc2-core-foundation")]
284 #[inline]
285 pub unsafe fn divide(
286 self: MKMapRect,
287 slice: NonNull<MKMapRect>,
288 remainder: NonNull<MKMapRect>,
289 amount: c_double,
290 edge: CGRectEdge,
291 ) {
292 extern "C-unwind" {
293 fn MKMapRectDivide(
294 rect: MKMapRect,
295 slice: NonNull<MKMapRect>,
296 remainder: NonNull<MKMapRect>,
297 amount: c_double,
298 edge: CGRectEdge,
299 );
300 }
301 unsafe { MKMapRectDivide(self, slice, remainder, amount, edge) }
302 }
303
304 #[doc(alias = "MKMapRectContainsPoint")]
305 #[inline]
306 pub unsafe fn contains_point(self: MKMapRect, point: MKMapPoint) -> bool {
307 extern "C-unwind" {
308 fn MKMapRectContainsPoint(rect: MKMapRect, point: MKMapPoint) -> Bool;
309 }
310 unsafe { MKMapRectContainsPoint(self, point) }.as_bool()
311 }
312
313 #[doc(alias = "MKMapRectContainsRect")]
314 #[inline]
315 pub unsafe fn contains_rect(self: MKMapRect, rect2: MKMapRect) -> bool {
316 extern "C-unwind" {
317 fn MKMapRectContainsRect(rect1: MKMapRect, rect2: MKMapRect) -> Bool;
318 }
319 unsafe { MKMapRectContainsRect(self, rect2) }.as_bool()
320 }
321
322 #[doc(alias = "MKMapRectIntersectsRect")]
323 #[inline]
324 pub unsafe fn intersects_rect(self: MKMapRect, rect2: MKMapRect) -> bool {
325 extern "C-unwind" {
326 fn MKMapRectIntersectsRect(rect1: MKMapRect, rect2: MKMapRect) -> Bool;
327 }
328 unsafe { MKMapRectIntersectsRect(self, rect2) }.as_bool()
329 }
330}
331
332#[cfg(feature = "objc2-core-location")]
333impl MKCoordinateRegion {
334 #[doc(alias = "MKCoordinateRegionForMapRect")]
335 #[cfg(feature = "objc2-core-location")]
336 #[inline]
337 pub unsafe fn for_map_rect(rect: MKMapRect) -> MKCoordinateRegion {
338 extern "C-unwind" {
339 fn MKCoordinateRegionForMapRect(rect: MKMapRect) -> MKCoordinateRegion;
340 }
341 unsafe { MKCoordinateRegionForMapRect(rect) }
342 }
343}
344
345impl MKMapRect {
346 #[doc(alias = "MKMapRectSpans180thMeridian")]
347 #[inline]
348 pub unsafe fn spans180th_meridian(self: MKMapRect) -> bool {
349 extern "C-unwind" {
350 fn MKMapRectSpans180thMeridian(rect: MKMapRect) -> Bool;
351 }
352 unsafe { MKMapRectSpans180thMeridian(self) }.as_bool()
353 }
354
355 #[doc(alias = "MKMapRectRemainder")]
356 #[inline]
357 pub unsafe fn remainder(self: MKMapRect) -> MKMapRect {
358 extern "C-unwind" {
359 fn MKMapRectRemainder(rect: MKMapRect) -> MKMapRect;
360 }
361 unsafe { MKMapRectRemainder(self) }
362 }
363}
364
365mod private_NSValueMapKitGeometryExtensions {
366 pub trait Sealed {}
367}
368
369pub unsafe trait NSValueMapKitGeometryExtensions:
371 ClassType + Sized + private_NSValueMapKitGeometryExtensions::Sealed
372{
373 extern_methods!(
374 #[cfg(feature = "objc2-core-location")]
375 #[unsafe(method(valueWithMKCoordinate:))]
376 #[unsafe(method_family = none)]
377 unsafe fn valueWithMKCoordinate(coordinate: CLLocationCoordinate2D) -> Retained<NSValue>;
378
379 #[cfg(feature = "objc2-core-location")]
380 #[unsafe(method(valueWithMKCoordinateSpan:))]
381 #[unsafe(method_family = none)]
382 unsafe fn valueWithMKCoordinateSpan(span: MKCoordinateSpan) -> Retained<NSValue>;
383
384 #[cfg(feature = "objc2-core-location")]
385 #[unsafe(method(MKCoordinateValue))]
386 #[unsafe(method_family = none)]
387 unsafe fn MKCoordinateValue(&self) -> CLLocationCoordinate2D;
388
389 #[cfg(feature = "objc2-core-location")]
390 #[unsafe(method(MKCoordinateSpanValue))]
391 #[unsafe(method_family = none)]
392 unsafe fn MKCoordinateSpanValue(&self) -> MKCoordinateSpan;
393 );
394}
395
396impl private_NSValueMapKitGeometryExtensions::Sealed for NSValue {}
397unsafe impl NSValueMapKitGeometryExtensions for NSValue {}
398
399extern "C-unwind" {
400 #[cfg(feature = "objc2-core-location")]
401 #[deprecated = "renamed to `MKCoordinateRegion::with_distance`"]
402 pub fn MKCoordinateRegionMakeWithDistance(
403 center_coordinate: CLLocationCoordinate2D,
404 latitudinal_meters: CLLocationDistance,
405 longitudinal_meters: CLLocationDistance,
406 ) -> MKCoordinateRegion;
407}
408
409extern "C-unwind" {
410 #[cfg(feature = "objc2-core-location")]
411 #[deprecated = "renamed to `MKMapPoint::for_coordinate`"]
412 pub fn MKMapPointForCoordinate(coordinate: CLLocationCoordinate2D) -> MKMapPoint;
413}
414
415extern "C-unwind" {
416 #[deprecated = "renamed to `MKMapRect::union`"]
417 pub fn MKMapRectUnion(rect1: MKMapRect, rect2: MKMapRect) -> MKMapRect;
418}
419
420extern "C-unwind" {
421 #[deprecated = "renamed to `MKMapRect::intersection`"]
422 pub fn MKMapRectIntersection(rect1: MKMapRect, rect2: MKMapRect) -> MKMapRect;
423}
424
425extern "C-unwind" {
426 #[deprecated = "renamed to `MKMapRect::inset`"]
427 pub fn MKMapRectInset(rect: MKMapRect, dx: c_double, dy: c_double) -> MKMapRect;
428}
429
430extern "C-unwind" {
431 #[deprecated = "renamed to `MKMapRect::offset`"]
432 pub fn MKMapRectOffset(rect: MKMapRect, dx: c_double, dy: c_double) -> MKMapRect;
433}
434
435extern "C-unwind" {
436 #[cfg(feature = "objc2-core-foundation")]
437 #[deprecated = "renamed to `MKMapRect::divide`"]
438 pub fn MKMapRectDivide(
439 rect: MKMapRect,
440 slice: NonNull<MKMapRect>,
441 remainder: NonNull<MKMapRect>,
442 amount: c_double,
443 edge: CGRectEdge,
444 );
445}
446
447#[deprecated = "renamed to `MKMapRect::contains_point`"]
448#[inline]
449pub unsafe extern "C-unwind" fn MKMapRectContainsPoint(rect: MKMapRect, point: MKMapPoint) -> bool {
450 extern "C-unwind" {
451 fn MKMapRectContainsPoint(rect: MKMapRect, point: MKMapPoint) -> Bool;
452 }
453 unsafe { MKMapRectContainsPoint(rect, point) }.as_bool()
454}
455
456#[deprecated = "renamed to `MKMapRect::contains_rect`"]
457#[inline]
458pub unsafe extern "C-unwind" fn MKMapRectContainsRect(rect1: MKMapRect, rect2: MKMapRect) -> bool {
459 extern "C-unwind" {
460 fn MKMapRectContainsRect(rect1: MKMapRect, rect2: MKMapRect) -> Bool;
461 }
462 unsafe { MKMapRectContainsRect(rect1, rect2) }.as_bool()
463}
464
465#[deprecated = "renamed to `MKMapRect::intersects_rect`"]
466#[inline]
467pub unsafe extern "C-unwind" fn MKMapRectIntersectsRect(
468 rect1: MKMapRect,
469 rect2: MKMapRect,
470) -> bool {
471 extern "C-unwind" {
472 fn MKMapRectIntersectsRect(rect1: MKMapRect, rect2: MKMapRect) -> Bool;
473 }
474 unsafe { MKMapRectIntersectsRect(rect1, rect2) }.as_bool()
475}
476
477extern "C-unwind" {
478 #[cfg(feature = "objc2-core-location")]
479 #[deprecated = "renamed to `MKCoordinateRegion::for_map_rect`"]
480 pub fn MKCoordinateRegionForMapRect(rect: MKMapRect) -> MKCoordinateRegion;
481}
482
483#[deprecated = "renamed to `MKMapRect::spans180th_meridian`"]
484#[inline]
485pub unsafe extern "C-unwind" fn MKMapRectSpans180thMeridian(rect: MKMapRect) -> bool {
486 extern "C-unwind" {
487 fn MKMapRectSpans180thMeridian(rect: MKMapRect) -> Bool;
488 }
489 unsafe { MKMapRectSpans180thMeridian(rect) }.as_bool()
490}
491
492extern "C-unwind" {
493 #[deprecated = "renamed to `MKMapRect::remainder`"]
494 pub fn MKMapRectRemainder(rect: MKMapRect) -> MKMapRect;
495}