1#import "SarienWindow.h" 2#include "sarien.h" 3#include "graphics.h" 4 5@implementation SarienWindow 6 7- (void)awakeFromNib 8{ 9 NSRect screenRect; 10 11 screenRect = [[self screen] frame]; 12 13 if (screenRect.size.width >= 1280) 14 { 15 maxScale = 4; 16 } 17 else if (screenRect.size.width >= 1024) 18 { 19 maxScale = 3; 20 } 21 else if (screenRect.size.width >= 640) 22 { 23 maxScale = 2; 24 } 25 else 26 { 27 maxScale = 1; 28 } 29 30 [self setScale: maxScale < 2? maxScale: 2]; 31} 32 33- (void)close 34{ 35 [super close]; 36 [NSApp terminate: self]; 37} 38 39- (void)setScale:(int)newScale 40{ 41 NSRect newRect; 42 NSMenu* scaleMenu; 43 44 if ((newScale > maxScale) || (scale == newScale)) 45 { 46 return; 47 } 48 49 scaleMenu = [[[NSApp mainMenu] itemWithTag: 100] submenu]; 50 [[scaleMenu itemWithTag: newScale] setState: NSOnState]; 51 52 if (scale != 0) 53 { 54 [[scaleMenu itemWithTag: scale] setState: NSOffState]; 55 } 56 57 scale = newScale; 58 59 newRect = [self frame]; 60 newRect.size.width = GFX_WIDTH * newScale; 61 newRect.size.height = GFX_HEIGHT * newScale; 62 [self setFrame:newRect display:TRUE animate:TRUE]; 63} 64 65- (IBAction)setScale1x:(id)sender 66{ 67 [self setScale:1]; 68} 69 70- (IBAction)setScale2x:(id)sender 71{ 72 [self setScale:2]; 73} 74 75- (IBAction)setScale3x:(id)sender 76{ 77 [self setScale:3]; 78} 79 80- (IBAction)setScale4x:(id)sender 81{ 82 [self setScale:4]; 83} 84 85@end 86