3 * \file GraphicsCache.h
4 * Copyright 2002 the LyX Team
5 * Read the file COPYING
7 * \author Baruch Even <baruch.even@writeme.com>
8 * \author Angus Leeming <a.leeming@ic.ac.uk>
10 * grfx::GCache is the manager of the image cache.
11 * It is responsible for creating the grfx::GCacheItem's and maintaining them.
13 * grfx::GCache is a singleton class. It is possible to have only one
14 * instance of it at any moment.
17 #ifndef GRAPHICSCACHE_H
18 #define GRAPHICSCACHE_H
25 #include "GraphicsTypes.h"
28 #include <boost/utility.hpp>
32 class GCache : boost::noncopyable {
35 /// This is a singleton class. Get the instance.
36 static GCache & get();
38 /** Which graphics formats can be loaded directly by the image loader.
39 * Other formats can be loaded if a converter to a loadable format
42 std::vector<string> loadableFormats() const;
44 /// Add a graphics file to the cache.
45 void add(string const & file);
47 /** Remove a file from the cache.
48 * Called from the InsetGraphics d-tor.
49 * If we use reference counting, then this may become redundant.
51 void remove(string const & file);
53 /// Returns \c true if the file is in the cache.
54 bool inCache(string const & file) const;
56 /** Get the cache item associated with file.
57 * Returns an empty container if there is no such item.
59 * IMPORTANT: whatever uses an image must make a local copy of this
60 * GraphicPtr. The boost::shared_ptr<>::use_count() function is
61 * used to ascertain whether or not to remove the item from the cache
62 * when remove(file) is called.
64 * You have been warned!
66 GraphicPtr const graphic(string const & file) const;
68 /** Get the image associated with file.
69 If the image is not yet loaded, (or is not in the cache!) return
72 ImagePtr const image(string const & file) const;
75 /** Make the c-tor, d-tor private so we can control how many objects
82 /** The cache contains one item per file, so use a map to find the
83 * cache item quickly by filename.
84 * Note that each cache item can have multiple views, potentially one
85 * per inset that references the original file.
87 typedef std::map<string, GraphicPtr> CacheType;
89 /** Store a pointer to the cache so that we can forward declare
98 #endif // GRAPHICSCACHE_H