mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-12-27 14:29:21 +00:00
IU of drawing phase one without 'semantic changes' as requested by John
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@7079 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
628e77468b
commit
285952e130
@ -20,6 +20,7 @@
|
||||
#include "lyxfont.h"
|
||||
#include "lyxtext.h"
|
||||
#include "dimension.h"
|
||||
#include "metricsinfo.h"
|
||||
|
||||
#include "frontends/Painter.h"
|
||||
#include "frontends/mouse_state.h"
|
||||
@ -146,7 +147,10 @@ int Inset::latexTextWidth(BufferView * bv) const
|
||||
int Inset::ascent(BufferView * bv, LyXFont const & font) const
|
||||
{
|
||||
Dimension dim;
|
||||
dimension(bv, font, dim);
|
||||
MetricsInfo mi;
|
||||
mi.base.bv = bv;
|
||||
mi.base.font = font;
|
||||
metrics(mi, dim);
|
||||
return dim.ascent();
|
||||
}
|
||||
|
||||
@ -154,7 +158,10 @@ int Inset::ascent(BufferView * bv, LyXFont const & font) const
|
||||
int Inset::descent(BufferView * bv, LyXFont const & font) const
|
||||
{
|
||||
Dimension dim;
|
||||
dimension(bv, font, dim);
|
||||
MetricsInfo mi;
|
||||
mi.base.bv = bv;
|
||||
mi.base.font = font;
|
||||
metrics(mi, dim);
|
||||
return dim.descent();
|
||||
}
|
||||
|
||||
@ -162,6 +169,9 @@ int Inset::descent(BufferView * bv, LyXFont const & font) const
|
||||
int Inset::width(BufferView * bv, LyXFont const & font) const
|
||||
{
|
||||
Dimension dim;
|
||||
dimension(bv, font, dim);
|
||||
MetricsInfo mi;
|
||||
mi.base.bv = bv;
|
||||
mi.base.font = font;
|
||||
metrics(mi, dim);
|
||||
return dim.width();
|
||||
}
|
||||
|
@ -160,8 +160,6 @@ public:
|
||||
///
|
||||
Inset(Inset const & in);
|
||||
///
|
||||
virtual void dimension(BufferView *, LyXFont const &, Dimension &) const = 0;
|
||||
///
|
||||
int ascent(BufferView *, LyXFont const &) const;
|
||||
///
|
||||
int descent(BufferView *, LyXFont const &) const;
|
||||
|
@ -17,6 +17,7 @@
|
||||
class BufferView;
|
||||
class FuncRequest;
|
||||
class MetricsInfo;
|
||||
class Dimension;
|
||||
class PainterInfo;
|
||||
|
||||
/** Dispatch result codes
|
||||
@ -49,14 +50,18 @@ enum dispatch_result {
|
||||
/// Common base class to all insets
|
||||
class InsetBase {
|
||||
public:
|
||||
///
|
||||
typedef int difference_type;
|
||||
/// short of anything else reasonable
|
||||
typedef size_t size_type;
|
||||
/// type for cell indices
|
||||
typedef size_t idx_type;
|
||||
typedef size_t idx_type;
|
||||
/// type for cursor positions
|
||||
typedef size_t pos_type;
|
||||
typedef size_t pos_type;
|
||||
/// type for row numbers
|
||||
typedef size_t row_type;
|
||||
typedef size_t row_type;
|
||||
/// type for column numbers
|
||||
typedef size_t col_type;
|
||||
typedef size_t col_type;
|
||||
|
||||
// the real dispatcher
|
||||
virtual dispatch_result dispatch
|
||||
@ -64,7 +69,9 @@ public:
|
||||
|
||||
/// small wrapper for the time being
|
||||
virtual dispatch_result localDispatch(FuncRequest const & cmd);
|
||||
///
|
||||
/// compute the size of the object returned in dim
|
||||
virtual void metrics(MetricsInfo & mi, Dimension & dim) const = 0;
|
||||
/// draw inset and update (xo, yo)-cache
|
||||
virtual void draw(PainterInfo & pi, int x, int y) const = 0;
|
||||
|
||||
///
|
||||
|
@ -7,8 +7,8 @@
|
||||
*
|
||||
* Full author contact details are available in file CREDITS
|
||||
*/
|
||||
#include <config.h>
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include "insetbibtex.h"
|
||||
#include "buffer.h"
|
||||
@ -40,15 +40,9 @@ InsetBibtex::InsetBibtex(InsetCommandParams const & p)
|
||||
{}
|
||||
|
||||
|
||||
// InsetBibtex::InsetBibtex(InsetCommandParams const & p, bool)
|
||||
// : InsetCommand(p, false)
|
||||
// {}
|
||||
|
||||
|
||||
InsetBibtex::~InsetBibtex()
|
||||
{
|
||||
InsetCommandMailer mailer("bibtex", *this);
|
||||
mailer.hideDialog();
|
||||
InsetCommandMailer("bibtex", *this).hideDialog();
|
||||
}
|
||||
|
||||
|
||||
|
@ -28,15 +28,14 @@ using std::ostream;
|
||||
using std::endl;
|
||||
|
||||
|
||||
void InsetButton::dimension(BufferView * bv, LyXFont const &,
|
||||
Dimension & dim) const
|
||||
void InsetButton::metrics(MetricsInfo & mi, Dimension & dim) const
|
||||
{
|
||||
lyx::Assert(bv);
|
||||
lyx::Assert(mi.base.bv);
|
||||
|
||||
LyXFont font(LyXFont::ALL_SANE);
|
||||
font.decSize();
|
||||
|
||||
string const s = getScreenLabel(bv->buffer());
|
||||
string const s = getScreenLabel(mi.base.bv->buffer());
|
||||
|
||||
if (editable())
|
||||
font_metrics::buttonText(s, font, dim.wid, dim.asc, dim.des);
|
||||
|
@ -23,7 +23,7 @@
|
||||
class InsetButton: public Inset {
|
||||
public:
|
||||
///
|
||||
void dimension(BufferView *, LyXFont const &, Dimension &) const;
|
||||
void metrics(MetricsInfo &, Dimension &) const;
|
||||
///
|
||||
void draw(PainterInfo & pi, int x, int y) const;
|
||||
///
|
||||
|
@ -29,6 +29,7 @@
|
||||
using std::ostream;
|
||||
using std::endl;
|
||||
|
||||
|
||||
InsetCaption::InsetCaption(BufferParams const & bp)
|
||||
: InsetText(bp)
|
||||
{
|
||||
@ -45,7 +46,6 @@ void InsetCaption::write(Buffer const * buf, ostream & os) const
|
||||
}
|
||||
|
||||
|
||||
|
||||
void InsetCaption::read(Buffer const * buf, LyXLex & lex)
|
||||
{
|
||||
#if 0
|
||||
|
@ -124,16 +124,15 @@ int InsetCollapsable::height_collapsed() const
|
||||
}
|
||||
|
||||
|
||||
void InsetCollapsable::dimension(BufferView * bv, LyXFont const & font,
|
||||
Dimension & dim) const
|
||||
void InsetCollapsable::metrics(MetricsInfo & mi, Dimension & dim) const
|
||||
{
|
||||
dimension_collapsed(dim);
|
||||
if (collapsed_)
|
||||
return;
|
||||
Dimension insetdim;
|
||||
inset.dimension(bv, font, insetdim);
|
||||
inset.metrics(mi, insetdim);
|
||||
dim.des += insetdim.height() + TEXT_TO_BOTTOM_OFFSET;
|
||||
dim.wid = max(dim.wid, insetdim.width());
|
||||
dim.wid = max(dim.wid, insetdim.wid);
|
||||
}
|
||||
|
||||
|
||||
|
@ -45,7 +45,7 @@ public:
|
||||
///
|
||||
void write(Buffer const *, std::ostream &) const;
|
||||
///
|
||||
void dimension(BufferView *, LyXFont const &, Dimension &) const;
|
||||
void metrics(MetricsInfo &, Dimension &) const;
|
||||
///
|
||||
void draw(PainterInfo & pi, int x, int y) const;
|
||||
/// draw, either inlined (no button) or collapsed/open
|
||||
|
@ -61,14 +61,14 @@ dispatch_result InsetError::localDispatch(FuncRequest const & cmd)
|
||||
}
|
||||
|
||||
|
||||
void InsetError::dimension(BufferView *, LyXFont const & font,
|
||||
Dimension & dim) const
|
||||
void InsetError::metrics(MetricsInfo & mi, Dimension & dim) const
|
||||
{
|
||||
LyXFont efont;
|
||||
efont.setSize(font.size()).decSize();
|
||||
dim.asc = font_metrics::maxAscent(efont) + 1;
|
||||
dim.des = font_metrics::maxDescent(efont) + 1;
|
||||
dim.wid = 6 + font_metrics::width(_("Error"), efont);
|
||||
efont.setSize(mi.base.font.size()).decSize();
|
||||
dim_.asc = font_metrics::maxAscent(efont) + 1;
|
||||
dim_.des = font_metrics::maxDescent(efont) + 1;
|
||||
dim_.wid = 6 + font_metrics::width(_("Error"), efont);
|
||||
dim = dim_;
|
||||
}
|
||||
|
||||
|
||||
@ -84,7 +84,11 @@ void InsetError::draw(PainterInfo & pi, int x, int y) const
|
||||
// Draw as "Error" in a framed box
|
||||
x += 1;
|
||||
Dimension dim;
|
||||
dimension(pi.base.bv, pi.base.font, dim);
|
||||
MetricsInfo mi;
|
||||
mi.base.bv = pi.base.bv;
|
||||
mi.base.font = pi.base.font;
|
||||
metrics(mi, dim);
|
||||
dim_ = dim;
|
||||
pi.pain.fillRectangle(x, y - dim.asc + 1,
|
||||
dim.wid - 2, dim.asc + dim.des - 2, LColor::insetbg);
|
||||
pi.pain.rectangle(x, y - dim.asc + 1,
|
||||
|
@ -14,6 +14,7 @@
|
||||
|
||||
#include "inset.h"
|
||||
#include "LString.h"
|
||||
#include "dimension.h"
|
||||
|
||||
/** Used for error messages from LaTeX runs.
|
||||
|
||||
@ -30,7 +31,7 @@ public:
|
||||
///
|
||||
virtual dispatch_result localDispatch(FuncRequest const & cmd);
|
||||
///
|
||||
void dimension(BufferView *, LyXFont const &, Dimension &) const;
|
||||
void metrics(MetricsInfo &, Dimension &) const;
|
||||
///
|
||||
void draw(PainterInfo & pi, int x, int y) const;
|
||||
///
|
||||
@ -65,5 +66,7 @@ public:
|
||||
private:
|
||||
///
|
||||
string contents;
|
||||
///
|
||||
mutable Dimension dim_;
|
||||
};
|
||||
#endif
|
||||
|
@ -552,13 +552,12 @@ bool InsetERT::checkInsertChar(LyXFont & /* font */)
|
||||
}
|
||||
|
||||
|
||||
void InsetERT::dimension(BufferView * bv, LyXFont const & font,
|
||||
Dimension & dim) const
|
||||
void InsetERT::metrics(MetricsInfo & mi, Dimension & dim) const
|
||||
{
|
||||
if (inlined())
|
||||
inset.dimension(bv, font, dim);
|
||||
inset.metrics(mi, dim);
|
||||
else
|
||||
InsetCollapsable::dimension(bv, font, dim);
|
||||
InsetCollapsable::metrics(mi, dim);
|
||||
}
|
||||
|
||||
|
||||
|
@ -99,7 +99,7 @@ public:
|
||||
WordLangTuple const
|
||||
selectNextWordToSpellcheck(BufferView *, float &) const;
|
||||
///
|
||||
void dimension(BufferView *, LyXFont const &, Dimension &) const;
|
||||
void metrics(MetricsInfo &, Dimension &) const;
|
||||
///
|
||||
void draw(PainterInfo & pi, int x, int y) const;
|
||||
/// set the status of the inset
|
||||
|
@ -10,7 +10,6 @@
|
||||
|
||||
#include <config.h>
|
||||
|
||||
|
||||
#include "insetfootlike.h"
|
||||
#include "lyxfont.h"
|
||||
#include "buffer.h"
|
||||
|
@ -285,8 +285,7 @@ bool InsetGraphics::imageIsDrawable() const
|
||||
}
|
||||
|
||||
|
||||
void InsetGraphics::dimension(BufferView *, LyXFont const & font,
|
||||
Dimension & dim) const
|
||||
void InsetGraphics::metrics(MetricsInfo & mi, Dimension & dim) const
|
||||
{
|
||||
cache_->old_ascent = 50;
|
||||
if (imageIsDrawable())
|
||||
@ -298,7 +297,7 @@ void InsetGraphics::dimension(BufferView *, LyXFont const & font,
|
||||
else {
|
||||
int font_width = 0;
|
||||
|
||||
LyXFont msgFont(font);
|
||||
LyXFont msgFont(mi.base.font);
|
||||
msgFont.setFamily(LyXFont::SANS_FAMILY);
|
||||
|
||||
string const justname = OnlyFilename(params().filename);
|
||||
@ -315,6 +314,7 @@ void InsetGraphics::dimension(BufferView *, LyXFont const & font,
|
||||
|
||||
dim.wid = std::max(50, font_width + 15);
|
||||
}
|
||||
dim_ = dim;
|
||||
}
|
||||
|
||||
|
||||
@ -343,7 +343,11 @@ void InsetGraphics::draw(PainterInfo & pi, int x, int y) const
|
||||
int oasc = cache_->old_ascent;
|
||||
|
||||
Dimension dim;
|
||||
dimension(bv, pi.base.font, dim);
|
||||
MetricsInfo mi;
|
||||
mi.base.bv = pi.base.bv;
|
||||
mi.base.font = pi.base.font;
|
||||
metrics(mi, dim);
|
||||
dim_ = dim;
|
||||
|
||||
// we may have changed while someone other was drawing us so better
|
||||
// to not draw anything as we surely call to redraw ourself soon.
|
||||
@ -367,14 +371,14 @@ void InsetGraphics::draw(PainterInfo & pi, int x, int y) const
|
||||
// we draw just a rectangle.
|
||||
|
||||
if (imageIsDrawable()) {
|
||||
pi.pain.image(x + TEXT_TO_INSET_OFFSET, y - dim.asc,
|
||||
dim.wid - 2 * TEXT_TO_INSET_OFFSET, dim.asc + dim.des,
|
||||
pi.pain.image(x + TEXT_TO_INSET_OFFSET, y - dim_.asc,
|
||||
dim_.wid - 2 * TEXT_TO_INSET_OFFSET, dim_.asc + dim_.des,
|
||||
*cache_->loader.image());
|
||||
|
||||
} else {
|
||||
|
||||
pi.pain.rectangle(x + TEXT_TO_INSET_OFFSET, y - dim.asc,
|
||||
dim.wid - 2 * TEXT_TO_INSET_OFFSET, dim.asc + dim.des);
|
||||
pi.pain.rectangle(x + TEXT_TO_INSET_OFFSET, y - dim_.asc,
|
||||
dim_.wid - 2 * TEXT_TO_INSET_OFFSET, dim_.asc + dim_.des);
|
||||
|
||||
// Print the file name.
|
||||
LyXFont msgFont = pi.base.font;
|
||||
|
@ -13,8 +13,9 @@
|
||||
#ifndef INSET_GRAPHICS_H
|
||||
#define INSET_GRAPHICS_H
|
||||
|
||||
#include "insets/inset.h"
|
||||
#include "insets/insetgraphicsParams.h"
|
||||
#include "inset.h"
|
||||
#include "insetgraphicsParams.h"
|
||||
#include "dimension.h"
|
||||
|
||||
#include <boost/signals/trackable.hpp>
|
||||
#include <boost/scoped_ptr.hpp>
|
||||
@ -34,7 +35,7 @@ public:
|
||||
///
|
||||
virtual dispatch_result localDispatch(FuncRequest const & cmd);
|
||||
///
|
||||
void dimension(BufferView *, LyXFont const &, Dimension &) const;
|
||||
void metrics(MetricsInfo &, Dimension &) const;
|
||||
///
|
||||
void draw(PainterInfo & pi, int x, int y) const;
|
||||
///
|
||||
@ -113,6 +114,8 @@ private:
|
||||
friend class Cache;
|
||||
/// The pointer never changes although *cache_'s contents may.
|
||||
boost::scoped_ptr<Cache> const cache_;
|
||||
/// dimension cache
|
||||
mutable Dimension dim_;
|
||||
};
|
||||
|
||||
|
||||
|
@ -512,24 +512,16 @@ void InsetInclude::fillWithBibKeys(vector<pair<string,string> > & keys) const
|
||||
}
|
||||
|
||||
|
||||
int InsetInclude::ascent(BufferView * bv, LyXFont const & font) const
|
||||
void InsetInclude::metrics(MetricsInfo & mi, Dimension & dim) const
|
||||
{
|
||||
return preview_->previewReady() ?
|
||||
preview_->pimage()->ascent() : InsetButton::ascent(bv, font);
|
||||
}
|
||||
|
||||
|
||||
int InsetInclude::descent(BufferView * bv, LyXFont const & font) const
|
||||
{
|
||||
return preview_->previewReady() ?
|
||||
preview_->pimage()->descent() : InsetButton::descent(bv, font);
|
||||
}
|
||||
|
||||
|
||||
int InsetInclude::width(BufferView * bv, LyXFont const & font) const
|
||||
{
|
||||
return preview_->previewReady() ?
|
||||
preview_->pimage()->width() : InsetButton::width(bv, font);
|
||||
if (preview_->previewReady()) {
|
||||
dim.asc = preview_->pimage()->ascent();
|
||||
dim.des = preview_->pimage()->descent();
|
||||
dim.wid = preview_->pimage()->width();
|
||||
} else {
|
||||
InsetButton::metrics(mi, dim);
|
||||
}
|
||||
dim_ = dim;
|
||||
}
|
||||
|
||||
|
||||
@ -545,7 +537,11 @@ void InsetInclude::draw(PainterInfo & pi, int x, int y) const
|
||||
preview_->startMonitoring();
|
||||
|
||||
Dimension dim;
|
||||
dimension(pi.base.bv, pi.base.font, dim);
|
||||
MetricsInfo mi;
|
||||
mi.base.bv = pi.base.bv;
|
||||
mi.base.font = pi.base.font;
|
||||
metrics(mi, dim);
|
||||
dim_ = dim;
|
||||
|
||||
pi.pain.image(x, y - dim.asc, dim.wid, dim.height(),
|
||||
*(preview_->pimage()->image()));
|
||||
|
@ -13,6 +13,7 @@
|
||||
#define INSET_INCLUDE_H
|
||||
|
||||
#include "insetcommand.h"
|
||||
#include "dimension.h"
|
||||
|
||||
#include <boost/scoped_ptr.hpp>
|
||||
|
||||
@ -60,11 +61,7 @@ public:
|
||||
virtual dispatch_result localDispatch(FuncRequest const & cmd);
|
||||
|
||||
/// Override these InsetButton methods if Previewing
|
||||
int ascent(BufferView *, LyXFont const &) const;
|
||||
///
|
||||
int descent(BufferView *, LyXFont const &) const;
|
||||
///
|
||||
int width(BufferView *, LyXFont const &) const;
|
||||
void metrics(MetricsInfo & mi, Dimension & dim) const;
|
||||
///
|
||||
void draw(PainterInfo & pi, int x, int y) const;
|
||||
|
||||
@ -131,6 +128,9 @@ private:
|
||||
friend class PreviewImpl;
|
||||
/// The pointer never changes although *preview_'s contents may.
|
||||
boost::scoped_ptr<PreviewImpl> const preview_;
|
||||
|
||||
/// cache
|
||||
mutable Dimension dim_;
|
||||
};
|
||||
|
||||
|
||||
|
@ -13,7 +13,6 @@
|
||||
#include "insetlatexaccent.h"
|
||||
|
||||
#include "debug.h"
|
||||
#include "dimension.h"
|
||||
#include "lyxrc.h"
|
||||
#include "support/lstrings.h"
|
||||
#include "BufferView.h"
|
||||
@ -264,9 +263,9 @@ void InsetLatexAccent::checkContents()
|
||||
}
|
||||
|
||||
|
||||
void InsetLatexAccent::dimension(BufferView *, LyXFont const & font,
|
||||
Dimension & dim) const
|
||||
void InsetLatexAccent::metrics(MetricsInfo & mi, Dimension & dim) const
|
||||
{
|
||||
LyXFont & font = mi.base.font;
|
||||
// This function is a bit too simplistic and is just a
|
||||
// "try to make a fit for all accents" approach, to
|
||||
// make it better we need to know what kind of accent is
|
||||
@ -292,6 +291,7 @@ void InsetLatexAccent::dimension(BufferView *, LyXFont const & font,
|
||||
dim.des = font_metrics::maxDescent(font) + 4;
|
||||
dim.wid = font_metrics::width(contents, font) + 4;
|
||||
}
|
||||
dim_ = dim;
|
||||
}
|
||||
|
||||
|
||||
@ -363,7 +363,11 @@ void InsetLatexAccent::draw(PainterInfo & pi, int x, int baseline) const
|
||||
font.setLanguage(english_language);
|
||||
|
||||
Dimension dim;
|
||||
dimension(bv, font, dim);
|
||||
MetricsInfo mi;
|
||||
mi.base.bv = pi.base.bv;
|
||||
mi.base.font = pi.base.font;
|
||||
metrics(mi, dim);
|
||||
dim_ = dim;
|
||||
|
||||
if (candisp) {
|
||||
float x2 = x + (rbearing(font) - lbearing(font)) / 2.0;
|
||||
@ -372,13 +376,13 @@ void InsetLatexAccent::draw(PainterInfo & pi, int x, int baseline) const
|
||||
if (plusasc) {
|
||||
// mark at the top
|
||||
hg = font_metrics::maxDescent(font);
|
||||
y = baseline - dim.asc;
|
||||
y = baseline - dim_.asc;
|
||||
|
||||
if (font.shape() == LyXFont::ITALIC_SHAPE)
|
||||
x2 += (4.0 * hg) / 5.0; // italic
|
||||
} else {
|
||||
// at the bottom
|
||||
hg = dim.des;
|
||||
hg = dim_.des;
|
||||
y = baseline;
|
||||
}
|
||||
|
||||
@ -395,7 +399,7 @@ void InsetLatexAccent::draw(PainterInfo & pi, int x, int baseline) const
|
||||
tmpx += int(0.8 * hg); // italic
|
||||
lyxerr[Debug::KEY] << "Removing dot." << endl;
|
||||
// remove the dot first
|
||||
pi.pain.fillRectangle(x + tmpx, tmpvar, dim.wid,
|
||||
pi.pain.fillRectangle(x + tmpx, tmpvar, dim_.wid,
|
||||
font_metrics::ascent('i', pi.base.font) -
|
||||
font_metrics::ascent('x', pi.base.font) - 1,
|
||||
backgroundColor());
|
||||
@ -506,17 +510,17 @@ void InsetLatexAccent::draw(PainterInfo & pi, int x, int baseline) const
|
||||
case SPECIAL_CARON: // special caron
|
||||
{
|
||||
switch (ic) {
|
||||
case 'L': dim.wid = int(4.0 * dim.wid / 5.0); break;
|
||||
case 'L': dim_.wid = int(4.0 * dim_.wid / 5.0); break;
|
||||
case 't': y -= int(hg35 / 2.0); break;
|
||||
}
|
||||
int xp[3], yp[3];
|
||||
xp[0] = int(x + dim.wid);
|
||||
xp[0] = int(x + dim_.wid);
|
||||
yp[0] = int(y + hg35 + hg);
|
||||
|
||||
xp[1] = int(x + dim.wid + (hg35 / 2.0));
|
||||
xp[1] = int(x + dim_.wid + (hg35 / 2.0));
|
||||
yp[1] = int(y + hg + (hg35 / 2.0));
|
||||
|
||||
xp[2] = int(x + dim.wid + (hg35 / 2.0));
|
||||
xp[2] = int(x + dim_.wid + (hg35 / 2.0));
|
||||
yp[2] = y + int(hg);
|
||||
|
||||
pi.pain.lines(xp, yp, 3);
|
||||
@ -577,7 +581,7 @@ void InsetLatexAccent::draw(PainterInfo & pi, int x, int baseline) const
|
||||
xp[0] = int(x);
|
||||
yp[0] = y + int(3.0 * hg);
|
||||
|
||||
xp[1] = int(x + float(dim.wid) * 0.75);
|
||||
xp[1] = int(x + float(dim_.wid) * 0.75);
|
||||
yp[1] = y + int(hg);
|
||||
|
||||
pi.pain.lines(xp, yp, 2);
|
||||
@ -592,10 +596,10 @@ void InsetLatexAccent::draw(PainterInfo & pi, int x, int baseline) const
|
||||
}
|
||||
} else {
|
||||
pi.pain.fillRectangle(x + 1,
|
||||
baseline - dim.asc + 1, dim.wid - 2,
|
||||
dim.asc + dim.des - 2, backgroundColor());
|
||||
pi.pain.rectangle(x + 1, baseline - dim.asc + 1,
|
||||
dim.wid - 2, dim.asc + dim.des - 2);
|
||||
baseline - dim_.asc + 1, dim_.wid - 2,
|
||||
dim_.asc + dim_.des - 2, backgroundColor());
|
||||
pi.pain.rectangle(x + 1, baseline - dim_.asc + 1,
|
||||
dim_.wid - 2, dim_.asc + dim_.des - 2);
|
||||
pi.pain.text(x + 2, baseline, contents, font);
|
||||
}
|
||||
}
|
||||
|
@ -12,11 +12,9 @@
|
||||
#ifndef INSET_LATEX_ACCENT_H
|
||||
#define INSET_LATEX_ACCENT_H
|
||||
|
||||
|
||||
#include "inset.h"
|
||||
#include "LString.h"
|
||||
|
||||
class LyXLex;
|
||||
#include "dimension.h"
|
||||
|
||||
/** Insertion of accents
|
||||
|
||||
@ -34,7 +32,7 @@ public:
|
||||
explicit
|
||||
InsetLatexAccent(string const & string);
|
||||
///
|
||||
void dimension(BufferView *, LyXFont const &, Dimension &) const;
|
||||
void metrics(MetricsInfo &, Dimension &) const;
|
||||
///
|
||||
void draw(PainterInfo & pi, int x, int y) const;
|
||||
///
|
||||
@ -131,6 +129,8 @@ private:
|
||||
bool plusdesc;
|
||||
/// international char
|
||||
mutable char ic;
|
||||
///
|
||||
mutable Dimension dim_;
|
||||
};
|
||||
|
||||
|
||||
|
@ -218,14 +218,13 @@ void InsetMinipage::read(Buffer const * buf, LyXLex & lex)
|
||||
}
|
||||
|
||||
|
||||
void InsetMinipage::dimension(BufferView * bv, LyXFont const & font,
|
||||
Dimension & dim) const
|
||||
void InsetMinipage::metrics(MetricsInfo & mi, Dimension & dim) const
|
||||
{
|
||||
if (collapsed_)
|
||||
dimension_collapsed(dim);
|
||||
else {
|
||||
Dimension d;
|
||||
InsetCollapsable::dimension(bv, font, d);
|
||||
InsetCollapsable::metrics(mi, d);
|
||||
switch (params_.pos) {
|
||||
case top:
|
||||
dim.asc = d.asc;
|
||||
|
@ -68,7 +68,7 @@ public:
|
||||
///
|
||||
Inset * clone(Buffer const &) const;
|
||||
///
|
||||
void dimension(BufferView *, LyXFont const &, Dimension &) const;
|
||||
void metrics(MetricsInfo &, Dimension &) const;
|
||||
///
|
||||
Inset::Code lyxCode() const { return Inset::MINIPAGE_CODE; }
|
||||
///
|
||||
|
@ -38,9 +38,9 @@ void InsetNewline::write(Buffer const *, ostream & os) const
|
||||
}
|
||||
|
||||
|
||||
void InsetNewline::dimension(BufferView *, LyXFont const & font,
|
||||
Dimension & dim) const
|
||||
void InsetNewline::metrics(MetricsInfo & mi, Dimension & dim) const
|
||||
{
|
||||
LyXFont & font = mi.base.font;
|
||||
dim.asc = font_metrics::maxAscent(font);
|
||||
dim.des = font_metrics::maxDescent(font);
|
||||
dim.wid = font_metrics::width('n', font);
|
||||
|
@ -26,7 +26,7 @@ public:
|
||||
|
||||
Inset::Code lyxCode() const { return Inset::NEWLINE_CODE; }
|
||||
|
||||
void dimension(BufferView *, LyXFont const &, Dimension &) const;
|
||||
void metrics(MetricsInfo &, Dimension &) const;
|
||||
|
||||
virtual void draw(PainterInfo & pi, int x, int y) const;
|
||||
|
||||
|
@ -171,9 +171,9 @@ string const InsetQuotes::dispString(Language const * loclang) const
|
||||
}
|
||||
|
||||
|
||||
void InsetQuotes::dimension(BufferView *, LyXFont const & font,
|
||||
Dimension & dim) const
|
||||
void InsetQuotes::metrics(MetricsInfo & mi, Dimension & dim) const
|
||||
{
|
||||
LyXFont & font = mi.base.font;
|
||||
dim.asc = font_metrics::maxAscent(font);
|
||||
dim.des = font_metrics::maxDescent(font);
|
||||
dim.wid = 0;
|
||||
|
@ -69,8 +69,9 @@ public:
|
||||
InsetQuotes(char c, BufferParams const & params);
|
||||
///
|
||||
Inset * clone(Buffer const &) const;
|
||||
|
||||
///
|
||||
void dimension(BufferView *, LyXFont const &, Dimension &) const;
|
||||
void metrics(MetricsInfo &, Dimension &) const;
|
||||
///
|
||||
void draw(PainterInfo & pi, int x, int y) const;
|
||||
#if 0
|
||||
|
@ -45,9 +45,9 @@ InsetSpace::Kind InsetSpace::kind() const
|
||||
}
|
||||
|
||||
|
||||
void InsetSpace::dimension(BufferView *, LyXFont const & font,
|
||||
Dimension & dim) const
|
||||
void InsetSpace::metrics(MetricsInfo & mi, Dimension & dim) const
|
||||
{
|
||||
LyXFont & font = mi.base.font;
|
||||
dim.asc = font_metrics::maxAscent(font);
|
||||
dim.des = font_metrics::maxDescent(font);
|
||||
|
||||
|
@ -54,7 +54,7 @@ public:
|
||||
///
|
||||
Kind kind() const;
|
||||
///
|
||||
void dimension(BufferView *, LyXFont const &, Dimension &) const;
|
||||
void metrics(MetricsInfo &, Dimension &) const;
|
||||
///
|
||||
void draw(PainterInfo & pi, int x, int y) const;
|
||||
///
|
||||
|
@ -39,9 +39,9 @@ InsetSpecialChar::Kind InsetSpecialChar::kind() const
|
||||
}
|
||||
|
||||
|
||||
void InsetSpecialChar::dimension(BufferView *, LyXFont const & font,
|
||||
Dimension & dim) const
|
||||
void InsetSpecialChar::metrics(MetricsInfo & mi, Dimension & dim) const
|
||||
{
|
||||
LyXFont & font = mi.base.font;
|
||||
dim.asc = font_metrics::maxAscent(font);
|
||||
dim.des = font_metrics::maxDescent(font);
|
||||
|
||||
|
@ -46,7 +46,7 @@ public:
|
||||
///
|
||||
Kind kind() const;
|
||||
///
|
||||
void dimension(BufferView *, LyXFont const &, Dimension &) const;
|
||||
void metrics(MetricsInfo &, Dimension &) const;
|
||||
///
|
||||
void draw(PainterInfo & pi, int x, int y) const;
|
||||
///
|
||||
|
@ -243,7 +243,7 @@ void InsetTabular::read(Buffer const * buf, LyXLex & lex)
|
||||
}
|
||||
|
||||
|
||||
void InsetTabular::dimension(BufferView *, LyXFont const &,
|
||||
void InsetTabular::metrics(MetricsInfo &,
|
||||
Dimension & dim) const
|
||||
{
|
||||
dim.asc = tabular->GetAscentOfRow(0);
|
||||
|
@ -86,7 +86,7 @@ public:
|
||||
///
|
||||
void write(Buffer const *, std::ostream &) const;
|
||||
///
|
||||
void dimension(BufferView *, LyXFont const &, Dimension &) const;
|
||||
void metrics(MetricsInfo &, Dimension &) const;
|
||||
///
|
||||
void draw(PainterInfo & pi, int x, int y) const;
|
||||
///
|
||||
|
@ -293,15 +293,14 @@ void InsetText::read(Buffer const * buf, LyXLex & lex)
|
||||
}
|
||||
|
||||
|
||||
void InsetText::dimension(BufferView * bv, LyXFont const &,
|
||||
Dimension & dim) const
|
||||
void InsetText::metrics(MetricsInfo & mi, Dimension & dim) const
|
||||
{
|
||||
BufferView * bv = mi.base.bv;
|
||||
LyXText * text = getLyXText(bv);
|
||||
dim.asc = text->rows().begin()->ascent_of_text() + TEXT_TO_INSET_OFFSET;
|
||||
dim.des = text->height - dim.asc + TEXT_TO_INSET_OFFSET;
|
||||
dim.wid = max(textWidth(bv), int(text->width)) + 2 * TEXT_TO_INSET_OFFSET;
|
||||
dim.wid = max(dim.wid, 10);
|
||||
// cache it
|
||||
dim_ = dim;
|
||||
}
|
||||
|
||||
@ -336,9 +335,6 @@ void InsetText::draw(PainterInfo & pi, int x, int baseline) const
|
||||
BufferView * bv = pi.base.bv;
|
||||
Painter & pain = pi.pain;
|
||||
|
||||
// call this method so that dim_ has the right value
|
||||
dimension(bv, pi.base.font, dim_);
|
||||
|
||||
// repaint the background if needed
|
||||
if (backgroundColor() != LColor::background)
|
||||
clearInset(bv, start_x + TEXT_TO_INSET_OFFSET, baseline);
|
||||
|
@ -87,7 +87,7 @@ public:
|
||||
///
|
||||
void write(Buffer const *, std::ostream &) const;
|
||||
///
|
||||
void dimension(BufferView *, LyXFont const &, Dimension &) const;
|
||||
void metrics(MetricsInfo &, Dimension &) const;
|
||||
///
|
||||
int textWidth(BufferView *, bool fordraw = false) const;
|
||||
///
|
||||
|
@ -16,7 +16,7 @@ ButtonInset::ButtonInset()
|
||||
{}
|
||||
|
||||
|
||||
Dimension ButtonInset::metrics(MetricsInfo & mi) const
|
||||
void ButtonInset::metrics(MetricsInfo & mi, Dimension & dim) const
|
||||
{
|
||||
FontSetChanger dummy(mi.base, "textnormal");
|
||||
if (editing()) {
|
||||
@ -28,7 +28,7 @@ Dimension ButtonInset::metrics(MetricsInfo & mi) const
|
||||
mathed_string_dim(mi.base.font, screenLabel(), dim_);
|
||||
dim_.wid += 10;
|
||||
}
|
||||
return dim_;
|
||||
dim = dim_;
|
||||
}
|
||||
|
||||
|
||||
|
@ -23,7 +23,7 @@ public:
|
||||
///
|
||||
ButtonInset();
|
||||
///
|
||||
Dimension metrics(MetricsInfo & mi) const;
|
||||
void metrics(MetricsInfo & mi, Dimension & dim) const;
|
||||
///
|
||||
void draw(PainterInfo & pi, int x, int y) const;
|
||||
|
||||
|
@ -89,11 +89,11 @@ InsetFormula::InsetFormula(InsetFormula const & other)
|
||||
{}
|
||||
|
||||
|
||||
InsetFormula::InsetFormula(BufferView * bv)
|
||||
InsetFormula::InsetFormula(BufferView *)
|
||||
: par_(MathAtom(new MathHullInset)),
|
||||
preview_(new PreviewImpl(*this))
|
||||
{
|
||||
view_ = bv->owner()->view();
|
||||
//view_ = bv->owner()->view();
|
||||
}
|
||||
|
||||
|
||||
@ -152,7 +152,7 @@ int InsetFormula::ascii(Buffer const *, ostream & os, int) const
|
||||
par()->drawT(tpain, 0, dim.ascent());
|
||||
tpain.show(os, 3);
|
||||
// reset metrics cache to "real" values
|
||||
metrics();
|
||||
//metrics();
|
||||
return tpain.textheight();
|
||||
} else {
|
||||
WriteStream wi(os, false, true);
|
||||
@ -201,7 +201,7 @@ void InsetFormula::read(Buffer const *, LyXLex & lex)
|
||||
}
|
||||
}
|
||||
}
|
||||
metrics();
|
||||
//metrics();
|
||||
}
|
||||
|
||||
|
||||
@ -220,7 +220,11 @@ void InsetFormula::draw(PainterInfo & pi, int x, int y) const
|
||||
bool const use_preview = preview_->previewReady();
|
||||
|
||||
Dimension dim;
|
||||
dimension(pi.base.bv, pi.base.font, dim);
|
||||
MetricsInfo mi;
|
||||
mi.base.bv = pi.base.bv;
|
||||
mi.base.font = pi.base.font;
|
||||
metrics(mi, dim);
|
||||
dim_ = dim;
|
||||
int const w = dim.wid;
|
||||
int const d = dim.des;
|
||||
int const a = dim.asc;
|
||||
@ -282,23 +286,25 @@ bool InsetFormula::insetAllowed(Inset::Code code) const
|
||||
}
|
||||
|
||||
|
||||
void InsetFormula::dimension(BufferView * bv, LyXFont const & font,
|
||||
Dimension & dim) const
|
||||
void InsetFormula::metrics(MetricsInfo & m, Dimension & dim) const
|
||||
{
|
||||
metrics(bv, font, dim);
|
||||
view_ = m.base.bv;
|
||||
if (preview_->previewReady()) {
|
||||
dim.asc = preview_->pimage()->ascent();
|
||||
int const descent = preview_->pimage()->descent();
|
||||
dim.des = display() ? descent + 12 : descent;
|
||||
dim_.asc = preview_->pimage()->ascent();
|
||||
dim_.des = preview_->pimage()->descent();
|
||||
// insert a one pixel gap in front of the formula
|
||||
dim.wid = 1 + preview_->pimage()->width();
|
||||
dim_.wid = 1 + preview_->pimage()->width();
|
||||
if (display())
|
||||
dim_.des += 12;
|
||||
} else {
|
||||
MetricsInfo mi;
|
||||
mi.base.bv = bv;
|
||||
dim = par()->metrics(mi);
|
||||
dim.asc += 1;
|
||||
dim.des += 1;
|
||||
MetricsInfo mi = m;
|
||||
mi.base.style = LM_ST_TEXT;
|
||||
mi.base.font.setColor(LColor::math);
|
||||
par()->metrics(mi, dim_);
|
||||
dim_.asc += 1;
|
||||
dim_.des += 1;
|
||||
}
|
||||
dim = dim_;
|
||||
}
|
||||
|
||||
|
||||
|
@ -15,12 +15,12 @@
|
||||
#ifndef INSET_FORMULA_H
|
||||
#define INSET_FORMULA_H
|
||||
|
||||
|
||||
#include "formulabase.h"
|
||||
#include "math_atom.h"
|
||||
|
||||
#include <boost/scoped_ptr.hpp>
|
||||
|
||||
|
||||
/// The main LyX math inset
|
||||
class InsetFormula : public InsetFormulaBase {
|
||||
public:
|
||||
@ -35,7 +35,7 @@ public:
|
||||
///
|
||||
~InsetFormula();
|
||||
///
|
||||
void dimension(BufferView *, LyXFont const &, Dimension &) const;
|
||||
void metrics(MetricsInfo & mi, Dimension & dim) const;
|
||||
///
|
||||
void draw(PainterInfo & pi, int x, int y) const;
|
||||
|
||||
|
@ -27,11 +27,11 @@
|
||||
#include "debug.h"
|
||||
#include "math_support.h"
|
||||
#include "metricsinfo.h"
|
||||
#include "math_data.h"
|
||||
#include "support/lstrings.h"
|
||||
#include "frontends/LyXView.h"
|
||||
#include "frontends/font_metrics.h"
|
||||
#include "frontends/mouse_state.h"
|
||||
#include "Lsstream.h"
|
||||
#include "math_arrayinset.h"
|
||||
#include "math_charinset.h"
|
||||
#include "math_deliminset.h"
|
||||
@ -83,7 +83,7 @@ bool openNewInset(BufferView * bv, UpdatableInset * new_inset)
|
||||
|
||||
|
||||
InsetFormulaBase::InsetFormulaBase()
|
||||
: font_(), xo_(0), yo_(0)
|
||||
: xo_(0), yo_(0)
|
||||
{
|
||||
// This is needed as long the math parser is not re-entrant
|
||||
initMath();
|
||||
@ -133,7 +133,7 @@ void InsetFormulaBase::handleFont
|
||||
|
||||
BufferView * InsetFormulaBase::view() const
|
||||
{
|
||||
return view_.lock().get();
|
||||
return view_;
|
||||
}
|
||||
|
||||
|
||||
@ -141,27 +141,6 @@ void InsetFormulaBase::validate(LaTeXFeatures &) const
|
||||
{}
|
||||
|
||||
|
||||
void InsetFormulaBase::metrics(BufferView * bv, LyXFont const & f,
|
||||
Dimension & /*dim*/) const
|
||||
{
|
||||
font_ = f;
|
||||
metrics(bv);
|
||||
}
|
||||
|
||||
|
||||
void InsetFormulaBase::metrics(BufferView * bv) const
|
||||
{
|
||||
if (bv)
|
||||
view_ = bv->owner()->view();
|
||||
MetricsInfo mi;
|
||||
mi.base.bv = bv;
|
||||
mi.base.style = LM_ST_TEXT;
|
||||
mi.base.font = font_;
|
||||
mi.base.font.setColor(LColor::math);
|
||||
par()->metrics(mi);
|
||||
}
|
||||
|
||||
|
||||
string const InsetFormulaBase::editMessage() const
|
||||
{
|
||||
return _("Math editor mode");
|
||||
@ -211,7 +190,9 @@ void InsetFormulaBase::fitInsetCursor(BufferView * bv) const
|
||||
if (!mathcursor)
|
||||
return;
|
||||
int x, y, asc, des;
|
||||
math_font_max_dim(font_, asc, des);
|
||||
asc = 10;
|
||||
des = 2;
|
||||
//math_font_max_dim(font_, asc, des);
|
||||
getCursorPos(bv, x, y);
|
||||
//y += yo_;
|
||||
//lyxerr << "fitInsetCursor: x: " << x << " y: " << y << " yo: " << yo_ << endl;
|
||||
@ -252,9 +233,11 @@ dispatch_result InsetFormulaBase::lfunMouseRelease(FuncRequest const & cmd)
|
||||
}
|
||||
|
||||
if (cmd.button() == mouse_button::button2) {
|
||||
MathArray ar;
|
||||
asArray(bv->getClipboard(), ar);
|
||||
mathcursor->selClear();
|
||||
mathcursor->setPos(cmd.x + xo_, cmd.y + yo_);
|
||||
mathcursor->insert(asArray(bv->getClipboard()));
|
||||
mathcursor->insert(ar);
|
||||
bv->updateInset(this);
|
||||
return DISPATCHED;
|
||||
}
|
||||
@ -284,7 +267,7 @@ dispatch_result InsetFormulaBase::lfunMousePress(FuncRequest const & cmd)
|
||||
lyxerr[Debug::MATHED] << "re-create cursor" << endl;
|
||||
releaseMathCursor(bv);
|
||||
mathcursor = new MathCursor(this, cmd.x == 0);
|
||||
metrics(bv);
|
||||
//metrics(bv);
|
||||
mathcursor->setPos(cmd.x + xo_, cmd.y + yo_);
|
||||
}
|
||||
|
||||
@ -356,10 +339,10 @@ dispatch_result InsetFormulaBase::localDispatch(FuncRequest const & cmd)
|
||||
releaseMathCursor(bv);
|
||||
if (!cmd.argument.empty()) {
|
||||
mathcursor = new MathCursor(this, cmd.argument == "left");
|
||||
metrics(bv);
|
||||
//metrics(bv);
|
||||
} else {
|
||||
mathcursor = new MathCursor(this, true);
|
||||
metrics(bv);
|
||||
//metrics(bv);
|
||||
mathcursor->setPos(cmd.x + xo_, cmd.y + yo_);
|
||||
}
|
||||
// if that is removed, we won't get the magenta box when entering an
|
||||
@ -681,8 +664,8 @@ dispatch_result InsetFormulaBase::localDispatch(FuncRequest const & cmd)
|
||||
bv->lockedInsetStoreUndo(Undo::EDIT);
|
||||
if (argument.size() == 1)
|
||||
result = mathcursor->interpret(argument[0]) ? DISPATCHED : FINISHED_RIGHT;
|
||||
else
|
||||
mathcursor->insert(asArray(argument));
|
||||
else
|
||||
mathcursor->insert(argument);
|
||||
}
|
||||
break;
|
||||
|
||||
@ -811,13 +794,13 @@ Inset::Code InsetFormulaBase::lyxCode() const
|
||||
|
||||
int InsetFormulaBase::ylow() const
|
||||
{
|
||||
return yo_ - ascent(view(), font_);
|
||||
return yo_ - dim_.asc;
|
||||
}
|
||||
|
||||
|
||||
int InsetFormulaBase::yhigh() const
|
||||
{
|
||||
return yo_ + descent(view(), font_);
|
||||
return yo_ + dim_.des;
|
||||
}
|
||||
|
||||
|
||||
@ -829,7 +812,7 @@ int InsetFormulaBase::xlow() const
|
||||
|
||||
int InsetFormulaBase::xhigh() const
|
||||
{
|
||||
return xo_ + width(view(), font_);
|
||||
return xo_ + dim_.wid;
|
||||
}
|
||||
|
||||
|
||||
@ -868,7 +851,7 @@ bool InsetFormulaBase::searchForward(BufferView * bv, string const & str,
|
||||
}
|
||||
delete mathcursor;
|
||||
mathcursor = new MathCursor(this, true);
|
||||
metrics(bv);
|
||||
//metrics(bv);
|
||||
mathcursor->setSelection(it, ar.size());
|
||||
current = it;
|
||||
it.jump(ar.size());
|
||||
|
@ -14,7 +14,7 @@
|
||||
#define INSET_FORMULABASE_H
|
||||
|
||||
#include "insets/updatableinset.h"
|
||||
#include "lyxfont.h"
|
||||
#include "dimension.h"
|
||||
|
||||
#include <boost/weak_ptr.hpp>
|
||||
#include <iosfwd>
|
||||
@ -108,15 +108,10 @@ private:
|
||||
|
||||
protected:
|
||||
///
|
||||
mutable boost::weak_ptr<BufferView> view_;
|
||||
///
|
||||
mutable LyXFont font_;
|
||||
//mutable boost::weak_ptr<BufferView> view_;
|
||||
mutable BufferView * view_;
|
||||
|
||||
protected:
|
||||
///
|
||||
void metrics(BufferView * bv, LyXFont const & font, Dimension & dim) const;
|
||||
///
|
||||
void metrics(BufferView * bv = 0) const;
|
||||
///
|
||||
void handleFont(BufferView * bv, string const & arg, string const & font);
|
||||
|
||||
@ -124,6 +119,8 @@ protected:
|
||||
mutable int xo_;
|
||||
///
|
||||
mutable int yo_;
|
||||
///
|
||||
mutable Dimension dim_;
|
||||
};
|
||||
|
||||
// We don't really mess want around with mathed stuff outside mathed.
|
||||
|
@ -29,16 +29,13 @@
|
||||
#include "frontends/Painter.h"
|
||||
#include "frontends/font_metrics.h"
|
||||
#include "support/lyxlib.h"
|
||||
#include "support/lstrings.h"
|
||||
#include "support/LOstream.h"
|
||||
#include "debug.h"
|
||||
#include "lyxlex.h"
|
||||
#include "lyxtext.h"
|
||||
#include "lyxfont.h"
|
||||
|
||||
#include "Lsstream.h"
|
||||
|
||||
#include "support/BoostFormat.h"
|
||||
|
||||
using std::ostream;
|
||||
|
||||
extern MathCursor * mathcursor;
|
||||
@ -125,31 +122,24 @@ void InsetFormulaMacro::read(std::istream & is)
|
||||
MathMacroTemplate * p = new MathMacroTemplate(is);
|
||||
setInsetName(p->name());
|
||||
MathMacroTable::create(MathAtom(p));
|
||||
metrics();
|
||||
//metrics();
|
||||
}
|
||||
|
||||
|
||||
string InsetFormulaMacro::prefix() const
|
||||
{
|
||||
#if USE_BOOST_FORMAT
|
||||
return STRCONV(boost::io::str(boost::format(_(" Macro: %s: ")) %
|
||||
STRCONV(getInsetName())));
|
||||
#else
|
||||
return _(" Macro: ") + getInsetName() + ": ";
|
||||
#endif
|
||||
return bformat(_(" Macro: %s: "), getInsetName());
|
||||
}
|
||||
|
||||
|
||||
void InsetFormulaMacro::dimension(BufferView * bv, LyXFont const & font,
|
||||
Dimension & dim) const
|
||||
void InsetFormulaMacro::metrics(MetricsInfo & m, Dimension & dim) const
|
||||
{
|
||||
MetricsInfo mi;
|
||||
mi.base.bv = bv;
|
||||
mi.base.font = font;
|
||||
dim = par()->metrics(mi);
|
||||
dim.asc += 5;
|
||||
dim.des += 5;
|
||||
dim.wid += 10 + font_metrics::width(prefix(), font);
|
||||
MetricsInfo mi = m;
|
||||
par()->metrics(mi, dim_);
|
||||
dim_.asc += 5;
|
||||
dim_.des += 5;
|
||||
dim_.wid += 10 + font_metrics::width(prefix(), mi.base.font);
|
||||
dim = dim_;
|
||||
}
|
||||
|
||||
|
||||
@ -182,7 +172,11 @@ void InsetFormulaMacro::draw(PainterInfo & p, int x, int y) const
|
||||
pi.base.font = font;
|
||||
|
||||
Dimension dim;
|
||||
dimension(pi.base.bv, font, dim);
|
||||
MetricsInfo mi;
|
||||
mi.base.bv = pi.base.bv;
|
||||
mi.base.font = pi.base.font;
|
||||
metrics(mi, dim);
|
||||
dim_ = dim;
|
||||
int const a = y - dim.asc + 1;
|
||||
int const w = dim.wid - 2;
|
||||
int const h = dim.height() - 2;
|
||||
|
@ -33,7 +33,7 @@ public:
|
||||
/// constructs a mocro from its LaTeX definition
|
||||
explicit InsetFormulaMacro(string const & s);
|
||||
///
|
||||
void dimension(BufferView *, LyXFont const &, Dimension &) const;
|
||||
void metrics(MetricsInfo & mi, Dimension & dim) const;
|
||||
///
|
||||
void draw(PainterInfo & pi, int x, int y) const;
|
||||
|
||||
|
@ -3,7 +3,6 @@
|
||||
#include "math_amsarrayinset.h"
|
||||
#include "math_mathmlstream.h"
|
||||
#include "metricsinfo.h"
|
||||
#include "math_support.h"
|
||||
#include "math_streamstr.h"
|
||||
#include "math_support.h"
|
||||
#include "Lsstream.h"
|
||||
@ -57,14 +56,14 @@ char const * MathAMSArrayInset::name_right() const
|
||||
}
|
||||
|
||||
|
||||
Dimension MathAMSArrayInset::metrics(MetricsInfo & mi) const
|
||||
void MathAMSArrayInset::metrics(MetricsInfo & mi, Dimension & dim) const
|
||||
{
|
||||
MetricsInfo m = mi;
|
||||
if (m.base.style == LM_ST_DISPLAY)
|
||||
m.base.style = LM_ST_TEXT;
|
||||
MathGridInset::metrics(m);
|
||||
dim_.wid += 12;
|
||||
return dim_;
|
||||
dim = dim_;
|
||||
}
|
||||
|
||||
|
||||
|
@ -22,7 +22,7 @@ public:
|
||||
///
|
||||
MathInset * clone() const;
|
||||
///
|
||||
Dimension metrics(MetricsInfo & mi) const;
|
||||
void metrics(MetricsInfo & mi, Dimension & dim) const;
|
||||
///
|
||||
void draw(PainterInfo & pain, int x, int y) const;
|
||||
///
|
||||
|
@ -63,12 +63,12 @@ MathInset * MathArrayInset::clone() const
|
||||
}
|
||||
|
||||
|
||||
Dimension MathArrayInset::metrics(MetricsInfo & mi) const
|
||||
void MathArrayInset::metrics(MetricsInfo & mi, Dimension & dim) const
|
||||
{
|
||||
ArrayChanger dummy(mi.base);
|
||||
MathGridInset::metrics(mi);
|
||||
metricsMarkers2();
|
||||
return dim_;
|
||||
dim = dim_;
|
||||
}
|
||||
|
||||
|
||||
|
@ -27,7 +27,7 @@ public:
|
||||
///
|
||||
MathInset * clone() const;
|
||||
///
|
||||
Dimension metrics(MetricsInfo & mi) const;
|
||||
void metrics(MetricsInfo & mi, Dimension & dim) const;
|
||||
///
|
||||
void draw(PainterInfo & pi, int x, int y) const;
|
||||
///
|
||||
|
@ -35,14 +35,14 @@ double MathBigInset::increase() const
|
||||
}
|
||||
|
||||
|
||||
Dimension MathBigInset::metrics(MetricsInfo & mi) const
|
||||
void MathBigInset::metrics(MetricsInfo & mi, Dimension & dim) const
|
||||
{
|
||||
double const h = mathed_char_ascent(mi.base.font, 'I');
|
||||
double const f = increase();
|
||||
dim_.wid = 6;
|
||||
dim_.asc = int(h + f * h);
|
||||
dim_.des = int(f * h);
|
||||
return dim_;
|
||||
dim = dim_;
|
||||
}
|
||||
|
||||
|
||||
|
@ -26,7 +26,7 @@ public:
|
||||
///
|
||||
MathInset * clone() const;
|
||||
///
|
||||
Dimension metrics(MetricsInfo & mi) const;
|
||||
void metrics(MetricsInfo & mi, Dimension & dim) const;
|
||||
///
|
||||
void draw(PainterInfo & pi, int x, int y) const;
|
||||
///
|
||||
|
@ -28,7 +28,7 @@ int MathBinaryOpInset::opwidth() const
|
||||
}
|
||||
|
||||
|
||||
Dimension MathBinaryOpInset::metrics(MetricsInfo & mi) const
|
||||
void MathBinaryOpInset::metrics(MetricsInfo & mi, Dimension & dim) const
|
||||
{
|
||||
mi_ = mi;
|
||||
cell(0).metrics(mi);
|
||||
|
@ -31,7 +31,7 @@ int MathBinomInset::dw() const
|
||||
}
|
||||
|
||||
|
||||
Dimension MathBinomInset::metrics(MetricsInfo & mi) const
|
||||
void MathBinomInset::metrics(MetricsInfo & mi, Dimension & dim) const
|
||||
{
|
||||
ScriptChanger dummy(mi.base);
|
||||
cell(0).metrics(mi);
|
||||
@ -39,7 +39,7 @@ Dimension MathBinomInset::metrics(MetricsInfo & mi) const
|
||||
dim_.asc = cell(0).height() + 4 + 5;
|
||||
dim_.des = cell(1).height() + 4 - 5;
|
||||
dim_.wid = max(cell(0).width(), cell(1).width()) + 2 * dw() + 4;
|
||||
return dim_;
|
||||
dim = dim_;
|
||||
}
|
||||
|
||||
|
||||
|
@ -19,7 +19,7 @@ public:
|
||||
///
|
||||
void normalize(NormalStream &) const;
|
||||
///
|
||||
Dimension metrics(MetricsInfo & mi) const;
|
||||
void metrics(MetricsInfo & mi, Dimension & dim) const;
|
||||
///
|
||||
void draw(PainterInfo &, int x, int y) const;
|
||||
private:
|
||||
|
@ -32,12 +32,12 @@ void MathBoxInset::normalize(NormalStream & os) const
|
||||
}
|
||||
|
||||
|
||||
Dimension MathBoxInset::metrics(MetricsInfo & mi) const
|
||||
void MathBoxInset::metrics(MetricsInfo & mi, Dimension & dim) const
|
||||
{
|
||||
FontSetChanger dummy(mi.base, "textnormal");
|
||||
cell(0).metrics(mi, dim_);
|
||||
metricsMarkers();
|
||||
return dim_;
|
||||
dim = dim_;
|
||||
}
|
||||
|
||||
|
||||
|
@ -19,7 +19,7 @@ public:
|
||||
///
|
||||
mode_type currentMode() const { return TEXT_MODE; }
|
||||
///
|
||||
Dimension metrics(MetricsInfo & mi) const;
|
||||
void metrics(MetricsInfo & mi, Dimension & dim) const;
|
||||
///
|
||||
void draw(PainterInfo & pi, int x, int y) const;
|
||||
///
|
||||
|
@ -27,7 +27,7 @@ MathInset * MathBraceInset::clone() const
|
||||
}
|
||||
|
||||
|
||||
Dimension MathBraceInset::metrics(MetricsInfo & mi) const
|
||||
void MathBraceInset::metrics(MetricsInfo & mi, Dimension & dim) const
|
||||
{
|
||||
cell(0).metrics(mi);
|
||||
Dimension t;
|
||||
@ -36,7 +36,7 @@ Dimension MathBraceInset::metrics(MetricsInfo & mi) const
|
||||
dim_.asc = max(cell(0).ascent(), t.asc);
|
||||
dim_.des = max(cell(0).descent(), t.des);
|
||||
dim_.wid = cell(0).width() + 2 * wid_;
|
||||
return dim_;
|
||||
dim = dim_;
|
||||
}
|
||||
|
||||
|
||||
|
@ -22,7 +22,7 @@ public:
|
||||
/// we write extra braces in any case...
|
||||
bool extraBraces() const { return true; }
|
||||
///
|
||||
Dimension metrics(MetricsInfo & mi) const;
|
||||
void metrics(MetricsInfo & mi, Dimension & dim) const;
|
||||
///
|
||||
void draw(PainterInfo &, int x, int y) const;
|
||||
///
|
||||
|
@ -20,11 +20,11 @@ MathInset * MathCasesInset::clone() const
|
||||
}
|
||||
|
||||
|
||||
Dimension MathCasesInset::metrics(MetricsInfo & mi) const
|
||||
void MathCasesInset::metrics(MetricsInfo & mi, Dimension & dim) const
|
||||
{
|
||||
MathGridInset::metrics(mi);
|
||||
dim_.wid += 8;
|
||||
return dim_;
|
||||
dim = dim_;
|
||||
}
|
||||
|
||||
|
||||
|
@ -14,7 +14,7 @@ public:
|
||||
///
|
||||
MathInset * clone() const;
|
||||
///
|
||||
Dimension metrics(MetricsInfo & mi) const;
|
||||
void metrics(MetricsInfo & mi, Dimension & dim) const;
|
||||
///
|
||||
void draw(PainterInfo & pain, int x, int y) const;
|
||||
|
||||
|
@ -2,6 +2,7 @@
|
||||
|
||||
#include "math_charinset.h"
|
||||
#include "LColor.h"
|
||||
#include "dimension.h"
|
||||
#include "frontends/Painter.h"
|
||||
#include "frontends/font_metrics.h"
|
||||
#include "support/LOstream.h"
|
||||
@ -54,9 +55,8 @@ MathInset * MathCharInset::clone() const
|
||||
}
|
||||
|
||||
|
||||
Dimension MathCharInset::metrics(MetricsInfo & mi) const
|
||||
void MathCharInset::metrics(MetricsInfo & mi, Dimension & dim) const
|
||||
{
|
||||
Dimension dim;
|
||||
#if 1
|
||||
if (char_ == '=' && has_math_fonts) {
|
||||
FontSetChanger dummy(mi.base, "cmr");
|
||||
@ -82,7 +82,6 @@ Dimension MathCharInset::metrics(MetricsInfo & mi) const
|
||||
width_ += 2 * font_metrics::width(' ', font_);
|
||||
lyxerr << "MathCharInset::metrics: " << dim << "\n";
|
||||
#endif
|
||||
return dim;
|
||||
}
|
||||
|
||||
|
||||
|
@ -18,7 +18,7 @@ public:
|
||||
///
|
||||
MathInset * clone() const;
|
||||
///
|
||||
Dimension metrics(MetricsInfo & mi) const;
|
||||
void metrics(MetricsInfo & mi, Dimension & dim) const;
|
||||
///
|
||||
void draw(PainterInfo & pi, int x, int y) const;
|
||||
///
|
||||
|
@ -1,14 +1,14 @@
|
||||
#include <config.h>
|
||||
|
||||
|
||||
#include "math_commentinset.h"
|
||||
#include "math_data.h"
|
||||
#include "math_support.h"
|
||||
#include "math_mathmlstream.h"
|
||||
#include "LaTeXFeatures.h"
|
||||
#include "support/LOstream.h"
|
||||
#include "textpainter.h"
|
||||
|
||||
|
||||
|
||||
MathCommentInset::MathCommentInset()
|
||||
: MathNestInset(1)
|
||||
{}
|
||||
@ -17,7 +17,7 @@ MathCommentInset::MathCommentInset()
|
||||
MathCommentInset::MathCommentInset(string const & str)
|
||||
: MathNestInset(1)
|
||||
{
|
||||
cell(0) = asArray(str);
|
||||
asArray(str, cell(0));
|
||||
}
|
||||
|
||||
|
||||
@ -27,11 +27,11 @@ MathInset * MathCommentInset::clone() const
|
||||
}
|
||||
|
||||
|
||||
Dimension MathCommentInset::metrics(MetricsInfo & mi) const
|
||||
void MathCommentInset::metrics(MetricsInfo & mi, Dimension & dim) const
|
||||
{
|
||||
cell(0).metrics(mi);
|
||||
metricsMarkers();
|
||||
return dim_;
|
||||
dim = dim_;
|
||||
}
|
||||
|
||||
|
||||
|
@ -22,7 +22,7 @@ public:
|
||||
///
|
||||
MathInset * clone() const;
|
||||
///
|
||||
Dimension metrics(MetricsInfo & mi) const;
|
||||
void metrics(MetricsInfo & mi, Dimension & dim) const;
|
||||
///
|
||||
void draw(PainterInfo & pi, int x, int y) const;
|
||||
///
|
||||
|
@ -346,6 +346,14 @@ void MathCursor::plainInsert(MathAtom const & t)
|
||||
}
|
||||
|
||||
|
||||
void MathCursor::insert2(string const & str)
|
||||
{
|
||||
MathArray ar;
|
||||
asArray(str, ar);
|
||||
insert(ar);
|
||||
}
|
||||
|
||||
|
||||
void MathCursor::insert(string const & str)
|
||||
{
|
||||
//lyxerr << "inserting '" << str << "'\n";
|
||||
@ -373,7 +381,8 @@ void MathCursor::insert(MathAtom const & t)
|
||||
|
||||
void MathCursor::niceInsert(string const & t)
|
||||
{
|
||||
MathArray ar = asArray(t);
|
||||
MathArray ar;
|
||||
asArray(t, ar);
|
||||
if (ar.size() == 1)
|
||||
niceInsert(ar[0]);
|
||||
else
|
||||
@ -624,7 +633,7 @@ void MathCursor::drawSelection(PainterInfo & pi) const
|
||||
void MathCursor::handleNest(MathAtom const & a)
|
||||
{
|
||||
MathAtom at = a;
|
||||
at.nucleus()->cell(0) = asArray(grabAndEraseSelection());
|
||||
asArray(grabAndEraseSelection(), at.nucleus()->cell(0));
|
||||
insert(at);
|
||||
pushRight(prevAtom());
|
||||
}
|
||||
|
@ -63,6 +63,8 @@ public:
|
||||
///
|
||||
void insert(MathArray const &);
|
||||
///
|
||||
void insert2(string const &);
|
||||
///
|
||||
void paste(string const & data);
|
||||
/// return false for empty math insets
|
||||
bool erase();
|
||||
|
@ -12,6 +12,7 @@
|
||||
#include "debug.h"
|
||||
#include "support/LAssert.h"
|
||||
#include "metricsinfo.h"
|
||||
#include "math_data.h"
|
||||
#include "frontends/Painter.h"
|
||||
#include "textpainter.h"
|
||||
|
||||
@ -220,8 +221,9 @@ void MathArray::metrics(MetricsInfo & mi) const
|
||||
|
||||
if (!empty()) {
|
||||
dim_.wid = 0;
|
||||
Dimension d;
|
||||
for (const_iterator it = begin(), et = end(); it != et; ++it) {
|
||||
Dimension d = (*it)->metrics(mi);
|
||||
(*it)->metrics(mi, d);
|
||||
dim_ += d;
|
||||
it->width_ = d.wid;
|
||||
}
|
||||
|
@ -72,7 +72,7 @@ bool MathDecorationInset::wide() const
|
||||
}
|
||||
|
||||
|
||||
Dimension MathDecorationInset::metrics(MetricsInfo & mi) const
|
||||
void MathDecorationInset::metrics(MetricsInfo & mi, Dimension & dim) const
|
||||
{
|
||||
cell(0).metrics(mi);
|
||||
dim_ = cell(0).dim();
|
||||
@ -89,7 +89,7 @@ Dimension MathDecorationInset::metrics(MetricsInfo & mi) const
|
||||
}
|
||||
|
||||
metricsMarkers();
|
||||
return dim_;
|
||||
dim = dim_;
|
||||
}
|
||||
|
||||
|
||||
|
@ -25,7 +25,7 @@ public:
|
||||
///
|
||||
void write(WriteStream & os) const;
|
||||
///
|
||||
Dimension metrics(MetricsInfo & mi) const;
|
||||
void metrics(MetricsInfo & mi, Dimension & dim) const;
|
||||
///
|
||||
void normalize(NormalStream & os) const;
|
||||
///
|
||||
|
@ -72,7 +72,7 @@ void MathDelimInset::normalize(NormalStream & os) const
|
||||
}
|
||||
|
||||
|
||||
Dimension MathDelimInset::metrics(MetricsInfo & mi) const
|
||||
void MathDelimInset::metrics(MetricsInfo & mi, Dimension & dim) const
|
||||
{
|
||||
cell(0).metrics(mi);
|
||||
Dimension t;
|
||||
@ -88,7 +88,7 @@ Dimension MathDelimInset::metrics(MetricsInfo & mi) const
|
||||
dim_.wid = cell(0).width() + 2 * dw_ + 8;
|
||||
dim_.asc = max(a0, d0) + h0;
|
||||
dim_.des = max(a0, d0) - h0;
|
||||
return dim_;
|
||||
dim = dim_;
|
||||
}
|
||||
|
||||
|
||||
|
@ -31,7 +31,7 @@ public:
|
||||
/// is it |...|?
|
||||
bool isAbs() const;
|
||||
///
|
||||
Dimension metrics(MetricsInfo & mi) const;
|
||||
void metrics(MetricsInfo & mi, Dimension & dim) const;
|
||||
///
|
||||
void draw(PainterInfo &, int x, int y) const;
|
||||
|
||||
|
@ -32,10 +32,9 @@ void MathDiffInset::normalize(NormalStream & os) const
|
||||
}
|
||||
|
||||
|
||||
Dimension MathDiffInset::metrics(MetricsInfo &) const
|
||||
void MathDiffInset::metrics(MetricsInfo &, Dimension &) const
|
||||
{
|
||||
lyxerr << "should not happen\n";
|
||||
return Dimension();
|
||||
}
|
||||
|
||||
|
||||
|
@ -17,7 +17,7 @@ public:
|
||||
///
|
||||
void addDer(MathArray const & der);
|
||||
///
|
||||
Dimension metrics(MetricsInfo & mi) const;
|
||||
void metrics(MetricsInfo & mi, Dimension & dim) const;
|
||||
///
|
||||
void draw(PainterInfo & pi, int x, int y) const;
|
||||
|
||||
|
@ -18,7 +18,7 @@ MathInset * MathDotsInset::clone() const
|
||||
}
|
||||
|
||||
|
||||
Dimension MathDotsInset::metrics(MetricsInfo & mi) const
|
||||
void MathDotsInset::metrics(MetricsInfo & mi, Dimension & dim) const
|
||||
{
|
||||
mathed_char_dim(mi.base.font, 'M', dim_);
|
||||
dh_ = 0;
|
||||
@ -33,7 +33,7 @@ Dimension MathDotsInset::metrics(MetricsInfo & mi) const
|
||||
}
|
||||
else if (key_->name == "ddots")
|
||||
dh_ = dim_.asc;
|
||||
return dim_;
|
||||
dim = dim_;
|
||||
}
|
||||
|
||||
|
||||
|
@ -15,7 +15,7 @@ public:
|
||||
///
|
||||
MathInset * clone() const;
|
||||
///
|
||||
Dimension metrics(MetricsInfo & mi) const;
|
||||
void metrics(MetricsInfo & mi, Dimension & dim) const;
|
||||
///
|
||||
void draw(PainterInfo & pi, int x, int y) const;
|
||||
///
|
||||
|
@ -1,6 +1,5 @@
|
||||
#include <config.h>
|
||||
|
||||
|
||||
#include "math_envinset.h"
|
||||
#include "math_mathmlstream.h"
|
||||
#include "math_streamstr.h"
|
||||
@ -18,11 +17,11 @@ MathInset * MathEnvInset::clone() const
|
||||
}
|
||||
|
||||
|
||||
Dimension MathEnvInset::metrics(MetricsInfo & mi) const
|
||||
void MathEnvInset::metrics(MetricsInfo & mi, Dimension & dim) const
|
||||
{
|
||||
cell(0).metrics(mi, dim_);
|
||||
metricsMarkers();
|
||||
return dim_;
|
||||
dim = dim_;
|
||||
}
|
||||
|
||||
|
||||
|
@ -25,7 +25,7 @@ public:
|
||||
/// write normalized content
|
||||
void normalize(NormalStream & ns) const;
|
||||
///
|
||||
Dimension metrics(MetricsInfo & mi) const;
|
||||
void metrics(MetricsInfo & mi, Dimension & dim) const;
|
||||
///
|
||||
void infoize(std::ostream & os) const;
|
||||
|
||||
|
@ -12,13 +12,13 @@ MathInset * MathErtInset::clone() const
|
||||
}
|
||||
|
||||
|
||||
Dimension MathErtInset::metrics(MetricsInfo & mi) const
|
||||
void MathErtInset::metrics(MetricsInfo & mi, Dimension & dim) const
|
||||
{
|
||||
FontSetChanger dummy(mi.base, "lyxert");
|
||||
MathTextInset::metrics(mi);
|
||||
MathTextInset::metrics(mi, dim_);
|
||||
cache_.colinfo_[0].align_ = 'l';
|
||||
metricsMarkers();
|
||||
return dim_;
|
||||
dim = dim_;
|
||||
}
|
||||
|
||||
|
||||
|
@ -15,7 +15,7 @@ public:
|
||||
///
|
||||
mode_type currentMode() const { return TEXT_MODE; }
|
||||
///
|
||||
Dimension metrics(MetricsInfo & mi) const;
|
||||
void metrics(MetricsInfo & mi, Dimension & dim) const;
|
||||
///
|
||||
void draw(PainterInfo & pi, int x, int y) const;
|
||||
///
|
||||
|
@ -25,7 +25,7 @@ MathInset * MathExFuncInset::clone() const
|
||||
}
|
||||
|
||||
|
||||
Dimension MathExFuncInset::metrics(MetricsInfo & mi) const
|
||||
void MathExFuncInset::metrics(MetricsInfo & mi, Dimension & dim) const
|
||||
{
|
||||
mathed_string_dim(mi.base.font, name_, dim_);
|
||||
}
|
||||
|
@ -17,7 +17,7 @@ public:
|
||||
///
|
||||
MathInset * clone() const;
|
||||
///
|
||||
Dimension metrics(MetricsInfo & mi) const;
|
||||
void metrics(MetricsInfo & mi, Dimension & dim) const;
|
||||
///
|
||||
void draw(PainterInfo & pi, int x, int y) const;
|
||||
///
|
||||
|
@ -48,10 +48,9 @@ void MathExIntInset::normalize(NormalStream & os) const
|
||||
}
|
||||
|
||||
|
||||
Dimension MathExIntInset::metrics(MetricsInfo &) const
|
||||
void MathExIntInset::metrics(MetricsInfo &, Dimension &) const
|
||||
{
|
||||
lyxerr << "should not happen\n";
|
||||
return Dimension();
|
||||
}
|
||||
|
||||
|
||||
|
@ -18,7 +18,7 @@ public:
|
||||
///
|
||||
void symbol(string const &);
|
||||
///
|
||||
Dimension metrics(MetricsInfo & mi) const;
|
||||
void metrics(MetricsInfo & mi, Dimension & dim) const;
|
||||
///
|
||||
void draw(PainterInfo &, int x, int y) const;
|
||||
|
||||
|
@ -41,6 +41,7 @@
|
||||
#include "ref_inset.h"
|
||||
|
||||
#include "metricsinfo.h"
|
||||
#include "math_data.h"
|
||||
#include "debug.h"
|
||||
#include "math_support.h"
|
||||
#include "Lsstream.h"
|
||||
|
@ -28,7 +28,7 @@ MathInset::mode_type MathFboxInset::currentMode() const
|
||||
}
|
||||
|
||||
|
||||
Dimension MathFboxInset::metrics(MetricsInfo & mi) const
|
||||
void MathFboxInset::metrics(MetricsInfo & mi, Dimension & dim) const
|
||||
{
|
||||
if (key_->name == "fbox") {
|
||||
FontSetChanger dummy(mi.base, "textnormal");
|
||||
@ -37,7 +37,7 @@ Dimension MathFboxInset::metrics(MetricsInfo & mi) const
|
||||
cell(0).metrics(mi, dim_);
|
||||
}
|
||||
metricsMarkers(5); // 5 pixels margin
|
||||
return dim_;
|
||||
dim = dim_;
|
||||
}
|
||||
|
||||
|
||||
|
@ -23,7 +23,7 @@ public:
|
||||
///
|
||||
mode_type currentMode() const;
|
||||
///
|
||||
Dimension metrics(MetricsInfo & mi) const;
|
||||
void metrics(MetricsInfo & mi, Dimension & dim) const;
|
||||
///
|
||||
void draw(PainterInfo & pi, int x, int y) const;
|
||||
///
|
||||
|
@ -32,12 +32,12 @@ MathInset::mode_type MathFontInset::currentMode() const
|
||||
}
|
||||
|
||||
|
||||
Dimension MathFontInset::metrics(MetricsInfo & mi) const
|
||||
void MathFontInset::metrics(MetricsInfo & mi, Dimension & dim) const
|
||||
{
|
||||
FontSetChanger dummy(mi.base, key_->name.c_str());
|
||||
cell(0).metrics(mi, dim_);
|
||||
metricsMarkers(1);
|
||||
return dim_;
|
||||
dim = dim_;
|
||||
}
|
||||
|
||||
|
||||
|
@ -28,7 +28,7 @@ public:
|
||||
///
|
||||
string name() const;
|
||||
///
|
||||
Dimension metrics(MetricsInfo & mi) const;
|
||||
void metrics(MetricsInfo & mi, Dimension & dim) const;
|
||||
///
|
||||
void draw(PainterInfo & pi, int x, int y) const;
|
||||
///
|
||||
|
@ -25,12 +25,12 @@ MathInset * MathFontOldInset::clone() const
|
||||
}
|
||||
|
||||
|
||||
Dimension MathFontOldInset::metrics(MetricsInfo & mi) const
|
||||
void MathFontOldInset::metrics(MetricsInfo & mi, Dimension & dim) const
|
||||
{
|
||||
FontSetChanger dummy(mi.base, key_->name.c_str());
|
||||
cell(0).metrics(mi, dim_);
|
||||
metricsMarkers(1);
|
||||
return dim_;
|
||||
dim = dim_;
|
||||
}
|
||||
|
||||
|
||||
|
@ -24,7 +24,7 @@ public:
|
||||
/// we write extra braces in any case...
|
||||
bool extraBraces() const { return true; }
|
||||
///
|
||||
Dimension metrics(MetricsInfo & mi) const;
|
||||
void metrics(MetricsInfo & mi, Dimension & dim) const;
|
||||
///
|
||||
void draw(PainterInfo & pi, int x, int y) const;
|
||||
///
|
||||
|
@ -32,7 +32,7 @@ MathFracInset const * MathFracInset::asFracInset() const
|
||||
}
|
||||
|
||||
|
||||
Dimension MathFracInset::metrics(MetricsInfo & mi) const
|
||||
void MathFracInset::metrics(MetricsInfo & mi, Dimension & dim) const
|
||||
{
|
||||
FracChanger dummy(mi.base);
|
||||
cell(0).metrics(mi);
|
||||
@ -40,7 +40,7 @@ Dimension MathFracInset::metrics(MetricsInfo & mi) const
|
||||
dim_.wid = max(cell(0).width(), cell(1).width()) + 2;
|
||||
dim_.asc = cell(0).height() + 2 + 5;
|
||||
dim_.des = cell(1).height() + 2 - 5;
|
||||
return dim_;
|
||||
dim = dim_;
|
||||
}
|
||||
|
||||
|
||||
@ -62,7 +62,7 @@ void MathFracInset::metricsT(TextMetricsInfo const & mi, Dimension & dim) const
|
||||
dim.wid = max(cell(0).width(), cell(1).width());
|
||||
dim.asc = cell(0).height() + 1;
|
||||
dim.des = cell(1).height();
|
||||
//return dim_;
|
||||
//dim = dim_;
|
||||
}
|
||||
|
||||
|
||||
|
@ -17,7 +17,7 @@ public:
|
||||
///
|
||||
MathInset * clone() const;
|
||||
///
|
||||
Dimension metrics(MetricsInfo & mi) const;
|
||||
void metrics(MetricsInfo & mi, Dimension & dim) const;
|
||||
///
|
||||
void draw(PainterInfo &, int x, int y) const;
|
||||
///
|
||||
|
@ -18,7 +18,7 @@ MathInset * MathFrameboxInset::clone() const
|
||||
}
|
||||
|
||||
|
||||
Dimension MathFrameboxInset::metrics(MetricsInfo & mi) const
|
||||
void MathFrameboxInset::metrics(MetricsInfo & mi, Dimension & dim) const
|
||||
{
|
||||
FontSetChanger dummy(mi.base, "textnormal");
|
||||
w_ = mathed_char_width(mi.base.font, '[');
|
||||
@ -27,7 +27,7 @@ Dimension MathFrameboxInset::metrics(MetricsInfo & mi) const
|
||||
dim_ += cell(1).dim();
|
||||
dim_ += cell(2).dim();
|
||||
metricsMarkers();
|
||||
return dim_;
|
||||
dim = dim_;
|
||||
}
|
||||
|
||||
|
||||
|
@ -18,7 +18,7 @@ public:
|
||||
///
|
||||
MathInset * clone() const;
|
||||
///
|
||||
Dimension metrics(MetricsInfo & mi) const;
|
||||
void metrics(MetricsInfo & mi, Dimension & dim) const;
|
||||
///
|
||||
void draw(PainterInfo & pi, int x, int y) const;
|
||||
///
|
||||
|
@ -298,7 +298,7 @@ LyXLength MathGridInset::vcrskip(row_type row) const
|
||||
}
|
||||
|
||||
|
||||
Dimension MathGridInset::metrics(MetricsInfo & mi) const
|
||||
void MathGridInset::metrics(MetricsInfo & mi) const
|
||||
{
|
||||
// let the cells adjust themselves
|
||||
MathNestInset::metrics(mi);
|
||||
@ -434,7 +434,13 @@ Dimension MathGridInset::metrics(MetricsInfo & mi) const
|
||||
cxrow->setBaseline(cxrow->getBaseline() - ascent);
|
||||
}
|
||||
*/
|
||||
return dim_;
|
||||
}
|
||||
|
||||
|
||||
void MathGridInset::metrics(MetricsInfo & mi, Dimension & dim) const
|
||||
{
|
||||
metrics(mi);
|
||||
dim = dim_;
|
||||
}
|
||||
|
||||
|
||||
@ -1020,17 +1026,14 @@ dispatch_result MathGridInset::dispatch
|
||||
|
||||
case LFUN_MOUSE_RELEASE:
|
||||
//if (cmd.button() == mouse_button::button3) {
|
||||
// GridInsetMailer mailer(*this);
|
||||
// mailer.showDialog();
|
||||
// GridInsetMailer(*this).showDialog();
|
||||
// return DISPATCHED;
|
||||
//}
|
||||
break;
|
||||
return UNDISPATCHED;
|
||||
|
||||
case LFUN_INSET_DIALOG_UPDATE: {
|
||||
GridInsetMailer mailer(*this);
|
||||
mailer.updateDialog(cmd.view());
|
||||
break;
|
||||
}
|
||||
case LFUN_INSET_DIALOG_UPDATE:
|
||||
GridInsetMailer(*this).updateDialog(cmd.view());
|
||||
return UNDISPATCHED;
|
||||
|
||||
// insert file functions
|
||||
case LFUN_DELETE_LINE_FORWARD:
|
||||
@ -1164,5 +1167,4 @@ dispatch_result MathGridInset::dispatch
|
||||
default:
|
||||
return MathNestInset::dispatch(cmd, idx, pos);
|
||||
}
|
||||
return UNDISPATCHED;
|
||||
}
|
||||
|
@ -92,7 +92,9 @@ public:
|
||||
///
|
||||
MathInset * clone() const;
|
||||
///
|
||||
Dimension metrics(MetricsInfo & mi) const;
|
||||
void metrics(MetricsInfo & mi) const;
|
||||
///
|
||||
void metrics(MetricsInfo & mi, Dimension &) const;
|
||||
///
|
||||
void draw(PainterInfo & pi, int x, int y) const;
|
||||
///
|
||||
|
@ -165,7 +165,7 @@ char const * MathHullInset::standardFont() const
|
||||
}
|
||||
|
||||
|
||||
Dimension MathHullInset::metrics(MetricsInfo & mi) const
|
||||
void MathHullInset::metrics(MetricsInfo & mi, Dimension & dim) const
|
||||
{
|
||||
FontSetChanger dummy1(mi.base, standardFont());
|
||||
StyleChanger dummy2(mi.base, display() ? LM_ST_DISPLAY : LM_ST_TEXT);
|
||||
@ -197,7 +197,7 @@ Dimension MathHullInset::metrics(MetricsInfo & mi) const
|
||||
|
||||
// for markers
|
||||
metricsMarkers2();
|
||||
return dim_;
|
||||
dim = dim_;
|
||||
}
|
||||
|
||||
|
||||
@ -697,7 +697,7 @@ void MathHullInset::doExtern
|
||||
size_type pos = cell(idx).find_last(eq);
|
||||
MathArray ar;
|
||||
if (mathcursor && mathcursor->selection()) {
|
||||
ar = asArray(mathcursor->grabAndEraseSelection());
|
||||
asArray(mathcursor->grabAndEraseSelection(), ar);
|
||||
} else if (pos == cell(idx).size()) {
|
||||
ar = cell(idx);
|
||||
lyxerr << "use whole cell: " << ar << "\n";
|
||||
|
@ -24,7 +24,7 @@ public:
|
||||
///
|
||||
mode_type currentMode() const;
|
||||
///
|
||||
Dimension metrics(MetricsInfo & mi) const;
|
||||
void metrics(MetricsInfo & mi, Dimension & dim) const;
|
||||
///
|
||||
void draw(PainterInfo &, int x, int y) const;
|
||||
///
|
||||
|
@ -17,9 +17,8 @@ MathInset * MathInferInset::clone() const
|
||||
}
|
||||
|
||||
|
||||
Dimension MathInferInset::metrics(MetricsInfo &) const
|
||||
void MathInferInset::metrics(MetricsInfo &, Dimension &) const
|
||||
{
|
||||
return Dimension();
|
||||
}
|
||||
|
||||
|
||||
|
@ -17,7 +17,7 @@ public:
|
||||
///
|
||||
MathInset * clone() const;
|
||||
///
|
||||
Dimension metrics(MetricsInfo & mi) const;
|
||||
void metrics(MetricsInfo & mi, Dimension & dim) const;
|
||||
///
|
||||
void draw(PainterInfo & pi, int x, int y) const;
|
||||
///
|
||||
|
@ -18,11 +18,9 @@
|
||||
#include <config.h>
|
||||
|
||||
#include "math_inset.h"
|
||||
#include "Lsstream.h"
|
||||
#include "math_scriptinset.h"
|
||||
#include "math_mathmlstream.h"
|
||||
#include "math_cursor.h"
|
||||
#include "math_parser.h"
|
||||
#include "debug.h"
|
||||
|
||||
#include "frontends/LyXView.h"
|
||||
@ -35,9 +33,7 @@ using std::ostream;
|
||||
|
||||
BufferView * MathInset::view() const
|
||||
{
|
||||
if (!mathcursor)
|
||||
return 0;
|
||||
return mathcursor->formula()->view();
|
||||
return mathcursor ? mathcursor->formula()->view() : 0;
|
||||
}
|
||||
|
||||
|
||||
@ -158,12 +154,6 @@ bool MathInset::idxBetween(idx_type idx, idx_type from, idx_type to) const
|
||||
}
|
||||
|
||||
|
||||
void MathInset::draw(PainterInfo &, int, int) const
|
||||
{
|
||||
lyxerr << "MathInset::draw() called directly!\n";
|
||||
}
|
||||
|
||||
|
||||
void MathInset::drawSelection(PainterInfo &,
|
||||
idx_type, pos_type, idx_type, pos_type) const
|
||||
{
|
||||
@ -267,23 +257,6 @@ string MathInset::name() const
|
||||
}
|
||||
|
||||
|
||||
string asString(MathArray const & ar)
|
||||
{
|
||||
std::ostringstream os;
|
||||
WriteStream ws(os);
|
||||
ws << ar;
|
||||
return STRCONV(os.str());
|
||||
}
|
||||
|
||||
|
||||
MathArray asArray(string const & str)
|
||||
{
|
||||
MathArray ar;
|
||||
mathed_parse_cell(ar, str);
|
||||
return ar;
|
||||
}
|
||||
|
||||
|
||||
ostream & operator<<(ostream & os, MathAtom const & at)
|
||||
{
|
||||
WriteStream wi(os, false, false);
|
||||
|
@ -16,9 +16,6 @@
|
||||
* the GNU General Public Licence version 2 or later.
|
||||
*/
|
||||
|
||||
// Note: These math insets are internal to Math and are not derived
|
||||
// from lyx inset.
|
||||
|
||||
#ifndef MATH_INSET_H
|
||||
#define MATH_INSET_H
|
||||
|
||||
@ -26,7 +23,6 @@
|
||||
|
||||
#include "LString.h"
|
||||
#include "insets/insetbase.h"
|
||||
#include "math_data.h"
|
||||
|
||||
/**
|
||||
|
||||
@ -36,8 +32,8 @@ the math objects.
|
||||
|
||||
Math insets do not know there parents, a cursor position or things
|
||||
like that. The are dumb object that are contained in other math insets
|
||||
(mathNestInsets, in fact) thus forming a tree. The root of this tree is
|
||||
always a mathHullInset, which provides an interface to the Outer World by
|
||||
(MathNestInsets, in fact) thus forming a tree. The root of this tree is
|
||||
always a MathHullInset, which provides an interface to the Outer World by
|
||||
inclusion in the "real LyX insets" FormulaInset and FormulaMacroInset.
|
||||
|
||||
*/
|
||||
@ -47,9 +43,9 @@ class MathArrayInset;
|
||||
class MathAMSArrayInset;
|
||||
class MathCharInset;
|
||||
class MathDelimInset;
|
||||
class MathGridInset;
|
||||
class MathFracInset;
|
||||
class MathFontInset;
|
||||
class MathGridInset;
|
||||
class MathHullInset;
|
||||
class MathMatrixInset;
|
||||
class MathNestInset;
|
||||
@ -62,6 +58,9 @@ class MathUnknownInset;
|
||||
|
||||
class RefInset;
|
||||
|
||||
class MathArray;
|
||||
class MathAtom;
|
||||
|
||||
class NormalStream;
|
||||
class OctaveStream;
|
||||
class MapleStream;
|
||||
@ -70,32 +69,22 @@ class MathematicaStream;
|
||||
class MathMLStream;
|
||||
class WriteStream;
|
||||
class InfoStream;
|
||||
class MathArray;
|
||||
|
||||
class LaTeXFeatures;
|
||||
class BufferView;
|
||||
class UpdatableInset;
|
||||
class MathMacroTemplate;
|
||||
class MathMacro;
|
||||
class MathPosFinder;
|
||||
class Dimension;
|
||||
class FuncRequest;
|
||||
class TextPainter;
|
||||
class TextMetricsInfo;
|
||||
class ReplaceData;
|
||||
|
||||
|
||||
class MathInset : public InsetBase {
|
||||
public:
|
||||
/// short of anything else reasonable
|
||||
typedef MathArray::size_type size_type;
|
||||
/// type for cursor positions differences within a cell
|
||||
typedef MathArray::difference_type difference_type;
|
||||
/// type for cursor positions within a cell
|
||||
typedef MathArray::size_type pos_type;
|
||||
/// type for cell indices
|
||||
typedef size_type idx_type;
|
||||
/// type for row numbers
|
||||
typedef size_type row_type;
|
||||
/// type for column numbers
|
||||
typedef size_type col_type;
|
||||
|
||||
/// our members behave nicely...
|
||||
MathInset() {}
|
||||
|
||||
@ -103,11 +92,6 @@ public:
|
||||
virtual MathInset * clone() const = 0;
|
||||
/// substitutes macro arguments if necessary
|
||||
virtual void substitute(MathMacro const & macro);
|
||||
/// compute the size of the object returned in dim
|
||||
virtual Dimension metrics(MetricsInfo & mi) const = 0;
|
||||
/// draw the object
|
||||
// updates the (xo,yo)-caches of all contained cells
|
||||
virtual void draw(PainterInfo & pi, int x, int y) const;
|
||||
/// draw selection between two positions
|
||||
virtual void drawSelection(PainterInfo & pi,
|
||||
idx_type idx1, pos_type pos1, idx_type idx2, pos_type pos2) const;
|
||||
@ -295,11 +279,6 @@ protected:
|
||||
|
||||
std::ostream & operator<<(std::ostream &, MathAtom const &);
|
||||
|
||||
// converts single cell to string
|
||||
string asString(MathArray const & ar);
|
||||
// converts string to single cell
|
||||
MathArray asArray(string const & str);
|
||||
|
||||
// initialize math
|
||||
void initMath();
|
||||
|
||||
|
@ -28,13 +28,11 @@ MathInset * MathKernInset::clone() const
|
||||
}
|
||||
|
||||
|
||||
Dimension MathKernInset::metrics(MetricsInfo & mi) const
|
||||
void MathKernInset::metrics(MetricsInfo & mi, Dimension & dim) const
|
||||
{
|
||||
Dimension dim;
|
||||
dim.wid = wid_.inPixels(0, mathed_char_width(mi.base.font, 'M'));
|
||||
dim.asc = 0;
|
||||
dim.des = 0;
|
||||
return dim;
|
||||
}
|
||||
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user