compositor.h revision cedac228d2dd51db4b79ea1e72c7f249408ee061
1// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef CONTENT_PUBLIC_BROWSER_ANDROID_COMPOSITOR_H_ 6#define CONTENT_PUBLIC_BROWSER_ANDROID_COMPOSITOR_H_ 7 8#include "base/callback.h" 9#include "cc/resources/ui_resource_bitmap.h" 10#include "cc/resources/ui_resource_client.h" 11#include "content/common/content_export.h" 12#include "ui/gfx/native_widget_types.h" 13#include "ui/gfx/rect.h" 14#include "ui/gfx/size.h" 15 16class SkBitmap; 17 18namespace cc { 19class Layer; 20} 21 22namespace gfx { 23class JavaBitmap; 24} 25 26namespace content { 27class CompositorClient; 28 29// An interface to the browser-side compositor. 30class CONTENT_EXPORT Compositor { 31 public: 32 virtual ~Compositor() {} 33 34 // Performs the global initialization needed before any compositor 35 // instance can be used. This should be called only once. 36 static void Initialize(); 37 38 // Creates and returns a compositor instance. |root_window| needs to outlive 39 // the compositor as it manages callbacks on the compositor. 40 static Compositor* Create(CompositorClient* client, 41 gfx::NativeWindow root_window); 42 43 // Attaches the layer tree. 44 virtual void SetRootLayer(scoped_refptr<cc::Layer> root) = 0; 45 46 // Set the scale factor from DIP to pixel. 47 virtual void setDeviceScaleFactor(float factor) = 0; 48 49 // Set the output surface bounds. 50 virtual void SetWindowBounds(const gfx::Size& size) = 0; 51 52 // Sets the window visibility. When becoming invisible, resources will get 53 // freed and other calls into the compositor are not allowed until after 54 // having been made visible again. 55 virtual void SetVisible(bool visible) = 0; 56 57 // Set the output surface handle which the compositor renders into. 58 // DEPRECATED: Use SetSurface() which takes a Java Surface object. 59 virtual void SetWindowSurface(ANativeWindow* window) = 0; 60 61 // Set the output surface which the compositor renders into. 62 virtual void SetSurface(jobject surface) = 0; 63 64 // Tells the view tree to assume a transparent background when rendering. 65 virtual void SetHasTransparentBackground(bool flag) = 0; 66 67 // Request layout and draw. You only need to call this if you need to trigger 68 // Composite *without* having modified the layer tree. 69 virtual void SetNeedsComposite() = 0; 70 71 // Generates a UIResource and returns a UIResourceId. |is_transient| 72 // indicates whether or not to release the resource once the bitmap 73 // has been uploaded. May return 0. 74 virtual cc::UIResourceId GenerateUIResource(const SkBitmap& bitmap, 75 bool is_transient) = 0; 76 77 // Generates an ETC1 compressed UIResource. See above for |is_transient|. 78 // May return 0. 79 virtual cc::UIResourceId GenerateCompressedUIResource(const gfx::Size& size, 80 void* pixels, 81 bool is_transient) = 0; 82 83 // Deletes a UIResource. 84 virtual void DeleteUIResource(cc::UIResourceId resource_id) = 0; 85 86 protected: 87 Compositor() {} 88}; 89 90} // namespace content 91 92#endif // CONTENT_PUBLIC_BROWSER_ANDROID_COMPOSITOR_H_ 93