One way to rectify this situation would be to start using CG* structs and functions on the desktop as well. However, this introduces a dependency on CoreGraphics that shouldn't be there for Foundation-based code.
My alternative is to standardize on NSPoint and friends, and map those to their CG alternatives on iOS. That way, I have minimized my dependencies, with only a small header file to pay for it: PhoneGeomtry.h
This is now part of MPWFoundation (on github).
// // PhoneGeometry.h // MPWFoundation // // Created by Marcel Weiher on 11/11/10. // Copyright 2010-2011 Marcel Weiher. All rights reserved. // #if TARGET_OS_IPHONE #ifndef PHONE_GEOMETRY #define PHONE_GEOMETRY #import <CoreGraphics/CoreGraphics.h> typedef CGRect NSRect; typedef CGPoint NSPoint; typedef CGSize NSSize; #define NSMakeRect CGRectMake #define NSMakePoint CGPointMake #define NSMakeSize CGSizeMake #define NSEqualPoints CGPointEqualToPoint #define NSEqualRects CGRectEqualToRect #define NSIntersectsRect CGRectIntersectsRect static inline NSString *NSStringFromRect( CGRect r ) { return [NSString stringWithFormat:@"(%g,%g - %g,%g)",r.origin.x,r.origin.y,r.size.width,r.size.height]; } static inline NSString *NSStringFromPoint( CGPoint p ) { return [NSString stringWithFormat:@"(%g,%g)",p.x,p.y]; } static inline NSString *NSStringFromSize( CGSize s ) { return [NSString stringWithFormat:@"(%g,%g)",s.width,s.height]; } #endif #endif
No comments:
Post a Comment