Alot of patches applied from various contributors.

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@4879 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Michael Silva 1999-09-12 19:56:22 +00:00
parent 4403e77a00
commit 3512fef231
4 changed files with 97 additions and 19 deletions

View file

@ -1,3 +1,26 @@
Sun Sep 12 1999 Nicola Pero <n.pero@mi.flashnet.it>
* Source/NSView.m ([-resizeWithOldSuperviewSize:]): Fixed
difficult bug hunted for months: removed floor() used in the
middle of the computation of widths and heights. Widths and
heights are float, and must not to be arbitrarily rounded to
integers in the middle of a computation. This bug would cause
obscure, very little, misalignment in various views after resize.
The misalignments could become appreciable and ugly after repeated
resizes.
Sun Sep 12 1999 Nicola Pero <n.pero@mi.flashnet.it>
* Source/NSImageCell.m ([-cellSize]): added method.
([-drawingRectForBounds:]): added method.
([-drawInteriorWithFrame:inView:]): usual bug fix (see Sep 11).
1999-09-11 David Lazaro Saz <khelekir@encomix.es>
* Headers/gnustep/gui/NSGraphics.h: Changed parameter declaration
of bordered rectangle drawing functions to conform with MacOS X
specs.
1999-09-11 Michael Hanni <mhanni@sprintmail.com>
* Source/NSMenu.m: many small fixes and optimizations for quicker

View file

@ -80,15 +80,15 @@ void NSRectFillListWithGrays(const NSRect *rects,
//
// Draw a Bordered Rectangle
//
void NSDrawButton(NSRect aRect, NSRect clipRect);
void NSDrawGrayBezel(NSRect aRect, NSRect clipRect);
void NSDrawGroove(NSRect aRect, NSRect clipRect);
NSRect NSDrawTiledRects(NSRect boundsRect, NSRect clipRect,
void NSDrawButton(const NSRect aRect, const NSRect clipRect);
void NSDrawGrayBezel(const NSRect aRect, const NSRect clipRect);
void NSDrawGroove(const NSRect aRect, const NSRect clipRect);
NSRect NSDrawTiledRects(NSRect aRect, const NSRect clipRect,
const NSRectEdge *sides, const float *grays,
int count);
void NSDrawWhiteBezel(NSRect aRect, NSRect clipRect);
void NSFrameRect(NSRect aRect);
void NSFrameRectWithWidth(NSRect aRect, float frameWidth);
void NSDrawWhiteBezel(const NSRect aRect, const NSRect clipRect);
void NSFrameRect(const NSRect aRect);
void NSFrameRectWithWidth(const NSRect aRect, float frameWidth);
//
// Get Information About Color Space and Window Depth

View file

@ -130,7 +130,7 @@
// nada
break;
case NSImageFramePhoto:
// what does this one look like?
// what does this one look like? TODO (in sync with the rest of the code)
break;
case NSImageFrameGrayBezel:
NSDrawGrayBezel(cellFrame, NSZeroRect);
@ -209,7 +209,7 @@ static inline NSSize scaleProportionally(NSSize imageSize, NSRect canvasRect)
return;
// leave room for the frame
cellFrame = NSInsetRect(cellFrame, xDist, yDist);
cellFrame = [self drawingRectForBounds: cellFrame];
switch( [self imageScaling] )
{
@ -289,6 +289,67 @@ static inline NSSize scaleProportionally(NSSize imageSize, NSRect canvasRect)
[image compositeToPoint: position operation: NSCompositeCopy];
}
- (NSSize) cellSize
{
NSSize borderSize, s;
// Get border size
switch (_frameStyle)
{
case NSImageFrameNone:
borderSize = [NSCell sizeForBorderType: NSNoBorder];
break;
case NSImageFramePhoto:
// what does this one look like? TODO (in sync with the rest of the code)
borderSize = [NSCell sizeForBorderType: NSNoBorder];
break;
case NSImageFrameGrayBezel:
case NSImageFrameGroove:
case NSImageFrameButton:
borderSize = [NSCell sizeForBorderType: NSBezelBorder];
break;
}
// Get Content Size
s = _original_image_size;
// Add in border size
s.width += 2 * borderSize.width;
s.height += 2 * borderSize.height;
return s;
}
- (NSSize) cellSizeForBounds: (NSRect)aRect
{
// TODO
return NSZeroSize;
}
- (NSRect) drawingRectForBounds: (NSRect)theRect
{
NSSize borderSize;
// Get border size
switch (_frameStyle)
{
case NSImageFrameNone:
borderSize = [NSCell sizeForBorderType: NSNoBorder];
break;
case NSImageFramePhoto:
// what does this one look like? TODO (in sync with the rest of the code)
borderSize = [NSCell sizeForBorderType: NSNoBorder];
break;
case NSImageFrameGrayBezel:
case NSImageFrameGroove:
case NSImageFrameButton:
borderSize = [NSCell sizeForBorderType: NSBezelBorder];
break;
}
return NSInsetRect (theRect, borderSize.width, borderSize.height);
}
- (id) copyWithZone: (NSZone *)zone
{
NSImageCell *c = [super copyWithZone: zone];

View file

@ -1041,7 +1041,7 @@ GSSetDragTypes(NSView* obj, NSArray *types)
if (options >= 1)
{
change = superViewFrameSize.width - oldSize.width;
changePerOption = floor(change/options);
changePerOption = change/options;
if (autoresizingMask & NSViewWidthSizable)
{
@ -1049,10 +1049,7 @@ GSSetDragTypes(NSView* obj, NSArray *types)
frame.size.width += changePerOption;
if (is_rotated_or_scaled_from_base)
{
bounds.size.width *= frame.size.width/oldFrameWidth;
bounds.size.width = floor(bounds.size.width);
}
bounds.size.width *= frame.size.width/oldFrameWidth;
else
bounds.size.width += changePerOption;
changedSize = YES;
@ -1081,7 +1078,7 @@ GSSetDragTypes(NSView* obj, NSArray *types)
if (options >= 1)
{
change = superViewFrameSize.height - oldSize.height;
changePerOption = floor(change/options);
changePerOption = change/options;
if (autoresizingMask & NSViewHeightSizable)
{
@ -1089,10 +1086,7 @@ GSSetDragTypes(NSView* obj, NSArray *types)
frame.size.height += changePerOption;
if (is_rotated_or_scaled_from_base)
{
bounds.size.height *= frame.size.height/oldFrameHeight;
bounds.size.height = floor(bounds.size.height);
}
bounds.size.height *= frame.size.height/oldFrameHeight;
else
bounds.size.height += changePerOption;
changedSize = YES;