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

Side by Side Diff: experimental/PdfViewer/pdfparser/native/SkPdfNativeTokenizer.h

Issue 23020003: pdfviewer: debug code for drawText (show magenta background for text, to show text even when we fai… (Closed) Base URL: http://skia.googlecode.com/svn/trunk/
Patch Set: Created 7 years, 4 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 | Annotate | Revision Log
OLDNEW
1 #ifndef EXPERIMENTAL_PDFVIEWER_PDFPARSER_NATIVE_SKPDFNATIVETOKENIZER_H_ 1 #ifndef EXPERIMENTAL_PDFVIEWER_PDFPARSER_NATIVE_SKPDFNATIVETOKENIZER_H_
2 #define EXPERIMENTAL_PDFVIEWER_PDFPARSER_NATIVE_SKPDFNATIVETOKENIZER_H_ 2 #define EXPERIMENTAL_PDFVIEWER_PDFPARSER_NATIVE_SKPDFNATIVETOKENIZER_H_
3 3
4 #include "SkTDArray.h" 4 #include "SkTDArray.h"
5 #include "SkTDict.h" 5 #include "SkTDict.h"
6 #include <math.h> 6 #include <math.h>
7 #include <string.h> 7 #include <string.h>
8 8
9 class SkPdfMapper; 9 class SkPdfMapper;
10 class SkPdfDictionary; 10 class SkPdfDictionary;
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
66 const unsigned char* endOfPdfToken(int level, const unsigned char* start, const unsigned char* end); 66 const unsigned char* endOfPdfToken(int level, const unsigned char* start, const unsigned char* end);
67 67
68 // TODO(edisonn): typedef read and integer tyepes? make less readable... 68 // TODO(edisonn): typedef read and integer tyepes? make less readable...
69 //typedef double SkPdfReal; 69 //typedef double SkPdfReal;
70 //typedef int64_t SkPdfInteger; 70 //typedef int64_t SkPdfInteger;
71 71
72 // an allocator only allocates memory, and it deletes it all when the allocator is destroyed 72 // an allocator only allocates memory, and it deletes it all when the allocator is destroyed
73 // this would allow us not to do any garbage collection while we parse or draw a pdf, and defere it 73 // this would allow us not to do any garbage collection while we parse or draw a pdf, and defere it
74 // while the user is looking at the image 74 // while the user is looking at the image
75 75
76 class SkPdfObject; 76 class SkPdfNativeObject;
77 77
78 class SkPdfAllocator { 78 class SkPdfAllocator {
79 #define BUFFER_SIZE 1024 79 #define BUFFER_SIZE 1024
80 SkTDArray<SkPdfObject*> fHistory; 80 SkTDArray<SkPdfNativeObject*> fHistory;
81 SkTDArray<void*> fHandles; 81 SkTDArray<void*> fHandles;
82 SkPdfObject* fCurrent; 82 SkPdfNativeObject* fCurrent;
83 int fCurrentUsed; 83 int fCurrentUsed;
84 84
85 SkPdfObject* allocBlock(); 85 SkPdfNativeObject* allocBlock();
86 size_t fSizeInBytes; 86 size_t fSizeInBytes;
87 87
88 public: 88 public:
89 SkPdfAllocator() { 89 SkPdfAllocator() {
90 fSizeInBytes = sizeof(*this); 90 fSizeInBytes = sizeof(*this);
91 fCurrent = allocBlock(); 91 fCurrent = allocBlock();
92 fCurrentUsed = 0; 92 fCurrentUsed = 0;
93 } 93 }
94 94
95 ~SkPdfAllocator(); 95 ~SkPdfAllocator();
96 96
97 SkPdfObject* allocObject(); 97 SkPdfNativeObject* allocObject();
98 98
99 // TODO(edisonn): free this memory in destructor, track the usage? 99 // TODO(edisonn): free this memory in destructor, track the usage?
100 void* alloc(size_t bytes) { 100 void* alloc(size_t bytes) {
101 void* data = malloc(bytes); 101 void* data = malloc(bytes);
102 fHandles.push(data); 102 fHandles.push(data);
103 fSizeInBytes += bytes; 103 fSizeInBytes += bytes;
104 return data; 104 return data;
105 } 105 }
106 106
107 size_t bytesUsed() const { 107 size_t bytesUsed() const {
108 return fSizeInBytes; 108 return fSizeInBytes;
109 } 109 }
110 }; 110 };
111 111
112 class SkNativeParsedPDF; 112 class SkPdfNativeDoc;
113 const unsigned char* nextObject(int level, const unsigned char* start, const uns igned char* end, SkPdfObject* token, SkPdfAllocator* allocator, SkNativeParsedPD F* doc); 113 const unsigned char* nextObject(int level, const unsigned char* start, const uns igned char* end, SkPdfNativeObject* token, SkPdfAllocator* allocator, SkPdfNativ eDoc* doc);
114 114
115 enum SkPdfTokenType { 115 enum SkPdfTokenType {
116 kKeyword_TokenType, 116 kKeyword_TokenType,
117 kObject_TokenType, 117 kObject_TokenType,
118 }; 118 };
119 119
120 struct PdfToken { 120 struct PdfToken {
121 const char* fKeyword; 121 const char* fKeyword;
122 size_t fKeywordLength; 122 size_t fKeywordLength;
123 SkPdfObject* fObject; 123 SkPdfNativeObject* fObject;
124 SkPdfTokenType fType; 124 SkPdfTokenType fType;
125 125
126 PdfToken() : fKeyword(NULL), fKeywordLength(0), fObject(NULL) {} 126 PdfToken() : fKeyword(NULL), fKeywordLength(0), fObject(NULL) {}
127 }; 127 };
128 128
129 class SkPdfNativeTokenizer { 129 class SkPdfNativeTokenizer {
130 public: 130 public:
131 SkPdfNativeTokenizer(SkPdfObject* objWithStream, const SkPdfMapper* mapper, SkPdfAllocator* allocator, SkNativeParsedPDF* doc); 131 SkPdfNativeTokenizer(SkPdfNativeObject* objWithStream, const SkPdfMapper* ma pper, SkPdfAllocator* allocator, SkPdfNativeDoc* doc);
132 SkPdfNativeTokenizer(const unsigned char* buffer, int len, const SkPdfMapper * mapper, SkPdfAllocator* allocator, SkNativeParsedPDF* doc); 132 SkPdfNativeTokenizer(const unsigned char* buffer, int len, const SkPdfMapper * mapper, SkPdfAllocator* allocator, SkPdfNativeDoc* doc);
133 133
134 virtual ~SkPdfNativeTokenizer(); 134 virtual ~SkPdfNativeTokenizer();
135 135
136 bool readToken(PdfToken* token); 136 bool readToken(PdfToken* token);
137 bool readTokenCore(PdfToken* token); 137 bool readTokenCore(PdfToken* token);
138 void PutBack(PdfToken token); 138 void PutBack(PdfToken token);
139 SkPdfImageDictionary* readInlineImage(); 139 SkPdfImageDictionary* readInlineImage();
140 140
141 private: 141 private:
142 SkNativeParsedPDF* fDoc; 142 SkPdfNativeDoc* fDoc;
143 const SkPdfMapper* fMapper; 143 const SkPdfMapper* fMapper;
144 SkPdfAllocator* fAllocator; 144 SkPdfAllocator* fAllocator;
145 145
146 const unsigned char* fUncompressedStreamStart; 146 const unsigned char* fUncompressedStreamStart;
147 const unsigned char* fUncompressedStream; 147 const unsigned char* fUncompressedStream;
148 const unsigned char* fUncompressedStreamEnd; 148 const unsigned char* fUncompressedStreamEnd;
149 149
150 bool fEmpty; 150 bool fEmpty;
151 bool fHasPutBack; 151 bool fHasPutBack;
152 PdfToken fPutBack; 152 PdfToken fPutBack;
153 }; 153 };
154 154
155 #endif // EXPERIMENTAL_PDFVIEWER_PDFPARSER_NATIVE_SKPDFNATIVETOKENIZER_H_ 155 #endif // EXPERIMENTAL_PDFVIEWER_PDFPARSER_NATIVE_SKPDFNATIVETOKENIZER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698