+void ImageLoader::load(Image::Data &data)
+{
+ load_headers(data);
+ load_data(data);
+}
+
+ImageLoader::Registry &ImageLoader::get_registry()
+{
+ static Registry registry;
+ static bool initialized = false;
+ if(!initialized)
+ {
+ initialized = true;
+ register_loader<BmpLoader>();
+#ifdef WITH_LIBPNG
+ register_loader<PngLoader>();
+#endif
+#ifdef WITH_LIBJPEG
+ register_loader<JpegLoader>();
+#endif
+#ifdef WITH_DEVIL
+ register_loader<DevilLoader>();
+#endif
+#ifdef WITH_QUARTZ
+ register_loader<QuartzLoader>();
+#endif
+ }
+ return registry;
+}
+
+bool ImageLoader::signature_size_compare(RegisterBase *r1, RegisterBase *r2)
+{
+ return r1->get_signature_size()<r2->get_signature_size();
+}
+
+
+ImageLoader::Registry::Registry():
+ changed(false)
+{ }
+
+ImageLoader::Registry::~Registry()
+{
+ for(list<RegisterBase *>::iterator i=loaders.begin(); i!=loaders.end(); ++i)
+ delete *i;
+}
+