summaryrefslogtreecommitdiff
path: root/tools/gbagfx/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/gbagfx/main.c')
-rw-r--r--tools/gbagfx/main.c302
1 files changed, 0 insertions, 302 deletions
diff --git a/tools/gbagfx/main.c b/tools/gbagfx/main.c
deleted file mode 100644
index cc1e8f807..000000000
--- a/tools/gbagfx/main.c
+++ /dev/null
@@ -1,302 +0,0 @@
-// Copyright (c) 2015 YamaArashi
-
-#include <stdio.h>
-#include <string.h>
-#include <stdbool.h>
-#include "global.h"
-#include "util.h"
-#include "gfx.h"
-#include "convert_png.h"
-#include "jasc_pal.h"
-#include "lz.h"
-#include "font.h"
-
-struct CommandHandler
-{
- const char *inputFileExtension;
- const char *outputFileExtension;
- void(*function)(char *inputPath, char *outputPath, int argc, char **argv);
-};
-
-void ConvertGbaToPng(char *inputPath, char *outputPath, int width, int bitDepth, char *paletteFilePath, bool hasTransparency)
-{
- struct Image image;
-
- if (paletteFilePath != NULL) {
- ReadGbaPalette(paletteFilePath, &image.palette);
- image.hasPalette = true;
- } else {
- image.hasPalette = false;
- }
-
- ReadImage(inputPath, width, bitDepth, &image, !image.hasPalette);
-
- image.hasTransparency = hasTransparency;
-
- WritePng(outputPath, &image);
-
- FreeImage(&image);
-}
-
-void ConvertPngToGba(char *inputPath, char *outputPath, int numTiles, int bitDepth)
-{
- struct Image image;
-
- image.bitDepth = bitDepth;
-
- ReadPng(inputPath, &image);
-
- WriteImage(outputPath, numTiles, bitDepth, &image, !image.hasPalette);
-
- FreeImage(&image);
-}
-
-void HandleGbaToPngCommand(char *inputPath, char *outputPath, int argc, char **argv)
-{
- char *inputFileExtension = GetFileExtension(inputPath);
- int bitDepth = inputFileExtension[0] - '0';
- char *paletteFilePath;
- bool hasPalette = false;
- bool hasTransparency = false;
- int width = 1;
-
- for (int i = 3; i < argc; i++) {
- char *option = argv[i];
-
- if (strcmp(option, "-palette") == 0) {
- if (i + 1 >= argc)
- FATAL_ERROR("No palette file path following \"-palette\".\n");
-
- i++;
-
- paletteFilePath = argv[i];
-
- hasPalette = true;
- } else if (strcmp(option, "-object") == 0) {
- hasTransparency = true;
- } else if (strcmp(option, "-width") == 0) {
- if (i + 1 >= argc)
- FATAL_ERROR("No width following \"-width\".\n");
-
- i++;
-
- if (!ParseNumber(argv[i], NULL, 10, &width))
- FATAL_ERROR("Failed to parse width.\n");
-
- if (width < 1)
- FATAL_ERROR("Width must be positive.\n");
- } else {
- FATAL_ERROR("Unrecognized option \"%s\".\n", option);
- }
- }
-
- ConvertGbaToPng(inputPath, outputPath, width, bitDepth, hasPalette ? paletteFilePath : NULL, hasTransparency);
-}
-
-void HandlePngToGbaCommand(char *inputPath, char *outputPath, int argc, char **argv)
-{
- char *outputFileExtension = GetFileExtension(outputPath);
- int bitDepth = outputFileExtension[0] - '0';
- int numTiles = 0;
-
- for (int i = 3; i < argc; i++) {
- char *option = argv[i];
-
- if (strcmp(option, "-num_tiles") == 0) {
- if (i + 1 >= argc)
- FATAL_ERROR("No number of tiles following \"-num_tiles\".\n");
-
- i++;
-
- if (!ParseNumber(argv[i], NULL, 10, &numTiles))
- FATAL_ERROR("Failed to parse number of tiles.\n");
-
- if (numTiles < 1)
- FATAL_ERROR("Number of tiles must be positive.\n");
- } else {
- FATAL_ERROR("Unrecognized option \"%s\".\n", option);
- }
- }
-
- ConvertPngToGba(inputPath, outputPath, numTiles, bitDepth);
-}
-
-void HandleGbaToJascPaletteCommand(char *inputPath, char *outputPath, int argc UNUSED, char **argv UNUSED)
-{
- struct Palette palette;
-
- ReadGbaPalette(inputPath, &palette);
- WriteJascPalette(outputPath, &palette);
-}
-
-void HandleJascToGbaPaletteCommand(char *inputPath, char *outputPath, int argc, char **argv)
-{
- int numColors = 0;
-
- for (int i = 3; i < argc; i++) {
- char *option = argv[i];
-
- if (strcmp(option, "-num_colors") == 0) {
- if (i + 1 >= argc)
- FATAL_ERROR("No number of colors following \"-num_colors\".\n");
-
- i++;
-
- if (!ParseNumber(argv[i], NULL, 10, &numColors))
- FATAL_ERROR("Failed to parse number of colors.\n");
-
- if (numColors < 1)
- FATAL_ERROR("Number of colors must be positive.\n");
- } else {
- FATAL_ERROR("Unrecognized option \"%s\".\n", option);
- }
- }
-
- struct Palette palette;
-
- ReadJascPalette(inputPath, &palette);
-
- if (numColors != 0)
- palette.numColors = numColors;
-
- WriteGbaPalette(outputPath, &palette);
-}
-
-void HandleLatinFontToPngCommand(char *inputPath, char *outputPath, int argc UNUSED, char **argv UNUSED)
-{
- struct Image image;
-
- ReadLatinFont(inputPath, &image);
- WritePng(outputPath, &image);
-
- FreeImage(&image);
-}
-
-void HandlePngToLatinFontCommand(char *inputPath, char *outputPath, int argc UNUSED, char **argv UNUSED)
-{
- struct Image image;
-
- image.bitDepth = 2;
-
- ReadPng(inputPath, &image);
- WriteLatinFont(outputPath, &image);
-
- FreeImage(&image);
-}
-
-void HandleHalfwidthJapaneseFontToPngCommand(char *inputPath, char *outputPath, int argc UNUSED, char **argv UNUSED)
-{
- struct Image image;
-
- ReadHalfwidthJapaneseFont(inputPath, &image);
- WritePng(outputPath, &image);
-
- FreeImage(&image);
-}
-
-void HandlePngToHalfwidthJapaneseFontCommand(char *inputPath, char *outputPath, int argc UNUSED, char **argv UNUSED)
-{
- struct Image image;
-
- image.bitDepth = 2;
-
- ReadPng(inputPath, &image);
- WriteHalfwidthJapaneseFont(outputPath, &image);
-
- FreeImage(&image);
-}
-
-void HandleFullwidthJapaneseFontToPngCommand(char *inputPath, char *outputPath, int argc UNUSED, char **argv UNUSED)
-{
- struct Image image;
-
- ReadFullwidthJapaneseFont(inputPath, &image);
- WritePng(outputPath, &image);
-
- FreeImage(&image);
-}
-
-void HandlePngToFullwidthJapaneseFontCommand(char *inputPath, char *outputPath, int argc UNUSED, char **argv UNUSED)
-{
- struct Image image;
-
- image.bitDepth = 2;
-
- ReadPng(inputPath, &image);
- WriteFullwidthJapaneseFont(outputPath, &image);
-
- FreeImage(&image);
-}
-
-void HandleLZCompressCommand(char *inputPath, char *outputPath, int argc UNUSED, char **argv UNUSED)
-{
- int fileSize;
- unsigned char *buffer = ReadWholeFile(inputPath, &fileSize);
-
- int compressedSize;
- unsigned char *compressedData = LZCompress(buffer, fileSize, &compressedSize);
-
- free(buffer);
-
- WriteWholeFile(outputPath, compressedData, compressedSize);
-
- free(compressedData);
-}
-
-void HandleLZDecompressCommand(char *inputPath, char *outputPath, int argc UNUSED, char **argv UNUSED)
-{
- int fileSize;
- unsigned char *buffer = ReadWholeFile(inputPath, &fileSize);
-
- int uncompressedSize;
- unsigned char *uncompressedData = LZDecompress(buffer, fileSize, &uncompressedSize);
-
- free(buffer);
-
- WriteWholeFile(outputPath, uncompressedData, uncompressedSize);
-
- free(uncompressedData);
-}
-
-int main(int argc, char **argv)
-{
- if (argc < 3)
- FATAL_ERROR("Usage: gbagfx INPUT_PATH OUTPUT_PATH [options...]\n");
-
- struct CommandHandler handlers[] =
- {
- { "1bpp", "png", HandleGbaToPngCommand },
- { "4bpp", "png", HandleGbaToPngCommand },
- { "8bpp", "png", HandleGbaToPngCommand },
- { "png", "1bpp", HandlePngToGbaCommand },
- { "png", "4bpp", HandlePngToGbaCommand },
- { "png", "8bpp", HandlePngToGbaCommand },
- { "gbapal", "pal", HandleGbaToJascPaletteCommand },
- { "pal", "gbapal", HandleJascToGbaPaletteCommand },
- { "latfont", "png", HandleLatinFontToPngCommand },
- { "png", "latfont", HandlePngToLatinFontCommand },
- { "hwjpnfont", "png", HandleHalfwidthJapaneseFontToPngCommand },
- { "png", "hwjpnfont", HandlePngToHalfwidthJapaneseFontCommand },
- { "fwjpnfont", "png", HandleFullwidthJapaneseFontToPngCommand },
- { "png", "fwjpnfont", HandlePngToFullwidthJapaneseFontCommand },
- { NULL, "lz", HandleLZCompressCommand },
- { "lz", NULL, HandleLZDecompressCommand },
- { NULL, NULL, NULL }
- };
-
- char *inputPath = argv[1];
- char *outputPath = argv[2];
-
- for (int i = 0; handlers[i].function != NULL; i++) {
- char *inputFileExtension = GetFileExtension(inputPath);
- char *outputFileExtension = GetFileExtension(outputPath);
-
- if ((handlers[i].inputFileExtension == NULL || strcmp(handlers[i].inputFileExtension, inputFileExtension) == 0)
- && (handlers[i].outputFileExtension == NULL || strcmp(handlers[i].outputFileExtension, outputFileExtension) == 0)) {
- handlers[i].function(inputPath, outputPath, argc, argv);
- return 0;
- }
- }
-
- FATAL_ERROR("Don't know how to convert \"%s\" to \"%s\".\n", inputPath, outputPath);
-}