| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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 "ui/gfx/canvas.h" | 5 #include "ui/gfx/canvas.h" |
| 6 | 6 |
| 7 #include <cmath> | 7 #include <cmath> |
| 8 #include <limits> | 8 #include <limits> |
| 9 | 9 |
| 10 #include "base/i18n/rtl.h" | 10 #include "base/i18n/rtl.h" |
| (...skipping 496 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 507 shader_scale)); | 507 shader_scale)); |
| 508 return true; | 508 return true; |
| 509 } | 509 } |
| 510 | 510 |
| 511 void Canvas::Transform(const gfx::Transform& transform) { | 511 void Canvas::Transform(const gfx::Transform& transform) { |
| 512 canvas_->concat(transform.matrix()); | 512 canvas_->concat(transform.matrix()); |
| 513 } | 513 } |
| 514 | 514 |
| 515 SkBitmap Canvas::GetBitmap() const { | 515 SkBitmap Canvas::GetBitmap() const { |
| 516 DCHECK(bitmap_); | 516 DCHECK(bitmap_); |
| 517 SkBitmap bitmap = bitmap_.value(); | 517 return bitmap_.value(); |
| 518 // When the bitmap is copied, it shares the underlying pixelref, but doesn't | |
| 519 // initialize pixels unless they are locked. Hence, ensure that the returned | |
| 520 // bitmap keeps the pixelref alive by locking it. Note that the dtor of | |
| 521 // SkBitmap will unlock the pixelrefs, so this won't leak. Also note that | |
| 522 // moving SkBitmap retains the same lock as the source, so the caller | |
| 523 // will receive a locked-pixels bitmap. | |
| 524 bitmap.lockPixels(); | |
| 525 return bitmap; | |
| 526 } | 518 } |
| 527 | 519 |
| 528 bool Canvas::IntersectsClipRect(const SkRect& rect) { | 520 bool Canvas::IntersectsClipRect(const SkRect& rect) { |
| 529 SkRect clip; | 521 SkRect clip; |
| 530 return canvas_->getLocalClipBounds(&clip) && clip.intersects(rect); | 522 return canvas_->getLocalClipBounds(&clip) && clip.intersects(rect); |
| 531 } | 523 } |
| 532 | 524 |
| 533 void Canvas::DrawImageIntHelper(const ImageSkiaRep& image_rep, | 525 void Canvas::DrawImageIntHelper(const ImageSkiaRep& image_rep, |
| 534 int src_x, | 526 int src_x, |
| 535 int src_y, | 527 int src_y, |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 590 bitmap_.emplace(); | 582 bitmap_.emplace(); |
| 591 bitmap_->allocPixels(info); | 583 bitmap_->allocPixels(info); |
| 592 // Ensure that the bitmap is zeroed, since the code expects that. | 584 // Ensure that the bitmap is zeroed, since the code expects that. |
| 593 memset(bitmap_->getPixels(), 0, bitmap_->getSafeSize()); | 585 memset(bitmap_->getPixels(), 0, bitmap_->getSafeSize()); |
| 594 | 586 |
| 595 owned_canvas_ = cc::SkiaPaintCanvas(bitmap_.value()); | 587 owned_canvas_ = cc::SkiaPaintCanvas(bitmap_.value()); |
| 596 return &owned_canvas_.value(); | 588 return &owned_canvas_.value(); |
| 597 } | 589 } |
| 598 | 590 |
| 599 } // namespace gfx | 591 } // namespace gfx |
| OLD | NEW |