+2004-04-19 Angus Leeming <leeming@lyx.org>
+
+ * scripts/lyxpreview2bitmap.py (extract_metrics_info): make the
+ regex a little more robust. Now recognizes negative integers.
+
2004-04-15 Angus Leeming <leeming@lyx.org>
* scripts/lyxpreview2bitmap.sh: removed.
def extract_metrics_info(dvipng_stdout, metrics_file):
metrics = open(metrics_file, 'w')
- metrics_re = re.compile("\[([0-9]+) depth=([0-9]+) height=([0-9]+)\]")
+ metrics_re = re.compile("\[([0-9]+) depth=(-?[0-9]+) height=(-?[0-9]+)")
success = 0
pos = 0
+2004-04-19 Angus Leeming <leeming@lyx.org>
+
+ * insetexternal.C (priv_dispatch): remove unnecessary invocation of
+ BufferView::update.
+ (add_preview): renamed as add_preview_and_start_loading. Invoke
+ RenderPreview::startLoading.
+
+ * insetinclude.C (metrics, draw): changes due to the changed
+ RenderPreview interface.
+
+ * render_preview.C: remove cached pimage_.
+ (previewReady): removed. Replaced by getPreviewImage(Buffer const &).
+ (draw): don't call startLoading. That's up to the user of
+ RenderPreview.
+
2004-04-16 Angus Leeming <leeming@lyx.org>
* render_graphic.h (checksum_, hasFileChanged): unused, so removed.
InsetExternalParams p;
InsetExternalMailer::string2params(cmd.argument, buffer, p);
setParams(p, buffer);
-#warning is this needed?
- cur.bv().update();
break;
}
return external::doSubstitution(params, buffer, ptr->guiName);
}
-void add_preview(RenderMonitoredPreview &, InsetExternal const &, Buffer const &);
+void add_preview_and_start_loading(RenderMonitoredPreview &,
+ InsetExternal const &,
+ Buffer const &);
} // namespace anon
if (preview_ptr->monitoring())
preview_ptr->stopMonitoring();
- add_preview(*preview_ptr, *this, buffer);
+ add_preview_and_start_loading(*preview_ptr, *this, buffer);
break;
}
Buffer const & buffer = *buffer_ptr;
ptr->removePreview(buffer);
- add_preview(*ptr, *this, buffer);
- ptr->startLoading(buffer);
+ add_preview_and_start_loading(*ptr, *this, buffer);
}
}
-void add_preview(RenderMonitoredPreview & renderer, InsetExternal const & inset,
- Buffer const & buffer)
+void add_preview_and_start_loading(RenderMonitoredPreview & renderer,
+ InsetExternal const & inset,
+ Buffer const & buffer)
{
InsetExternalParams const & params = inset.params();
- if (RenderPreview::activated() && preview_wanted(params)) {
+
+ if (RenderPreview::activated() &&
+ preview_wanted(params)) {
renderer.setAbsFile(params.filename.absFilename());
string const snippet = latex_string(inset, buffer);
renderer.addPreview(snippet, buffer);
+ renderer.startLoading(buffer);
}
}
#include "frontends/LyXView.h"
#include "frontends/Painter.h"
+#include "graphics/PreviewImage.h"
#include "graphics/PreviewLoader.h"
#include "insets/render_preview.h"
void InsetInclude::metrics(MetricsInfo & mi, Dimension & dim) const
{
- if (RenderPreview::activated() && preview_->previewReady()) {
+ BOOST_ASSERT(mi.base.bv && mi.base.bv->buffer());
+
+ bool use_preview = false;
+ if (RenderPreview::activated()) {
+ lyx::graphics::PreviewImage const * pimage =
+ preview_->getPreviewImage(*mi.base.bv->buffer());
+ use_preview = pimage && pimage->image();
+ }
+
+ if (use_preview) {
preview_->metrics(mi, dim);
} else {
if (!set_label_) {
{
setPosCache(pi, x, y);
- if (!RenderPreview::activated() || !preview_->previewReady()) {
- button_.draw(pi, x + button_.box().x1, y);
- return;
+ BOOST_ASSERT(pi.base.bv && pi.base.bv->buffer());
+
+ bool use_preview = false;
+ if (RenderPreview::activated()) {
+ lyx::graphics::PreviewImage const * pimage =
+ preview_->getPreviewImage(*pi.base.bv->buffer());
+ use_preview = pimage && pimage->image();
}
- preview_->draw(pi, x + button_.box().x1, y);
+ if (use_preview)
+ preview_->draw(pi, x + button_.box().x1, y);
+ else
+ button_.draw(pi, x + button_.box().x1, y);
}
#include "insets/inset.h"
#include "BufferView.h"
+#include "debug.h"
#include "dimension.h"
#include "gettext.h"
#include "LColor.h"
RenderPreview::RenderPreview(InsetBase const * inset)
- : pimage_(0),
- parent_(inset)
+ : parent_(inset)
{}
: RenderBase(other),
boost::signals::trackable(),
snippet_(other.snippet_),
- pimage_(0),
parent_(inset)
{}
} // namespace anon
+graphics::PreviewImage const *
+RenderPreview::getPreviewImage(Buffer const & buffer) const
+{
+ graphics::Previews & previews = graphics::Previews::get();
+ graphics::PreviewLoader & loader = previews.loader(buffer);
+ return loader.preview(snippet_);
+}
+
+
void RenderPreview::metrics(MetricsInfo & mi, Dimension & dim) const
{
- if (previewReady()) {
- dim.asc = pimage_->ascent();
- dim.des = pimage_->descent();
- dim.wid = pimage_->width();
+ BOOST_ASSERT(mi.base.bv && mi.base.bv->buffer());
+
+ graphics::PreviewImage const * const pimage =
+ getPreviewImage(*mi.base.bv->buffer());
+
+ if (pimage) {
+ dim.asc = pimage->ascent();
+ dim.des = pimage->descent();
+ dim.wid = pimage->width();
} else {
dim.asc = 50;
dim.des = 0;
void RenderPreview::draw(PainterInfo & pi, int x, int y) const
{
- BOOST_ASSERT(pi.base.bv && pi.base.bv->buffer());
- Buffer const & buffer = *pi.base.bv->buffer();
- startLoading(buffer);
+ BOOST_ASSERT(pi.base.bv && pi.base.bv->buffer());
- if (previewReady()) {
+ graphics::PreviewImage const * const pimage =
+ getPreviewImage(*pi.base.bv->buffer());
+
+ if (pimage && pimage->image()) {
pi.pain.image(x, y - dim_.asc, dim_.wid, dim_.height(),
- *(pimage_->image()));
+ *(pimage->image()));
return;
}
graphics::Previews & previews = graphics::Previews::get();
graphics::PreviewLoader & loader = previews.loader(buffer);
loader.startLoading();
+ lyxerr << "RenderPreview::startLoading: " << snippet_ << std::endl;
}
return;
snippet_ = support::trim(latex_snippet);
- pimage_ = 0;
if (snippet_.empty())
return;
- pimage_ = ploader.preview(snippet_);
- if (pimage_)
+ if (ploader.preview(snippet_))
return;
// If this is the first time of calling, connect to the
graphics::PreviewLoader & loader = previews.loader(buffer);
loader.remove(snippet_);
snippet_.erase();
- pimage_ = 0;
-}
-
-
-bool RenderPreview::previewReady() const
-{
- return pimage_ ? pimage_->image() : false;
}
void RenderPreview::imageReady(graphics::PreviewImage const & pimage)
{
// Check the current snippet is the same as that previewed.
- if (snippet_ != pimage.snippet())
- return;
-
- pimage_ = &pimage;
- LyX::cref().updateInset(parent_);
+ if (snippet_ == pimage.snippet())
+ LyX::cref().updateInset(parent_);
}
*/
void removePreview(Buffer const &);
- /// The preview has been generated and is ready to use.
- bool previewReady() const;
+ /** \returns a pointer to the PreviewImage associated with this snippet
+ * of latex.
+ */
+ lyx::graphics::PreviewImage const *
+ getPreviewImage(Buffer const & buffer) const;
/// equivalent to dynamic_cast
virtual RenderPreview * asPreview() { return this; }
/// The thing that we're trying to generate a preview of.
std::string snippet_;
- /// We don't own this. Cached for efficiency reasons.
- lyx::graphics::PreviewImage const * pimage_;
-
/** Store the connection to the preview loader so that we connect
* only once.
*/
+2004-04-19 Angus Leeming <leeming@lyx.org>
+
+ * math_hullinset.C (metrics, draw): changes due to the changed
+ RenderPreview interface.
+
2004-04-13 Angus Leeming <leeming@lyx.org>
* math_hullinset.[Ch]: add a RenderPreview variable.
#include "frontends/Alert.h"
+#include "graphics/PreviewImage.h"
#include "graphics/PreviewLoader.h"
#include "support/std_sstream.h"
void MathHullInset::metrics(MetricsInfo & mi, Dimension & dim) const
{
- bool const use_preview = (!editing(mi.base.bv) &&
- RenderPreview::activated() &&
- preview_->previewReady());
+ BOOST_ASSERT(mi.base.bv && mi.base.bv->buffer());
+
+ bool use_preview = false;
+ if (!editing(mi.base.bv) && RenderPreview::activated()) {
+ lyx::graphics::PreviewImage const * pimage =
+ preview_->getPreviewImage(*mi.base.bv->buffer());
+ use_preview = pimage && pimage->image();
+ }
if (use_preview) {
preview_->metrics(mi, dim);
void MathHullInset::draw(PainterInfo & pi, int x, int y) const
{
- // The previews are drawn only when we're not editing the inset.
- bool const use_preview = (!editing(pi.base.bv) &&
- RenderPreview::activated() &&
- preview_->previewReady());
+ BOOST_ASSERT(pi.base.bv && pi.base.bv->buffer());
+
+ bool use_preview = false;
+ if (!editing(pi.base.bv) && RenderPreview::activated()) {
+ lyx::graphics::PreviewImage const * pimage =
+ preview_->getPreviewImage(*pi.base.bv->buffer());
+ use_preview = pimage && pimage->image();
+ }
if (use_preview) {
// one pixel gap in front