X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fgraphics%2FPreviewLoader.cpp;h=7371ea68ffb057dc2d34d2f26d56efeac5bf57d7;hb=ecf62a8f21e457936ed285d4fbcbed7348bb636b;hp=d9133d9a7dc09763938061fd92963d71d839aa59;hpb=38c2cde0d8695ac5287bae218c4a33a2acf18ef8;p=lyx.git diff --git a/src/graphics/PreviewLoader.cpp b/src/graphics/PreviewLoader.cpp index d9133d9a7d..7371ea68ff 100644 --- a/src/graphics/PreviewLoader.cpp +++ b/src/graphics/PreviewLoader.cpp @@ -19,7 +19,6 @@ #include "Converter.h" #include "Encoding.h" #include "Format.h" -#include "InsetIterator.h" #include "LaTeXFeatures.h" #include "LyXRC.h" #include "output.h" @@ -29,8 +28,6 @@ #include "frontends/Application.h" // hexName -#include "insets/Inset.h" - #include "support/convert.h" #include "support/debug.h" #include "support/FileName.h" @@ -124,14 +121,10 @@ void setAscentFractions(vector & ascent_fractions, } -class FindFirst +std::function FindFirst(string const & comp) { -public: - FindFirst(string const & comp) : comp_(comp) {} - bool operator()(SnippetPair const & sp) const { return sp.first == comp_; } -private: - string const comp_; -}; + return [&comp](SnippetPair const & sp) { return sp.first == comp; }; +} /// Store info on a currently executing, forked process. @@ -146,14 +139,14 @@ public: /// Remove any files left lying around and kill the forked process. void stop() const; - /// - pid_t pid; /// string command; /// FileName metrics_file; /// BitmapFile snippets; + /// + pid_t pid; }; typedef map InProgressProcesses; @@ -197,7 +190,7 @@ private: /// Called by the ForkedCall process that generated the bitmap files. void finishedGenerating(pid_t, int); /// - void dumpPreamble(otexstream &, OutputParams::FLAVOR) const; + void dumpPreamble(otexstream &, FLAVOR) const; /// void dumpData(odocstream &, BitmapFile const &) const; @@ -233,12 +226,13 @@ private: /// QTimer * delay_refresh_; /// + Trackable trackable_; + /// bool finished_generating_; /// We don't own this static lyx::Converter const * pconverter_; - Trackable trackable_; }; @@ -333,11 +327,10 @@ public: { ostringstream os; os << base_ << counter_++ << '.' << to_format_; - string const file = os.str(); - - return make_pair(snippet, FileName(file)); + string const file_name = os.str(); + return make_pair(snippet, FileName(file_name)); } - + private: string const & to_format_; string const & base_; @@ -348,9 +341,8 @@ private: InProgress::InProgress(string const & filename_base, PendingSnippets const & pending, string const & to_format) - : pid(0), - metrics_file(filename_base + ".metrics"), - snippets(pending.size()) + : metrics_file(filename_base + ".metrics"), + snippets(pending.size()), pid(0) { PendingSnippets::const_iterator pit = pending.begin(); PendingSnippets::const_iterator pend = pending.end(); @@ -388,8 +380,8 @@ PreviewLoader::Impl::Impl(PreviewLoader & p, Buffer const & b) { font_scaling_factor_ = int(buffer_.fontScalingFactor()); if (theApp()) { - fg_color_ = strtol(theApp()->hexName(foregroundColor()).c_str(), 0, 16); - bg_color_ = strtol(theApp()->hexName(backgroundColor()).c_str(), 0, 16); + fg_color_ = convert(theApp()->hexName(foregroundColor()).c_str(), 16); + bg_color_ = convert(theApp()->hexName(backgroundColor()).c_str(), 16); } else { fg_color_ = 0x0; bg_color_ = 0xffffff; @@ -452,8 +444,8 @@ PreviewLoader::Impl::preview(string const & latex_snippet) const int fg = 0x0; int bg = 0xffffff; if (theApp()) { - fg = strtol(theApp()->hexName(foregroundColor()).c_str(), 0, 16); - bg = strtol(theApp()->hexName(backgroundColor()).c_str(), 0, 16); + fg = convert(theApp()->hexName(foregroundColor()).c_str(), 16); + bg = convert(theApp()->hexName(backgroundColor()).c_str(), 16); } if (font_scaling_factor_ != fs || fg_color_ != fg || bg_color_ != bg) { // Schedule refresh of all previews on zoom or color changes. @@ -465,9 +457,10 @@ PreviewLoader::Impl::preview(string const & latex_snippet) const } // Don't try to access the cache until we are done. if (delay_refresh_->isActive() || !finished_generating_) - return 0; + return nullptr; + Cache::const_iterator it = cache_.find(latex_snippet); - return (it == cache_.end()) ? 0 : it->second.get(); + return (it == cache_.end()) ? nullptr : it->second.get(); } @@ -490,20 +483,15 @@ void PreviewLoader::Impl::refreshPreviews() namespace { -class FindSnippet { -public: - FindSnippet(string const & s) : snippet_(s) {} - bool operator()(InProgressProcess const & process) const - { +std::function FindSnippet(string const & s) +{ + return [&s](InProgressProcess const & process) { BitmapFile const & snippets = process.second.snippets; BitmapFile::const_iterator beg = snippets.begin(); BitmapFile::const_iterator end = snippets.end(); - return find_if(beg, end, FindFirst(snippet_)) != end; - } - -private: - string const snippet_; -}; + return find_if(beg, end, FindFirst(s)) != end; + }; +} } // namespace @@ -549,23 +537,18 @@ void PreviewLoader::Impl::add(string const & latex_snippet) namespace { -class EraseSnippet { -public: - EraseSnippet(string const & s) : snippet_(s) {} - void operator()(InProgressProcess & process) - { +std::function EraseSnippet(string const & s) +{ + return [&s](InProgressProcess & process) { BitmapFile & snippets = process.second.snippets; BitmapFile::iterator it = snippets.begin(); BitmapFile::iterator end = snippets.end(); - it = find_if(it, end, FindFirst(snippet_)); + it = find_if(it, end, FindFirst(s)); if (it != end) snippets.erase(it, it+1); - } - -private: - string const & snippet_; -}; + }; +} } // namespace @@ -645,7 +628,7 @@ void PreviewLoader::Impl::startLoading(bool wait) // Set \jobname of previews to the document name (see bug 9627) of << "\\def\\jobname{" - << from_utf8(changeExtension(buffer_.latexName(true), "")) + << from_utf8(changeExtension(buffer_.latexName(), "")) << "}\n"; LYXERR(Debug::LATEX, "Format = " << buffer_.params().getDefaultOutputFormat()); @@ -654,42 +637,42 @@ void PreviewLoader::Impl::startLoading(bool wait) && buffer_.params().default_output_format != "default"; // Use LATEX flavor if the document does not specify a specific // output format (see bug 9371). - OutputParams::FLAVOR flavor = docformat + FLAVOR flavor = docformat ? buffer_.params().getOutputFlavor() - : OutputParams::LATEX; + : FLAVOR::LATEX; if (buffer_.params().encoding().package() == Encoding::japanese) { latexparam = " --latex=platex"; - flavor = OutputParams::LATEX; + flavor = FLAVOR::LATEX; } else if (buffer_.params().useNonTeXFonts) { - if (flavor == OutputParams::LUATEX) + if (flavor == FLAVOR::LUATEX) latexparam = " --latex=lualatex"; else { - flavor = OutputParams::XETEX; + flavor = FLAVOR::XETEX; latexparam = " --latex=xelatex"; } } else { switch (flavor) { - case OutputParams::PDFLATEX: + case FLAVOR::PDFLATEX: latexparam = " --latex=pdflatex"; break; - case OutputParams::XETEX: + case FLAVOR::XETEX: latexparam = " --latex=xelatex"; break; - case OutputParams::LUATEX: + case FLAVOR::LUATEX: latexparam = " --latex=lualatex"; break; - case OutputParams::DVILUATEX: + case FLAVOR::DVILUATEX: latexparam = " --latex=dvilualatex"; break; default: - flavor = OutputParams::LATEX; + flavor = FLAVOR::LATEX; } } dumpPreamble(os, flavor); // handle inputenc etc. - // I think, this is already hadled by dumpPreamble(): Kornel + // I think this is already handled by dumpPreamble(): Kornel // buffer_.params().writeEncodingPreamble(os, features); of << "\n\\begin{document}\n"; dumpData(of, inprogress.snippets); @@ -796,7 +779,7 @@ void PreviewLoader::Impl::finishedGenerating(pid_t pid, int retval) list newimages; - int metrics_counter = 0; + size_t metrics_counter = 0; for (; it != end; ++it, ++metrics_counter) { string const & snip = it->first; FileName const & file = it->second; @@ -828,10 +811,10 @@ void PreviewLoader::Impl::finishedGenerating(pid_t pid, int retval) } -void PreviewLoader::Impl::dumpPreamble(otexstream & os, OutputParams::FLAVOR flavor) const +void PreviewLoader::Impl::dumpPreamble(otexstream & os, FLAVOR flavor) const { // Dump the preamble only. - LYXERR(Debug::LATEX, "dumpPreamble, flavor == " << flavor); + LYXERR(Debug::LATEX, "dumpPreamble, flavor == " << static_cast(flavor)); OutputParams runparams(&buffer_.params().encoding()); runparams.flavor = flavor; runparams.nice = true;