File indexing completed on 2024-06-09 04:27:34

0001 /*
0002  *  SPDX-FileCopyrightText: 2018 Dirk Farin <farin@struktur.de>
0003  *
0004  *  SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 
0007 #include "HeifError.h"
0008 
0009 
0010 KisImportExportErrorCode setHeifError(KisDocument* document,
0011                                                      heif::Error error)
0012 {
0013   switch (error.get_code()) {
0014   case heif_error_Ok:
0015         return ImportExportCodes::OK;
0016 
0017   case heif_error_Input_does_not_exist:
0018     // this should never happen because we do not read from file names
0019     KIS_ASSERT_RECOVER_RETURN_VALUE(true, ImportExportCodes::InternalError);
0020     return ImportExportCodes::InternalError;
0021 
0022   case heif_error_Invalid_input:
0023   case heif_error_Decoder_plugin_error:
0024     return ImportExportCodes::FileFormatIncorrect;
0025 
0026   case heif_error_Unsupported_filetype:
0027   case heif_error_Unsupported_feature:
0028     return ImportExportCodes::FormatFeaturesUnsupported;
0029 
0030   case heif_error_Usage_error:
0031   case heif_error_Encoder_plugin_error:
0032     // this should never happen if we use libheif in the correct way
0033       KIS_ASSERT_RECOVER_RETURN_VALUE(true, ImportExportCodes::InternalError);
0034       return ImportExportCodes::InternalError;
0035 
0036   case heif_error_Memory_allocation_error:
0037     document->setErrorMessage(i18n("Could not allocate memory."));
0038     return ImportExportCodes::InsufficientMemory;
0039 
0040   case heif_error_Encoding_error:
0041     document->setErrorMessage(i18n("Could not encode or write image."));
0042     return ImportExportCodes::NoAccessToWrite;
0043 
0044   case heif_error_Color_profile_does_not_exist:
0045       document->setErrorMessage(i18n("Color profile was not found in the document."));
0046       return ImportExportCodes::OK;
0047   default:
0048     // we only get here when we forgot to handle an error ID
0049     document->setErrorMessage(QString(i18n("Unknown error: %1")).arg(QString::fromStdString(error.get_message())));
0050     return ImportExportCodes::Failure;
0051   }
0052 }