blob: 72319503c79debab937f888108e239dda1aaee0d [file] [log] [blame]
mtklein30bf3e22014-06-03 13:57:14 -07001/*
2 * Copyright 2014 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8#ifndef DMPDFRasterizeTask_DEFINED
9#define DMPDFRasterizeTask_DEFINED
10
mtklein30bf3e22014-06-03 13:57:14 -070011#include "DMTask.h"
12#include "SkBitmap.h"
13#include "SkData.h"
14#include "SkStream.h"
15#include "SkString.h"
16#include "SkTemplates.h"
17
18namespace DM {
19
20typedef bool (*RasterizePdfProc)(SkStream* pdf, SkBitmap* output);
21
22class PDFRasterizeTask : public CpuTask {
23public:
halcanarya4c60942014-08-26 10:38:07 -070024 // takes ownership of SkStreamAsset.
mtklein30bf3e22014-06-03 13:57:14 -070025 PDFRasterizeTask(const Task& parent,
halcanarya4c60942014-08-26 10:38:07 -070026 SkStreamAsset* pdf,
mtklein30bf3e22014-06-03 13:57:14 -070027 RasterizePdfProc);
28
29 virtual void draw() SK_OVERRIDE;
30 virtual bool shouldSkip() const SK_OVERRIDE { return NULL == fRasterize; }
31 virtual SkString name() const SK_OVERRIDE { return fName; }
32
33private:
34 const SkString fName;
halcanarya4c60942014-08-26 10:38:07 -070035 SkAutoTDelete<SkStreamAsset> fPdf;
mtklein30bf3e22014-06-03 13:57:14 -070036 RasterizePdfProc fRasterize;
37};
38
39} // namespace DM
40
41#endif // DMPDFRasterizeTask_DEFINED