]> git.lyx.org Git - lyx.git/blobdiff - src/graphics/GraphicsCacheItem.h
use anon namespace, somewhat better comp. handling of minipages, not quite there yet
[lyx.git] / src / graphics / GraphicsCacheItem.h
index e139fbffc46a4d24387dbfc728878aab066efc9b..3b5c04128dc00965c684c4ef7f16e89a538ec0fb 100644 (file)
 #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