SkPdfReporter.h revision e50d9a1fcd9c4298079ff54f9a40c9708d30f8c6
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
9#ifndef SkPdfReporter_DEFINED
10#define SkPdfReporter_DEFINED
11
12#include "SkPdfConfig.h"
13
14class SkPdfNativeObject;
15class SkPdfContext;
16
17// TODO(edisonn): ability to turn on asserts for known good files
18
19enum SkPdfIssueSeverity {
20    kInfo_SkPdfIssueSeverity,
21    kCodeWarning_SkPdfIssueSeverity, // e.g. like NYI, PDF file is Ok.
22    kWarning_SkPdfIssueSeverity,
23    kIgnoreError_SkPdfIssueSeverity,
24    kError_SkPdfIssueSeverity,
25    kFatalError_SkPdfIssueSeverity,
26
27    _kCount__SkPdfIssueSeverity
28};
29
30enum SkPdfIssue {
31    kNoIssue_SkPdfIssue,
32
33    kNullObject_SkPdfIssue,
34    kUnexpectedArraySize_SkPdfIssue,
35    kMissingEncoding_SkPdfIssue,
36    kNYI_SkPdfIssue,
37    kIncostistentSizes_SkPdfIssue,
38    kMissingRequiredKey_SkPdfIssue,
39    kRecursiveReferencing_SkPdfIssue,
40    kStackNestingOverflow_SkPdfIssue,
41    kStackOverflow_SkPdfIssue,
42    kIncositentSyntax_SkPdfIssue,
43    kMissingFont_SkPdfIssue,
44    kInvalidFont_SkPdfIssue,
45    kMissingBT_SkPdfIssue,
46    kOutOfRange_SkPdfIssue,
47    kUnknownBlendMode_SkPdfIssue,
48    kMissingExtGState_SkPdfIssue,
49    kMissingXObject_SkPdfIssue,
50    kReadStreamError_SkPdfIssue,
51    kMissingToken_SkPdfIssue,
52    kBadReference_SkPdfIssue,
53    kNoFlateLibrary_SkPdfIssue,
54    kBadStream_SkPdfIssue,
55
56    _kCount__SkPdfIssue
57};
58
59#ifdef PDF_REPORT
60
61void SkPdfReportIf(bool report,
62                   SkPdfIssueSeverity sev, SkPdfIssue issue,
63                   const char* context,
64                   const SkPdfNativeObject* obj,
65                   SkPdfContext* pdfContext);
66void SkPdfReport(SkPdfIssueSeverity sev, SkPdfIssue issue,
67                 const char* context,
68                 const SkPdfNativeObject* obj,
69                 SkPdfContext* pdfContext);
70void SkPdfReportUnexpectedType(SkPdfIssueSeverity sev,
71                               const char* context,
72                               const SkPdfNativeObject* obj, int anyOfTypes,
73                               SkPdfContext* pdfContext);
74#define SkPdfREPORTCODE(code) code
75
76#else  // !PDF_REPORT
77
78#define SkPdfReportIf(a,b,c,d,e,f)
79#define SkPdfReport(a,b,c,d,e)
80#define SkPdfReportUnexpectedType(a,b,c,d,e)
81#define SkPdfREPORTCODE(code)
82
83#endif  // PDF_REPORT
84
85#endif   // SkPdfReporter_DEFINED
86