File size: 2,764 Bytes
41f85e5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
/*
 * Copyright (c) 2023, Shukant Pal and Contributors
 * SPDX-License-Identifier: Apache-2.0
 */

#include <ktx.h>
#include "ktx_texture.h"
#include <stddef.h>
#include <stdio.h>

ktxTextureMixed PY_ktxTexture_CreateFromNamedFile(const char* const filename, ktx_uint32_t createFlags)
{
    ktxTextureMixed mixed;
    mixed.error = ktxTexture_CreateFromNamedFile(filename, createFlags, &mixed.texture);
    return mixed;
}

ktxWriteToMemory PY_ktxTexture_WriteToMemory(ktxTexture *texture)
{
    ktx_uint8_t *ppDstBytes = NULL;
    ktx_size_t pSize = 0;
    KTX_error_code error = ktxTexture_WriteToMemory(texture, &ppDstBytes, &pSize);

    return (ktxWriteToMemory) {
        .bytes = ppDstBytes,
        .size = pSize,
        .error = error
    };
}

ktxImageOffset PY_ktxTexture_GetImageOffset(ktxTexture *texture,
                                            ktx_uint32_t level,
                                            ktx_uint32_t layer,
                                            ktx_uint32_t faceSlice)
{
    ktxImageOffset result;

    result.error = ktxTexture_GetImageOffset(texture, level, layer, faceSlice, &result.offset);

    return result;
}

ktxWriteToMemory PY_ktxHashList_FindValue(ktxHashList *list, const char *key)
{
    unsigned int valueLen = 0;
    void *pValue = NULL;
    KTX_error_code err = ktxHashList_FindValue(list, key, &valueLen, &pValue);

    return (ktxWriteToMemory) {
        .bytes = pValue,
        .size = valueLen,
        .error = err
    };
}

ktxWriteToMemory PY_ktxHashListEntry_GetKey(ktxHashListEntry *entry)
{
    unsigned int keyLen = 0;
    char *pKey = NULL;
    KTX_error_code err = ktxHashListEntry_GetKey(entry, &keyLen, &pKey);

    return (ktxWriteToMemory) {
        .bytes = pKey,
        .size = keyLen,
        .error = err
    };
}

ktxWriteToMemory PY_ktxHashListEntry_GetValue(ktxHashListEntry *entry)
{
    unsigned int valueLen = 0;
    void *pValue = NULL;
    KTX_error_code err = ktxHashListEntry_GetValue(entry, &valueLen, &pValue);

    return (ktxWriteToMemory) {
        .bytes = pValue,
        .size = valueLen,
        .error = err
    };
}

KTX_IMPL(class_id, classId);
KTX_IMPL(ktx_bool_t, isArray);
KTX_IMPL(ktx_bool_t, isCompressed);
KTX_IMPL(ktx_bool_t, isCubemap);
KTX_IMPL(ktx_bool_t, generateMipmaps);
KTX_IMPL(ktx_uint32_t, baseWidth);
KTX_IMPL(ktx_uint32_t, baseHeight);
KTX_IMPL(ktx_uint32_t, baseDepth);
KTX_IMPL(ktx_uint32_t, numDimensions);
KTX_IMPL(ktx_uint32_t, numLevels);
KTX_IMPL(ktx_uint32_t, numFaces);
KTX_IMPL(ktx_uint32_t, kvDataLen);
KTX_IMPL(ktx_uint8_t *, kvData);

ktxHashList *PY_ktxTexture_get_kvDataHead(ktxTexture *texture)
{
    return &texture->kvDataHead;
}

ktxHashListEntry *PY_ktxHashList_get_listHead(ktxHashList *list)
{
    return *list;
}