/*************************************************************************** copyright : (C) 2003-2006 by Robby Stephenson email : robby@periapsis.org ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of version 2 of the GNU General Public License as * * published by the Free Software Foundation; * * * ***************************************************************************/ #ifndef IMAGE_H #define IMAGE_H #include #include class KPixmapIO; namespace Tellico { class ImageFactory; class FileHandler; namespace Data { /** * @author Robby Stephenson */ class Image : public TQImage { friend class Tellico::ImageFactory; friend class Tellico::FileHandler; public: ~Image(); const TQString& id() const { return m_id; }; const TQCString& format() const { return m_format; }; TQByteArray byteArray() const; bool isNull() const; bool linkOnly() const { return m_linkOnly; } void setLinkOnly(bool l) { m_linkOnly = l; } TQPixmap convertToPixmap() const; TQPixmap convertToPixmap(int width, int height) const; static TQCString outputFormat(const TQCString& inputFormat); static TQByteArray byteArray(const TQImage& img, const TQCString& outputFormat); static TQString idClean(const TQString& id); private: Image(); explicit Image(const TQString& filename); Image(const TQImage& image, const TQString& format); Image(const TQByteArray& data, const TQString& format, const TQString& id); //disable copy Image(const Image&); Image& operator=(const Image&); void setID(const TQString& id); void calculateID(); TQString m_id; TQCString m_format; bool m_linkOnly : 1; static KPixmapIO* s_pixmapIO; static KPixmapIO* io(); }; class ImageInfo { public: ImageInfo() {} explicit ImageInfo(const Image& img); ImageInfo(const TQString& id, const TQCString& format, int w, int h, bool link); bool isNull() const { return id.isEmpty(); } TQString id; TQCString format; bool linkOnly : 1; int width(bool loadIfNecessary=true) const; int height(bool loadIfNecessary=true) const; private: mutable int m_width; mutable int m_height; }; } // end namespace } // end namespace inline bool operator== (const Tellico::Data::Image& img1, const Tellico::Data::Image& img2) { return img1.id() == img2.id(); } #endif