Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(394)

Side by Side Diff: src/pdf/SkPDFStream.h

Issue 387863005: Move SkPDFStream back to SkStream to save memory. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Simpler changes Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 1
2 /* 2 /*
3 * Copyright 2010 Google Inc. 3 * Copyright 2010 Google Inc.
4 * 4 *
5 * Use of this source code is governed by a BSD-style license that can be 5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file. 6 * found in the LICENSE file.
7 */ 7 */
8 8
9 9
10 #ifndef SkPDFStream_DEFINED 10 #ifndef SkPDFStream_DEFINED
11 #define SkPDFStream_DEFINED 11 #define SkPDFStream_DEFINED
12 12
13 #include "SkPDFTypes.h" 13 #include "SkPDFTypes.h"
14 #include "SkRefCnt.h" 14 #include "SkRefCnt.h"
15 #include "SkStream.h" 15 #include "SkStream.h"
16 #include "SkTemplates.h" 16 #include "SkTemplates.h"
17 17
18 class SkPDFCatalog; 18 class SkPDFCatalog;
19 19
20 /** \class SkPDFStream 20 /** \class SkPDFStream
21 21
22 A stream object in a PDF. Note, all streams must be indirect objects (via 22 A stream object in a PDF. Note, all streams must be indirect objects (via
23 SkObjRef). 23 SkObjRef).
24 TODO(vandebo): SkStream should be replaced by SkStreamRewindable when that
25 is feasible.
26 */ 24 */
27 class SkPDFStream : public SkPDFDict { 25 class SkPDFStream : public SkPDFDict {
28 SK_DECLARE_INST_COUNT(SkPDFStream) 26 SK_DECLARE_INST_COUNT(SkPDFStream)
29 public: 27 public:
30 /** Create a PDF stream. A Length entry is automatically added to the 28 /** Create a PDF stream. A Length entry is automatically added to the
31 * stream dictionary. The stream may be retained (stream->ref() may be 29 * stream dictionary.
32 * called) so its contents must not be changed after calling this. 30 * @param stream The data part of the stream. Will be duplicate()d.
bungeman-skia 2014/07/11 21:43:38 This seems to want to go with the constructor belo
hal.canary 2014/07/12 00:58:49 Done.
33 * @param data The data part of the stream. 31 * @param data The data part of the stream. Will be ref()ed.
34 */ 32 */
35 explicit SkPDFStream(SkData* data); 33 explicit SkPDFStream(SkData* data);
36 /** Deprecated constructor. */
37 explicit SkPDFStream(SkStream* stream); 34 explicit SkPDFStream(SkStream* stream);
38 35
39 virtual ~SkPDFStream(); 36 virtual ~SkPDFStream();
40 37
41 // The SkPDFObject interface. These two methods use a mutex to 38 // The SkPDFObject interface. These two methods use a mutex to
42 // allow multiple threads to call at the same time. 39 // allow multiple threads to call at the same time.
43 virtual void emitObject(SkWStream* stream, SkPDFCatalog* catalog, 40 virtual void emitObject(SkWStream* stream, SkPDFCatalog* catalog,
44 bool indirect); 41 bool indirect);
45 virtual size_t getOutputSize(SkPDFCatalog* catalog, bool indirect); 42 virtual size_t getOutputSize(SkPDFCatalog* catalog, bool indirect);
46 43
(...skipping 25 matching lines...) Expand all
72 69
73 SkPDFStream* getSubstitute() const { 70 SkPDFStream* getSubstitute() const {
74 return fSubstitute.get(); 71 return fSubstitute.get();
75 } 72 }
76 73
77 void setData(SkData* data); 74 void setData(SkData* data);
78 void setData(SkStream* stream); 75 void setData(SkStream* stream);
79 76
80 size_t dataSize() const; 77 size_t dataSize() const;
81 78
82 SkData* getData() const { return fData.get(); }
83
84 void setState(State state) { 79 void setState(State state) {
85 fState = state; 80 fState = state;
86 } 81 }
87 82
88 State getState() const { 83 State getState() const {
89 return fState; 84 return fState;
90 } 85 }
91 86
92 private: 87 private:
93 // Indicates what form (or if) the stream has been requested. 88 // Indicates what form (or if) the stream has been requested.
94 State fState; 89 State fState;
95 90
96 // Mutex guards fState, fData, and fSubstitute in public interface. 91 // Mutex guards fState, fDataStream, and fSubstitute in public interface.
97 SkMutex fMutex; 92 SkMutex fMutex;
98 93
99 SkAutoTUnref<SkData> fData; 94 SkMemoryStream fMemoryStream; // Used by fDataStream when
95 // fDataStream needs to be backed
96 // by SkData.
97 SkAutoTUnref<SkStreamRewindable> fDataStream;
100 SkAutoTUnref<SkPDFStream> fSubstitute; 98 SkAutoTUnref<SkPDFStream> fSubstitute;
101 99
102 typedef SkPDFDict INHERITED; 100 typedef SkPDFDict INHERITED;
103 }; 101 };
104 102
105 #endif 103 #endif
OLDNEW
« src/core/SkStream.cpp ('K') | « src/core/SkStreamPriv.h ('k') | src/pdf/SkPDFStream.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698