commit b1e2986df8ad819ac732e8a86b6dff09333a95ca
Author: Juergen Spitzmueller <sp...@lyx.org>
Date:   Sat Mar 16 11:55:17 2024 +0100

    Use docstring for preview snippet all the way down
    
    No need to convert back and forth
---
 src/graphics/PreviewImage.cpp  | 10 ++++-----
 src/graphics/PreviewImage.h    |  4 ++--
 src/graphics/PreviewLoader.cpp | 49 +++++++++++++++++++++---------------------
 src/graphics/PreviewLoader.h   |  9 ++++----
 src/insets/InsetText.cpp       |  4 ++--
 src/insets/RenderPreview.cpp   |  4 ++--
 src/insets/RenderPreview.h     |  2 +-
 7 files changed, 42 insertions(+), 40 deletions(-)

diff --git a/src/graphics/PreviewImage.cpp b/src/graphics/PreviewImage.cpp
index b31af6fbd9..e94384c168 100644
--- a/src/graphics/PreviewImage.cpp
+++ b/src/graphics/PreviewImage.cpp
@@ -32,7 +32,7 @@ class PreviewImage::Impl {
 public:
        ///
        Impl(PreviewImage & p, PreviewLoader & l,
-            string const & s, FileName const & f, double af);
+            docstring const & s, FileName const & f, double af);
        ///
        ~Impl();
        ///
@@ -47,14 +47,14 @@ public:
        ///
        Loader iloader_;
        ///
-       string const snippet_;
+       docstring const snippet_;
        ///
        double const ascent_frac_;
 };
 
 
 PreviewImage::PreviewImage(PreviewLoader & l,
-                          string const & s,
+                          docstring const & s,
                           FileName const & f,
                           double af)
        : pimpl_(new Impl(*this, l, s, f, af))
@@ -67,7 +67,7 @@ PreviewImage::~PreviewImage()
 }
 
 
-string const & PreviewImage::snippet() const
+docstring const & PreviewImage::snippet() const
 {
        return pimpl_->snippet_;
 }
@@ -105,7 +105,7 @@ PreviewLoader & PreviewImage::previewLoader() const
 }
 
 
-PreviewImage::Impl::Impl(PreviewImage & p, PreviewLoader & l, string const & s,
+PreviewImage::Impl::Impl(PreviewImage & p, PreviewLoader & l, docstring const 
& s,
                          FileName const & bf, double af)
        : parent_(p), ploader_(l), iloader_(l.buffer().fileName(), bf),
          snippet_(s), ascent_frac_(af)
diff --git a/src/graphics/PreviewImage.h b/src/graphics/PreviewImage.h
index bea2553eeb..6d26748092 100644
--- a/src/graphics/PreviewImage.h
+++ b/src/graphics/PreviewImage.h
@@ -31,14 +31,14 @@ public:
         *  descent = height * (1 - ascent_frac)
         */
        PreviewImage(PreviewLoader & parent,
-                    std::string const & latex_snippet,
+                    docstring const & latex_snippet,
                     support::FileName const & bitmap_file,
                     double ascent_frac);
        ///
        ~PreviewImage();
 
        ///
-       std::string const & snippet() const;
+       docstring const & snippet() const;
        ///
        Dimension dim() const;
 
diff --git a/src/graphics/PreviewLoader.cpp b/src/graphics/PreviewLoader.cpp
index d39a6a8513..4c37f7a8d0 100644
--- a/src/graphics/PreviewLoader.cpp
+++ b/src/graphics/PreviewLoader.cpp
@@ -47,16 +47,17 @@
 #include <QTimer>
 
 using namespace std;
+using namespace lyx;
 using namespace lyx::support;
 
 
 
 namespace {
 
-typedef pair<string, FileName> SnippetPair;
+typedef pair<docstring, FileName> SnippetPair;
 
 // A list of all snippets to be converted to previews
-typedef list<string> PendingSnippets;
+typedef list<docstring> PendingSnippets;
 
 // Each item in the vector is a pair<snippet, image file name>.
 typedef vector<SnippetPair> BitmapFile;
@@ -121,7 +122,7 @@ void setAscentFractions(vector<double> & ascent_fractions,
 }
 
 
-std::function <bool (SnippetPair const &)> FindFirst(string const & comp)
+std::function <bool (SnippetPair const &)> FindFirst(docstring const & comp)
 {
        return [&comp](SnippetPair const & sp) { return sp.first == comp; };
 }
@@ -166,13 +167,13 @@ public:
        /// Stop any InProgress items still executing.
        ~Impl();
        ///
-       PreviewImage const * preview(string const & latex_snippet) const;
+       PreviewImage const * preview(docstring const & latex_snippet) const;
        ///
-       PreviewLoader::Status status(string const & latex_snippet) const;
+       PreviewLoader::Status status(docstring const & latex_snippet) const;
        ///
-       void add(string const & latex_snippet);
+       void add(docstring const & latex_snippet);
        ///
-       void remove(string const & latex_snippet);
+       void remove(docstring const & latex_snippet);
        /// \p wait whether to wait for the process to complete or, instead,
        /// to do it in the background.
        void startLoading(bool wait = false);
@@ -199,7 +200,7 @@ private:
         */
        typedef std::shared_ptr<PreviewImage> PreviewImagePtr;
        ///
-       typedef map<string, PreviewImagePtr> Cache;
+       typedef map<docstring, PreviewImagePtr> Cache;
        ///
        Cache cache_;
 
@@ -246,25 +247,25 @@ PreviewLoader::PreviewLoader(Buffer const & b)
 {}
 
 
-PreviewImage const * PreviewLoader::preview(string const & latex_snippet) const
+PreviewImage const * PreviewLoader::preview(docstring const & latex_snippet) 
const
 {
        return pimpl_->preview(latex_snippet);
 }
 
 
-PreviewLoader::Status PreviewLoader::status(string const & latex_snippet) const
+PreviewLoader::Status PreviewLoader::status(docstring const & latex_snippet) 
const
 {
        return pimpl_->status(latex_snippet);
 }
 
 
-void PreviewLoader::add(string const & latex_snippet) const
+void PreviewLoader::add(docstring const & latex_snippet) const
 {
        pimpl_->add(latex_snippet);
 }
 
 
-void PreviewLoader::remove(string const & latex_snippet) const
+void PreviewLoader::remove(docstring const & latex_snippet) const
 {
        pimpl_->remove(latex_snippet);
 }
@@ -315,7 +316,7 @@ public:
                : to_format_(to_format), base_(filename_base), counter_(1)
        {}
 
-       SnippetPair const operator()(string const & snippet)
+       SnippetPair const operator()(docstring const & snippet)
        {
                ostringstream os;
                os << base_ << counter_++ << '.' << to_format_;
@@ -430,7 +431,7 @@ PreviewLoader::Impl::~Impl()
 
 
 PreviewImage const *
-PreviewLoader::Impl::preview(string const & latex_snippet) const
+PreviewLoader::Impl::preview(docstring const & latex_snippet) const
 {
        int fs = int(buffer_.fontScalingFactor());
        int fg = 0x0;
@@ -475,7 +476,7 @@ void PreviewLoader::Impl::refreshPreviews()
 
 namespace {
 
-std::function<bool (InProgressProcess const &)> FindSnippet(string const & s)
+std::function<bool (InProgressProcess const &)> FindSnippet(docstring const & 
s)
 {
        return [&s](InProgressProcess const & process) {
                BitmapFile const & snippets = process.second.snippets;
@@ -488,7 +489,7 @@ std::function<bool (InProgressProcess const &)> 
FindSnippet(string const & s)
 } // namespace
 
 PreviewLoader::Status
-PreviewLoader::Impl::status(string const & latex_snippet) const
+PreviewLoader::Impl::status(docstring const & latex_snippet) const
 {
        Cache::const_iterator cit = cache_.find(latex_snippet);
        if (cit != cache_.end())
@@ -512,12 +513,12 @@ PreviewLoader::Impl::status(string const & latex_snippet) 
const
 }
 
 
-void PreviewLoader::Impl::add(string const & latex_snippet)
+void PreviewLoader::Impl::add(docstring const & latex_snippet)
 {
        if (!pconverter_ || status(latex_snippet) != NotFound)
                return;
 
-       string const snippet = trim(latex_snippet);
+       docstring const snippet = trim(latex_snippet);
        if (snippet.empty())
                return;
 
@@ -529,7 +530,7 @@ void PreviewLoader::Impl::add(string const & latex_snippet)
 
 namespace {
 
-std::function<void (InProgressProcess &)> EraseSnippet(string const & s)
+std::function<void (InProgressProcess &)> EraseSnippet(docstring const & s)
 {
        return [&s](InProgressProcess & process) {
                BitmapFile & snippets = process.second.snippets;
@@ -545,7 +546,7 @@ std::function<void (InProgressProcess &)> 
EraseSnippet(string const & s)
 } // namespace
 
 
-void PreviewLoader::Impl::remove(string const & latex_snippet)
+void PreviewLoader::Impl::remove(docstring const & latex_snippet)
 {
        Cache::iterator cit = cache_.find(latex_snippet);
        if (cit != cache_.end())
@@ -768,7 +769,7 @@ void PreviewLoader::Impl::finishedGenerating(pid_t pid, int 
retval)
 
        size_t metrics_counter = 0;
        for (; it != end; ++it, ++metrics_counter) {
-               string const & snip = it->first;
+               docstring const & snip = it->first;
                FileName const & file = it->second;
                double af = ascent_fractions[metrics_counter];
 
@@ -857,19 +858,19 @@ void PreviewLoader::Impl::dumpData(odocstream & os,
                // FIXME: the preview loader should be able
                //        to handle multiple encodings
                //        or we should generally use utf8
-               for (char_type n : from_utf8(it->first)) {
+               for (char_type n : it->first) {
                        if (!enc.encodable(n)) {
                                LYXERR0("Uncodable character '"
                                        << docstring(1, n)
                                        << "' in preview snippet!");
                                uncodable_content = true;
+                               break;
                        }
                }
-               // FIXME UNICODE
                os << "\\begin{preview}\n";
                // do not show incomplete preview
                if (!uncodable_content)
-                       os << from_utf8(it->first);
+                       os << it->first;
                os << "\n\\end{preview}\n\n";
        }
 }
diff --git a/src/graphics/PreviewLoader.h b/src/graphics/PreviewLoader.h
index 272c4d361b..151be82b5f 100644
--- a/src/graphics/PreviewLoader.h
+++ b/src/graphics/PreviewLoader.h
@@ -19,6 +19,7 @@
 #define PREVIEWLOADER_H
 
 #include "ColorCode.h"
+#include "support/docstring.h"
 #include "support/signals.h"
 
 #include <QObject>
@@ -44,7 +45,7 @@ public:
        /** Is there an image already associated with this snippet of LaTeX?
         *  If so, returns a pointer to it, else returns 0.
         */
-       PreviewImage const * preview(std::string const & latex_snippet) const;
+       PreviewImage const * preview(docstring const & latex_snippet) const;
 
        ///
        enum Status {
@@ -59,13 +60,13 @@ public:
        };
 
        /// How far have we got in loading the image?
-       Status status(std::string const & latex_snippet) const;
+       Status status(docstring const & latex_snippet) const;
 
        /// Add a snippet of LaTeX to the queue for processing.
-       void add(std::string const & latex_snippet) const;
+       void add(docstring const & latex_snippet) const;
 
        /// Remove this snippet of LaTeX from the PreviewLoader.
-       void remove(std::string const & latex_snippet) const;
+       void remove(docstring const & latex_snippet) const;
 
        /** We have accumulated several latex snippets with status "InQueue".
         *  Initiate their transformation into bitmap images.
diff --git a/src/insets/InsetText.cpp b/src/insets/InsetText.cpp
index 7dbf43e3a7..d65cbf9f31 100644
--- a/src/insets/InsetText.cpp
+++ b/src/insets/InsetText.cpp
@@ -661,7 +661,7 @@ void InsetText::docbookRenderAsImage(XMLStream & xs, 
OutputParams const & rp, XH
        // Also, the image must be generated before the DocBook output is 
finished,
        // unlike a preview that is not immediately required for display.
        docstring const latex_snippet = insetToLaTeXSnippet(&buffer(), this);
-       std::string const snippet = support::trim(to_utf8(latex_snippet));
+       docstring const snippet = support::trim(latex_snippet);
        // TODO: no real support for Unicode. This code is very similar to 
RenderPreview::addPreview, the same gotcha applies.
 
        graphics::PreviewLoader* loader = buffer().loader();
@@ -681,7 +681,7 @@ void InsetText::docbookRenderAsImage(XMLStream & xs, 
OutputParams const & rp, XH
        // same hash (by design of cryptographic hash functions). Computing a 
hash
        // is typically slow, but extremely fast compared to compilation of the
        // preview and image rendering.
-       std::string newFileName = "lyx_" + sanitizeFileName(toHexHash(snippet)) 
+ "." + filename.extension();
+       std::string newFileName = "lyx_" + 
sanitizeFileName(toHexHash(to_utf8(snippet))) + "." + filename.extension();
 
        // Copy the image into the right folder.
        rp.exportdata->addExternalFile("docbook5", filename, newFileName);
diff --git a/src/insets/RenderPreview.cpp b/src/insets/RenderPreview.cpp
index 313dface96..48d471c3c5 100644
--- a/src/insets/RenderPreview.cpp
+++ b/src/insets/RenderPreview.cpp
@@ -88,7 +88,7 @@ RenderBase * RenderPreview::clone(Inset const * inset) const
 
 namespace {
 
-docstring const statusMessage(BufferView const * bv, string const & snippet)
+docstring const statusMessage(BufferView const * bv, docstring const & snippet)
 {
        LASSERT(bv, return docstring());
 
@@ -221,7 +221,7 @@ void RenderPreview::addPreview(docstring const & 
latex_snippet,
 
        // FIXME UNICODE
        // We have to make sure that we call latex with the right encoding
-       snippet_ = support::trim(to_utf8(latex_snippet));
+       snippet_ = support::trim(latex_snippet);
        if (snippet_.empty())
                return;
 
diff --git a/src/insets/RenderPreview.h b/src/insets/RenderPreview.h
index 24eda3a691..f76d50b4f9 100644
--- a/src/insets/RenderPreview.h
+++ b/src/insets/RenderPreview.h
@@ -96,7 +96,7 @@ private:
        void imageReady(graphics::PreviewImage const &);
 
        /// The thing that we're trying to generate a preview of.
-       std::string snippet_;
+       docstring snippet_;
 
        /** Store the connection to the preview loader so that we connect
         *  only once.
-- 
lyx-cvs mailing list
lyx-cvs@lists.lyx.org
http://lists.lyx.org/mailman/listinfo/lyx-cvs

Reply via email to