130bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein/*
230bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein * Copyright 2014 Google Inc.
330bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein *
430bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein * Use of this source code is governed by a BSD-style license that can be
530bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein * found in the LICENSE file.
630bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein */
730bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein
830bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein#ifndef DMPDFRasterizeTask_DEFINED
930bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein#define DMPDFRasterizeTask_DEFINED
1030bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein
1130bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein#include "DMTask.h"
1230bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein#include "SkBitmap.h"
1330bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein#include "SkData.h"
1430bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein#include "SkStream.h"
1530bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein#include "SkString.h"
1630bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein#include "SkTemplates.h"
1730bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein
1830bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtkleinnamespace DM {
1930bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein
2030bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtkleintypedef bool (*RasterizePdfProc)(SkStream* pdf, SkBitmap* output);
2130bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein
2230bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtkleinclass PDFRasterizeTask : public CpuTask {
2330bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtkleinpublic:
24a4c6094177ebde18c706cbcfbd2013d0a088e0eehalcanary    // takes ownership of SkStreamAsset.
2530bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein    PDFRasterizeTask(const Task& parent,
26a4c6094177ebde18c706cbcfbd2013d0a088e0eehalcanary                     SkStreamAsset* pdf,
2730bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein                     RasterizePdfProc);
2830bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein
2930bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein    virtual void draw() SK_OVERRIDE;
3030bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein    virtual bool shouldSkip() const SK_OVERRIDE { return NULL == fRasterize; }
3130bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein    virtual SkString name()   const SK_OVERRIDE { return fName; }
3230bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein
3330bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtkleinprivate:
3430bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein    const SkString fName;
35a4c6094177ebde18c706cbcfbd2013d0a088e0eehalcanary    SkAutoTDelete<SkStreamAsset> fPdf;
3630bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein    RasterizePdfProc fRasterize;
3730bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein};
3830bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein
3930bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein}  // namespace DM
4030bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein
4130bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein#endif  // DMPDFRasterizeTask_DEFINED
42