| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/raster/raster_source.h" | 5 #include "cc/raster/raster_source.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include "base/trace_event/trace_event.h" | 9 #include "base/trace_event/trace_event.h" |
| 10 #include "cc/base/math_util.h" | 10 #include "cc/base/math_util.h" |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 73 !raster_bounds.intersect(gfx::RectToSkIRect(canvas_playback_rect))) | 73 !raster_bounds.intersect(gfx::RectToSkIRect(canvas_playback_rect))) |
| 74 return; | 74 return; |
| 75 // Treat all subnormal values as zero for performance. | 75 // Treat all subnormal values as zero for performance. |
| 76 ScopedSubnormalFloatDisabler disabler; | 76 ScopedSubnormalFloatDisabler disabler; |
| 77 | 77 |
| 78 raster_canvas->save(); | 78 raster_canvas->save(); |
| 79 raster_canvas->translate(-canvas_bitmap_rect.x(), -canvas_bitmap_rect.y()); | 79 raster_canvas->translate(-canvas_bitmap_rect.x(), -canvas_bitmap_rect.y()); |
| 80 raster_canvas->clipRect(SkRect::MakeFromIRect(raster_bounds)); | 80 raster_canvas->clipRect(SkRect::MakeFromIRect(raster_bounds)); |
| 81 raster_canvas->translate(raster_transform.translation().x(), | 81 raster_canvas->translate(raster_transform.translation().x(), |
| 82 raster_transform.translation().y()); | 82 raster_transform.translation().y()); |
| 83 raster_canvas->scale(raster_transform.scale(), raster_transform.scale()); | 83 // raster_canvas->scale(raster_transform.scale(), raster_transform.scale()); |
| 84 PlaybackToCanvas(raster_canvas, target_color_space, settings); | 84 PlaybackToCanvas(raster_canvas, target_color_space, settings); |
| 85 raster_canvas->restore(); | 85 raster_canvas->restore(); |
| 86 } | 86 } |
| 87 | 87 |
| 88 void RasterSource::PlaybackToCanvas(SkCanvas* input_canvas, | 88 void RasterSource::PlaybackToCanvas(SkCanvas* input_canvas, |
| 89 const gfx::ColorSpace& target_color_space, | 89 const gfx::ColorSpace& target_color_space, |
| 90 const PlaybackSettings& settings) const { | 90 const PlaybackSettings& settings) const { |
| 91 SkCanvas* raster_canvas = input_canvas; | 91 SkCanvas* raster_canvas = input_canvas; |
| 92 std::unique_ptr<SkCanvas> color_transform_canvas; | 92 std::unique_ptr<SkCanvas> color_transform_canvas; |
| 93 if (target_color_space.IsValid()) { | 93 if (target_color_space.IsValid()) { |
| (...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 231 return recorder.finishRecordingAsPicture(); | 231 return recorder.finishRecordingAsPicture(); |
| 232 } | 232 } |
| 233 | 233 |
| 234 size_t RasterSource::GetMemoryUsage() const { | 234 size_t RasterSource::GetMemoryUsage() const { |
| 235 if (!display_list_) | 235 if (!display_list_) |
| 236 return 0; | 236 return 0; |
| 237 return display_list_->ApproximateMemoryUsage() + | 237 return display_list_->ApproximateMemoryUsage() + |
| 238 painter_reported_memory_usage_; | 238 painter_reported_memory_usage_; |
| 239 } | 239 } |
| 240 | 240 |
| 241 bool RasterSource::PerformSolidColorAnalysis(const gfx::Rect& content_rect, | 241 bool RasterSource::PerformSolidColorAnalysis(gfx::Rect content_rect, |
| 242 float contents_scale, | 242 float contents_scale, |
| 243 SkColor* color) const { | 243 SkColor* color) const { |
| 244 TRACE_EVENT0("cc", "RasterSource::PerformSolidColorAnalysis"); | 244 TRACE_EVENT0("cc", "RasterSource::PerformSolidColorAnalysis"); |
| 245 | 245 |
| 246 gfx::Rect layer_rect = | 246 content_rect.Intersect( |
| 247 gfx::ScaleToEnclosingRect(content_rect, 1.f / contents_scale); | 247 gfx::ScaleToEnclosingRect(gfx::Rect(size_), contents_scale)); |
| 248 | 248 skia::AnalysisCanvas canvas(content_rect.width(), content_rect.height()); |
| 249 layer_rect.Intersect(gfx::Rect(size_)); | 249 canvas.translate(-content_rect.x(), -content_rect.y()); |
| 250 skia::AnalysisCanvas canvas(layer_rect.width(), layer_rect.height()); | |
| 251 canvas.translate(-layer_rect.x(), -layer_rect.y()); | |
| 252 // Note that because no color conversion is applied to solid color analysis, | 250 // Note that because no color conversion is applied to solid color analysis, |
| 253 // the resulting solid color will be known to be sRGB. | 251 // the resulting solid color will be known to be sRGB. |
| 254 RasterCommon(&canvas, &canvas); | 252 RasterCommon(&canvas, &canvas); |
| 255 return canvas.GetColorIfSolid(color); | 253 return canvas.GetColorIfSolid(color); |
| 256 } | 254 } |
| 257 | 255 |
| 258 void RasterSource::GetDiscardableImagesInRect( | 256 void RasterSource::GetDiscardableImagesInRect( |
| 259 const gfx::Rect& layer_rect, | 257 const gfx::Rect& layer_rect, |
| 260 float contents_scale, | 258 float contents_scale, |
| 261 const gfx::ColorSpace& target_color_space, | 259 const gfx::ColorSpace& target_color_space, |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 325 use_image_hijack_canvas(true) {} | 323 use_image_hijack_canvas(true) {} |
| 326 | 324 |
| 327 RasterSource::PlaybackSettings::PlaybackSettings(const PlaybackSettings&) = | 325 RasterSource::PlaybackSettings::PlaybackSettings(const PlaybackSettings&) = |
| 328 default; | 326 default; |
| 329 | 327 |
| 330 RasterSource::PlaybackSettings::PlaybackSettings(PlaybackSettings&&) = default; | 328 RasterSource::PlaybackSettings::PlaybackSettings(PlaybackSettings&&) = default; |
| 331 | 329 |
| 332 RasterSource::PlaybackSettings::~PlaybackSettings() = default; | 330 RasterSource::PlaybackSettings::~PlaybackSettings() = default; |
| 333 | 331 |
| 334 } // namespace cc | 332 } // namespace cc |
| OLD | NEW |