From ceaed8ae367501d5d42c0326e8026585fe3917f1 Mon Sep 17 00:00:00 2001 From: Wolfgang Lux Date: Sun, 15 Jan 2012 17:33:48 +0000 Subject: [PATCH] New methods to construct rectangles from points and sizes. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/steptalk/trunk@34544 72102866-910b-0410-8b05-ffd578937521 --- ChangeLog | 9 +++++++ Frameworks/StepTalk/STStructure.h | 3 +++ Frameworks/StepTalk/STStructure.m | 41 +++++++++++++++++++++++++++++++ TODO | 1 - 4 files changed, 53 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 798fd7e..32992dc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2012-01-15 Wolfgang Lux + + * Frameworks/StepTalk/STStructure.h: + * Frameworks/StepTalk/STStructure.m (+structureWithOrigin:size:, + extent:, corner:): New methods to construct rectangles from points + and sizes. + + * TODO: Update. + 2012-01-15 Wolfgang Lux * Modules/AppKit/AppKitConstants.list: Remove obsolete NSDataLink diff --git a/Frameworks/StepTalk/STStructure.h b/Frameworks/StepTalk/STStructure.h index b1f40bb..42ef690 100644 --- a/Frameworks/StepTalk/STStructure.h +++ b/Frameworks/StepTalk/STStructure.h @@ -62,6 +62,9 @@ - (int)intValueAtIndex:(unsigned)index; - (float)floatValueAtIndex:(unsigned)index; + +- extent:(NSSize)size; +- corner:(NSPoint)corner; @end /* diff --git a/Frameworks/StepTalk/STStructure.m b/Frameworks/StepTalk/STStructure.m index 8c1a46a..5eb118b 100644 --- a/Frameworks/StepTalk/STStructure.m +++ b/Frameworks/StepTalk/STStructure.m @@ -69,6 +69,15 @@ return AUTORELEASE(str); } ++ structureWithOrigin:(NSPoint)point size:(NSSize)size +{ + NSRect rect; + STStructure *str; + rect = NSMakeRect(point.x, point.y, size.width, size.height); + str = [[self alloc] initWithValue:&rect type:@encode(NSRect)]; + return AUTORELEASE(str); +} + - initWithValue:(void *)value type:(const char*)type { const char *nameBeg, *nextType; @@ -266,6 +275,38 @@ [fields replaceObjectAtIndex:1 withObject: [NSNumber numberWithFloat:y]]; } +- extent:(NSSize)size +{ + NSRect rect; + rect = NSMakeRect([self x], [self y], size.width, size.height); + return [[self class] structureWithRect:rect]; +} + +- corner:(NSPoint)corner +{ + NSRect rect; + rect = NSMakeRect([self x], [self y], 0, 0); + if (corner.x >= rect.origin.x) + { + rect.size.width = corner.x - rect.origin.x; + } + else + { + rect.size.width = rect.origin.x - corner.x; + rect.origin.x = corner.x; + } + if (corner.y >= rect.origin.y) + { + rect.size.height = corner.y - rect.origin.y; + } + else + { + rect.size.height = rect.origin.y - corner.y; + rect.origin.y = corner.y; + } + return [[self class] structureWithRect:rect]; +} + /* NSSize */ - (float)width diff --git a/TODO b/TODO index a8d95be..6d7969a 100644 --- a/TODO +++ b/TODO @@ -7,7 +7,6 @@ TODO list HIGH PRIORITY -- implement NSRect object - Rewrite Smalltalk compiler (grammar) Remove STBytecodeInterpreter and use only STCompiler. How?