X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fmathed%2Fmath_boxinset.C;h=10e070c8b75dc492f3a13e573db64790695eb6e1;hb=07cc9f67534474b167ca1ea727bda643fdd8d197;hp=2e1c3bacded15038e635a6e1744f6875adaad000;hpb=40b2b89d4dbd9f948732741503574333ac7b7df7;p=lyx.git diff --git a/src/mathed/math_boxinset.C b/src/mathed/math_boxinset.C index 2e1c3bacde..10e070c8b7 100644 --- a/src/mathed/math_boxinset.C +++ b/src/mathed/math_boxinset.C @@ -1,79 +1,68 @@ -#ifdef __GNUG__ -#pragma implementation -#endif +/** + * \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. + */ + +#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" + +using std::string; +using std::auto_ptr; MathBoxInset::MathBoxInset(string const & name) - : MathDimInset(), name_(name), text_(new InsetText), buffer_(0) + : MathNestInset(1), name_(name) {} -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() +auto_ptr MathBoxInset::clone() const { - delete text_; + return auto_ptr(new MathBoxInset(*this)); } -MathInset * MathBoxInset::clone() const +void MathBoxInset::write(WriteStream & os) const { - return new MathBoxInset(*this); + os << '\\' << name_ << '{' << cell(0) << '}'; } -void MathBoxInset::write(MathWriteInfo & os) const +void MathBoxInset::normalize(NormalStream & os) const { - os << "\\" << name_ << "{" << cell(0) << "}"; + os << '[' << name_ << ' '; + //text_->write(buffer(), os); + os << "] "; } -void MathBoxInset::writeNormal(std::ostream & os) const +void MathBoxInset::metrics(MetricsInfo & mi, Dimension & dim) const { - os << "[mbox "; - //text_->write(buffer(), os); - os << "] "; + FontSetChanger dummy(mi.base, "textnormal"); + cell(0).metrics(mi, dim); + metricsMarkers(dim); + dim_ = dim; } -void MathBoxInset::metrics(MathMetricsInfo const & st) const +void MathBoxInset::draw(PainterInfo & pi, int x, int y) 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(pi.base, "textnormal"); + cell(0).draw(pi, x, y); + drawMarkers(pi, x, y); } -void MathBoxInset::draw(Painter & pain, int x, int y) const +void MathBoxInset::infoize(std::ostream & os) 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); + os << "Box: " << name_; }