X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fmathed%2Fmath_boxinset.C;h=10e070c8b75dc492f3a13e573db64790695eb6e1;hb=07cc9f67534474b167ca1ea727bda643fdd8d197;hp=1a546c78264f8ae9a2bed53d2576f17236a25462;hpb=33a28bdc9cdf978601d5d40b693f13924801ad9e;p=lyx.git diff --git a/src/mathed/math_boxinset.C b/src/mathed/math_boxinset.C index 1a546c7826..10e070c8b7 100644 --- a/src/mathed/math_boxinset.C +++ b/src/mathed/math_boxinset.C @@ -1,94 +1,68 @@ -#include +/** + * \file math_boxinset.C + * This file is part of LyX, the document processor. + * Licence details can be found in the file COPYING. + * + * \author André Pönitz + * + * Full author contact details are available in file CREDITS. + */ -#ifdef __GNUG__ -#pragma implementation -#endif +#include #include "math_boxinset.h" -#include "support/LOstream.h" -#include "LColor.h" -#include "debug.h" -#include "Painter.h" -#include "math_cursor.h" -#include "insets/insettext.h" +#include "math_data.h" #include "math_mathmlstream.h" #include "math_streamstr.h" +#include "support/std_ostream.h" -MathBoxInset::MathBoxInset(string const & name) - : MathDimInset(), name_(name), text_(new InsetText), buffer_(0) -{} - - -MathBoxInset::MathBoxInset(MathBoxInset const & m) - : MathDimInset(*this), name_(m.name_), text_(0), buffer_(m.buffer_) -{ - if (!m.buffer_) - lyxerr << "no buffer\n"; - else - text_ = static_cast(m.text_->clone(*m.buffer_, false)); -} - - -MathBoxInset::~MathBoxInset() -{ - delete text_; -} +using std::string; +using std::auto_ptr; -MathInset * MathBoxInset::clone() const -{ - return new MathBoxInset(*this); -} +MathBoxInset::MathBoxInset(string const & name) + : MathNestInset(1), name_(name) +{} -UpdatableInset * MathBoxInset::asHyperActiveInset() const +auto_ptr MathBoxInset::clone() const { - return text_; + return auto_ptr(new MathBoxInset(*this)); } void MathBoxInset::write(WriteStream & os) const { - os << "\\" << name_ << "{" << cell(0) << "}"; + os << '\\' << name_ << '{' << cell(0) << '}'; } void MathBoxInset::normalize(NormalStream & os) const { - os << "[mbox "; + os << '[' << name_ << ' '; //text_->write(buffer(), os); os << "] "; } -void MathBoxInset::metrics(MathMetricsInfo const & st) const +void MathBoxInset::metrics(MetricsInfo & mi, Dimension & dim) const { - mi_ = st; - if (text_ && mi_.view) { - ascent_ = text_->ascent(mi_.view, mi_.font) + 2; - descent_ = text_->descent(mi_.view, mi_.font) + 2; - width_ = text_->width(mi_.view, mi_.font) + 4; - } else { - ascent_ = 10; - descent_ = 0; - width_ = 10; - } + FontSetChanger dummy(mi.base, "textnormal"); + cell(0).metrics(mi, dim); + metricsMarkers(dim); + dim_ = dim; } -void MathBoxInset::draw(Painter & pain, int x, int y) const +void MathBoxInset::draw(PainterInfo & pi, int x, int y) const { - float fx = x + 2; - if (text_ && mi_.view) - text_->draw(mi_.view, mi_.font, y, fx, false); - if (mathcursor && mathcursor->isInside(this)) - pain.rectangle(x, y - ascent(), xcell(0).width(), height(), - LColor::mathframe); + FontSetChanger dummy(pi.base, "textnormal"); + cell(0).draw(pi, x, y); + drawMarkers(pi, x, y); } -void MathBoxInset::edit(BufferView * bv, int x, int y, unsigned int button) +void MathBoxInset::infoize(std::ostream & os) const { - if (text_) - text_->edit(bv, x, y, button); + os << "Box: " << name_; }