From 43c1f445db8c4fc966889a0fcd08093cfa941010 Mon Sep 17 00:00:00 2001 From: Matej Jan Date: Thu, 22 Jul 2010 15:20:04 +0000 Subject: [PATCH] Added initial Rectangle implementation. git-svn-id: http://xni.googlecode.com/svn/XNI@6 ac433895-eea3-a490-d80a-17149a75e588 --- Classes/Retronator/Xni/Framework/Rectangle.h | 34 +++++++++++ Classes/Retronator/Xni/Framework/Rectangle.m | 60 +++++++++++++++++++ .../Xni/Framework/RectangleStruct.h | 22 +++++++ .../Retronator.Xni.Framework.classes.h | 3 + .../Xni/Framework/Retronator.Xni.Framework.h | 2 + XNI.xcodeproj/project.pbxproj | 32 ++++++++++ 6 files changed, 153 insertions(+) create mode 100644 Classes/Retronator/Xni/Framework/Rectangle.h create mode 100644 Classes/Retronator/Xni/Framework/Rectangle.m create mode 100644 Classes/Retronator/Xni/Framework/RectangleStruct.h diff --git a/Classes/Retronator/Xni/Framework/Rectangle.h b/Classes/Retronator/Xni/Framework/Rectangle.h new file mode 100644 index 0000000..7aa651d --- /dev/null +++ b/Classes/Retronator/Xni/Framework/Rectangle.h @@ -0,0 +1,34 @@ +// +// Rectangle.h +// XNI +// +// Created by Matej Jan on 22.7.10. +// Copyright 2010 Retronator, Razum. All rights reserved. +// + +#import + +#import "Retronator.Xni.Framework.classes.h" + +@interface Rectangle : NSObject { + RectangleStruct data; +} + +- (id) initWithX:(int)x Y:(int)y Width:(int)width Height:(int)height; +- (id) initWithStruct:(RectangleStruct*) rectangleStruct; +- (id) initWithRectangle:(Rectangle*) rectangle; + ++ (Rectangle*) rectangleWithX:(int)x Y:(int)y Width:(int)width Height:(int)height; ++ (Rectangle*) rectangleWithStruct:(RectangleStruct*) rectangleStruct; ++ (Rectangle*) rectangleWithRectangle:(Rectangle*) rectangle; + +@property (nonatomic) int x; +@property (nonatomic) int y; +@property (nonatomic) int width; +@property (nonatomic) int height; + +@property (nonatomic, readonly) RectangleStruct *data; + ++ (Rectangle*) empty; + +@end diff --git a/Classes/Retronator/Xni/Framework/Rectangle.m b/Classes/Retronator/Xni/Framework/Rectangle.m new file mode 100644 index 0000000..021335f --- /dev/null +++ b/Classes/Retronator/Xni/Framework/Rectangle.m @@ -0,0 +1,60 @@ +// +// Rectangle.m +// XNI +// +// Created by Matej Jan on 22.7.10. +// Copyright 2010 Retronator, Razum. All rights reserved. +// + +#import "Rectangle.h" + + +@implementation Rectangle + +- (id) initWithX:(int)x Y:(int)y Width:(int)width Height:(int)height { + if (self = [super init]) { + data = RectangleMake(x, y, width, height); + } + return self; +} + +- (id) initWithStruct:(RectangleStruct*) rectangleStruct { + if (self = [super init]) { + data = *rectangleStruct; + } + return self; +} + +- (id) initWithRectangle:(Rectangle*) rectangle { + return [self initWithStruct:rectangle.data]; +} + ++ (Rectangle*) rectangleWithX:(int)x Y:(int)y Width:(int)width Height:(int)height { + return [[[Rectangle alloc] initWithX:x Y:y Width:width Height:height] autorelease]; +} + ++ (Rectangle*) rectangleWithStruct:(RectangleStruct*) rectangleStruct { + return [[[Rectangle alloc] initWithStruct:rectangleStruct] autorelease]; +} + ++ (Rectangle*) rectangleWithRectangle:(Rectangle*) rectangle { + return [[[Rectangle alloc] initWithRectangle:rectangle] autorelease]; +} + +- (int) x {return data.x;} +- (void) setX:(int)value {data.x = value;} + +- (int) y {return data.y;} +- (void) setY:(int)value {data.y = value;} + +- (int) width {return data.width;} +- (void) setWidth:(int)value {data.width = value;} + +- (int) height {return data.height;} +- (void) setHeight:(int)value {data.height = value;} + +- (RectangleStruct*) data {return &data;} + ++ (Rectangle*) empty {return [Rectangle rectangleWithX:0 Y:0 Width:0 Height:0];} + +@end diff --git a/Classes/Retronator/Xni/Framework/RectangleStruct.h b/Classes/Retronator/Xni/Framework/RectangleStruct.h new file mode 100644 index 0000000..70f5da4 --- /dev/null +++ b/Classes/Retronator/Xni/Framework/RectangleStruct.h @@ -0,0 +1,22 @@ +typedef struct { + int x; + int y; + int width; + int height; +} RectangleStruct; + +static inline RectangleStruct RectangleMake(int x, int y, int width, int height) { + RectangleStruct rectangle; + rectangle.x = x; + rectangle.y = y; + rectangle.width = width; + rectangle.height = height; + return rectangle; +} + +static inline void RectangleSet(RectangleStruct *rectangle, int x, int y, int width, int height) { + rectangle->x = x; + rectangle->y = y; + rectangle->width = width; + rectangle->height = height; +} \ No newline at end of file diff --git a/Classes/Retronator/Xni/Framework/Retronator.Xni.Framework.classes.h b/Classes/Retronator/Xni/Framework/Retronator.Xni.Framework.classes.h index e69de29..8d49e7e 100644 --- a/Classes/Retronator/Xni/Framework/Retronator.Xni.Framework.classes.h +++ b/Classes/Retronator/Xni/Framework/Retronator.Xni.Framework.classes.h @@ -0,0 +1,3 @@ +// Data structures +#import "RectangleStruct.h" +@class Rectangle; \ No newline at end of file diff --git a/Classes/Retronator/Xni/Framework/Retronator.Xni.Framework.h b/Classes/Retronator/Xni/Framework/Retronator.Xni.Framework.h index e69de29..c426357 100644 --- a/Classes/Retronator/Xni/Framework/Retronator.Xni.Framework.h +++ b/Classes/Retronator/Xni/Framework/Retronator.Xni.Framework.h @@ -0,0 +1,2 @@ +// Data structures +#import "Rectangle.h" \ No newline at end of file diff --git a/XNI.xcodeproj/project.pbxproj b/XNI.xcodeproj/project.pbxproj index 7c4b053..87b6be7 100644 --- a/XNI.xcodeproj/project.pbxproj +++ b/XNI.xcodeproj/project.pbxproj @@ -18,6 +18,14 @@ B5DE18A111F8888B00BF3275 /* Retronator.Xni.Framework.classes.h in Headers */ = {isa = PBXBuildFile; fileRef = B5DE189F11F8888B00BF3275 /* Retronator.Xni.Framework.classes.h */; }; B5DE18A211F8888B00BF3275 /* Retronator.Xni.Framework.h in Headers */ = {isa = PBXBuildFile; fileRef = B5DE18A011F8888B00BF3275 /* Retronator.Xni.Framework.h */; }; B5DE18A411F888BC00BF3275 /* System.h in Headers */ = {isa = PBXBuildFile; fileRef = B5DE18A311F888BC00BF3275 /* System.h */; }; + B5DE18FE11F88AD900BF3275 /* GameHost.h in Headers */ = {isa = PBXBuildFile; fileRef = B5DE18FA11F88AD900BF3275 /* GameHost.h */; }; + B5DE18FF11F88AD900BF3275 /* GameHost.m in Sources */ = {isa = PBXBuildFile; fileRef = B5DE18FB11F88AD900BF3275 /* GameHost.m */; }; + B5DE190011F88AD900BF3275 /* GameWindow.h in Headers */ = {isa = PBXBuildFile; fileRef = B5DE18FC11F88AD900BF3275 /* GameWindow.h */; }; + B5DE190111F88AD900BF3275 /* GameWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = B5DE18FD11F88AD900BF3275 /* GameWindow.m */; }; + B5DE190411F88AF500BF3275 /* Rectangle.h in Headers */ = {isa = PBXBuildFile; fileRef = B5DE190211F88AF500BF3275 /* Rectangle.h */; }; + B5DE190511F88AF500BF3275 /* Rectangle.m in Sources */ = {isa = PBXBuildFile; fileRef = B5DE190311F88AF500BF3275 /* Rectangle.m */; }; + B5DE190711F88B5D00BF3275 /* RectangleStruct.h in Headers */ = {isa = PBXBuildFile; fileRef = B5DE190611F88B5D00BF3275 /* RectangleStruct.h */; }; + B5DE193111F898AE00BF3275 /* DisplayOrientation.h in Headers */ = {isa = PBXBuildFile; fileRef = B5DE193011F898AE00BF3275 /* DisplayOrientation.h */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -33,6 +41,14 @@ B5DE189F11F8888B00BF3275 /* Retronator.Xni.Framework.classes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Retronator.Xni.Framework.classes.h; sourceTree = ""; }; B5DE18A011F8888B00BF3275 /* Retronator.Xni.Framework.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Retronator.Xni.Framework.h; sourceTree = ""; }; B5DE18A311F888BC00BF3275 /* System.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = System.h; sourceTree = ""; }; + B5DE18FA11F88AD900BF3275 /* GameHost.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GameHost.h; sourceTree = ""; }; + B5DE18FB11F88AD900BF3275 /* GameHost.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GameHost.m; sourceTree = ""; }; + B5DE18FC11F88AD900BF3275 /* GameWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GameWindow.h; sourceTree = ""; }; + B5DE18FD11F88AD900BF3275 /* GameWindow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GameWindow.m; sourceTree = ""; }; + B5DE190211F88AF500BF3275 /* Rectangle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Rectangle.h; sourceTree = ""; }; + B5DE190311F88AF500BF3275 /* Rectangle.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Rectangle.m; sourceTree = ""; }; + B5DE190611F88B5D00BF3275 /* RectangleStruct.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RectangleStruct.h; sourceTree = ""; }; + B5DE193011F898AE00BF3275 /* DisplayOrientation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DisplayOrientation.h; sourceTree = ""; }; D2AAC07E0554694100DB518D /* libXNI.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libXNI.a; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ @@ -113,6 +129,14 @@ children = ( B5DE189F11F8888B00BF3275 /* Retronator.Xni.Framework.classes.h */, B5DE18A011F8888B00BF3275 /* Retronator.Xni.Framework.h */, + B5DE18FA11F88AD900BF3275 /* GameHost.h */, + B5DE18FB11F88AD900BF3275 /* GameHost.m */, + B5DE18FC11F88AD900BF3275 /* GameWindow.h */, + B5DE18FD11F88AD900BF3275 /* GameWindow.m */, + B5DE190611F88B5D00BF3275 /* RectangleStruct.h */, + B5DE190211F88AF500BF3275 /* Rectangle.h */, + B5DE190311F88AF500BF3275 /* Rectangle.m */, + B5DE193011F898AE00BF3275 /* DisplayOrientation.h */, ); path = Framework; sourceTree = ""; @@ -146,6 +170,11 @@ B5DE18A111F8888B00BF3275 /* Retronator.Xni.Framework.classes.h in Headers */, B5DE18A211F8888B00BF3275 /* Retronator.Xni.Framework.h in Headers */, B5DE18A411F888BC00BF3275 /* System.h in Headers */, + B5DE18FE11F88AD900BF3275 /* GameHost.h in Headers */, + B5DE190011F88AD900BF3275 /* GameWindow.h in Headers */, + B5DE190411F88AF500BF3275 /* Rectangle.h in Headers */, + B5DE190711F88B5D00BF3275 /* RectangleStruct.h in Headers */, + B5DE193111F898AE00BF3275 /* DisplayOrientation.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -195,6 +224,9 @@ B5DE189911F8884A00BF3275 /* Delegate.m in Sources */, B5DE189B11F8884A00BF3275 /* Event.m in Sources */, B5DE189D11F8884A00BF3275 /* EventArgs.m in Sources */, + B5DE18FF11F88AD900BF3275 /* GameHost.m in Sources */, + B5DE190111F88AD900BF3275 /* GameWindow.m in Sources */, + B5DE190511F88AF500BF3275 /* Rectangle.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; };