#ifndef GRAPHICSCACHEITEM_H
#define GRAPHICSCACHEITEM_H
+#include <config.h>
+
#ifdef __GNUG__
#pragma interface
#endif
-///
-class GraphicsCacheItem {
+#include XPM_H_LOCATION
+#include "LString.h"
+
+#include <boost/utility.hpp>
+#include <boost/smart_ptr.hpp>
+
+#include <sigc++/signal_system.h>
+
+class LyXImage;
+
+/// A GraphicsCache item holder.
+class GraphicsCacheItem : public boost::noncopyable {
public:
+ /// c-tor
+ GraphicsCacheItem(string const & filename);
+ /// d-tor, frees the image structures.
+ ~GraphicsCacheItem();
+
+ /// Return a pixmap that can be displayed on X server.
+ LyXImage * getImage() const;
+ ///
+ enum ImageStatus {
+ ///
+ Loading = 1,
+ ///
+ ErrorConverting,
+ ///
+ ErrorReading,
+ ///
+ UnknownError,
+ ///
+ Loaded
+ };
+
+ /// Is the pixmap ready for display?
+ ImageStatus getImageStatus() const;
+
+ /** Get a notification when the image conversion is done.
+ used by an internal callback mechanism.
+ */
+ void imageConverted(int retval);
+
private:
- ///
- GraphicsCacheItem() {}
- //
- friend class GraphicsCache;
+ bool renderXPM(string const & filename);
+ void loadXPMImage();
+
+ /** The filename we refer too.
+ This is used when removing ourselves from the cache.
+ */
+ string filename_;
+ /// The temporary file that we use
+ string tempfile;
+ /// The image status
+ ImageStatus imageStatus_;
+ /// The image (if it got loaded)
+ boost::scoped_ptr<LyXImage> image_;
};
#endif