OLD | NEW |
1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 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 #include "cc/resources/skpicture_content_layer_updater.h" | 5 #include "cc/resources/skpicture_content_layer_updater.h" |
6 | 6 |
7 #include "base/debug/trace_event.h" | 7 #include "base/debug/trace_event.h" |
8 #include "cc/debug/rendering_stats.h" | 8 #include "cc/debug/rendering_stats.h" |
9 #include "cc/resources/layer_painter.h" | 9 #include "cc/resources/layer_painter.h" |
10 #include "cc/resources/prioritized_resource.h" | 10 #include "cc/resources/prioritized_resource.h" |
11 #include "cc/resources/resource_update_queue.h" | 11 #include "cc/resources/resource_update_queue.h" |
12 #include "third_party/skia/include/core/SkCanvas.h" | 12 #include "third_party/skia/include/core/SkCanvas.h" |
13 | 13 |
14 namespace cc { | 14 namespace cc { |
15 | 15 |
16 SkPictureContentLayerUpdater::Resource::Resource( | |
17 SkPictureContentLayerUpdater* updater, | |
18 scoped_ptr<PrioritizedResource> texture) | |
19 : LayerUpdater::Resource(texture.Pass()), updater_(updater) {} | |
20 | |
21 SkPictureContentLayerUpdater::Resource::~Resource() {} | |
22 | |
23 void SkPictureContentLayerUpdater::Resource::Update(ResourceUpdateQueue* queue, | |
24 gfx::Rect source_rect, | |
25 gfx::Vector2d dest_offset, | |
26 bool partial_update, | |
27 RenderingStats*) { | |
28 updater_->UpdateTexture( | |
29 queue, texture(), source_rect, dest_offset, partial_update); | |
30 } | |
31 | |
32 SkPictureContentLayerUpdater::SkPictureContentLayerUpdater( | 16 SkPictureContentLayerUpdater::SkPictureContentLayerUpdater( |
33 scoped_ptr<LayerPainter> painter, | 17 scoped_ptr<LayerPainter> painter, |
34 RenderingStatsInstrumentation* stats_instrumentation, | 18 RenderingStatsInstrumentation* stats_instrumentation, |
35 int layer_id) | 19 int layer_id) |
36 : ContentLayerUpdater(painter.Pass(), stats_instrumentation, layer_id), | 20 : ContentLayerUpdater(painter.Pass(), stats_instrumentation, layer_id), |
37 layer_is_opaque_(false) {} | 21 layer_is_opaque_(false) {} |
38 | 22 |
39 SkPictureContentLayerUpdater::~SkPictureContentLayerUpdater() {} | 23 SkPictureContentLayerUpdater::~SkPictureContentLayerUpdater() {} |
40 | 24 |
41 scoped_refptr<SkPictureContentLayerUpdater> | |
42 SkPictureContentLayerUpdater::Create( | |
43 scoped_ptr<LayerPainter> painter, | |
44 RenderingStatsInstrumentation* stats_instrumentation, | |
45 int layer_id) { | |
46 return make_scoped_refptr( | |
47 new SkPictureContentLayerUpdater(painter.Pass(), | |
48 stats_instrumentation, | |
49 layer_id)); | |
50 } | |
51 | |
52 scoped_ptr<LayerUpdater::Resource> SkPictureContentLayerUpdater::CreateResource( | |
53 PrioritizedResourceManager* manager) { | |
54 return scoped_ptr<LayerUpdater::Resource>( | |
55 new Resource(this, PrioritizedResource::Create(manager))); | |
56 } | |
57 | |
58 void SkPictureContentLayerUpdater::PrepareToUpdate( | 25 void SkPictureContentLayerUpdater::PrepareToUpdate( |
59 gfx::Rect content_rect, | 26 gfx::Rect content_rect, |
60 gfx::Size, | 27 gfx::Size, |
61 float contents_width_scale, | 28 float contents_width_scale, |
62 float contents_height_scale, | 29 float contents_height_scale, |
63 gfx::Rect* resulting_opaque_rect, | 30 gfx::Rect* resulting_opaque_rect, |
64 RenderingStats* stats) { | 31 RenderingStats* stats) { |
65 SkCanvas* canvas = | 32 SkCanvas* canvas = |
66 picture_.beginRecording(content_rect.width(), content_rect.height()); | 33 picture_.beginRecording(content_rect.width(), content_rect.height()); |
67 base::TimeTicks record_start_time; | 34 base::TimeTicks record_start_time; |
(...skipping 12 matching lines...) Expand all Loading... |
80 content_rect.width() * content_rect.height(); | 47 content_rect.width() * content_rect.height(); |
81 } | 48 } |
82 picture_.endRecording(); | 49 picture_.endRecording(); |
83 } | 50 } |
84 | 51 |
85 void SkPictureContentLayerUpdater::DrawPicture(SkCanvas* canvas) { | 52 void SkPictureContentLayerUpdater::DrawPicture(SkCanvas* canvas) { |
86 TRACE_EVENT0("cc", "SkPictureContentLayerUpdater::DrawPicture"); | 53 TRACE_EVENT0("cc", "SkPictureContentLayerUpdater::DrawPicture"); |
87 canvas->drawPicture(picture_); | 54 canvas->drawPicture(picture_); |
88 } | 55 } |
89 | 56 |
90 void SkPictureContentLayerUpdater::UpdateTexture(ResourceUpdateQueue* queue, | |
91 PrioritizedResource* texture, | |
92 gfx::Rect source_rect, | |
93 gfx::Vector2d dest_offset, | |
94 bool partial_update) { | |
95 ResourceUpdate upload = ResourceUpdate::CreateFromPicture( | |
96 texture, &picture_, content_rect(), source_rect, dest_offset); | |
97 if (partial_update) | |
98 queue->AppendPartialUpload(upload); | |
99 else | |
100 queue->AppendFullUpload(upload); | |
101 } | |
102 | |
103 void SkPictureContentLayerUpdater::SetOpaque(bool opaque) { | 57 void SkPictureContentLayerUpdater::SetOpaque(bool opaque) { |
104 layer_is_opaque_ = opaque; | 58 layer_is_opaque_ = opaque; |
105 } | 59 } |
106 | 60 |
107 } // namespace cc | 61 } // namespace cc |
OLD | NEW |