| /* |
| * Copyright 2013 Google Inc. |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| #ifndef SkPDFImageStream_DEFINED |
| #define SkPDFImageStream_DEFINED |
| |
| #include "SkBitmap.h" |
| #include "SkPDFDevice.h" |
| #include "SkPDFStream.h" |
| #include "SkPDFTypes.h" |
| #include "SkRect.h" |
| #include "SkRefCnt.h" |
| #include "SkStream.h" |
| #include "SkTemplates.h" |
| |
| class SkPDFCatalog; |
| |
| /** \class SkPDFImageStream |
| |
| An image stream object in a PDF. Note, all streams must be indirect objects |
| (via SkObjRef). |
| This class is similar to SkPDFStream, but it is also able to use image |
| specific compression. Currently we support DCT(jpeg) and flate(zip). |
| */ |
| class SkPDFImageStream : public SkPDFStream { |
| public: |
| /** Create a PDF stream with the same content and dictionary entries |
| * as the passed one. |
| */ |
| explicit SkPDFImageStream(const SkPDFImageStream& pdfStream); |
| virtual ~SkPDFImageStream(); |
| |
| protected: |
| SkPDFImageStream(SkStream* stream, const SkBitmap& bitmap, |
| const SkIRect& srcRect, EncodeToDCTStream encoder); |
| |
| // Populate the stream dictionary. This method returns false if |
| // fSubstitute should be used. |
| virtual bool populate(SkPDFCatalog* catalog); |
| |
| private: |
| const SkBitmap fBitmap; |
| const SkIRect fSrcRect; |
| EncodeToDCTStream fEncoder; |
| |
| typedef SkPDFStream INHERITED; |
| }; |
| |
| #endif |