feat(images): WebP decode via libwebp + more stb formats
Broaden avatar/image support: - Add libwebp (FetchContent, static, decode-only) so WebP loads. Built from source for Linux / mingw-Windows / macOS-osxcross identically — the cross sysroots have no webp, so vendoring from source is the one portable path; encode/tool builds are disabled to avoid pulling in libpng/zlib. Linked as webp + webpdemux (the latter for animated WebP, wired next). - texture_loader routes all decode through DecodeImageRGBA: sniffs the RIFF/ WEBP header and uses libwebp (WebPDecodeRGBAInto into a free()-able buffer), else stb — so every existing caller (avatars, QR, thumbnails) gains WebP for free with no allocator mismatch. - Enable stb's TGA / PSD / PNM / PIC decoders and add .webp/.tga/.psd/.pnm/ .ppm/.pgm/.pic to the image-picker + avatar-library extension lists. Verified: libwebp builds static and a real .webp decodes to correct RGBA. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -297,7 +297,8 @@ private:
|
||||
static bool isImageName(const std::string& name) {
|
||||
auto lower = name;
|
||||
for (char& c : lower) c = (char)std::tolower((unsigned char)c);
|
||||
static const char* kExt[] = { ".png", ".jpg", ".jpeg", ".bmp", ".gif" };
|
||||
static const char* kExt[] = { ".png", ".jpg", ".jpeg", ".bmp", ".gif", ".webp",
|
||||
".tga", ".psd", ".pnm", ".ppm", ".pgm", ".pic" };
|
||||
for (const char* e : kExt) {
|
||||
const std::string ext(e);
|
||||
if (lower.size() > ext.size() && lower.compare(lower.size()-ext.size(), ext.size(), ext) == 0)
|
||||
|
||||
Reference in New Issue
Block a user