//*****************************************************************************
//
//	ToolIconView.m.  
//
//		Displays an image in the toolbar
//
//			by	Felipe A. Rodriguez
//
//	This code is supplied "as is" the author makes no warranty as to its 
//	suitability for any purpose.  This code is free and may be distributed 
//	in accordance with the terms of the:
//		
//			GNU GENERAL PUBLIC LICENSE
//			Version 2, June 1991
//			copyright (C) 1989, 1991 Free Software Foundation, Inc.
// 			675 Mass Ave, Cambridge, MA 02139, USA
//
//*****************************************************************************

#import "ToolIconView.h"



@implementation ToolIconView

//*****************************************************************************
//
// 		init the appIconView
//
//*****************************************************************************

- initFrame:(const NXRect *)bRect 
{
    [super initFrame:bRect];
	[super setAutodisplay:YES];
	[super notifyAncestorWhenFrameChanged:YES];
	FrameImage = [NXImage findImageNamed: "frame"];
	FrameBkImage = [NXImage findImageNamed: "frameBk"];

    return self;
}
//************************************************************************
//
// 			app Icon handling Methods
//
//************************************************************************

- (NXPoint) _centerPoint:anImage
{
NXSize	appTileSize;
NXSize	imageSize;
NXPoint	centerPoint = {0,0};

		//  You must center the composited image within the contentView of the
		//  appIcon window.
	[FrameImage getSize: &appTileSize];
	[anImage getSize: &imageSize];
		// center image and add offset to compensate for location of subview
	if( imageSize.width < appTileSize.width ) 
		centerPoint.x += ((appTileSize.width - imageSize.width ) / 2.0) ;
	
	if( imageSize.height < appTileSize.height ) 
		centerPoint.y += ((appTileSize.height - imageSize.height) / 2.0) ;
		
	return centerPoint;
}
//************************************************************************
//
// 	NXAppTile is composited first at 0,0 of the icon window's content view
//	(this is required in order to maintain the NeXT icon look).  'anImage'
//	is then composited at center (centering is also a requirement).
//
//************************************************************************

- drawSelf:(const NXRect *)rects :(int)rectCount 
{
NXPoint contentViewOrigin = {0.0, 0.0 };
NXPoint	centerPoint = [self _centerPoint:Image];
	
	[FrameBkImage composite:NX_SOVER toPoint:&contentViewOrigin];
	[Image composite:NX_SOVER toPoint:&centerPoint];
	[FrameImage composite:NX_SOVER toPoint:&contentViewOrigin];

	return self;
}
- (BOOL)acceptsFirstMouse
{
	return YES;
}
- (BOOL)acceptsFirstResponder
{
	return YES;
}
- resignFirstResponder
{
	return nil;
}
//*****************************************************************************
//
// 		we will display the NXImage we are passed  
//
//*****************************************************************************

- setImage:theImage 
{
	Image = theImage; 
	[self display];

	return 	self; 
}
//************************************************************************
//
// 	free simply gets rid of everything we created
// 	This is how nice objects clean up.
//
//************************************************************************

- free
{
    return [super free];
}

@end
