From f82a8240b7f160e1a171871b3596cc13cabc34b2 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Wed, 6 Sep 2017 00:24:57 +0300 Subject: Move dyecmd separate sources from dyetool into progs/dyecmd directory. --- src/progs/dyecmd/dyemain.cpp | 119 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 src/progs/dyecmd/dyemain.cpp (limited to 'src/progs/dyecmd/dyemain.cpp') diff --git a/src/progs/dyecmd/dyemain.cpp b/src/progs/dyecmd/dyemain.cpp new file mode 100644 index 000000000..2217508cc --- /dev/null +++ b/src/progs/dyecmd/dyemain.cpp @@ -0,0 +1,119 @@ +/* + * The ManaPlus Client + * Copyright (C) 2013-2017 The ManaPlus Developers + * + * This file is part of The ManaPlus Client. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "logger.h" + +#include "graphicsmanager.h" +#include "maingui.h" +#include "sdlshared.h" + +#include "fs/virtfs/fs.h" + +#include "resources/imagewriter.h" + +#include "resources/image/image.h" + +#ifdef USE_SDL2 +#include "resources/surfaceimagehelper.h" +#endif // USE_SDL2 + +#include "resources/loaders/imageloader.h" + +#include "utils/gettext.h" + +#include + +#ifndef USE_SDL2 +#include "resources/sdlimagehelper.h" +#endif // USE_SDL2 + +PRAGMA48(GCC diagnostic push) +PRAGMA48(GCC diagnostic ignored "-Wshadow") +#include +PRAGMA48(GCC diagnostic pop) + +#include "debug.h" + +static void printHelp() +{ + // TRANSLATORS: command line help + std::cout << _("dyecmd srcfile dyestring dstfile") << std::endl; + // TRANSLATORS: command line help + std::cout << _("or") << std::endl; + // TRANSLATORS: command line help + std::cout << _("dyecmd srcdyestring dstfile") << std::endl; +} + +int main(int argc, char **argv) +{ + if (argc == 2 && (strcmp(argv[1], "--help") != 0)) + { + return mainGui(argc, argv); + } + if (argc < 3 || argc > 4) + { + printHelp(); + return 1; + } + + logger = new Logger; + logger->setLogToStandardOut(false); + + VirtFs::init(argv[0]); + SDL_Init(SDL_INIT_VIDEO); + + graphicsManager.createWindow(10, 10, 0, SDL_ANYFORMAT); + +#ifdef USE_SDL2 + imageHelper = new SurfaceImageHelper; +#else // USE_SDL2 + + imageHelper = new SDLImageHelper; +#endif // USE_SDL2 + + VirtFs::setWriteDir("."); + VirtFs::mountDir(".", Append_false); + VirtFs::mountDir("/", Append_false); + std::string src = argv[1]; + std::string dst; + if (argc == 4) + { + src.append("|").append(argv[2]); + dst = argv[3]; + } + else + { + dst = argv[2]; + } + + Image *image = Loader::getImage(src); + if (image == nullptr) + { + printf("Error loading image\n"); + VirtFs::deinit(); + return 1; + } + SDL_Surface *const surface = ImageHelper::convertTo32Bit( + image->getSDLSurface()); + ImageWriter::writePNG(surface, dst); + SDL_FreeSurface(surface); + VirtFs::deinit(); + return 0; +} -- cgit v1.2.3-70-g09d2