X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fgraphics%2FGraphicsCache.cpp;h=d50856389197f057675ebc910068d81ff7c34534;hb=9d00e2ec0a26dba68b90252b7fe8c02e2e448b28;hp=10f9fc7a73b8f8141a77f7ffa9faeebafdf9ad32;hpb=f497296c30e6da2f97b16da8ad1c9e96feffb16b;p=lyx.git diff --git a/src/graphics/GraphicsCache.cpp b/src/graphics/GraphicsCache.cpp index 10f9fc7a73..d508563891 100644 --- a/src/graphics/GraphicsCache.cpp +++ b/src/graphics/GraphicsCache.cpp @@ -15,25 +15,27 @@ #include "GraphicsCacheItem.h" #include "GraphicsImage.h" -#include "debug.h" +#include "Format.h" +#include "frontends/Application.h" + +#include "support/debug.h" +#include "support/FileName.h" #include "support/filetools.h" #include -using std::string; - +using namespace std; +using namespace lyx::support; namespace lyx { -using support::FileName; - namespace graphics { /** The cache contains one item per file, so use a map to find the * cache item quickly by filename. */ -typedef std::map CacheType; +typedef map CacheType; class Cache::Impl { public: @@ -56,12 +58,49 @@ Cache::Cache() Cache::~Cache() -{} +{ + delete pimpl_; +} -std::vector Cache::loadableFormats() const +vector const & Cache::loadableFormats() const { - return Image::loadableFormats(); + static vector fmts; + + if (!fmts.empty()) + return fmts; + + // The formats recognised by LyX + Formats::const_iterator begin = formats.begin(); + Formats::const_iterator end = formats.end(); + + // The formats natively loadable. + vector nformat = frontend::loadableImageFormats(); + + vector::const_iterator it = nformat.begin(); + for (; it != nformat.end(); ++it) { + for (Formats::const_iterator fit = begin; fit != end; ++fit) { + if (fit->extension() == *it) { + fmts.push_back(fit->name()); + break; + } + } + } + + if (lyxerr.debugging()) { + LYXERR(Debug::GRAPHICS, "LyX recognises the following image formats:"); + + vector::const_iterator fbegin = fmts.begin(); + vector::const_iterator fend = fmts.end(); + for (vector::const_iterator fit = fbegin; fit != fend; ++fit) { + if (fit != fbegin) + LYXERR(Debug::GRAPHICS, ", "); + LYXERR(Debug::GRAPHICS, *fit); + } + LYXERR(Debug::GRAPHICS, '\n'); + } + + return fmts; } @@ -69,9 +108,8 @@ void Cache::add(FileName const & file) const { // Is the file in the cache already? if (inCache(file)) { - LYXERR(Debug::GRAPHICS) << "Cache::add(" << file << "):\n" - << "The file is already in the cache." - << std::endl; + LYXERR(Debug::GRAPHICS, "Cache::add(" << file << "):\n" + << "The file is already in the cache."); return; }