improve docs, add setFormat and setBufferDefault

This commit is contained in:
Syping 2021-09-16 03:07:11 +02:00
parent af5c571b16
commit 87d61c1c69
5 changed files with 54 additions and 12 deletions

View file

@ -17,7 +17,7 @@ sudo make install
``` ```
##### Optional CMake flags ##### Optional CMake flags
`-DWITH_EXTRACT=OFF` `-DWITH_GTK_EXAMPLE=ON` `-DWITH_QT_EXAMPLE=ON` `-DBUILD_SHARED=OFF` `-DWITH_DOCUMENTATION=ON` `-DWITH_EXTRACT=OFF` `-DWITH_GTK_EXAMPLE=ON` `-DWITH_QT_EXAMPLE=ON` `-DBUILD_SHARED=OFF`
#### How to Use libragephoto #### How to Use libragephoto
@ -31,6 +31,7 @@ std::string title = ragePhoto.title();
RagePhoto::Error error = ragePhoto.error(); RagePhoto::Error error = ragePhoto.error();
RagePhoto::PhotoFormat format = ragePhoto.format(); RagePhoto::PhotoFormat format = ragePhoto.format();
``` ```
[RagePhoto API](https://libragephoto.syping.de/doc/classRagePhoto.html)
#### How to Use ragephoto-extract #### How to Use ragephoto-extract

View file

@ -1,6 +1,6 @@
/*! \mainpage /*! \mainpage
#### Open Source RAGE Photo Parser for GTA V and RDR 2 <h4>Open Source RAGE Photo Parser for GTA V and RDR 2</h4>
- Read RAGE Photos error free and correct - Read RAGE Photos error free and correct
- Support for metadata stored in RAGE Photos - Support for metadata stored in RAGE Photos

View file

@ -36,6 +36,7 @@ RagePhoto::RagePhoto()
{ {
p_photoLoaded = false; p_photoLoaded = false;
p_photoData = nullptr; p_photoData = nullptr;
setBufferDefault();
} }
RagePhoto::~RagePhoto() RagePhoto::~RagePhoto()
@ -56,6 +57,7 @@ void RagePhoto::clear()
p_titleString.clear(); p_titleString.clear();
p_error = Error::Uninitialised; p_error = Error::Uninitialised;
p_photoFormat = PhotoFormat::Undefined; p_photoFormat = PhotoFormat::Undefined;
setBufferDefault();
} }
bool RagePhoto::load(const char *data, size_t length) bool RagePhoto::load(const char *data, size_t length)
@ -344,6 +346,25 @@ bool RagePhoto::load(const char *data, size_t length)
std::cout << "Benchmark: " << benchmark_ns.count() << "ns" << std::endl; std::cout << "Benchmark: " << benchmark_ns.count() << "ns" << std::endl;
#endif #endif
#ifdef RAGEPHOTO_DEBUG
std::cout << "header: " << p_photoString << std::endl;
std::cout << "headerSum: " << p_headerSum << std::endl;
std::cout << "photoBuffer: " << p_photoBuffer << std::endl;
std::cout << "descBuffer: " << p_descBuffer << std::endl;
std::cout << "descOffset: " << p_descOffset << std::endl;
std::cout << "jsonBuffer: " << p_jsonBuffer << std::endl;
std::cout << "jsonOffset: " << p_jsonOffset << std::endl;
std::cout << "titlBuffer: " << p_titlBuffer << std::endl;
std::cout << "titlOffset: " << p_titlOffset << std::endl;
std::cout << "eofOffset: " << p_endOfFile << std::endl;
std::cout << "moveOffsets()" << std::endl;
moveOffsets();
std::cout << "descOffset: " << p_descOffset << std::endl;
std::cout << "jsonOffset: " << p_jsonOffset << std::endl;
std::cout << "titlOffset: " << p_titlOffset << std::endl;
std::cout << "eofOffset: " << p_endOfFile << std::endl;
#endif
p_error = Error::NoError; // 255 p_error = Error::NoError; // 255
return true; return true;
} }
@ -374,7 +395,7 @@ const char* RagePhoto::photoData()
return nullptr; return nullptr;
} }
const uint32_t RagePhoto::photoSize() uint32_t RagePhoto::photoSize()
{ {
if (p_photoLoaded) if (p_photoLoaded)
return p_photoSize; return p_photoSize;
@ -402,6 +423,14 @@ const std::string RagePhoto::title()
return p_titleString; return p_titleString;
} }
void RagePhoto::setBufferDefault()
{
p_descBuffer = DEFAULT_DESCBUFFER;
p_jsonBuffer = DEFAULT_JSONBUFFER;
p_titlBuffer = DEFAULT_TITLBUFFER;
moveOffsets();
}
void RagePhoto::setDescription(const std::string &description, uint32_t bufferSize) void RagePhoto::setDescription(const std::string &description, uint32_t bufferSize)
{ {
p_descriptionString = description; p_descriptionString = description;
@ -411,6 +440,11 @@ void RagePhoto::setDescription(const std::string &description, uint32_t bufferSi
} }
} }
void RagePhoto::setFormat(PhotoFormat photoFormat)
{
p_photoFormat = photoFormat;
}
void RagePhoto::setJson(const std::string &json, uint32_t bufferSize) void RagePhoto::setJson(const std::string &json, uint32_t bufferSize)
{ {
p_jsonString = json; p_jsonString = json;

View file

@ -24,6 +24,12 @@
#include <cstdint> #include <cstdint>
#include <cstdio> #include <cstdio>
#define DEFAULT_GTAV_PHOTOBUFFER 524288UL /**< GTA V default Photo Buffer Size */
#define DEFAULT_RDR2_PHOTOBUFFER 1048576UL /**< RDR 2 default Photo Buffer Size */
#define DEFAULT_DESCBUFFER 256UL /**< Default Description Buffer Size */
#define DEFAULT_JSONBUFFER 3072UL /**< Default JSON Buffer Size */
#define DEFAULT_TITLBUFFER 256UL /**< Default Title Buffer Size */
class LIBRAGEPHOTO_EXPORT RagePhoto class LIBRAGEPHOTO_EXPORT RagePhoto
{ {
public: public:
@ -79,21 +85,25 @@ public:
Error error(); /**< Returns the last error occurred. */ Error error(); /**< Returns the last error occurred. */
PhotoFormat format(); /**< Returns the Photo Format (GTA V or RDR 2). */ PhotoFormat format(); /**< Returns the Photo Format (GTA V or RDR 2). */
const char *photoData(); /**< Returns the Photo JPEG data. */ const char *photoData(); /**< Returns the Photo JPEG data. */
const uint32_t photoSize(); /**< Returns the Photo JPEG data size. */ uint32_t photoSize(); /**< Returns the Photo JPEG data size. */
const std::string description(); /**< Returns the Photo description. */ const std::string description(); /**< Returns the Photo description. */
const std::string json(); /**< Returns the Photo JSON data. */ const std::string json(); /**< Returns the Photo JSON data. */
const std::string header(); /**< Returns the Photo header. */ const std::string header(); /**< Returns the Photo header. */
const std::string title(); /**< Returns the Photo title. */ const std::string title(); /**< Returns the Photo title. */
void setBufferDefault(); /**< Sets all cross-format Buffer to default size. */
void setDescription(const std::string &description, uint32_t bufferSize = 0); /**< Sets the Photo description. */ void setDescription(const std::string &description, uint32_t bufferSize = 0); /**< Sets the Photo description. */
void setFormat(PhotoFormat photoFormat); /**< Sets the Photo Format (GTA V or RDR 2). */
void setJson(const std::string &json, uint32_t bufferSize = 0); /**< Sets the Photo JSON data. */ void setJson(const std::string &json, uint32_t bufferSize = 0); /**< Sets the Photo JSON data. */
void setHeader(const std::string &header, uint32_t headerSum); /**< Sets the Photo header. (expert only) */ void setHeader(const std::string &header, uint32_t headerSum); /**< Sets the Photo header. (expert only) */
/** Sets the Photo JPEG data. /** Sets the Photo JPEG data.
* @param data JPEG data * \param data JPEG data
* @param size JPEG data size * \param size JPEG data size
* \param bufferSize JPEG buffer size
*/ */
bool setPhotoData(const char *data, uint32_t size, uint32_t bufferSize = 0); bool setPhotoData(const char *data, uint32_t size, uint32_t bufferSize = 0);
/** Sets the Photo JPEG data. /** Sets the Photo JPEG data.
* @param data JPEG data * \param data JPEG data
* \param bufferSize JPEG buffer size
*/ */
bool setPhotoData(const std::string &data, uint32_t bufferSize = 0); bool setPhotoData(const std::string &data, uint32_t bufferSize = 0);
void setTitle(const std::string &title, uint32_t bufferSize = 0); /**< Sets the Photo title. */ void setTitle(const std::string &title, uint32_t bufferSize = 0); /**< Sets the Photo title. */

View file

@ -23,7 +23,7 @@
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
const char photoHeader[256] = { char photoHeader[256] = {
0x50, 0x00, 0x48, 0x00, 0x4f, 0x00, 0x54, 0x00, 0x50, 0x00, 0x48, 0x00, 0x4f, 0x00, 0x54, 0x00,
0x4f, 0x00, 0x20, 0x00, 0x2d, 0x00, 0x20, 0x00, 0x4f, 0x00, 0x20, 0x00, 0x2d, 0x00, 0x20, 0x00,
0x30, 0x00, 0x32, 0x00, 0x2f, 0x00, 0x30, 0x00, 0x30, 0x00, 0x32, 0x00, 0x2f, 0x00, 0x30, 0x00,
@ -57,10 +57,7 @@ int main(int argc, char *argv[])
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
}; };
char16_t photoHeader16[128];
memcpy(photoHeader16, photoHeader, 256);
std::wstring_convert<std::codecvt_utf8_utf16<char16_t>,char16_t> convert; std::wstring_convert<std::codecvt_utf8_utf16<char16_t>,char16_t> convert;
std::string photoString = convert.to_bytes(photoHeader16); std::string photoString = convert.to_bytes(reinterpret_cast<char16_t*>(photoHeader));
std::cout << photoString << std::endl;
return strcmp(photoString.c_str(), "PHOTO - 02/01/17 08:42:44"); return strcmp(photoString.c_str(), "PHOTO - 02/01/17 08:42:44");
} }