The internal version of libjpeg-turbo currently only builds on Windows.
(The bundled CMakeLists.txt is Windows only.)
All example and demo executables have been disabled, and the autoconf
build system has been removed. The only target that builds now is
jpeg62.dll.
Currently supports RGB, YCbCr, and grayscale images. (YCbCr is handled
using libjpeg's built-in colorspace conversion.)
NOTE: libjpeg's RGB support outputs 24-bit RGB, so we have to manually
expand it to 32-bit ARGB with an opaque alpha channel.
Tested with Nintendo DS cover art and it works:
- ASME (Super Mario 64 DS) (RGB)
- BXSE (Sonic Colors) (YCbCr)
I manually converted the images to grayscale and those worked as well.
TODO: CMYK/YCCK. (libjpeg has automatic YCCK->CMYK colorspace conversion,
but not CMYK->RGB.)
[cmake] Added libjpeg detection and options.
TODO:
- Add an internal copy of libjpeg-turbo.
- Make libjpeg support optional?
It isn't usable yet, but the infrastructure is there.
FindDBusGLib.cmake: FIND_PACKAGE() file for dbus-glib.
org.freedesktop.thumbnails.SpecializedThumbnailer1.xml: Specification
for the SpecializedThumbnailer1 interface.
- Reference: https://wiki.gnome.org/DraftSpecs/ThumbnailerSpec
This is needed for the upcoming XFCE D-Bus thumbnailer.
FindGLib2: Renamed the target to GLib2::glib.
[gtk] Updated projects to link to GLib2::gobject and GLib2::glib.
Rewrote FindGLib2, FindGTK3, FindGdkPixbuf2, FindLibNautilusExtension,
and FindThunarX2 to use FIND_LIBRARY_PKG_CONFIG().
Fixed CFLAGS_OTHER on ThunarX2. (Incorrect capitalization.)
- Detect the ThunarX2 package version.
- Handle multiple include paths from CFLAGS.
- Make sure GLib2 and GdkPixbuf2 are available.
- Minor adjustments to the C code formatting.
Renamed the variables to match the case of the filenames, since CMake's
version detection requires this.
Set some preliminary defaults for GLib2, GTK3, and LibNautilusExtension.
TODO: Require the correct major version?
The Nautilus frontend is very similar to the Thunar (XFCE) frontend,
though some things have changed due to the different ways Nautilus
handles things. In particular, RomPropertiesPage is not a subclass
of NautilusPropertyPage; instead, RomPropertiesPage is added to a
generic NautilusPropertyPage as a widget.
Added Find*.cmake files for glib2, GTK+ 3, GdkPixbuf2, and
libnautilus-extension.
RomDataView: Set the GtkBox orientation to vertical when compiling with
GTK+ 3.x.
No ROM data parsing is implemented yet. All of this boilerplate is merely
to get a basic properties page plugin built and registered.
[cmake] FindThunarX2.cmake: CMake FIND_PACKAGE() file to find the GTK+2
ThunarX libraries.
[cmake] options.cmake: Added BUILD_XFCE.
I'll eventually make them delayload so they won't be loaded unless they're
actually needed.
Rearranged the build directory layout such that all binaries are located
in the top-level bin/ directory. This is needed in order for the test
suites to work, since they might depend on zlib and/or libpng.
NOTE: We have to use CACHE INTERNAL; otherwise, the KDE5 build ignores
the directory options. (Maybe this is why the KDE4 build always used
this directory layout in the first place?)
NOTE 2: On Windows, DLLs are copied to ${CMAKE_RUNTIME_OUTPUT_DIRECTORY},
whereas on Linux, SOs are copied to ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}.
Test images are now copied using a custom command, since the output
directory isn't easily determined at generate time. (It could be
the same as ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}, but msbuild uses
configuration-specific subdirectories.
TODO: Keep test images in a subdirectory. This will need adjustments in
the test suites to look in img/ first, then the current directory.
I've decided to get rid of the GDI+ PNG handling. It doesn't improve
anything performance-wise, adds coding overhead, and probably isn't
any faster than libpng.
GDI+ also doesn't support APNG. This version does.
NOTE: If I add APNG export, I'll need to use the included libpng
in Ubuntu builds, since Ubuntu still has libpng-1.2, and it's a
version that doesn't support APNG.
Reworked the bundled library system to be similar to the one in
mcrecover, but improved.
Added "-fpic -fPIC" to all extlib static libraries when building
for Linux systems. This is needed for libpng, but might not be
needed for other libraries; nevertheless, it should be set.
TODO: Use libpng in the Windows build. It's being linked in,
but it isn't actually being used for anything yet.