mirror of
https://github.com/gnustep/libs-gui.git
synced 2025-04-23 15:11:37 +00:00
Draw borders using image tiles, if available.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@29503 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
b05ce5111e
commit
e086eb3dbe
4 changed files with 72 additions and 24 deletions
|
@ -1,3 +1,10 @@
|
|||
2010-02-07 Eric Wasylishen <ewasylishen@gmail.com>
|
||||
|
||||
* Source/GSTheme.m:
|
||||
* Source/GSThemePrivate.h:
|
||||
* Source/GSThemeDrawing.m (-drawBorderType:frame:view:):
|
||||
Draw borders using image tiles, if available.
|
||||
|
||||
2010-02-07 Eric Wasylishen <ewasylishen@gmail.com>
|
||||
|
||||
* Source/NSPopUpButtonCell.m (-selectItem:): Mark the previously
|
||||
|
|
|
@ -184,6 +184,21 @@ GSStringFromBezelStyle(NSBezelStyle bezelStyle)
|
|||
}
|
||||
}
|
||||
|
||||
NSString *
|
||||
GSStringFromBorderType(NSBorderType borderType)
|
||||
{
|
||||
switch (borderType)
|
||||
{
|
||||
case NSNoBorder: return @"NSNoBorder";
|
||||
case NSLineBorder: return @"NSLineBorder";
|
||||
case NSBezelBorder: return @"NSBezelBorder";
|
||||
case NSGrooveBorder: return @"NSGrooveBorder";
|
||||
default: return nil;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@interface NSImage (GSTheme)
|
||||
+ (NSImage*) _setImage: (NSImage*)image name: (NSString*)name;
|
||||
@end
|
||||
|
|
|
@ -237,37 +237,62 @@
|
|||
frame: (NSRect)frame
|
||||
view: (NSView*)view
|
||||
{
|
||||
switch (aType)
|
||||
NSString *name = GSStringFromBorderType(aType);
|
||||
GSDrawTiles *tiles = [self tilesNamed: name state: GSThemeNormalState];
|
||||
|
||||
if (tiles == nil)
|
||||
{
|
||||
case NSLineBorder:
|
||||
[[NSColor controlDarkShadowColor] set];
|
||||
NSFrameRect(frame);
|
||||
break;
|
||||
case NSGrooveBorder:
|
||||
[self drawGroove: frame withClip: NSZeroRect];
|
||||
break;
|
||||
case NSBezelBorder:
|
||||
[self drawWhiteBezel: frame withClip: NSZeroRect];
|
||||
break;
|
||||
case NSNoBorder:
|
||||
default:
|
||||
break;
|
||||
switch (aType)
|
||||
{
|
||||
case NSLineBorder:
|
||||
[[NSColor controlDarkShadowColor] set];
|
||||
NSFrameRect(frame);
|
||||
break;
|
||||
case NSGrooveBorder:
|
||||
[self drawGroove: frame withClip: NSZeroRect];
|
||||
break;
|
||||
case NSBezelBorder:
|
||||
[self drawWhiteBezel: frame withClip: NSZeroRect];
|
||||
break;
|
||||
case NSNoBorder:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
[self fillRect: frame
|
||||
withTiles: tiles
|
||||
background: [NSColor clearColor]];
|
||||
}
|
||||
}
|
||||
|
||||
- (NSSize) sizeForBorderType: (NSBorderType)aType
|
||||
{
|
||||
// Returns the size of a border
|
||||
switch (aType)
|
||||
NSString *name = GSStringFromBorderType(aType);
|
||||
GSDrawTiles *tiles = [self tilesNamed: name state: GSThemeNormalState];
|
||||
|
||||
if (tiles == nil)
|
||||
{
|
||||
case NSLineBorder:
|
||||
return NSMakeSize(1, 1);
|
||||
case NSGrooveBorder:
|
||||
case NSBezelBorder:
|
||||
return NSMakeSize(2, 2);
|
||||
case NSNoBorder:
|
||||
default:
|
||||
return NSZeroSize;
|
||||
// Returns the size of a border
|
||||
switch (aType)
|
||||
{
|
||||
case NSLineBorder:
|
||||
return NSMakeSize(1, 1);
|
||||
case NSGrooveBorder:
|
||||
case NSBezelBorder:
|
||||
return NSMakeSize(2, 2);
|
||||
case NSNoBorder:
|
||||
default:
|
||||
return NSZeroSize;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// FIXME: We assume the button's top and right padding are the same as
|
||||
// its bottom and left.
|
||||
return NSMakeSize(tiles->contentRect.origin.x,
|
||||
tiles->contentRect.origin.y);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -38,6 +38,7 @@
|
|||
|
||||
NSString *GSStringFromSegmentStyle(NSSegmentStyle segmentStyle);
|
||||
NSString *GSStringFromBezelStyle(NSBezelStyle bezelStyle);
|
||||
NSString *GSStringFromBorderType(NSBorderType borderType);
|
||||
|
||||
/** These are the nine types of tile used to draw a rectangular object.
|
||||
*/
|
||||
|
|
Loading…
Reference in a new issue