CGGeometry+LOTAdditions.h 4.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. #import "LOTPlatformCompat.h"
  2. #import <CoreGraphics/CoreGraphics.h>
  3. //
  4. // Core Graphics Geometry Additions
  5. //
  6. extern const CGSize CGSizeMax;
  7. CGRect LOT_RectIntegral(CGRect rect);
  8. // Centering
  9. // Returns a rectangle of the given size, centered at a point
  10. CGRect LOT_RectCenteredAtPoint(CGPoint center, CGSize size, BOOL integral);
  11. // Returns the center point of a CGRect
  12. CGPoint LOT_RectGetCenterPoint(CGRect rect);
  13. // Insetting
  14. // Inset the rectangle on a single edge
  15. CGRect LOT_RectInsetLeft(CGRect rect, CGFloat inset);
  16. CGRect LOT_RectInsetRight(CGRect rect, CGFloat inset);
  17. CGRect LOT_RectInsetTop(CGRect rect, CGFloat inset);
  18. CGRect LOT_RectInsetBottom(CGRect rect, CGFloat inset);
  19. // Inset the rectangle on two edges
  20. CGRect LOT_RectInsetHorizontal(CGRect rect, CGFloat leftInset, CGFloat rightInset);
  21. CGRect LOT_RectInsetVertical(CGRect rect, CGFloat topInset, CGFloat bottomInset);
  22. // Inset the rectangle on all edges
  23. CGRect LOT_RectInsetAll(CGRect rect, CGFloat leftInset, CGFloat rightInset, CGFloat topInset, CGFloat bottomInset);
  24. // Framing
  25. // Returns a rectangle of size framed in the center of the given rectangle
  26. CGRect LOT_RectFramedCenteredInRect(CGRect rect, CGSize size, BOOL integral);
  27. // Returns a rectangle of size framed in the given rectangle and inset
  28. CGRect LOT_RectFramedLeftInRect(CGRect rect, CGSize size, CGFloat inset, BOOL integral);
  29. CGRect LOT_RectFramedRightInRect(CGRect rect, CGSize size, CGFloat inset, BOOL integral);
  30. CGRect LOT_RectFramedTopInRect(CGRect rect, CGSize size, CGFloat inset, BOOL integral);
  31. CGRect LOT_RectFramedBottomInRect(CGRect rect, CGSize size, CGFloat inset, BOOL integral);
  32. CGRect LOT_RectFramedTopLeftInRect(CGRect rect, CGSize size, CGFloat insetWidth, CGFloat insetHeight, BOOL integral);
  33. CGRect LOT_RectFramedTopRightInRect(CGRect rect, CGSize size, CGFloat insetWidth, CGFloat insetHeight, BOOL integral);
  34. CGRect LOT_RectFramedBottomLeftInRect(CGRect rect, CGSize size, CGFloat insetWidth, CGFloat insetHeight, BOOL integral);
  35. CGRect LOT_RectFramedBottomRightInRect(CGRect rect, CGSize size, CGFloat insetWidth, CGFloat insetHeight, BOOL integral);
  36. // Divides a rect into sections and returns the section at specified index
  37. CGRect LOT_RectDividedSection(CGRect rect, NSInteger sections, NSInteger index, CGRectEdge fromEdge);
  38. // Returns a rectangle of size attached to the given rectangle
  39. CGRect LOT_RectAttachedLeftToRect(CGRect rect, CGSize size, CGFloat margin, BOOL integral);
  40. CGRect LOT_RectAttachedRightToRect(CGRect rect, CGSize size, CGFloat margin, BOOL integral);
  41. CGRect LOT_RectAttachedTopToRect(CGRect rect, CGSize size, CGFloat margin, BOOL integral);
  42. CGRect LOT_RectAttachedBottomToRect(CGRect rect, CGSize size, CGFloat margin, BOOL integral);
  43. CGRect LOT_RectAttachedBottomLeftToRect(CGRect rect, CGSize size, CGFloat marginWidth, CGFloat marginHeight, BOOL integral);
  44. CGRect LOT_RectAttachedBottomRightToRect(CGRect rect, CGSize size, CGFloat marginWidth, CGFloat marginHeight, BOOL integral);
  45. CGRect LOT_RectAttachedTopRightToRect(CGRect rect, CGSize size, CGFloat marginWidth, CGFloat marginHeight, BOOL integral);
  46. CGRect LOT_RectAttachedTopLeftToRect(CGRect rect, CGSize size, CGFloat marginWidth, CGFloat marginHeight, BOOL integral);
  47. BOOL LOT_CGPointIsZero(CGPoint point);
  48. // Combining
  49. // Adds all values of the 2nd rect to the first rect
  50. CGRect LOT_RectAddRect(CGRect rect, CGRect other);
  51. CGRect LOT_RectAddPoint(CGRect rect, CGPoint point);
  52. CGRect LOT_RectAddSize(CGRect rect, CGSize size);
  53. CGRect LOT_RectBounded(CGRect rect);
  54. CGPoint LOT_PointAddedToPoint(CGPoint point1, CGPoint point2);
  55. CGRect LOT_RectSetHeight(CGRect rect, CGFloat height);
  56. CGFloat LOT_PointDistanceFromPoint(CGPoint point1, CGPoint point2);
  57. CGFloat LOT_DegreesToRadians(CGFloat degrees);
  58. CGFloat LOT_RemapValue(CGFloat value, CGFloat low1, CGFloat high1, CGFloat low2, CGFloat high2 );
  59. CGPoint LOT_PointByLerpingPoints(CGPoint point1, CGPoint point2, CGFloat value);
  60. CGPoint LOT_PointInLine(CGPoint A, CGPoint B, CGFloat T);
  61. CGPoint LOT_PointInCubicCurve(CGPoint start, CGPoint cp1, CGPoint cp2, CGPoint end, CGFloat T);
  62. CGFloat LOT_CubicBezierInterpolate(CGPoint P0, CGPoint P1, CGPoint P2, CGPoint P3, CGFloat x);
  63. CGFloat LOT_SolveCubic(CGFloat a, CGFloat b, CGFloat c, CGFloat d);
  64. CGFloat LOT_SolveQuadratic(CGFloat a, CGFloat b, CGFloat c);
  65. CGFloat LOT_Squared(CGFloat f);
  66. CGFloat LOT_Cubed(CGFloat f);
  67. CGFloat LOT_CubicRoot(CGFloat f);
  68. CGFloat LOT_CubicLength(CGPoint fromPoint, CGPoint toPoint, CGPoint controlPoint1, CGPoint controlPoint2);
  69. CGFloat LOT_CubicLengthWithPrecision(CGPoint fromPoint, CGPoint toPoint, CGPoint controlPoint1, CGPoint controlPoint2, CGFloat iterations);