mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-12-25 05:55:34 +00:00
a48581f48c
The special mode used by macros where the macro name is displayed as grey text in a box is now one of the possible marker types for any inset. The new code puts the macro name below the text, which means that only the text below the current line will be moved. This makes edition much more comfortable. The grey border around the contents has been removed too. The marker_type enum has been moved from Inset to InsetMath. A markerMargin() function returns the horizontal margin required on each side for the marker. Only the corner-type markers MARKER and MARKER2 need some. A new BOX_MARKER enum value has been added and is taken care of in afterMetricsMarkers (renamed from metricsMarkerVertical) and drawMarkers. The InsetMath::marker() macro now takes a BufferView pointer as argument, so that the marker type can depend on editing state. MathRow::metrics now makes changes to the MathRow object when needed. The specific metrics/draw code in MathMacro has been removed and replaced by assertions. Code in addToMathRow and marker is adapted to reflect the cases where linearization is possible.
146 lines
3.2 KiB
C++
146 lines
3.2 KiB
C++
// -*- C++ -*-
|
|
/**
|
|
* \file InsetMathBox.h
|
|
* 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.
|
|
*/
|
|
|
|
#ifndef MATH_BOXINSET_H
|
|
#define MATH_BOXINSET_H
|
|
|
|
#include "InsetMathNest.h"
|
|
|
|
|
|
namespace lyx {
|
|
|
|
/// Support for \\mbox
|
|
class InsetMathBox : public InsetMathNest {
|
|
public:
|
|
///
|
|
explicit InsetMathBox(Buffer * buf, docstring const & name);
|
|
///
|
|
mode_type currentMode() const { return TEXT_MODE; }
|
|
///
|
|
void metrics(MetricsInfo & mi, Dimension & dim) const;
|
|
///
|
|
void draw(PainterInfo & pi, int x, int y) const;
|
|
///
|
|
void write(WriteStream & os) const;
|
|
///
|
|
void normalize(NormalStream & ns) const;
|
|
///
|
|
void mathmlize(MathStream & ms) const;
|
|
///
|
|
void htmlize(HtmlStream & ms) const;
|
|
///
|
|
void infoize(odocstream & os) const;
|
|
///
|
|
void validate(LaTeXFeatures & features) const;
|
|
///
|
|
InsetCode lyxCode() const { return MATH_BOX_CODE; }
|
|
|
|
private:
|
|
Inset * clone() const { return new InsetMathBox(*this); }
|
|
///
|
|
docstring name_;
|
|
};
|
|
|
|
|
|
/// Non-AMS-style frame
|
|
class InsetMathFBox : public InsetMathNest {
|
|
public:
|
|
///
|
|
InsetMathFBox(Buffer * buf);
|
|
///
|
|
mode_type currentMode() const { return TEXT_MODE; }
|
|
///
|
|
marker_type marker(BufferView const *) const { return NO_MARKER; }
|
|
///
|
|
void metrics(MetricsInfo & mi, Dimension & dim) const;
|
|
///
|
|
void draw(PainterInfo & pi, int x, int y) const;
|
|
///
|
|
void write(WriteStream & os) const;
|
|
/// write normalized content
|
|
void normalize(NormalStream & ns) const;
|
|
///
|
|
void mathmlize(MathStream & ms) const;
|
|
///
|
|
void htmlize(HtmlStream & ms) const;
|
|
///
|
|
void infoize(odocstream & os) const;
|
|
///
|
|
void validate(LaTeXFeatures & features) const;
|
|
private:
|
|
///
|
|
Inset * clone() const { return new InsetMathFBox(*this); }
|
|
};
|
|
|
|
|
|
/// Extra nesting: \\makebox or \\framebox.
|
|
class InsetMathMakebox : public InsetMathNest {
|
|
public:
|
|
///
|
|
InsetMathMakebox(Buffer * buf, bool framebox);
|
|
///
|
|
void metrics(MetricsInfo & mi, Dimension & dim) const;
|
|
///
|
|
void draw(PainterInfo & pi, int x, int y) const;
|
|
///
|
|
void write(WriteStream & os) const;
|
|
/// write normalized content
|
|
void normalize(NormalStream & ns) const;
|
|
///
|
|
void mathmlize(MathStream & ms) const;
|
|
///
|
|
void htmlize(HtmlStream & ms) const;
|
|
///
|
|
mode_type currentMode() const { return TEXT_MODE; }
|
|
///
|
|
void infoize(odocstream & os) const;
|
|
///
|
|
void validate(LaTeXFeatures & features) const;
|
|
private:
|
|
Inset * clone() const { return new InsetMathMakebox(*this); }
|
|
///
|
|
bool framebox_;
|
|
};
|
|
|
|
|
|
|
|
/// AMS-style frame
|
|
class InsetMathBoxed : public InsetMathNest {
|
|
public:
|
|
///
|
|
InsetMathBoxed(Buffer * buf);
|
|
///
|
|
marker_type marker(BufferView const *) const { return NO_MARKER; }
|
|
///
|
|
void validate(LaTeXFeatures & features) const;
|
|
///
|
|
void metrics(MetricsInfo & mi, Dimension & dim) const;
|
|
///
|
|
void draw(PainterInfo & pi, int x, int y) const;
|
|
///
|
|
void write(WriteStream & os) const;
|
|
///
|
|
void mathmlize(MathStream & ms) const;
|
|
///
|
|
void htmlize(HtmlStream & ms) const;
|
|
/// write normalized content
|
|
void normalize(NormalStream & ns) const;
|
|
///
|
|
void infoize(odocstream & os) const;
|
|
private:
|
|
Inset * clone() const { return new InsetMathBoxed(*this); }
|
|
};
|
|
|
|
|
|
} // namespace lyx
|
|
|
|
#endif // MATH_MBOX
|