X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fgraphics%2Fimageloader.cpp;h=52b087490d21b58612219952ec89844ad06c0e2a;hb=917c43de100807f4397e36b66b1a748dbf44370e;hp=da897984449993b56e3163b5ffd8830da06e22a9;hpb=d3bc6c9c2cfaaedaabfd4b5b7bf4e1da2de51331;p=libs%2Fgui.git diff --git a/source/graphics/imageloader.cpp b/source/graphics/imageloader.cpp index da89798..52b0874 100644 --- a/source/graphics/imageloader.cpp +++ b/source/graphics/imageloader.cpp @@ -22,7 +22,8 @@ namespace Msp { namespace Graphics { ImageLoader::ImageLoader(): - source(0) + source(0), + state(INITIAL) { } ImageLoader::~ImageLoader() @@ -85,8 +86,24 @@ ImageLoader *ImageLoader::open_io(IO::Seekable &io) void ImageLoader::load(Image::Data &data) { - load_headers(data); - load_data(data); + if(state>=FINISHED) + throw logic_error("already loaded"); + + if(state=HEADERS_LOADED) + throw logic_error("headers already loaded"); + + load_headers_(data); + state = HEADERS_LOADED; } ImageLoader::Registry &ImageLoader::get_registry()