]> git.lyx.org Git - lyx.git/blob - src/graphics/GraphicsCacheItem.h
citation patch from Angus
[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
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 const & 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         Pixmap getImage() const; 
60         ///
61         enum ImageStatus {
62                 ///
63                 Loading = 1,
64                 ///
65                 ErrorConverting,
66                 ///
67                 ErrorReading,
68                 ///
69                 Loaded
70         };
71         
72         /// Is the pixmap ready for display?
73         ImageStatus getImageStatus() const; 
74
75         /** Get a notification when the image conversion is done.
76             used by an internal callback mechanism.
77         */
78         void imageConverted(int retval);
79
80 private:
81         /// Private c-tor so that only GraphicsCache can create an instance.
82         GraphicsCacheItem();
83
84         /// internal copy mechanism.
85         void copy(GraphicsCacheItem const &);
86         /// internal destroy mechanism.
87         void destroy();
88
89         /// Set the filename this item will be pointing too.
90         bool setFilename(string const & filename);
91
92         ///
93         friend class GraphicsCache;
94
95         ///
96         GraphicsCacheItem_pimpl * pimpl;
97
98         /** The filename we refer too.
99             This is used when removing ourselves from the cache.
100         */
101         string filename_;
102 };
103
104 #endif