+void ImageLoader::load(Image::Data &data)
+{
+ if(state>=FINISHED)
+ throw logic_error("already loaded");
+
+ 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;
+}
+