e50d9a1fcd
Review URL: https://codereview.chromium.org/26912005 git-svn-id: http://skia.googlecode.com/svn/trunk@11716 2bbb7eff-a529-9590-31e7-b0007b416f81
106 lines
3.3 KiB
C++
106 lines
3.3 KiB
C++
/*
|
|
* 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 SkPdfConfig_DEFINED
|
|
#define SkPdfConfig_DEFINED
|
|
|
|
#include "stddef.h"
|
|
class SkPdfNativeObject;
|
|
|
|
// shows what objects have not been used in rendering. can be used to track what features we might
|
|
// have not implemented, or where we implemented only the default behaivour
|
|
//#define PDF_TRACK_OBJECT_USAGE
|
|
|
|
// tracks the position in the stream, it can be used to show where exactly the errors happened
|
|
//#define PDF_TRACK_STREAM_OFFSETS
|
|
|
|
// reports issues, warning, NYI, errors, ...
|
|
// enable PDF_TRACK_STREAM_OFFSETS to also have the offset in the stream where the error happened
|
|
//#define PDF_REPORT
|
|
|
|
// At various points in code we show the value of important variables with this flag
|
|
//#define PDF_TRACE
|
|
|
|
// displays the result of each read token, individual result
|
|
//#define PDF_TRACE_READ_TOKEN
|
|
|
|
// Every drawtext draws before a rectangle, in this way we see the one that might have failed
|
|
//#define PDF_TRACE_DRAWTEXT
|
|
|
|
// For each render operations, it will dump the canvas in a png
|
|
//#define PDF_TRACE_DIFF_IN_PNG
|
|
|
|
// Does not clip at all, can be used in debugging issues
|
|
//#define PDF_DEBUG_NO_CLIPING
|
|
|
|
// Does not click the page, use is with 3x
|
|
//#define PDF_DEBUG_NO_PAGE_CLIPING
|
|
|
|
// render the page 3X bigger (with content in center) - used to make sure we don't mess up
|
|
// positioning
|
|
// like a tick tac toe board, only the center one has content, all the rest of them have to be clean
|
|
//#define PDF_DEBUG_3X
|
|
|
|
|
|
// TODO(edisonn): pass a flag to say how it was used? e.g. asked the type? Obtained value?
|
|
// Implement it when it will be needed the first time to fix some bug.
|
|
#ifdef PDF_TRACK_OBJECT_USAGE
|
|
#define SkPdfMarkObjectUsed() fUsed = true
|
|
#else
|
|
#define SkPdfMarkObjectUsed()
|
|
#endif // PDF_TRACK_OBJECT_USAGE
|
|
|
|
#ifdef PDF_TRACK_OBJECT_USAGE
|
|
#define SkPdfMarkObjectUnused() fUsed = false
|
|
#else
|
|
#define SkPdfMarkObjectUnused()
|
|
#endif // PDF_TRACK_OBJECT_USAGE
|
|
|
|
#ifdef PDF_TRACK_STREAM_OFFSETS
|
|
#define TRACK_OBJECT_SRC(a)
|
|
#define STORE_TRACK_PARAMETERS(obj) (obj)->fStreamId = streamId;\
|
|
(obj)->fOffsetStart = offsetStart;\
|
|
(obj)->fOffsetEnd = offsetEnd;
|
|
#define STORE_TRACK_PARAMETER_OFFSET_END(obj,offsetEnd) (obj)->fOffsetEnd = (offsetEnd)-streamStart;
|
|
#else
|
|
#define TRACK_OBJECT_SRC(a)
|
|
#define STORE_TRACK_PARAMETERS(obj)
|
|
#define STORE_TRACK_PARAMETER_OFFSET_END(obj,offsetEnd)
|
|
#endif //PDF_TRACK_STREAM_OFFSETS
|
|
|
|
// TODO(edisonn): move it somewhere else?
|
|
struct SkPdfInputStream {
|
|
#ifdef PDF_TRACK_STREAM_OFFSETS
|
|
// no parent object -> original file to be rendered
|
|
// no parent file -> stream object
|
|
// both -> external stream object
|
|
int fParentFileID;
|
|
const SkPdfNativeObject* fParentObject;
|
|
|
|
size_t fDelta; // delta in parent stream
|
|
const unsigned char* fStart;
|
|
#endif // PDF_TRACK_STREAM_OFFSETS
|
|
|
|
const unsigned char* fEnd;
|
|
};
|
|
|
|
struct SkPdfInputStreamLocation {
|
|
SkPdfInputStream fInputStream;
|
|
const unsigned char* fNow;
|
|
};
|
|
|
|
#ifdef PDF_TRACK_STREAM_OFFSETS
|
|
struct SkPdfInputStreamRange {
|
|
SkPdfInputStream fInputStream;
|
|
const unsigned char* fRangeStart;
|
|
const unsigned char* fRangeEnd;
|
|
};
|
|
#endif // PDF_TRACK_STREAM_OFFSETS
|
|
|
|
|
|
#endif // SkPdfConfig_DEFINED
|