SkPDF: Add SkPDFCanvas to intercept some draw calls

Motivation: this simplifies implementation at the device level.
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1812063002

Review URL: https://codereview.chromium.org/1812063002
diff --git a/src/pdf/SkPDFCanvas.h b/src/pdf/SkPDFCanvas.h
new file mode 100644
index 0000000..3a673e2
--- /dev/null
+++ b/src/pdf/SkPDFCanvas.h
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2016 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#ifndef SkPDFCanvas_DEFINED
+#define SkPDFCanvas_DEFINED
+
+#include "SkCanvas.h"
+
+class SkPDFDevice;
+
+class SkPDFCanvas : public SkCanvas {
+public:
+    SkPDFCanvas(const sk_sp<SkPDFDevice>&);
+    ~SkPDFCanvas();
+
+protected:
+    void onDrawBitmapNine(const SkBitmap&, const SkIRect&, const SkRect&,
+                          const SkPaint*) override;
+
+    void onDrawImageNine(const SkImage*, const SkIRect&, const SkRect&,
+                         const SkPaint*) override;
+
+    void onDrawImageRect(const SkImage*,
+                         const SkRect*,
+                         const SkRect&,
+                         const SkPaint*,
+                         SkCanvas::SrcRectConstraint) override;
+
+    void onDrawBitmapRect(const SkBitmap&,
+                          const SkRect*,
+                          const SkRect&,
+                          const SkPaint*,
+                          SkCanvas::SrcRectConstraint) override;
+};
+
+#endif  // SkPDFCanvas_DEFINED