/* * 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