OLD | NEW |
| (Empty) |
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 | |
14 class SkPdfNativeObject; | |
15 class SkPdfContext; | |
16 | |
17 // TODO(edisonn): ability to turn on asserts for known good files | |
18 | |
19 // Severity of the issue, if it something interesting info, the result of an NYI
feature, | |
20 // sme ignorable defect in pdf or a major issue. | |
21 enum SkPdfIssueSeverity { | |
22 kInfo_SkPdfIssueSeverity, | |
23 kCodeWarning_SkPdfIssueSeverity, // e.g. like NYI, PDF file is Ok. | |
24 kWarning_SkPdfIssueSeverity, | |
25 kIgnoreError_SkPdfIssueSeverity, | |
26 kError_SkPdfIssueSeverity, | |
27 kFatalError_SkPdfIssueSeverity, | |
28 | |
29 _kCount__SkPdfIssueSeverity | |
30 }; | |
31 | |
32 // The type of the issue. | |
33 enum SkPdfIssue { | |
34 kNoIssue_SkPdfIssue, | |
35 | |
36 kNullObject_SkPdfIssue, | |
37 kUnusedObject_SkPdfIssue, | |
38 kUnexpectedArraySize_SkPdfIssue, | |
39 kMissingEncoding_SkPdfIssue, | |
40 kNYI_SkPdfIssue, | |
41 kIncostistentSizes_SkPdfIssue, | |
42 kMissingRequiredKey_SkPdfIssue, | |
43 kRecursiveReferencing_SkPdfIssue, | |
44 kStackNestingOverflow_SkPdfIssue, | |
45 kStackOverflow_SkPdfIssue, | |
46 kIncositentSyntax_SkPdfIssue, | |
47 kMissingFont_SkPdfIssue, | |
48 kInvalidFont_SkPdfIssue, | |
49 kMissingBT_SkPdfIssue, | |
50 kOutOfRange_SkPdfIssue, | |
51 kUnknownBlendMode_SkPdfIssue, | |
52 kMissingExtGState_SkPdfIssue, | |
53 kMissingXObject_SkPdfIssue, | |
54 kReadStreamError_SkPdfIssue, | |
55 kMissingToken_SkPdfIssue, | |
56 kBadReference_SkPdfIssue, | |
57 kNoFlateLibrary_SkPdfIssue, | |
58 kBadStream_SkPdfIssue, | |
59 | |
60 _kCount__SkPdfIssue | |
61 }; | |
62 | |
63 #ifdef PDF_REPORT | |
64 | |
65 // Calls SkPdfReport(...) if report is true. | |
66 void SkPdfReportIf(bool report, | |
67 SkPdfIssueSeverity sev, SkPdfIssue issue, | |
68 const char* context, | |
69 const SkPdfNativeObject* obj, | |
70 SkPdfContext* pdfContext); | |
71 | |
72 // Reports an issue, along with information where it happened, for example obj c
an be used to report | |
73 // where exactly in th pdf there is a corruption | |
74 // TODO(edisonn): add ability to report the callstack | |
75 void SkPdfReport(SkPdfIssueSeverity sev, SkPdfIssue issue, | |
76 const char* context, | |
77 const SkPdfNativeObject* obj, | |
78 SkPdfContext* pdfContext); | |
79 | |
80 // Reports that an object does not have the expected type | |
81 // TODO(edisonn): replace with SkPdfReportIfUnexpectedType() to simplify the cal
lers? | |
82 // TODO(edisonn): pass the keyword/operator too which triggers the issue. | |
83 void SkPdfReportUnexpectedType(SkPdfIssueSeverity sev, | |
84 const char* context, | |
85 const SkPdfNativeObject* obj, int anyOfTypes, | |
86 SkPdfContext* pdfContext); | |
87 | |
88 // Code only in builds with reporting turn on. | |
89 #define SkPdfREPORTCODE(code) code | |
90 | |
91 #else // !PDF_REPORT | |
92 | |
93 #define SkPdfReportIf(a,b,c,d,e,f) | |
94 #define SkPdfReport(a,b,c,d,e) | |
95 #define SkPdfReportUnexpectedType(a,b,c,d,e) | |
96 #define SkPdfREPORTCODE(code) | |
97 | |
98 #endif // PDF_REPORT | |
99 | |
100 #endif // SkPdfReporter_DEFINED | |
OLD | NEW |