You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

61 lines
3.3 KiB

5 years ago
  1. //
  2. // SlackTextViewController
  3. // https://github.com/slackhq/SlackTextViewController
  4. //
  5. // Copyright 2014-2016 Slack Technologies, Inc.
  6. // Licence: MIT-Licence
  7. //
  8. #define SLK_IS_LANDSCAPE ([[UIApplication sharedApplication] statusBarOrientation] == UIDeviceOrientationLandscapeLeft || [[UIApplication sharedApplication] statusBarOrientation] == UIDeviceOrientationLandscapeRight)
  9. #define SLK_IS_IPAD ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad)
  10. #define SLK_IS_IPHONE ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone)
  11. #define SLK_IS_IPHONE4 (SLK_IS_IPHONE && SLKKeyWindowBounds().size.height < 568.0)
  12. #define SLK_IS_IPHONE5 (SLK_IS_IPHONE && SLKKeyWindowBounds().size.height == 568.0)
  13. #define SLK_IS_IPHONE6 (SLK_IS_IPHONE && SLKKeyWindowBounds().size.height == 667.0)
  14. #define SLK_IS_IPHONE6PLUS (SLK_IS_IPHONE && SLKKeyWindowBounds().size.height == 736.0 || SLKKeyWindowBounds().size.width == 736.0) // Both orientations
  15. #define SLK_IS_IOS8_AND_HIGHER ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0)
  16. #define SLK_IS_IOS9_AND_HIGHER ([[UIDevice currentDevice].systemVersion floatValue] >= 9.0)
  17. #define SLK_KEYBOARD_NOTIFICATION_DEBUG DEBUG && 0 // Logs every keyboard notification being sent
  18. static NSString *SLKTextViewControllerDomain = @"com.slack.TextViewController";
  19. /**
  20. Returns a constant font size difference reflecting the current accessibility settings.
  21. @param category A content size category constant string.
  22. @returns A float constant font size difference.
  23. */
  24. __unused static CGFloat SLKPointSizeDifferenceForCategory(NSString *category)
  25. {
  26. if ([category isEqualToString:UIContentSizeCategoryExtraSmall]) return -3.0;
  27. if ([category isEqualToString:UIContentSizeCategorySmall]) return -2.0;
  28. if ([category isEqualToString:UIContentSizeCategoryMedium]) return -1.0;
  29. if ([category isEqualToString:UIContentSizeCategoryLarge]) return 0.0;
  30. if ([category isEqualToString:UIContentSizeCategoryExtraLarge]) return 2.0;
  31. if ([category isEqualToString:UIContentSizeCategoryExtraExtraLarge]) return 4.0;
  32. if ([category isEqualToString:UIContentSizeCategoryExtraExtraExtraLarge]) return 6.0;
  33. if ([category isEqualToString:UIContentSizeCategoryAccessibilityMedium]) return 8.0;
  34. if ([category isEqualToString:UIContentSizeCategoryAccessibilityLarge]) return 10.0;
  35. if ([category isEqualToString:UIContentSizeCategoryAccessibilityExtraLarge]) return 11.0;
  36. if ([category isEqualToString:UIContentSizeCategoryAccessibilityExtraExtraLarge]) return 12.0;
  37. if ([category isEqualToString:UIContentSizeCategoryAccessibilityExtraExtraExtraLarge]) return 13.0;
  38. return 0;
  39. }
  40. __unused static CGRect SLKKeyWindowBounds()
  41. {
  42. return [[UIApplication sharedApplication] keyWindow].bounds;
  43. }
  44. __unused static CGRect SLKRectInvert(CGRect rect)
  45. {
  46. CGRect invert = CGRectZero;
  47. invert.origin.x = rect.origin.y;
  48. invert.origin.y = rect.origin.x;
  49. invert.size.width = rect.size.height;
  50. invert.size.height = rect.size.width;
  51. return invert;
  52. }