美文网首页
CGAffineTransform

CGAffineTransform

作者: 李潇南 | 来源:发表于2017-09-11 10:05 被阅读14次
    struct CGAffineTransform {
      CGFloat a, b, c, d;
      CGFloat tx, ty;
    };
    
    /* The identity transform: [ 1 0 0 1 0 0 ]. */
    
    CG_EXTERN const CGAffineTransform CGAffineTransformIdentity
      CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0);
    
    CG_EXTERN CGAffineTransform CGAffineTransformMake(CGFloat a, CGFloat b,
      CGFloat c, CGFloat d, CGFloat tx, CGFloat ty)
      CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0);
    
    CG_EXTERN CGAffineTransform CGAffineTransformMakeTranslation(CGFloat tx,
      CGFloat ty) CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0);
    
    CG_EXTERN CGAffineTransform CGAffineTransformMakeScale(CGFloat sx, CGFloat sy)
      CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0);
    
    CG_EXTERN CGAffineTransform CGAffineTransformMakeRotation(CGFloat angle)
      CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0);
    
    CG_EXTERN bool CGAffineTransformIsIdentity(CGAffineTransform t)
      CG_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0);
    
    CG_EXTERN CGAffineTransform CGAffineTransformTranslate(CGAffineTransform t,
      CGFloat tx, CGFloat ty) CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0);
    
    CG_EXTERN CGAffineTransform CGAffineTransformScale(CGAffineTransform t,
      CGFloat sx, CGFloat sy) CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0);
    
    CG_EXTERN CGAffineTransform CGAffineTransformRotate(CGAffineTransform t,
      CGFloat angle) CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0);
    
    CG_EXTERN CGAffineTransform CGAffineTransformInvert(CGAffineTransform t)
      CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0);
    
    CG_EXTERN CGAffineTransform CGAffineTransformConcat(CGAffineTransform t1,
      CGAffineTransform t2) CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0);
    
    CG_EXTERN bool CGAffineTransformEqualToTransform(CGAffineTransform t1,
      CGAffineTransform t2) CG_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0);
    
    CG_EXTERN CGPoint CGPointApplyAffineTransform(CGPoint point,
      CGAffineTransform t) CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0);
    
    CG_EXTERN CGSize CGSizeApplyAffineTransform(CGSize size, CGAffineTransform t)
      CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0);
    
    CG_EXTERN CGRect CGRectApplyAffineTransform(CGRect rect, CGAffineTransform t)
      CG_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0);
    
    CG_INLINE CGAffineTransform
    __CGAffineTransformMake(CGFloat a, CGFloat b, CGFloat c, CGFloat d,
      CGFloat tx, CGFloat ty)
    {
      CGAffineTransform t;
      t.a = a; t.b = b; t.c = c; t.d = d; t.tx = tx; t.ty = ty;
      return t;
    }
    
    CG_INLINE CGPoint
    __CGPointApplyAffineTransform(CGPoint point, CGAffineTransform t)
    {
      CGPoint p;
      p.x = (CGFloat)((double)t.a * point.x + (double)t.c * point.y + t.tx);
      p.y = (CGFloat)((double)t.b * point.x + (double)t.d * point.y + t.ty);
      return p;
    }
    
    CG_INLINE CGSize
    __CGSizeApplyAffineTransform(CGSize size, CGAffineTransform t)
    {
      CGSize s;
      s.width = (CGFloat)((double)t.a * size.width + (double)t.c * size.height);
      s.height = (CGFloat)((double)t.b * size.width + (double)t.d * size.height);
      return s;
    }
    
    
    

    相关文章

      网友评论

          本文标题:CGAffineTransform

          本文链接:https://www.haomeiwen.com/subject/ezmxsxtx.html