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