Home | History | Annotate | Download | only in PdfViewer
      1 /*
      2  * Copyright 2013 Google Inc.
      3  *
      4  * Use of this source code is governed by a BSD-style license that can be
      5  * found in the LICENSE file.
      6  */
      7 
      8 #ifndef SkPdfConfig_DEFINED
      9 #define SkPdfConfig_DEFINED
     10 
     11 #include "stddef.h"
     12 class SkPdfNativeObject;
     13 
     14 // shows what objects have not been used in rendering. can be used to track what features we might
     15 // have not implemented, or where we implemented only the default behaivour
     16 //#define PDF_TRACK_OBJECT_USAGE
     17 
     18 // tracks the position in the stream, it can be used to show where exactly the errors happened
     19 //#define PDF_TRACK_STREAM_OFFSETS
     20 
     21 // reports issues, warning, NYI, errors, ...
     22 // enable PDF_TRACK_STREAM_OFFSETS to also have the offset in the stream where the error happened
     23 //#define PDF_REPORT
     24 
     25 // At various points in code we show the value of important variables with this flag
     26 //#define PDF_TRACE
     27 
     28 // displays the result of each read token, individual result
     29 //#define PDF_TRACE_READ_TOKEN
     30 
     31 // Every drawtext draws before a rectangle, in this way we see the one that might have failed
     32 //#define PDF_TRACE_DRAWTEXT
     33 
     34 // For each render operations, it will dump the canvas in a png
     35 //#define PDF_TRACE_DIFF_IN_PNG
     36 
     37 // Does not clip at all, can be used in debugging issues
     38 //#define PDF_DEBUG_NO_CLIPING
     39 
     40 // Does not click the page, use is with 3x
     41 //#define PDF_DEBUG_NO_PAGE_CLIPING
     42 
     43 // render the page 3X bigger (with content in center) - used to make sure we don't mess up
     44 // positioning
     45 // like a tick tac toe board, only the center one has content, all the rest of them have to be clean
     46 //#define PDF_DEBUG_3X
     47 
     48 
     49 // TODO(edisonn): pass a flag to say how it was used? e.g. asked the type? Obtained value?
     50 // Implement it when it will be needed the first time to fix some bug.
     51 #ifdef PDF_TRACK_OBJECT_USAGE
     52 #define SkPdfMarkObjectUsed() fUsed = true
     53 #else
     54 #define SkPdfMarkObjectUsed()
     55 #endif   // PDF_TRACK_OBJECT_USAGE
     56 
     57 #ifdef PDF_TRACK_OBJECT_USAGE
     58 #define SkPdfMarkObjectUnused() fUsed = false
     59 #else
     60 #define SkPdfMarkObjectUnused()
     61 #endif   // PDF_TRACK_OBJECT_USAGE
     62 
     63 #ifdef PDF_TRACK_STREAM_OFFSETS
     64 #define TRACK_OBJECT_SRC(a)
     65 #define STORE_TRACK_PARAMETERS(obj) (obj)->fStreamId = streamId;\
     66                                     (obj)->fOffsetStart = offsetStart;\
     67                                     (obj)->fOffsetEnd = offsetEnd;
     68 #define STORE_TRACK_PARAMETER_OFFSET_END(obj,offsetEnd) (obj)->fOffsetEnd = (offsetEnd)-streamStart;
     69 #else
     70 #define TRACK_OBJECT_SRC(a)
     71 #define STORE_TRACK_PARAMETERS(obj)
     72 #define STORE_TRACK_PARAMETER_OFFSET_END(obj,offsetEnd)
     73 #endif   //PDF_TRACK_STREAM_OFFSETS
     74 
     75 // TODO(edisonn): move it somewhere else?
     76 struct SkPdfInputStream {
     77 #ifdef PDF_TRACK_STREAM_OFFSETS
     78     // no parent object -> original file to be rendered
     79     // no parent file -> stream object
     80     // both -> external stream object
     81     int fParentFileID;
     82     const SkPdfNativeObject* fParentObject;
     83 
     84     size_t fDelta;  // delta in parent stream
     85     const unsigned char* fStart;
     86 #endif  //  PDF_TRACK_STREAM_OFFSETS
     87 
     88     const unsigned char* fEnd;
     89 };
     90 
     91 struct SkPdfInputStreamLocation {
     92     SkPdfInputStream fInputStream;
     93     const unsigned char* fNow;
     94 };
     95 
     96 #ifdef PDF_TRACK_STREAM_OFFSETS
     97 struct SkPdfInputStreamRange {
     98     SkPdfInputStream fInputStream;
     99     const unsigned char* fRangeStart;
    100     const unsigned char* fRangeEnd;
    101 };
    102 #endif  //  PDF_TRACK_STREAM_OFFSETS
    103 
    104 
    105 #endif  // SkPdfConfig_DEFINED
    106