Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

KTX read-only library #324

Merged
merged 7 commits into from
Oct 13, 2020
2 changes: 1 addition & 1 deletion BUILDING.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ This creates the `libktx` library and the command line tools. To create the comp
cmake . -B build -DKTX_FEATURE_LOADTEST_APPS=ON -DKTX_FEATURE_DOC=ON
```

If you need the library to be static, enable the `KTX_FEATURE_FORCE_STATIC` setting.
If you need the library to be static, enable the `KTX_FEATURE_STATIC_LIBRARY` setting (always enabled on iOS and Emscripten).

Building
--------
Expand Down
4 changes: 2 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ include(cmake/xcode.cmake)
CMAKE_DEPENDENT_OPTION(KTX_FEATURE_TOOLS "Create KTX tools" ON "NOT IOS;NOT ANDROID;NOT EMSCRIPTEN" OFF)
option( KTX_FEATURE_DOC "Create KTX documentation" OFF )
option( KTX_FEATURE_LOADTEST_APPS "Create load tests apps that load and display various KTX textures" OFF )
option( KTX_FEATURE_FORCE_STATIC "Always create static libraries" OFF )
CMAKE_DEPENDENT_OPTION(KTX_FEATURE_STATIC_LIBRARY "Create static libraries (shared otherwise)" OFF "NOT IOS;NOT EMSCRIPTEN" ON)
MarkCallow marked this conversation as resolved.
Show resolved Hide resolved


set(VULKAN_INSTALL_DIR "" CACHE PATH "Path to installation of Vulkan SDK (obtainable from https://vulkan.lunarg.com/sdk/home )")
Expand Down Expand Up @@ -77,7 +77,7 @@ if(NOT CMAKE_SIZEOF_VOID_P EQUAL 8 OR FORCE32)
set(bitness 32)
endif()

if(KTX_FEATURE_FORCE_STATIC OR EMSCRIPTEN OR IOS)
if(KTX_FEATURE_STATIC_LIBRARY)
set(LIB_TYPE STATIC)
else()
set(LIB_TYPE SHARED)
Expand Down
51 changes: 43 additions & 8 deletions lib/texture1.c
Original file line number Diff line number Diff line change
Expand Up @@ -1303,6 +1303,49 @@ ktxTexture1_NeedsTranscoding(ktxTexture1* This)
return KTX_FALSE;
}

#if !KTX_FEATURE_WRITE

/*
* Stubs for writer functions that return a proper error code
*/

KTX_error_code
ktxTexture1_SetImageFromMemory(ktxTexture1* This, ktx_uint32_t level,
ktx_uint32_t layer, ktx_uint32_t faceSlice,
const ktx_uint8_t* src, ktx_size_t srcSize)
{
return KTX_INVALID_OPERATION;
}

KTX_error_code
ktxTexture1_SetImageFromStdioStream(ktxTexture1* This, ktx_uint32_t level,
ktx_uint32_t layer, ktx_uint32_t faceSlice,
FILE* src, ktx_size_t srcSize)
{
return KTX_INVALID_OPERATION;
}

KTX_error_code
ktxTexture1_WriteToStdioStream(ktxTexture1* This, FILE* dstsstr)
{
return KTX_INVALID_OPERATION;
}

KTX_error_code
ktxTexture1_WriteToNamedFile(ktxTexture1* This, const char* const dstname)
{
return KTX_INVALID_OPERATION;
}

KTX_error_code
ktxTexture1_WriteToMemory(ktxTexture1* This,
ktx_uint8_t** ppDstBytes, ktx_size_t* pSize)
{
return KTX_INVALID_OPERATION;
}

#endif

MarkCallow marked this conversation as resolved.
Show resolved Hide resolved
/*
* Initialized here at the end to avoid the need for multiple declarations of
* these functions.
Expand All @@ -1323,19 +1366,11 @@ struct ktxTexture_vtbl ktxTexture1_vtbl = {
(PFNKTEXITERATELOADLEVELFACES)ktxTexture1_IterateLoadLevelFaces,
(PFNKTEXNEEDSTRANSCODING)ktxTexture1_NeedsTranscoding,
(PFNKTEXLOADIMAGEDATA)ktxTexture1_LoadImageData,
#if KTX_FEATURE_WRITE
(PFNKTEXSETIMAGEFROMMEMORY)ktxTexture1_SetImageFromMemory,
(PFNKTEXSETIMAGEFROMSTDIOSTREAM)ktxTexture1_SetImageFromStdioStream,
(PFNKTEXWRITETOSTDIOSTREAM)ktxTexture1_WriteToStdioStream,
(PFNKTEXWRITETONAMEDFILE)ktxTexture1_WriteToNamedFile,
(PFNKTEXWRITETOMEMORY)ktxTexture1_WriteToMemory,
#else
(PFNKTEXSETIMAGEFROMMEMORY)NULL,
(PFNKTEXSETIMAGEFROMSTDIOSTREAM)NULL,
(PFNKTEXWRITETOSTDIOSTREAM)NULL,
(PFNKTEXWRITETONAMEDFILE)NULL,
(PFNKTEXWRITETOMEMORY)NULL,
#endif
};
atteneder marked this conversation as resolved.
Show resolved Hide resolved

/** @} */
Expand Down
51 changes: 43 additions & 8 deletions lib/texture2.c
Original file line number Diff line number Diff line change
Expand Up @@ -2049,6 +2049,49 @@ ktxTexture2_inflateZstdInt(ktxTexture2* This, ktx_uint8_t* pDeflatedData,
return KTX_SUCCESS;
}

#if !KTX_FEATURE_WRITE

/*
* Stubs for writer functions that return a proper error code
*/

KTX_error_code
ktxTexture2_SetImageFromMemory(ktxTexture2* This, ktx_uint32_t level,
ktx_uint32_t layer, ktx_uint32_t faceSlice,
const ktx_uint8_t* src, ktx_size_t srcSize)
{
return KTX_INVALID_OPERATION;
}

KTX_error_code
ktxTexture2_SetImageFromStdioStream(ktxTexture2* This, ktx_uint32_t level,
ktx_uint32_t layer, ktx_uint32_t faceSlice,
FILE* src, ktx_size_t srcSize)
{
return KTX_INVALID_OPERATION;
}

KTX_error_code
ktxTexture2_WriteToStdioStream(ktxTexture2* This, FILE* dstsstr)
{
return KTX_INVALID_OPERATION;
}

KTX_error_code
ktxTexture2_WriteToNamedFile(ktxTexture2* This, const char* const dstname)
{
return KTX_INVALID_OPERATION;
}

KTX_error_code
ktxTexture2_WriteToMemory(ktxTexture2* This,
ktx_uint8_t** ppDstBytes, ktx_size_t* pSize)
{
return KTX_INVALID_OPERATION;
}

#endif

/*
* Initialized here at the end to avoid the need for multiple declarations of
* the virtual functions.
Expand All @@ -2069,19 +2112,11 @@ struct ktxTexture_vtbl ktxTexture2_vtbl = {
(PFNKTEXITERATELOADLEVELFACES)ktxTexture2_IterateLoadLevelFaces,
(PFNKTEXNEEDSTRANSCODING)ktxTexture2_NeedsTranscoding,
(PFNKTEXLOADIMAGEDATA)ktxTexture2_LoadImageData,
#if KTX_FEATURE_WRITE
(PFNKTEXSETIMAGEFROMMEMORY)ktxTexture2_SetImageFromMemory,
(PFNKTEXSETIMAGEFROMSTDIOSTREAM)ktxTexture2_SetImageFromStdioStream,
(PFNKTEXWRITETOSTDIOSTREAM)ktxTexture2_WriteToStdioStream,
(PFNKTEXWRITETONAMEDFILE)ktxTexture2_WriteToNamedFile,
(PFNKTEXWRITETOMEMORY)ktxTexture2_WriteToMemory,
#else
(PFNKTEXSETIMAGEFROMMEMORY)NULL,
(PFNKTEXSETIMAGEFROMSTDIOSTREAM)NULL,
(PFNKTEXWRITETOSTDIOSTREAM)NULL,
(PFNKTEXWRITETONAMEDFILE)NULL,
(PFNKTEXWRITETOMEMORY)NULL,
#endif
};
atteneder marked this conversation as resolved.
Show resolved Hide resolved

/** @} */
Expand Down