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