mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-09-16 08:52:04 +00:00
124 lines
4.6 KiB
Plaintext
124 lines
4.6 KiB
Plaintext
//
|
|
// ASEnvironment.mm
|
|
// AsyncDisplayKit
|
|
//
|
|
// Copyright (c) 2014-present, Facebook, Inc. All rights reserved.
|
|
// This source code is licensed under the BSD-style license found in the
|
|
// LICENSE file in the root directory of this source tree. An additional grant
|
|
// of patent rights can be found in the PATENTS file in the same directory.
|
|
//
|
|
|
|
#import "ASEnvironmentInternal.h"
|
|
#import "ASAvailability.h"
|
|
#import "ASObjectDescriptionHelpers.h"
|
|
|
|
ASEnvironmentLayoutOptionsState ASEnvironmentLayoutOptionsStateMakeDefault()
|
|
{
|
|
return (ASEnvironmentLayoutOptionsState) {
|
|
// Default values can be defined in here
|
|
};
|
|
}
|
|
|
|
ASEnvironmentHierarchyState ASEnvironmentHierarchyStateMakeDefault()
|
|
{
|
|
return (ASEnvironmentHierarchyState) {
|
|
// Default values can be defined in here
|
|
};
|
|
}
|
|
|
|
ASEnvironmentTraitCollection ASEnvironmentTraitCollectionMakeDefault()
|
|
{
|
|
return (ASEnvironmentTraitCollection) {
|
|
// Default values can be defined in here
|
|
.userInterfaceIdiom = UIUserInterfaceIdiomUnspecified,
|
|
.containerSize = CGSizeZero,
|
|
};
|
|
}
|
|
|
|
ASEnvironmentTraitCollection ASEnvironmentTraitCollectionFromUITraitCollection(UITraitCollection *traitCollection)
|
|
{
|
|
ASEnvironmentTraitCollection environmentTraitCollection = ASEnvironmentTraitCollectionMakeDefault();
|
|
if (AS_AT_LEAST_IOS8) {
|
|
environmentTraitCollection.displayScale = traitCollection.displayScale;
|
|
environmentTraitCollection.horizontalSizeClass = traitCollection.horizontalSizeClass;
|
|
environmentTraitCollection.verticalSizeClass = traitCollection.verticalSizeClass;
|
|
environmentTraitCollection.userInterfaceIdiom = traitCollection.userInterfaceIdiom;
|
|
if (AS_AT_LEAST_IOS9) {
|
|
environmentTraitCollection.forceTouchCapability = traitCollection.forceTouchCapability;
|
|
}
|
|
}
|
|
return environmentTraitCollection;
|
|
}
|
|
|
|
BOOL ASEnvironmentTraitCollectionIsEqualToASEnvironmentTraitCollection(ASEnvironmentTraitCollection lhs, ASEnvironmentTraitCollection rhs)
|
|
{
|
|
return
|
|
lhs.verticalSizeClass == rhs.verticalSizeClass &&
|
|
lhs.horizontalSizeClass == rhs.horizontalSizeClass &&
|
|
lhs.displayScale == rhs.displayScale &&
|
|
lhs.userInterfaceIdiom == rhs.userInterfaceIdiom &&
|
|
lhs.forceTouchCapability == rhs.forceTouchCapability &&
|
|
CGSizeEqualToSize(lhs.containerSize, rhs.containerSize);
|
|
}
|
|
|
|
// Named so as not to conflict with a hidden Apple function, in case compiler decides not to inline
|
|
ASDISPLAYNODE_INLINE NSString *AS_NSStringFromUIUserInterfaceIdiom(UIUserInterfaceIdiom idiom) {
|
|
switch (idiom) {
|
|
case UIUserInterfaceIdiomTV:
|
|
return @"TV";
|
|
case UIUserInterfaceIdiomPad:
|
|
return @"Pad";
|
|
case UIUserInterfaceIdiomPhone:
|
|
return @"Phone";
|
|
case UIUserInterfaceIdiomCarPlay:
|
|
return @"CarPlay";
|
|
default:
|
|
return @"Unspecified";
|
|
}
|
|
}
|
|
|
|
// Named so as not to conflict with a hidden Apple function, in case compiler decides not to inline
|
|
ASDISPLAYNODE_INLINE NSString *AS_NSStringFromUIForceTouchCapability(UIForceTouchCapability capability) {
|
|
switch (capability) {
|
|
case UIForceTouchCapabilityAvailable:
|
|
return @"Available";
|
|
case UIForceTouchCapabilityUnavailable:
|
|
return @"Unavailable";
|
|
default:
|
|
return @"Unknown";
|
|
}
|
|
}
|
|
|
|
// Named so as not to conflict with a hidden Apple function, in case compiler decides not to inline
|
|
ASDISPLAYNODE_INLINE NSString *AS_NSStringFromUIUserInterfaceSizeClass(UIUserInterfaceSizeClass sizeClass) {
|
|
switch (sizeClass) {
|
|
case UIUserInterfaceSizeClassCompact:
|
|
return @"Compact";
|
|
case UIUserInterfaceSizeClassRegular:
|
|
return @"Regular";
|
|
default:
|
|
return @"Unspecified";
|
|
}
|
|
}
|
|
|
|
NSString *NSStringFromASEnvironmentTraitCollection(ASEnvironmentTraitCollection traits)
|
|
{
|
|
NSMutableArray<NSDictionary *> *props = [NSMutableArray array];
|
|
[props addObject:@{ @"userInterfaceIdiom": AS_NSStringFromUIUserInterfaceIdiom(traits.userInterfaceIdiom) }];
|
|
[props addObject:@{ @"containerSize": NSStringFromCGSize(traits.containerSize) }];
|
|
[props addObject:@{ @"horizontalSizeClass": AS_NSStringFromUIUserInterfaceSizeClass(traits.horizontalSizeClass) }];
|
|
[props addObject:@{ @"verticalSizeClass": AS_NSStringFromUIUserInterfaceSizeClass(traits.verticalSizeClass) }];
|
|
[props addObject:@{ @"forceTouchCapability": AS_NSStringFromUIForceTouchCapability(traits.forceTouchCapability) }];
|
|
return ASObjectDescriptionMakeWithoutObject(props);
|
|
}
|
|
|
|
ASEnvironmentState ASEnvironmentStateMakeDefault()
|
|
{
|
|
return (ASEnvironmentState) {
|
|
.layoutOptionsState = ASEnvironmentLayoutOptionsStateMakeDefault(),
|
|
.hierarchyState = ASEnvironmentHierarchyStateMakeDefault(),
|
|
.environmentTraitCollection = ASEnvironmentTraitCollectionMakeDefault()
|
|
};
|
|
}
|
|
|