I think the major source of confusion is that NSAffineTransform is an object, 
and CGAffineTransform is not; it's a struct.  This is really important.  :)

> CGAffineTransform transform;
> CGAffineTransformTranslate(transform, CGRectGetMidX(tileFrame), 
> CGRectGetMidY(tileFrame));

The first line declares a CGAffineTransform struct, but doesn't initialize it, 
which means it contains garbage values.
The second line takes a garbage affine transform, attempts to translate it, and 
then ignores the return value.
The result is that your call to CGContextConcatCTM is being passed a garbage 
CGAffineTransform.

What you're probably look for is this:

> CGAffineTransform transform = CGAffineTransformIdentity;
> transform = CGAffineTransformTranslate(transform, CGRectGetMidX(tileFrame), 
> CGRectGetMidY(tileFrame));

Or more tersely:

> CGAffineTransform transform = 
> CGAffineTransformMakeTranslation(CGRectGetMidX(tileFrame), 
> CGRectGetMidY(tileFrame));


HTH,

Dave

On Apr 9, 2012, at 7:55 AM, Pascal Harris wrote:

> I'm trying to write some code for iOS and Wow!  I didn't expect it to be so 
> unfamiliar.  Kind of like walking into a familiar city, like London, and 
> discovering that everyone is speaking Dutch and no one speaks English.  
> Weird.  I'm slowly getting to grips with the differences and similarities - 
> but I'm a bit perplexed by transforms.  As I say, I'm writing a tile based 
> game and the following code works very nicely in Mac OS X:
> 
>       NSGraphicsContext *context = [NSGraphicsContext currentContext];
>       [context saveGraphicsState];
>       
>       id transform = [NSAffineTransform transform];
>       [transform translateXBy:NSMidX(tileFrame) yBy:NSMidY(tileFrame)];
>       [transform concat];
>       
>       [self drawTile:tileFrame];
>       
>       [context restoreGraphicsState];
> 
> 
> Unfortunately, my iOS version doesn't work. That isn't to say that it crashes 
> - it just doesn't produce the expected output.
> 
>       CGContextRef context = UIGraphicsGetCurrentContext();
>       CGContextSaveGState(context);
>       
>       CGAffineTransform transform;
>       CGAffineTransformTranslate(transform, CGRectGetMidX(tileFrame), 
> CGRectGetMidY(tileFrame));
>       CGContextConcatCTM(context, transform);
> 
>       [self drawTile:tileFrame];
> 
>       CGContextRestoreGState(context);
> 
> I'm sure that my error will be obvious to anyone who isn't a complete newb, 
> but I am - so it isn't obvious to me!
> 
> And are there any books that you'd recommend that cover these kind of issues, 
> books to assist a Mac OS X developer write for iOS?
> _______________________________________________
> 
> Cocoa-dev mailing list ([email protected])
> 
> Please do not post admin requests or moderator comments to the list.
> Contact the moderators at cocoa-dev-admins(at)lists.apple.com
> 
> Help/Unsubscribe/Update your Subscription:
> https://lists.apple.com/mailman/options/cocoa-dev/davedelong%40me.com
> 
> This email sent to [email protected]

_______________________________________________

Cocoa-dev mailing list ([email protected])

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to