#include <msp/core/refptr.h>
#include <msp/io/file.h>
#include <msp/strings/format.h>
+#include "bmploader.h"
#include "imageloader.h"
+#ifdef WITH_LIBPNG
+#include "png/pngloader.h"
+#endif
+#ifdef WITH_LIBJPEG
+#include "jpeg/jpegloader.h"
+#endif
+#ifdef WITH_DEVIL
+#include "devil/devilloader.h"
+#endif
+#ifdef WITH_QUARTZ
+#include "quartz/quartzloader.h"
+#endif
using namespace std;
ImageLoader *ImageLoader::open_io(IO::Seekable &io)
{
+ (void)RegisteredImageLoader<BmpLoader>::reg;
+#ifdef WITH_LIBPNG
+ (void)RegisteredImageLoader<PngLoader>::reg;
+#endif
+#ifdef WITH_LIBJPEG
+ (void)RegisteredImageLoader<JpegLoader>::reg;
+#endif
+#ifdef WITH_DEVIL
+ (void)RegisteredImageLoader<DevilLoader>::reg;
+#endif
+#ifdef WITH_QUARTZ
+ (void)RegisteredImageLoader<QuartzLoader>::reg;
+#endif
+
list<RegisterBase *> &loaders = get_registered_loaders();
if(registered_loaders_changed)
{
loaders.sort(signature_size_compare);
}
+ if(loaders.empty())
+ throw unsupported_image_format("no loaders");
+
vector<char> sig_buf(loaders.back()->get_signature_size());
unsigned sig_len = io.read(&sig_buf[0], sig_buf.size());
string signature(sig_buf.begin(), sig_buf.end());