mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
Extension to parse text for image path
This commit is contained in:
52
extensions/parse_imagepath/ace_parse_imagepath.cpp
Normal file
52
extensions/parse_imagepath/ace_parse_imagepath.cpp
Normal file
@ -0,0 +1,52 @@
|
||||
/*
|
||||
* ace_parse_imagepath.cpp
|
||||
* Author: PabstMirror
|
||||
* Gets raw image path from structured text input.
|
||||
*
|
||||
* Takes:
|
||||
* Structured text that usualy has an image:
|
||||
* Example: "<img image='\A3\Ui_f\data\IGUI\Cfg\Actions\open_door_ca.paa' size='2.5' />";
|
||||
*
|
||||
* Returns:
|
||||
* Just the image path or "" if none
|
||||
*/
|
||||
|
||||
#include "ace_common.h"
|
||||
|
||||
#include <sstream>
|
||||
#include <string>
|
||||
|
||||
extern "C" {
|
||||
__declspec (dllexport) void __stdcall RVExtension(char *output, int outputSize, const char *function);
|
||||
};
|
||||
|
||||
std::string getImagePathFromStructuredText(const std::string & input) {
|
||||
std::string returnValue = "";
|
||||
std::size_t endIndex = input.find(".paa");
|
||||
std::size_t startIndex = endIndex - 1;
|
||||
if ((endIndex != std::string::npos) && (endIndex > 1)) {
|
||||
endIndex = endIndex + 4;
|
||||
while ((startIndex > 0) && (returnValue == "")) {
|
||||
if ((input[startIndex]) == '\'') {
|
||||
returnValue = input.substr((startIndex + 1), (endIndex - startIndex - 1));
|
||||
};
|
||||
startIndex = startIndex - 1;
|
||||
};
|
||||
};
|
||||
return returnValue;
|
||||
}
|
||||
|
||||
// i like to live dangerously. jk, fix strncpy sometime pls.
|
||||
#pragma warning( push )
|
||||
#pragma warning( disable : 4996 )
|
||||
|
||||
void __stdcall RVExtension(char *output, int outputSize, const char *function) {
|
||||
if (!strcmp(function, "version")) {
|
||||
strncpy(output, ACE_FULL_VERSION_STR, outputSize);
|
||||
} else {
|
||||
strncpy(output, getImagePathFromStructuredText(function).c_str(), outputSize);
|
||||
output[outputSize - 1] = '\0';
|
||||
}
|
||||
}
|
||||
|
||||
#pragma warning( pop )
|
Reference in New Issue
Block a user