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

Unified Diff: experimental/PdfViewer/pdfparser/native/SkPdfNativeTokenizer.h

Issue 1266093003: Remove experimental/PdfViewer (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: 2015-08-03 (Monday) 10:43:56 EDT Created 5 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 side-by-side diff with in-line comments
Download patch
Index: experimental/PdfViewer/pdfparser/native/SkPdfNativeTokenizer.h
diff --git a/experimental/PdfViewer/pdfparser/native/SkPdfNativeTokenizer.h b/experimental/PdfViewer/pdfparser/native/SkPdfNativeTokenizer.h
deleted file mode 100644
index 79b070f12ea0c182f58d0efd18a47a7e87490fa3..0000000000000000000000000000000000000000
--- a/experimental/PdfViewer/pdfparser/native/SkPdfNativeTokenizer.h
+++ /dev/null
@@ -1,201 +0,0 @@
-/*
- * 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 SkPdfNativeTokenizer_DEFINED
-#define SkPdfNativeTokenizer_DEFINED
-
-#include <math.h>
-#include <string.h>
-
-#include "SkPdfConfig.h"
-#include "SkTDArray.h"
-#include "SkTDict.h"
-
-// All these constants are defined by the PDF 1.4 Spec.
-
-class SkPdfDictionary;
-class SkPdfImageDictionary;
-class SkPdfNativeDoc;
-class SkPdfNativeObject;
-
-
-// White Spaces
-#define kNUL_PdfWhiteSpace '\x00'
-#define kHT_PdfWhiteSpace '\x09'
-#define kLF_PdfWhiteSpace '\x0A'
-#define kFF_PdfWhiteSpace '\x0C'
-#define kCR_PdfWhiteSpace '\x0D'
-#define kSP_PdfWhiteSpace '\x20'
-
-// PdfDelimiters
-#define kOpenedRoundBracket_PdfDelimiter '('
-#define kClosedRoundBracket_PdfDelimiter ')'
-#define kOpenedInequityBracket_PdfDelimiter '<'
-#define kClosedInequityBracket_PdfDelimiter '>'
-#define kOpenedSquareBracket_PdfDelimiter '['
-#define kClosedSquareBracket_PdfDelimiter ']'
-#define kOpenedCurlyBracket_PdfDelimiter '{'
-#define kClosedCurlyBracket_PdfDelimiter '}'
-#define kNamed_PdfDelimiter '/'
-#define kComment_PdfDelimiter '%'
-
-#define kEscape_PdfSpecial '\\'
-#define kBackspace_PdfSpecial '\x08'
-
-// TODO(edisonn): what is the faster way for compiler/machine type to evaluate this expressions?
-// we should evaluate all options. might be even different from one machine to another
-// 1) expand expression, let compiler optimize it
-// 2) binary search
-// 3) linear search in array
-// 4) vector (e.f. T type[256] .. return type[ch] ...
-// 5) manually build the expression with least number of operators, e.g. for consecutive
-// chars, we can use an binary equal ignoring last bit
-#define isPdfWhiteSpace(ch) (((ch)==kNUL_PdfWhiteSpace)|| \
- ((ch)==kHT_PdfWhiteSpace)|| \
- ((ch)==kLF_PdfWhiteSpace)|| \
- ((ch)==kFF_PdfWhiteSpace)|| \
- ((ch)==kCR_PdfWhiteSpace)|| \
- ((ch)==kSP_PdfWhiteSpace))
-
-#define isPdfEOL(ch) (((ch)==kLF_PdfWhiteSpace)||((ch)==kCR_PdfWhiteSpace))
-
-
-#define isPdfDelimiter(ch) (((ch)==kOpenedRoundBracket_PdfDelimiter)||\
- ((ch)==kClosedRoundBracket_PdfDelimiter)||\
- ((ch)==kOpenedInequityBracket_PdfDelimiter)||\
- ((ch)==kClosedInequityBracket_PdfDelimiter)||\
- ((ch)==kOpenedSquareBracket_PdfDelimiter)||\
- ((ch)==kClosedSquareBracket_PdfDelimiter)||\
- ((ch)==kOpenedCurlyBracket_PdfDelimiter)||\
- ((ch)==kClosedCurlyBracket_PdfDelimiter)||\
- ((ch)==kNamed_PdfDelimiter)||\
- ((ch)==kComment_PdfDelimiter))
-
-#define isPdfWhiteSpaceOrPdfDelimiter(ch) (isPdfWhiteSpace(ch)||isPdfDelimiter(ch))
-
-#define isPdfDigit(ch) ((ch)>='0'&&(ch)<='9')
-#define isPdfNumeric(ch) (isPdfDigit(ch)||(ch)=='+'||(ch)=='-'||(ch)=='.')
-
-const unsigned char* skipPdfWhiteSpaces(const unsigned char* buffer, const unsigned char* end);
-const unsigned char* endOfPdfToken(const unsigned char* start, const unsigned char* end);
-
-#define BUFFER_SIZE 1024
-
-/** \class SkPdfAllocator
- *
- * An allocator only allocates memory, and it deletes it all when the allocator is destroyed.
- * This strategy would allow us not to do any garbage collection while we parse and/or render
- * a pdf.
- *
- */
-class SkPdfAllocator {
-public:
- SkPdfAllocator() {
- fSizeInBytes = sizeof(*this);
- fCurrent = allocBlock();
- fCurrentUsed = 0;
- }
-
- ~SkPdfAllocator();
-
- // Allocates an object. It will be reset automatically when ~SkPdfAllocator() is called.
- SkPdfNativeObject* allocObject();
-
- // Allocates a buffer. It will be freed automatically when ~SkPdfAllocator() is called.
- void* alloc(size_t bytes) {
- void* data = malloc(bytes);
- fHandles.push(data);
- fSizeInBytes += bytes;
- return data;
- }
-
- // Returns the number of bytes used in this allocator.
- size_t bytesUsed() const {
- return fSizeInBytes;
- }
-
-private:
- SkTDArray<SkPdfNativeObject*> fHistory;
- SkTDArray<void*> fHandles;
- SkPdfNativeObject* fCurrent;
- int fCurrentUsed;
-
- SkPdfNativeObject* allocBlock();
- size_t fSizeInBytes;
-};
-
-// Type of a parsed token.
-enum SkPdfTokenType {
- kKeyword_TokenType,
- kObject_TokenType,
-};
-
-
-/** \struct PdfToken
- *
- * Stores the result of the parsing - a keyword or an object.
- *
- */
-struct PdfToken {
- const char* fKeyword;
- size_t fKeywordLength;
- SkPdfNativeObject* fObject;
- SkPdfTokenType fType;
-
- PdfToken() : fKeyword(NULL), fKeywordLength(0), fObject(NULL) {}
-};
-
-/** \class SkPdfNativeTokenizer
- *
- * Responsible to tokenize a stream in small tokens, eityh a keyword or an object.
- * A renderer can feed on the tokens and render a pdf.
- *
- */
-class SkPdfNativeTokenizer {
-public:
- SkPdfNativeTokenizer(SkPdfNativeObject* objWithStream,
- SkPdfAllocator* allocator, SkPdfNativeDoc* doc);
- SkPdfNativeTokenizer(const unsigned char* buffer, int len,
- SkPdfAllocator* allocator, SkPdfNativeDoc* doc);
-
- virtual ~SkPdfNativeTokenizer();
-
- // Reads one token. Returns false if there are no more tokens.
- // If writeDiff is true, and a token was read, create a PNG highlighting
- // the difference caused by this command in /tmp/log_step_by_step.
- // If PDF_TRACE_DIFF_IN_PNG is not defined, writeDiff does nothing.
- bool readToken(PdfToken* token, bool writeDiff = false);
-
- // Put back a token to be read in the nextToken read. Only one token is allowed to be put
- // back. Must not necesaarely be the last token read.
- void PutBack(PdfToken token);
-
- // Reads the inline image that is present in the stream. At this point we just consumed the ID
- // token already.
- SkPdfImageDictionary* readInlineImage();
-
-private:
- bool readTokenCore(PdfToken* token);
-
- SkPdfNativeDoc* fDoc;
- SkPdfAllocator* fAllocator;
-
- const unsigned char* fUncompressedStreamStart;
- const unsigned char* fUncompressedStream;
- const unsigned char* fUncompressedStreamEnd;
-
- bool fEmpty;
- bool fHasPutBack;
- PdfToken fPutBack;
-};
-
-const unsigned char* nextObject(const unsigned char* start, const unsigned char* end,
- SkPdfNativeObject* token,
- SkPdfAllocator* allocator,
- SkPdfNativeDoc* doc);
-
-#endif // SkPdfNativeTokenizer_DEFINED

Powered by Google App Engine
This is Rietveld 408576698