OLD | NEW |
| (Empty) |
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 | |
3 // found in the LICENSE file. | |
4 | |
5 #include "cc/resources/skpicture_content_layer_updater.h" | |
6 | |
7 #include "base/trace_event/trace_event.h" | |
8 #include "cc/debug/rendering_stats_instrumentation.h" | |
9 #include "cc/resources/layer_painter.h" | |
10 #include "cc/resources/prioritized_resource.h" | |
11 #include "cc/resources/resource_update_queue.h" | |
12 #include "third_party/skia/include/core/SkCanvas.h" | |
13 #include "third_party/skia/include/core/SkPictureRecorder.h" | |
14 | |
15 namespace cc { | |
16 | |
17 SkPictureContentLayerUpdater::SkPictureContentLayerUpdater( | |
18 scoped_ptr<LayerPainter> painter, | |
19 int layer_id) | |
20 : ContentLayerUpdater(painter.Pass(), layer_id) { | |
21 } | |
22 | |
23 SkPictureContentLayerUpdater::~SkPictureContentLayerUpdater() {} | |
24 | |
25 void SkPictureContentLayerUpdater::PrepareToUpdate( | |
26 const gfx::Size& content_size, | |
27 const gfx::Rect& paint_rect, | |
28 const gfx::Size& tile_size, | |
29 float contents_width_scale, | |
30 float contents_height_scale) { | |
31 SkPictureRecorder recorder; | |
32 SkCanvas* canvas = | |
33 recorder.beginRecording(paint_rect.width(), paint_rect.height(), NULL, 0); | |
34 DCHECK_EQ(paint_rect.width(), canvas->getBaseLayerSize().width()); | |
35 DCHECK_EQ(paint_rect.height(), canvas->getBaseLayerSize().height()); | |
36 PaintContents(canvas, | |
37 content_size, | |
38 paint_rect, | |
39 contents_width_scale, | |
40 contents_height_scale); | |
41 picture_ = skia::AdoptRef(recorder.endRecording()); | |
42 } | |
43 | |
44 void SkPictureContentLayerUpdater::DrawPicture(SkCanvas* canvas) { | |
45 TRACE_EVENT0("cc", "SkPictureContentLayerUpdater::DrawPicture"); | |
46 if (picture_) | |
47 canvas->drawPicture(picture_.get()); | |
48 } | |
49 | |
50 } // namespace cc | |
OLD | NEW |