blob: ce6c10982fb503304d0ff8912ab01449aa8bf6b5 [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#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 const Expectations& expectations,
21 RasterizePdfProc proc)
22 : CpuTask(parent)
23 , fName(UnderJoin(parent.name().c_str(), "rasterize"))
24 , fPdf(SkRef(pdf))
25 , fExpectations(expectations)
26 , fRasterize(proc) {}
27
28void PDFRasterizeTask::draw() {
29 SkMemoryStream pdfStream(fPdf.get());
30 SkBitmap bitmap;
31
32 if (!fRasterize(&pdfStream, &bitmap)) {
33 this->fail();
34 }
35 if (!fExpectations.check(*this, bitmap)) {
36 this->fail();
37 this->spawnChild(SkNEW_ARGS(WriteTask, (*this, bitmap)));
38 }
39}
40
41} // namespace DM