convert-to-nia: add DECODE_ONLY_JPEG macro
diff --git a/example/convert-to-nia/convert-to-nia.c b/example/convert-to-nia/convert-to-nia.c
index 831a405..58d17bc 100644
--- a/example/convert-to-nia/convert-to-nia.c
+++ b/example/convert-to-nia/convert-to-nia.c
@@ -21,6 +21,9 @@
An equivalent program (using the Skia image codecs) is at:
https://skia-review.googlesource.com/c/skia/+/290618
+
+Define the DECODE_ONLY_JPEG macro to limit the variety of image file formats
+that Wuffs decodes to just JPEG, for smaller binaries and faster compiles.
*/
#include <errno.h>
@@ -56,14 +59,15 @@
// modules we use makes that process explicit. Preprocessing means that such
// code simply isn't compiled.
#define WUFFS_CONFIG__MODULES
-#define WUFFS_CONFIG__MODULE__ADLER32
#define WUFFS_CONFIG__MODULE__BASE
-#define WUFFS_CONFIG__MODULE__BMP
#define WUFFS_CONFIG__MODULE__CRC32
+#define WUFFS_CONFIG__MODULE__JPEG
+#if !defined(DECODE_ONLY_JPEG)
+#define WUFFS_CONFIG__MODULE__ADLER32
+#define WUFFS_CONFIG__MODULE__BMP
#define WUFFS_CONFIG__MODULE__DEFLATE
#define WUFFS_CONFIG__MODULE__ETC2
#define WUFFS_CONFIG__MODULE__GIF
-#define WUFFS_CONFIG__MODULE__JPEG
#define WUFFS_CONFIG__MODULE__NETPBM
#define WUFFS_CONFIG__MODULE__NIE
#define WUFFS_CONFIG__MODULE__PNG
@@ -74,6 +78,7 @@
#define WUFFS_CONFIG__MODULE__WBMP
#define WUFFS_CONFIG__MODULE__WEBP
#define WUFFS_CONFIG__MODULE__ZLIB
+#endif
// Defining the WUFFS_CONFIG__DST_PIXEL_FORMAT__ENABLE_ALLOWLIST (and the
// associated ETC__ALLOW_FOO) macros are optional, but can lead to smaller
@@ -161,10 +166,11 @@
wuffs_base__image_decoder* g_image_decoder = NULL;
union {
+ wuffs_jpeg__decoder jpeg;
+#if !defined(DECODE_ONLY_JPEG)
wuffs_bmp__decoder bmp;
wuffs_etc2__decoder etc2;
wuffs_gif__decoder gif;
- wuffs_jpeg__decoder jpeg;
wuffs_netpbm__decoder netpbm;
wuffs_nie__decoder nie;
wuffs_png__decoder png;
@@ -173,6 +179,7 @@
wuffs_thumbhash__decoder thumbhash;
wuffs_wbmp__decoder wbmp;
wuffs_webp__decoder webp;
+#endif
} g_potential_decoders;
wuffs_crc32__ieee_hasher g_digest_hasher;
@@ -343,6 +350,17 @@
initialize_image_decoder() {
wuffs_base__status status;
switch (g_fourcc) {
+ case WUFFS_BASE__FOURCC__JPEG:
+ status = wuffs_jpeg__decoder__initialize(
+ &g_potential_decoders.jpeg, sizeof g_potential_decoders.jpeg,
+ WUFFS_VERSION, WUFFS_INITIALIZE__DEFAULT_OPTIONS);
+ TRY(wuffs_base__status__message(&status));
+ g_image_decoder =
+ wuffs_jpeg__decoder__upcast_as__wuffs_base__image_decoder(
+ &g_potential_decoders.jpeg);
+ return NULL;
+
+#if !defined(DECODE_ONLY_JPEG)
case WUFFS_BASE__FOURCC__BMP:
status = wuffs_bmp__decoder__initialize(
&g_potential_decoders.bmp, sizeof g_potential_decoders.bmp,
@@ -373,16 +391,6 @@
&g_potential_decoders.gif);
return NULL;
- case WUFFS_BASE__FOURCC__JPEG:
- status = wuffs_jpeg__decoder__initialize(
- &g_potential_decoders.jpeg, sizeof g_potential_decoders.jpeg,
- WUFFS_VERSION, WUFFS_INITIALIZE__DEFAULT_OPTIONS);
- TRY(wuffs_base__status__message(&status));
- g_image_decoder =
- wuffs_jpeg__decoder__upcast_as__wuffs_base__image_decoder(
- &g_potential_decoders.jpeg);
- return NULL;
-
case WUFFS_BASE__FOURCC__NIE:
status = wuffs_nie__decoder__initialize(
&g_potential_decoders.nie, sizeof g_potential_decoders.nie,
@@ -463,6 +471,7 @@
wuffs_webp__decoder__upcast_as__wuffs_base__image_decoder(
&g_potential_decoders.webp);
return NULL;
+#endif
}
return "main: unsupported file format";
}
diff --git a/example/stb-imagedumper/stb-imagedumper.c b/example/stb-imagedumper/stb-imagedumper.c
index 994e605..59c9cce 100644
--- a/example/stb-imagedumper/stb-imagedumper.c
+++ b/example/stb-imagedumper/stb-imagedumper.c
@@ -45,8 +45,8 @@
As of September 2024, the actual STB Image implementation only decodes two out
of four: JPEG and PNG. Wuffs' reimplementation decodes all four demo images.
-Define the USE_ONLY_JPEG macro to limit the variety of image file formats that
-Wuffs decodes to just JPEG, for smaller binaries and faster compiles.
+Define the DECODE_ONLY_JPEG macro to limit the variety of image file formats
+that Wuffs decodes to just JPEG, for smaller binaries and faster compiles.
Pass the -resize=N flag (or -r as an abbreviation of -resize=64) to resize each
image to fit within an N×N square (while preserving the aspect ratio).
@@ -120,7 +120,7 @@
#define WUFFS_CONFIG__MODULES
#define WUFFS_CONFIG__MODULE__BASE
#define WUFFS_CONFIG__MODULE__JPEG
-#if !defined(USE_ONLY_JPEG)
+#if !defined(DECODE_ONLY_JPEG)
#define WUFFS_CONFIG__MODULE__ADLER32
#define WUFFS_CONFIG__MODULE__BMP
#define WUFFS_CONFIG__MODULE__CRC32