aboutsummaryrefslogtreecommitdiffhomepage
path: root/experimental/tools/PageCachingDocument.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'experimental/tools/PageCachingDocument.cpp')
-rw-r--r--experimental/tools/PageCachingDocument.cpp98
1 files changed, 0 insertions, 98 deletions
diff --git a/experimental/tools/PageCachingDocument.cpp b/experimental/tools/PageCachingDocument.cpp
deleted file mode 100644
index 9baf45c721..0000000000
--- a/experimental/tools/PageCachingDocument.cpp
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * Copyright 2014 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#include "PageCachingDocument.h"
-#include "SkCanvas.h"
-#include "SkDocument.h"
-#include "SkPictureRecorder.h"
-#include "SkRect.h"
-#include "SkTDArray.h"
-
-namespace {
-
-typedef void (*DoneProc)(SkWStream*, bool);
-typedef SkData* (*Encoder)(size_t*, const SkBitmap&);
-
-// This class allows us to compare the relative memory consumption of
-// the PDF and SkPicture backends.
-class PageCachingDocument : public SkDocument {
-public:
- PageCachingDocument(SkWStream*, DoneProc, Encoder, SkScalar rasterDpi);
- virtual ~PageCachingDocument();
- virtual SkCanvas* onBeginPage(SkScalar width,
- SkScalar height,
- const SkRect& content) override;
- void onEndPage() override;
- bool onClose(SkWStream*) override;
- void onAbort() override;
-
-private:
- struct Page {
- SkScalar fWidth;
- SkScalar fHeight;
- SkAutoTUnref<SkPicture> fPic;
- };
- SkPictureRecorder fRecorder;
- SkTDArray<Page> fPages;
- Encoder fEncoder;
- SkScalar fRasterDpi;
-};
-
-PageCachingDocument::PageCachingDocument(SkWStream* stream,
- DoneProc done,
- Encoder encoder,
- SkScalar rasterDpi)
- : SkDocument(stream, done), fEncoder(encoder), fRasterDpi(rasterDpi) {
-}
-
-PageCachingDocument::~PageCachingDocument() {
- for (Page* p = fPages.begin(); p != fPages.end(); ++p) {
- p->~Page();
- }
-}
-
-SkCanvas* PageCachingDocument::onBeginPage(SkScalar width,
- SkScalar height,
- const SkRect& content) {
- Page* page = fPages.push();
- sk_bzero(page, sizeof(*page));
- page->fWidth = width;
- page->fHeight = height;
- SkASSERT(!page->fPic.get());
- SkCanvas* canvas = fRecorder.beginRecording(content);
- return canvas;
-}
-
-void PageCachingDocument::onEndPage() {
- SkASSERT(fPages.count() > 0);
- SkASSERT(!fPages[fPages.count() - 1].fPic);
- fPages[fPages.count() - 1].fPic.reset(fRecorder.endRecording());
-}
-
-bool PageCachingDocument::onClose(SkWStream* stream) {
- SkAutoTUnref<SkDocument> doc(
- SkDocument::CreatePDF(stream, NULL, fEncoder, fRasterDpi));
- for (Page* page = fPages.begin(); page != fPages.end(); ++page) {
- SkRect cullRect = page->fPic->cullRect();
- SkCanvas* canvas =
- doc->beginPage(page->fWidth, page->fHeight, &cullRect);
- canvas->drawPicture(page->fPic);
- doc->endPage();
- }
- return doc->close();
-}
-
-void PageCachingDocument::onAbort() {
-}
-} // namespace
-
-SkDocument* CreatePageCachingDocument(SkWStream* stream,
- DoneProc done,
- Encoder encoder,
- SkScalar rasterDpi) {
- return SkNEW_ARGS(PageCachingDocument, (stream, done, encoder, rasterDpi));
-}