objc2_app_kit/generated/
NSLayoutConstraint.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/nslayoutpriority?language=objc)
13// NS_TYPED_EXTENSIBLE_ENUM
14pub type NSLayoutPriority = c_float;
15
16/// [Apple's documentation](https://developer.apple.com/documentation/appkit/nslayoutpriorityrequired?language=objc)
17pub static NSLayoutPriorityRequired: NSLayoutPriority = 1000 as _;
18
19/// [Apple's documentation](https://developer.apple.com/documentation/appkit/nslayoutprioritydefaulthigh?language=objc)
20pub static NSLayoutPriorityDefaultHigh: NSLayoutPriority = 750 as _;
21
22/// [Apple's documentation](https://developer.apple.com/documentation/appkit/nslayoutprioritydragthatcanresizewindow?language=objc)
23pub static NSLayoutPriorityDragThatCanResizeWindow: NSLayoutPriority = 510 as _;
24
25/// [Apple's documentation](https://developer.apple.com/documentation/appkit/nslayoutprioritywindowsizestayput?language=objc)
26pub static NSLayoutPriorityWindowSizeStayPut: NSLayoutPriority = 500 as _;
27
28/// [Apple's documentation](https://developer.apple.com/documentation/appkit/nslayoutprioritydragthatcannotresizewindow?language=objc)
29pub static NSLayoutPriorityDragThatCannotResizeWindow: NSLayoutPriority = 490 as _;
30
31/// [Apple's documentation](https://developer.apple.com/documentation/appkit/nslayoutprioritydefaultlow?language=objc)
32pub static NSLayoutPriorityDefaultLow: NSLayoutPriority = 250 as _;
33
34/// [Apple's documentation](https://developer.apple.com/documentation/appkit/nslayoutpriorityfittingsizecompression?language=objc)
35pub static NSLayoutPriorityFittingSizeCompression: NSLayoutPriority = 50 as _;
36
37/// [Apple's documentation](https://developer.apple.com/documentation/appkit/nslayoutconstraintorientation?language=objc)
38// NS_ENUM
39#[repr(transparent)]
40#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
41pub struct NSLayoutConstraintOrientation(pub NSInteger);
42impl NSLayoutConstraintOrientation {
43    #[doc(alias = "NSLayoutConstraintOrientationHorizontal")]
44    pub const Horizontal: Self = Self(0);
45    #[doc(alias = "NSLayoutConstraintOrientationVertical")]
46    pub const Vertical: Self = Self(1);
47}
48
49unsafe impl Encode for NSLayoutConstraintOrientation {
50    const ENCODING: Encoding = NSInteger::ENCODING;
51}
52
53unsafe impl RefEncode for NSLayoutConstraintOrientation {
54    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
55}
56
57/// [Apple's documentation](https://developer.apple.com/documentation/appkit/nslayoutrelation?language=objc)
58// NS_ENUM
59#[repr(transparent)]
60#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
61pub struct NSLayoutRelation(pub NSInteger);
62impl NSLayoutRelation {
63    #[doc(alias = "NSLayoutRelationLessThanOrEqual")]
64    pub const LessThanOrEqual: Self = Self(-1);
65    #[doc(alias = "NSLayoutRelationEqual")]
66    pub const Equal: Self = Self(0);
67    #[doc(alias = "NSLayoutRelationGreaterThanOrEqual")]
68    pub const GreaterThanOrEqual: Self = Self(1);
69}
70
71unsafe impl Encode for NSLayoutRelation {
72    const ENCODING: Encoding = NSInteger::ENCODING;
73}
74
75unsafe impl RefEncode for NSLayoutRelation {
76    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
77}
78
79/// [Apple's documentation](https://developer.apple.com/documentation/appkit/nslayoutattribute?language=objc)
80// NS_ENUM
81#[repr(transparent)]
82#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
83pub struct NSLayoutAttribute(pub NSInteger);
84impl NSLayoutAttribute {
85    #[doc(alias = "NSLayoutAttributeLeft")]
86    pub const Left: Self = Self(1);
87    #[doc(alias = "NSLayoutAttributeRight")]
88    pub const Right: Self = Self(2);
89    #[doc(alias = "NSLayoutAttributeTop")]
90    pub const Top: Self = Self(3);
91    #[doc(alias = "NSLayoutAttributeBottom")]
92    pub const Bottom: Self = Self(4);
93    #[doc(alias = "NSLayoutAttributeLeading")]
94    pub const Leading: Self = Self(5);
95    #[doc(alias = "NSLayoutAttributeTrailing")]
96    pub const Trailing: Self = Self(6);
97    #[doc(alias = "NSLayoutAttributeWidth")]
98    pub const Width: Self = Self(7);
99    #[doc(alias = "NSLayoutAttributeHeight")]
100    pub const Height: Self = Self(8);
101    #[doc(alias = "NSLayoutAttributeCenterX")]
102    pub const CenterX: Self = Self(9);
103    #[doc(alias = "NSLayoutAttributeCenterY")]
104    pub const CenterY: Self = Self(10);
105    #[doc(alias = "NSLayoutAttributeLastBaseline")]
106    pub const LastBaseline: Self = Self(11);
107    #[doc(alias = "NSLayoutAttributeBaseline")]
108    pub const Baseline: Self = Self(NSLayoutAttribute::LastBaseline.0);
109    #[doc(alias = "NSLayoutAttributeFirstBaseline")]
110    pub const FirstBaseline: Self = Self(12);
111    #[doc(alias = "NSLayoutAttributeNotAnAttribute")]
112    pub const NotAnAttribute: Self = Self(0);
113}
114
115unsafe impl Encode for NSLayoutAttribute {
116    const ENCODING: Encoding = NSInteger::ENCODING;
117}
118
119unsafe impl RefEncode for NSLayoutAttribute {
120    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
121}
122
123/// [Apple's documentation](https://developer.apple.com/documentation/appkit/nslayoutformatoptions?language=objc)
124// NS_OPTIONS
125#[repr(transparent)]
126#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
127pub struct NSLayoutFormatOptions(pub NSUInteger);
128bitflags::bitflags! {
129    impl NSLayoutFormatOptions: NSUInteger {
130        #[doc(alias = "NSLayoutFormatAlignAllLeft")]
131        const AlignAllLeft = 1<<NSLayoutAttribute::Left.0;
132        #[doc(alias = "NSLayoutFormatAlignAllRight")]
133        const AlignAllRight = 1<<NSLayoutAttribute::Right.0;
134        #[doc(alias = "NSLayoutFormatAlignAllTop")]
135        const AlignAllTop = 1<<NSLayoutAttribute::Top.0;
136        #[doc(alias = "NSLayoutFormatAlignAllBottom")]
137        const AlignAllBottom = 1<<NSLayoutAttribute::Bottom.0;
138        #[doc(alias = "NSLayoutFormatAlignAllLeading")]
139        const AlignAllLeading = 1<<NSLayoutAttribute::Leading.0;
140        #[doc(alias = "NSLayoutFormatAlignAllTrailing")]
141        const AlignAllTrailing = 1<<NSLayoutAttribute::Trailing.0;
142        #[doc(alias = "NSLayoutFormatAlignAllCenterX")]
143        const AlignAllCenterX = 1<<NSLayoutAttribute::CenterX.0;
144        #[doc(alias = "NSLayoutFormatAlignAllCenterY")]
145        const AlignAllCenterY = 1<<NSLayoutAttribute::CenterY.0;
146        #[doc(alias = "NSLayoutFormatAlignAllLastBaseline")]
147        const AlignAllLastBaseline = 1<<NSLayoutAttribute::LastBaseline.0;
148        #[doc(alias = "NSLayoutFormatAlignAllFirstBaseline")]
149        const AlignAllFirstBaseline = 1<<NSLayoutAttribute::FirstBaseline.0;
150        #[doc(alias = "NSLayoutFormatAlignAllBaseline")]
151        const AlignAllBaseline = NSLayoutFormatOptions::AlignAllLastBaseline.0;
152        #[doc(alias = "NSLayoutFormatAlignmentMask")]
153        const AlignmentMask = 0xFFFF;
154        #[doc(alias = "NSLayoutFormatDirectionLeadingToTrailing")]
155        const DirectionLeadingToTrailing = 0<<16;
156        #[doc(alias = "NSLayoutFormatDirectionLeftToRight")]
157        const DirectionLeftToRight = 1<<16;
158        #[doc(alias = "NSLayoutFormatDirectionRightToLeft")]
159        const DirectionRightToLeft = 2<<16;
160        #[doc(alias = "NSLayoutFormatDirectionMask")]
161        const DirectionMask = 0x3<<16;
162    }
163}
164
165unsafe impl Encode for NSLayoutFormatOptions {
166    const ENCODING: Encoding = NSUInteger::ENCODING;
167}
168
169unsafe impl RefEncode for NSLayoutFormatOptions {
170    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
171}
172
173extern_class!(
174    /// [Apple's documentation](https://developer.apple.com/documentation/appkit/nslayoutconstraint?language=objc)
175    #[unsafe(super(NSObject))]
176    #[derive(Debug, PartialEq, Eq, Hash)]
177    pub struct NSLayoutConstraint;
178);
179
180extern_conformance!(
181    unsafe impl NSObjectProtocol for NSLayoutConstraint {}
182);
183
184impl NSLayoutConstraint {
185    extern_methods!(
186        /// # Safety
187        ///
188        /// - `metrics` generic should be of the correct type.
189        /// - `views` generic should be of the correct type.
190        #[unsafe(method(constraintsWithVisualFormat:options:metrics:views:))]
191        #[unsafe(method_family = none)]
192        pub unsafe fn constraintsWithVisualFormat_options_metrics_views(
193            format: &NSString,
194            opts: NSLayoutFormatOptions,
195            metrics: Option<&NSDictionary<NSString, AnyObject>>,
196            views: &NSDictionary<NSString, AnyObject>,
197        ) -> Retained<NSArray<NSLayoutConstraint>>;
198
199        #[cfg(feature = "objc2-core-foundation")]
200        /// # Safety
201        ///
202        /// - `view1` should be of the correct type.
203        /// - `view2` should be of the correct type.
204        #[unsafe(method(constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:))]
205        #[unsafe(method_family = none)]
206        pub unsafe fn constraintWithItem_attribute_relatedBy_toItem_attribute_multiplier_constant(
207            view1: &AnyObject,
208            attr1: NSLayoutAttribute,
209            relation: NSLayoutRelation,
210            view2: Option<&AnyObject>,
211            attr2: NSLayoutAttribute,
212            multiplier: CGFloat,
213            c: CGFloat,
214        ) -> Retained<Self>;
215
216        #[unsafe(method(priority))]
217        #[unsafe(method_family = none)]
218        pub fn priority(&self) -> NSLayoutPriority;
219
220        /// Setter for [`priority`][Self::priority].
221        #[unsafe(method(setPriority:))]
222        #[unsafe(method_family = none)]
223        pub fn setPriority(&self, priority: NSLayoutPriority);
224
225        #[unsafe(method(shouldBeArchived))]
226        #[unsafe(method_family = none)]
227        pub fn shouldBeArchived(&self) -> bool;
228
229        /// Setter for [`shouldBeArchived`][Self::shouldBeArchived].
230        #[unsafe(method(setShouldBeArchived:))]
231        #[unsafe(method_family = none)]
232        pub fn setShouldBeArchived(&self, should_be_archived: bool);
233
234        /// # Safety
235        ///
236        /// This is not retained internally, you must ensure the object is still alive.
237        #[unsafe(method(firstItem))]
238        #[unsafe(method_family = none)]
239        pub unsafe fn firstItem(&self) -> Option<Retained<AnyObject>>;
240
241        /// # Safety
242        ///
243        /// This is not retained internally, you must ensure the object is still alive.
244        #[unsafe(method(secondItem))]
245        #[unsafe(method_family = none)]
246        pub unsafe fn secondItem(&self) -> Option<Retained<AnyObject>>;
247
248        #[unsafe(method(firstAttribute))]
249        #[unsafe(method_family = none)]
250        pub fn firstAttribute(&self) -> NSLayoutAttribute;
251
252        #[unsafe(method(secondAttribute))]
253        #[unsafe(method_family = none)]
254        pub fn secondAttribute(&self) -> NSLayoutAttribute;
255
256        #[cfg(feature = "NSLayoutAnchor")]
257        #[unsafe(method(firstAnchor))]
258        #[unsafe(method_family = none)]
259        pub fn firstAnchor(&self) -> Retained<NSLayoutAnchor>;
260
261        #[cfg(feature = "NSLayoutAnchor")]
262        #[unsafe(method(secondAnchor))]
263        #[unsafe(method_family = none)]
264        pub fn secondAnchor(&self) -> Option<Retained<NSLayoutAnchor>>;
265
266        #[unsafe(method(relation))]
267        #[unsafe(method_family = none)]
268        pub fn relation(&self) -> NSLayoutRelation;
269
270        #[cfg(feature = "objc2-core-foundation")]
271        #[unsafe(method(multiplier))]
272        #[unsafe(method_family = none)]
273        pub fn multiplier(&self) -> CGFloat;
274
275        #[cfg(feature = "objc2-core-foundation")]
276        #[unsafe(method(constant))]
277        #[unsafe(method_family = none)]
278        pub fn constant(&self) -> CGFloat;
279
280        #[cfg(feature = "objc2-core-foundation")]
281        /// Setter for [`constant`][Self::constant].
282        #[unsafe(method(setConstant:))]
283        #[unsafe(method_family = none)]
284        pub fn setConstant(&self, constant: CGFloat);
285
286        #[unsafe(method(isActive))]
287        #[unsafe(method_family = none)]
288        pub fn isActive(&self) -> bool;
289
290        /// Setter for [`isActive`][Self::isActive].
291        #[unsafe(method(setActive:))]
292        #[unsafe(method_family = none)]
293        pub fn setActive(&self, active: bool);
294
295        #[unsafe(method(activateConstraints:))]
296        #[unsafe(method_family = none)]
297        pub fn activateConstraints(constraints: &NSArray<NSLayoutConstraint>);
298
299        #[unsafe(method(deactivateConstraints:))]
300        #[unsafe(method_family = none)]
301        pub fn deactivateConstraints(constraints: &NSArray<NSLayoutConstraint>);
302    );
303}
304
305/// Methods declared on superclass `NSObject`.
306impl NSLayoutConstraint {
307    extern_methods!(
308        #[unsafe(method(init))]
309        #[unsafe(method_family = init)]
310        pub fn init(this: Allocated<Self>) -> Retained<Self>;
311
312        #[unsafe(method(new))]
313        #[unsafe(method_family = new)]
314        pub fn new() -> Retained<Self>;
315    );
316}
317
318impl DefaultRetained for NSLayoutConstraint {
319    #[inline]
320    fn default_retained() -> Retained<Self> {
321        Self::new()
322    }
323}
324
325/// NSIdentifier.
326impl NSLayoutConstraint {
327    extern_methods!(
328        #[unsafe(method(identifier))]
329        #[unsafe(method_family = none)]
330        pub fn identifier(&self) -> Option<Retained<NSString>>;
331
332        /// Setter for [`identifier`][Self::identifier].
333        ///
334        /// This is [copied][objc2_foundation::NSCopying::copy] when set.
335        #[unsafe(method(setIdentifier:))]
336        #[unsafe(method_family = none)]
337        pub fn setIdentifier(&self, identifier: Option<&NSString>);
338    );
339}
340
341impl NSLayoutConstraint {
342    extern_methods!();
343}
344
345#[cfg(feature = "NSAnimation")]
346extern_conformance!(
347    unsafe impl NSAnimatablePropertyContainer for NSLayoutConstraint {}
348);
349
350/// NSConstraintBasedLayoutInstallingConstraints.
351#[cfg(all(feature = "NSResponder", feature = "NSView"))]
352impl NSView {
353    extern_methods!(
354        #[cfg(feature = "NSLayoutAnchor")]
355        #[unsafe(method(leadingAnchor))]
356        #[unsafe(method_family = none)]
357        pub fn leadingAnchor(&self) -> Retained<NSLayoutXAxisAnchor>;
358
359        #[cfg(feature = "NSLayoutAnchor")]
360        #[unsafe(method(trailingAnchor))]
361        #[unsafe(method_family = none)]
362        pub fn trailingAnchor(&self) -> Retained<NSLayoutXAxisAnchor>;
363
364        #[cfg(feature = "NSLayoutAnchor")]
365        #[unsafe(method(leftAnchor))]
366        #[unsafe(method_family = none)]
367        pub fn leftAnchor(&self) -> Retained<NSLayoutXAxisAnchor>;
368
369        #[cfg(feature = "NSLayoutAnchor")]
370        #[unsafe(method(rightAnchor))]
371        #[unsafe(method_family = none)]
372        pub fn rightAnchor(&self) -> Retained<NSLayoutXAxisAnchor>;
373
374        #[cfg(feature = "NSLayoutAnchor")]
375        #[unsafe(method(topAnchor))]
376        #[unsafe(method_family = none)]
377        pub fn topAnchor(&self) -> Retained<NSLayoutYAxisAnchor>;
378
379        #[cfg(feature = "NSLayoutAnchor")]
380        #[unsafe(method(bottomAnchor))]
381        #[unsafe(method_family = none)]
382        pub fn bottomAnchor(&self) -> Retained<NSLayoutYAxisAnchor>;
383
384        #[cfg(feature = "NSLayoutAnchor")]
385        #[unsafe(method(widthAnchor))]
386        #[unsafe(method_family = none)]
387        pub fn widthAnchor(&self) -> Retained<NSLayoutDimension>;
388
389        #[cfg(feature = "NSLayoutAnchor")]
390        #[unsafe(method(heightAnchor))]
391        #[unsafe(method_family = none)]
392        pub fn heightAnchor(&self) -> Retained<NSLayoutDimension>;
393
394        #[cfg(feature = "NSLayoutAnchor")]
395        #[unsafe(method(centerXAnchor))]
396        #[unsafe(method_family = none)]
397        pub fn centerXAnchor(&self) -> Retained<NSLayoutXAxisAnchor>;
398
399        #[cfg(feature = "NSLayoutAnchor")]
400        #[unsafe(method(centerYAnchor))]
401        #[unsafe(method_family = none)]
402        pub fn centerYAnchor(&self) -> Retained<NSLayoutYAxisAnchor>;
403
404        #[cfg(feature = "NSLayoutAnchor")]
405        #[unsafe(method(firstBaselineAnchor))]
406        #[unsafe(method_family = none)]
407        pub fn firstBaselineAnchor(&self) -> Retained<NSLayoutYAxisAnchor>;
408
409        #[cfg(feature = "NSLayoutAnchor")]
410        #[unsafe(method(lastBaselineAnchor))]
411        #[unsafe(method_family = none)]
412        pub fn lastBaselineAnchor(&self) -> Retained<NSLayoutYAxisAnchor>;
413
414        #[unsafe(method(constraints))]
415        #[unsafe(method_family = none)]
416        pub fn constraints(&self) -> Retained<NSArray<NSLayoutConstraint>>;
417
418        #[unsafe(method(addConstraint:))]
419        #[unsafe(method_family = none)]
420        pub fn addConstraint(&self, constraint: &NSLayoutConstraint);
421
422        #[unsafe(method(addConstraints:))]
423        #[unsafe(method_family = none)]
424        pub fn addConstraints(&self, constraints: &NSArray<NSLayoutConstraint>);
425
426        #[unsafe(method(removeConstraint:))]
427        #[unsafe(method_family = none)]
428        pub fn removeConstraint(&self, constraint: &NSLayoutConstraint);
429
430        #[unsafe(method(removeConstraints:))]
431        #[unsafe(method_family = none)]
432        pub fn removeConstraints(&self, constraints: &NSArray<NSLayoutConstraint>);
433    );
434}
435
436/// NSConstraintBasedLayoutCoreMethods.
437#[cfg(all(feature = "NSResponder", feature = "NSWindow"))]
438impl NSWindow {
439    extern_methods!(
440        #[unsafe(method(updateConstraintsIfNeeded))]
441        #[unsafe(method_family = none)]
442        pub fn updateConstraintsIfNeeded(&self);
443
444        #[unsafe(method(layoutIfNeeded))]
445        #[unsafe(method_family = none)]
446        pub fn layoutIfNeeded(&self);
447    );
448}
449
450/// NSConstraintBasedLayoutCoreMethods.
451#[cfg(all(feature = "NSResponder", feature = "NSView"))]
452impl NSView {
453    extern_methods!(
454        #[unsafe(method(updateConstraintsForSubtreeIfNeeded))]
455        #[unsafe(method_family = none)]
456        pub fn updateConstraintsForSubtreeIfNeeded(&self);
457
458        #[unsafe(method(updateConstraints))]
459        #[unsafe(method_family = none)]
460        pub fn updateConstraints(&self);
461
462        #[unsafe(method(needsUpdateConstraints))]
463        #[unsafe(method_family = none)]
464        pub fn needsUpdateConstraints(&self) -> bool;
465
466        /// Setter for [`needsUpdateConstraints`][Self::needsUpdateConstraints].
467        #[unsafe(method(setNeedsUpdateConstraints:))]
468        #[unsafe(method_family = none)]
469        pub fn setNeedsUpdateConstraints(&self, needs_update_constraints: bool);
470    );
471}
472
473/// NSConstraintBasedCompatibility.
474#[cfg(all(feature = "NSResponder", feature = "NSView"))]
475impl NSView {
476    extern_methods!(
477        #[unsafe(method(translatesAutoresizingMaskIntoConstraints))]
478        #[unsafe(method_family = none)]
479        pub fn translatesAutoresizingMaskIntoConstraints(&self) -> bool;
480
481        /// Setter for [`translatesAutoresizingMaskIntoConstraints`][Self::translatesAutoresizingMaskIntoConstraints].
482        #[unsafe(method(setTranslatesAutoresizingMaskIntoConstraints:))]
483        #[unsafe(method_family = none)]
484        pub fn setTranslatesAutoresizingMaskIntoConstraints(
485            &self,
486            translates_autoresizing_mask_into_constraints: bool,
487        );
488
489        #[unsafe(method(requiresConstraintBasedLayout))]
490        #[unsafe(method_family = none)]
491        pub fn requiresConstraintBasedLayout(mtm: MainThreadMarker) -> bool;
492    );
493}
494
495extern "C" {
496    /// [Apple's documentation](https://developer.apple.com/documentation/appkit/nsviewnoinstrinsicmetric?language=objc)
497    #[cfg(feature = "objc2-core-foundation")]
498    #[deprecated]
499    pub static NSViewNoInstrinsicMetric: CGFloat;
500}
501
502extern "C" {
503    /// [Apple's documentation](https://developer.apple.com/documentation/appkit/nsviewnointrinsicmetric?language=objc)
504    #[cfg(feature = "objc2-core-foundation")]
505    pub static NSViewNoIntrinsicMetric: CGFloat;
506}
507
508/// NSConstraintBasedLayoutLayering.
509#[cfg(all(feature = "NSResponder", feature = "NSView"))]
510impl NSView {
511    extern_methods!(
512        #[unsafe(method(alignmentRectForFrame:))]
513        #[unsafe(method_family = none)]
514        pub fn alignmentRectForFrame(&self, frame: NSRect) -> NSRect;
515
516        #[unsafe(method(frameForAlignmentRect:))]
517        #[unsafe(method_family = none)]
518        pub fn frameForAlignmentRect(&self, alignment_rect: NSRect) -> NSRect;
519
520        #[unsafe(method(alignmentRectInsets))]
521        #[unsafe(method_family = none)]
522        pub fn alignmentRectInsets(&self) -> NSEdgeInsets;
523
524        #[cfg(feature = "objc2-core-foundation")]
525        #[unsafe(method(firstBaselineOffsetFromTop))]
526        #[unsafe(method_family = none)]
527        pub fn firstBaselineOffsetFromTop(&self) -> CGFloat;
528
529        #[cfg(feature = "objc2-core-foundation")]
530        #[unsafe(method(lastBaselineOffsetFromBottom))]
531        #[unsafe(method_family = none)]
532        pub fn lastBaselineOffsetFromBottom(&self) -> CGFloat;
533
534        #[cfg(feature = "objc2-core-foundation")]
535        #[unsafe(method(baselineOffsetFromBottom))]
536        #[unsafe(method_family = none)]
537        pub fn baselineOffsetFromBottom(&self) -> CGFloat;
538
539        #[unsafe(method(intrinsicContentSize))]
540        #[unsafe(method_family = none)]
541        pub fn intrinsicContentSize(&self) -> NSSize;
542
543        #[unsafe(method(invalidateIntrinsicContentSize))]
544        #[unsafe(method_family = none)]
545        pub fn invalidateIntrinsicContentSize(&self);
546
547        #[unsafe(method(contentHuggingPriorityForOrientation:))]
548        #[unsafe(method_family = none)]
549        pub fn contentHuggingPriorityForOrientation(
550            &self,
551            orientation: NSLayoutConstraintOrientation,
552        ) -> NSLayoutPriority;
553
554        #[unsafe(method(setContentHuggingPriority:forOrientation:))]
555        #[unsafe(method_family = none)]
556        pub fn setContentHuggingPriority_forOrientation(
557            &self,
558            priority: NSLayoutPriority,
559            orientation: NSLayoutConstraintOrientation,
560        );
561
562        #[unsafe(method(contentCompressionResistancePriorityForOrientation:))]
563        #[unsafe(method_family = none)]
564        pub fn contentCompressionResistancePriorityForOrientation(
565            &self,
566            orientation: NSLayoutConstraintOrientation,
567        ) -> NSLayoutPriority;
568
569        #[unsafe(method(setContentCompressionResistancePriority:forOrientation:))]
570        #[unsafe(method_family = none)]
571        pub fn setContentCompressionResistancePriority_forOrientation(
572            &self,
573            priority: NSLayoutPriority,
574            orientation: NSLayoutConstraintOrientation,
575        );
576
577        #[unsafe(method(isHorizontalContentSizeConstraintActive))]
578        #[unsafe(method_family = none)]
579        pub fn isHorizontalContentSizeConstraintActive(&self) -> bool;
580
581        /// Setter for [`isHorizontalContentSizeConstraintActive`][Self::isHorizontalContentSizeConstraintActive].
582        #[unsafe(method(setHorizontalContentSizeConstraintActive:))]
583        #[unsafe(method_family = none)]
584        pub fn setHorizontalContentSizeConstraintActive(
585            &self,
586            horizontal_content_size_constraint_active: bool,
587        );
588
589        #[unsafe(method(isVerticalContentSizeConstraintActive))]
590        #[unsafe(method_family = none)]
591        pub fn isVerticalContentSizeConstraintActive(&self) -> bool;
592
593        /// Setter for [`isVerticalContentSizeConstraintActive`][Self::isVerticalContentSizeConstraintActive].
594        #[unsafe(method(setVerticalContentSizeConstraintActive:))]
595        #[unsafe(method_family = none)]
596        pub fn setVerticalContentSizeConstraintActive(
597            &self,
598            vertical_content_size_constraint_active: bool,
599        );
600    );
601}
602
603/// NSConstraintBasedLayoutLayering.
604#[cfg(all(feature = "NSControl", feature = "NSResponder", feature = "NSView"))]
605impl NSControl {
606    extern_methods!(
607        #[cfg(feature = "NSCell")]
608        #[unsafe(method(invalidateIntrinsicContentSizeForCell:))]
609        #[unsafe(method_family = none)]
610        pub fn invalidateIntrinsicContentSizeForCell(&self, cell: &NSCell);
611    );
612}
613
614/// NSConstraintBasedLayoutAnchoring.
615#[cfg(all(feature = "NSResponder", feature = "NSWindow"))]
616impl NSWindow {
617    extern_methods!(
618        #[unsafe(method(anchorAttributeForOrientation:))]
619        #[unsafe(method_family = none)]
620        pub fn anchorAttributeForOrientation(
621            &self,
622            orientation: NSLayoutConstraintOrientation,
623        ) -> NSLayoutAttribute;
624
625        #[unsafe(method(setAnchorAttribute:forOrientation:))]
626        #[unsafe(method_family = none)]
627        pub fn setAnchorAttribute_forOrientation(
628            &self,
629            attr: NSLayoutAttribute,
630            orientation: NSLayoutConstraintOrientation,
631        );
632    );
633}
634
635/// NSConstraintBasedLayoutFittingSize.
636#[cfg(all(feature = "NSResponder", feature = "NSView"))]
637impl NSView {
638    extern_methods!(
639        #[unsafe(method(fittingSize))]
640        #[unsafe(method_family = none)]
641        pub fn fittingSize(&self) -> NSSize;
642    );
643}
644
645/// NSConstraintBasedLayoutDebugging.
646#[cfg(all(feature = "NSResponder", feature = "NSView"))]
647impl NSView {
648    extern_methods!(
649        #[unsafe(method(constraintsAffectingLayoutForOrientation:))]
650        #[unsafe(method_family = none)]
651        pub fn constraintsAffectingLayoutForOrientation(
652            &self,
653            orientation: NSLayoutConstraintOrientation,
654        ) -> Retained<NSArray<NSLayoutConstraint>>;
655
656        #[unsafe(method(hasAmbiguousLayout))]
657        #[unsafe(method_family = none)]
658        pub fn hasAmbiguousLayout(&self) -> bool;
659
660        #[unsafe(method(exerciseAmbiguityInLayout))]
661        #[unsafe(method_family = none)]
662        pub fn exerciseAmbiguityInLayout(&self);
663    );
664}
665
666/// NSConstraintBasedLayoutDebugging.
667#[cfg(all(feature = "NSResponder", feature = "NSWindow"))]
668impl NSWindow {
669    extern_methods!(
670        #[unsafe(method(visualizeConstraints:))]
671        #[unsafe(method_family = none)]
672        pub fn visualizeConstraints(&self, constraints: Option<&NSArray<NSLayoutConstraint>>);
673    );
674}