| OLD | NEW | 
|---|
|  | (Empty) | 
| 1 |  | 
| 2 /* |  | 
| 3  * Copyright 2010 The Android Open Source Project |  | 
| 4  * |  | 
| 5  * Use of this source code is governed by a BSD-style license that can be |  | 
| 6  * found in the LICENSE file. |  | 
| 7  */ |  | 
| 8 |  | 
| 9 |  | 
| 10 #ifndef SkPDFDocument_DEFINED |  | 
| 11 #define SkPDFDocument_DEFINED |  | 
| 12 |  | 
| 13 #include "SkAdvancedTypefaceMetrics.h" |  | 
| 14 #include "SkRefCnt.h" |  | 
| 15 #include "SkTDArray.h" |  | 
| 16 #include "SkTemplates.h" |  | 
| 17 |  | 
| 18 class SkPDFCatalog; |  | 
| 19 class SkPDFDevice; |  | 
| 20 class SkPDFDict; |  | 
| 21 class SkPDFPage; |  | 
| 22 class SkPDFObject; |  | 
| 23 class SkWStream; |  | 
| 24 template <typename T> class SkTSet; |  | 
| 25 |  | 
| 26 /** \class SkPDFDocument |  | 
| 27 |  | 
| 28     A SkPDFDocument assembles pages together and generates the final PDF file. |  | 
| 29 */ |  | 
| 30 class SkPDFDocument { |  | 
| 31 public: |  | 
| 32     enum Flags { |  | 
| 33         kNoCompression_Flags = 0x01,  //!< DEPRECATED. |  | 
| 34         kFavorSpeedOverSize_Flags = 0x01,  //!< Don't compress the stream, but |  | 
| 35                                            // if it is already compressed return |  | 
| 36                                            // the compressed stream. |  | 
| 37         kNoLinks_Flags       = 0x02,  //!< do not honor link annotations. |  | 
| 38 |  | 
| 39         kDraftMode_Flags     = 0x01, |  | 
| 40     }; |  | 
| 41     /** Create a PDF document. |  | 
| 42      */ |  | 
| 43     explicit SK_API SkPDFDocument(Flags flags = (Flags)0); |  | 
| 44     SK_API ~SkPDFDocument(); |  | 
| 45 |  | 
| 46     /** Output the PDF to the passed stream.  It is an error to call this (it |  | 
| 47      *  will return false and not modify stream) if no pages have been added |  | 
| 48      *  or there are pages missing (i.e. page 1 and 3 have been added, but not |  | 
| 49      *  page 2). |  | 
| 50      * |  | 
| 51      *  @param stream    The writable output stream to send the PDF to. |  | 
| 52      */ |  | 
| 53     SK_API bool emitPDF(SkWStream* stream); |  | 
| 54 |  | 
| 55     /** Sets the specific page to the passed PDF device. If the specified |  | 
| 56      *  page is already set, this overrides it. Returns true if successful. |  | 
| 57      *  Will fail if the document has already been emitted. |  | 
| 58      * |  | 
| 59      *  @param pageNumber The position to add the passed device (1 based). |  | 
| 60      *  @param pdfDevice  The page to add to this document. |  | 
| 61      */ |  | 
| 62     SK_API bool setPage(int pageNumber, SkPDFDevice* pdfDevice); |  | 
| 63 |  | 
| 64     /** Append the passed pdf device to the document as a new page.  Returns |  | 
| 65      *  true if successful.  Will fail if the document has already been emitted. |  | 
| 66      * |  | 
| 67      *  @param pdfDevice The page to add to this document. |  | 
| 68      */ |  | 
| 69     SK_API bool appendPage(SkPDFDevice* pdfDevice); |  | 
| 70 |  | 
| 71     /** Get the count of unique font types used in the document. |  | 
| 72      * DEPRECATED. |  | 
| 73      */ |  | 
| 74     SK_API void getCountOfFontTypes( |  | 
| 75         int counts[SkAdvancedTypefaceMetrics::kOther_Font + 2]) const; |  | 
| 76 |  | 
| 77     /** Get the count of unique font types used in the document. |  | 
| 78      */ |  | 
| 79     SK_API void getCountOfFontTypes( |  | 
| 80         int counts[SkAdvancedTypefaceMetrics::kOther_Font + 1], |  | 
| 81         int* notSubsettableCount, |  | 
| 82         int* notEmbedddableCount) const; |  | 
| 83 |  | 
| 84 private: |  | 
| 85     SkAutoTDelete<SkPDFCatalog> fCatalog; |  | 
| 86     int64_t fXRefFileOffset; |  | 
| 87 |  | 
| 88     SkTDArray<SkPDFPage*> fPages; |  | 
| 89     SkTDArray<SkPDFDict*> fPageTree; |  | 
| 90     SkPDFDict* fDocCatalog; |  | 
| 91     SkTSet<SkPDFObject*>* fFirstPageResources; |  | 
| 92     SkTSet<SkPDFObject*>* fOtherPageResources; |  | 
| 93     SkTDArray<SkPDFObject*> fSubstitutes; |  | 
| 94 |  | 
| 95     SkPDFDict* fTrailerDict; |  | 
| 96 |  | 
| 97     /** Output the PDF header to the passed stream. |  | 
| 98      *  @param stream    The writable output stream to send the header to. |  | 
| 99      */ |  | 
| 100     void emitHeader(SkWStream* stream); |  | 
| 101 |  | 
| 102     /** Get the size of the header. |  | 
| 103      */ |  | 
| 104     size_t headerSize(); |  | 
| 105 |  | 
| 106     /** Output the PDF footer to the passed stream. |  | 
| 107      *  @param stream    The writable output stream to send the footer to. |  | 
| 108      *  @param objCount  The number of objects in the PDF. |  | 
| 109      */ |  | 
| 110     void emitFooter(SkWStream* stream, int64_t objCount); |  | 
| 111 }; |  | 
| 112 |  | 
| 113 #endif |  | 
| OLD | NEW | 
|---|