1/*
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#include "DMPDFRasterizeTask.h"
9#include "DMExpectationsTask.h"
10#include "DMUtil.h"
11#include "DMWriteTask.h"
12#include "SkBitmap.h"
13#include "SkCanvas.h"
14#include "SkStream.h"
15
16namespace DM {
17
18PDFRasterizeTask::PDFRasterizeTask(const Task& parent,
19                                   SkData* pdf,
20                                   RasterizePdfProc proc)
21    : CpuTask(parent)
22    , fName(UnderJoin(parent.name().c_str(), "rasterize"))
23    , fPdf(SkRef(pdf))
24    , fRasterize(proc) {}
25
26void PDFRasterizeTask::draw() {
27    SkMemoryStream pdfStream(fPdf.get());
28    SkBitmap bitmap;
29
30    if (fRasterize(&pdfStream, &bitmap)) {
31        this->spawnChild(SkNEW_ARGS(WriteTask, (*this, bitmap)));
32    } else {
33        this->fail();
34    }
35}
36
37}  // namespace DM
38