diff options
Diffstat (limited to 'chromium/third_party/skia/experimental/PdfViewer/inc/SkPdfTokenLooper.h')
-rw-r--r-- | chromium/third_party/skia/experimental/PdfViewer/inc/SkPdfTokenLooper.h | 68 |
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 |