DVX_GUI/dvx/dvxIcon.c

32 lines
1.4 KiB
C

// dvxIcon.c — stb_image implementation for DVX GUI
//
// This file exists solely to instantiate the stb_image implementation.
// stb_image is a single-header library: you #define STB_IMAGE_IMPLEMENTATION
// in exactly one .c file to generate the actual function bodies. Putting
// this in its own translation unit keeps the stb code isolated so it:
// 1. Compiles once, not in every file that #includes stb_image.h
// 2. Can have its own warning suppressions without affecting project code
// 3. Doesn't slow down incremental rebuilds (only recompiles if stb changes)
//
// stb_image was chosen over libpng/libjpeg because:
// - Single header, no external dependencies — critical for DJGPP cross-compile
// - Supports BMP, PNG, JPEG, GIF with one include
// - Public domain license, no linking restrictions
// - Small code footprint suitable for DOS targets
//
// STBI_ONLY_* defines strip out support for unused formats (TGA, PSD, HDR,
// PIC, PNM) to reduce binary size. STBI_NO_SIMD is required because DJGPP
// targets 486/Pentium which lack SSE; on the Linux/SDL build it's harmless.
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-function"
#define STBI_ONLY_BMP
#define STBI_ONLY_PNG
#define STBI_ONLY_JPEG
#define STBI_ONLY_GIF
#define STBI_NO_SIMD
#define STB_IMAGE_IMPLEMENTATION
#include "thirdparty/stb_image.h"
#pragma GCC diagnostic pop