| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 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 UI_COMPOSITOR_LAYER_H_ | 5 #ifndef UI_COMPOSITOR_LAYER_H_ |
| 6 #define UI_COMPOSITOR_LAYER_H_ | 6 #define UI_COMPOSITOR_LAYER_H_ |
| 7 | 7 |
| 8 #include <string> | 8 #include <string> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| 11 #include "base/compiler_specific.h" | 11 #include "base/compiler_specific.h" |
| 12 #include "base/memory/ref_counted.h" | 12 #include "base/memory/ref_counted.h" |
| 13 #include "base/memory/scoped_ptr.h" | 13 #include "base/memory/scoped_ptr.h" |
| 14 #include "base/message_loop.h" | 14 #include "base/message_loop.h" |
| 15 #include "third_party/WebKit/Source/Platform/chromium/public/WebContentLayerClie
nt.h" | 15 #include "cc/content_layer_client.h" |
| 16 #include "third_party/WebKit/Source/Platform/chromium/public/WebExternalTextureL
ayerClient.h" | 16 #include "cc/texture_layer_client.h" |
| 17 #include "third_party/WebKit/Source/Platform/chromium/public/WebLayer.h" | |
| 18 #include "third_party/WebKit/Source/Platform/chromium/public/WebContentLayer.h" | |
| 19 #include "third_party/WebKit/Source/Platform/chromium/public/WebSolidColorLayer.
h" | |
| 20 #include "third_party/WebKit/Source/Platform/chromium/public/WebExternalTextureL
ayer.h" | |
| 21 #include "third_party/skia/include/core/SkColor.h" | 17 #include "third_party/skia/include/core/SkColor.h" |
| 22 #include "third_party/skia/include/core/SkRegion.h" | 18 #include "third_party/skia/include/core/SkRegion.h" |
| 23 #include "ui/compositor/compositor.h" | 19 #include "ui/compositor/compositor.h" |
| 24 #include "ui/compositor/layer_animation_delegate.h" | 20 #include "ui/compositor/layer_animation_delegate.h" |
| 25 #include "ui/compositor/layer_delegate.h" | 21 #include "ui/compositor/layer_delegate.h" |
| 26 #include "ui/compositor/layer_type.h" | 22 #include "ui/compositor/layer_type.h" |
| 27 #include "ui/gfx/rect.h" | 23 #include "ui/gfx/rect.h" |
| 28 #include "ui/gfx/transform.h" | 24 #include "ui/gfx/transform.h" |
| 29 | 25 |
| 30 class SkCanvas; | 26 class SkCanvas; |
| 31 | 27 |
| 28 namespace cc { |
| 29 class ContentLayer; |
| 30 class Layer; |
| 31 class ResourceUpdateQueue; |
| 32 class SolidColorLayer; |
| 33 class TextureLayer; |
| 34 } |
| 35 |
| 32 namespace ui { | 36 namespace ui { |
| 33 | 37 |
| 34 class Compositor; | 38 class Compositor; |
| 35 class LayerAnimator; | 39 class LayerAnimator; |
| 36 class Texture; | 40 class Texture; |
| 37 | 41 |
| 38 // Layer manages a texture, transform and a set of child Layers. Any View that | 42 // Layer manages a texture, transform and a set of child Layers. Any View that |
| 39 // has enabled layers ends up creating a Layer to manage the texture. | 43 // has enabled layers ends up creating a Layer to manage the texture. |
| 40 // A Layer can also be created without a texture, in which case it renders | 44 // A Layer can also be created without a texture, in which case it renders |
| 41 // nothing and is simply used as a node in a hierarchy of layers. | 45 // nothing and is simply used as a node in a hierarchy of layers. |
| 42 // Coordinate system used in layers is DIP (Density Independent Pixel) | 46 // Coordinate system used in layers is DIP (Density Independent Pixel) |
| 43 // coordinates unless explicitly mentioned as pixel coordinates. | 47 // coordinates unless explicitly mentioned as pixel coordinates. |
| 44 // | 48 // |
| 45 // NOTE: unlike Views, each Layer does *not* own its children views. If you | 49 // NOTE: unlike Views, each Layer does *not* own its children views. If you |
| 46 // delete a Layer and it has children, the parent of each child layer is set to | 50 // delete a Layer and it has children, the parent of each child layer is set to |
| 47 // NULL, but the children are not deleted. | 51 // NULL, but the children are not deleted. |
| 48 class COMPOSITOR_EXPORT Layer | 52 class COMPOSITOR_EXPORT Layer |
| 49 : public LayerAnimationDelegate, | 53 : public LayerAnimationDelegate, |
| 50 NON_EXPORTED_BASE(public WebKit::WebContentLayerClient), | 54 NON_EXPORTED_BASE(public cc::ContentLayerClient), |
| 51 NON_EXPORTED_BASE(public WebKit::WebExternalTextureLayerClient) { | 55 NON_EXPORTED_BASE(public cc::TextureLayerClient) { |
| 52 public: | 56 public: |
| 53 Layer(); | 57 Layer(); |
| 54 explicit Layer(LayerType type); | 58 explicit Layer(LayerType type); |
| 55 virtual ~Layer(); | 59 virtual ~Layer(); |
| 56 | 60 |
| 57 // Retrieves the Layer's compositor. The Layer will walk up its parent chain | 61 // Retrieves the Layer's compositor. The Layer will walk up its parent chain |
| 58 // to locate it. Returns NULL if the Layer is not attached to a compositor. | 62 // to locate it. Returns NULL if the Layer is not attached to a compositor. |
| 59 Compositor* GetCompositor(); | 63 Compositor* GetCompositor(); |
| 60 | 64 |
| 61 // Called by the compositor when the Layer is set as its root Layer. This can | 65 // Called by the compositor when the Layer is set as its root Layer. This can |
| (...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 259 // not apply to the canvas passed to the pending draw. | 263 // not apply to the canvas passed to the pending draw. |
| 260 void set_scale_content(bool scale_content) { scale_content_ = scale_content; } | 264 void set_scale_content(bool scale_content) { scale_content_ = scale_content; } |
| 261 | 265 |
| 262 // Returns true if the layer scales its content. | 266 // Returns true if the layer scales its content. |
| 263 bool scale_content() const { return scale_content_; } | 267 bool scale_content() const { return scale_content_; } |
| 264 | 268 |
| 265 // Sometimes the Layer is being updated by something other than SetCanvas | 269 // Sometimes the Layer is being updated by something other than SetCanvas |
| 266 // (e.g. the GPU process on UI_COMPOSITOR_IMAGE_TRANSPORT). | 270 // (e.g. the GPU process on UI_COMPOSITOR_IMAGE_TRANSPORT). |
| 267 bool layer_updated_externally() const { return layer_updated_externally_; } | 271 bool layer_updated_externally() const { return layer_updated_externally_; } |
| 268 | 272 |
| 269 // WebContentLayerClient | 273 // ContentLayerClient |
| 270 virtual void paintContents(WebKit::WebCanvas*, | 274 virtual void paintContents( |
| 271 const WebKit::WebRect& clip, | 275 SkCanvas*, const gfx::Rect& clip, gfx::RectF& opaque) OVERRIDE; |
| 272 #if WEBCONTENTLAYERCLIENT_HAS_CANPAINTLCDTEXT | |
| 273 bool can_paint_lcd_text, | |
| 274 #endif // WEBCONTENTLAYERCLIENT_HAS_CANPAINTLCDTEXT | |
| 275 WebKit::WebFloatRect& opaque) OVERRIDE; | |
| 276 | 276 |
| 277 WebKit::WebLayer* web_layer() { return web_layer_; } | 277 cc::Layer* cc_layer() { return cc_layer_; } |
| 278 | 278 |
| 279 // WebExternalTextureLayerClient | 279 // TextureLayerClient |
| 280 virtual unsigned prepareTexture( | 280 virtual unsigned prepareTexture(cc::ResourceUpdateQueue&) OVERRIDE; |
| 281 WebKit::WebTextureUpdater& /* updater */) OVERRIDE; | |
| 282 virtual WebKit::WebGraphicsContext3D* context() OVERRIDE; | 281 virtual WebKit::WebGraphicsContext3D* context() OVERRIDE; |
| 283 | 282 |
| 284 float device_scale_factor() const { return device_scale_factor_; } | 283 float device_scale_factor() const { return device_scale_factor_; } |
| 285 | 284 |
| 286 // Forces a render surface to be used on this layer. This has no positive | 285 // Forces a render surface to be used on this layer. This has no positive |
| 287 // impact, and is only used for benchmarking/testing purpose. | 286 // impact, and is only used for benchmarking/testing purpose. |
| 288 void SetForceRenderSurface(bool force); | 287 void SetForceRenderSurface(bool force); |
| 289 bool force_render_surface() const { return force_render_surface_; } | 288 bool force_render_surface() const { return force_render_surface_; } |
| 290 | 289 |
| 291 private: | 290 private: |
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 401 int zoom_inset_; | 400 int zoom_inset_; |
| 402 | 401 |
| 403 std::string name_; | 402 std::string name_; |
| 404 | 403 |
| 405 LayerDelegate* delegate_; | 404 LayerDelegate* delegate_; |
| 406 | 405 |
| 407 scoped_refptr<LayerAnimator> animator_; | 406 scoped_refptr<LayerAnimator> animator_; |
| 408 | 407 |
| 409 // Ownership of the layer is held through one of the strongly typed layer | 408 // Ownership of the layer is held through one of the strongly typed layer |
| 410 // pointers, depending on which sort of layer this is. | 409 // pointers, depending on which sort of layer this is. |
| 411 scoped_ptr<WebKit::WebContentLayer> content_layer_; | 410 scoped_refptr<cc::ContentLayer> content_layer_; |
| 412 scoped_ptr<WebKit::WebExternalTextureLayer> texture_layer_; | 411 scoped_refptr<cc::TextureLayer> texture_layer_; |
| 413 scoped_ptr<WebKit::WebSolidColorLayer> solid_color_layer_; | 412 scoped_refptr<cc::SolidColorLayer> solid_color_layer_; |
| 414 WebKit::WebLayer* web_layer_; | 413 cc::Layer* cc_layer_; |
| 415 bool web_layer_is_accelerated_; | 414 bool cc_layer_is_accelerated_; |
| 416 | 415 |
| 417 // If true, the layer scales the canvas and the texture with the device scale | 416 // If true, the layer scales the canvas and the texture with the device scale |
| 418 // factor as appropriate. When true, the texture size is in DIP. | 417 // factor as appropriate. When true, the texture size is in DIP. |
| 419 bool scale_content_; | 418 bool scale_content_; |
| 420 | 419 |
| 421 // A cached copy of |Compositor::device_scale_factor()|. | 420 // A cached copy of |Compositor::device_scale_factor()|. |
| 422 float device_scale_factor_; | 421 float device_scale_factor_; |
| 423 | 422 |
| 424 DISALLOW_COPY_AND_ASSIGN(Layer); | 423 DISALLOW_COPY_AND_ASSIGN(Layer); |
| 425 }; | 424 }; |
| 426 | 425 |
| 427 } // namespace ui | 426 } // namespace ui |
| 428 | 427 |
| 429 #endif // UI_COMPOSITOR_LAYER_H_ | 428 #endif // UI_COMPOSITOR_LAYER_H_ |
| OLD | NEW |