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