]> git.lyx.org Git - lyx.git/blob - src/graphics/GraphicsCacheItem.h
prepare for 1.1.6pre2
[lyx.git] / src / graphics / GraphicsCacheItem.h
1 // -*- C++ -*-
2 /* This file is part of
3  * =================================================
4  * 
5  *          LyX, The Document Processor
6  *          Copyright 1995 Matthias Ettrich.
7  *          Copyright 1995-2000 The LyX Team.
8  *
9  *          This file Copyright 2000 Baruch Even
10  * ================================================= */
11
12 #ifndef GRAPHICSCACHEITEM_H
13 #define GRAPHICSCACHEITEM_H
14
15 #include <config.h>
16
17 #ifdef __GNUG__
18 #pragma interface
19 #endif
20
21 #include XPM_H_LOCATION
22 #include "LString.h"
23
24 #include "sigc++/signal_system.h"
25 #ifdef SIGC_CXX_NAMESPACES
26 using SigC::Signal0;
27 #endif
28
29
30 /* (Baruch Even 2000-08-05)
31  * This has a major drawback: it is only designed for X servers, no easy
32  * porting to non X-server based platform is offered right now, this is done
33  * in order to get a first version out of the door.
34  *
35  * Later versions should consider how to do this with more platform 
36  * independence, this will probably involve changing the Painter class too.
37  */
38
39 class GraphicsCacheItem_pimpl;
40 class LyXImage;
41
42 /// A GraphicsCache item holder.
43 class GraphicsCacheItem {
44 public:
45         /// d-tor, frees the image structures.
46         ~GraphicsCacheItem();
47         /// copy c-tor.
48         GraphicsCacheItem(GraphicsCacheItem const &);
49         /// Assignment operator.
50         GraphicsCacheItem & operator=(GraphicsCacheItem const &);
51         
52         /// Get the height of the image. Returns -1 on error.
53         int getHeight() const; 
54         
55         /// Get the width of the image. Returns -1 on error.
56         int getWidth() const; 
57
58         /// Return a pixmap that can be displayed on X server.
59         LyXImage * getImage() const; 
60         ///
61         enum ImageStatus {
62                 ///
63                 Loading = 1,
64                 ///
65                 ErrorConverting,
66                 ///
67                 ErrorReading,
68                 ///
69                 UnknownError,
70                 ///
71                 Loaded
72         };
73         
74         /// Is the pixmap ready for display?
75         ImageStatus getImageStatus() const; 
76
77         /** Get a notification when the image conversion is done.
78             used by an internal callback mechanism.
79         */
80         void imageConverted(int retval);
81
82         /// Create another copy of the object.
83         GraphicsCacheItem * Clone() const;
84         
85 private:
86         /// Private c-tor so that only GraphicsCache can create an instance.
87         GraphicsCacheItem();
88
89         /// internal copy mechanism.
90         void copy(GraphicsCacheItem const &);
91         /// internal destroy mechanism.
92         void destroy();
93
94         /// Set the filename this item will be pointing too.
95         bool setFilename(string const & filename);
96
97         ///
98         friend class GraphicsCache;
99
100         ///
101         GraphicsCacheItem_pimpl * pimpl;
102
103         /** The filename we refer too.
104             This is used when removing ourselves from the cache.
105         */
106         string filename_;
107 };
108
109 #endif