1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
/* -*- 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";
}
}