diff --git a/CMakeLists.txt b/CMakeLists.txt index b83782f..86c10da 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,7 +17,7 @@ ****************************************************************************]] cmake_minimum_required(VERSION 3.7) -project(ragephoto VERSION 0.1 LANGUAGES CXX) +project(ragephoto VERSION 0.1.0 LANGUAGES CXX) include(GNUInstallDirs) set(CMAKE_INCLUDE_CURRENT_DIR ON) @@ -25,7 +25,7 @@ set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON) message("-- Testing codecvt") -try_run(CODECVT_RUN CODECVT_COMPILE ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/tests/CodecvtTest.cpp) +try_run(CODECVT_RUN CODECVT_COMPILE ${PROJECT_BINARY_DIR} ${PROJECT_SOURCE_DIR}/tests/CodecvtTest.cpp) if (CODECVT_COMPILE AND CODECVT_RUN EQUAL 0) list(APPEND LIBRAGEPHOTO_DEFINES CODECVT_COMPATIBLE @@ -36,7 +36,7 @@ else() endif() message("-- Testing iconv") -try_run(ICONV_RUN ICONV_COMPILE ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/tests/IconvTest.cpp) +try_run(ICONV_RUN ICONV_COMPILE ${PROJECT_BINARY_DIR} ${PROJECT_SOURCE_DIR}/tests/IconvTest.cpp) if (ICONV_COMPILE AND ICONV_RUN EQUAL 0) list(APPEND LIBRAGEPHOTO_DEFINES ICONV_COMPATIBLE @@ -81,7 +81,7 @@ endif() configure_file(src/libragephoto_global.h.in include/libragephoto_global.h @ONLY) list(APPEND RAGEPHOTO_HEADERS - ${CMAKE_CURRENT_BINARY_DIR}/include/libragephoto_global.h + ${PROJECT_BINARY_DIR}/include/libragephoto_global.h ) configure_file(src/ragephoto.pc.in pkgconfig/ragephoto.pc @ONLY) target_compile_definitions(ragephoto PRIVATE @@ -89,11 +89,11 @@ target_compile_definitions(ragephoto PRIVATE ${LIBRAGEPHOTO_DEFINES} ) target_include_directories(ragephoto PUBLIC - ${CMAKE_CURRENT_BINARY_DIR}/include + ${PROJECT_BINARY_DIR}/include ) install(TARGETS ragephoto DESTINATION ${CMAKE_INSTALL_LIBDIR}) install(FILES ${RAGEPHOTO_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/RagePhoto) -install(FILES ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig/ragephoto.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) +install(FILES ${PROJECT_BINARY_DIR}/pkgconfig/ragephoto.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) option(WITH_DOCUMENTATION "Build libragephoto with documentation" OFF) if (WITH_DOCUMENTATION) diff --git a/src/RagePhoto.cpp b/src/RagePhoto.cpp index 6a5212b..0e05d5a 100644 --- a/src/RagePhoto.cpp +++ b/src/RagePhoto.cpp @@ -457,6 +457,11 @@ const std::string& RagePhoto::title() const return m_data.title; } +const char* RagePhoto::version() +{ + return RAGEPHOTO_VERSION; +} + bool RagePhoto::save(char *data, uint32_t photoFormat) { if (photoFormat == PhotoFormat::GTA5 || photoFormat == PhotoFormat::RDR2) { @@ -916,6 +921,12 @@ int ragephoto_load(ragephoto_t instance, const char *data, size_t size) return ragePhoto->load(data, size); } +int ragephoto_loadfile(ragephoto_t instance, const char *filename) +{ + RagePhoto *ragePhoto = static_cast(instance); + return ragePhoto->loadFile(filename); +} + uint8_t ragephoto_error(ragephoto_t instance) { RagePhoto *ragePhoto = static_cast(instance); @@ -996,6 +1007,12 @@ int ragephoto_save(ragephoto_t instance, char *data) return ragePhoto->save(data); } +int ragephoto_savefile(ragephoto_t instance, const char *filename) +{ + RagePhoto *ragePhoto = static_cast(instance); + return ragePhoto->saveFile(filename); +} + void ragephoto_setbufferdefault(ragephoto_t instance) { RagePhoto *ragePhoto = static_cast(instance); @@ -1049,4 +1066,9 @@ void ragephoto_close(ragephoto_t instance) RagePhoto *ragePhoto = static_cast(instance); delete ragePhoto; } + +const char* ragephoto_version() +{ + return RAGEPHOTO_VERSION; +} #endif diff --git a/src/RagePhoto.h b/src/RagePhoto.h index a041c2c..c56f8ba 100644 --- a/src/RagePhoto.h +++ b/src/RagePhoto.h @@ -116,6 +116,7 @@ public: const std::string& json() const; /**< Returns the Photo JSON data. */ const std::string& header() const; /**< Returns the Photo header. */ const std::string& title() const; /**< Returns the Photo title. */ + static const char* version(); /**< Returns the library version. */ /** Saves a Photo to a char*. * \param data Photo data * \param photoFormat Photo Format (GTA V or RDR 2) @@ -196,6 +197,12 @@ LIBRAGEPHOTO_EXPORT ragephoto_t ragephoto_open(); */ LIBRAGEPHOTO_EXPORT int ragephoto_load(ragephoto_t instance, const char *data, size_t size); +/** Loads a Photo from a file. +* \param instance \p ragephoto_t instance +* \param filename File to load +*/ +LIBRAGEPHOTO_EXPORT int ragephoto_loadfile(ragephoto_t instance, const char *filename); + /** Returns the last error occurred. * \param instance \p ragephoto_t instance */ @@ -259,6 +266,12 @@ LIBRAGEPHOTO_EXPORT size_t ragephoto_getsavesize(ragephoto_t instance); */ LIBRAGEPHOTO_EXPORT int ragephoto_save(ragephoto_t instance, char *data); +/** Saves a Photo to a file. +* \param instance \p ragephoto_t instance +* \param filename File to save +*/ +LIBRAGEPHOTO_EXPORT int ragephoto_savefile(ragephoto_t instance, const char *filename); + /** Sets all cross-format Buffer to default size. * \param instance \p ragephoto_t instance */ @@ -312,6 +325,9 @@ LIBRAGEPHOTO_EXPORT void ragephoto_setphototitle(ragephoto_t instance, const cha */ LIBRAGEPHOTO_EXPORT void ragephoto_close(ragephoto_t instance); +/** Returns the library version. */ +LIBRAGEPHOTO_EXPORT const char* ragephoto_version(); + #ifdef __cplusplus } #endif diff --git a/src/libragephoto_global.h.in b/src/libragephoto_global.h.in index 15ca144..154947c 100644 --- a/src/libragephoto_global.h.in +++ b/src/libragephoto_global.h.in @@ -22,6 +22,10 @@ /* CMAKE CONFIG BEGIN */ #define @LIBRAGEPHOTO_API@ #define @LIBRAGEPHOTO_LIBTYPE@ +#define RAGEPHOTO_VERSION "@PROJECT_VERSION@" +#define RAGEPHOTO_VERSION_MAJOR @PROJECT_VERSION_MAJOR@ +#define RAGEPHOTO_VERSION_MINOR @PROJECT_VERSION_MINOR@ +#define RAGEPHOTO_VERSION_PATCH @PROJECT_VERSION_PATCH@ /* CMAKE CONFIG END */ /* RAGEPHOTO LIBRARY EXPORT BEGIN */