objc2_app_kit/generated/
NSCollectionViewCompositionalLayout.rs

1//! This file has been automatically generated by `objc2`'s `header-translator`.
2//! DO NOT EDIT
3use core::ffi::*;
4use core::ptr::NonNull;
5use objc2::__framework_prelude::*;
6#[cfg(feature = "objc2-core-foundation")]
7use objc2_core_foundation::*;
8use objc2_foundation::*;
9
10use crate::*;
11
12/// [Apple's documentation](https://developer.apple.com/documentation/appkit/nsdirectionalrectedge?language=objc)
13// NS_OPTIONS
14#[repr(transparent)]
15#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
16pub struct NSDirectionalRectEdge(pub NSUInteger);
17bitflags::bitflags! {
18    impl NSDirectionalRectEdge: NSUInteger {
19        #[doc(alias = "NSDirectionalRectEdgeNone")]
20        const None = 0;
21        #[doc(alias = "NSDirectionalRectEdgeTop")]
22        const Top = 1<<0;
23        #[doc(alias = "NSDirectionalRectEdgeLeading")]
24        const Leading = 1<<1;
25        #[doc(alias = "NSDirectionalRectEdgeBottom")]
26        const Bottom = 1<<2;
27        #[doc(alias = "NSDirectionalRectEdgeTrailing")]
28        const Trailing = 1<<3;
29        #[doc(alias = "NSDirectionalRectEdgeAll")]
30        const All = NSDirectionalRectEdge::Top.0|NSDirectionalRectEdge::Leading.0|NSDirectionalRectEdge::Bottom.0|NSDirectionalRectEdge::Trailing.0;
31    }
32}
33
34unsafe impl Encode for NSDirectionalRectEdge {
35    const ENCODING: Encoding = NSUInteger::ENCODING;
36}
37
38unsafe impl RefEncode for NSDirectionalRectEdge {
39    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
40}
41
42/// [Apple's documentation](https://developer.apple.com/documentation/appkit/nsdirectionaledgeinsets?language=objc)
43#[cfg(feature = "objc2-core-foundation")]
44#[repr(C)]
45#[derive(Clone, Copy, Debug, PartialEq)]
46pub struct NSDirectionalEdgeInsets {
47    pub top: CGFloat,
48    pub leading: CGFloat,
49    pub bottom: CGFloat,
50    pub trailing: CGFloat,
51}
52
53#[cfg(feature = "objc2-core-foundation")]
54unsafe impl Encode for NSDirectionalEdgeInsets {
55    const ENCODING: Encoding = Encoding::Struct(
56        "NSDirectionalEdgeInsets",
57        &[
58            <CGFloat>::ENCODING,
59            <CGFloat>::ENCODING,
60            <CGFloat>::ENCODING,
61            <CGFloat>::ENCODING,
62        ],
63    );
64}
65
66#[cfg(feature = "objc2-core-foundation")]
67unsafe impl RefEncode for NSDirectionalEdgeInsets {
68    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
69}
70
71#[cfg(feature = "objc2-core-foundation")]
72unsafe impl Send for NSDirectionalEdgeInsets {}
73
74#[cfg(feature = "objc2-core-foundation")]
75unsafe impl Sync for NSDirectionalEdgeInsets {}
76
77extern "C" {
78    /// [Apple's documentation](https://developer.apple.com/documentation/appkit/nsdirectionaledgeinsetszero?language=objc)
79    #[cfg(feature = "objc2-core-foundation")]
80    pub static NSDirectionalEdgeInsetsZero: NSDirectionalEdgeInsets;
81}
82
83/// [Apple's documentation](https://developer.apple.com/documentation/appkit/nsrectalignment?language=objc)
84// NS_ENUM
85#[repr(transparent)]
86#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
87pub struct NSRectAlignment(pub NSInteger);
88impl NSRectAlignment {
89    #[doc(alias = "NSRectAlignmentNone")]
90    pub const None: Self = Self(0);
91    #[doc(alias = "NSRectAlignmentTop")]
92    pub const Top: Self = Self(1);
93    #[doc(alias = "NSRectAlignmentTopLeading")]
94    pub const TopLeading: Self = Self(2);
95    #[doc(alias = "NSRectAlignmentLeading")]
96    pub const Leading: Self = Self(3);
97    #[doc(alias = "NSRectAlignmentBottomLeading")]
98    pub const BottomLeading: Self = Self(4);
99    #[doc(alias = "NSRectAlignmentBottom")]
100    pub const Bottom: Self = Self(5);
101    #[doc(alias = "NSRectAlignmentBottomTrailing")]
102    pub const BottomTrailing: Self = Self(6);
103    #[doc(alias = "NSRectAlignmentTrailing")]
104    pub const Trailing: Self = Self(7);
105    #[doc(alias = "NSRectAlignmentTopTrailing")]
106    pub const TopTrailing: Self = Self(8);
107}
108
109unsafe impl Encode for NSRectAlignment {
110    const ENCODING: Encoding = NSInteger::ENCODING;
111}
112
113unsafe impl RefEncode for NSRectAlignment {
114    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
115}
116
117// TODO: pub fn NSDirectionalEdgeInsetsMake(top: CGFloat,leading: CGFloat,bottom: CGFloat,trailing: CGFloat,) -> NSDirectionalEdgeInsets;
118
119extern_class!(
120    /// [Apple's documentation](https://developer.apple.com/documentation/appkit/nscollectionviewcompositionallayoutconfiguration?language=objc)
121    #[unsafe(super(NSObject))]
122    #[thread_kind = MainThreadOnly]
123    #[derive(Debug, PartialEq, Eq, Hash)]
124    pub struct NSCollectionViewCompositionalLayoutConfiguration;
125);
126
127unsafe impl NSCopying for NSCollectionViewCompositionalLayoutConfiguration {}
128
129unsafe impl CopyingHelper for NSCollectionViewCompositionalLayoutConfiguration {
130    type Result = Self;
131}
132
133unsafe impl NSObjectProtocol for NSCollectionViewCompositionalLayoutConfiguration {}
134
135impl NSCollectionViewCompositionalLayoutConfiguration {
136    extern_methods!(
137        #[cfg(feature = "NSCollectionViewFlowLayout")]
138        #[unsafe(method(scrollDirection))]
139        #[unsafe(method_family = none)]
140        pub unsafe fn scrollDirection(&self) -> NSCollectionViewScrollDirection;
141
142        #[cfg(feature = "NSCollectionViewFlowLayout")]
143        /// Setter for [`scrollDirection`][Self::scrollDirection].
144        #[unsafe(method(setScrollDirection:))]
145        #[unsafe(method_family = none)]
146        pub unsafe fn setScrollDirection(&self, scroll_direction: NSCollectionViewScrollDirection);
147
148        #[cfg(feature = "objc2-core-foundation")]
149        #[unsafe(method(interSectionSpacing))]
150        #[unsafe(method_family = none)]
151        pub unsafe fn interSectionSpacing(&self) -> CGFloat;
152
153        #[cfg(feature = "objc2-core-foundation")]
154        /// Setter for [`interSectionSpacing`][Self::interSectionSpacing].
155        #[unsafe(method(setInterSectionSpacing:))]
156        #[unsafe(method_family = none)]
157        pub unsafe fn setInterSectionSpacing(&self, inter_section_spacing: CGFloat);
158
159        #[unsafe(method(boundarySupplementaryItems))]
160        #[unsafe(method_family = none)]
161        pub unsafe fn boundarySupplementaryItems(
162            &self,
163        ) -> Retained<NSArray<NSCollectionLayoutBoundarySupplementaryItem>>;
164
165        /// Setter for [`boundarySupplementaryItems`][Self::boundarySupplementaryItems].
166        #[unsafe(method(setBoundarySupplementaryItems:))]
167        #[unsafe(method_family = none)]
168        pub unsafe fn setBoundarySupplementaryItems(
169            &self,
170            boundary_supplementary_items: &NSArray<NSCollectionLayoutBoundarySupplementaryItem>,
171        );
172    );
173}
174
175/// Methods declared on superclass `NSObject`.
176impl NSCollectionViewCompositionalLayoutConfiguration {
177    extern_methods!(
178        #[unsafe(method(init))]
179        #[unsafe(method_family = init)]
180        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
181
182        #[unsafe(method(new))]
183        #[unsafe(method_family = new)]
184        pub unsafe fn new(mtm: MainThreadMarker) -> Retained<Self>;
185    );
186}
187
188/// [Apple's documentation](https://developer.apple.com/documentation/appkit/nscollectionviewcompositionallayoutsectionprovider?language=objc)
189#[cfg(feature = "block2")]
190pub type NSCollectionViewCompositionalLayoutSectionProvider = *mut block2::Block<
191    dyn Fn(
192        NSInteger,
193        NonNull<ProtocolObject<dyn NSCollectionLayoutEnvironment>>,
194    ) -> *mut NSCollectionLayoutSection,
195>;
196
197extern_class!(
198    /// [Apple's documentation](https://developer.apple.com/documentation/appkit/nscollectionviewcompositionallayout?language=objc)
199    #[unsafe(super(NSCollectionViewLayout, NSObject))]
200    #[derive(Debug, PartialEq, Eq, Hash)]
201    #[cfg(feature = "NSCollectionViewLayout")]
202    pub struct NSCollectionViewCompositionalLayout;
203);
204
205#[cfg(feature = "NSCollectionViewLayout")]
206unsafe impl NSCoding for NSCollectionViewCompositionalLayout {}
207
208#[cfg(feature = "NSCollectionViewLayout")]
209unsafe impl NSObjectProtocol for NSCollectionViewCompositionalLayout {}
210
211#[cfg(feature = "NSCollectionViewLayout")]
212impl NSCollectionViewCompositionalLayout {
213    extern_methods!(
214        #[unsafe(method(initWithSection:))]
215        #[unsafe(method_family = init)]
216        pub unsafe fn initWithSection(
217            this: Allocated<Self>,
218            section: &NSCollectionLayoutSection,
219        ) -> Retained<Self>;
220
221        #[unsafe(method(initWithSection:configuration:))]
222        #[unsafe(method_family = init)]
223        pub unsafe fn initWithSection_configuration(
224            this: Allocated<Self>,
225            section: &NSCollectionLayoutSection,
226            configuration: &NSCollectionViewCompositionalLayoutConfiguration,
227        ) -> Retained<Self>;
228
229        #[cfg(feature = "block2")]
230        #[unsafe(method(initWithSectionProvider:))]
231        #[unsafe(method_family = init)]
232        pub unsafe fn initWithSectionProvider(
233            this: Allocated<Self>,
234            section_provider: NSCollectionViewCompositionalLayoutSectionProvider,
235        ) -> Retained<Self>;
236
237        #[cfg(feature = "block2")]
238        #[unsafe(method(initWithSectionProvider:configuration:))]
239        #[unsafe(method_family = init)]
240        pub unsafe fn initWithSectionProvider_configuration(
241            this: Allocated<Self>,
242            section_provider: NSCollectionViewCompositionalLayoutSectionProvider,
243            configuration: &NSCollectionViewCompositionalLayoutConfiguration,
244        ) -> Retained<Self>;
245
246        #[unsafe(method(init))]
247        #[unsafe(method_family = init)]
248        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
249
250        #[unsafe(method(new))]
251        #[unsafe(method_family = new)]
252        pub unsafe fn new(mtm: MainThreadMarker) -> Retained<Self>;
253
254        #[unsafe(method(configuration))]
255        #[unsafe(method_family = none)]
256        pub unsafe fn configuration(
257            &self,
258        ) -> Retained<NSCollectionViewCompositionalLayoutConfiguration>;
259
260        /// Setter for [`configuration`][Self::configuration].
261        #[unsafe(method(setConfiguration:))]
262        #[unsafe(method_family = none)]
263        pub unsafe fn setConfiguration(
264            &self,
265            configuration: &NSCollectionViewCompositionalLayoutConfiguration,
266        );
267    );
268}
269
270/// [Apple's documentation](https://developer.apple.com/documentation/appkit/nscollectionlayoutsectionorthogonalscrollingbehavior?language=objc)
271// NS_ENUM
272#[repr(transparent)]
273#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
274pub struct NSCollectionLayoutSectionOrthogonalScrollingBehavior(pub NSInteger);
275impl NSCollectionLayoutSectionOrthogonalScrollingBehavior {
276    #[doc(alias = "NSCollectionLayoutSectionOrthogonalScrollingBehaviorNone")]
277    pub const None: Self = Self(0);
278    #[doc(alias = "NSCollectionLayoutSectionOrthogonalScrollingBehaviorContinuous")]
279    pub const Continuous: Self = Self(1);
280    #[doc(
281        alias = "NSCollectionLayoutSectionOrthogonalScrollingBehaviorContinuousGroupLeadingBoundary"
282    )]
283    pub const ContinuousGroupLeadingBoundary: Self = Self(2);
284    #[doc(alias = "NSCollectionLayoutSectionOrthogonalScrollingBehaviorPaging")]
285    pub const Paging: Self = Self(3);
286    #[doc(alias = "NSCollectionLayoutSectionOrthogonalScrollingBehaviorGroupPaging")]
287    pub const GroupPaging: Self = Self(4);
288    #[doc(alias = "NSCollectionLayoutSectionOrthogonalScrollingBehaviorGroupPagingCentered")]
289    pub const GroupPagingCentered: Self = Self(5);
290}
291
292unsafe impl Encode for NSCollectionLayoutSectionOrthogonalScrollingBehavior {
293    const ENCODING: Encoding = NSInteger::ENCODING;
294}
295
296unsafe impl RefEncode for NSCollectionLayoutSectionOrthogonalScrollingBehavior {
297    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
298}
299
300/// [Apple's documentation](https://developer.apple.com/documentation/appkit/nscollectionlayoutsectionvisibleitemsinvalidationhandler?language=objc)
301#[cfg(feature = "block2")]
302pub type NSCollectionLayoutSectionVisibleItemsInvalidationHandler = *mut block2::Block<
303    dyn Fn(
304        NonNull<NSArray<ProtocolObject<dyn NSCollectionLayoutVisibleItem>>>,
305        NSPoint,
306        NonNull<ProtocolObject<dyn NSCollectionLayoutEnvironment>>,
307    ),
308>;
309
310extern_class!(
311    /// [Apple's documentation](https://developer.apple.com/documentation/appkit/nscollectionlayoutsection?language=objc)
312    #[unsafe(super(NSObject))]
313    #[thread_kind = MainThreadOnly]
314    #[derive(Debug, PartialEq, Eq, Hash)]
315    pub struct NSCollectionLayoutSection;
316);
317
318unsafe impl NSCopying for NSCollectionLayoutSection {}
319
320unsafe impl CopyingHelper for NSCollectionLayoutSection {
321    type Result = Self;
322}
323
324unsafe impl NSObjectProtocol for NSCollectionLayoutSection {}
325
326impl NSCollectionLayoutSection {
327    extern_methods!(
328        #[unsafe(method(sectionWithGroup:))]
329        #[unsafe(method_family = none)]
330        pub unsafe fn sectionWithGroup(group: &NSCollectionLayoutGroup) -> Retained<Self>;
331
332        #[unsafe(method(init))]
333        #[unsafe(method_family = init)]
334        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
335
336        #[unsafe(method(new))]
337        #[unsafe(method_family = new)]
338        pub unsafe fn new(mtm: MainThreadMarker) -> Retained<Self>;
339
340        #[cfg(feature = "objc2-core-foundation")]
341        #[unsafe(method(contentInsets))]
342        #[unsafe(method_family = none)]
343        pub unsafe fn contentInsets(&self) -> NSDirectionalEdgeInsets;
344
345        #[cfg(feature = "objc2-core-foundation")]
346        /// Setter for [`contentInsets`][Self::contentInsets].
347        #[unsafe(method(setContentInsets:))]
348        #[unsafe(method_family = none)]
349        pub unsafe fn setContentInsets(&self, content_insets: NSDirectionalEdgeInsets);
350
351        #[cfg(feature = "objc2-core-foundation")]
352        #[unsafe(method(interGroupSpacing))]
353        #[unsafe(method_family = none)]
354        pub unsafe fn interGroupSpacing(&self) -> CGFloat;
355
356        #[cfg(feature = "objc2-core-foundation")]
357        /// Setter for [`interGroupSpacing`][Self::interGroupSpacing].
358        #[unsafe(method(setInterGroupSpacing:))]
359        #[unsafe(method_family = none)]
360        pub unsafe fn setInterGroupSpacing(&self, inter_group_spacing: CGFloat);
361
362        #[unsafe(method(orthogonalScrollingBehavior))]
363        #[unsafe(method_family = none)]
364        pub unsafe fn orthogonalScrollingBehavior(
365            &self,
366        ) -> NSCollectionLayoutSectionOrthogonalScrollingBehavior;
367
368        /// Setter for [`orthogonalScrollingBehavior`][Self::orthogonalScrollingBehavior].
369        #[unsafe(method(setOrthogonalScrollingBehavior:))]
370        #[unsafe(method_family = none)]
371        pub unsafe fn setOrthogonalScrollingBehavior(
372            &self,
373            orthogonal_scrolling_behavior: NSCollectionLayoutSectionOrthogonalScrollingBehavior,
374        );
375
376        #[unsafe(method(boundarySupplementaryItems))]
377        #[unsafe(method_family = none)]
378        pub unsafe fn boundarySupplementaryItems(
379            &self,
380        ) -> Retained<NSArray<NSCollectionLayoutBoundarySupplementaryItem>>;
381
382        /// Setter for [`boundarySupplementaryItems`][Self::boundarySupplementaryItems].
383        #[unsafe(method(setBoundarySupplementaryItems:))]
384        #[unsafe(method_family = none)]
385        pub unsafe fn setBoundarySupplementaryItems(
386            &self,
387            boundary_supplementary_items: &NSArray<NSCollectionLayoutBoundarySupplementaryItem>,
388        );
389
390        #[unsafe(method(supplementariesFollowContentInsets))]
391        #[unsafe(method_family = none)]
392        pub unsafe fn supplementariesFollowContentInsets(&self) -> bool;
393
394        /// Setter for [`supplementariesFollowContentInsets`][Self::supplementariesFollowContentInsets].
395        #[unsafe(method(setSupplementariesFollowContentInsets:))]
396        #[unsafe(method_family = none)]
397        pub unsafe fn setSupplementariesFollowContentInsets(
398            &self,
399            supplementaries_follow_content_insets: bool,
400        );
401
402        #[cfg(feature = "block2")]
403        #[unsafe(method(visibleItemsInvalidationHandler))]
404        #[unsafe(method_family = none)]
405        pub unsafe fn visibleItemsInvalidationHandler(
406            &self,
407        ) -> NSCollectionLayoutSectionVisibleItemsInvalidationHandler;
408
409        #[cfg(feature = "block2")]
410        /// Setter for [`visibleItemsInvalidationHandler`][Self::visibleItemsInvalidationHandler].
411        #[unsafe(method(setVisibleItemsInvalidationHandler:))]
412        #[unsafe(method_family = none)]
413        pub unsafe fn setVisibleItemsInvalidationHandler(
414            &self,
415            visible_items_invalidation_handler: NSCollectionLayoutSectionVisibleItemsInvalidationHandler,
416        );
417
418        #[unsafe(method(decorationItems))]
419        #[unsafe(method_family = none)]
420        pub unsafe fn decorationItems(&self)
421            -> Retained<NSArray<NSCollectionLayoutDecorationItem>>;
422
423        /// Setter for [`decorationItems`][Self::decorationItems].
424        #[unsafe(method(setDecorationItems:))]
425        #[unsafe(method_family = none)]
426        pub unsafe fn setDecorationItems(
427            &self,
428            decoration_items: &NSArray<NSCollectionLayoutDecorationItem>,
429        );
430    );
431}
432
433extern_class!(
434    /// [Apple's documentation](https://developer.apple.com/documentation/appkit/nscollectionlayoutitem?language=objc)
435    #[unsafe(super(NSObject))]
436    #[thread_kind = MainThreadOnly]
437    #[derive(Debug, PartialEq, Eq, Hash)]
438    pub struct NSCollectionLayoutItem;
439);
440
441unsafe impl NSCopying for NSCollectionLayoutItem {}
442
443unsafe impl CopyingHelper for NSCollectionLayoutItem {
444    type Result = Self;
445}
446
447unsafe impl NSObjectProtocol for NSCollectionLayoutItem {}
448
449impl NSCollectionLayoutItem {
450    extern_methods!(
451        #[unsafe(method(itemWithLayoutSize:))]
452        #[unsafe(method_family = none)]
453        pub unsafe fn itemWithLayoutSize(layout_size: &NSCollectionLayoutSize) -> Retained<Self>;
454
455        #[unsafe(method(itemWithLayoutSize:supplementaryItems:))]
456        #[unsafe(method_family = none)]
457        pub unsafe fn itemWithLayoutSize_supplementaryItems(
458            layout_size: &NSCollectionLayoutSize,
459            supplementary_items: &NSArray<NSCollectionLayoutSupplementaryItem>,
460        ) -> Retained<Self>;
461
462        #[unsafe(method(init))]
463        #[unsafe(method_family = init)]
464        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
465
466        #[unsafe(method(new))]
467        #[unsafe(method_family = new)]
468        pub unsafe fn new(mtm: MainThreadMarker) -> Retained<Self>;
469
470        #[cfg(feature = "objc2-core-foundation")]
471        #[unsafe(method(contentInsets))]
472        #[unsafe(method_family = none)]
473        pub unsafe fn contentInsets(&self) -> NSDirectionalEdgeInsets;
474
475        #[cfg(feature = "objc2-core-foundation")]
476        /// Setter for [`contentInsets`][Self::contentInsets].
477        #[unsafe(method(setContentInsets:))]
478        #[unsafe(method_family = none)]
479        pub unsafe fn setContentInsets(&self, content_insets: NSDirectionalEdgeInsets);
480
481        #[unsafe(method(edgeSpacing))]
482        #[unsafe(method_family = none)]
483        pub unsafe fn edgeSpacing(&self) -> Option<Retained<NSCollectionLayoutEdgeSpacing>>;
484
485        /// Setter for [`edgeSpacing`][Self::edgeSpacing].
486        #[unsafe(method(setEdgeSpacing:))]
487        #[unsafe(method_family = none)]
488        pub unsafe fn setEdgeSpacing(&self, edge_spacing: Option<&NSCollectionLayoutEdgeSpacing>);
489
490        #[unsafe(method(layoutSize))]
491        #[unsafe(method_family = none)]
492        pub unsafe fn layoutSize(&self) -> Retained<NSCollectionLayoutSize>;
493
494        #[unsafe(method(supplementaryItems))]
495        #[unsafe(method_family = none)]
496        pub unsafe fn supplementaryItems(
497            &self,
498        ) -> Retained<NSArray<NSCollectionLayoutSupplementaryItem>>;
499    );
500}
501
502extern_class!(
503    /// [Apple's documentation](https://developer.apple.com/documentation/appkit/nscollectionlayoutgroupcustomitem?language=objc)
504    #[unsafe(super(NSObject))]
505    #[thread_kind = MainThreadOnly]
506    #[derive(Debug, PartialEq, Eq, Hash)]
507    pub struct NSCollectionLayoutGroupCustomItem;
508);
509
510unsafe impl NSCopying for NSCollectionLayoutGroupCustomItem {}
511
512unsafe impl CopyingHelper for NSCollectionLayoutGroupCustomItem {
513    type Result = Self;
514}
515
516unsafe impl NSObjectProtocol for NSCollectionLayoutGroupCustomItem {}
517
518impl NSCollectionLayoutGroupCustomItem {
519    extern_methods!(
520        #[unsafe(method(customItemWithFrame:))]
521        #[unsafe(method_family = none)]
522        pub unsafe fn customItemWithFrame(frame: NSRect, mtm: MainThreadMarker) -> Retained<Self>;
523
524        #[unsafe(method(customItemWithFrame:zIndex:))]
525        #[unsafe(method_family = none)]
526        pub unsafe fn customItemWithFrame_zIndex(
527            frame: NSRect,
528            z_index: NSInteger,
529            mtm: MainThreadMarker,
530        ) -> Retained<Self>;
531
532        #[unsafe(method(init))]
533        #[unsafe(method_family = init)]
534        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
535
536        #[unsafe(method(new))]
537        #[unsafe(method_family = new)]
538        pub unsafe fn new(mtm: MainThreadMarker) -> Retained<Self>;
539
540        #[unsafe(method(frame))]
541        #[unsafe(method_family = none)]
542        pub unsafe fn frame(&self) -> NSRect;
543
544        #[unsafe(method(zIndex))]
545        #[unsafe(method_family = none)]
546        pub unsafe fn zIndex(&self) -> NSInteger;
547    );
548}
549
550/// [Apple's documentation](https://developer.apple.com/documentation/appkit/nscollectionlayoutgroupcustomitemprovider?language=objc)
551#[cfg(feature = "block2")]
552pub type NSCollectionLayoutGroupCustomItemProvider = *mut block2::Block<
553    dyn Fn(
554        NonNull<ProtocolObject<dyn NSCollectionLayoutEnvironment>>,
555    ) -> NonNull<NSArray<NSCollectionLayoutGroupCustomItem>>,
556>;
557
558extern_class!(
559    /// [Apple's documentation](https://developer.apple.com/documentation/appkit/nscollectionlayoutgroup?language=objc)
560    #[unsafe(super(NSCollectionLayoutItem, NSObject))]
561    #[derive(Debug, PartialEq, Eq, Hash)]
562    pub struct NSCollectionLayoutGroup;
563);
564
565unsafe impl NSCopying for NSCollectionLayoutGroup {}
566
567unsafe impl CopyingHelper for NSCollectionLayoutGroup {
568    type Result = Self;
569}
570
571unsafe impl NSObjectProtocol for NSCollectionLayoutGroup {}
572
573impl NSCollectionLayoutGroup {
574    extern_methods!(
575        #[unsafe(method(horizontalGroupWithLayoutSize:subitem:count:))]
576        #[unsafe(method_family = none)]
577        pub unsafe fn horizontalGroupWithLayoutSize_subitem_count(
578            layout_size: &NSCollectionLayoutSize,
579            subitem: &NSCollectionLayoutItem,
580            count: NSInteger,
581        ) -> Retained<Self>;
582
583        #[unsafe(method(horizontalGroupWithLayoutSize:subitems:))]
584        #[unsafe(method_family = none)]
585        pub unsafe fn horizontalGroupWithLayoutSize_subitems(
586            layout_size: &NSCollectionLayoutSize,
587            subitems: &NSArray<NSCollectionLayoutItem>,
588        ) -> Retained<Self>;
589
590        #[unsafe(method(verticalGroupWithLayoutSize:subitem:count:))]
591        #[unsafe(method_family = none)]
592        pub unsafe fn verticalGroupWithLayoutSize_subitem_count(
593            layout_size: &NSCollectionLayoutSize,
594            subitem: &NSCollectionLayoutItem,
595            count: NSInteger,
596        ) -> Retained<Self>;
597
598        #[unsafe(method(verticalGroupWithLayoutSize:subitems:))]
599        #[unsafe(method_family = none)]
600        pub unsafe fn verticalGroupWithLayoutSize_subitems(
601            layout_size: &NSCollectionLayoutSize,
602            subitems: &NSArray<NSCollectionLayoutItem>,
603        ) -> Retained<Self>;
604
605        #[cfg(feature = "block2")]
606        #[unsafe(method(customGroupWithLayoutSize:itemProvider:))]
607        #[unsafe(method_family = none)]
608        pub unsafe fn customGroupWithLayoutSize_itemProvider(
609            layout_size: &NSCollectionLayoutSize,
610            item_provider: NSCollectionLayoutGroupCustomItemProvider,
611        ) -> Retained<Self>;
612
613        #[unsafe(method(init))]
614        #[unsafe(method_family = init)]
615        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
616
617        #[unsafe(method(new))]
618        #[unsafe(method_family = new)]
619        pub unsafe fn new(mtm: MainThreadMarker) -> Retained<Self>;
620
621        #[unsafe(method(supplementaryItems))]
622        #[unsafe(method_family = none)]
623        pub unsafe fn supplementaryItems(
624            &self,
625        ) -> Retained<NSArray<NSCollectionLayoutSupplementaryItem>>;
626
627        /// Setter for [`supplementaryItems`][Self::supplementaryItems].
628        #[unsafe(method(setSupplementaryItems:))]
629        #[unsafe(method_family = none)]
630        pub unsafe fn setSupplementaryItems(
631            &self,
632            supplementary_items: &NSArray<NSCollectionLayoutSupplementaryItem>,
633        );
634
635        #[unsafe(method(interItemSpacing))]
636        #[unsafe(method_family = none)]
637        pub unsafe fn interItemSpacing(&self) -> Option<Retained<NSCollectionLayoutSpacing>>;
638
639        /// Setter for [`interItemSpacing`][Self::interItemSpacing].
640        #[unsafe(method(setInterItemSpacing:))]
641        #[unsafe(method_family = none)]
642        pub unsafe fn setInterItemSpacing(
643            &self,
644            inter_item_spacing: Option<&NSCollectionLayoutSpacing>,
645        );
646
647        #[unsafe(method(subitems))]
648        #[unsafe(method_family = none)]
649        pub unsafe fn subitems(&self) -> Retained<NSArray<NSCollectionLayoutItem>>;
650
651        #[unsafe(method(visualDescription))]
652        #[unsafe(method_family = none)]
653        pub unsafe fn visualDescription(&self) -> Retained<NSString>;
654    );
655}
656
657/// Methods declared on superclass `NSCollectionLayoutItem`.
658impl NSCollectionLayoutGroup {
659    extern_methods!(
660        #[unsafe(method(itemWithLayoutSize:))]
661        #[unsafe(method_family = none)]
662        pub unsafe fn itemWithLayoutSize(layout_size: &NSCollectionLayoutSize) -> Retained<Self>;
663
664        #[unsafe(method(itemWithLayoutSize:supplementaryItems:))]
665        #[unsafe(method_family = none)]
666        pub unsafe fn itemWithLayoutSize_supplementaryItems(
667            layout_size: &NSCollectionLayoutSize,
668            supplementary_items: &NSArray<NSCollectionLayoutSupplementaryItem>,
669        ) -> Retained<Self>;
670    );
671}
672
673extern_class!(
674    /// [Apple's documentation](https://developer.apple.com/documentation/appkit/nscollectionlayoutdimension?language=objc)
675    #[unsafe(super(NSObject))]
676    #[thread_kind = MainThreadOnly]
677    #[derive(Debug, PartialEq, Eq, Hash)]
678    pub struct NSCollectionLayoutDimension;
679);
680
681unsafe impl NSCopying for NSCollectionLayoutDimension {}
682
683unsafe impl CopyingHelper for NSCollectionLayoutDimension {
684    type Result = Self;
685}
686
687unsafe impl NSObjectProtocol for NSCollectionLayoutDimension {}
688
689impl NSCollectionLayoutDimension {
690    extern_methods!(
691        #[cfg(feature = "objc2-core-foundation")]
692        #[unsafe(method(fractionalWidthDimension:))]
693        #[unsafe(method_family = none)]
694        pub unsafe fn fractionalWidthDimension(
695            fractional_width: CGFloat,
696            mtm: MainThreadMarker,
697        ) -> Retained<Self>;
698
699        #[cfg(feature = "objc2-core-foundation")]
700        #[unsafe(method(fractionalHeightDimension:))]
701        #[unsafe(method_family = none)]
702        pub unsafe fn fractionalHeightDimension(
703            fractional_height: CGFloat,
704            mtm: MainThreadMarker,
705        ) -> Retained<Self>;
706
707        #[cfg(feature = "objc2-core-foundation")]
708        #[unsafe(method(absoluteDimension:))]
709        #[unsafe(method_family = none)]
710        pub unsafe fn absoluteDimension(
711            absolute_dimension: CGFloat,
712            mtm: MainThreadMarker,
713        ) -> Retained<Self>;
714
715        #[cfg(feature = "objc2-core-foundation")]
716        #[unsafe(method(estimatedDimension:))]
717        #[unsafe(method_family = none)]
718        pub unsafe fn estimatedDimension(
719            estimated_dimension: CGFloat,
720            mtm: MainThreadMarker,
721        ) -> Retained<Self>;
722
723        #[unsafe(method(init))]
724        #[unsafe(method_family = init)]
725        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
726
727        #[unsafe(method(new))]
728        #[unsafe(method_family = new)]
729        pub unsafe fn new(mtm: MainThreadMarker) -> Retained<Self>;
730
731        #[unsafe(method(isFractionalWidth))]
732        #[unsafe(method_family = none)]
733        pub unsafe fn isFractionalWidth(&self) -> bool;
734
735        #[unsafe(method(isFractionalHeight))]
736        #[unsafe(method_family = none)]
737        pub unsafe fn isFractionalHeight(&self) -> bool;
738
739        #[unsafe(method(isAbsolute))]
740        #[unsafe(method_family = none)]
741        pub unsafe fn isAbsolute(&self) -> bool;
742
743        #[unsafe(method(isEstimated))]
744        #[unsafe(method_family = none)]
745        pub unsafe fn isEstimated(&self) -> bool;
746
747        #[cfg(feature = "objc2-core-foundation")]
748        #[unsafe(method(dimension))]
749        #[unsafe(method_family = none)]
750        pub unsafe fn dimension(&self) -> CGFloat;
751    );
752}
753
754extern_class!(
755    /// [Apple's documentation](https://developer.apple.com/documentation/appkit/nscollectionlayoutsize?language=objc)
756    #[unsafe(super(NSObject))]
757    #[thread_kind = MainThreadOnly]
758    #[derive(Debug, PartialEq, Eq, Hash)]
759    pub struct NSCollectionLayoutSize;
760);
761
762unsafe impl NSCopying for NSCollectionLayoutSize {}
763
764unsafe impl CopyingHelper for NSCollectionLayoutSize {
765    type Result = Self;
766}
767
768unsafe impl NSObjectProtocol for NSCollectionLayoutSize {}
769
770impl NSCollectionLayoutSize {
771    extern_methods!(
772        #[unsafe(method(sizeWithWidthDimension:heightDimension:))]
773        #[unsafe(method_family = none)]
774        pub unsafe fn sizeWithWidthDimension_heightDimension(
775            width: &NSCollectionLayoutDimension,
776            height: &NSCollectionLayoutDimension,
777        ) -> Retained<Self>;
778
779        #[unsafe(method(init))]
780        #[unsafe(method_family = init)]
781        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
782
783        #[unsafe(method(new))]
784        #[unsafe(method_family = new)]
785        pub unsafe fn new(mtm: MainThreadMarker) -> Retained<Self>;
786
787        #[unsafe(method(widthDimension))]
788        #[unsafe(method_family = none)]
789        pub unsafe fn widthDimension(&self) -> Retained<NSCollectionLayoutDimension>;
790
791        #[unsafe(method(heightDimension))]
792        #[unsafe(method_family = none)]
793        pub unsafe fn heightDimension(&self) -> Retained<NSCollectionLayoutDimension>;
794    );
795}
796
797extern_class!(
798    /// [Apple's documentation](https://developer.apple.com/documentation/appkit/nscollectionlayoutspacing?language=objc)
799    #[unsafe(super(NSObject))]
800    #[thread_kind = MainThreadOnly]
801    #[derive(Debug, PartialEq, Eq, Hash)]
802    pub struct NSCollectionLayoutSpacing;
803);
804
805unsafe impl NSCopying for NSCollectionLayoutSpacing {}
806
807unsafe impl CopyingHelper for NSCollectionLayoutSpacing {
808    type Result = Self;
809}
810
811unsafe impl NSObjectProtocol for NSCollectionLayoutSpacing {}
812
813impl NSCollectionLayoutSpacing {
814    extern_methods!(
815        #[cfg(feature = "objc2-core-foundation")]
816        #[unsafe(method(flexibleSpacing:))]
817        #[unsafe(method_family = none)]
818        pub unsafe fn flexibleSpacing(
819            flexible_spacing: CGFloat,
820            mtm: MainThreadMarker,
821        ) -> Retained<Self>;
822
823        #[cfg(feature = "objc2-core-foundation")]
824        #[unsafe(method(fixedSpacing:))]
825        #[unsafe(method_family = none)]
826        pub unsafe fn fixedSpacing(fixed_spacing: CGFloat, mtm: MainThreadMarker)
827            -> Retained<Self>;
828
829        #[unsafe(method(init))]
830        #[unsafe(method_family = init)]
831        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
832
833        #[unsafe(method(new))]
834        #[unsafe(method_family = new)]
835        pub unsafe fn new(mtm: MainThreadMarker) -> Retained<Self>;
836
837        #[cfg(feature = "objc2-core-foundation")]
838        #[unsafe(method(spacing))]
839        #[unsafe(method_family = none)]
840        pub unsafe fn spacing(&self) -> CGFloat;
841
842        #[unsafe(method(isFlexibleSpacing))]
843        #[unsafe(method_family = none)]
844        pub unsafe fn isFlexibleSpacing(&self) -> bool;
845
846        #[unsafe(method(isFixedSpacing))]
847        #[unsafe(method_family = none)]
848        pub unsafe fn isFixedSpacing(&self) -> bool;
849    );
850}
851
852extern_class!(
853    /// [Apple's documentation](https://developer.apple.com/documentation/appkit/nscollectionlayoutedgespacing?language=objc)
854    #[unsafe(super(NSObject))]
855    #[thread_kind = MainThreadOnly]
856    #[derive(Debug, PartialEq, Eq, Hash)]
857    pub struct NSCollectionLayoutEdgeSpacing;
858);
859
860unsafe impl NSCopying for NSCollectionLayoutEdgeSpacing {}
861
862unsafe impl CopyingHelper for NSCollectionLayoutEdgeSpacing {
863    type Result = Self;
864}
865
866unsafe impl NSObjectProtocol for NSCollectionLayoutEdgeSpacing {}
867
868impl NSCollectionLayoutEdgeSpacing {
869    extern_methods!(
870        #[unsafe(method(spacingForLeading:top:trailing:bottom:))]
871        #[unsafe(method_family = none)]
872        pub unsafe fn spacingForLeading_top_trailing_bottom(
873            leading: Option<&NSCollectionLayoutSpacing>,
874            top: Option<&NSCollectionLayoutSpacing>,
875            trailing: Option<&NSCollectionLayoutSpacing>,
876            bottom: Option<&NSCollectionLayoutSpacing>,
877            mtm: MainThreadMarker,
878        ) -> Retained<Self>;
879
880        #[unsafe(method(init))]
881        #[unsafe(method_family = init)]
882        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
883
884        #[unsafe(method(new))]
885        #[unsafe(method_family = new)]
886        pub unsafe fn new(mtm: MainThreadMarker) -> Retained<Self>;
887
888        #[unsafe(method(leading))]
889        #[unsafe(method_family = none)]
890        pub unsafe fn leading(&self) -> Option<Retained<NSCollectionLayoutSpacing>>;
891
892        #[unsafe(method(top))]
893        #[unsafe(method_family = none)]
894        pub unsafe fn top(&self) -> Option<Retained<NSCollectionLayoutSpacing>>;
895
896        #[unsafe(method(trailing))]
897        #[unsafe(method_family = none)]
898        pub unsafe fn trailing(&self) -> Option<Retained<NSCollectionLayoutSpacing>>;
899
900        #[unsafe(method(bottom))]
901        #[unsafe(method_family = none)]
902        pub unsafe fn bottom(&self) -> Option<Retained<NSCollectionLayoutSpacing>>;
903    );
904}
905
906extern_class!(
907    /// [Apple's documentation](https://developer.apple.com/documentation/appkit/nscollectionlayoutsupplementaryitem?language=objc)
908    #[unsafe(super(NSCollectionLayoutItem, NSObject))]
909    #[derive(Debug, PartialEq, Eq, Hash)]
910    pub struct NSCollectionLayoutSupplementaryItem;
911);
912
913unsafe impl NSCopying for NSCollectionLayoutSupplementaryItem {}
914
915unsafe impl CopyingHelper for NSCollectionLayoutSupplementaryItem {
916    type Result = Self;
917}
918
919unsafe impl NSObjectProtocol for NSCollectionLayoutSupplementaryItem {}
920
921impl NSCollectionLayoutSupplementaryItem {
922    extern_methods!(
923        #[unsafe(method(supplementaryItemWithLayoutSize:elementKind:containerAnchor:))]
924        #[unsafe(method_family = none)]
925        pub unsafe fn supplementaryItemWithLayoutSize_elementKind_containerAnchor(
926            layout_size: &NSCollectionLayoutSize,
927            element_kind: &NSString,
928            container_anchor: &NSCollectionLayoutAnchor,
929        ) -> Retained<Self>;
930
931        #[unsafe(method(supplementaryItemWithLayoutSize:elementKind:containerAnchor:itemAnchor:))]
932        #[unsafe(method_family = none)]
933        pub unsafe fn supplementaryItemWithLayoutSize_elementKind_containerAnchor_itemAnchor(
934            layout_size: &NSCollectionLayoutSize,
935            element_kind: &NSString,
936            container_anchor: &NSCollectionLayoutAnchor,
937            item_anchor: &NSCollectionLayoutAnchor,
938        ) -> Retained<Self>;
939
940        #[unsafe(method(init))]
941        #[unsafe(method_family = init)]
942        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
943
944        #[unsafe(method(new))]
945        #[unsafe(method_family = new)]
946        pub unsafe fn new(mtm: MainThreadMarker) -> Retained<Self>;
947
948        #[unsafe(method(zIndex))]
949        #[unsafe(method_family = none)]
950        pub unsafe fn zIndex(&self) -> NSInteger;
951
952        /// Setter for [`zIndex`][Self::zIndex].
953        #[unsafe(method(setZIndex:))]
954        #[unsafe(method_family = none)]
955        pub unsafe fn setZIndex(&self, z_index: NSInteger);
956
957        #[unsafe(method(elementKind))]
958        #[unsafe(method_family = none)]
959        pub unsafe fn elementKind(&self) -> Retained<NSString>;
960
961        #[unsafe(method(containerAnchor))]
962        #[unsafe(method_family = none)]
963        pub unsafe fn containerAnchor(&self) -> Retained<NSCollectionLayoutAnchor>;
964
965        #[unsafe(method(itemAnchor))]
966        #[unsafe(method_family = none)]
967        pub unsafe fn itemAnchor(&self) -> Option<Retained<NSCollectionLayoutAnchor>>;
968    );
969}
970
971/// Methods declared on superclass `NSCollectionLayoutItem`.
972impl NSCollectionLayoutSupplementaryItem {
973    extern_methods!(
974        #[unsafe(method(itemWithLayoutSize:))]
975        #[unsafe(method_family = none)]
976        pub unsafe fn itemWithLayoutSize(layout_size: &NSCollectionLayoutSize) -> Retained<Self>;
977
978        #[unsafe(method(itemWithLayoutSize:supplementaryItems:))]
979        #[unsafe(method_family = none)]
980        pub unsafe fn itemWithLayoutSize_supplementaryItems(
981            layout_size: &NSCollectionLayoutSize,
982            supplementary_items: &NSArray<NSCollectionLayoutSupplementaryItem>,
983        ) -> Retained<Self>;
984    );
985}
986
987extern_class!(
988    /// [Apple's documentation](https://developer.apple.com/documentation/appkit/nscollectionlayoutboundarysupplementaryitem?language=objc)
989    #[unsafe(super(NSCollectionLayoutSupplementaryItem, NSCollectionLayoutItem, NSObject))]
990    #[derive(Debug, PartialEq, Eq, Hash)]
991    pub struct NSCollectionLayoutBoundarySupplementaryItem;
992);
993
994unsafe impl NSCopying for NSCollectionLayoutBoundarySupplementaryItem {}
995
996unsafe impl CopyingHelper for NSCollectionLayoutBoundarySupplementaryItem {
997    type Result = Self;
998}
999
1000unsafe impl NSObjectProtocol for NSCollectionLayoutBoundarySupplementaryItem {}
1001
1002impl NSCollectionLayoutBoundarySupplementaryItem {
1003    extern_methods!(
1004        #[unsafe(method(boundarySupplementaryItemWithLayoutSize:elementKind:alignment:))]
1005        #[unsafe(method_family = none)]
1006        pub unsafe fn boundarySupplementaryItemWithLayoutSize_elementKind_alignment(
1007            layout_size: &NSCollectionLayoutSize,
1008            element_kind: &NSString,
1009            alignment: NSRectAlignment,
1010        ) -> Retained<Self>;
1011
1012        #[unsafe(method(boundarySupplementaryItemWithLayoutSize:elementKind:alignment:absoluteOffset:))]
1013        #[unsafe(method_family = none)]
1014        pub unsafe fn boundarySupplementaryItemWithLayoutSize_elementKind_alignment_absoluteOffset(
1015            layout_size: &NSCollectionLayoutSize,
1016            element_kind: &NSString,
1017            alignment: NSRectAlignment,
1018            absolute_offset: NSPoint,
1019        ) -> Retained<Self>;
1020
1021        #[unsafe(method(init))]
1022        #[unsafe(method_family = init)]
1023        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
1024
1025        #[unsafe(method(new))]
1026        #[unsafe(method_family = new)]
1027        pub unsafe fn new(mtm: MainThreadMarker) -> Retained<Self>;
1028
1029        #[unsafe(method(extendsBoundary))]
1030        #[unsafe(method_family = none)]
1031        pub unsafe fn extendsBoundary(&self) -> bool;
1032
1033        /// Setter for [`extendsBoundary`][Self::extendsBoundary].
1034        #[unsafe(method(setExtendsBoundary:))]
1035        #[unsafe(method_family = none)]
1036        pub unsafe fn setExtendsBoundary(&self, extends_boundary: bool);
1037
1038        #[unsafe(method(pinToVisibleBounds))]
1039        #[unsafe(method_family = none)]
1040        pub unsafe fn pinToVisibleBounds(&self) -> bool;
1041
1042        /// Setter for [`pinToVisibleBounds`][Self::pinToVisibleBounds].
1043        #[unsafe(method(setPinToVisibleBounds:))]
1044        #[unsafe(method_family = none)]
1045        pub unsafe fn setPinToVisibleBounds(&self, pin_to_visible_bounds: bool);
1046
1047        #[unsafe(method(alignment))]
1048        #[unsafe(method_family = none)]
1049        pub unsafe fn alignment(&self) -> NSRectAlignment;
1050
1051        #[unsafe(method(offset))]
1052        #[unsafe(method_family = none)]
1053        pub unsafe fn offset(&self) -> NSPoint;
1054    );
1055}
1056
1057/// Methods declared on superclass `NSCollectionLayoutSupplementaryItem`.
1058impl NSCollectionLayoutBoundarySupplementaryItem {
1059    extern_methods!(
1060        #[unsafe(method(supplementaryItemWithLayoutSize:elementKind:containerAnchor:))]
1061        #[unsafe(method_family = none)]
1062        pub unsafe fn supplementaryItemWithLayoutSize_elementKind_containerAnchor(
1063            layout_size: &NSCollectionLayoutSize,
1064            element_kind: &NSString,
1065            container_anchor: &NSCollectionLayoutAnchor,
1066        ) -> Retained<Self>;
1067
1068        #[unsafe(method(supplementaryItemWithLayoutSize:elementKind:containerAnchor:itemAnchor:))]
1069        #[unsafe(method_family = none)]
1070        pub unsafe fn supplementaryItemWithLayoutSize_elementKind_containerAnchor_itemAnchor(
1071            layout_size: &NSCollectionLayoutSize,
1072            element_kind: &NSString,
1073            container_anchor: &NSCollectionLayoutAnchor,
1074            item_anchor: &NSCollectionLayoutAnchor,
1075        ) -> Retained<Self>;
1076    );
1077}
1078
1079/// Methods declared on superclass `NSCollectionLayoutItem`.
1080impl NSCollectionLayoutBoundarySupplementaryItem {
1081    extern_methods!(
1082        #[unsafe(method(itemWithLayoutSize:))]
1083        #[unsafe(method_family = none)]
1084        pub unsafe fn itemWithLayoutSize(layout_size: &NSCollectionLayoutSize) -> Retained<Self>;
1085
1086        #[unsafe(method(itemWithLayoutSize:supplementaryItems:))]
1087        #[unsafe(method_family = none)]
1088        pub unsafe fn itemWithLayoutSize_supplementaryItems(
1089            layout_size: &NSCollectionLayoutSize,
1090            supplementary_items: &NSArray<NSCollectionLayoutSupplementaryItem>,
1091        ) -> Retained<Self>;
1092    );
1093}
1094
1095extern_class!(
1096    /// [Apple's documentation](https://developer.apple.com/documentation/appkit/nscollectionlayoutdecorationitem?language=objc)
1097    #[unsafe(super(NSCollectionLayoutItem, NSObject))]
1098    #[derive(Debug, PartialEq, Eq, Hash)]
1099    pub struct NSCollectionLayoutDecorationItem;
1100);
1101
1102unsafe impl NSCopying for NSCollectionLayoutDecorationItem {}
1103
1104unsafe impl CopyingHelper for NSCollectionLayoutDecorationItem {
1105    type Result = Self;
1106}
1107
1108unsafe impl NSObjectProtocol for NSCollectionLayoutDecorationItem {}
1109
1110impl NSCollectionLayoutDecorationItem {
1111    extern_methods!(
1112        #[unsafe(method(backgroundDecorationItemWithElementKind:))]
1113        #[unsafe(method_family = none)]
1114        pub unsafe fn backgroundDecorationItemWithElementKind(
1115            element_kind: &NSString,
1116            mtm: MainThreadMarker,
1117        ) -> Retained<Self>;
1118
1119        #[unsafe(method(init))]
1120        #[unsafe(method_family = init)]
1121        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
1122
1123        #[unsafe(method(new))]
1124        #[unsafe(method_family = new)]
1125        pub unsafe fn new(mtm: MainThreadMarker) -> Retained<Self>;
1126
1127        #[unsafe(method(zIndex))]
1128        #[unsafe(method_family = none)]
1129        pub unsafe fn zIndex(&self) -> NSInteger;
1130
1131        /// Setter for [`zIndex`][Self::zIndex].
1132        #[unsafe(method(setZIndex:))]
1133        #[unsafe(method_family = none)]
1134        pub unsafe fn setZIndex(&self, z_index: NSInteger);
1135
1136        #[unsafe(method(elementKind))]
1137        #[unsafe(method_family = none)]
1138        pub unsafe fn elementKind(&self) -> Retained<NSString>;
1139    );
1140}
1141
1142/// Methods declared on superclass `NSCollectionLayoutItem`.
1143impl NSCollectionLayoutDecorationItem {
1144    extern_methods!(
1145        #[unsafe(method(itemWithLayoutSize:))]
1146        #[unsafe(method_family = none)]
1147        pub unsafe fn itemWithLayoutSize(layout_size: &NSCollectionLayoutSize) -> Retained<Self>;
1148
1149        #[unsafe(method(itemWithLayoutSize:supplementaryItems:))]
1150        #[unsafe(method_family = none)]
1151        pub unsafe fn itemWithLayoutSize_supplementaryItems(
1152            layout_size: &NSCollectionLayoutSize,
1153            supplementary_items: &NSArray<NSCollectionLayoutSupplementaryItem>,
1154        ) -> Retained<Self>;
1155    );
1156}
1157
1158extern_class!(
1159    /// [Apple's documentation](https://developer.apple.com/documentation/appkit/nscollectionlayoutanchor?language=objc)
1160    #[unsafe(super(NSObject))]
1161    #[thread_kind = MainThreadOnly]
1162    #[derive(Debug, PartialEq, Eq, Hash)]
1163    pub struct NSCollectionLayoutAnchor;
1164);
1165
1166unsafe impl NSCopying for NSCollectionLayoutAnchor {}
1167
1168unsafe impl CopyingHelper for NSCollectionLayoutAnchor {
1169    type Result = Self;
1170}
1171
1172unsafe impl NSObjectProtocol for NSCollectionLayoutAnchor {}
1173
1174impl NSCollectionLayoutAnchor {
1175    extern_methods!(
1176        #[unsafe(method(layoutAnchorWithEdges:))]
1177        #[unsafe(method_family = none)]
1178        pub unsafe fn layoutAnchorWithEdges(
1179            edges: NSDirectionalRectEdge,
1180            mtm: MainThreadMarker,
1181        ) -> Retained<Self>;
1182
1183        #[unsafe(method(layoutAnchorWithEdges:absoluteOffset:))]
1184        #[unsafe(method_family = none)]
1185        pub unsafe fn layoutAnchorWithEdges_absoluteOffset(
1186            edges: NSDirectionalRectEdge,
1187            absolute_offset: NSPoint,
1188            mtm: MainThreadMarker,
1189        ) -> Retained<Self>;
1190
1191        #[unsafe(method(layoutAnchorWithEdges:fractionalOffset:))]
1192        #[unsafe(method_family = none)]
1193        pub unsafe fn layoutAnchorWithEdges_fractionalOffset(
1194            edges: NSDirectionalRectEdge,
1195            fractional_offset: NSPoint,
1196            mtm: MainThreadMarker,
1197        ) -> Retained<Self>;
1198
1199        #[unsafe(method(init))]
1200        #[unsafe(method_family = init)]
1201        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
1202
1203        #[unsafe(method(new))]
1204        #[unsafe(method_family = new)]
1205        pub unsafe fn new(mtm: MainThreadMarker) -> Retained<Self>;
1206
1207        #[unsafe(method(edges))]
1208        #[unsafe(method_family = none)]
1209        pub unsafe fn edges(&self) -> NSDirectionalRectEdge;
1210
1211        #[unsafe(method(offset))]
1212        #[unsafe(method_family = none)]
1213        pub unsafe fn offset(&self) -> NSPoint;
1214
1215        #[unsafe(method(isAbsoluteOffset))]
1216        #[unsafe(method_family = none)]
1217        pub unsafe fn isAbsoluteOffset(&self) -> bool;
1218
1219        #[unsafe(method(isFractionalOffset))]
1220        #[unsafe(method_family = none)]
1221        pub unsafe fn isFractionalOffset(&self) -> bool;
1222    );
1223}
1224
1225extern_protocol!(
1226    /// [Apple's documentation](https://developer.apple.com/documentation/appkit/nscollectionlayoutcontainer?language=objc)
1227    pub unsafe trait NSCollectionLayoutContainer: NSObjectProtocol + MainThreadOnly {
1228        #[unsafe(method(contentSize))]
1229        #[unsafe(method_family = none)]
1230        unsafe fn contentSize(&self) -> NSSize;
1231
1232        #[unsafe(method(effectiveContentSize))]
1233        #[unsafe(method_family = none)]
1234        unsafe fn effectiveContentSize(&self) -> NSSize;
1235
1236        #[cfg(feature = "objc2-core-foundation")]
1237        #[unsafe(method(contentInsets))]
1238        #[unsafe(method_family = none)]
1239        unsafe fn contentInsets(&self) -> NSDirectionalEdgeInsets;
1240
1241        #[cfg(feature = "objc2-core-foundation")]
1242        #[unsafe(method(effectiveContentInsets))]
1243        #[unsafe(method_family = none)]
1244        unsafe fn effectiveContentInsets(&self) -> NSDirectionalEdgeInsets;
1245    }
1246);
1247
1248extern_protocol!(
1249    /// [Apple's documentation](https://developer.apple.com/documentation/appkit/nscollectionlayoutenvironment?language=objc)
1250    pub unsafe trait NSCollectionLayoutEnvironment:
1251        NSObjectProtocol + MainThreadOnly
1252    {
1253        #[unsafe(method(container))]
1254        #[unsafe(method_family = none)]
1255        unsafe fn container(&self) -> Retained<ProtocolObject<dyn NSCollectionLayoutContainer>>;
1256    }
1257);
1258
1259extern_protocol!(
1260    /// [Apple's documentation](https://developer.apple.com/documentation/appkit/nscollectionlayoutvisibleitem?language=objc)
1261    pub unsafe trait NSCollectionLayoutVisibleItem:
1262        NSObjectProtocol + MainThreadOnly
1263    {
1264        #[cfg(feature = "objc2-core-foundation")]
1265        #[unsafe(method(alpha))]
1266        #[unsafe(method_family = none)]
1267        unsafe fn alpha(&self) -> CGFloat;
1268
1269        #[cfg(feature = "objc2-core-foundation")]
1270        /// Setter for [`alpha`][Self::alpha].
1271        #[unsafe(method(setAlpha:))]
1272        #[unsafe(method_family = none)]
1273        unsafe fn setAlpha(&self, alpha: CGFloat);
1274
1275        #[unsafe(method(zIndex))]
1276        #[unsafe(method_family = none)]
1277        unsafe fn zIndex(&self) -> NSInteger;
1278
1279        /// Setter for [`zIndex`][Self::zIndex].
1280        #[unsafe(method(setZIndex:))]
1281        #[unsafe(method_family = none)]
1282        unsafe fn setZIndex(&self, z_index: NSInteger);
1283
1284        #[unsafe(method(isHidden))]
1285        #[unsafe(method_family = none)]
1286        unsafe fn isHidden(&self) -> bool;
1287
1288        /// Setter for [`isHidden`][Self::isHidden].
1289        #[unsafe(method(setHidden:))]
1290        #[unsafe(method_family = none)]
1291        unsafe fn setHidden(&self, hidden: bool);
1292
1293        #[unsafe(method(center))]
1294        #[unsafe(method_family = none)]
1295        unsafe fn center(&self) -> NSPoint;
1296
1297        /// Setter for [`center`][Self::center].
1298        #[unsafe(method(setCenter:))]
1299        #[unsafe(method_family = none)]
1300        unsafe fn setCenter(&self, center: NSPoint);
1301
1302        #[unsafe(method(name))]
1303        #[unsafe(method_family = none)]
1304        unsafe fn name(&self) -> Retained<NSString>;
1305
1306        #[unsafe(method(indexPath))]
1307        #[unsafe(method_family = none)]
1308        unsafe fn indexPath(&self) -> Retained<NSIndexPath>;
1309
1310        #[unsafe(method(frame))]
1311        #[unsafe(method_family = none)]
1312        unsafe fn frame(&self) -> NSRect;
1313
1314        #[unsafe(method(bounds))]
1315        #[unsafe(method_family = none)]
1316        unsafe fn bounds(&self) -> NSRect;
1317
1318        #[cfg(feature = "NSCollectionViewLayout")]
1319        #[unsafe(method(representedElementCategory))]
1320        #[unsafe(method_family = none)]
1321        unsafe fn representedElementCategory(&self) -> NSCollectionElementCategory;
1322
1323        #[unsafe(method(representedElementKind))]
1324        #[unsafe(method_family = none)]
1325        unsafe fn representedElementKind(&self) -> Option<Retained<NSString>>;
1326    }
1327);