Fix up clipping

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@4246 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
fedor 1999-05-13 13:51:57 +00:00
parent 115b3cdbf6
commit 6e14f79d10
7 changed files with 27 additions and 26 deletions

View file

@ -1,3 +1,17 @@
1999-05-12 Adam Fedor <fedor@gnu.org>
* Source/NSButtonCell.m (-drawWithFrame:inView:): Don't set a clip
rect (not needed since we know what we're drawing).
(-drawInteriorWithFrame:inView): Remove gsave/grestore.
* Source/NSCell.m: Likewise.
* Source/NSStringDrawing.m ([NSAttributedString -drawInRect:]):
gsave/grestore around rectclip.
* Headers/gnustep/gui/NSFont.h: ivar to show when matrix was
explicitly set.
* Source/NSFont.m (+fontWithName:size:): Reset it.
1999-05-11 Adam Fedor <fedor@gnu.org>
* Source/NSButtonCell.m ([NSButtonCell

View file

@ -51,6 +51,8 @@ extern const float *NSFontIdentityMatrix;
NSString *fontName;
float matrix[6];
BOOL matrixExplicitlySet;
// Reserved for back-end use
void *be_font_reserved;
}

View file

@ -399,11 +399,11 @@
{
if ([self isHighlighted] && ([self highlightsBy] & NSPushInCellMask))
{
NSDrawGrayBezel(cellFrame, cellFrame);
NSDrawGrayBezel(cellFrame, NSZeroRect);
}
else
{
NSDrawButton(cellFrame, cellFrame);
NSDrawButton(cellFrame, NSZeroRect);
}
}
@ -501,11 +501,7 @@
rect.origin = cellFrame.origin;
rect.size.width = imageSize.width;
rect.size.height = cellFrame.size.height;
/* Have to save the gstate, since a new clip rect may be defined
when drawing */
PSgsave();
[self _drawImage: imageToDisplay inFrame: rect];
PSgrestore();
// draw title
rect.origin.x += imageSize.width + xDist;
@ -519,11 +515,7 @@
rect.origin.y = cellFrame.origin.y;
rect.size.width = imageSize.width;
rect.size.height = cellFrame.size.height;
/* Have to save the gstate, since a new clip rect may be defined
when drawing */
PSgsave();
[self _drawImage: imageToDisplay inFrame: rect];
PSgrestore();
// draw title
rect.origin = cellFrame.origin;
@ -535,11 +527,7 @@
case NSImageBelow:
// draw image below title
cellFrame.size.height /= 2;
/* Have to save the gstate, since a new clip rect may be defined
when drawing */
PSgsave();
[self _drawImage: imageToDisplay inFrame: cellFrame];
PSgrestore();
cellFrame.origin.y += cellFrame.size.height;
[self _drawText: titleToDisplay inFrame: cellFrame];
break;
@ -547,22 +535,14 @@
case NSImageAbove:
// draw image above title
cellFrame.size.height /= 2;
/* Have to save the gstate, since a new clip rect may be defined
when drawing */
PSgsave();
[self _drawText: titleToDisplay inFrame: cellFrame];
PSgrestore();
cellFrame.origin.y += cellFrame.size.height;
[self _drawImage: imageToDisplay inFrame: cellFrame];
break;
case NSImageOverlaps:
// draw title over the image
/* Have to save the gstate, since a new clip rect may be defined
when drawing */
PSgsave();
[self _drawImage: imageToDisplay inFrame: cellFrame];
PSgrestore();
[self _drawText: titleToDisplay inFrame: cellFrame];
break;
}

View file

@ -690,7 +690,7 @@ static inline NSPoint centerSizeInRect(NSSize innerSize, NSRect outerRect)
}
else if ([self isBezeled])
{
NSDrawWhiteBezel(cellFrame, cellFrame);
NSDrawWhiteBezel(cellFrame, NSZeroRect);
}
[self drawInteriorWithFrame: cellFrame inView: controlView];
@ -708,9 +708,7 @@ static inline NSPoint centerSizeInRect(NSSize innerSize, NSRect outerRect)
if (cell_highlighted != lit)
{
cell_highlighted = lit;
PSgsave();
[self drawWithFrame: cellFrame inView: controlView];
PSgrestore();
}
}

View file

@ -170,9 +170,12 @@ void setNSFont(NSString* key, NSFont* font)
+ (NSFont*)fontWithName:(NSString*)name
size:(float)fontSize
{
NSFont *font;
float fontMatrix[6] = { fontSize, 0, 0, fontSize, 0, 0 };
return [self fontWithName:name matrix:fontMatrix];
font = [self fontWithName: name matrix: fontMatrix];
font->matrixExplicitlySet = NO;
return font;
}
+ (void)useFont:(NSString*)name

View file

@ -1238,6 +1238,7 @@ setupLine(GSTextLine *line, NSAttributedString *str, NSRange range,
NSPoint point;
NSView *view = [NSView focusView];
PSgsave();
NSRectClip(rect);
/*
@ -1252,6 +1253,7 @@ setupLine(GSTextLine *line, NSAttributedString *str, NSRange range,
point.y = rect.origin.y + rect.size.height;
[self drawAtPoint: point];
PSgrestore();
}
- (NSSize) size

View file

@ -330,6 +330,8 @@ NSString *NSLigatureAttributeName = @"NSLigatureAttributeName";
NSString *NSBaselineOffsetAttributeName = @"NSBaselineOffsetAttributeName";
NSString *NSKernAttributeName = @"NSKernAttributeName";
/* NSFont matrix */
const float NSFontIdentityMatrix[] = {1, 0, 0, 1, 0, 0};
/* Drawing engine externs */
NSString *NSBackendContext = @"NSBackendContext";