diff --git a/.github/workflows/ubuntu-c.yml b/.github/workflows/ubuntu-c.yml new file mode 100644 index 0000000..103bd5e --- /dev/null +++ b/.github/workflows/ubuntu-c.yml @@ -0,0 +1,29 @@ +name: Ubuntu C + +on: push + +jobs: + Release: + runs-on: ubuntu-latest + env: + BUILD_TYPE: Release + steps: + - uses: actions/checkout@v2 + with: + submodules: recursive + - name: Install packages + run: | + sudo apt-get update -qq + sudo apt-get install cmake gcc g++ ninja-build -qq + - name: Configure CMake + run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DRAGEPHOTO_C_LIBRARY=ON -GNinja + - name: Build + run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} + - name: Install + run: cmake --install ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} --prefix ${{github.workspace}}/install/usr/local + - name: Upload + uses: actions/upload-artifact@v2 + with: + name: Ubuntu + path: | + ${{github.workspace}}/install/ diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu-cxx.yml similarity index 98% rename from .github/workflows/ubuntu.yml rename to .github/workflows/ubuntu-cxx.yml index 317bfdb..a885877 100644 --- a/.github/workflows/ubuntu.yml +++ b/.github/workflows/ubuntu-cxx.yml @@ -1,4 +1,4 @@ -name: Ubuntu +name: Ubuntu CXX on: push diff --git a/.github/workflows/webassembly.yml b/.github/workflows/webassembly-c.yml similarity index 87% rename from .github/workflows/webassembly.yml rename to .github/workflows/webassembly-c.yml index 7940500..74ed63b 100644 --- a/.github/workflows/webassembly.yml +++ b/.github/workflows/webassembly-c.yml @@ -1,4 +1,4 @@ -name: WebAssembly +name: WebAssembly C on: push @@ -18,7 +18,7 @@ jobs: sudo apt-get update -qq sudo apt-get install cmake ninja-build -qq - name: Configure CMake - run: emcmake cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DRAGEPHOTO_C_LIBRARY=ON -DRAGEPHOTO_UNICODE=iconv -GNinja + run: emcmake cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -RAGEPHOTO_C_LIBRARY=ON -GNinja - name: Build run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} - name: Upload diff --git a/.github/workflows/webassembly-cxx.yml b/.github/workflows/webassembly-cxx.yml new file mode 100644 index 0000000..7fb8569 --- /dev/null +++ b/.github/workflows/webassembly-cxx.yml @@ -0,0 +1,30 @@ +name: WebAssembly CXX + +on: push + +jobs: + Release: + runs-on: ubuntu-latest + env: + BUILD_TYPE: Release + steps: + - uses: actions/checkout@v2 + with: + submodules: recursive + - name: Setup emsdk + uses: mymindstorm/setup-emsdk@v11 + - name: Install packages + run: | + sudo apt-get update -qq + sudo apt-get install cmake ninja-build -qq + - name: Configure CMake + run: emcmake cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -GNinja + - name: Build + run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} + - name: Upload + uses: actions/upload-artifact@v2 + with: + name: WebAssembly + path: | + ${{github.workspace}}/build/libragephoto.js + ${{github.workspace}}/build/libragephoto.wasm diff --git a/.github/workflows/windows-c.yml b/.github/workflows/windows-c.yml new file mode 100644 index 0000000..0788863 --- /dev/null +++ b/.github/workflows/windows-c.yml @@ -0,0 +1,34 @@ +name: Windows C + +on: push + +jobs: + Release: + runs-on: windows-latest + env: + BUILD_TYPE: Release + strategy: + matrix: + arch: + - amd64 + - amd64_x86 + - amd64_arm64 + steps: + - uses: actions/checkout@v2 + with: + submodules: recursive + - uses: ilammy/msvc-dev-cmd@v1 + with: + arch: ${{matrix.arch}} + - name: Configure CMake + run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DRAGEPHOTO_C_LIBRARY=ON -DRAGEPHOTO_UNICODE=wincvt -GNinja + - name: Build + run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} + - name: Install + run: cmake --install ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} --prefix ${{github.workspace}}/install + - name: Upload + uses: actions/upload-artifact@v2 + with: + name: Windows MSVC ${{matrix.arch}} + path: | + ${{github.workspace}}/install/ diff --git a/.github/workflows/windows.yml b/.github/workflows/windows-cxx.yml similarity index 98% rename from .github/workflows/windows.yml rename to .github/workflows/windows-cxx.yml index 0f4394c..480b53b 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows-cxx.yml @@ -1,4 +1,4 @@ -name: Windows +name: Windows CXX on: push diff --git a/CMakeLists.txt b/CMakeLists.txt index b7a1c53..297f1ca 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -35,7 +35,7 @@ endif() option(RAGEPHOTO_C_LIBRARY "Build libragephoto as C library" OFF) if (RAGEPHOTO_C_LIBRARY) set(RAGEPHOTO_HEADERS - src/RagePhotoC.h + src/RagePhoto.h src/RagePhotoLibrary.h src/RagePhotoTypedefs.h ) @@ -44,7 +44,8 @@ if (RAGEPHOTO_C_LIBRARY) ) else() set(RAGEPHOTO_HEADERS - src/RagePhoto.h + src/RagePhoto + src/RagePhoto.hpp src/RagePhotoLibrary.h src/RagePhotoTypedefs.h ) @@ -75,17 +76,19 @@ endif() if (RAGEPHOTO_C_LIBRARY) set(LIBRAGEPHOTO_API LIBRAGEPHOTO_C_API) list(APPEND RAGEPHOTO_HEADERS - src/RagePhotoA.h + src/RagePhotoA + src/RagePhotoA.hpp ) else() if (RAGEPHOTO_C_API) set(LIBRAGEPHOTO_API LIBRAGEPHOTO_C_API) list(APPEND RAGEPHOTO_HEADERS - src/RagePhotoA.h - src/RagePhotoC.h + src/RagePhoto.h + src/RagePhotoA + src/RagePhotoA.hpp ) else() - set(LIBRAGEPHOTO_API LIBRAGEPHOTO_C_NOAPI) + set(LIBRAGEPHOTO_API LIBRAGEPHOTO_CXX_ONLY) endif() endif() diff --git a/cmake/unicode.cmake b/cmake/unicode.cmake index 71e0407..e97886e 100644 --- a/cmake/unicode.cmake +++ b/cmake/unicode.cmake @@ -60,7 +60,7 @@ else() "UNICODE_WINCVT" ) message("-- UnicodeCvt - wincvt") - elseif (CODECVT_COMPAT) + elseif (CODECVT_COMPAT AND NOT RAGEPHOTO_C_LIBRARY) list(APPEND LIBRAGEPHOTO_DEFINES "UNICODE_CODECVT" ) @@ -70,5 +70,7 @@ else() "UNICODE_ICONV" ) message("-- UnicodeCvt - iconv") + else() + message("-- UnicodeCvt - none") endif() endif() diff --git a/examples/ragephoto-gtkviewer/src/main.cpp b/examples/ragephoto-gtkviewer/src/main.cpp index 845f003..05ba481 100644 --- a/examples/ragephoto-gtkviewer/src/main.cpp +++ b/examples/ragephoto-gtkviewer/src/main.cpp @@ -16,7 +16,7 @@ * responsible for anything with use of the software, you are self responsible. *****************************************************************************/ -#include +#include #include #include #include diff --git a/examples/ragephoto-qtviewer/src/main.cpp b/examples/ragephoto-qtviewer/src/main.cpp index 6df9c6b..f7613b4 100644 --- a/examples/ragephoto-qtviewer/src/main.cpp +++ b/examples/ragephoto-qtviewer/src/main.cpp @@ -16,7 +16,7 @@ * responsible for anything with use of the software, you are self responsible. *****************************************************************************/ -#include +#include #include #include #include diff --git a/src/RagePhoto b/src/RagePhoto new file mode 100644 index 0000000..47d2c96 --- /dev/null +++ b/src/RagePhoto @@ -0,0 +1 @@ +#include "RagePhoto.hpp" diff --git a/src/RagePhoto-Extract.c b/src/RagePhoto-Extract.c index dcd37d4..85f57a0 100644 --- a/src/RagePhoto-Extract.c +++ b/src/RagePhoto-Extract.c @@ -16,7 +16,7 @@ * responsible for anything with use of the software, you are self responsible. *****************************************************************************/ -#include "RagePhotoC.h" +#include "RagePhoto.h" #include int main(int argc, char *argv[]) diff --git a/src/RagePhoto-Extract.cpp b/src/RagePhoto-Extract.cpp index ec4fdb4..6534d6c 100644 --- a/src/RagePhoto-Extract.cpp +++ b/src/RagePhoto-Extract.cpp @@ -16,7 +16,7 @@ * responsible for anything with use of the software, you are self responsible. *****************************************************************************/ -#include "RagePhoto.h" +#include #include int main(int argc, char *argv[]) diff --git a/src/RagePhoto.c b/src/RagePhoto.c index 9d98fbe..c998a04 100644 --- a/src/RagePhoto.c +++ b/src/RagePhoto.c @@ -16,7 +16,7 @@ * responsible for anything with use of the software, you are self responsible. *****************************************************************************/ -#include "RagePhotoC.h" +#include "RagePhoto.h" #include #include #include diff --git a/src/RagePhoto.cpp b/src/RagePhoto.cpp index 6b48fef..76fa0fc 100644 --- a/src/RagePhoto.cpp +++ b/src/RagePhoto.cpp @@ -16,9 +16,9 @@ * responsible for anything with use of the software, you are self responsible. *****************************************************************************/ -#include "RagePhoto.h" +#include "RagePhoto.hpp" #ifdef LIBRAGEPHOTO_C_API -#include "RagePhotoC.h" +#include "RagePhoto.h" #endif #include diff --git a/src/RagePhoto.h b/src/RagePhoto.h index c895a65..ff51ca0 100644 --- a/src/RagePhoto.h +++ b/src/RagePhoto.h @@ -19,175 +19,297 @@ #ifndef RAGEPHOTO_H #define RAGEPHOTO_H -#ifdef __cplusplus #include "RagePhotoLibrary.h" #include "RagePhotoTypedefs.h" -#include -#include -#include -#include +#include +#include -/** -* \brief GTA V and RDR 2 Photo Parser. +#ifdef __cplusplus +extern "C" { +#endif // __cplusplus + +/** C API for RagePhoto. +* \file RagePhoto.h */ -class LIBRAGEPHOTO_CXX_PUBLIC RagePhoto -{ -public: - /** Default sizes */ - enum DefaultSize : uint32_t { - DEFAULT_GTA5_PHOTOBUFFER = 524288UL, /**< GTA V default Photo Buffer Size */ - DEFAULT_RDR2_PHOTOBUFFER = 1048576UL, /**< RDR 2 default Photo Buffer Size */ - DEFAULT_DESCBUFFER = 256UL, /**< Default Description Buffer Size */ - DEFAULT_JSONBUFFER = 3072UL, /**< Default JSON Buffer Size */ - DEFAULT_TITLBUFFER = 256UL, /**< Default Title Buffer Size */ - GTA5_HEADERSIZE = 264UL, /**< GTA V Header Size */ - RDR2_HEADERSIZE = 272UL, /**< RDR 2 Header Size */ - }; - /** Parsing and set errors */ - enum Error : int32_t { - DescBufferTight = 39L, /**< Description Buffer is too tight */ - DescMallocError = 31L, /**< Description Buffer can't be allocated */ - DescReadError = 32L, /**< Description can't be read successfully */ - HeaderBufferTight = 35L, /**< Header Buffer is too tight */ - HeaderMallocError = 4L, /**< Header Buffer can't be allocated */ - IncompatibleFormat = 2L, /**< Format is incompatible */ - IncompleteChecksum = 7L, /**< Header checksum is incomplete */ - IncompleteDescBuffer = 30L, /**< Description Buffer Size is incomplete */ - IncompleteDescMarker = 28L, /**< Description Marker is incomplete */ - IncompleteDescOffset = 11L, /**< Description Offset is incomplete */ - IncompleteEOF = 8L, /**< End Of File Offset is incomplete */ - IncompleteHeader = 3L, /**< Header is incomplete */ - IncompleteJendMarker = 33L, /**< JEND Marker is incomplete */ - IncompleteJpegMarker = 12L, /**< JPEG Marker is incomplete */ - IncompleteJsonBuffer = 20L, /**< JSON Buffer Size is incomplete */ - IncompleteJsonMarker = 18L, /**< JSON Marker incomplete */ - IncompleteJsonOffset = 9L, /**< JSON Offset incomplete */ - IncompletePhotoBuffer = 14L, /**< Photo Buffer Size is incomplete */ - IncompletePhotoSize = 15L, /**< Photo Size is incomplete */ - IncompleteTitleBuffer = 25L, /**< Title Buffer Size is incomplete */ - IncompleteTitleMarker = 23L, /**< Title Marker is incomplete */ - IncompleteTitleOffset = 10L, /**< Title Offset is incomplete */ - IncorrectDescMarker = 29L, /**< Description Marker is incorrect */ - IncorrectJendMarker = 34L, /**< JEND Marker is incorrect */ - IncorrectJpegMarker = 13L, /**< JPEG Marker is incorrect */ - IncorrectJsonMarker = 19L, /**< JSON Marker is incorrect */ - IncorrectTitleMarker = 24L, /**< Title Marker is incorrect */ - JsonBufferTight = 37L, /**< JSON Buffer is too tight */ - JsonMallocError = 21L, /**< JSON Buffer can't be allocated */ - JsonReadError = 22L, /**< JSON can't be read successfully */ - NoError = 255L, /**< Finished without errors */ - NoFormatIdentifier = 1L, /**< No format detected, empty file */ - PhotoBufferTight = 36L, /**< Photo Buffer is too tight */ - PhotoMallocError = 16L, /**< Photo Buffer can't be allocated */ - PhotoReadError = 17L, /**< Photo can't be read */ - TitleBufferTight = 38L, /**< Title Buffer is too tight */ - TitleMallocError = 26L, /**< Title Buffer can't be allocated */ - TitleReadError = 27L, /**< Title can't be read */ - UnicodeInitError = 5L, /**< Failed to initialise Unicode decoder */ - UnicodeHeaderError = 6L, /**< Header can't be encoded/decoded successfully */ - Uninitialised = 0L, /**< Uninitialised, file access failed */ - }; - /** Photo Formats */ - enum PhotoFormat : uint32_t { - GTA5 = 0x01000000UL, /**< GTA V Photo Format */ - RDR2 = 0x04000000UL, /**< RDR 2 Photo Format */ - }; - /** Sign Initials */ - enum SignInitials : uint32_t { - SIGTA5 = 0xE47AB81CUL, /**< GTA V Sign Initial */ - SIRDR2 = 0x00FEEB1EUL, /**< RDR 2 Sign Initial */ - }; - RagePhoto(); - ~RagePhoto(); - void addParser(RagePhotoFormatParser *rp_parser); /**< Add a custom defined RagePhotoFormatParser. */ - static void clear(RagePhotoData *rp_data); /**< Resets the RagePhotoData object to default values. */ - void clear(); /**< Resets the RagePhotoData object to default values. */ - RagePhotoData* data(); /**< Returns the internal RagePhotoData object. */ - static bool load(const char *data, size_t size, RagePhotoData *rp_data, RagePhotoFormatParser *rp_parser); /**< Loads a Photo from a const char*. */ - /** Loads a Photo from a const char*. - * \param data Photo data - * \param size Photo data size - */ - bool load(const char *data, size_t size); - /** Loads a Photo from a std::string. - * \param data Photo data - */ - bool load(const std::string &data); - /** Loads a Photo from a file. - * \param filename File to load - */ - bool loadFile(const std::string &filename); - int32_t error() const; /**< Returns the last error occurred. */ - uint32_t format() const; /**< Returns the Photo Format (GTA V or RDR 2). */ - 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. */ - static uint64_t jpegSign(uint32_t photoFormat, RagePhotoData *rp_data); /**< Returns the Photo JPEG sign. */ - static uint64_t jpegSign(RagePhotoData *rp_data); /**< Returns the Photo JPEG sign. */ - uint64_t jpegSign(uint32_t photoFormat) const; /**< Returns the Photo JPEG sign. */ - uint64_t jpegSign() const; /**< Returns the Photo JPEG sign. */ - uint32_t jpegSize() const; /**< Returns the Photo JPEG data size. */ - const char* description() const; /**< Returns the Photo description. */ - const char* json() const; /**< Returns the Photo JSON data. */ - const char* header() const; /**< Returns the Photo header. */ - const char* title() const; /**< Returns the Photo title. */ - static const char* version(); /**< Returns the library version. */ - static bool save(char *data, uint32_t photoFormat, RagePhotoData *rp_data, RagePhotoFormatParser *rp_parser); /**< Saves a Photo to a char*. */ - static bool save(char *data, RagePhotoData *rp_data, RagePhotoFormatParser *rp_parser); /**< Saves a Photo to a char*. */ - /** Saves a Photo to a char*. - * \param data Photo data - * \param photoFormat Photo Format (GTA V or RDR 2) - */ - bool save(char *data, uint32_t photoFormat); - /** Saves a Photo to a char*. - * \param data Photo data - */ - bool save(char *data); - /** Saves a Photo to a std::string. - * \param photoFormat Photo Format (GTA V or RDR 2) - * \param ok \p true when saved successfully - */ - const std::string save(uint32_t photoFormat, bool *ok = nullptr); - /** Saves a Photo to a std::string. - * \param ok \p true when saved successfully - */ - const std::string save(bool *ok = nullptr); - bool saveFile(const std::string &filename, uint32_t photoFormat); /**< Saves a Photo to a file. */ - bool saveFile(const std::string &filename); /**< Saves a Photo to a file. */ - static size_t saveSize(uint32_t photoFormat, RagePhotoData *rp_data, RagePhotoFormatParser *rp_parser); /**< Returns the Photo save file size. */ - static size_t saveSize(RagePhotoData *rp_data, RagePhotoFormatParser *rp_parser); /**< Returns the Photo save file size. */ - size_t saveSize(uint32_t photoFormat); /**< Returns the Photo save file size. */ - size_t saveSize(); /**< Returns the Photo save file size. */ - static void setBufferDefault(RagePhotoData *rp_data); /**< Sets all cross-format Buffer to default size. */ - void setBufferDefault(); /**< Sets all cross-format Buffer to default size. */ - static void setBufferOffsets(RagePhotoData *rp_data); /**< Moves all Buffer offsets to correct position. */ - void setBufferOffsets(); /**< Moves all Buffer offsets to correct position. */ - bool setData(RagePhotoData *rp_data, bool takeCopy = true); /**< Sets the internal RagePhotoData object. */ - void setDescription(const char *description, uint32_t bufferSize = 0); /**< Sets the Photo description. */ - void setFormat(uint32_t photoFormat); /**< Sets the Photo Format (GTA V or RDR 2). */ - /** Sets the Photo JPEG data. - * \param data JPEG data - * \param size JPEG data size - * \param bufferSize JPEG buffer size - */ - bool setJpeg(const char *data, uint32_t size, uint32_t bufferSize = 0); - /** Sets the Photo JPEG data. - * \param data JPEG data - * \param bufferSize JPEG buffer size - */ - bool setJpeg(const std::string &data, uint32_t bufferSize = 0); - void setJson(const char *json, uint32_t bufferSize = 0); /**< Sets the Photo JSON data. */ - void setHeader(const char *header, uint32_t headerSum, uint32_t headerSum2 = 0); /**< Sets the Photo header. */ - void setTitle(const char *title, uint32_t bufferSize = 0); /**< Sets the Photo title. */ -private: - RagePhotoData *m_data; - RagePhotoFormatParser *m_parser; -}; -#else -#include "RagePhotoC.h" +/** RagePhoto C instance/C++ class typedef. */ +typedef void* ragephoto_t; + +/** Opens a \p ragephoto_t instance. */ +LIBRAGEPHOTO_C_PUBLIC ragephoto_t ragephoto_open(); + +/** Add a custom defined RagePhotoFormatParser. +* \param instance \p ragephoto_t instance +* \param rp_parser RagePhotoFormatParser parser to add +*/ +LIBRAGEPHOTO_C_PUBLIC void ragephoto_addparser(ragephoto_t instance, RagePhotoFormatParser *rp_parser); + +/** Resets the RagePhotoData object to default values. +* \param instance \p ragephoto_t instance +*/ +LIBRAGEPHOTO_C_PUBLIC void ragephoto_clear(ragephoto_t instance); + +/** Resets the RagePhotoData object to default values. +* \param rp_data RagePhotoData object +*/ +LIBRAGEPHOTO_C_PUBLIC void ragephotodata_clear(RagePhotoData *rp_data); + +/** Loads a Photo from a const char*. +* \param instance \p ragephoto_t instance +* \param data Photo data +* \param size Photo data size +*/ +LIBRAGEPHOTO_C_PUBLIC bool ragephoto_load(ragephoto_t instance, const char *data, size_t size); + +/** Loads a Photo from a const char*. +* \param rp_data RagePhotoData object +* \param rp_parser RagePhotoFormatParser parser array +* \param data Photo data +* \param size Photo data size +*/ +LIBRAGEPHOTO_C_PUBLIC bool ragephotodata_load(RagePhotoData *rp_data, RagePhotoFormatParser *rp_parser, const char *data, size_t size); + +/** Loads a Photo from a file. +* \param instance \p ragephoto_t instance +* \param filename File to load +*/ +LIBRAGEPHOTO_C_PUBLIC bool ragephoto_loadfile(ragephoto_t instance, const char *filename); + +/** Returns the last error occurred. +* \param instance \p ragephoto_t instance +*/ +LIBRAGEPHOTO_C_PUBLIC int32_t ragephoto_error(ragephoto_t instance); + +/** Returns the GTA V default Photo Buffer Size. */ +LIBRAGEPHOTO_C_PUBLIC uint32_t ragephoto_defpbuf_gta5(); + +/** Returns the RDR 2 default Photo Buffer Size. */ +LIBRAGEPHOTO_C_PUBLIC uint32_t ragephoto_defpbuf_rdr2(); + +/** Returns the GTA V Photo Format. */ +LIBRAGEPHOTO_C_PUBLIC uint32_t ragephoto_format_gta5(); + +/** Returns the RDR 2 Photo Format. */ +LIBRAGEPHOTO_C_PUBLIC uint32_t ragephoto_format_rdr2(); + +/** Returns the internal RagePhotoData object. +* \param instance \p ragephoto_t instance +*/ +LIBRAGEPHOTO_C_PUBLIC RagePhotoData* ragephoto_getphotodata(ragephoto_t instance); + +/** Returns the Photo description. +* \param instance \p ragephoto_t instance +*/ +LIBRAGEPHOTO_C_PUBLIC const char* ragephoto_getphotodesc(ragephoto_t instance); + +/** Returns the Photo Format (GTA V or RDR 2). +* \param instance \p ragephoto_t instance +*/ +LIBRAGEPHOTO_C_PUBLIC uint32_t ragephoto_getphotoformat(ragephoto_t instance); + +/** Returns the Photo JPEG data. +* \param instance \p ragephoto_t instance +*/ +LIBRAGEPHOTO_C_PUBLIC const char* ragephoto_getphotojpeg(ragephoto_t instance); + +/** Returns the Photo JSON data. +* \param instance \p ragephoto_t instance +*/ +LIBRAGEPHOTO_C_PUBLIC const char* ragephoto_getphotojson(ragephoto_t instance); + +/** Returns the Photo header. +* \param instance \p ragephoto_t instance +*/ +LIBRAGEPHOTO_C_PUBLIC const char* ragephoto_getphotoheader(ragephoto_t instance); + +/** Returns the Photo JPEG sign. +* \param instance \p ragephoto_t instance +*/ +LIBRAGEPHOTO_C_PUBLIC uint64_t ragephoto_getphotosign(ragephoto_t instance); + +/** Returns the Photo JPEG sign. +* \param instance \p ragephoto_t instance +* \param photoFormat Photo Format (GTA V or RDR 2) +*/ +LIBRAGEPHOTO_C_PUBLIC uint64_t ragephoto_getphotosignf(ragephoto_t instance, uint32_t photoFormat); + +/** Returns the Photo JPEG sign. +* \param rp_data RagePhotoData object +*/ +LIBRAGEPHOTO_C_PUBLIC uint64_t ragephotodata_getphotosign(RagePhotoData *rp_data); + +/** Returns the Photo JPEG sign. +* \param rp_data RagePhotoData object +* \param photoFormat Photo Format (GTA V or RDR 2) +*/ +LIBRAGEPHOTO_C_PUBLIC uint64_t ragephotodata_getphotosignf(RagePhotoData *rp_data, uint32_t photoFormat); + +/** Returns the Photo JPEG data size. +* \param instance \p ragephoto_t instance +*/ +LIBRAGEPHOTO_C_PUBLIC uint32_t ragephoto_getphotosize(ragephoto_t instance); + +/** Returns the Photo title. +* \param instance \p ragephoto_t instance +*/ +LIBRAGEPHOTO_C_PUBLIC const char* ragephoto_getphototitle(ragephoto_t instance); + +/** Returns the Photo save file size. +* \param instance \p ragephoto_t instance +*/ +LIBRAGEPHOTO_C_PUBLIC size_t ragephoto_getsavesize(ragephoto_t instance); + +/** Returns the Photo save file size. +* \param rp_data RagePhotoData object +* \param rp_parser RagePhotoFormatParser parser array +*/ +LIBRAGEPHOTO_C_PUBLIC size_t ragephotodata_getsavesize(RagePhotoData *rp_data, RagePhotoFormatParser *rp_parser); + +/** Returns the Photo save file size. +* \param instance \p ragephoto_t instance +* \param photoFormat Photo Format (GTA V or RDR 2) +*/ +LIBRAGEPHOTO_C_PUBLIC size_t ragephoto_getsavesizef(ragephoto_t instance, uint32_t photoFormat); + +/** Returns the Photo save file size. +* \param rp_data RagePhotoData object +* \param rp_parser RagePhotoFormatParser parser array +* \param photoFormat Photo Format (GTA V or RDR 2) +*/ +LIBRAGEPHOTO_C_PUBLIC size_t ragephotodata_getsavesizef(RagePhotoData *rp_data, RagePhotoFormatParser *rp_parser, uint32_t photoFormat); + +/** Saves a Photo to a char*. +* \param instance \p ragephoto_t instance +* \param data Photo data +*/ +LIBRAGEPHOTO_C_PUBLIC bool ragephoto_save(ragephoto_t instance, char *data); + +/** Saves a Photo to a char*. +* \param rp_data RagePhotoData object +* \param rp_parser RagePhotoFormatParser parser array +* \param data Photo data +*/ +LIBRAGEPHOTO_C_PUBLIC bool ragephotodata_save(RagePhotoData *rp_data, RagePhotoFormatParser *rp_parser, char *data); + +/** Saves a Photo to a char*. +* \param instance \p ragephoto_t instance +* \param data Photo data +* \param photoFormat Photo Format (GTA V or RDR 2) +*/ +LIBRAGEPHOTO_C_PUBLIC bool ragephoto_savef(ragephoto_t instance, char *data, uint32_t photoFormat); + +/** Saves a Photo to a char*. +* \param rp_data RagePhotoData object +* \param rp_parser RagePhotoFormatParser parser array +* \param data Photo data +* \param photoFormat Photo Format (GTA V or RDR 2) +*/ +LIBRAGEPHOTO_C_PUBLIC bool ragephotodata_savef(RagePhotoData *rp_data, RagePhotoFormatParser *rp_parser, char *data, uint32_t photoFormat); + +/** Saves a Photo to a file. +* \param instance \p ragephoto_t instance +* \param filename File to save +*/ +LIBRAGEPHOTO_C_PUBLIC bool ragephoto_savefile(ragephoto_t instance, const char *filename); + +/** Saves a Photo to a file. +* \param instance \p ragephoto_t instance +* \param filename File to save +* \param photoFormat Photo Format (GTA V or RDR 2) +*/ +LIBRAGEPHOTO_C_PUBLIC bool ragephoto_savefilef(ragephoto_t instance, const char *filename, uint32_t photoFormat); + +/** Sets all cross-format Buffer to default size. +* \param instance \p ragephoto_t instance +*/ +LIBRAGEPHOTO_C_PUBLIC void ragephoto_setbufferdefault(ragephoto_t instance); + +/** Sets all cross-format Buffer to default size. +* \param rp_data RagePhotoData object +*/ +LIBRAGEPHOTO_C_PUBLIC void ragephotodata_setbufferdefault(RagePhotoData *rp_data); + +/** Moves all Buffer offsets to correct position. +* \param instance \p ragephoto_t instance +*/ +LIBRAGEPHOTO_C_PUBLIC void ragephoto_setbufferoffsets(ragephoto_t instance); + +/** Moves all Buffer offsets to correct position. +* \param rp_data RagePhotoData object +*/ +LIBRAGEPHOTO_C_PUBLIC void ragephotodata_setbufferoffsets(RagePhotoData *rp_data); + +/** Sets the internal RagePhotoData object. +* \param instance \p ragephoto_t instance +* \param rp_data RagePhotoData object being set +*/ +LIBRAGEPHOTO_C_PUBLIC bool ragephoto_setphotodata(ragephoto_t instance, RagePhotoData *rp_data); + +/** Copies RagePhotoData object to internal RagePhotoData object. +* \param instance \p ragephoto_t instance +* \param rp_data RagePhotoData object being copied +*/ +LIBRAGEPHOTO_C_PUBLIC bool ragephoto_setphotodatac(ragephoto_t instance, RagePhotoData *rp_data); + +/** Sets the Photo description. +* \param instance \p ragephoto_t instance +* \param description Description +* \param bufferSize Description buffer size +* +* Default bufferSize: 256UL +*/ +LIBRAGEPHOTO_C_PUBLIC void ragephoto_setphotodesc(ragephoto_t instance, const char *description, uint32_t bufferSize); + +/** Sets the Photo Format (GTA V or RDR 2). +* \param instance \p ragephoto_t instance +* \param photoFormat Photo Format (GTA V or RDR 2) +*/ +LIBRAGEPHOTO_C_PUBLIC void ragephoto_setphotoformat(ragephoto_t instance, uint32_t photoFormat); + +/** Sets the Photo JPEG data. +* \param instance \p ragephoto_t instance +* \param data JPEG data +* \param size JPEG data size +* \param bufferSize JPEG buffer size +* +* Default bufferSize: ragephoto_defpbuf_gta5() or ragephoto_defpbuf_rdr2() +*/ +LIBRAGEPHOTO_C_PUBLIC bool ragephoto_setphotojpeg(ragephoto_t instance, const char *data, uint32_t size, uint32_t bufferSize); + +/** Sets the Photo JSON data. +* \param instance \p ragephoto_t instance +* \param json JSON data +* \param bufferSize JSON data buffer size +* +* Default bufferSize: 3072UL +*/ +LIBRAGEPHOTO_C_PUBLIC void ragephoto_setphotojson(ragephoto_t instance, const char *json, uint32_t bufferSize); + +/** Sets the Photo header. */ +LIBRAGEPHOTO_C_PUBLIC void ragephoto_setphotoheader(ragephoto_t instance, const char *header, uint32_t headerSum); + +/** Sets the Photo header. (RDR 2) */ +LIBRAGEPHOTO_C_PUBLIC void ragephoto_setphotoheader2(ragephoto_t instance, const char *header, uint32_t headerSum, uint32_t headerSum2); + +/** Sets the Photo title. +* \param instance \p ragephoto_t instance +* \param title Title +* \param bufferSize Title buffer size +* +* Default bufferSize: 256UL +*/ +LIBRAGEPHOTO_C_PUBLIC void ragephoto_setphototitle(ragephoto_t instance, const char *title, uint32_t bufferSize); + +/** Closes a \p ragephoto_t instance. +* \param instance \p ragephoto_t instance +*/ +LIBRAGEPHOTO_C_PUBLIC void ragephoto_close(ragephoto_t instance); + +/** Returns the library version. */ +LIBRAGEPHOTO_C_PUBLIC const char* ragephoto_version(); + +#ifdef __cplusplus +} #endif // __cplusplus #endif // RAGEPHOTO_H diff --git a/src/RagePhoto.hpp b/src/RagePhoto.hpp new file mode 100644 index 0000000..addb920 --- /dev/null +++ b/src/RagePhoto.hpp @@ -0,0 +1,191 @@ +/***************************************************************************** +* libragephoto RAGE Photo Parser +* Copyright (C) 2021-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. +*****************************************************************************/ + +#ifndef RAGEPHOTO_HPP +#define RAGEPHOTO_HPP + +#ifdef __cplusplus +#include "RagePhotoLibrary.h" +#include "RagePhotoTypedefs.h" +#include +#include +#include +#include + +/** +* \brief GTA V and RDR 2 Photo Parser. +*/ +class LIBRAGEPHOTO_CXX_PUBLIC RagePhoto +{ +public: + /** Default sizes */ + enum DefaultSize : uint32_t { + DEFAULT_GTA5_PHOTOBUFFER = 524288UL, /**< GTA V default Photo Buffer Size */ + DEFAULT_RDR2_PHOTOBUFFER = 1048576UL, /**< RDR 2 default Photo Buffer Size */ + DEFAULT_DESCBUFFER = 256UL, /**< Default Description Buffer Size */ + DEFAULT_JSONBUFFER = 3072UL, /**< Default JSON Buffer Size */ + DEFAULT_TITLBUFFER = 256UL, /**< Default Title Buffer Size */ + GTA5_HEADERSIZE = 264UL, /**< GTA V Header Size */ + RDR2_HEADERSIZE = 272UL, /**< RDR 2 Header Size */ + }; + /** Parsing and set errors */ + enum Error : int32_t { + DescBufferTight = 39L, /**< Description Buffer is too tight */ + DescMallocError = 31L, /**< Description Buffer can't be allocated */ + DescReadError = 32L, /**< Description can't be read successfully */ + HeaderBufferTight = 35L, /**< Header Buffer is too tight */ + HeaderMallocError = 4L, /**< Header Buffer can't be allocated */ + IncompatibleFormat = 2L, /**< Format is incompatible */ + IncompleteChecksum = 7L, /**< Header checksum is incomplete */ + IncompleteDescBuffer = 30L, /**< Description Buffer Size is incomplete */ + IncompleteDescMarker = 28L, /**< Description Marker is incomplete */ + IncompleteDescOffset = 11L, /**< Description Offset is incomplete */ + IncompleteEOF = 8L, /**< End Of File Offset is incomplete */ + IncompleteHeader = 3L, /**< Header is incomplete */ + IncompleteJendMarker = 33L, /**< JEND Marker is incomplete */ + IncompleteJpegMarker = 12L, /**< JPEG Marker is incomplete */ + IncompleteJsonBuffer = 20L, /**< JSON Buffer Size is incomplete */ + IncompleteJsonMarker = 18L, /**< JSON Marker incomplete */ + IncompleteJsonOffset = 9L, /**< JSON Offset incomplete */ + IncompletePhotoBuffer = 14L, /**< Photo Buffer Size is incomplete */ + IncompletePhotoSize = 15L, /**< Photo Size is incomplete */ + IncompleteTitleBuffer = 25L, /**< Title Buffer Size is incomplete */ + IncompleteTitleMarker = 23L, /**< Title Marker is incomplete */ + IncompleteTitleOffset = 10L, /**< Title Offset is incomplete */ + IncorrectDescMarker = 29L, /**< Description Marker is incorrect */ + IncorrectJendMarker = 34L, /**< JEND Marker is incorrect */ + IncorrectJpegMarker = 13L, /**< JPEG Marker is incorrect */ + IncorrectJsonMarker = 19L, /**< JSON Marker is incorrect */ + IncorrectTitleMarker = 24L, /**< Title Marker is incorrect */ + JsonBufferTight = 37L, /**< JSON Buffer is too tight */ + JsonMallocError = 21L, /**< JSON Buffer can't be allocated */ + JsonReadError = 22L, /**< JSON can't be read successfully */ + NoError = 255L, /**< Finished without errors */ + NoFormatIdentifier = 1L, /**< No format detected, empty file */ + PhotoBufferTight = 36L, /**< Photo Buffer is too tight */ + PhotoMallocError = 16L, /**< Photo Buffer can't be allocated */ + PhotoReadError = 17L, /**< Photo can't be read */ + TitleBufferTight = 38L, /**< Title Buffer is too tight */ + TitleMallocError = 26L, /**< Title Buffer can't be allocated */ + TitleReadError = 27L, /**< Title can't be read */ + UnicodeInitError = 5L, /**< Failed to initialise Unicode decoder */ + UnicodeHeaderError = 6L, /**< Header can't be encoded/decoded successfully */ + Uninitialised = 0L, /**< Uninitialised, file access failed */ + }; + /** Photo Formats */ + enum PhotoFormat : uint32_t { + GTA5 = 0x01000000UL, /**< GTA V Photo Format */ + RDR2 = 0x04000000UL, /**< RDR 2 Photo Format */ + }; + /** Sign Initials */ + enum SignInitials : uint32_t { + SIGTA5 = 0xE47AB81CUL, /**< GTA V Sign Initial */ + SIRDR2 = 0x00FEEB1EUL, /**< RDR 2 Sign Initial */ + }; + RagePhoto(); + ~RagePhoto(); + void addParser(RagePhotoFormatParser *rp_parser); /**< Add a custom defined RagePhotoFormatParser. */ + static void clear(RagePhotoData *rp_data); /**< Resets the RagePhotoData object to default values. */ + void clear(); /**< Resets the RagePhotoData object to default values. */ + RagePhotoData* data(); /**< Returns the internal RagePhotoData object. */ + static bool load(const char *data, size_t size, RagePhotoData *rp_data, RagePhotoFormatParser *rp_parser); /**< Loads a Photo from a const char*. */ + /** Loads a Photo from a const char*. + * \param data Photo data + * \param size Photo data size + */ + bool load(const char *data, size_t size); + /** Loads a Photo from a std::string. + * \param data Photo data + */ + bool load(const std::string &data); + /** Loads a Photo from a file. + * \param filename File to load + */ + bool loadFile(const std::string &filename); + int32_t error() const; /**< Returns the last error occurred. */ + uint32_t format() const; /**< Returns the Photo Format (GTA V or RDR 2). */ + 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. */ + static uint64_t jpegSign(uint32_t photoFormat, RagePhotoData *rp_data); /**< Returns the Photo JPEG sign. */ + static uint64_t jpegSign(RagePhotoData *rp_data); /**< Returns the Photo JPEG sign. */ + uint64_t jpegSign(uint32_t photoFormat) const; /**< Returns the Photo JPEG sign. */ + uint64_t jpegSign() const; /**< Returns the Photo JPEG sign. */ + uint32_t jpegSize() const; /**< Returns the Photo JPEG data size. */ + const char* description() const; /**< Returns the Photo description. */ + const char* json() const; /**< Returns the Photo JSON data. */ + const char* header() const; /**< Returns the Photo header. */ + const char* title() const; /**< Returns the Photo title. */ + static const char* version(); /**< Returns the library version. */ + static bool save(char *data, uint32_t photoFormat, RagePhotoData *rp_data, RagePhotoFormatParser *rp_parser); /**< Saves a Photo to a char*. */ + static bool save(char *data, RagePhotoData *rp_data, RagePhotoFormatParser *rp_parser); /**< Saves a Photo to a char*. */ + /** Saves a Photo to a char*. + * \param data Photo data + * \param photoFormat Photo Format (GTA V or RDR 2) + */ + bool save(char *data, uint32_t photoFormat); + /** Saves a Photo to a char*. + * \param data Photo data + */ + bool save(char *data); + /** Saves a Photo to a std::string. + * \param photoFormat Photo Format (GTA V or RDR 2) + * \param ok \p true when saved successfully + */ + const std::string save(uint32_t photoFormat, bool *ok = nullptr); + /** Saves a Photo to a std::string. + * \param ok \p true when saved successfully + */ + const std::string save(bool *ok = nullptr); + bool saveFile(const std::string &filename, uint32_t photoFormat); /**< Saves a Photo to a file. */ + bool saveFile(const std::string &filename); /**< Saves a Photo to a file. */ + static size_t saveSize(uint32_t photoFormat, RagePhotoData *rp_data, RagePhotoFormatParser *rp_parser); /**< Returns the Photo save file size. */ + static size_t saveSize(RagePhotoData *rp_data, RagePhotoFormatParser *rp_parser); /**< Returns the Photo save file size. */ + size_t saveSize(uint32_t photoFormat); /**< Returns the Photo save file size. */ + size_t saveSize(); /**< Returns the Photo save file size. */ + static void setBufferDefault(RagePhotoData *rp_data); /**< Sets all cross-format Buffer to default size. */ + void setBufferDefault(); /**< Sets all cross-format Buffer to default size. */ + static void setBufferOffsets(RagePhotoData *rp_data); /**< Moves all Buffer offsets to correct position. */ + void setBufferOffsets(); /**< Moves all Buffer offsets to correct position. */ + bool setData(RagePhotoData *rp_data, bool takeCopy = true); /**< Sets the internal RagePhotoData object. */ + void setDescription(const char *description, uint32_t bufferSize = 0); /**< Sets the Photo description. */ + void setFormat(uint32_t photoFormat); /**< Sets the Photo Format (GTA V or RDR 2). */ + /** Sets the Photo JPEG data. + * \param data JPEG data + * \param size JPEG data size + * \param bufferSize JPEG buffer size + */ + bool setJpeg(const char *data, uint32_t size, uint32_t bufferSize = 0); + /** Sets the Photo JPEG data. + * \param data JPEG data + * \param bufferSize JPEG buffer size + */ + bool setJpeg(const std::string &data, uint32_t bufferSize = 0); + void setJson(const char *json, uint32_t bufferSize = 0); /**< Sets the Photo JSON data. */ + void setHeader(const char *header, uint32_t headerSum, uint32_t headerSum2 = 0); /**< Sets the Photo header. */ + void setTitle(const char *title, uint32_t bufferSize = 0); /**< Sets the Photo title. */ + +private: + RagePhotoData *m_data; + RagePhotoFormatParser *m_parser; +}; +#endif // __cplusplus + +#endif // RAGEPHOTO_HPP diff --git a/src/RagePhotoA b/src/RagePhotoA new file mode 100644 index 0000000..28c2211 --- /dev/null +++ b/src/RagePhotoA @@ -0,0 +1 @@ +#include "RagePhotoA.hpp" diff --git a/src/RagePhotoA.h b/src/RagePhotoA.hpp similarity index 99% rename from src/RagePhotoA.h rename to src/RagePhotoA.hpp index c37a3d0..72955aa 100644 --- a/src/RagePhotoA.h +++ b/src/RagePhotoA.hpp @@ -16,11 +16,11 @@ * responsible for anything with use of the software, you are self responsible. *****************************************************************************/ -#ifndef RAGEPHOTOA_H -#define RAGEPHOTOA_H +#ifndef RAGEPHOTOA_HPP +#define RAGEPHOTOA_HPP #ifdef __cplusplus -#include "RagePhotoC.h" +#include "RagePhoto.h" #include #include @@ -343,8 +343,6 @@ public: private: ragephoto_t instance; }; -#else -#include "RagePhotoC.h" #endif // __cplusplus -#endif // RAGEPHOTOA_H +#endif // RAGEPHOTOA_HPP diff --git a/src/RagePhotoC.h b/src/RagePhotoC.h deleted file mode 100644 index 136de9a..0000000 --- a/src/RagePhotoC.h +++ /dev/null @@ -1,319 +0,0 @@ -/***************************************************************************** -* libragephoto RAGE Photo Parser -* Copyright (C) 2021-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. -*****************************************************************************/ - -#ifndef RAGEPHOTOC_H -#define RAGEPHOTOC_H - -#include "RagePhotoLibrary.h" -#include "RagePhotoTypedefs.h" -#include -#include - -#ifdef LIBRAGEPHOTO_C_NOAPI -#error "libragephoto was built without C API" -#endif // LIBRAGEPHOTO_C_NOAPI - -#ifdef __cplusplus -extern "C" { -#endif // __cplusplus - -/** C API for RagePhoto. -* \file RagePhotoC.h -*/ - -/** RagePhoto C instance/C++ class typedef. */ -typedef void* ragephoto_t; - -/** Opens a \p ragephoto_t instance. */ -LIBRAGEPHOTO_C_PUBLIC ragephoto_t ragephoto_open(); - -/** Add a custom defined RagePhotoFormatParser. -* \param instance \p ragephoto_t instance -* \param rp_parser RagePhotoFormatParser parser to add -*/ -LIBRAGEPHOTO_C_PUBLIC void ragephoto_addparser(ragephoto_t instance, RagePhotoFormatParser *rp_parser); - -/** Resets the RagePhotoData object to default values. -* \param instance \p ragephoto_t instance -*/ -LIBRAGEPHOTO_C_PUBLIC void ragephoto_clear(ragephoto_t instance); - -/** Resets the RagePhotoData object to default values. -* \param rp_data RagePhotoData object -*/ -LIBRAGEPHOTO_C_PUBLIC void ragephotodata_clear(RagePhotoData *rp_data); - -/** Loads a Photo from a const char*. -* \param instance \p ragephoto_t instance -* \param data Photo data -* \param size Photo data size -*/ -LIBRAGEPHOTO_C_PUBLIC bool ragephoto_load(ragephoto_t instance, const char *data, size_t size); - -/** Loads a Photo from a const char*. -* \param rp_data RagePhotoData object -* \param rp_parser RagePhotoFormatParser parser array -* \param data Photo data -* \param size Photo data size -*/ -LIBRAGEPHOTO_C_PUBLIC bool ragephotodata_load(RagePhotoData *rp_data, RagePhotoFormatParser *rp_parser, const char *data, size_t size); - -/** Loads a Photo from a file. -* \param instance \p ragephoto_t instance -* \param filename File to load -*/ -LIBRAGEPHOTO_C_PUBLIC bool ragephoto_loadfile(ragephoto_t instance, const char *filename); - -/** Returns the last error occurred. -* \param instance \p ragephoto_t instance -*/ -LIBRAGEPHOTO_C_PUBLIC int32_t ragephoto_error(ragephoto_t instance); - -/** Returns the GTA V default Photo Buffer Size. */ -LIBRAGEPHOTO_C_PUBLIC uint32_t ragephoto_defpbuf_gta5(); - -/** Returns the RDR 2 default Photo Buffer Size. */ -LIBRAGEPHOTO_C_PUBLIC uint32_t ragephoto_defpbuf_rdr2(); - -/** Returns the GTA V Photo Format. */ -LIBRAGEPHOTO_C_PUBLIC uint32_t ragephoto_format_gta5(); - -/** Returns the RDR 2 Photo Format. */ -LIBRAGEPHOTO_C_PUBLIC uint32_t ragephoto_format_rdr2(); - -/** Returns the internal RagePhotoData object. -* \param instance \p ragephoto_t instance -*/ -LIBRAGEPHOTO_C_PUBLIC RagePhotoData* ragephoto_getphotodata(ragephoto_t instance); - -/** Returns the Photo description. -* \param instance \p ragephoto_t instance -*/ -LIBRAGEPHOTO_C_PUBLIC const char* ragephoto_getphotodesc(ragephoto_t instance); - -/** Returns the Photo Format (GTA V or RDR 2). -* \param instance \p ragephoto_t instance -*/ -LIBRAGEPHOTO_C_PUBLIC uint32_t ragephoto_getphotoformat(ragephoto_t instance); - -/** Returns the Photo JPEG data. -* \param instance \p ragephoto_t instance -*/ -LIBRAGEPHOTO_C_PUBLIC const char* ragephoto_getphotojpeg(ragephoto_t instance); - -/** Returns the Photo JSON data. -* \param instance \p ragephoto_t instance -*/ -LIBRAGEPHOTO_C_PUBLIC const char* ragephoto_getphotojson(ragephoto_t instance); - -/** Returns the Photo header. -* \param instance \p ragephoto_t instance -*/ -LIBRAGEPHOTO_C_PUBLIC const char* ragephoto_getphotoheader(ragephoto_t instance); - -/** Returns the Photo JPEG sign. -* \param instance \p ragephoto_t instance -*/ -LIBRAGEPHOTO_C_PUBLIC uint64_t ragephoto_getphotosign(ragephoto_t instance); - -/** Returns the Photo JPEG sign. -* \param instance \p ragephoto_t instance -* \param photoFormat Photo Format (GTA V or RDR 2) -*/ -LIBRAGEPHOTO_C_PUBLIC uint64_t ragephoto_getphotosignf(ragephoto_t instance, uint32_t photoFormat); - -/** Returns the Photo JPEG sign. -* \param rp_data RagePhotoData object -*/ -LIBRAGEPHOTO_C_PUBLIC uint64_t ragephotodata_getphotosign(RagePhotoData *rp_data); - -/** Returns the Photo JPEG sign. -* \param rp_data RagePhotoData object -* \param photoFormat Photo Format (GTA V or RDR 2) -*/ -LIBRAGEPHOTO_C_PUBLIC uint64_t ragephotodata_getphotosignf(RagePhotoData *rp_data, uint32_t photoFormat); - -/** Returns the Photo JPEG data size. -* \param instance \p ragephoto_t instance -*/ -LIBRAGEPHOTO_C_PUBLIC uint32_t ragephoto_getphotosize(ragephoto_t instance); - -/** Returns the Photo title. -* \param instance \p ragephoto_t instance -*/ -LIBRAGEPHOTO_C_PUBLIC const char* ragephoto_getphototitle(ragephoto_t instance); - -/** Returns the Photo save file size. -* \param instance \p ragephoto_t instance -*/ -LIBRAGEPHOTO_C_PUBLIC size_t ragephoto_getsavesize(ragephoto_t instance); - -/** Returns the Photo save file size. -* \param rp_data RagePhotoData object -* \param rp_parser RagePhotoFormatParser parser array -*/ -LIBRAGEPHOTO_C_PUBLIC size_t ragephotodata_getsavesize(RagePhotoData *rp_data, RagePhotoFormatParser *rp_parser); - -/** Returns the Photo save file size. -* \param instance \p ragephoto_t instance -* \param photoFormat Photo Format (GTA V or RDR 2) -*/ -LIBRAGEPHOTO_C_PUBLIC size_t ragephoto_getsavesizef(ragephoto_t instance, uint32_t photoFormat); - -/** Returns the Photo save file size. -* \param rp_data RagePhotoData object -* \param rp_parser RagePhotoFormatParser parser array -* \param photoFormat Photo Format (GTA V or RDR 2) -*/ -LIBRAGEPHOTO_C_PUBLIC size_t ragephotodata_getsavesizef(RagePhotoData *rp_data, RagePhotoFormatParser *rp_parser, uint32_t photoFormat); - -/** Saves a Photo to a char*. -* \param instance \p ragephoto_t instance -* \param data Photo data -*/ -LIBRAGEPHOTO_C_PUBLIC bool ragephoto_save(ragephoto_t instance, char *data); - -/** Saves a Photo to a char*. -* \param rp_data RagePhotoData object -* \param rp_parser RagePhotoFormatParser parser array -* \param data Photo data -*/ -LIBRAGEPHOTO_C_PUBLIC bool ragephotodata_save(RagePhotoData *rp_data, RagePhotoFormatParser *rp_parser, char *data); - -/** Saves a Photo to a char*. -* \param instance \p ragephoto_t instance -* \param data Photo data -* \param photoFormat Photo Format (GTA V or RDR 2) -*/ -LIBRAGEPHOTO_C_PUBLIC bool ragephoto_savef(ragephoto_t instance, char *data, uint32_t photoFormat); - -/** Saves a Photo to a char*. -* \param rp_data RagePhotoData object -* \param rp_parser RagePhotoFormatParser parser array -* \param data Photo data -* \param photoFormat Photo Format (GTA V or RDR 2) -*/ -LIBRAGEPHOTO_C_PUBLIC bool ragephotodata_savef(RagePhotoData *rp_data, RagePhotoFormatParser *rp_parser, char *data, uint32_t photoFormat); - -/** Saves a Photo to a file. -* \param instance \p ragephoto_t instance -* \param filename File to save -*/ -LIBRAGEPHOTO_C_PUBLIC bool ragephoto_savefile(ragephoto_t instance, const char *filename); - -/** Saves a Photo to a file. -* \param instance \p ragephoto_t instance -* \param filename File to save -* \param photoFormat Photo Format (GTA V or RDR 2) -*/ -LIBRAGEPHOTO_C_PUBLIC bool ragephoto_savefilef(ragephoto_t instance, const char *filename, uint32_t photoFormat); - -/** Sets all cross-format Buffer to default size. -* \param instance \p ragephoto_t instance -*/ -LIBRAGEPHOTO_C_PUBLIC void ragephoto_setbufferdefault(ragephoto_t instance); - -/** Sets all cross-format Buffer to default size. -* \param rp_data RagePhotoData object -*/ -LIBRAGEPHOTO_C_PUBLIC void ragephotodata_setbufferdefault(RagePhotoData *rp_data); - -/** Moves all Buffer offsets to correct position. -* \param instance \p ragephoto_t instance -*/ -LIBRAGEPHOTO_C_PUBLIC void ragephoto_setbufferoffsets(ragephoto_t instance); - -/** Moves all Buffer offsets to correct position. -* \param rp_data RagePhotoData object -*/ -LIBRAGEPHOTO_C_PUBLIC void ragephotodata_setbufferoffsets(RagePhotoData *rp_data); - -/** Sets the internal RagePhotoData object. -* \param instance \p ragephoto_t instance -* \param rp_data RagePhotoData object being set -*/ -LIBRAGEPHOTO_C_PUBLIC bool ragephoto_setphotodata(ragephoto_t instance, RagePhotoData *rp_data); - -/** Copies RagePhotoData object to internal RagePhotoData object. -* \param instance \p ragephoto_t instance -* \param rp_data RagePhotoData object being copied -*/ -LIBRAGEPHOTO_C_PUBLIC bool ragephoto_setphotodatac(ragephoto_t instance, RagePhotoData *rp_data); - -/** Sets the Photo description. -* \param instance \p ragephoto_t instance -* \param description Description -* \param bufferSize Description buffer size -* -* Default bufferSize: 256UL -*/ -LIBRAGEPHOTO_C_PUBLIC void ragephoto_setphotodesc(ragephoto_t instance, const char *description, uint32_t bufferSize); - -/** Sets the Photo Format (GTA V or RDR 2). -* \param instance \p ragephoto_t instance -* \param photoFormat Photo Format (GTA V or RDR 2) -*/ -LIBRAGEPHOTO_C_PUBLIC void ragephoto_setphotoformat(ragephoto_t instance, uint32_t photoFormat); - -/** Sets the Photo JPEG data. -* \param instance \p ragephoto_t instance -* \param data JPEG data -* \param size JPEG data size -* \param bufferSize JPEG buffer size -* -* Default bufferSize: ragephoto_defpbuf_gta5() or ragephoto_defpbuf_rdr2() -*/ -LIBRAGEPHOTO_C_PUBLIC bool ragephoto_setphotojpeg(ragephoto_t instance, const char *data, uint32_t size, uint32_t bufferSize); - -/** Sets the Photo JSON data. -* \param instance \p ragephoto_t instance -* \param json JSON data -* \param bufferSize JSON data buffer size -* -* Default bufferSize: 3072UL -*/ -LIBRAGEPHOTO_C_PUBLIC void ragephoto_setphotojson(ragephoto_t instance, const char *json, uint32_t bufferSize); - -/** Sets the Photo header. */ -LIBRAGEPHOTO_C_PUBLIC void ragephoto_setphotoheader(ragephoto_t instance, const char *header, uint32_t headerSum); - -/** Sets the Photo header. (RDR 2) */ -LIBRAGEPHOTO_C_PUBLIC void ragephoto_setphotoheader2(ragephoto_t instance, const char *header, uint32_t headerSum, uint32_t headerSum2); - -/** Sets the Photo title. -* \param instance \p ragephoto_t instance -* \param title Title -* \param bufferSize Title buffer size -* -* Default bufferSize: 256UL -*/ -LIBRAGEPHOTO_C_PUBLIC void ragephoto_setphototitle(ragephoto_t instance, const char *title, uint32_t bufferSize); - -/** Closes a \p ragephoto_t instance. -* \param instance \p ragephoto_t instance -*/ -LIBRAGEPHOTO_C_PUBLIC void ragephoto_close(ragephoto_t instance); - -/** Returns the library version. */ -LIBRAGEPHOTO_C_PUBLIC const char* ragephoto_version(); - -#ifdef __cplusplus -} -#endif // __cplusplus - -#endif // RAGEPHOTOC_H diff --git a/src/RagePhotoLibrary.h b/src/RagePhotoLibrary.h index ffffba9..e50f44f 100644 --- a/src/RagePhotoLibrary.h +++ b/src/RagePhotoLibrary.h @@ -59,10 +59,9 @@ /* ENABLE C API FOR RAGEPHOTO WASM LIBRARY BEGIN */ #ifdef LIBRAGEPHOTO_WASM -#ifdef RAGEPHOTO_C_NOAPI -#undef RAGEPHOTO_C_NOAPI +#ifndef RAGEPHOTO_C_API #define RAGEPHOTO_C_API -#endif // RAGEPHOTO_C_NOAPI +#endif // RAGEPHOTO_C_API #endif // LIBRAGEPHOTO_WASM /* ENABLE C API FOR RAGEPHOTO WASM LIBRARY END */