]> git.tdb.fi Git - libs/gui.git/blobdiff - source/graphics/imageloader.cpp
Make it possible to load an image into an externally allocated buffer
[libs/gui.git] / source / graphics / imageloader.cpp
index 2c6ce217381f4dcbf1f33bec50104eeee6c1987c..52b087490d21b58612219952ec89844ad06c0e2a 100644 (file)
@@ -89,10 +89,23 @@ void ImageLoader::load(Image::Data &data)
        if(state>=FINISHED)
                throw logic_error("already loaded");
 
-       load_(data);
+       if(state<HEADERS_LOADED)
+               load_headers_(data);
+       if(!data.pixels)
+               data.pixels = data.owned_pixels = new char[data.stride*data.height];
+       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;