|  | /* | 
|  | * Copyright 2012 Google Inc. | 
|  | * | 
|  | * Use of this source code is governed by a BSD-style license that can be | 
|  | * found in the LICENSE file. | 
|  | */ | 
|  |  | 
|  | #ifndef PdfRenderer_DEFINED | 
|  | #define PdfRenderer_DEFINED | 
|  |  | 
|  | // | 
|  | // PdfRender takes a SkPicture and writes it to a PDF file. | 
|  | // An SkPicture can be built manually, or read from an SKP file. | 
|  | // | 
|  |  | 
|  | #include "SkDocument.h" | 
|  | #include "SkMath.h" | 
|  | #include "SkPicture.h" | 
|  | #include "SkTypes.h" | 
|  | #include "SkTDArray.h" | 
|  | #include "SkRefCnt.h" | 
|  | #include "SkString.h" | 
|  |  | 
|  | class SkBitmap; | 
|  | class SkCanvas; | 
|  | class SkWStream; | 
|  |  | 
|  | namespace sk_tools { | 
|  |  | 
|  | class PdfRenderer : public SkRefCnt { | 
|  | public: | 
|  | virtual void init(SkPicture* pict, SkWStream* stream); | 
|  | virtual void setup() {} | 
|  | virtual bool render() = 0; | 
|  | virtual void end(); | 
|  |  | 
|  | PdfRenderer(SkPicture::EncodeBitmap encoder) | 
|  | : fPicture(NULL) | 
|  | , fEncoder(encoder) | 
|  | , fPdfDoc(NULL) | 
|  | {} | 
|  |  | 
|  | protected: | 
|  | SkCanvas* setupCanvas(SkWStream* stream, int width, int height); | 
|  |  | 
|  | SkAutoTUnref<SkCanvas> fCanvas; | 
|  | SkPicture* fPicture; | 
|  | SkPicture::EncodeBitmap fEncoder; | 
|  | SkAutoTUnref<SkDocument> fPdfDoc; | 
|  |  | 
|  | private: | 
|  | typedef SkRefCnt INHERITED; | 
|  | }; | 
|  |  | 
|  | class SimplePdfRenderer : public PdfRenderer { | 
|  | public: | 
|  | SimplePdfRenderer(SkPicture::EncodeBitmap encoder) | 
|  | : PdfRenderer(encoder) {} | 
|  | virtual bool render() SK_OVERRIDE; | 
|  |  | 
|  | private: | 
|  | typedef PdfRenderer INHERITED; | 
|  | }; | 
|  |  | 
|  | } | 
|  |  | 
|  | #endif  // PdfRenderer_DEFINED |