add matrix options to drawDrawable
BUG=skia:
Review URL: https://codereview.chromium.org/1224783002
diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp
index 88339ff..09bfa45 100644
--- a/src/core/SkCanvas.cpp
+++ b/src/core/SkCanvas.cpp
@@ -2446,14 +2446,35 @@
LOOPER_END
}
-void SkCanvas::drawDrawable(SkDrawable* dr) {
- if (dr && !this->quickReject(dr->getBounds())) {
- this->onDrawDrawable(dr);
+void SkCanvas::drawDrawable(SkDrawable* dr, SkScalar x, SkScalar y) {
+ if (dr) {
+ if (x || y) {
+ SkMatrix matrix = SkMatrix::MakeTrans(x, y);
+ this->onDrawDrawable(dr, &matrix);
+ } else {
+ this->onDrawDrawable(dr, NULL);
+ }
}
}
-void SkCanvas::onDrawDrawable(SkDrawable* dr) {
- dr->draw(this);
+void SkCanvas::drawDrawable(SkDrawable* dr, const SkMatrix* matrix) {
+ if (dr) {
+ if (matrix && matrix->isIdentity()) {
+ matrix = NULL;
+ }
+ this->onDrawDrawable(dr, matrix);
+ }
+}
+
+void SkCanvas::onDrawDrawable(SkDrawable* dr, const SkMatrix* matrix) {
+ SkRect bounds = dr->getBounds();
+ if (matrix) {
+ matrix->mapRect(&bounds);
+ }
+ if (this->quickReject(bounds)) {
+ return;
+ }
+ dr->draw(this, matrix);
}
void SkCanvas::onDrawAtlas(const SkImage* atlas, const SkRSXform xform[], const SkRect tex[],