|
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 SkError_DEFINED |
|
9 #define SkError_DEFINED |
|
10 |
|
11 |
|
12 /** \file SkError.h |
|
13 */ |
|
14 |
|
15 enum SkError { |
|
16 /** All is well |
|
17 */ |
|
18 kNoError_SkError=0, |
|
19 |
|
20 /** User argument passed to Skia function was invalid: NULL when that’s |
|
21 * not allowed, out of numeric range, bad enum, or violating some |
|
22 * other general precondition. |
|
23 */ |
|
24 kInvalidArgument_SkError, |
|
25 |
|
26 /** User tried to perform some operation in a state when the operation |
|
27 * was not legal, or the operands make no sense (e.g., asking for |
|
28 * pixels from an SkPictureCanvas). Other examples might be |
|
29 * inset()’ing a rectangle to make it degenerate (negative width/height). |
|
30 */ |
|
31 kInvalidOperation_SkError, |
|
32 |
|
33 /** Probably not needed right now, but in the future we could have opaque |
|
34 * handles for SkPictures floating around, and it would be a good idea |
|
35 * to anticipate this kind of issue. |
|
36 */ |
|
37 kInvalidHandle_SkError, |
|
38 |
|
39 /** This is probably not possible because paint surely has defaults for |
|
40 * everything, but perhaps a paint can get into a bad state somehow. |
|
41 */ |
|
42 kInvalidPaint_SkError, |
|
43 |
|
44 /** Skia was unable to allocate memory to perform some task. |
|
45 */ |
|
46 kOutOfMemory_SkError, |
|
47 |
|
48 /** Skia failed while trying to consume some external resource. |
|
49 */ |
|
50 kParseError_SkError, |
|
51 |
|
52 /** Something went wrong internally; could be resource exhaustion but |
|
53 * will often be a bug. |
|
54 */ |
|
55 kInternalError_SkError |
|
56 }; |
|
57 |
|
58 /** Return the current per-thread error code. Error codes are "sticky"; they |
|
59 * are not not reset by subsequent successful operations. |
|
60 */ |
|
61 SkError SkGetLastError(); |
|
62 |
|
63 /** Clear the current per-thread error code back to kNoError_SkError. |
|
64 */ |
|
65 void SkClearLastError(); |
|
66 |
|
67 /** Type for callback functions to be invoked whenever an error is registered. |
|
68 * Callback functions take the error code being set, as well as a context |
|
69 * argument that is provided when the callback is registered. |
|
70 */ |
|
71 typedef void (*SkErrorCallbackFunction)(SkError, void *); |
|
72 |
|
73 /** Set the current per-thread error callback. |
|
74 * |
|
75 * @param cb The callback function to be invoked. Passing NULL |
|
76 * for cb will revert to the default error callback which |
|
77 * does nothing on release builds, but on debug builds will |
|
78 * print an informative error message to the screen. |
|
79 * @param context An arbitrary pointer that will be passed to |
|
80 * the provided callback function. |
|
81 */ |
|
82 void SkSetErrorCallback(SkErrorCallbackFunction cb, void *context); |
|
83 |
|
84 /** Get a human-readable description of the last (per-thread) error that |
|
85 * occurred. The returned error message will include not only a human |
|
86 * readable version of the error code, but also information about the |
|
87 * conditions that led to the error itself. |
|
88 */ |
|
89 const char *SkGetLastErrorString(); |
|
90 |
|
91 #endif /* SkError_DEFINED */ |