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 <stddef.h> | 8 #include <stddef.h> |
9 | 9 |
| 10 #include <memory> |
10 #include <string> | 11 #include <string> |
11 #include <vector> | 12 #include <vector> |
12 | 13 |
13 #include "base/compiler_specific.h" | 14 #include "base/compiler_specific.h" |
14 #include "base/macros.h" | 15 #include "base/macros.h" |
15 #include "base/memory/ref_counted.h" | 16 #include "base/memory/ref_counted.h" |
16 #include "base/memory/scoped_ptr.h" | |
17 #include "base/message_loop/message_loop.h" | 17 #include "base/message_loop/message_loop.h" |
18 #include "cc/base/region.h" | 18 #include "cc/base/region.h" |
19 #include "cc/layers/content_layer_client.h" | 19 #include "cc/layers/content_layer_client.h" |
20 #include "cc/layers/layer_client.h" | 20 #include "cc/layers/layer_client.h" |
21 #include "cc/layers/surface_layer.h" | 21 #include "cc/layers/surface_layer.h" |
22 #include "cc/layers/texture_layer_client.h" | 22 #include "cc/layers/texture_layer_client.h" |
23 #include "cc/resources/texture_mailbox.h" | 23 #include "cc/resources/texture_mailbox.h" |
24 #include "cc/surfaces/surface_id.h" | 24 #include "cc/surfaces/surface_id.h" |
25 #include "third_party/skia/include/core/SkColor.h" | 25 #include "third_party/skia/include/core/SkColor.h" |
26 #include "third_party/skia/include/core/SkRegion.h" | 26 #include "third_party/skia/include/core/SkRegion.h" |
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
205 // Return the target grayscale if animator is running, or the current | 205 // Return the target grayscale if animator is running, or the current |
206 // grayscale otherwise. | 206 // grayscale otherwise. |
207 float GetTargetGrayscale() const; | 207 float GetTargetGrayscale() const; |
208 | 208 |
209 // Zoom the background by a factor of |zoom|. The effect is blended along the | 209 // Zoom the background by a factor of |zoom|. The effect is blended along the |
210 // edge across |inset| pixels. | 210 // edge across |inset| pixels. |
211 void SetBackgroundZoom(float zoom, int inset); | 211 void SetBackgroundZoom(float zoom, int inset); |
212 | 212 |
213 // Set the shape of this layer. | 213 // Set the shape of this layer. |
214 SkRegion* alpha_shape() const { return alpha_shape_.get(); } | 214 SkRegion* alpha_shape() const { return alpha_shape_.get(); } |
215 void SetAlphaShape(scoped_ptr<SkRegion> region); | 215 void SetAlphaShape(std::unique_ptr<SkRegion> region); |
216 | 216 |
217 // Invert the layer. | 217 // Invert the layer. |
218 bool layer_inverted() const { return layer_inverted_; } | 218 bool layer_inverted() const { return layer_inverted_; } |
219 void SetLayerInverted(bool inverted); | 219 void SetLayerInverted(bool inverted); |
220 | 220 |
221 // Return the target opacity if animator is running, or the current opacity | 221 // Return the target opacity if animator is running, or the current opacity |
222 // otherwise. | 222 // otherwise. |
223 float GetTargetOpacity() const; | 223 float GetTargetOpacity() const; |
224 | 224 |
225 // Set a layer mask for a layer. | 225 // Set a layer mask for a layer. |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
266 | 266 |
267 // Set to true if this layer always paints completely within its bounds. If so | 267 // Set to true if this layer always paints completely within its bounds. If so |
268 // we can omit an unnecessary clear, even if the layer is transparent. | 268 // we can omit an unnecessary clear, even if the layer is transparent. |
269 void SetFillsBoundsCompletely(bool fills_bounds_completely); | 269 void SetFillsBoundsCompletely(bool fills_bounds_completely); |
270 | 270 |
271 const std::string& name() const { return name_; } | 271 const std::string& name() const { return name_; } |
272 void set_name(const std::string& name) { name_ = name; } | 272 void set_name(const std::string& name) { name_ = name; } |
273 | 273 |
274 // Set new TextureMailbox for this layer. Note that |mailbox| may hold a | 274 // Set new TextureMailbox for this layer. Note that |mailbox| may hold a |
275 // shared memory resource or an actual mailbox for a texture. | 275 // shared memory resource or an actual mailbox for a texture. |
276 void SetTextureMailbox(const cc::TextureMailbox& mailbox, | 276 void SetTextureMailbox( |
277 scoped_ptr<cc::SingleReleaseCallback> release_callback, | 277 const cc::TextureMailbox& mailbox, |
278 gfx::Size texture_size_in_dip); | 278 std::unique_ptr<cc::SingleReleaseCallback> release_callback, |
| 279 gfx::Size texture_size_in_dip); |
279 void SetTextureSize(gfx::Size texture_size_in_dip); | 280 void SetTextureSize(gfx::Size texture_size_in_dip); |
280 void SetTextureFlipped(bool flipped); | 281 void SetTextureFlipped(bool flipped); |
281 bool TextureFlipped() const; | 282 bool TextureFlipped() const; |
282 | 283 |
283 // Begins showing content from a surface with a particular id. | 284 // Begins showing content from a surface with a particular id. |
284 void SetShowSurface(cc::SurfaceId surface_id, | 285 void SetShowSurface(cc::SurfaceId surface_id, |
285 const cc::SurfaceLayer::SatisfyCallback& satisfy_callback, | 286 const cc::SurfaceLayer::SatisfyCallback& satisfy_callback, |
286 const cc::SurfaceLayer::RequireCallback& require_callback, | 287 const cc::SurfaceLayer::RequireCallback& require_callback, |
287 gfx::Size surface_size, | 288 gfx::Size surface_size, |
288 float scale, | 289 float scale, |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
328 void SuppressPaint(); | 329 void SuppressPaint(); |
329 | 330 |
330 // Notifies the layer that the device scale factor has changed. | 331 // Notifies the layer that the device scale factor has changed. |
331 void OnDeviceScaleFactorChanged(float device_scale_factor); | 332 void OnDeviceScaleFactorChanged(float device_scale_factor); |
332 | 333 |
333 // Notifies the layer that one of its children has received a new | 334 // Notifies the layer that one of its children has received a new |
334 // delegated frame. | 335 // delegated frame. |
335 void OnDelegatedFrameDamage(const gfx::Rect& damage_rect_in_dip); | 336 void OnDelegatedFrameDamage(const gfx::Rect& damage_rect_in_dip); |
336 | 337 |
337 // Requets a copy of the layer's output as a texture or bitmap. | 338 // Requets a copy of the layer's output as a texture or bitmap. |
338 void RequestCopyOfOutput(scoped_ptr<cc::CopyOutputRequest> request); | 339 void RequestCopyOfOutput(std::unique_ptr<cc::CopyOutputRequest> request); |
339 | 340 |
340 // ContentLayerClient | 341 // ContentLayerClient |
341 gfx::Rect PaintableRegion() override; | 342 gfx::Rect PaintableRegion() override; |
342 scoped_refptr<cc::DisplayItemList> PaintContentsToDisplayList( | 343 scoped_refptr<cc::DisplayItemList> PaintContentsToDisplayList( |
343 ContentLayerClient::PaintingControlSetting painting_control) override; | 344 ContentLayerClient::PaintingControlSetting painting_control) override; |
344 bool FillsBoundsCompletely() const override; | 345 bool FillsBoundsCompletely() const override; |
345 size_t GetApproximateUnsharedMemoryUsage() const override; | 346 size_t GetApproximateUnsharedMemoryUsage() const override; |
346 | 347 |
347 cc::Layer* cc_layer_for_testing() { return cc_layer_; } | 348 cc::Layer* cc_layer_for_testing() { return cc_layer_; } |
348 | 349 |
349 // TextureLayerClient | 350 // TextureLayerClient |
350 bool PrepareTextureMailbox( | 351 bool PrepareTextureMailbox( |
351 cc::TextureMailbox* mailbox, | 352 cc::TextureMailbox* mailbox, |
352 scoped_ptr<cc::SingleReleaseCallback>* release_callback, | 353 std::unique_ptr<cc::SingleReleaseCallback>* release_callback, |
353 bool use_shared_memory) override; | 354 bool use_shared_memory) override; |
354 | 355 |
355 float device_scale_factor() const { return device_scale_factor_; } | 356 float device_scale_factor() const { return device_scale_factor_; } |
356 | 357 |
357 // Forces a render surface to be used on this layer. This has no positive | 358 // Forces a render surface to be used on this layer. This has no positive |
358 // impact, and is only used for benchmarking/testing purpose. | 359 // impact, and is only used for benchmarking/testing purpose. |
359 void SetForceRenderSurface(bool force); | 360 void SetForceRenderSurface(bool force); |
360 bool force_render_surface() const { return force_render_surface_; } | 361 bool force_render_surface() const { return force_render_surface_; } |
361 | 362 |
362 // LayerClient | 363 // LayerClient |
363 scoped_ptr<base::trace_event::ConvertableToTraceFormat> TakeDebugInfo( | 364 std::unique_ptr<base::trace_event::ConvertableToTraceFormat> TakeDebugInfo( |
364 cc::Layer* layer) override; | 365 cc::Layer* layer) override; |
365 | 366 |
366 // Whether this layer has animations waiting to get sent to its cc::Layer. | 367 // Whether this layer has animations waiting to get sent to its cc::Layer. |
367 bool HasPendingThreadedAnimationsForTesting() const; | 368 bool HasPendingThreadedAnimationsForTesting() const; |
368 | 369 |
369 // Triggers a call to SwitchToLayer. | 370 // Triggers a call to SwitchToLayer. |
370 void SwitchCCLayerForTest(); | 371 void SwitchCCLayerForTest(); |
371 | 372 |
372 private: | 373 private: |
373 friend class LayerOwner; | 374 friend class LayerOwner; |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
462 Layer* layer_mask_back_link_; | 463 Layer* layer_mask_back_link_; |
463 | 464 |
464 // The zoom factor to scale the layer by. Zooming is disabled when this is | 465 // The zoom factor to scale the layer by. Zooming is disabled when this is |
465 // set to 1. | 466 // set to 1. |
466 float zoom_; | 467 float zoom_; |
467 | 468 |
468 // Width of the border in pixels, where the scaling is blended. | 469 // Width of the border in pixels, where the scaling is blended. |
469 int zoom_inset_; | 470 int zoom_inset_; |
470 | 471 |
471 // Shape of the window. | 472 // Shape of the window. |
472 scoped_ptr<SkRegion> alpha_shape_; | 473 std::unique_ptr<SkRegion> alpha_shape_; |
473 | 474 |
474 std::string name_; | 475 std::string name_; |
475 | 476 |
476 LayerDelegate* delegate_; | 477 LayerDelegate* delegate_; |
477 | 478 |
478 LayerOwner* owner_; | 479 LayerOwner* owner_; |
479 | 480 |
480 scoped_refptr<LayerAnimator> animator_; | 481 scoped_refptr<LayerAnimator> animator_; |
481 | 482 |
482 // Ownership of the layer is held through one of the strongly typed layer | 483 // Ownership of the layer is held through one of the strongly typed layer |
(...skipping 11 matching lines...) Expand all Loading... |
494 // A cached copy of the nine patch layer's image and aperture. | 495 // A cached copy of the nine patch layer's image and aperture. |
495 // These are required for device scale factor change. | 496 // These are required for device scale factor change. |
496 gfx::ImageSkia nine_patch_layer_image_; | 497 gfx::ImageSkia nine_patch_layer_image_; |
497 gfx::Rect nine_patch_layer_aperture_; | 498 gfx::Rect nine_patch_layer_aperture_; |
498 | 499 |
499 // The mailbox used by texture_layer_. | 500 // The mailbox used by texture_layer_. |
500 cc::TextureMailbox mailbox_; | 501 cc::TextureMailbox mailbox_; |
501 | 502 |
502 // The callback to release the mailbox. This is only set after | 503 // The callback to release the mailbox. This is only set after |
503 // SetTextureMailbox is called, before we give it to the TextureLayer. | 504 // SetTextureMailbox is called, before we give it to the TextureLayer. |
504 scoped_ptr<cc::SingleReleaseCallback> mailbox_release_callback_; | 505 std::unique_ptr<cc::SingleReleaseCallback> mailbox_release_callback_; |
505 | 506 |
506 // The size of the frame or texture in DIP, set when SetShowDelegatedContent | 507 // The size of the frame or texture in DIP, set when SetShowDelegatedContent |
507 // or SetTextureMailbox was called. | 508 // or SetTextureMailbox was called. |
508 gfx::Size frame_size_in_dip_; | 509 gfx::Size frame_size_in_dip_; |
509 | 510 |
510 DISALLOW_COPY_AND_ASSIGN(Layer); | 511 DISALLOW_COPY_AND_ASSIGN(Layer); |
511 }; | 512 }; |
512 | 513 |
513 } // namespace ui | 514 } // namespace ui |
514 | 515 |
515 #endif // UI_COMPOSITOR_LAYER_H_ | 516 #endif // UI_COMPOSITOR_LAYER_H_ |
OLD | NEW |