From a7e20635cbf8b948f5a31bcb3bbac1fe92b0f03d Mon Sep 17 00:00:00 2001 From: Uli Kusterer Date: Sun, 14 Mar 2010 23:39:33 +0100 Subject: [PATCH] Handy matrix thingummy for slanting a bezier path or other drawings. --- NSAffineTransform+Shearing.h | 16 ++++++++++++++++ NSAffineTransform+Shearing.m | 28 ++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 NSAffineTransform+Shearing.h create mode 100644 NSAffineTransform+Shearing.m diff --git a/NSAffineTransform+Shearing.h b/NSAffineTransform+Shearing.h new file mode 100644 index 0000000..4efae23 --- /dev/null +++ b/NSAffineTransform+Shearing.h @@ -0,0 +1,16 @@ +// +// NSAffineTransform+Shearing.h +// Propaganda +// +// Created by Uli Kusterer on 14.03.10. +// Copyright 2010 The Void Software. All rights reserved. +// + +#import + + +@interface NSAffineTransform (UKShearing) + +-(void) shearXBy: (CGFloat)xFraction yBy: (CGFloat)yFraction; + +@end diff --git a/NSAffineTransform+Shearing.m b/NSAffineTransform+Shearing.m new file mode 100644 index 0000000..1dce3a8 --- /dev/null +++ b/NSAffineTransform+Shearing.m @@ -0,0 +1,28 @@ +// +// NSAffineTransform+Shearing.m +// Propaganda +// +// Created by Uli Kusterer on 14.03.10. +// Copyright 2010 The Void Software. All rights reserved. +// + +#import "NSAffineTransform+Shearing.h" + + +@implementation NSAffineTransform (UKShearing) + +-(void) shearXBy: (CGFloat)xFraction yBy: (CGFloat)yFraction +{ + NSAffineTransform* theTransform = [NSAffineTransform transform]; + NSAffineTransformStruct transformStruct = { 0 }; + + transformStruct.m11 = 1.0; + transformStruct.m12 = yFraction; + transformStruct.m21 = xFraction; + transformStruct.m22 = 1.0; + + [theTransform setTransformStruct: transformStruct]; + [self prependTransform: theTransform]; +} + +@end