| /* |
| * 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 SkPdfReporter_DEFINED |
| #define SkPdfReporter_DEFINED |
| |
| #include "SkPdfConfig.h" |
| |
| class SkPdfNativeObject; |
| class SkPdfContext; |
| |
| // TODO(edisonn): ability to turn on asserts for known good files |
| |
| // Severity of the issue, if it something interesting info, the result of an NYI feature, |
| // sme ignorable defect in pdf or a major issue. |
| enum SkPdfIssueSeverity { |
| kInfo_SkPdfIssueSeverity, |
| kCodeWarning_SkPdfIssueSeverity, // e.g. like NYI, PDF file is Ok. |
| kWarning_SkPdfIssueSeverity, |
| kIgnoreError_SkPdfIssueSeverity, |
| kError_SkPdfIssueSeverity, |
| kFatalError_SkPdfIssueSeverity, |
| |
| _kCount__SkPdfIssueSeverity |
| }; |
| |
| // The type of the issue. |
| enum SkPdfIssue { |
| kNoIssue_SkPdfIssue, |
| |
| kNullObject_SkPdfIssue, |
| kUnusedObject_SkPdfIssue, |
| kUnexpectedArraySize_SkPdfIssue, |
| kMissingEncoding_SkPdfIssue, |
| kNYI_SkPdfIssue, |
| kIncostistentSizes_SkPdfIssue, |
| kMissingRequiredKey_SkPdfIssue, |
| kRecursiveReferencing_SkPdfIssue, |
| kStackNestingOverflow_SkPdfIssue, |
| kStackOverflow_SkPdfIssue, |
| kIncositentSyntax_SkPdfIssue, |
| kMissingFont_SkPdfIssue, |
| kInvalidFont_SkPdfIssue, |
| kMissingBT_SkPdfIssue, |
| kOutOfRange_SkPdfIssue, |
| kUnknownBlendMode_SkPdfIssue, |
| kMissingExtGState_SkPdfIssue, |
| kMissingXObject_SkPdfIssue, |
| kReadStreamError_SkPdfIssue, |
| kMissingToken_SkPdfIssue, |
| kBadReference_SkPdfIssue, |
| kNoFlateLibrary_SkPdfIssue, |
| kBadStream_SkPdfIssue, |
| |
| _kCount__SkPdfIssue |
| }; |
| |
| #ifdef PDF_REPORT |
| |
| // Calls SkPdfReport(...) if report is true. |
| void SkPdfReportIf(bool report, |
| SkPdfIssueSeverity sev, SkPdfIssue issue, |
| const char* context, |
| const SkPdfNativeObject* obj, |
| SkPdfContext* pdfContext); |
| |
| // Reports an issue, along with information where it happened, for example obj can be used to report |
| // where exactly in th pdf there is a corruption |
| // TODO(edisonn): add ability to report the callstack |
| void SkPdfReport(SkPdfIssueSeverity sev, SkPdfIssue issue, |
| const char* context, |
| const SkPdfNativeObject* obj, |
| SkPdfContext* pdfContext); |
| |
| // Reports that an object does not have the expected type |
| // TODO(edisonn): replace with SkPdfReportIfUnexpectedType() to simplify the callers? |
| // TODO(edisonn): pass the keyword/operator too which triggers the issue. |
| void SkPdfReportUnexpectedType(SkPdfIssueSeverity sev, |
| const char* context, |
| const SkPdfNativeObject* obj, int anyOfTypes, |
| SkPdfContext* pdfContext); |
| |
| // Code only in builds with reporting turn on. |
| #define SkPdfREPORTCODE(code) code |
| |
| #else // !PDF_REPORT |
| |
| #define SkPdfReportIf(a,b,c,d,e,f) |
| #define SkPdfReport(a,b,c,d,e) |
| #define SkPdfReportUnexpectedType(a,b,c,d,e) |
| #define SkPdfREPORTCODE(code) |
| |
| #endif // PDF_REPORT |
| |
| #endif // SkPdfReporter_DEFINED |