X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2Frender_graphic.C;h=513b602d181edb1f71eb93852ac3996e32cf52f8;hb=e28331ed63062dea10d0a21b9ec12034b4b17b9a;hp=a7e2bcb7e4e5420214a8c51b615e0109fe991580;hpb=c46b7d89553209b8df4e9de392ee07ef711f092f;p=lyx.git diff --git a/src/insets/render_graphic.C b/src/insets/render_graphic.C index a7e2bcb7e4..513b602d18 100644 --- a/src/insets/render_graphic.C +++ b/src/insets/render_graphic.C @@ -20,7 +20,7 @@ #include "lyxrc.h" #include "metricsinfo.h" -#include "frontends/font_metrics.h" +#include "frontends/FontMetrics.h" #include "frontends/Painter.h" #include "graphics/GraphicsImage.h" @@ -29,11 +29,10 @@ #include -namespace graphics = lyx::graphics; -using lyx::docstring; -using lyx::support::absolutePath; -using lyx::support::onlyFilename; +namespace lyx { + +using support::onlyFilename; using std::string; using std::auto_ptr; @@ -68,7 +67,6 @@ void RenderGraphic::update(graphics::Params const & params) params_ = params; if (!params_.filename.empty()) { - BOOST_ASSERT(absolutePath(params_.filename)); loader_.reset(params_.filename, params_); } } @@ -83,37 +81,52 @@ bool displayGraphic(graphics::Params const & params) } -string const statusMessage(graphics::Params const & params, +docstring const statusMessage(graphics::Params const & params, graphics::ImageStatus status) { + docstring ret; + if (!displayGraphic(params)) - return _("Not shown."); - - switch (status) { - case graphics::WaitingToLoad: - return _("Not shown."); - case graphics::Loading: - return _("Loading..."); - case graphics::Converting: - return _("Converting to loadable format..."); - case graphics::Loaded: - return _("Loaded into memory. Generating pixmap..."); - case graphics::ScalingEtc: - return _("Scaling etc..."); - case graphics::Ready: - return _("Ready to display"); - case graphics::ErrorNoFile: - return _("No file found!"); - case graphics::ErrorConverting: - return _("Error converting to loadable format"); - case graphics::ErrorLoading: - return _("Error loading file into memory"); - case graphics::ErrorGeneratingPixmap: - return _("Error generating the pixmap"); - case graphics::ErrorUnknown: - return _("No image"); + ret = _("Not shown."); + else { + switch (status) { + case graphics::WaitingToLoad: + ret = _("Not shown."); + break; + case graphics::Loading: + ret = _("Loading..."); + break; + case graphics::Converting: + ret = _("Converting to loadable format..."); + break; + case graphics::Loaded: + ret = _("Loaded into memory. Generating pixmap..."); + break; + case graphics::ScalingEtc: + ret = _("Scaling etc..."); + break; + case graphics::Ready: + ret = _("Ready to display"); + break; + case graphics::ErrorNoFile: + ret = _("No file found!"); + break; + case graphics::ErrorConverting: + ret = _("Error converting to loadable format"); + break; + case graphics::ErrorLoading: + ret = _("Error loading file into memory"); + break; + case graphics::ErrorGeneratingPixmap: + ret = _("Error generating the pixmap"); + break; + case graphics::ErrorUnknown: + ret = _("No image"); + break; + } } - return string(); + + return ret; } @@ -127,7 +140,7 @@ bool readyToDisplay(graphics::Loader const & loader) } // namespace anon -void RenderGraphic::metrics(MetricsInfo & mi, Dimension & dim) const +bool RenderGraphic::metrics(MetricsInfo & mi, Dimension & dim) const { bool image_ready = displayGraphic(params_) && readyToDisplay(loader_); @@ -143,25 +156,28 @@ void RenderGraphic::metrics(MetricsInfo & mi, Dimension & dim) const LyXFont msgFont(mi.base.font); msgFont.setFamily(LyXFont::SANS_FAMILY); - string const justname = onlyFilename(params_.filename); - docstring djust(justname.begin(), justname.end()); + // FIXME UNICODE + docstring const justname = + from_utf8(onlyFilename(params_.filename.absFilename())); if (!justname.empty()) { msgFont.setSize(LyXFont::SIZE_FOOTNOTE); - font_width = font_metrics::width(djust, msgFont); + font_width = theFontMetrics(msgFont) + .width(justname); } - string const msg = statusMessage(params_, loader_.status()); + docstring const msg = statusMessage(params_, loader_.status()); if (!msg.empty()) { - docstring dmsg(msg.begin(), msg.end()); msgFont.setSize(LyXFont::SIZE_TINY); font_width = std::max(font_width, - font_metrics::width(dmsg, msgFont)); + theFontMetrics(msgFont).width(msg)); } dim.wid = std::max(50, font_width + 15); } + bool const changed = dim_ != dim; dim_ = dim; + return changed; } @@ -194,23 +210,24 @@ void RenderGraphic::draw(PainterInfo & pi, int x, int y) const // Print the file name. LyXFont msgFont = pi.base.font; msgFont.setFamily(LyXFont::SANS_FAMILY); - string const justname = onlyFilename(params_.filename); + string const justname = onlyFilename(params_.filename.absFilename()); if (!justname.empty()) { - docstring djust(justname.begin(), justname.end()); msgFont.setSize(LyXFont::SIZE_FOOTNOTE); pi.pain.text(x + InsetOld::TEXT_TO_INSET_OFFSET + 6, - y - font_metrics::maxAscent(msgFont) - 4, - djust, msgFont); + y - theFontMetrics(msgFont).maxAscent() - 4, + from_utf8(justname), msgFont); } // Print the message. - string const msg = statusMessage(params_, loader_.status()); + docstring const msg = statusMessage(params_, loader_.status()); if (!msg.empty()) { - docstring dmsg(msg.begin(), msg.end()); msgFont.setSize(LyXFont::SIZE_TINY); pi.pain.text(x + InsetOld::TEXT_TO_INSET_OFFSET + 6, - y - 4, dmsg, msgFont); + y - 4, msg, msgFont); } } } + + +} // namespace lyx