// ScoreBoardBackground.m
// Project: Cribbage
// Stephan Wacker
// 93-10-13


#import "ScoreBoardBackground.h"


@implementation ScoreBoardBackground


- makeImage: (BOOL) fromScratch
{
    NXRect	rect;
    
    if( fromScratch ) {
	[image free];
	image = nil;
    }
    
    if( !icon ) return nil;

    [icon getSize: &rect.size];
    rect.origin.x = rect.origin.y = 0;
    
    if( !image ) {
	image = [[NXImage alloc] initSize: &rect.size];
	[image useCacheWithDepth: NX_TwelveBitRGBDepth];
    }
    
    [image lockFocus];
    [icon composite: NX_COPY toPoint: &rect.origin];
    [decoration composite: NX_SOVER toPoint: &rect.origin];
    [image unlockFocus];
    
    return self;
}


- setIcon: (const char *) iconName
{
    id		newIcon = [NXImage findImageNamed: iconName];
    
    if( newIcon ) {
	icon = newIcon;
	[self makeImage: YES];
	[self displayFromOpaqueAncestor: &bounds : 1 : YES];
    }
    
    return self;
}


- setDecoration: (const char *) decorationName
{
    id		newDecoration = [NXImage findImageNamed: decorationName];
    
    if( newDecoration ) {
	decoration = newDecoration;
	[self makeImage: NO];
	[self displayFromOpaqueAncestor: &bounds : 1 : YES];
    }
    
    return self;
}


- initFrame: (const NXRect *) frameRect
{
    [super initFrame: frameRect];
    [self setOpaque: NO];
    
    icon = [NXImage findImageNamed: "board"];
    decoration = [NXImage findImageNamed: "boardDecoration"];
    [self makeImage: YES];
    
    return self;
}


- drawSelf: (const NXRect *) rects : (int) nRect
{
    if( nRect == 3 ) {
	[self drawSelf: rects+1 : 1];
	[self drawSelf: rects+2 : 1];
    } else {
	[image composite: NX_SOVER fromRect: rects toPoint: &rects->origin];
    }
    
    return self;
}


@end	// ScoreBoardBackground
