OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef CONTENT_BROWSER_COMPOSITOR_BROWSER_COMPOSITOR_VIEW_MAC_H_ | 5 #ifndef CONTENT_BROWSER_COMPOSITOR_BROWSER_COMPOSITOR_VIEW_MAC_H_ |
6 #define CONTENT_BROWSER_COMPOSITOR_BROWSER_COMPOSITOR_VIEW_MAC_H_ | 6 #define CONTENT_BROWSER_COMPOSITOR_BROWSER_COMPOSITOR_VIEW_MAC_H_ |
7 | 7 |
8 #import <Cocoa/Cocoa.h> | 8 #import <Cocoa/Cocoa.h> |
9 | 9 |
10 #include "base/mac/scoped_nsobject.h" | 10 #include "base/mac/scoped_nsobject.h" |
11 #include "cc/output/software_frame_data.h" | 11 #include "cc/output/software_frame_data.h" |
12 #include "content/browser/renderer_host/compositing_iosurface_layer_mac.h" | 12 #include "content/browser/renderer_host/compositing_iosurface_layer_mac.h" |
13 #include "content/browser/renderer_host/software_layer_mac.h" | 13 #include "content/browser/renderer_host/software_layer_mac.h" |
14 #include "skia/ext/platform_canvas.h" | 14 #include "skia/ext/platform_canvas.h" |
15 #include "ui/compositor/compositor.h" | 15 #include "ui/compositor/compositor.h" |
16 #include "ui/gfx/geometry/size.h" | 16 #include "ui/gfx/geometry/size.h" |
17 | 17 |
18 namespace content { | 18 namespace content { |
19 class BrowserCompositorViewMacHelper; | 19 class BrowserCompositorViewMacHelper; |
20 | |
21 class BrowserCompositorViewMacClient { | |
22 public: | |
23 virtual void BrowserCompositorDidDrawFrame() = 0; | |
24 }; | |
25 | |
26 } // namespace content | 20 } // namespace content |
27 | 21 |
28 // Additions to the NSView interface for compositor frames. | 22 // Additions to the NSView interface for compositor frames. |
29 @interface NSView (BrowserCompositorView) | 23 @interface NSView (BrowserCompositorView) |
30 - (void)gotAcceleratedIOSurfaceFrame:(uint64)surface_handle | 24 - (void)gotAcceleratedIOSurfaceFrame:(uint64)surface_handle |
31 withPixelSize:(gfx::Size)pixel_size | 25 withPixelSize:(gfx::Size)pixel_size |
32 withScaleFactor:(float)scale_factor; | 26 withScaleFactor:(float)scale_factor; |
33 | 27 |
34 - (void)gotSoftwareFrame:(cc::SoftwareFrameData*)frame_data | 28 - (void)gotSoftwareFrame:(cc::SoftwareFrameData*)frame_data |
35 withScaleFactor:(float)scale_factor | 29 withScaleFactor:(float)scale_factor |
36 withCanvas:(SkCanvas*)canvas; | 30 withCanvas:(SkCanvas*)canvas; |
37 @end // NSView (BrowserCompositorView) | 31 @end // NSView (BrowserCompositorView) |
38 | 32 |
39 // NSView drawn by a ui::Compositor. The superview of this view is responsible | 33 // NSView drawn by a ui::Compositor. The superview of this view is responsible |
40 // for changing the ui::Compositor SizeAndScale and calling layoutLayers when | 34 // for changing the ui::Compositor SizeAndScale and calling layoutLayers when |
41 // the size of the parent view may change. This interface is patterned after | 35 // the size of the parent view may change. This interface is patterned after |
42 // the needs of RenderWidgetHostViewCocoa, and could change. | 36 // the needs of RenderWidgetHostViewCocoa, and could change. |
43 @interface BrowserCompositorViewMac : NSView { | 37 @interface BrowserCompositorViewMac : NSView { |
44 scoped_ptr<ui::Compositor> compositor_; | 38 scoped_ptr<ui::Compositor> compositor_; |
45 | 39 |
46 base::scoped_nsobject<CALayer> background_layer_; | 40 base::scoped_nsobject<CALayer> background_layer_; |
47 base::scoped_nsobject<CompositingIOSurfaceLayer> accelerated_layer_; | 41 base::scoped_nsobject<CompositingIOSurfaceLayer> accelerated_layer_; |
48 base::scoped_nsobject<SoftwareLayer> software_layer_; | 42 base::scoped_nsobject<SoftwareLayer> software_layer_; |
49 | 43 |
50 content::BrowserCompositorViewMacClient* client_; | |
51 scoped_ptr<content::BrowserCompositorViewMacHelper> helper_; | 44 scoped_ptr<content::BrowserCompositorViewMacHelper> helper_; |
52 } | 45 } |
53 | 46 |
54 // Initialize to render the content of a specific superview. | 47 // Initialize to render the content of a specific superview. |
55 - (id)initWithSuperview:(NSView*)view | 48 - (id)initWithSuperview:(NSView*)view; |
56 withClient:(content::BrowserCompositorViewMacClient*)client; | |
57 | 49 |
58 // Re-position the layers to the correct place when this view's superview | 50 // Re-position the layers to the correct place when this view's superview |
59 // changes size, or when the accelerated or software content changes. | 51 // changes size, or when the accelerated or software content changes. |
60 - (void)layoutLayers; | 52 - (void)layoutLayers; |
61 | 53 |
62 // Disallow further access to the client. | 54 // Disallow further access to the client. |
63 - (void)resetClient; | 55 - (void)resetClient; |
64 | 56 |
65 // Access the underlying ui::Compositor for this view. | 57 // Access the underlying ui::Compositor for this view. |
66 - (ui::Compositor*)compositor; | 58 - (ui::Compositor*)compositor; |
67 @end // BrowserCompositorViewMac | 59 @end // BrowserCompositorViewMac |
68 | 60 |
69 #endif // CONTENT_BROWSER_COMPOSITOR_BROWSER_COMPOSITOR_VIEW_MAC_H_ | 61 #endif // CONTENT_BROWSER_COMPOSITOR_BROWSER_COMPOSITOR_VIEW_MAC_H_ |
OLD | NEW |