replace SDL2_image with lodepng

This commit is contained in:
2024-04-13 15:08:47 +10:00
parent 6532465324
commit 59166d38a1
4 changed files with 9099 additions and 24 deletions

View File

@@ -2,11 +2,10 @@ cmake_minimum_required(VERSION "3.15" FATAL_ERROR)
project(endoomed LANGUAGES CXX)
find_package(SDL2 REQUIRED CONFIG)
find_package(SDL2_image REQUIRED CONFIG)
add_executable(endoomed src/main.cpp)
add_executable(endoomed src/lodepng.h src/lodepng.cpp src/main.cpp)
set_property(TARGET endoomed PROPERTY CXX_STANDARD 11)
target_link_libraries(endoomed SDL2::SDL2 SDL2_image::SDL2_image)
target_link_libraries(endoomed SDL2::SDL2)
if (TARGET SDL2::SDL_main)
target_link_libraries(endoomed SDL2::SDL_main)
endif()

6991
Endoomed/src/lodepng.cpp Normal file

File diff suppressed because it is too large Load Diff

2089
Endoomed/src/lodepng.h Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,9 +1,5 @@
#include "lodepng.h"
#include <SDL2/SDL.h>
#ifndef __APPLE__
# include <SDL2/SDL_image.h>
#else
# include <SDL2_image/SDL_image.h>
#endif
#include <cmath>
#include <cstdint>
#include <cstdlib>
@@ -77,31 +73,33 @@ int main(int argc, char** argv)
return -1;
}
if (!(IMG_Init(IMG_INIT_PNG) & IMG_INIT_PNG))
{
SDL_Quit();
return -1;
}
SDL_Window* window = nullptr;
SDL_Renderer* renderer = nullptr;
if (SDL_CreateWindowAndRenderer(640, 400, 0, &window, &renderer) < 0)
{
IMG_Quit();
SDL_Quit();
return -1;
}
SDL_SetWindowTitle(window, "EnDOOMed");
SDL_Texture* codepage = IMG_LoadTexture(renderer, "codepage.png");
if (codepage == nullptr)
SDL_Texture* codepage = nullptr;
{
SDL_DestroyRenderer(renderer);
SDL_DestroyWindow(window);
IMG_Quit();
SDL_Quit();
return -1;
unsigned codepageWidth, codepageHeight;
std::vector<unsigned char> codepagePixels;
if (lodepng::decode(codepagePixels, codepageWidth, codepageHeight, "codepage.png", LCT_RGBA, 8) != 0 ||
(codepage = SDL_CreateTexture(renderer,
SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_STATIC,
static_cast<int>(codepageWidth), static_cast<int>(codepageHeight))) == nullptr ||
SDL_UpdateTexture(codepage, nullptr, codepagePixels.data(), 4 * static_cast<int>(codepageWidth)) != 0 ||
SDL_SetTextureBlendMode(codepage, SDL_BLENDMODE_BLEND) != 0)
{
SDL_DestroyTexture(codepage);
SDL_DestroyRenderer(renderer);
SDL_DestroyWindow(window);
SDL_Quit();
return -1;
}
}
std::array<Cell, 2000> display;
@@ -113,7 +111,6 @@ int main(int argc, char** argv)
SDL_DestroyTexture(codepage);
SDL_DestroyRenderer(renderer);
SDL_DestroyWindow(window);
IMG_Quit();
SDL_Quit();
return -1;
}
@@ -317,7 +314,6 @@ int main(int argc, char** argv)
SDL_DestroyTexture(codepage);
SDL_DestroyRenderer(renderer);
SDL_DestroyWindow(window);
IMG_Quit();
SDL_Quit();
return 0;
}