if (!mSkiaCanvasProxy) {
mSkiaCanvasProxy.reset(new SkiaCanvasProxy(this));
}
+
+ // SkCanvas instances default to identity transform, but should inherit
+ // the state of this Canvas; if this code was in the SkiaCanvasProxy
+ // constructor, we couldn't cache mSkiaCanvasProxy.
+ SkMatrix parentTransform;
+ getMatrix(&parentTransform);
+ mSkiaCanvasProxy.get()->setMatrix(parentTransform);
+
return mSkiaCanvasProxy.get();
}
}
void DisplayListCanvas::translate(float dx, float dy) {
+ if (dx == 0.0f && dy == 0.0f) return;
+
mHasDeferredTranslate = true;
mTranslateX += dx;
mTranslateY += dy;
}
void DisplayListCanvas::rotate(float degrees) {
+ if (degrees == 0.0f) return;
+
addStateOp(new (alloc()) RotateOp(degrees));
mState.rotate(degrees);
}
void DisplayListCanvas::scale(float sx, float sy) {
+ if (sx == 1.0f && sy == 1.0f) return;
+
addStateOp(new (alloc()) ScaleOp(sx, sy));
mState.scale(sx, sy);
}