/* -*- tab-width: 4; -*- */ /* vi: set sw=2 ts=4 expandtab: */ /* * Copyright 2010-2020 The Khronos Group Inc. * SPDX-License-Identifier: Apache-2.0 */ /** * @file strings.c * @~English * * @brief Functions to return a string corresponding to various enumerations. * * @author Mark Callow, HI Corporation */ #include "ktx.h" static const char* const errorStrings[] = { "Operation succeeded.", /* KTX_SUCCESS */ "File data is inconsistent with KTX spec.", /* KTX_FILE_DATA_ERROR */ "File is a pipe; seek operations not possible.", /* KTX_FILE_ISPIPE */ "File open failed.", /* KTX_FILE_OPEN_FAILED */ "Operation would exceed the max file size.", /* KTX_FILE_OVERFLOW */ "File read error.", /* KTX_FILE_READ_ERROR */ "File seek error.", /* KTX_FILE_SEEK_ERROR */ "File does not have enough data for request.", /* KTX_FILE_UNEXPECTED_EOF */ "File write error.", /* KTX_FILE_WRITE_ERROR */ "GL error occurred.", /* KTX_GL_ERROR */ "Operation not allowed in the current state.", /* KTX_INVALID_OPERATION */ "Invalid parameter value.", /* KTX_INVALID_VALUE */ "Key not found.", /* KTX_NOT_FOUND */ "Out of memory.", /* KTX_OUT_OF_MEMORY */ "Transcoding of block compressed texture failed.",/* KTX_TRANSCODE_FAILED */ "Not a KTX file.", /* KTX_UNKNOWN_FILE_FORMAT */ "Texture type not supported.", /* KTX_UNSUPPORTED_TEXTURE_TYPE */ "Feature not included in in-use library or not yet implemented.", /* KTX_UNSUPPORTED_FEATURE */ "Library dependency (OpenGL or Vulkan) not linked into application." /* KTX_LIBRARY_NOT_LINKED */ }; /* This will cause compilation to fail if number of messages and codes doesn't match */ typedef int errorStrings_SIZE_ASSERT[sizeof(errorStrings) / sizeof(char*) - 1 == KTX_ERROR_MAX_ENUM]; /** * @~English * @brief Return a string corresponding to a KTX error code. * * @param error the error code for which to return a string * * @return pointer to the message string. * * @internal Use UTF-8 for translated message strings. * * @author Mark Callow */ const char* ktxErrorString(KTX_error_code error) { if (error > KTX_ERROR_MAX_ENUM) return "Unrecognized error code"; return errorStrings[error]; } /** * @~English * @brief Return a string corresponding to a transcode format enumeration. * * @param format the transcode format for which to return a string. * * @return pointer to the message string. * * @internal Use UTF-8 for translated message strings. * * @author Mark Callow */ const char* ktxTranscodeFormatString(ktx_transcode_fmt_e format) { switch (format) { case KTX_TTF_ETC1_RGB: return "ETC1_RGB"; case KTX_TTF_ETC2_RGBA: return "ETC2_RGBA"; case KTX_TTF_BC1_RGB: return "BC1_RGB"; case KTX_TTF_BC3_RGBA: return "BC3_RGBA"; case KTX_TTF_BC4_R: return "BC4_R"; case KTX_TTF_BC5_RG: return "BC5_RG"; case KTX_TTF_BC7_RGBA: return "BC7_RGBA"; case KTX_TTF_PVRTC1_4_RGB: return "PVRTC1_4_RGB"; case KTX_TTF_PVRTC1_4_RGBA: return "PVRTC1_4_RGBA"; case KTX_TTF_ASTC_4x4_RGBA: return "ASTC_4x4_RGBA"; case KTX_TTF_RGBA32: return "RGBA32"; case KTX_TTF_RGB565: return "RGB565"; case KTX_TTF_BGR565: return "BGR565"; case KTX_TTF_RGBA4444: return "RGBA4444"; case KTX_TTF_PVRTC2_4_RGB: return "PVRTC2_4_RGB"; case KTX_TTF_PVRTC2_4_RGBA: return "PVRTC2_4_RGBA"; case KTX_TTF_ETC2_EAC_R11: return "ETC2_EAC_R11"; case KTX_TTF_ETC2_EAC_RG11: return "ETC2_EAC_RG11"; case KTX_TTF_ETC: return "ETC"; case KTX_TTF_BC1_OR_3: return "BC1 or BC3"; default: return "Unrecognized format"; } } /** * @~English * @brief Return a string corresponding to a supercompressionScheme enumeration. * * @param scheme the supercompression scheme for which to return a string. * * @return pointer to the message string. * * @internal Use UTF-8 for translated message strings. * * @author Mark Callow */ const char * ktxSupercompressionSchemeString(ktxSupercmpScheme scheme) { switch (scheme) { case KTX_SS_NONE: return "KTX_SS_NONE"; case KTX_SS_BASIS_LZ: return "KTX_SS_BASIS_LZ"; case KTX_SS_ZSTD: return "KTX_SS_ZSTD"; default: if (scheme < KTX_SS_BEGIN_VENDOR_RANGE || scheme >= KTX_SS_BEGIN_RESERVED) return "Invalid scheme value"; else return "Vendor scheme"; } }