libragephoto: add opt-in C++17 support
- RagePhoto(A): add jpeg_view() function - CMakeLists.txt: move C++17 and WebAssembly stuff inside include files
This commit is contained in:
parent
4ca8ac9297
commit
3c433ca072
8 changed files with 102 additions and 35 deletions
|
@ -16,15 +16,12 @@
|
||||||
* responsible for anything with use of the software, you are self responsible.
|
* responsible for anything with use of the software, you are self responsible.
|
||||||
****************************************************************************]]
|
****************************************************************************]]
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 3.7)
|
cmake_minimum_required(VERSION 3.8)
|
||||||
project(ragephoto VERSION 0.3.0 LANGUAGES CXX)
|
project(ragephoto VERSION 0.3.0 LANGUAGES CXX)
|
||||||
include(GNUInstallDirs)
|
include(GNUInstallDirs)
|
||||||
|
|
||||||
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
|
||||||
set(CMAKE_CXX_STANDARD 11)
|
|
||||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
||||||
|
|
||||||
# RagePhoto CMake includes
|
# RagePhoto CMake includes
|
||||||
|
include(cmake/cxxstd.cmake)
|
||||||
include(cmake/unicode.cmake)
|
include(cmake/unicode.cmake)
|
||||||
|
|
||||||
# RagePhoto Top Level ON
|
# RagePhoto Top Level ON
|
||||||
|
@ -117,34 +114,7 @@ endif()
|
||||||
|
|
||||||
# RagePhoto WebAssembly Target
|
# RagePhoto WebAssembly Target
|
||||||
if (EMSCRIPTEN)
|
if (EMSCRIPTEN)
|
||||||
if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.13.0")
|
include(cmake/wasm.cmake)
|
||||||
add_executable(ragephoto-wasm ${RAGEPHOTO_HEADERS} ${RAGEPHOTO_SOURCES})
|
|
||||||
set_target_properties(ragephoto-wasm PROPERTIES
|
|
||||||
PREFIX "lib"
|
|
||||||
OUTPUT_NAME "ragephoto"
|
|
||||||
)
|
|
||||||
target_compile_definitions(ragephoto-wasm PRIVATE
|
|
||||||
LIBRAGEPHOTO_LIBRARY
|
|
||||||
LIBRAGEPHOTO_WASM
|
|
||||||
${LIBRAGEPHOTO_DEFINES}
|
|
||||||
)
|
|
||||||
target_link_options(ragephoto-wasm PRIVATE
|
|
||||||
"SHELL:-O3"
|
|
||||||
"SHELL:--no-entry"
|
|
||||||
"SHELL:-s ALLOW_MEMORY_GROWTH=1"
|
|
||||||
"SHELL:-s MODULARIZE=1"
|
|
||||||
"SHELL:-s WASM=1"
|
|
||||||
"SHELL:-s EXPORT_NAME=libragephotoModule"
|
|
||||||
"SHELL:-s EXPORTED_FUNCTIONS=_free,_malloc"
|
|
||||||
"SHELL:-s EXPORTED_RUNTIME_METHODS=ccall,cwrap"
|
|
||||||
)
|
|
||||||
target_include_directories(ragephoto-wasm PUBLIC
|
|
||||||
"${ragephoto_BINARY_DIR}/include"
|
|
||||||
"${ragephoto_SOURCE_DIR}/src"
|
|
||||||
)
|
|
||||||
else()
|
|
||||||
message(WARNING "A useable WebAssembly build needs at least CMake 3.13.0 or newer")
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# RagePhoto Documentation
|
# RagePhoto Documentation
|
||||||
|
|
21
cmake/cxxstd.cmake
Normal file
21
cmake/cxxstd.cmake
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
#[[**************************************************************************
|
||||||
|
* libragephoto RAGE Photo Parser
|
||||||
|
* Copyright (C) 2023 Syping
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without modification,
|
||||||
|
* are permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright notice,
|
||||||
|
* this list of conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
* this list of conditions and the following disclaimer in the documentation
|
||||||
|
* and/or other materials provided with the distribution.
|
||||||
|
*
|
||||||
|
* This software is provided as-is, no warranties are given to you, we are not
|
||||||
|
* responsible for anything with use of the software, you are self responsible.
|
||||||
|
****************************************************************************]]
|
||||||
|
|
||||||
|
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
||||||
|
set(CMAKE_CXX_STANDARD 11 CACHE STRING "libragephoto C++ standard")
|
||||||
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
@ -1,6 +1,6 @@
|
||||||
#[[**************************************************************************
|
#[[**************************************************************************
|
||||||
* libragephoto RAGE Photo Parser
|
* libragephoto RAGE Photo Parser
|
||||||
* Copyright (C) 2021-2022 Syping
|
* Copyright (C) 2021-2023 Syping
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without modification,
|
* Redistribution and use in source and binary forms, with or without modification,
|
||||||
* are permitted provided that the following conditions are met:
|
* are permitted provided that the following conditions are met:
|
||||||
|
|
46
cmake/wasm.cmake
Normal file
46
cmake/wasm.cmake
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
#[[**************************************************************************
|
||||||
|
* libragephoto RAGE Photo Parser
|
||||||
|
* Copyright (C) 2023 Syping
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without modification,
|
||||||
|
* are permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright notice,
|
||||||
|
* this list of conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
* this list of conditions and the following disclaimer in the documentation
|
||||||
|
* and/or other materials provided with the distribution.
|
||||||
|
*
|
||||||
|
* This software is provided as-is, no warranties are given to you, we are not
|
||||||
|
* responsible for anything with use of the software, you are self responsible.
|
||||||
|
****************************************************************************]]
|
||||||
|
|
||||||
|
if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.13.0")
|
||||||
|
add_executable(ragephoto-wasm ${RAGEPHOTO_HEADERS} ${RAGEPHOTO_SOURCES})
|
||||||
|
set_target_properties(ragephoto-wasm PROPERTIES
|
||||||
|
PREFIX "lib"
|
||||||
|
OUTPUT_NAME "ragephoto"
|
||||||
|
)
|
||||||
|
target_compile_definitions(ragephoto-wasm PRIVATE
|
||||||
|
LIBRAGEPHOTO_LIBRARY
|
||||||
|
LIBRAGEPHOTO_WASM
|
||||||
|
${LIBRAGEPHOTO_DEFINES}
|
||||||
|
)
|
||||||
|
target_link_options(ragephoto-wasm PRIVATE
|
||||||
|
"SHELL:-O3"
|
||||||
|
"SHELL:--no-entry"
|
||||||
|
"SHELL:-s ALLOW_MEMORY_GROWTH=1"
|
||||||
|
"SHELL:-s MODULARIZE=1"
|
||||||
|
"SHELL:-s WASM=1"
|
||||||
|
"SHELL:-s EXPORT_NAME=libragephotoModule"
|
||||||
|
"SHELL:-s EXPORTED_FUNCTIONS=_free,_malloc"
|
||||||
|
"SHELL:-s EXPORTED_RUNTIME_METHODS=ccall,cwrap"
|
||||||
|
)
|
||||||
|
target_include_directories(ragephoto-wasm PUBLIC
|
||||||
|
"${ragephoto_BINARY_DIR}/include"
|
||||||
|
"${ragephoto_SOURCE_DIR}/src"
|
||||||
|
)
|
||||||
|
else()
|
||||||
|
message(WARNING "A useable WebAssembly build needs at least CMake 3.13.0 or newer")
|
||||||
|
endif()
|
|
@ -602,6 +602,16 @@ const std::string RagePhoto::jpeg() const
|
||||||
return std::string();
|
return std::string();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if (RAGEPHOTO_CXX_STD >= 17) && (__cplusplus >= 201703L)
|
||||||
|
const std::string_view RagePhoto::jpeg_view() const
|
||||||
|
{
|
||||||
|
if (m_data->jpeg)
|
||||||
|
return std::string_view(m_data->jpeg, m_data->jpegSize);
|
||||||
|
else
|
||||||
|
return std::string_view();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
const char* RagePhoto::jpegData() const
|
const char* RagePhoto::jpegData() const
|
||||||
{
|
{
|
||||||
return m_data->jpeg;
|
return m_data->jpeg;
|
||||||
|
|
|
@ -115,6 +115,9 @@ public:
|
||||||
int32_t error() const; /**< Returns the last error occurred. */
|
int32_t error() const; /**< Returns the last error occurred. */
|
||||||
uint32_t format() const; /**< Returns the Photo Format (GTA V or RDR 2). */
|
uint32_t format() const; /**< Returns the Photo Format (GTA V or RDR 2). */
|
||||||
const std::string jpeg() const; /**< Returns the Photo JPEG data. */
|
const std::string jpeg() const; /**< Returns the Photo JPEG data. */
|
||||||
|
#if (RAGEPHOTO_CXX_STD >= 17) && (__cplusplus >= 201703L)
|
||||||
|
const std::string_view jpeg_view() const; /**< Returns the Photo JPEG data. */
|
||||||
|
#endif
|
||||||
const char* jpegData() const; /**< Returns the Photo JPEG data. */
|
const char* jpegData() const; /**< Returns the Photo JPEG data. */
|
||||||
uint32_t jpegSize() const; /**< Returns the Photo JPEG data size. */
|
uint32_t jpegSize() const; /**< Returns the Photo JPEG data size. */
|
||||||
const char* description() const; /**< Returns the Photo description. */
|
const char* description() const; /**< Returns the Photo description. */
|
||||||
|
|
|
@ -147,8 +147,22 @@ public:
|
||||||
}
|
}
|
||||||
/** Returns the Photo JPEG data. */
|
/** Returns the Photo JPEG data. */
|
||||||
const std::string jpeg() const {
|
const std::string jpeg() const {
|
||||||
return std::string(ragephoto_getphotojpeg(instance), ragephoto_getphotosize(instance));
|
const char *jpegData = ragephoto_getphotojpeg(instance);
|
||||||
|
if (jpegData)
|
||||||
|
return std::string(jpegData, ragephoto_getphotosize(instance));
|
||||||
|
else
|
||||||
|
return std::string();
|
||||||
}
|
}
|
||||||
|
#if (__cplusplus >= 201703L)
|
||||||
|
/** Returns the Photo JPEG data. */
|
||||||
|
const std::string_view jpeg_view() const {
|
||||||
|
const char *jpegData = ragephoto_getphotojpeg(instance);
|
||||||
|
if (jpegData)
|
||||||
|
return std::string_view(jpegData, ragephoto_getphotosize(instance));
|
||||||
|
else
|
||||||
|
return std::string_view();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
/** Returns the Photo JPEG data. */
|
/** Returns the Photo JPEG data. */
|
||||||
const char* jpegData() const {
|
const char* jpegData() const {
|
||||||
return ragephoto_getphotojpeg(instance);
|
return ragephoto_getphotojpeg(instance);
|
||||||
|
@ -308,6 +322,8 @@ public:
|
||||||
private:
|
private:
|
||||||
ragephoto_t instance;
|
ragephoto_t instance;
|
||||||
};
|
};
|
||||||
|
#else
|
||||||
|
#include "RagePhotoC.h"
|
||||||
#endif // __cplusplus
|
#endif // __cplusplus
|
||||||
|
|
||||||
#endif // RAGEPHOTOA_H
|
#endif // RAGEPHOTOA_H
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
/* CMAKE CONFIG BEGIN */
|
/* CMAKE CONFIG BEGIN */
|
||||||
#define @LIBRAGEPHOTO_API@
|
#define @LIBRAGEPHOTO_API@
|
||||||
#define @LIBRAGEPHOTO_LIBTYPE@
|
#define @LIBRAGEPHOTO_LIBTYPE@
|
||||||
|
#define RAGEPHOTO_CXX_STD @CMAKE_CXX_STANDARD@
|
||||||
#define RAGEPHOTO_VERSION "@ragephoto_VERSION@"
|
#define RAGEPHOTO_VERSION "@ragephoto_VERSION@"
|
||||||
#define RAGEPHOTO_VERSION_MAJOR @ragephoto_VERSION_MAJOR@
|
#define RAGEPHOTO_VERSION_MAJOR @ragephoto_VERSION_MAJOR@
|
||||||
#define RAGEPHOTO_VERSION_MINOR @ragephoto_VERSION_MINOR@
|
#define RAGEPHOTO_VERSION_MINOR @ragephoto_VERSION_MINOR@
|
||||||
|
|
Loading…
Reference in a new issue