1 // Copyright 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.
5 #ifndef CC_LAYERS_PICTURE_LAYER_H_
6 #define CC_LAYERS_PICTURE_LAYER_H_
8 #include "cc/base/invalidation_region.h"
9 #include "cc/debug/devtools_instrumentation.h"
10 #include "cc/debug/micro_benchmark_controller.h"
11 #include "cc/layers/layer.h"
12 #include "cc/trees/occlusion_tracker.h"
16 class ContentLayerClient
;
17 class RecordingSource
;
18 class ResourceUpdateQueue
;
20 class CC_EXPORT PictureLayer
: public Layer
{
22 static scoped_refptr
<PictureLayer
> Create(ContentLayerClient
* client
);
26 void SetNearestNeighbor(bool nearest_neighbor
);
29 scoped_ptr
<LayerImpl
> CreateLayerImpl(LayerTreeImpl
* tree_impl
) override
;
30 void SetLayerTreeHost(LayerTreeHost
* host
) override
;
31 void PushPropertiesTo(LayerImpl
* layer
) override
;
32 void SetNeedsDisplayRect(const gfx::Rect
& layer_rect
) override
;
33 bool Update(ResourceUpdateQueue
* queue
,
34 const OcclusionTracker
<Layer
>* occlusion
) override
;
35 void SetIsMask(bool is_mask
) override
;
36 skia::RefPtr
<SkPicture
> GetPicture() const override
;
37 bool IsSuitableForGpuRasterization() const override
;
39 void RunMicroBenchmark(MicroBenchmark
* benchmark
) override
;
41 ContentLayerClient
* client() { return client_
; }
43 RecordingSource
* GetRecordingSourceForTesting() {
44 return recording_source_
.get();
48 explicit PictureLayer(ContentLayerClient
* client
);
49 // Allow tests to inject a recording source.
50 PictureLayer(ContentLayerClient
* client
, scoped_ptr
<RecordingSource
> source
);
51 ~PictureLayer() override
;
53 bool HasDrawableContent() const override
;
55 bool is_mask() const { return is_mask_
; }
58 ContentLayerClient
* client_
;
59 scoped_ptr
<RecordingSource
> recording_source_
;
60 devtools_instrumentation::
61 ScopedLayerObjectTracker instrumentation_object_tracker_
;
62 // Invalidation to use the next time update is called.
63 InvalidationRegion pending_invalidation_
;
64 // Invalidation from the last time update was called.
65 Region recording_invalidation_
;
66 gfx::Rect last_updated_visible_content_rect_
;
68 int update_source_frame_number_
;
70 bool nearest_neighbor_
;
72 DISALLOW_COPY_AND_ASSIGN(PictureLayer
);
77 #endif // CC_LAYERS_PICTURE_LAYER_H_