| 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 |