| 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 |
| (...skipping 30 matching lines...) Expand all Loading... |
| 41 class TextureLayer; | 41 class TextureLayer; |
| 42 struct ReturnedResource; | 42 struct ReturnedResource; |
| 43 typedef std::vector<ReturnedResource> ReturnedResourceArray; | 43 typedef std::vector<ReturnedResource> ReturnedResourceArray; |
| 44 } | 44 } |
| 45 | 45 |
| 46 namespace ui { | 46 namespace ui { |
| 47 | 47 |
| 48 class Compositor; | 48 class Compositor; |
| 49 class LayerAnimator; | 49 class LayerAnimator; |
| 50 class LayerOwner; | 50 class LayerOwner; |
| 51 class Texture; | |
| 52 | 51 |
| 53 // Layer manages a texture, transform and a set of child Layers. Any View that | 52 // Layer manages a texture, transform and a set of child Layers. Any View that |
| 54 // has enabled layers ends up creating a Layer to manage the texture. | 53 // has enabled layers ends up creating a Layer to manage the texture. |
| 55 // A Layer can also be created without a texture, in which case it renders | 54 // A Layer can also be created without a texture, in which case it renders |
| 56 // nothing and is simply used as a node in a hierarchy of layers. | 55 // nothing and is simply used as a node in a hierarchy of layers. |
| 57 // Coordinate system used in layers is DIP (Density Independent Pixel) | 56 // Coordinate system used in layers is DIP (Density Independent Pixel) |
| 58 // coordinates unless explicitly mentioned as pixel coordinates. | 57 // coordinates unless explicitly mentioned as pixel coordinates. |
| 59 // | 58 // |
| 60 // NOTE: Unlike Views, each Layer does *not* own its child Layers. If you | 59 // NOTE: Unlike Views, each Layer does *not* own its child Layers. If you |
| 61 // delete a Layer and it has children, the parent of each child Layer is set to | 60 // delete a Layer and it has children, the parent of each child Layer is set to |
| (...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 249 void SetFillsBoundsOpaquely(bool fills_bounds_opaquely); | 248 void SetFillsBoundsOpaquely(bool fills_bounds_opaquely); |
| 250 bool fills_bounds_opaquely() const { return fills_bounds_opaquely_; } | 249 bool fills_bounds_opaquely() const { return fills_bounds_opaquely_; } |
| 251 | 250 |
| 252 // Set to true if this layer always paints completely within its bounds. If so | 251 // Set to true if this layer always paints completely within its bounds. If so |
| 253 // we can omit an unnecessary clear, even if the layer is transparent. | 252 // we can omit an unnecessary clear, even if the layer is transparent. |
| 254 void SetFillsBoundsCompletely(bool fills_bounds_completely); | 253 void SetFillsBoundsCompletely(bool fills_bounds_completely); |
| 255 | 254 |
| 256 const std::string& name() const { return name_; } | 255 const std::string& name() const { return name_; } |
| 257 void set_name(const std::string& name) { name_ = name; } | 256 void set_name(const std::string& name) { name_ = name; } |
| 258 | 257 |
| 259 const ui::Texture* texture() const { return texture_.get(); } | |
| 260 | |
| 261 // Assigns a new external texture. |texture| can be NULL to disable external | |
| 262 // updates. | |
| 263 void SetExternalTexture(ui::Texture* texture); | |
| 264 ui::Texture* external_texture() { return texture_.get(); } | |
| 265 | |
| 266 // Set new TextureMailbox for this layer. Note that |mailbox| may hold a | 258 // Set new TextureMailbox for this layer. Note that |mailbox| may hold a |
| 267 // shared memory resource or an actual mailbox for a texture. | 259 // shared memory resource or an actual mailbox for a texture. |
| 268 void SetTextureMailbox(const cc::TextureMailbox& mailbox, | 260 void SetTextureMailbox(const cc::TextureMailbox& mailbox, |
| 269 scoped_ptr<cc::SingleReleaseCallback> release_callback, | 261 scoped_ptr<cc::SingleReleaseCallback> release_callback, |
| 270 float scale_factor); | 262 gfx::Size texture_size_in_dip); |
| 271 cc::TextureMailbox GetTextureMailbox(float* scale_factor); | 263 void SetTextureSize(gfx::Size texture_size_in_dip); |
| 272 | 264 |
| 273 // Begins showing delegated frames from the |frame_provider|. | 265 // Begins showing delegated frames from the |frame_provider|. |
| 274 void SetShowDelegatedContent(cc::DelegatedFrameProvider* frame_provider, | 266 void SetShowDelegatedContent(cc::DelegatedFrameProvider* frame_provider, |
| 275 gfx::Size frame_size_in_dip); | 267 gfx::Size frame_size_in_dip); |
| 276 | 268 |
| 277 bool has_external_content() { | 269 bool has_external_content() { |
| 278 return texture_layer_.get() || delegated_renderer_layer_.get(); | 270 return texture_layer_.get() || delegated_renderer_layer_.get(); |
| 279 } | 271 } |
| 280 | 272 |
| 281 void SetShowPaintedContent(); | 273 void SetShowPaintedContent(); |
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 407 // We cannot send animations to our cc_layer_ until we have been added to a | 399 // We cannot send animations to our cc_layer_ until we have been added to a |
| 408 // layer tree. Instead, we hold on to these animations in | 400 // layer tree. Instead, we hold on to these animations in |
| 409 // pending_threaded_animations_, and expect SendPendingThreadedAnimations to | 401 // pending_threaded_animations_, and expect SendPendingThreadedAnimations to |
| 410 // be called once we have been added to a tree. | 402 // be called once we have been added to a tree. |
| 411 void SendPendingThreadedAnimations(); | 403 void SendPendingThreadedAnimations(); |
| 412 | 404 |
| 413 const LayerType type_; | 405 const LayerType type_; |
| 414 | 406 |
| 415 Compositor* compositor_; | 407 Compositor* compositor_; |
| 416 | 408 |
| 417 scoped_refptr<ui::Texture> texture_; | |
| 418 | |
| 419 Layer* parent_; | 409 Layer* parent_; |
| 420 | 410 |
| 421 // This layer's children, in bottom-to-top stacking order. | 411 // This layer's children, in bottom-to-top stacking order. |
| 422 std::vector<Layer*> children_; | 412 std::vector<Layer*> children_; |
| 423 | 413 |
| 424 gfx::Rect bounds_; | 414 gfx::Rect bounds_; |
| 425 | 415 |
| 426 // Visibility of this layer. See SetVisible/IsDrawn for more details. | 416 // Visibility of this layer. See SetVisible/IsDrawn for more details. |
| 427 bool visible_; | 417 bool visible_; |
| 428 | 418 |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 478 scoped_refptr<cc::DelegatedRendererLayer> delegated_renderer_layer_; | 468 scoped_refptr<cc::DelegatedRendererLayer> delegated_renderer_layer_; |
| 479 cc::Layer* cc_layer_; | 469 cc::Layer* cc_layer_; |
| 480 | 470 |
| 481 // If true, the layer scales the canvas and the texture with the device scale | 471 // If true, the layer scales the canvas and the texture with the device scale |
| 482 // factor as apporpriate. When true, the texture size is in DIP. | 472 // factor as apporpriate. When true, the texture size is in DIP. |
| 483 bool scale_content_; | 473 bool scale_content_; |
| 484 | 474 |
| 485 // A cached copy of |Compositor::device_scale_factor()|. | 475 // A cached copy of |Compositor::device_scale_factor()|. |
| 486 float device_scale_factor_; | 476 float device_scale_factor_; |
| 487 | 477 |
| 488 // A cached copy of the TextureMailbox given texture_layer_. | 478 // The mailbox used by texture_layer_. |
| 489 cc::TextureMailbox mailbox_; | 479 cc::TextureMailbox mailbox_; |
| 490 | 480 |
| 491 // Device scale factor in which mailbox_ was rendered in. | 481 // The callback to release the mailbox. This is only set after |
| 492 float mailbox_scale_factor_; | 482 // SetTextureMailbox is called, before we give it to the TextureLayer. |
| 483 scoped_ptr<cc::SingleReleaseCallback> mailbox_release_callback_; |
| 493 | 484 |
| 494 // The size of the delegated frame in DIP, set when SetShowDelegatedContent | 485 // The size of the frame or texture in DIP, set when SetShowDelegatedContent |
| 495 // was called. | 486 // or SetTextureMailbox was called. |
| 496 gfx::Size delegated_frame_size_in_dip_; | 487 gfx::Size frame_size_in_dip_; |
| 497 | 488 |
| 498 DISALLOW_COPY_AND_ASSIGN(Layer); | 489 DISALLOW_COPY_AND_ASSIGN(Layer); |
| 499 }; | 490 }; |
| 500 | 491 |
| 501 } // namespace ui | 492 } // namespace ui |
| 502 | 493 |
| 503 #endif // UI_COMPOSITOR_LAYER_H_ | 494 #endif // UI_COMPOSITOR_LAYER_H_ |
| OLD | NEW |