3 * \file GraphicsCache.h
4 * This file is part of LyX, the document processor.
5 * Licence details can be found in the file COPYING.
8 * \author Angus Leeming
10 * Full author contact details are available in file CREDITS.
12 * lyx::graphics::Cache is the manager of the image cache.
13 * It is responsible for creating the lyx::graphics::CacheItem's
14 * and maintaining them.
16 * lyx::graphics::Cache is a singleton class. It is possible to have only one
17 * instance of it at any moment.
20 #ifndef GRAPHICSCACHE_H
21 #define GRAPHICSCACHE_H
30 namespace support { class FileName; }
39 /// This is a singleton class. Get the instance.
42 /** Which graphics formats can be loaded directly by the image loader.
43 * Other formats can be loaded if a converter to a loadable format
46 std::vector<std::string> const & loadableFormats() const;
48 /// Add a graphics file to the cache.
49 void add(support::FileName const & file, support::FileName const & doc_file) const;
51 /// Remove a file from the cache.
52 void remove(support::FileName const & file) const;
54 /// Returns \c true if the file is in the cache.
55 bool inCache(support::FileName const & file) const;
57 /** Get the cache item associated with file.
58 * Returns an empty container if there is no such item.
60 * IMPORTANT: whatever uses an image must make a local copy of this
61 * ItemPtr. The shared_ptr<>::use_count() function is
62 * used to ascertain whether or not to remove the item from the cache
63 * when remove(file) is called.
65 * You have been warned!
67 typedef std::shared_ptr<CacheItem> ItemPtr;
69 ItemPtr const item(support::FileName const & file) const;
74 void operator=(Cache const &);
76 /** Make the c-tor, d-tor private so we can control how many objects
83 /// Use the Pimpl idiom to hide the internals.
85 /// The pointer never changes although *pimpl_'s contents may.
89 } // namespace graphics
92 #endif // GRAPHICSCACHE_H