OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 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 | 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 <algorithm> | 5 #include <algorithm> |
6 #include <limits> | 6 #include <limits> |
7 #include <set> | 7 #include <set> |
8 | 8 |
9 #include "base/trace_event/trace_event.h" | 9 #include "base/trace_event/trace_event.h" |
10 #include "cc/base/region.h" | 10 #include "cc/base/region.h" |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
73 should_attempt_to_use_distance_field_text_( | 73 should_attempt_to_use_distance_field_text_( |
74 other->should_attempt_to_use_distance_field_text_) { | 74 other->should_attempt_to_use_distance_field_text_) { |
75 } | 75 } |
76 | 76 |
77 PicturePileImpl::~PicturePileImpl() { | 77 PicturePileImpl::~PicturePileImpl() { |
78 } | 78 } |
79 | 79 |
80 void PicturePileImpl::PlaybackToSharedCanvas(SkCanvas* canvas, | 80 void PicturePileImpl::PlaybackToSharedCanvas(SkCanvas* canvas, |
81 const gfx::Rect& canvas_rect, | 81 const gfx::Rect& canvas_rect, |
82 float contents_scale) const { | 82 float contents_scale) const { |
83 RasterCommon(canvas, | 83 RasterCommon(canvas, NULL, canvas_rect, contents_scale); |
84 NULL, | |
85 canvas_rect, | |
86 contents_scale, | |
87 false); | |
88 } | 84 } |
89 | 85 |
90 void PicturePileImpl::RasterForAnalysis(skia::AnalysisCanvas* canvas, | 86 void PicturePileImpl::RasterForAnalysis(skia::AnalysisCanvas* canvas, |
91 const gfx::Rect& canvas_rect, | 87 const gfx::Rect& canvas_rect, |
92 float contents_scale) const { | 88 float contents_scale) const { |
93 RasterCommon(canvas, canvas, canvas_rect, contents_scale, true); | 89 RasterCommon(canvas, canvas, canvas_rect, contents_scale); |
94 } | 90 } |
95 | 91 |
96 void PicturePileImpl::PlaybackToCanvas(SkCanvas* canvas, | 92 void PicturePileImpl::PlaybackToCanvas(SkCanvas* canvas, |
97 const gfx::Rect& canvas_rect, | 93 const gfx::Rect& canvas_rect, |
98 float contents_scale) const { | 94 float contents_scale) const { |
99 RasterSourceHelper::PrepareForPlaybackToCanvas( | 95 RasterSourceHelper::PrepareForPlaybackToCanvas( |
100 canvas, canvas_rect, gfx::Rect(tiling_.tiling_size()), contents_scale, | 96 canvas, canvas_rect, gfx::Rect(tiling_.tiling_size()), contents_scale, |
101 background_color_, clear_canvas_with_debug_color_, requires_clear_); | 97 background_color_, clear_canvas_with_debug_color_, requires_clear_); |
102 RasterCommon(canvas, | 98 RasterCommon(canvas, NULL, canvas_rect, contents_scale); |
103 NULL, | |
104 canvas_rect, | |
105 contents_scale, | |
106 false); | |
107 } | 99 } |
108 | 100 |
109 void PicturePileImpl::CoalesceRasters(const gfx::Rect& canvas_rect, | 101 void PicturePileImpl::CoalesceRasters(const gfx::Rect& canvas_rect, |
110 const gfx::Rect& content_rect, | 102 const gfx::Rect& content_rect, |
111 float contents_scale, | 103 float contents_scale, |
112 PictureRegionMap* results) const { | 104 PictureRegionMap* results) const { |
113 DCHECK(results); | 105 DCHECK(results); |
114 // Rasterize the collection of relevant picture piles. | 106 // Rasterize the collection of relevant picture piles. |
115 gfx::Rect layer_rect = gfx::ScaleToEnclosingRect( | 107 gfx::Rect layer_rect = gfx::ScaleToEnclosingRect( |
116 content_rect, 1.f / contents_scale); | 108 content_rect, 1.f / contents_scale); |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
194 clip_region = &it->second; | 186 clip_region = &it->second; |
195 } | 187 } |
196 | 188 |
197 DCHECK(clip_region->Contains(content_clip)) | 189 DCHECK(clip_region->Contains(content_clip)) |
198 << "Content clips should not overlap."; | 190 << "Content clips should not overlap."; |
199 clip_region->Subtract(content_clip); | 191 clip_region->Subtract(content_clip); |
200 last_content_rect = content_clip; | 192 last_content_rect = content_clip; |
201 } | 193 } |
202 } | 194 } |
203 | 195 |
204 void PicturePileImpl::RasterCommon( | 196 void PicturePileImpl::RasterCommon(SkCanvas* canvas, |
205 SkCanvas* canvas, | 197 SkDrawPictureCallback* callback, |
206 SkDrawPictureCallback* callback, | 198 const gfx::Rect& canvas_rect, |
207 const gfx::Rect& canvas_rect, | 199 float contents_scale) const { |
208 float contents_scale, | |
209 bool is_analysis) const { | |
210 DCHECK(contents_scale >= min_contents_scale_); | 200 DCHECK(contents_scale >= min_contents_scale_); |
211 | 201 |
212 canvas->translate(-canvas_rect.x(), -canvas_rect.y()); | 202 canvas->translate(-canvas_rect.x(), -canvas_rect.y()); |
213 gfx::Rect content_tiling_rect = gfx::ToEnclosingRect( | 203 gfx::Rect content_tiling_rect = gfx::ToEnclosingRect( |
214 gfx::ScaleRect(gfx::Rect(tiling_.tiling_size()), contents_scale)); | 204 gfx::ScaleRect(gfx::Rect(tiling_.tiling_size()), contents_scale)); |
215 content_tiling_rect.Intersect(canvas_rect); | 205 content_tiling_rect.Intersect(canvas_rect); |
216 | 206 |
217 canvas->clipRect(gfx::RectToSkRect(content_tiling_rect), | 207 canvas->clipRect(gfx::RectToSkRect(content_tiling_rect), |
218 SkRegion::kIntersect_Op); | 208 SkRegion::kIntersect_Op); |
219 | 209 |
(...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
466 for (const auto& map_pair : picture_map_) { | 456 for (const auto& map_pair : picture_map_) { |
467 const Picture* picture = map_pair.second.GetPicture(); | 457 const Picture* picture = map_pair.second.GetPicture(); |
468 if (picture && (processed_pictures.count(picture) == 0)) { | 458 if (picture && (processed_pictures.count(picture) == 0)) { |
469 picture->EmitTraceSnapshot(); | 459 picture->EmitTraceSnapshot(); |
470 processed_pictures.insert(picture); | 460 processed_pictures.insert(picture); |
471 } | 461 } |
472 } | 462 } |
473 } | 463 } |
474 | 464 |
475 } // namespace cc | 465 } // namespace cc |
OLD | NEW |