1/* 2 * Copyright 2012 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 PdfRenderer_DEFINED 9#define PdfRenderer_DEFINED 10 11// 12// PdfRender takes a SkPicture and writes it to a PDF file. 13// An SkPicture can be built manually, or read from an SKP file. 14// 15 16#include "SkDocument.h" 17#include "SkMath.h" 18#include "SkPicture.h" 19#include "SkTypes.h" 20#include "SkTDArray.h" 21#include "SkRefCnt.h" 22#include "SkString.h" 23 24class SkBitmap; 25class SkCanvas; 26class SkWStream; 27 28namespace sk_tools { 29 30class PdfRenderer : public SkRefCnt { 31public: 32 virtual void init(SkPicture* pict, SkWStream* stream); 33 virtual void setup() {} 34 virtual bool render() = 0; 35 virtual void end(); 36 37 PdfRenderer(SkPicture::EncodeBitmap encoder) 38 : fPicture(NULL) 39 , fEncoder(encoder) 40 , fPdfDoc(NULL) 41 {} 42 43protected: 44 SkCanvas* setupCanvas(SkWStream* stream, int width, int height); 45 46 SkAutoTUnref<SkCanvas> fCanvas; 47 SkPicture* fPicture; 48 SkPicture::EncodeBitmap fEncoder; 49 SkAutoTUnref<SkDocument> fPdfDoc; 50 51private: 52 typedef SkRefCnt INHERITED; 53}; 54 55class SimplePdfRenderer : public PdfRenderer { 56public: 57 SimplePdfRenderer(SkPicture::EncodeBitmap encoder) 58 : PdfRenderer(encoder) {} 59 virtual bool render() SK_OVERRIDE; 60 61private: 62 typedef PdfRenderer INHERITED; 63}; 64 65} 66 67#endif // PdfRenderer_DEFINED 68