Skip to content

CoreGraphics tvOS xcode14.0 beta2

Manuel de la Pena edited this page Sep 1, 2022 · 3 revisions

#CoreGraphics.framework https://github.com/xamarin/xamarin-macios/pull/15831

diff -ruN /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CGAffineTransform.h /Applications/Xcode_14.0.0-beta2.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CGAffineTransform.h
--- /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CGAffineTransform.h	2022-05-31 15:02:38.000000000 -0400
+++ /Applications/Xcode_14.0.0-beta2.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CGAffineTransform.h	2022-06-17 14:29:57.000000000 -0400
@@ -21,6 +21,35 @@
 
 #endif /* CF_DEFINES_CG_TYPES */
 
+#ifndef CF_DEFINES_CGAFFINETRANSFORMCOMPONENTS
+/*                      |------------------ CGAffineTransformComponents ----------------|
+ *
+ *      | a  b  0 |     | sx  0  0 |   |  1  0  0 |   | cos(t)  sin(t)  0 |   | 1  0  0 |
+ *      | c  d  0 |  =  |  0 sy  0 | * | sh  1  0 | * |-sin(t)  cos(t)  0 | * | 0  1  0 |
+ *      | tx ty 1 |     |  0  0  1 |   |  0  0  1 |   |   0       0     1 |   | tx ty 1 |
+ *  CGAffineTransform      scale           shear            rotation          translation
+ */
+
+typedef struct CGAffineTransformComponents
+{
+    /* initial scaling in X and Y dimensions. {sx,sy} */
+    /* Negative values indicate the image has been flipped in this dimension. */
+    CGSize      scale;
+    
+    /* shear distortion (sh). Turns rectangles to parallelograms. 0 for no shear. Typically 0. */
+    CGFloat     horizontalShear;
+    
+    /* Rotation angle in radians about the origin. (t) Sign convention for clockwise rotation */
+    /* may differ between various Apple frameworks based on origin placement. Please see discussion. */
+    CGFloat     rotation;
+
+    /* Displacement from the origin (ty, ty) */
+    CGVector    translation;
+} CGAffineTransformComponents;
+
+#endif /* CF_DEFINES_CGAFFINETRANSFORMCOMPONENTS */
+
+
 /* The identity transform: [ 1 0 0 1 0 0 ]. */
 
 CG_EXTERN const CGAffineTransform CGAffineTransformIdentity
@@ -28,80 +57,80 @@
 
 /* Return the transform [ a b c d tx ty ]. */
 
-CG_EXTERN CGAffineTransform CGAffineTransformMake(CGFloat a, CGFloat b,
+CG_EXTERN CGAffineTransform CG_PURE CGAffineTransformMake(CGFloat a, CGFloat b,
   CGFloat c, CGFloat d, CGFloat tx, CGFloat ty)
   CG_AVAILABLE_STARTING(10.0, 2.0);
 
 /* Return a transform which translates by `(tx, ty)':
      t' = [ 1 0 0 1 tx ty ] */
 
-CG_EXTERN CGAffineTransform CGAffineTransformMakeTranslation(CGFloat tx,
+CG_EXTERN CGAffineTransform CG_PURE CGAffineTransformMakeTranslation(CGFloat tx,
   CGFloat ty) CG_AVAILABLE_STARTING(10.0, 2.0);
 
 /* Return a transform which scales by `(sx, sy)':
      t' = [ sx 0 0 sy 0 0 ] */
 
-CG_EXTERN CGAffineTransform CGAffineTransformMakeScale(CGFloat sx, CGFloat sy)
+CG_EXTERN CGAffineTransform CG_PURE CGAffineTransformMakeScale(CGFloat sx, CGFloat sy)
   CG_AVAILABLE_STARTING(10.0, 2.0);
 
 /* Return a transform which rotates by `angle' radians:
      t' = [ cos(angle) sin(angle) -sin(angle) cos(angle) 0 0 ] */
 
-CG_EXTERN CGAffineTransform CGAffineTransformMakeRotation(CGFloat angle)
+CG_EXTERN CGAffineTransform CG_PURE CGAffineTransformMakeRotation(CGFloat angle)
   CG_AVAILABLE_STARTING(10.0, 2.0);
 
 /* Return true if `t' is the identity transform, false otherwise. */
 
-CG_EXTERN bool CGAffineTransformIsIdentity(CGAffineTransform t)
+CG_EXTERN bool CG_PURE CGAffineTransformIsIdentity(CGAffineTransform t)
   CG_AVAILABLE_STARTING(10.4, 2.0);
 
 /* Translate `t' by `(tx, ty)' and return the result:
      t' = [ 1 0 0 1 tx ty ] * t */
 
-CG_EXTERN CGAffineTransform CGAffineTransformTranslate(CGAffineTransform t,
+CG_EXTERN CGAffineTransform CG_PURE CGAffineTransformTranslate(CGAffineTransform t,
   CGFloat tx, CGFloat ty) CG_AVAILABLE_STARTING(10.0, 2.0);
 
 /* Scale `t' by `(sx, sy)' and return the result:
      t' = [ sx 0 0 sy 0 0 ] * t */
 
-CG_EXTERN CGAffineTransform CGAffineTransformScale(CGAffineTransform t,
+CG_EXTERN CGAffineTransform CG_PURE CGAffineTransformScale(CGAffineTransform t,
   CGFloat sx, CGFloat sy) CG_AVAILABLE_STARTING(10.0, 2.0);
 
 /* Rotate `t' by `angle' radians and return the result:
      t' =  [ cos(angle) sin(angle) -sin(angle) cos(angle) 0 0 ] * t */
 
-CG_EXTERN CGAffineTransform CGAffineTransformRotate(CGAffineTransform t,
+CG_EXTERN CGAffineTransform CG_PURE CGAffineTransformRotate(CGAffineTransform t,
   CGFloat angle) CG_AVAILABLE_STARTING(10.0, 2.0);
 
 /* Invert `t' and return the result. If `t' has zero determinant, then `t'
    is returned unchanged. */
 
-CG_EXTERN CGAffineTransform CGAffineTransformInvert(CGAffineTransform t)
+CG_EXTERN CGAffineTransform CG_PURE CGAffineTransformInvert(CGAffineTransform t)
   CG_AVAILABLE_STARTING(10.0, 2.0);
 
 /* Concatenate `t2' to `t1' and return the result:
      t' = t1 * t2 */
 
-CG_EXTERN CGAffineTransform CGAffineTransformConcat(CGAffineTransform t1,
+CG_EXTERN CGAffineTransform CG_PURE CGAffineTransformConcat(CGAffineTransform t1,
   CGAffineTransform t2) CG_AVAILABLE_STARTING(10.0, 2.0);
 
 /* Return true if `t1' and `t2' are equal, false otherwise. */
 
-CG_EXTERN bool CGAffineTransformEqualToTransform(CGAffineTransform t1,
+CG_EXTERN bool CG_PURE CGAffineTransformEqualToTransform(CGAffineTransform t1,
   CGAffineTransform t2) CG_AVAILABLE_STARTING(10.4, 2.0);
 
 /* Transform `point' by `t' and return the result:
      p' = p * t
    where p = [ x y 1 ]. */
 
-CG_EXTERN CGPoint CGPointApplyAffineTransform(CGPoint point,
+CG_EXTERN CGPoint CG_PURE CGPointApplyAffineTransform(CGPoint point,
   CGAffineTransform t) CG_AVAILABLE_STARTING(10.0, 2.0);
 
 /* Transform `size' by `t' and return the result:
      s' = s * t
    where s = [ width height 0 ]. */
 
-CG_EXTERN CGSize CGSizeApplyAffineTransform(CGSize size, CGAffineTransform t)
+CG_EXTERN CGSize CG_PURE CGSizeApplyAffineTransform(CGSize size, CGAffineTransform t)
   CG_AVAILABLE_STARTING(10.0, 2.0);
 
 /* Transform `rect' by `t' and return the result. Since affine transforms do
@@ -111,9 +140,35 @@
    rectangle coincides with the rectangle constructed from the four
    transformed corners. */
 
-CG_EXTERN CGRect CGRectApplyAffineTransform(CGRect rect, CGAffineTransform t)
+CG_EXTERN CGRect CG_PURE CGRectApplyAffineTransform(CGRect rect, CGAffineTransform t)
   CG_AVAILABLE_STARTING(10.4, 2.0);
 
+/*! @abstract Decompose a CGAffineTransform into a scale * shear * rotation * translation
+ *  @discussion This decomposition method may be used to provide insight into what a
+ *              arbitrary CGAffineTransform does. This may be necessary, for example, because
+ *              an algorithm would like to know what the scaling portion of a transform is before rotation,
+ *              or perhaps because some part of a transform is undesired and your application would like
+ *              to replace a portion of it with a different transformation.
+ *
+ *              Since there are many ways to make a affine transform out of other affine transforms
+ *              this method can not tell us the ordering of geometric steps used to create the original
+ *              CGAffineTransform. It tells us what the transform does, not how it was made.
+ *
+ *  @param transform        The CGAffineTransform to decompose
+ *  @return A decomposed set of geometric operations, the product of which is the CGAffineTransform.  */
+CG_EXTERN
+ CGAffineTransformComponents CG_PURE CGAffineTransformDecompose( CGAffineTransform transform )
+CF_SWIFT_NAME(CGAffineTransformComponents.decomposed(self:))
+CG_AVAILABLE_STARTING( 13.0, 16.0 );
+
+/*! @abstract Create CGAffineTransform from scale * shear * rotation * translation CGAffineTransformComponents
+ *  @param components        The set of CGAffineTransformComponents to use to create a new CGAffineTransform
+ *  @return A new CGAffineTransform built from the provided components  */
+CG_EXTERN
+ CGAffineTransform CG_PURE CGAffineTransformMakeWithComponents( CGAffineTransformComponents components )
+CF_SWIFT_NAME(CGAffineTransformComponents.init(_:))
+CG_AVAILABLE_STARTING( 13.0, 16.0 );
+
 /*** Definitions of inline functions. ***/
 
 CG_INLINE CGAffineTransform
diff -ruN /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CGBase.h /Applications/Xcode_14.0.0-beta2.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CGBase.h
--- /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CGBase.h	2022-05-31 15:02:13.000000000 -0400
+++ /Applications/Xcode_14.0.0-beta2.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CGBase.h	2022-06-17 14:51:00.000000000 -0400
@@ -10,6 +10,7 @@
 #include <float.h>
 #include <TargetConditionals.h>
 #include <CoreFoundation/CFBase.h>
+#include <CoreFoundation/CFCGTypes.h>
 #include <os/availability.h>
 
 /* Definition of `__CG_HAS_COMPILER_ATTRIBUTE'. */
@@ -285,6 +286,15 @@
 # endif
 #endif
 
+/* Definition of CG_PURE. */
+#if !defined(CG_PURE)
+# if __CG_HAS_COMPILER_ATTRIBUTE(pure)
+#  define CG_PURE  __attribute__((pure))
+# else
+#  define CG_PURE 
+# endif
+#endif
+
 /* Definition of `__CG_FORMAT_PRINTF'. */
 
 #if !defined(__CG_FORMAT_PRINTF)
diff -ruN /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CGPath.h /Applications/Xcode_14.0.0-beta2.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CGPath.h
--- /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CGPath.h	2022-05-31 15:02:15.000000000 -0400
+++ /Applications/Xcode_14.0.0-beta2.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CGPath.h	2022-06-17 14:48:43.000000000 -0400
@@ -432,8 +432,7 @@
 CG_EXTERN CGPathRef __nullable CGPathCreateCopyByFlattening(CGPathRef cg_nullable path, CGFloat flatteningThreshold) CG_AVAILABLE_STARTING(13.0, 16.0);
 
 /* Returns true if path1 and path2 overlap. */
-/* The trailing `UsingEvenOdd' will be removed soon. It's here temporarily for backward compatibility with an existing caller of `CGPathIntersectsPath' rdar://89310639. */
-CG_EXTERN bool CGPathIntersectsPathUsingEvenOdd(CGPathRef cg_nullable path1, CGPathRef cg_nullable path2, bool evenOddFillRule) CG_AVAILABLE_STARTING(13.0, 16.0);
+CG_EXTERN bool CGPathIntersectsPath(CGPathRef cg_nullable path1, CGPathRef cg_nullable path2, bool evenOddFillRule) CG_AVAILABLE_STARTING(13.0, 16.0);
 
 CF_ASSUME_NONNULL_END
 
diff -ruN /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CoreGraphics.apinotes /Applications/Xcode_14.0.0-beta2.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CoreGraphics.apinotes
--- /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CoreGraphics.apinotes	2022-05-21 05:05:18.000000000 -0400
+++ /Applications/Xcode_14.0.0-beta2.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CoreGraphics.apinotes	2022-06-10 23:07:50.000000000 -0400
@@ -24,6 +24,10 @@
   Availability: nonswift
   SwiftName: CGColorConversionInfo.init(fromListWithArgumentsOptions:_:_:_:_:)
 
+# CGRect
+- Name: CGRectDivide
+  SwiftPrivate: true
+
 # CGBitmapContext
 - Name: CGBitmapContextCreateWithData
   SwiftName: CGContext.init(data:width:height:bitsPerComponent:bytesPerRow:space:bitmapInfo:releaseCallback:releaseInfo:)
@@ -631,7 +635,7 @@
 - Name: CGPathCreateCopyByFlattening
   SwiftName: CGPath.__flattened(self:threshold:)
   SwiftPrivate: true
-- Name: CGPathIntersectsPathUsingEvenOdd
+- Name: CGPathIntersectsPath
   SwiftName: CGPath.__intersects(self:other:eoFill:)
   SwiftPrivate: true
 - Name: CGPathAddRoundedRect
Clone this wiki locally