summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/skia/experimental/PdfViewer/inc/SkPdfTokenLooper.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/skia/experimental/PdfViewer/inc/SkPdfTokenLooper.h')
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/inc/SkPdfTokenLooper.h68
1 files changed, 68 insertions, 0 deletions
diff --git a/chromium/third_party/skia/experimental/PdfViewer/inc/SkPdfTokenLooper.h b/chromium/third_party/skia/experimental/PdfViewer/inc/SkPdfTokenLooper.h
new file mode 100644
index 00000000000..f3897cc78f5
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/inc/SkPdfTokenLooper.h
@@ -0,0 +1,68 @@
+/*
+ * Copyright 2013 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfTokenLooper_DEFINED
+#define SkPdfTokenLooper_DEFINED
+
+#include "SkPdfNativeTokenizer.h"
+// For SkPdfResult
+#include "SkPdfUtils.h"
+
+class SkCanvas;
+class SkPdfContext;
+
+/**
+ * An object which reads tokens from a tokenizer and draws it to an SkCanvas.
+ * FIXME (scroggo): Can this be an interface? See http://goo.gl/AXQtkH
+ */
+class SkPdfTokenLooper {
+public:
+ /**
+ * Create a looper with no parent.
+ * @param tokenizer SkPdfNativeTokenizer for reading tokens.
+ * @param pdfContext Context for drawing state.
+ * @param canvas Target SkCanvas for drawing.
+ */
+ SkPdfTokenLooper(SkPdfNativeTokenizer* tokenizer,
+ SkPdfContext* pdfContext,
+ SkCanvas* canvas)
+ : fParent(NULL)
+ , fTokenizer(tokenizer)
+ , fPdfContext(pdfContext)
+ , fCanvas(canvas) {}
+
+ /**
+ * Create a looper as a child of parent. It will share the
+ * SkPdfContext, SkPdfTokenizer, and SkCanvas with its parent.
+ */
+ explicit SkPdfTokenLooper(SkPdfTokenLooper* parent)
+ : fParent(parent)
+ , fTokenizer(parent->fTokenizer)
+ , fPdfContext(parent->fPdfContext)
+ , fCanvas(parent->fCanvas) {}
+
+ virtual ~SkPdfTokenLooper() {}
+
+ /**
+ * Consume a token, and draw to fCanvas as directed.
+ */
+ virtual SkPdfResult consumeToken(PdfToken& token) = 0;
+
+ /**
+ * Consume all the tokens this looper can handle.
+ */
+ virtual void loop() = 0;
+
+protected:
+ // All are unowned pointers.
+ SkPdfTokenLooper* fParent;
+ SkPdfNativeTokenizer* fTokenizer;
+ SkPdfContext* fPdfContext;
+ SkCanvas* fCanvas;
+};
+
+#endif // SkPdfTokenLooper_DEFINED