]> git.lyx.org Git - lyx.git/blobdiff - src/insets/RenderPreview.cpp
This should be the last of the commits refactoring the InsetLayout code.
[lyx.git] / src / insets / RenderPreview.cpp
index 54c0f7d7c4a2447de6e72a7c1ebe0f9ebd2a3295..1d4fb9d6a5f521c8a73b4d9cb3e19beff22bc64d 100644 (file)
 #include "insets/Inset.h"
 
 #include "BufferView.h"
-#include "dimension.h"
-#include "gettext.h"
-#include "LColor.h"
-#include "lyx_main.h"
-#include "lyxrc.h"
-#include "metricsinfo.h"
+#include "Dimension.h"
+#include "support/gettext.h"
+#include "LyX.h"
+#include "LyXRC.h"
+#include "MetricsInfo.h"
 
 #include "frontends/FontMetrics.h"
 #include "frontends/Painter.h"
 #include "graphics/PreviewLoader.h"
 #include "graphics/Previews.h"
 
-#include "support/filename.h"
+#include "support/FileName.h"
 #include "support/lstrings.h"
 
 #include <boost/bind.hpp>
 
+using namespace std;
+using namespace lyx::support;
 
 namespace lyx {
 
-using support::FileName;
-
-using std::string;
-using std::auto_ptr;
-
 
 LyXRC_PreviewStatus RenderPreview::status()
 {
@@ -48,13 +44,13 @@ LyXRC_PreviewStatus RenderPreview::status()
 }
 
 
-RenderPreview::RenderPreview(InsetBase const * inset)
+RenderPreview::RenderPreview(Inset const * inset)
        : parent_(inset)
 {}
 
 
 RenderPreview::RenderPreview(RenderPreview const & other,
-                            InsetBase const * inset)
+                            Inset const * inset)
        : RenderBase(other),
          boost::signals::trackable(),
          snippet_(other.snippet_),
@@ -62,9 +58,16 @@ RenderPreview::RenderPreview(RenderPreview const & other,
 {}
 
 
-auto_ptr<RenderBase> RenderPreview::clone(InsetBase const * inset) const
+RenderPreview::~RenderPreview()
+{
+       if (ploader_connection_.connected())
+               ploader_connection_.disconnect();
+}
+
+
+RenderBase * RenderPreview::clone(Inset const * inset) const
 {
-       return auto_ptr<RenderBase>(new RenderPreview(*this, inset));
+       return new RenderPreview(*this, inset);
 }
 
 
@@ -79,9 +82,9 @@ graphics::PreviewLoader & getPreviewLoader(Buffer const & buffer)
 
 docstring const statusMessage(BufferView const * bv, string const & snippet)
 {
-       BOOST_ASSERT(bv && bv->buffer());
+       BOOST_ASSERT(bv);
 
-       Buffer const & buffer = *bv->buffer();
+       Buffer const & buffer = bv->buffer();
        graphics::PreviewLoader const & loader = getPreviewLoader(buffer);
        graphics::PreviewLoader::Status const status = loader.status(snippet);
 
@@ -113,40 +116,36 @@ RenderPreview::getPreviewImage(Buffer const & buffer) const
 }
 
 
-bool RenderPreview::metrics(MetricsInfo & mi, Dimension & dim) const
+void RenderPreview::metrics(MetricsInfo & mi, Dimension & dim) const
 {
-       BOOST_ASSERT(mi.base.bv && mi.base.bv->buffer());
+       BOOST_ASSERT(mi.base.bv);
 
        graphics::PreviewImage const * const pimage =
-               getPreviewImage(*mi.base.bv->buffer());
+               getPreviewImage(mi.base.bv->buffer());
 
        if (pimage) {
-               dim.asc = pimage->ascent();
-               dim.des = pimage->descent();
-               dim.wid = pimage->width();
+               dim = pimage->dim();
        } else {
                dim.asc = 50;
                dim.des = 0;
 
-               LyXFont font(mi.base.font);
-               font.setFamily(LyXFont::SANS_FAMILY);
-               font.setSize(LyXFont::SIZE_FOOTNOTE);
+               FontInfo font(mi.base.font);
+               font.setFamily(SANS_FAMILY);
+               font.setSize(FONT_SIZE_FOOTNOTE);
                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);
 
        graphics::PreviewImage const * const pimage =
-               getPreviewImage(*pi.base.bv->buffer());
+               getPreviewImage(pi.base.bv->buffer());
        graphics::Image const * const image = pimage ? pimage->image() : 0;
 
        if (image) {
@@ -154,17 +153,17 @@ void RenderPreview::draw(PainterInfo & pi, int x, int y) const
                              *image);
 
        } else {
-               int const offset = InsetOld::TEXT_TO_INSET_OFFSET;
+               int const offset = Inset::TEXT_TO_INSET_OFFSET;
 
                pi.pain.rectangle(x + offset,
                                  y - dim_.asc,
                                  dim_.wid - 2 * offset,
                                  dim_.asc + dim_.des,
-                                 LColor::foreground);
+                                 Color_foreground);
 
-               LyXFont font(pi.base.font);
-               font.setFamily(LyXFont::SANS_FAMILY);
-               font.setSize(LyXFont::SIZE_FOOTNOTE);
+               FontInfo font(pi.base.font);
+               font.setFamily(SANS_FAMILY);
+               font.setSize(FONT_SIZE_FOOTNOTE);
 
                docstring const stat = statusMessage(pi.base.bv, snippet_);
                pi.pain.text(x + offset + 6,
@@ -237,13 +236,12 @@ void RenderPreview::imageReady(graphics::PreviewImage const & pimage)
 {
        // Check the current snippet is the same as that previewed.
        if (snippet_ == pimage.snippet())
-               LyX::cref().updateInset(parent_);
+               parent_->updateFrontend();
 }
 
 
-RenderMonitoredPreview::RenderMonitoredPreview(InsetBase const * inset)
-       : RenderPreview(inset),
-         monitor_(FileName(), 2000)
+RenderMonitoredPreview::RenderMonitoredPreview(Inset const * inset)
+       : RenderPreview(inset), monitor_(FileName(), 2000)
 {}