namespace Graphics {
ImageLoader::ImageLoader():
- source(0)
+ source(0),
+ state(INITIAL)
{ }
ImageLoader::~ImageLoader()
void ImageLoader::load(Image::Data &data)
{
- load_headers(data);
- load_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;
}
ImageLoader::Registry &ImageLoader::get_registry()