| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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 "base/logging.h" | 5 #include "base/logging.h" |
| 6 #include "base/trace_event/trace_event.h" | 6 #include "base/trace_event/trace_event.h" |
| 7 #include "skia/ext/analysis_canvas.h" | 7 #include "skia/ext/analysis_canvas.h" |
| 8 #include "third_party/skia/include/core/SkDraw.h" | 8 #include "third_party/skia/include/core/SkDraw.h" |
| 9 #include "third_party/skia/include/core/SkPath.h" | 9 #include "third_party/skia/include/core/SkPath.h" |
| 10 #include "third_party/skia/include/core/SkRRect.h" | 10 #include "third_party/skia/include/core/SkRRect.h" |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 58 // that the canvas is not clipped (i.e. it covers ALL of the canvas). | 58 // that the canvas is not clipped (i.e. it covers ALL of the canvas). |
| 59 bool IsFullQuad(SkCanvas* canvas, const SkRect& drawn_rect) { | 59 bool IsFullQuad(SkCanvas* canvas, const SkRect& drawn_rect) { |
| 60 if (!canvas->isClipRect()) | 60 if (!canvas->isClipRect()) |
| 61 return false; | 61 return false; |
| 62 | 62 |
| 63 SkIRect clip_irect; | 63 SkIRect clip_irect; |
| 64 if (!canvas->getClipDeviceBounds(&clip_irect)) | 64 if (!canvas->getClipDeviceBounds(&clip_irect)) |
| 65 return false; | 65 return false; |
| 66 | 66 |
| 67 // if the clip is smaller than the canvas, we're partly clipped, so abort. | 67 // if the clip is smaller than the canvas, we're partly clipped, so abort. |
| 68 if (!clip_irect.contains(SkIRect::MakeSize(canvas->getDeviceSize()))) | 68 if (!clip_irect.contains(SkIRect::MakeSize(canvas->getBaseLayerSize()))) |
| 69 return false; | 69 return false; |
| 70 | 70 |
| 71 const SkMatrix& matrix = canvas->getTotalMatrix(); | 71 const SkMatrix& matrix = canvas->getTotalMatrix(); |
| 72 // If the transform results in a non-axis aligned | 72 // If the transform results in a non-axis aligned |
| 73 // rect, then be conservative and return false. | 73 // rect, then be conservative and return false. |
| 74 if (!matrix.rectStaysRect()) | 74 if (!matrix.rectStaysRect()) |
| 75 return false; | 75 return false; |
| 76 | 76 |
| 77 SkRect device_rect; | 77 SkRect device_rect; |
| 78 matrix.mapRect(&device_rect, drawn_rect); | 78 matrix.mapRect(&device_rect, drawn_rect); |
| (...skipping 364 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 443 INHERITED::willSave(); | 443 INHERITED::willSave(); |
| 444 } | 444 } |
| 445 | 445 |
| 446 SkCanvas::SaveLayerStrategy AnalysisCanvas::willSaveLayer( | 446 SkCanvas::SaveLayerStrategy AnalysisCanvas::willSaveLayer( |
| 447 const SkRect* bounds, | 447 const SkRect* bounds, |
| 448 const SkPaint* paint, | 448 const SkPaint* paint, |
| 449 SkCanvas::SaveFlags flags) { | 449 SkCanvas::SaveFlags flags) { |
| 450 | 450 |
| 451 ++saved_stack_size_; | 451 ++saved_stack_size_; |
| 452 | 452 |
| 453 SkIRect canvas_ibounds = SkIRect::MakeSize(this->getDeviceSize()); | 453 SkIRect canvas_ibounds = SkIRect::MakeSize(this->getBaseLayerSize()); |
| 454 SkRect canvas_bounds; | 454 SkRect canvas_bounds; |
| 455 canvas_bounds.set(canvas_ibounds); | 455 canvas_bounds.set(canvas_ibounds); |
| 456 | 456 |
| 457 // If after we draw to the saved layer, we have to blend with the current | 457 // If after we draw to the saved layer, we have to blend with the current |
| 458 // layer, then we can conservatively say that the canvas will not be of | 458 // layer, then we can conservatively say that the canvas will not be of |
| 459 // solid color. | 459 // solid color. |
| 460 if ((paint && !IsSolidColorPaint(*paint)) || | 460 if ((paint && !IsSolidColorPaint(*paint)) || |
| 461 (bounds && !bounds->contains(canvas_bounds))) { | 461 (bounds && !bounds->contains(canvas_bounds))) { |
| 462 if (force_not_solid_stack_level_ == kNoLayer) { | 462 if (force_not_solid_stack_level_ == kNoLayer) { |
| 463 force_not_solid_stack_level_ = saved_stack_size_; | 463 force_not_solid_stack_level_ = saved_stack_size_; |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 497 force_not_transparent_stack_level_ = kNoLayer; | 497 force_not_transparent_stack_level_ = kNoLayer; |
| 498 } | 498 } |
| 499 } | 499 } |
| 500 | 500 |
| 501 INHERITED::willRestore(); | 501 INHERITED::willRestore(); |
| 502 } | 502 } |
| 503 | 503 |
| 504 } // namespace skia | 504 } // namespace skia |
| 505 | 505 |
| 506 | 506 |
| OLD | NEW |