From 136b1e7456c54e1c990cf9aa232e70f7f023fccc Mon Sep 17 00:00:00 2001 From: Michael Steenbeek Date: Thu, 12 Jul 2018 17:56:49 +0200 Subject: [PATCH] Add sprite file option to force BMP encoding --- src/openrct2/CmdlineSprite.cpp | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/openrct2/CmdlineSprite.cpp b/src/openrct2/CmdlineSprite.cpp index fcc168a8ca..851949e811 100644 --- a/src/openrct2/CmdlineSprite.cpp +++ b/src/openrct2/CmdlineSprite.cpp @@ -246,12 +246,18 @@ static bool sprite_file_export(int32_t spriteIndex, const char *outPath) } } -static bool sprite_file_import(const char *path, int16_t x_offset, int16_t y_offset, bool keep_palette, rct_g1_element *outElement, uint8_t **outBuffer, int *outBufferLength, int32_t mode) +static bool sprite_file_import(const char *path, int16_t x_offset, int16_t y_offset, bool keep_palette, bool forceBmp, rct_g1_element *outElement, uint8_t **outBuffer, int *outBufferLength, int32_t mode) { try { auto format = IMAGE_FORMAT::PNG_32; - auto flags = ImageImporter::IMPORT_FLAGS::RLE; + auto flags = ImageImporter::IMPORT_FLAGS::NONE; + + if (!forceBmp) + { + flags = (ImageImporter::IMPORT_FLAGS)ImageImporter::IMPORT_FLAGS::RLE; + } + if (keep_palette) { format = IMAGE_FORMAT::PNG; @@ -464,7 +470,7 @@ int32_t cmdline_for_sprite(const char **argv, int32_t argc) uint8_t *buffer; int32_t bufferLength; - if (!sprite_file_import(imagePath, x_offset, y_offset, false, &spriteElement, &buffer, &bufferLength, gSpriteMode)) + if (!sprite_file_import(imagePath, x_offset, y_offset, false, false, &spriteElement, &buffer, &bufferLength, gSpriteMode)) return -1; if (!sprite_file_open(spriteFilePath)) { @@ -558,6 +564,14 @@ int32_t cmdline_for_sprite(const char **argv, int32_t argc) } } + // Get forcebmp option, if present + bool forceBmp = false; + json_t* forceBmpObject = json_object_get(sprite_description, "forceBmp"); + if (palette && json_is_boolean(forceBmpObject)) + { + forceBmp = json_boolean_value(forceBmpObject); + } + // Resolve absolute sprite path char *imagePath = platform_get_absolute_path(json_string_value(path), directoryPath); @@ -568,7 +582,7 @@ int32_t cmdline_for_sprite(const char **argv, int32_t argc) if (!sprite_file_import(imagePath, x_offset == nullptr ? 0 : json_integer_value(x_offset), y_offset == nullptr ? 0 : json_integer_value(y_offset), - keep_palette, &spriteElement, &buffer, &bufferLength, gSpriteMode)) + keep_palette, forceBmp, &spriteElement, &buffer, &bufferLength, gSpriteMode)) { fprintf(stderr, "Could not import image file: %s\nCanceling\n", imagePath); json_decref(sprite_list);