Home | History | Annotate | Download | only in tools
      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 
     24 class SkBitmap;
     25 class SkCanvas;
     26 class SkWStream;
     27 
     28 namespace sk_tools {
     29 
     30 class PdfRenderer : public SkRefCnt {
     31 public:
     32     virtual void init(SkPicture* pict, SkWStream* stream);
     33     virtual void setup() {}
     34     virtual bool render() = 0;
     35     virtual void end();
     36 
     37     PdfRenderer(EncodeToDCTStream encoder)
     38         : fPicture(NULL)
     39         , fEncoder(encoder)
     40         , fPDFDoc(NULL)
     41         {}
     42 
     43     void write(SkWStream* stream) const;
     44 
     45 protected:
     46     SkCanvas* setupCanvas(SkWStream* stream, int width, int height);
     47 
     48     SkAutoTUnref<SkCanvas> fCanvas;
     49     SkPicture* fPicture;
     50     EncodeToDCTStream fEncoder;
     51     SkAutoTUnref<SkDocument> fPdfDoc;
     52 
     53 private:
     54     typedef SkRefCnt INHERITED;
     55 };
     56 
     57 class SimplePdfRenderer : public PdfRenderer {
     58 public:
     59     SimplePdfRenderer(EncodeToDCTStream encoder)
     60         : PdfRenderer(encoder) {}
     61     virtual bool render() SK_OVERRIDE;
     62 
     63 private:
     64     typedef PdfRenderer INHERITED;
     65 };
     66 
     67 }
     68 
     69 #endif  // PdfRenderer_DEFINED
     70