libragephoto: C++ headers have now .hpp extension
RagePhoto.h -> RagePhoto.hpp RagePhotoA.h -> RagePhotoA.hpp RagePhotoC.h -> RagePhoto.h unicode.cmake: exclude codecvt for C builds GitHub Actions: separate C and CXX builds
This commit is contained in:
parent
6acf7b7338
commit
b838c505a4
21 changed files with 601 additions and 510 deletions
29
.github/workflows/ubuntu-c.yml
vendored
Normal file
29
.github/workflows/ubuntu-c.yml
vendored
Normal file
|
@ -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/
|
|
@ -1,4 +1,4 @@
|
||||||
name: Ubuntu
|
name: Ubuntu CXX
|
||||||
|
|
||||||
on: push
|
on: push
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
name: WebAssembly
|
name: WebAssembly C
|
||||||
|
|
||||||
on: push
|
on: push
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@ jobs:
|
||||||
sudo apt-get update -qq
|
sudo apt-get update -qq
|
||||||
sudo apt-get install cmake ninja-build -qq
|
sudo apt-get install cmake ninja-build -qq
|
||||||
- name: Configure CMake
|
- 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
|
- name: Build
|
||||||
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}}
|
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}}
|
||||||
- name: Upload
|
- name: Upload
|
30
.github/workflows/webassembly-cxx.yml
vendored
Normal file
30
.github/workflows/webassembly-cxx.yml
vendored
Normal file
|
@ -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
|
34
.github/workflows/windows-c.yml
vendored
Normal file
34
.github/workflows/windows-c.yml
vendored
Normal file
|
@ -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/
|
|
@ -1,4 +1,4 @@
|
||||||
name: Windows
|
name: Windows CXX
|
||||||
|
|
||||||
on: push
|
on: push
|
||||||
|
|
|
@ -35,7 +35,7 @@ endif()
|
||||||
option(RAGEPHOTO_C_LIBRARY "Build libragephoto as C library" OFF)
|
option(RAGEPHOTO_C_LIBRARY "Build libragephoto as C library" OFF)
|
||||||
if (RAGEPHOTO_C_LIBRARY)
|
if (RAGEPHOTO_C_LIBRARY)
|
||||||
set(RAGEPHOTO_HEADERS
|
set(RAGEPHOTO_HEADERS
|
||||||
src/RagePhotoC.h
|
src/RagePhoto.h
|
||||||
src/RagePhotoLibrary.h
|
src/RagePhotoLibrary.h
|
||||||
src/RagePhotoTypedefs.h
|
src/RagePhotoTypedefs.h
|
||||||
)
|
)
|
||||||
|
@ -44,7 +44,8 @@ if (RAGEPHOTO_C_LIBRARY)
|
||||||
)
|
)
|
||||||
else()
|
else()
|
||||||
set(RAGEPHOTO_HEADERS
|
set(RAGEPHOTO_HEADERS
|
||||||
src/RagePhoto.h
|
src/RagePhoto
|
||||||
|
src/RagePhoto.hpp
|
||||||
src/RagePhotoLibrary.h
|
src/RagePhotoLibrary.h
|
||||||
src/RagePhotoTypedefs.h
|
src/RagePhotoTypedefs.h
|
||||||
)
|
)
|
||||||
|
@ -75,17 +76,19 @@ endif()
|
||||||
if (RAGEPHOTO_C_LIBRARY)
|
if (RAGEPHOTO_C_LIBRARY)
|
||||||
set(LIBRAGEPHOTO_API LIBRAGEPHOTO_C_API)
|
set(LIBRAGEPHOTO_API LIBRAGEPHOTO_C_API)
|
||||||
list(APPEND RAGEPHOTO_HEADERS
|
list(APPEND RAGEPHOTO_HEADERS
|
||||||
src/RagePhotoA.h
|
src/RagePhotoA
|
||||||
|
src/RagePhotoA.hpp
|
||||||
)
|
)
|
||||||
else()
|
else()
|
||||||
if (RAGEPHOTO_C_API)
|
if (RAGEPHOTO_C_API)
|
||||||
set(LIBRAGEPHOTO_API LIBRAGEPHOTO_C_API)
|
set(LIBRAGEPHOTO_API LIBRAGEPHOTO_C_API)
|
||||||
list(APPEND RAGEPHOTO_HEADERS
|
list(APPEND RAGEPHOTO_HEADERS
|
||||||
src/RagePhotoA.h
|
src/RagePhoto.h
|
||||||
src/RagePhotoC.h
|
src/RagePhotoA
|
||||||
|
src/RagePhotoA.hpp
|
||||||
)
|
)
|
||||||
else()
|
else()
|
||||||
set(LIBRAGEPHOTO_API LIBRAGEPHOTO_C_NOAPI)
|
set(LIBRAGEPHOTO_API LIBRAGEPHOTO_CXX_ONLY)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
|
@ -60,7 +60,7 @@ else()
|
||||||
"UNICODE_WINCVT"
|
"UNICODE_WINCVT"
|
||||||
)
|
)
|
||||||
message("-- UnicodeCvt - wincvt")
|
message("-- UnicodeCvt - wincvt")
|
||||||
elseif (CODECVT_COMPAT)
|
elseif (CODECVT_COMPAT AND NOT RAGEPHOTO_C_LIBRARY)
|
||||||
list(APPEND LIBRAGEPHOTO_DEFINES
|
list(APPEND LIBRAGEPHOTO_DEFINES
|
||||||
"UNICODE_CODECVT"
|
"UNICODE_CODECVT"
|
||||||
)
|
)
|
||||||
|
@ -70,5 +70,7 @@ else()
|
||||||
"UNICODE_ICONV"
|
"UNICODE_ICONV"
|
||||||
)
|
)
|
||||||
message("-- UnicodeCvt - iconv")
|
message("-- UnicodeCvt - iconv")
|
||||||
|
else()
|
||||||
|
message("-- UnicodeCvt - none")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
* responsible for anything with use of the software, you are self responsible.
|
* responsible for anything with use of the software, you are self responsible.
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
#include <RagePhoto.h>
|
#include <RagePhoto>
|
||||||
#include <gtkmm/application.h>
|
#include <gtkmm/application.h>
|
||||||
#include <gtkmm/box.h>
|
#include <gtkmm/box.h>
|
||||||
#include <gtkmm/button.h>
|
#include <gtkmm/button.h>
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
* responsible for anything with use of the software, you are self responsible.
|
* responsible for anything with use of the software, you are self responsible.
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
#include <RagePhoto.h>
|
#include <RagePhoto>
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
#include <QHBoxLayout>
|
#include <QHBoxLayout>
|
||||||
#include <QVBoxLayout>
|
#include <QVBoxLayout>
|
||||||
|
|
1
src/RagePhoto
Normal file
1
src/RagePhoto
Normal file
|
@ -0,0 +1 @@
|
||||||
|
#include "RagePhoto.hpp"
|
|
@ -16,7 +16,7 @@
|
||||||
* responsible for anything with use of the software, you are self responsible.
|
* responsible for anything with use of the software, you are self responsible.
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
#include "RagePhotoC.h"
|
#include "RagePhoto.h"
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
* responsible for anything with use of the software, you are self responsible.
|
* responsible for anything with use of the software, you are self responsible.
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
#include "RagePhoto.h"
|
#include <RagePhoto>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
* responsible for anything with use of the software, you are self responsible.
|
* responsible for anything with use of the software, you are self responsible.
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
#include "RagePhotoC.h"
|
#include "RagePhoto.h"
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
|
@ -16,9 +16,9 @@
|
||||||
* responsible for anything with use of the software, you are self responsible.
|
* responsible for anything with use of the software, you are self responsible.
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
#include "RagePhoto.h"
|
#include "RagePhoto.hpp"
|
||||||
#ifdef LIBRAGEPHOTO_C_API
|
#ifdef LIBRAGEPHOTO_C_API
|
||||||
#include "RagePhotoC.h"
|
#include "RagePhoto.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
|
|
450
src/RagePhoto.h
450
src/RagePhoto.h
|
@ -19,175 +19,297 @@
|
||||||
#ifndef RAGEPHOTO_H
|
#ifndef RAGEPHOTO_H
|
||||||
#define RAGEPHOTO_H
|
#define RAGEPHOTO_H
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
#include "RagePhotoLibrary.h"
|
#include "RagePhotoLibrary.h"
|
||||||
#include "RagePhotoTypedefs.h"
|
#include "RagePhotoTypedefs.h"
|
||||||
#include <iostream>
|
#include <stddef.h>
|
||||||
#include <cstdlib>
|
#include <stdint.h>
|
||||||
#include <cstdint>
|
|
||||||
#include <cstdio>
|
|
||||||
|
|
||||||
/**
|
#ifdef __cplusplus
|
||||||
* \brief GTA V and RDR 2 Photo Parser.
|
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:
|
/** RagePhoto C instance/C++ class typedef. */
|
||||||
RagePhotoData *m_data;
|
typedef void* ragephoto_t;
|
||||||
RagePhotoFormatParser *m_parser;
|
|
||||||
};
|
/** Opens a \p ragephoto_t instance. */
|
||||||
#else
|
LIBRAGEPHOTO_C_PUBLIC ragephoto_t ragephoto_open();
|
||||||
#include "RagePhotoC.h"
|
|
||||||
|
/** 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 // __cplusplus
|
||||||
|
|
||||||
#endif // RAGEPHOTO_H
|
#endif // RAGEPHOTO_H
|
||||||
|
|
191
src/RagePhoto.hpp
Normal file
191
src/RagePhoto.hpp
Normal file
|
@ -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 <iostream>
|
||||||
|
#include <cstdlib>
|
||||||
|
#include <cstdint>
|
||||||
|
#include <cstdio>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \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
|
1
src/RagePhotoA
Normal file
1
src/RagePhotoA
Normal file
|
@ -0,0 +1 @@
|
||||||
|
#include "RagePhotoA.hpp"
|
|
@ -16,11 +16,11 @@
|
||||||
* responsible for anything with use of the software, you are self responsible.
|
* responsible for anything with use of the software, you are self responsible.
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
#ifndef RAGEPHOTOA_H
|
#ifndef RAGEPHOTOA_HPP
|
||||||
#define RAGEPHOTOA_H
|
#define RAGEPHOTOA_HPP
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
#include "RagePhotoC.h"
|
#include "RagePhoto.h"
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
|
@ -343,8 +343,6 @@ public:
|
||||||
private:
|
private:
|
||||||
ragephoto_t instance;
|
ragephoto_t instance;
|
||||||
};
|
};
|
||||||
#else
|
|
||||||
#include "RagePhotoC.h"
|
|
||||||
#endif // __cplusplus
|
#endif // __cplusplus
|
||||||
|
|
||||||
#endif // RAGEPHOTOA_H
|
#endif // RAGEPHOTOA_HPP
|
319
src/RagePhotoC.h
319
src/RagePhotoC.h
|
@ -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 <stddef.h>
|
|
||||||
#include <stdint.h>
|
|
||||||
|
|
||||||
#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.
|
|
||||||
|