/*****************************************************************************/
// Copyright 2006-2007 Adobe Systems Incorporated
// All Rights Reserved.
//
// NOTICE: Adobe permits you to use, modify, and distribute this file in
// accordance with the terms of the Adobe license agreement accompanying it.
/*****************************************************************************/
/* $Id: //mondo/dng_sdk_1_4/dng_sdk/source/dng_exceptions.cpp#2 $ */
/* $DateTime: 2012/06/06 12:08:58 $ */
/* $Change: 833617 $ */
/* $Author: tknoll $ */
/*****************************************************************************/
#include "dng_exceptions.h"
#include "dng_flags.h"
#include "dng_globals.h"
/*****************************************************************************/
#ifndef qDNGReportErrors
// assuming this isn't enable on Win, because it's using printf, but an app can redirect that to console
#define qDNGReportErrors ((qDNGDebug && qMacOS) || qDNGValidate)
#endif
/*****************************************************************************/
void ReportWarning (const char *message,
const char *sub_message)
{
#if qDNGReportErrors
if (sub_message)
fprintf (stderr, "*** Warning: %s (%s) ***\n", message, sub_message);
else
fprintf (stderr, "*** Warning: %s ***\n", message);
#else
(void) message;
(void) sub_message;
#endif
}
/*****************************************************************************/
void ReportError (const char *message,
const char *sub_message)
{
#if qDNGReportErrors
if (sub_message)
fprintf (stderr, "*** Error: %s (%s) ***\n", message, sub_message);
else
fprintf (stderr, "*** Error: %s ***\n", message);
#else
(void) message;
(void) sub_message;
#endif
}
/*****************************************************************************/
void Throw_dng_error (dng_error_code err,
const char *message,
const char *sub_message,
bool silent)
{
#if qDNGReportErrors
{
if (!message)
{
switch (err)
{
case dng_error_none:
case dng_error_silent:
case dng_error_user_canceled:
{
break;
}
case dng_error_not_yet_implemented:
{
message = "Not yet implemented";
break;
}
case dng_error_host_insufficient:
{
message = "Host insufficient";
break;
}
case dng_error_memory:
{
message = "Unable to allocate memory";
break;
}
case dng_error_bad_format:
{
message = "File format is invalid";
break;
}
case dng_error_matrix_math:
{
message = "Matrix math error";
break;
}
case dng_error_open_file:
{
message = "Unable to open file";
break;
}
case dng_error_read_file:
{
message = "File read error";
break;
}
case dng_error_write_file:
{
message = "File write error";
break;
}
case dng_error_end_of_file:
{
message = "Unexpected end-of-file";
break;
}
case dng_error_file_is_damaged:
{
message = "File is damaged";
break;
}
case dng_error_image_too_big_dng:
{
message = "Image is too big to save as DNG";
break;
}
case dng_error_image_too_big_tiff:
{
message = "Image is too big to save as TIFF";
break;
}
case dng_error_unsupported_dng:
{
message = "DNG version is unsupported";
break;
}
default:
{
message = "Unknown error";
break;
}
}
}
if (message && !silent)
{
ReportError (message, sub_message);
}
}
#else
(void) message;
(void) sub_message;
(void) silent;
#endif
throw dng_exception (err);
}
/*****************************************************************************/