X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fgraphics%2Fimage.h;h=29fd288c5634ca96a0b26c604b0cb56968ee89a3;hb=ed2ada6539882e02e1054a3394bb62a182bf007b;hp=137f856f21f5736d40dbecae6275a26919c42536;hpb=1ca709deba08e55d95066be564a8fd43a321af19;p=libs%2Fgui.git diff --git a/source/graphics/image.h b/source/graphics/image.h index 137f856..29fd288 100644 --- a/source/graphics/image.h +++ b/source/graphics/image.h @@ -3,45 +3,42 @@ #include #include -#include +#include #include "pixelformat.h" namespace Msp { namespace Graphics { -class unsupported_image_format: public std::runtime_error -{ -public: - unsupported_image_format(const std::string &w): std::runtime_error(w) { } - virtual ~unsupported_image_format() throw() { } -}; - -class bad_image_data: public std::runtime_error -{ -public: - bad_image_data(const std::string &w): std::runtime_error(w) { } - virtual ~bad_image_data() throw() { } -}; - +class ImageLoader; class Image { public: - struct Private; + struct Data + { + PixelFormat fmt; + unsigned width; + unsigned height; + unsigned stride; + char *data; + + Data(); + ~Data(); + }; private: - Private *priv; + Data data; public: - Image(); - ~Image(); - void load_file(const std::string &); - void load_io(IO::Base &); - PixelFormat get_format() const; - unsigned get_width() const; - unsigned get_height() const; - const void *get_data() const; + void load_io(IO::Seekable &); + void load(ImageLoader &); + + PixelFormat get_format() const { return data.fmt; } + unsigned get_width() const { return data.width; } + unsigned get_height() const { return data.height; } + unsigned get_stride() const { return data.stride; } + const void *get_data() const { return data.data; } }; } // namespace Graphics