1 
2 /*
3  * Copyright 2011 Google Inc.
4  *
5  * Use of this source code is governed by a BSD-style license that can be
6  * found in the LICENSE file.
7  */
8 
9 #import <QuartzCore/QuartzCore.h>
10 #import <Cocoa/Cocoa.h>
11 #import "SkWindow.h"
12 class SkEvent;
13 @class SkNSView;
14 
15 @protocol SkNSViewOptionsDelegate <NSObject>
16 @optional
17 // Called when the view needs to handle adding an SkOSMenu
18 - (void) view:(SkNSView*)view didAddMenu:(const SkOSMenu*)menu;
19 - (void) view:(SkNSView*)view didUpdateMenu:(const SkOSMenu*)menu;
20 @end
21 
22 @interface SkNSView : NSView {
23     BOOL fRedrawRequestPending;
24 
25     NSString* fTitle;
26     SkOSWindow* fWind;
27 #if SK_SUPPORT_GPU
28     NSOpenGLContext* fGLContext;
29 #endif
30     id<SkNSViewOptionsDelegate> fOptionsDelegate;
31 }
32 
33 @property (nonatomic, readonly) SkOSWindow *fWind;
34 @property (nonatomic, retain) NSString* fTitle;
35 #if SK_SUPPORT_GPU
36 @property (nonatomic, retain) NSOpenGLContext* fGLContext;
37 #endif
38 @property (nonatomic, assign) id<SkNSViewOptionsDelegate> fOptionsDelegate;
39 
40 - (id)initWithDefaults;
41 - (void)setUpWindow;
42 - (void)resizeSkView:(NSSize)newSize;
43 - (void)setSkTitle:(const char*)title;
44 - (void)onAddMenu:(const SkOSMenu*)menu;
45 - (void)onUpdateMenu:(const SkOSMenu*)menu;
46 - (void)postInvalWithRect:(const SkIRect*)rectOrNil;
47 - (BOOL)onHandleEvent:(const SkEvent&)event;
48 
49 - (bool)attach:(SkOSWindow::SkBackEndTypes)attachType withMSAASampleCount:(int) sampleCount andGetInfo:(SkOSWindow::AttachmentInfo*) info;
50 - (void)detach;
51 - (void)present;
52 
53 - (void)freeNativeWind;
54 
55 @end
56