More keyed decoding. Button cell now doesn't fill interior.

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@18564 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Fred Kiefer 2004-02-08 20:33:07 +00:00
parent 75dc38c6aa
commit 32e72be592
7 changed files with 193 additions and 67 deletions

View file

@ -1,3 +1,16 @@
2004-02-08 Fred Kiefer <FredKiefer@gmx.de>
* Headers/Additions/GNUstepGUI/GSDrawFunctions.h: Add two more methods.
* Source/GSDrawFunctions.m: Evaluate colour names only ones per
method. Corrected count in drawFramePhoto: and drawButton:. Added
drawGrayBezel: and drawWhiteBezel:.
* Source/NSButtonCell.m: (-drawWithFrame:inView:) use
GSDrawFunctions to draw border.
* Source/NSTabView.m
* Source/NSTabViewItem.m
* Source/NSBundleAdditions.m (NSNibConnector)
Added keyed decoding.
2004-02-08 Fred Kiefer <FredKiefer@gmx.de>
* Source/Function.m

View file

@ -36,6 +36,8 @@
+ (void) drawButton: (NSRect)border : (NSRect)clip;
+ (void) drawDarkBezel: (NSRect)border : (NSRect)clip;
+ (void) drawLightBezel: (NSRect) border : (NSRect)clip;
+ (void) drawGrayBezel: (NSRect)border : (NSRect)clip;
+ (void) drawWhiteBezel: (NSRect) border : (NSRect)clip;
+ (void) drawGroove: (NSRect)border : (NSRect)clip;
+ (void) drawFramePhoto: (NSRect)border : (NSRect)clip;

View file

@ -57,21 +57,22 @@
NSMinXEdge, NSMaxYEdge,
NSMaxXEdge, NSMinYEdge};
NSRectEdge dn_sides[] = {NSMaxXEdge, NSMaxYEdge,
NSMinXEdge, NSMinYEdge,
NSMaxXEdge, NSMaxYEdge};
NSColor *colors[] = {[NSColor controlDarkShadowColor],
[NSColor controlDarkShadowColor],
[NSColor controlLightHighlightColor],
[NSColor controlLightHighlightColor],
[NSColor controlShadowColor],
[NSColor controlShadowColor]};
NSMinXEdge, NSMinYEdge,
NSMaxXEdge, NSMaxYEdge};
// These names are role names not the actual colours
NSColor *black = [NSColor controlDarkShadowColor];
NSColor *dark = [NSColor controlShadowColor];
NSColor *white = [NSColor controlLightHighlightColor];
NSColor *colors[] = {black, black, white, white,
dark, dark};
if ([[NSView focusView] isFlipped] == YES)
{
NSDrawColorTiledRects(border, clip, dn_sides, colors, 8);
NSDrawColorTiledRects(border, clip, dn_sides, colors, 6);
}
else
{
NSDrawColorTiledRects(border, clip, up_sides, colors, 8);
NSDrawColorTiledRects(border, clip, up_sides, colors, 6);
}
}
@ -82,20 +83,19 @@
NSMinXEdge, NSMaxYEdge, NSMaxXEdge, NSMinYEdge};
NSRectEdge dn_sides[] = {NSMaxXEdge, NSMaxYEdge, NSMinXEdge, NSMinYEdge,
NSMinXEdge, NSMinYEdge, NSMaxXEdge, NSMaxYEdge};
NSColor *colors[] = {[NSColor controlLightHighlightColor],
[NSColor controlLightHighlightColor],
[NSColor controlShadowColor],
[NSColor controlShadowColor],
[NSColor controlDarkShadowColor],
[NSColor controlDarkShadowColor],
[NSColor controlColor],
[NSColor controlColor]};
// These names are role names not the actual colours
NSColor *black = [NSColor controlDarkShadowColor];
NSColor *dark = [NSColor controlShadowColor];
NSColor *light = [NSColor controlColor];
NSColor *white = [NSColor controlLightHighlightColor];
NSColor *colors[] = {white, white, dark, dark,
black, black, light, light};
if ([[NSView focusView] isFlipped] == YES)
{
NSDrawColorTiledRects(border, clip, dn_sides, colors, 8);
[[NSColor controlShadowColor] set];
[dark set];
PSrectfill(NSMinX(border) + 1., NSMinY(border) - 2., 1., 1.);
PSrectfill(NSMaxX(border) - 2., NSMaxY(border) + 1., 1., 1.);
}
@ -103,7 +103,7 @@
{
NSDrawColorTiledRects(border, clip, up_sides, colors, 8);
[[NSColor controlShadowColor] set];
[dark set];
PSrectfill(NSMinX(border) + 1., NSMinY(border) + 1., 1., 1.);
PSrectfill(NSMaxX(border) - 2., NSMaxY(border) - 2., 1., 1.);
}
@ -116,14 +116,12 @@
NSMaxXEdge, NSMinYEdge, NSMinXEdge, NSMaxYEdge};
NSRectEdge dn_sides[] = {NSMaxXEdge, NSMaxYEdge, NSMinXEdge, NSMinYEdge,
NSMaxXEdge, NSMaxYEdge, NSMinXEdge, NSMinYEdge};
NSColor *colors[] = {[NSColor controlLightHighlightColor],
[NSColor controlLightHighlightColor],
[NSColor controlShadowColor],
[NSColor controlShadowColor],
[NSColor controlColor],
[NSColor controlColor],
[NSColor controlShadowColor],
[NSColor controlShadowColor]};
// These names are role names not the actual colours
NSColor *dark = [NSColor controlShadowColor];
NSColor *light = [NSColor controlColor];
NSColor *white = [NSColor controlLightHighlightColor];
NSColor *colors[] = {white, white, dark, dark,
light, light, dark, dark};
if ([[NSView focusView] isFlipped] == YES)
{
@ -135,6 +133,61 @@
}
}
/** Draw a white bezel border */
+ (void) drawWhiteBezel: (NSRect) border : (NSRect)clip
{
NSRectEdge up_sides[] = {NSMaxYEdge, NSMaxXEdge, NSMinYEdge, NSMinXEdge,
NSMaxYEdge, NSMaxXEdge, NSMinYEdge, NSMinXEdge};
NSRectEdge dn_sides[] = {NSMinYEdge, NSMaxXEdge, NSMaxYEdge, NSMinXEdge,
NSMinYEdge, NSMaxXEdge, NSMaxYEdge, NSMinXEdge};
// These names are role names not the actual colours
NSColor *dark = [NSColor controlShadowColor];
NSColor *light = [NSColor controlColor];
NSColor *white = [NSColor controlLightHighlightColor];
NSColor *colors[] = {dark, white, white, dark,
dark, light, light, dark};
if ([[NSView focusView] isFlipped] == YES)
{
NSDrawColorTiledRects(border, clip, dn_sides, colors, 8);
}
else
{
NSDrawColorTiledRects(border, clip, up_sides, colors, 8);
}
}
/** Draw a grey bezel border */
+ (void) drawGrayBezel: (NSRect) border : (NSRect)clip
{
NSRectEdge up_sides[] = {NSMaxXEdge, NSMinYEdge, NSMinXEdge, NSMaxYEdge,
NSMaxXEdge, NSMinYEdge, NSMinXEdge, NSMaxYEdge};
NSRectEdge dn_sides[] = {NSMaxXEdge, NSMaxYEdge, NSMinXEdge, NSMinYEdge,
NSMaxXEdge, NSMaxYEdge, NSMinXEdge, NSMinYEdge};
// These names are role names not the actual colours
NSColor *black = [NSColor controlDarkShadowColor];
NSColor *dark = [NSColor controlShadowColor];
NSColor *light = [NSColor controlColor];
NSColor *white = [NSColor controlLightHighlightColor];
NSColor *colors[] = {white, white, dark, dark,
light, light, black, black};
if ([[NSView focusView] isFlipped] == YES)
{
NSDrawColorTiledRects(border, clip, dn_sides, colors, 8);
[dark set];
PSrectfill(NSMinX(border) + 1., NSMaxY(border) - 2., 1., 1.);
PSrectfill(NSMaxX(border) - 2., NSMinY(border) + 1., 1., 1.);
}
else
{
NSDrawColorTiledRects(border, clip, up_sides, colors, 8);
[dark set];
PSrectfill(NSMinX(border) + 1., NSMinY(border) + 1., 1., 1.);
PSrectfill(NSMaxX(border) - 2., NSMaxY(border) - 2., 1., 1.);
}
}
/** Draw a groove border */
+ (void) drawGroove: (NSRect)border : (NSRect)clip
{
@ -143,14 +196,11 @@
NSMaxYEdge, NSMaxXEdge, NSMinYEdge, NSMinXEdge};
NSRectEdge dn_sides[] = {NSMinYEdge, NSMaxXEdge, NSMaxYEdge, NSMinXEdge,
NSMinYEdge, NSMaxXEdge, NSMaxYEdge, NSMinXEdge};
NSColor *colors[] = {[NSColor controlShadowColor],
[NSColor controlLightHighlightColor],
[NSColor controlLightHighlightColor],
[NSColor controlShadowColor],
[NSColor controlLightHighlightColor],
[NSColor controlShadowColor],
[NSColor controlShadowColor],
[NSColor controlLightHighlightColor]};
// These names are role names not the actual colours
NSColor *dark = [NSColor controlShadowColor];
NSColor *white = [NSColor controlLightHighlightColor];
NSColor *colors[] = {dark, white, white, dark,
white, dark, dark, white};
if ([[NSView focusView] isFlipped] == YES)
{
@ -171,20 +221,19 @@
NSRectEdge dn_sides[] = {NSMaxXEdge, NSMaxYEdge,
NSMinXEdge, NSMinYEdge,
NSMaxXEdge, NSMaxYEdge};
NSColor *colors[] = {[NSColor controlShadowColor],
[NSColor controlShadowColor],
[NSColor controlShadowColor],
[NSColor controlShadowColor],
[NSColor controlDarkShadowColor],
[NSColor controlDarkShadowColor]};
// These names are role names not the actual colours
NSColor *black = [NSColor controlDarkShadowColor];
NSColor *dark = [NSColor controlShadowColor];
NSColor *colors[] = {dark, dark, dark, dark,
black,black};
if ([[NSView focusView] isFlipped] == YES)
{
NSDrawColorTiledRects(border, clip, dn_sides, colors, 8);
NSDrawColorTiledRects(border, clip, dn_sides, colors, 6);
}
else
{
NSDrawColorTiledRects(border, clip, up_sides, colors, 8);
NSDrawColorTiledRects(border, clip, up_sides, colors, 6);
}
}

View file

@ -78,11 +78,20 @@
{
}
- (id) initWithCoder: (NSCoder*)aCoder
- (id) initWithCoder: (NSCoder*)aDecoder
{
[aCoder decodeValueOfObjCType: @encode(id) at: &_src];
[aCoder decodeValueOfObjCType: @encode(id) at: &_dst];
[aCoder decodeValueOfObjCType: @encode(id) at: &_tag];
if ([aDecoder allowsKeyedCoding])
{
ASSIGN(_src, [aDecoder decodeObjectForKey: @"NSSource"]);
ASSIGN(_dst, [aDecoder decodeObjectForKey: @"NSDestination"]);
ASSIGN(_tag, [aDecoder decodeObjectForKey: @"NSLabel"]);
}
else
{
[aDecoder decodeValueOfObjCType: @encode(id) at: &_src];
[aDecoder decodeValueOfObjCType: @encode(id) at: &_dst];
[aDecoder decodeValueOfObjCType: @encode(id) at: &_tag];
}
return self;
}

View file

@ -49,6 +49,7 @@
#include "AppKit/NSImage.h"
#include "AppKit/NSSound.h"
#include "AppKit/NSWindow.h"
#include "GNUstepGUI/GSDrawFunctions.h"
@implementation NSButtonCell
@ -619,11 +620,11 @@
// FIXME Should check the bezel and gradient style
if (_cell.is_highlighted && (_highlightsByMask & NSPushInCellMask))
{
NSDrawGrayBezel(cellFrame, NSZeroRect);
[GSDrawFunctions drawGrayBezel: cellFrame : NSZeroRect];
}
else
{
NSDrawButton(cellFrame, NSZeroRect);
[GSDrawFunctions drawButton: cellFrame : NSZeroRect];
}
}

View file

@ -728,17 +728,56 @@
- (id) initWithCoder: (NSCoder*)aDecoder
{
[super initWithCoder: aDecoder];
[aDecoder decodeValueOfObjCType: @encode(id) at: &_items];
[aDecoder decodeValueOfObjCType: @encode(id) at: &_font];
[aDecoder decodeValueOfObjCType: @encode(NSTabViewType) at: &_type];
[aDecoder decodeValueOfObjCType: @encode(BOOL) at: &_draws_background];
[aDecoder decodeValueOfObjCType: @encode(BOOL) at: &_truncated_label];
_delegate = [aDecoder decodeObject];
[aDecoder decodeValueOfObjCType: "i" at: &_selected_item];
_selected = [_items objectAtIndex: _selected_item];
self = [super initWithCoder: aDecoder];
if ([aDecoder allowsKeyedCoding])
{
if ([aDecoder containsValueForKey: @"NSAllowTruncatedLabels"])
{
[self setAllowsTruncatedLabels: [aDecoder decodeBoolForKey:
@"NSAllowTruncatedLabels"]];
}
if ([aDecoder containsValueForKey: @"NSDrawsBackground"])
{
[self setDrawsBackground: [aDecoder decodeBoolForKey:
@"NSDrawsBackground"]];
}
if ([aDecoder containsValueForKey: @"NSFont"])
{
[self setFont: [aDecoder decodeObjectForKey: @"NSFont"]];
}
if ([aDecoder containsValueForKey: @"NSTabViewItems"])
{
NSArray *items = [aDecoder decodeObjectForKey: @"NSTabViewItems"];
NSEnumerator *enumerator = [items objectEnumerator];
NSTabViewItem *item;
while ((item = [enumerator nextObject]) != nil)
{
[self addTabViewItem: item];
}
}
if ([aDecoder containsValueForKey: @"NSSelectedTabViewItem"])
{
[self selectTabViewItem: [aDecoder decodeObjectForKey:
@"NSSelectedTabViewItem"]];
}
if ([aDecoder containsValueForKey: @"NSTvFlags"])
{
//int flags = [aDecoder decodeObjectForKey: @"NSTvFlags"]];
}
}
else
{
[aDecoder decodeValueOfObjCType: @encode(id) at: &_items];
[aDecoder decodeValueOfObjCType: @encode(id) at: &_font];
[aDecoder decodeValueOfObjCType: @encode(NSTabViewType) at: &_type];
[aDecoder decodeValueOfObjCType: @encode(BOOL) at: &_draws_background];
[aDecoder decodeValueOfObjCType: @encode(BOOL) at: &_truncated_label];
_delegate = [aDecoder decodeObject];
[aDecoder decodeValueOfObjCType: "i" at: &_selected_item];
_selected = [_items objectAtIndex: _selected_item];
}
return self;
}
@end

View file

@ -220,13 +220,26 @@
- (id) initWithCoder: (NSCoder*)aDecoder
{
[aDecoder decodeValueOfObjCType: @encode(id) at: &_ident];
[aDecoder decodeValueOfObjCType: @encode(id) at: &_label];
[aDecoder decodeValueOfObjCType: @encode(id) at: &_view];
[aDecoder decodeValueOfObjCType: @encode(id) at: &_color];
[aDecoder decodeValueOfObjCType: @encode(NSTabState) at:&_state];
[aDecoder decodeValueOfObjCType: @encode(id) at: &_first_responder];
[aDecoder decodeValueOfObjCType: @encode(id) at: &_tabview];
if ([aDecoder allowsKeyedCoding])
{
id identifier = [aDecoder decodeObjectForKey: @"NSIdentifier"];
self = [self initWithIdentifier: identifier];
[self setLabel: [aDecoder decodeObjectForKey: @"NSLabel"]];
[self setView: [aDecoder decodeObjectForKey: @"NSView"]];
[self setColor: [aDecoder decodeObjectForKey: @"NSColor"]];
[self _setTabView: [aDecoder decodeObjectForKey: @"NSTabView"]];
}
else
{
[aDecoder decodeValueOfObjCType: @encode(id) at: &_ident];
[aDecoder decodeValueOfObjCType: @encode(id) at: &_label];
[aDecoder decodeValueOfObjCType: @encode(id) at: &_view];
[aDecoder decodeValueOfObjCType: @encode(id) at: &_color];
[aDecoder decodeValueOfObjCType: @encode(NSTabState) at:&_state];
[aDecoder decodeValueOfObjCType: @encode(id) at: &_first_responder];
[aDecoder decodeValueOfObjCType: @encode(id) at: &_tabview];
}
return self;
}