]> git.tdb.fi Git - libs/gui.git/blobdiff - source/graphics/imageloader.cpp
Split image loading into headers and pixels
[libs/gui.git] / source / graphics / imageloader.cpp
index b2a126e79df5de3f64864fc5942f6f51a13ffc5b..fa6fcf802b2a57eb6d852e34c6363d375e521ba4 100644 (file)
@@ -22,7 +22,8 @@ namespace Msp {
 namespace Graphics {
 
 ImageLoader::ImageLoader():
-       source(0)
+       source(0),
+       state(INITIAL)
 { }
 
 ImageLoader::~ImageLoader()
@@ -83,6 +84,26 @@ ImageLoader *ImageLoader::open_io(IO::Seekable &io)
        return loader;
 }
 
+void ImageLoader::load(Image::Data &data)
+{
+       if(state>=FINISHED)
+               throw logic_error("already loaded");
+
+       if(state<HEADERS_LOADED)
+               load_headers_(data);
+       load_pixels_(data);
+       state = FINISHED;
+}
+
+void ImageLoader::load_headers(Image::Data &data)
+{
+       if(state>=HEADERS_LOADED)
+               throw logic_error("headers already loaded");
+
+       load_headers_(data);
+       state = HEADERS_LOADED;
+}
+
 ImageLoader::Registry &ImageLoader::get_registry()
 {
        static Registry registry;