/*
File: MBCTuner.h
Contains: Manage a window to set graphics options
Version: 1.0
Copyright: © 2003 by Apple Computer, Inc., all rights reserved.
File Ownership:
DRI: Matthias Neeracher x43683
Writers:
(MN) Matthias Neeracher
Change History (most recent first):
$Log: MBCTuner.mm,v $
Revision 1.3 2004/07/10 04:53:29 neerache
Tweak visuals
Revision 1.2 2003/06/15 19:05:29 neerache
Add light experiment window
Revision 1.1 2003/06/05 08:31:26 neerache
Added Tuner
*/
#import "MBCTuner.h"
#import "MBCBoardView.h"
#import "MBCBoardViewDraw.h"
#import "MBCBoardViewTextures.h"
#import "MBCController.h"
static MBCTuner * sTuner;
@implementation MBCTunerStyle
- (void) updateFrom:(MBCDrawStyle *)drawStyle
{
[fDiffuse setFloatValue:drawStyle->fDiffuse];
[fSpecular setFloatValue:drawStyle->fSpecular];
[fShininess setFloatValue:drawStyle->fShininess];
[fAlpha setFloatValue:drawStyle->fAlpha];
}
- (void) updateTo:(MBCDrawStyle *)drawStyle
{
drawStyle->fDiffuse = [fDiffuse floatValue];
drawStyle->fSpecular = [fSpecular floatValue];
drawStyle->fShininess = [fShininess floatValue];
drawStyle->fAlpha = [fAlpha floatValue];
}
@end
@implementation MBCTuner
+ (void) makeTuner
{
//
// Chess Tuner is intended to be run from inside the build directory
// We create a styles link blindly
//
NSString * bndl = [[NSBundle mainBundle] bundlePath];
NSString * path = [bndl stringByDeletingLastPathComponent]; // .../build
path = [path stringByDeletingLastPathComponent]; // ...
path = [path stringByAppendingPathComponent:@"Styles"];
bndl = [bndl stringByAppendingPathComponent:
@"Contents/Resources/Styles"];
[[NSFileManager defaultManager] createSymbolicLinkAtPath:bndl
pathContent:path];
sTuner = [[MBCTuner alloc] init];
}
- (void) loadStyles
{
fView = [[MBCController controller] view];
[fWhitePieceStyle updateFrom:fView->fPieceDrawStyle[0]];
[fBlackPieceStyle updateFrom:fView->fPieceDrawStyle[1]];
[fWhiteBoardStyle updateFrom:fView->fBoardDrawStyle[0]];
[fBlackBoardStyle updateFrom:fView->fBoardDrawStyle[1]];
[fBorderStyle updateFrom:fView->fBorderDrawStyle];
[fBoardReflectivity setFloatValue:fView->fBoardReflectivity];
[fLabelIntensity setFloatValue:fView->fLabelIntensity];
[fLightPosX setFloatValue:fView->fLightPos[0]];
[fLightPosY setFloatValue:fView->fLightPos[1]];
[fLightPosZ setFloatValue:fView->fLightPos[2]];
[fAmbient setFloatValue:fView->fAmbient];
}
+ (void) loadStyles
{
[sTuner loadStyles];
}
+ (void) saveStyles
{
}
- (id) init
{
self = [super initWithWindowNibName:@"Tuner"];
[[self window] orderFront:self];
return self;
}
- (IBAction) updateWhitePieceStyle:(id)sender
{
[fWhitePieceStyle updateTo:fView->fPieceDrawStyle[0]];
[fView setNeedsDisplay:YES];
}
- (IBAction) updateBlackPieceStyle:(id)sender
{
[fBlackPieceStyle updateTo:fView->fPieceDrawStyle[1]];
[fView setNeedsDisplay:YES];
}
- (IBAction) updateWhiteBoardStyle:(id)sender
{
[fWhiteBoardStyle updateTo:fView->fBoardDrawStyle[0]];
[fView setNeedsDisplay:YES];
}
- (IBAction) updateBlackBoardStyle:(id)sender
{
[fBlackBoardStyle updateTo:fView->fBoardDrawStyle[1]];
[fView setNeedsDisplay:YES];
}
- (IBAction) updateBoardStyle:(id)sender
{
[fBorderStyle updateTo:fView->fBorderDrawStyle];
fView->fBoardReflectivity = [fBoardReflectivity floatValue];
fView->fLabelIntensity = [fLabelIntensity floatValue];
[fView setNeedsDisplay:YES];
}
- (IBAction) savePieceStyles:(id)sender
{
[fView savePieceStyles];
}
- (IBAction) saveBoardStyles:(id)sender
{
[fView saveBoardStyles];
}
static const char * sLightParams =
"\tfloat light_ambient = %5.3ff\n"
"\tGLfloat light_pos[4] = {%4.1ff, %4.1ff, %4.1ff, 1.0};\n";
- (IBAction) updateLight:(id)sender
{
fView->fLightPos[0] = [fLightPosX floatValue];
fView->fLightPos[1] = [fLightPosY floatValue];
fView->fLightPos[2] = [fLightPosZ floatValue];
fView->fAmbient = [fAmbient floatValue];
[fView setNeedsDisplay:YES];
[fLightParams setStringValue:
[NSString stringWithFormat:
[NSString stringWithCString:sLightParams],
fView->fAmbient,
fView->fLightPos[0],
fView->fLightPos[1],
fView->fLightPos[2]]];
}
@end
// Local Variables:
// mode:ObjC
// End: