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#include "DMPDFRasterizeTask.h"
930bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein#include "DMExpectationsTask.h"
1030bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein#include "DMUtil.h"
1130bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein#include "DMWriteTask.h"
1230bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein#include "SkBitmap.h"
1330bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein#include "SkCanvas.h"
1430bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein#include "SkStream.h"
1530bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein
1630bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtkleinnamespace DM {
1730bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein
1830bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtkleinPDFRasterizeTask::PDFRasterizeTask(const Task& parent,
1930bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein                                   SkData* pdf,
2030bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein                                   RasterizePdfProc proc)
2130bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein    : CpuTask(parent)
2230bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein    , fName(UnderJoin(parent.name().c_str(), "rasterize"))
2330bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein    , fPdf(SkRef(pdf))
2430bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein    , fRasterize(proc) {}
2530bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein
2630bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtkleinvoid PDFRasterizeTask::draw() {
2730bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein    SkMemoryStream pdfStream(fPdf.get());
2830bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein    SkBitmap bitmap;
2930bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein
30e4d3e605f74a23d050abad29909af421d8b1cf1amtklein    if (fRasterize(&pdfStream, &bitmap)) {
3130bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein        this->spawnChild(SkNEW_ARGS(WriteTask, (*this, bitmap)));
32e4d3e605f74a23d050abad29909af421d8b1cf1amtklein    } else {
33e4d3e605f74a23d050abad29909af421d8b1cf1amtklein        this->fail();
3430bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein    }
3530bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein}
3630bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein
3730bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein}  // namespace DM
38