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