X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2Frender_preview.C;h=5badea260db3690bd1119f9f68fb81e19a8ced4d;hb=e28331ed63062dea10d0a21b9ec12034b4b17b9a;hp=e6882fb32ff8c2271487a3edcef47cf75e658923;hpb=66cd8361ff06c1399670cdfe1ffffd32f5de549f;p=lyx.git diff --git a/src/insets/render_preview.C b/src/insets/render_preview.C index e6882fb32f..5badea260d 100644 --- a/src/insets/render_preview.C +++ b/src/insets/render_preview.C @@ -21,23 +21,26 @@ #include "lyxrc.h" #include "metricsinfo.h" -#include "frontends/font_metrics.h" +#include "frontends/FontMetrics.h" #include "frontends/Painter.h" #include "graphics/PreviewImage.h" #include "graphics/PreviewLoader.h" #include "graphics/Previews.h" +#include "support/filename.h" #include "support/lstrings.h" #include + +namespace lyx { + +using support::FileName; + using std::string; using std::auto_ptr; -namespace graphics = lyx::graphics; -namespace support = lyx::support; - LyXRC_PreviewStatus RenderPreview::status() { @@ -74,7 +77,7 @@ graphics::PreviewLoader & getPreviewLoader(Buffer const & buffer) } -string const statusMessage(BufferView const * bv, string const & snippet) +docstring const statusMessage(BufferView const * bv, string const & snippet) { BOOST_ASSERT(bv && bv->buffer()); @@ -82,7 +85,7 @@ string const statusMessage(BufferView const * bv, string const & snippet) graphics::PreviewLoader const & loader = getPreviewLoader(buffer); graphics::PreviewLoader::Status const status = loader.status(snippet); - string message; + docstring message; switch (status) { case graphics::PreviewLoader::InQueue: case graphics::PreviewLoader::Processing: @@ -110,9 +113,9 @@ RenderPreview::getPreviewImage(Buffer const & buffer) const } -void RenderPreview::metrics(MetricsInfo & mi, Dimension & dim) const +bool RenderPreview::metrics(MetricsInfo & mi, Dimension & dim) const { - BOOST_ASSERT(mi.base.bv && mi.base.bv->buffer()); + BOOST_ASSERT(mi.base.bv && mi.base.bv->buffer()); graphics::PreviewImage const * const pimage = getPreviewImage(*mi.base.bv->buffer()); @@ -128,18 +131,19 @@ void RenderPreview::metrics(MetricsInfo & mi, Dimension & dim) const LyXFont font(mi.base.font); font.setFamily(LyXFont::SANS_FAMILY); font.setSize(LyXFont::SIZE_FOOTNOTE); - dim.wid = 15 + - font_metrics::width(statusMessage(mi.base.bv, snippet_), - font); + docstring const stat = statusMessage(mi.base.bv, snippet_); + dim.wid = 15 + theFontMetrics(font).width(stat); } + bool const changed = dim_ != dim; dim_ = dim; + return changed; } void RenderPreview::draw(PainterInfo & pi, int x, int y) const { - BOOST_ASSERT(pi.base.bv && pi.base.bv->buffer()); + BOOST_ASSERT(pi.base.bv && pi.base.bv->buffer()); graphics::PreviewImage const * const pimage = getPreviewImage(*pi.base.bv->buffer()); @@ -162,9 +166,10 @@ void RenderPreview::draw(PainterInfo & pi, int x, int y) const font.setFamily(LyXFont::SANS_FAMILY); font.setSize(LyXFont::SIZE_FOOTNOTE); + docstring const stat = statusMessage(pi.base.bv, snippet_); pi.pain.text(x + offset + 6, - y - font_metrics::maxAscent(font) - 4, - statusMessage(pi.base.bv, snippet_), font); + y - theFontMetrics(font).maxAscent() - 4, + stat, font); } } @@ -179,7 +184,7 @@ void RenderPreview::startLoading(Buffer const & buffer) const } -void RenderPreview::addPreview(string const & latex_snippet, +void RenderPreview::addPreview(docstring const & latex_snippet, Buffer const & buffer) { if (status() == LyXRC::PREVIEW_OFF) @@ -190,13 +195,15 @@ void RenderPreview::addPreview(string const & latex_snippet, } -void RenderPreview::addPreview(string const & latex_snippet, +void RenderPreview::addPreview(docstring const & latex_snippet, graphics::PreviewLoader & ploader) { if (status() == LyXRC::PREVIEW_OFF) return; - snippet_ = support::trim(latex_snippet); + // FIXME UNICODE + // We have to make sure that we call latex with the right encoding + snippet_ = support::trim(to_utf8(latex_snippet)); if (snippet_.empty()) return; @@ -236,11 +243,11 @@ void RenderPreview::imageReady(graphics::PreviewImage const & pimage) RenderMonitoredPreview::RenderMonitoredPreview(InsetBase const * inset) : RenderPreview(inset), - monitor_(std::string(), 2000) + monitor_(FileName(), 2000) {} -void RenderMonitoredPreview::setAbsFile(string const & file) +void RenderMonitoredPreview::setAbsFile(FileName const & file) { monitor_.reset(file); } @@ -259,3 +266,5 @@ RenderMonitoredPreview::fileChanged(slot_type const & slot) { return monitor_.connect(slot); } + +} // namespace lyx