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 
ReportWarning(const char * message,const char * sub_message)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 
ReportError(const char * message,const char * sub_message)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 
Throw_dng_error(dng_error_code err,const char * message,const char * sub_message,bool silent)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