1 | /*****************************************************************************/ |
2 | // Copyright 2006-2007 Adobe Systems Incorporated |
3 | // All Rights Reserved. |
4 | // |
5 | // NOTICE: Adobe permits you to use, modify, and distribute this file in |
6 | // accordance with the terms of the Adobe license agreement accompanying it. |
7 | /*****************************************************************************/ |
8 | |
9 | /* $Id: //mondo/dng_sdk_1_4/dng_sdk/source/dng_exceptions.cpp#2 $ */ |
10 | /* $DateTime: 2012/06/06 12:08:58 $ */ |
11 | /* $Change: 833617 $ */ |
12 | /* $Author: tknoll $ */ |
13 | |
14 | /*****************************************************************************/ |
15 | |
16 | #include "dng_exceptions.h" |
17 | |
18 | #include "dng_flags.h" |
19 | #include "dng_globals.h" |
20 | |
21 | /*****************************************************************************/ |
22 | |
23 | #ifndef qDNGReportErrors |
24 | // assuming this isn't enable on Win, because it's using printf, but an app can redirect that to console |
25 | #define qDNGReportErrors ((qDNGDebug && qMacOS) || qDNGValidate) |
26 | #endif |
27 | |
28 | /*****************************************************************************/ |
29 | |
30 | void ReportWarning (const char *message, |
31 | const char *sub_message) |
32 | { |
33 | |
34 | |
35 | #if qDNGReportErrors |
36 | |
37 | if (sub_message) |
38 | fprintf (stderr, "*** Warning: %s (%s) ***\n" , message, sub_message); |
39 | else |
40 | fprintf (stderr, "*** Warning: %s ***\n" , message); |
41 | |
42 | #else |
43 | |
44 | (void) message; |
45 | (void) sub_message; |
46 | |
47 | #endif |
48 | |
49 | } |
50 | |
51 | /*****************************************************************************/ |
52 | |
53 | void ReportError (const char *message, |
54 | const char *sub_message) |
55 | { |
56 | |
57 | #if qDNGReportErrors |
58 | |
59 | if (sub_message) |
60 | fprintf (stderr, "*** Error: %s (%s) ***\n" , message, sub_message); |
61 | else |
62 | fprintf (stderr, "*** Error: %s ***\n" , message); |
63 | |
64 | #else |
65 | |
66 | (void) message; |
67 | (void) sub_message; |
68 | |
69 | #endif |
70 | |
71 | } |
72 | |
73 | /*****************************************************************************/ |
74 | |
75 | void Throw_dng_error (dng_error_code err, |
76 | const char *message, |
77 | const char *sub_message, |
78 | bool silent) |
79 | { |
80 | |
81 | #if qDNGReportErrors |
82 | |
83 | { |
84 | |
85 | if (!message) |
86 | { |
87 | |
88 | switch (err) |
89 | { |
90 | |
91 | case dng_error_none: |
92 | case dng_error_silent: |
93 | case dng_error_user_canceled: |
94 | { |
95 | break; |
96 | } |
97 | |
98 | case dng_error_not_yet_implemented: |
99 | { |
100 | message = "Not yet implemented" ; |
101 | break; |
102 | } |
103 | |
104 | case dng_error_host_insufficient: |
105 | { |
106 | message = "Host insufficient" ; |
107 | break; |
108 | } |
109 | |
110 | case dng_error_memory: |
111 | { |
112 | message = "Unable to allocate memory" ; |
113 | break; |
114 | } |
115 | |
116 | case dng_error_bad_format: |
117 | { |
118 | message = "File format is invalid" ; |
119 | break; |
120 | } |
121 | |
122 | case dng_error_matrix_math: |
123 | { |
124 | message = "Matrix math error" ; |
125 | break; |
126 | } |
127 | |
128 | case dng_error_open_file: |
129 | { |
130 | message = "Unable to open file" ; |
131 | break; |
132 | } |
133 | |
134 | case dng_error_read_file: |
135 | { |
136 | message = "File read error" ; |
137 | break; |
138 | } |
139 | |
140 | case dng_error_write_file: |
141 | { |
142 | message = "File write error" ; |
143 | break; |
144 | } |
145 | |
146 | case dng_error_end_of_file: |
147 | { |
148 | message = "Unexpected end-of-file" ; |
149 | break; |
150 | } |
151 | |
152 | case dng_error_file_is_damaged: |
153 | { |
154 | message = "File is damaged" ; |
155 | break; |
156 | } |
157 | |
158 | case dng_error_image_too_big_dng: |
159 | { |
160 | message = "Image is too big to save as DNG" ; |
161 | break; |
162 | } |
163 | |
164 | case dng_error_image_too_big_tiff: |
165 | { |
166 | message = "Image is too big to save as TIFF" ; |
167 | break; |
168 | } |
169 | |
170 | case dng_error_unsupported_dng: |
171 | { |
172 | message = "DNG version is unsupported" ; |
173 | break; |
174 | } |
175 | |
176 | default: |
177 | { |
178 | message = "Unknown error" ; |
179 | break; |
180 | } |
181 | |
182 | } |
183 | |
184 | } |
185 | |
186 | if (message && !silent) |
187 | { |
188 | ReportError (message, sub_message); |
189 | } |
190 | |
191 | } |
192 | |
193 | #else |
194 | |
195 | (void) message; |
196 | (void) sub_message; |
197 | (void) silent; |
198 | |
199 | #endif |
200 | |
201 | throw dng_exception (err); |
202 | |
203 | } |
204 | |
205 | /*****************************************************************************/ |
206 | |