]> git.lyx.org Git - lyx.git/blobdiff - src/insets/RenderPreview.cpp
Replace Boost.Signals with Boost.Signals2
[lyx.git] / src / insets / RenderPreview.cpp
index 763ab7c972d517d6f56d0d14337747fc1c66497c..b05dca65b45107576de12eb97e1df7bda074d993 100644 (file)
 #include "insets/RenderPreview.h"
 #include "insets/Inset.h"
 
+#include "Buffer.h"
 #include "BufferView.h"
-#include "Color.h"
 #include "Dimension.h"
-#include "gettext.h"
 #include "LyX.h"
 #include "LyXRC.h"
 #include "MetricsInfo.h"
 
 #include "graphics/PreviewImage.h"
 #include "graphics/PreviewLoader.h"
-#include "graphics/Previews.h"
 
 #include "support/FileName.h"
+#include "support/gettext.h"
+#include "support/lassert.h"
 #include "support/lstrings.h"
 
-#include <boost/bind.hpp>
+#include "support/bind.h"
 
+using namespace std;
+using namespace lyx::support;
 
 namespace lyx {
 
-using support::FileName;
 
-using std::string;
+bool RenderPreview::previewText()
+{
+       // Use a switch to trigger a warning if the enum is changed.
+       switch(lyxrc.preview) {
+       case LyXRC::PREVIEW_ON:
+       case LyXRC::PREVIEW_NO_MATH:
+               return true;
+       case LyXRC::PREVIEW_OFF:
+               break;
+       }
 
+       return false;
+}
 
-LyXRC_PreviewStatus RenderPreview::status()
+
+bool RenderPreview::previewMath()
 {
-       return graphics::Previews::status();
+       // Use a switch to trigger a warning if the enum is changed.
+       switch(lyxrc.preview) {
+       case LyXRC::PREVIEW_ON:
+               return true;
+       case LyXRC::PREVIEW_NO_MATH:
+       case LyXRC::PREVIEW_OFF:
+               break;
+       }
+
+       return false;
 }
 
 
@@ -55,7 +77,7 @@ RenderPreview::RenderPreview(Inset const * inset)
 RenderPreview::RenderPreview(RenderPreview const & other,
                             Inset const * inset)
        : RenderBase(other),
-         boost::signals::trackable(),
+         boost::signals2::trackable(),
          snippet_(other.snippet_),
          parent_(inset)
 {}
@@ -63,8 +85,8 @@ RenderPreview::RenderPreview(RenderPreview const & other,
 
 RenderPreview::~RenderPreview()
 {
-       if (ploader_connection_.connected())
-               ploader_connection_.disconnect();
+       if (ploader_connection_.connected())
+               ploader_connection_.disconnect();
 }
 
 
@@ -76,20 +98,13 @@ RenderBase * RenderPreview::clone(Inset const * inset) const
 
 namespace {
 
-graphics::PreviewLoader & getPreviewLoader(Buffer const & buffer)
-{
-       graphics::Previews const & previews = graphics::Previews::get();
-       return previews.loader(buffer);
-}
-
-
 docstring const statusMessage(BufferView const * bv, string const & snippet)
 {
-       BOOST_ASSERT(bv);
+       LASSERT(bv, return docstring());
 
        Buffer const & buffer = bv->buffer();
-       graphics::PreviewLoader const & loader = getPreviewLoader(buffer);
-       graphics::PreviewLoader::Status const status = loader.status(snippet);
+       graphics::PreviewLoader const * loader = buffer.loader();
+       graphics::PreviewLoader::Status const status = loader->status(snippet);
 
        docstring message;
        switch (status) {
@@ -114,29 +129,30 @@ docstring const statusMessage(BufferView const * bv, string const & snippet)
 graphics::PreviewImage const *
 RenderPreview::getPreviewImage(Buffer const & buffer) const
 {
-       graphics::PreviewLoader const & loader = getPreviewLoader(buffer);
-       return loader.preview(snippet_);
+       graphics::PreviewLoader const * loader = buffer.loader();
+       LASSERT(loader, return 0);
+       return loader->preview(snippet_);
 }
 
 
 void RenderPreview::metrics(MetricsInfo & mi, Dimension & dim) const
 {
-       BOOST_ASSERT(mi.base.bv);
+       LBUFERR(mi.base.bv);
 
        graphics::PreviewImage const * const pimage =
                getPreviewImage(mi.base.bv->buffer());
 
        if (pimage) {
-               dim.asc = pimage->ascent();
-               dim.des = pimage->descent();
-               dim.wid = pimage->width();
+               // If prepared, load the picture before dim calculation. See bug #5627.
+               pimage->image();
+               dim = pimage->dim();
        } else {
                dim.asc = 50;
                dim.des = 0;
 
-               Font font(mi.base.font);
-               font.setFamily(Font::SANS_FAMILY);
-               font.setSize(Font::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);
        }
@@ -147,7 +163,7 @@ void RenderPreview::metrics(MetricsInfo & mi, Dimension & dim) const
 
 void RenderPreview::draw(PainterInfo & pi, int x, int y) const
 {
-       BOOST_ASSERT(pi.base.bv);
+       LBUFERR(pi.base.bv);
 
        graphics::PreviewImage const * const pimage =
                getPreviewImage(pi.base.bv->buffer());
@@ -156,7 +172,6 @@ void RenderPreview::draw(PainterInfo & pi, int x, int y) const
        if (image) {
                pi.pain.image(x, y - dim_.asc, dim_.wid, dim_.height(),
                              *image);
-
        } else {
                int const offset = Inset::TEXT_TO_INSET_OFFSET;
 
@@ -164,11 +179,11 @@ void RenderPreview::draw(PainterInfo & pi, int x, int y) const
                                  y - dim_.asc,
                                  dim_.wid - 2 * offset,
                                  dim_.asc + dim_.des,
-                                 Color::foreground);
+                                 Color_foreground);
 
-               Font font(pi.base.font);
-               font.setFamily(Font::SANS_FAMILY);
-               font.setSize(Font::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,
@@ -178,31 +193,35 @@ void RenderPreview::draw(PainterInfo & pi, int x, int y) const
 }
 
 
-void RenderPreview::startLoading(Buffer const & buffer) const
+void RenderPreview::startLoading(Buffer const & buffer, bool forexport) const
 {
-       if (status() == LyXRC::PREVIEW_OFF || snippet_.empty())
+       if (!forexport && (lyxrc.preview == LyXRC::PREVIEW_OFF || snippet_.empty()))
                return;
 
-       graphics::PreviewLoader const & loader = getPreviewLoader(buffer);
-       loader.startLoading();
+       graphics::PreviewLoader * loader = buffer.loader();
+       LASSERT(loader, return);
+       loader->startLoading(forexport);
 }
 
 
 void RenderPreview::addPreview(docstring const & latex_snippet,
-                              Buffer const & buffer)
+                               Buffer const & buffer, 
+                               bool ignore_lyxrc)
 {
-       if (status() == LyXRC::PREVIEW_OFF)
+       if (lyxrc.preview == LyXRC::PREVIEW_OFF && !ignore_lyxrc)
                return;
 
-       graphics::PreviewLoader & loader = getPreviewLoader(buffer);
-       addPreview(latex_snippet, loader);
+       graphics::PreviewLoader * loader = buffer.loader();
+       LASSERT(loader, return);
+       addPreview(latex_snippet, *loader, ignore_lyxrc);
 }
 
 
 void RenderPreview::addPreview(docstring const & latex_snippet,
-                              graphics::PreviewLoader & ploader)
+                               graphics::PreviewLoader & ploader, 
+                               bool ignore_lyxrc)
 {
-       if (status() == LyXRC::PREVIEW_OFF)
+       if (lyxrc.preview == LyXRC::PREVIEW_OFF && !ignore_lyxrc)
                return;
 
        // FIXME UNICODE
@@ -219,7 +238,7 @@ void RenderPreview::addPreview(docstring const & latex_snippet,
        // is ready for loading.
        if (!ploader_connection_.connected()) {
                ploader_connection_ = ploader.connect(
-                       boost::bind(&RenderPreview::imageReady, this, _1));
+                       bind(&RenderPreview::imageReady, this, _1));
        }
 
        ploader.add(snippet_);
@@ -231,8 +250,9 @@ void RenderPreview::removePreview(Buffer const & buffer)
        if (snippet_.empty())
                return;
 
-       graphics::PreviewLoader & loader = getPreviewLoader(buffer);
-       loader.remove(snippet_);
+       graphics::PreviewLoader * loader = buffer.loader();
+       LASSERT(loader, return);
+       loader->remove(snippet_);
        snippet_.erase();
 }
 
@@ -241,13 +261,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(Inset const * inset)
-       : RenderPreview(inset),
-         monitor_(FileName(), 2000)
+       : RenderPreview(inset), monitor_(FileName(), 2000)
 {}
 
 
@@ -265,7 +284,7 @@ void RenderMonitoredPreview::draw(PainterInfo & pi, int x, int y) const
 }
 
 
-boost::signals::connection
+boost::signals2::connection
 RenderMonitoredPreview::fileChanged(slot_type const & slot)
 {
        return monitor_.connect(slot);