From: André Pönitz Date: Mon, 5 Aug 2002 16:21:19 +0000 (+0000) Subject: several fixes concerning font size in scripts/fractions/etc X-Git-Tag: 1.6.10~18676 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=06065364e5a284c6404a4c88f5cdba88f7985fb8;p=features.git several fixes concerning font size in scripts/fractions/etc git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@4865 a592a061-630c-0410-9148-cb99ea01b6c8 --- diff --git a/src/mathed/math_cursor.C b/src/mathed/math_cursor.C index 7d627af268..cc011e6359 100644 --- a/src/mathed/math_cursor.C +++ b/src/mathed/math_cursor.C @@ -1332,7 +1332,7 @@ bool MathCursor::interpret(char c) // handle macroMode if (inMacroMode()) { string name = macroName(); - lyxerr << "interpret name: '" << name << "'\n"; + //lyxerr << "interpret name: '" << name << "'\n"; if (name.empty() && c == '\\') { backspace(); diff --git a/src/mathed/math_extern.C b/src/mathed/math_extern.C index c277617e50..921e59fce4 100644 --- a/src/mathed/math_extern.C +++ b/src/mathed/math_extern.C @@ -441,7 +441,7 @@ void extractFunctions(MathArray & ar) // is it a function? if ((*it)->asUnknownInset()) { // it certainly is if it is well known... - name = (*it)->asUnknownInset()->name(); + name = (*it)->name(); } else { // is this a user defined function? // it it probably not, if it doesn't have a name. diff --git a/src/mathed/math_inset.h b/src/mathed/math_inset.h index 30a8e9ebde..8cd78be5b0 100644 --- a/src/mathed/math_inset.h +++ b/src/mathed/math_inset.h @@ -62,8 +62,6 @@ class MathStringInset; class MathSpaceInset; class MathSymbolInset; class MathUnknownInset; -class MathXYMatrixInset; -class MathXYMatrixInset; class InsetRef; @@ -211,7 +209,6 @@ public: virtual MathSymbolInset const * asSymbolInset() const { return 0; } virtual MathUnknownInset * asUnknownInset() { return 0; } virtual MathUnknownInset const * asUnknownInset() const { return 0; } - virtual MathXYMatrixInset const* asXYMatrixInset() const{ return 0; } virtual InsetRef * asInsetRef() { return 0; } /// identifies things that can get scripts diff --git a/src/mathed/math_metricsinfo.C b/src/mathed/math_metricsinfo.C index 10e2e195f9..1235e77b4b 100644 --- a/src/mathed/math_metricsinfo.C +++ b/src/mathed/math_metricsinfo.C @@ -3,6 +3,7 @@ #include "math_metricsinfo.h" #include "math_support.h" +#include "debug.h" #include "frontends/Painter.h" @@ -33,63 +34,48 @@ void MathPainterInfo::draw(int x, int y, char c) } - - -MathScriptChanger::MathScriptChanger(MathMetricsBase & mb) - : MathChanger(mb) +MathStyles smallerScriptStyle(MathStyles st) { - save_ = mb; - switch (mb.style) { + switch (st) { case LM_ST_DISPLAY: case LM_ST_TEXT: - mb.style = LM_ST_SCRIPT; - mb.font.decSize(); - mb.font.decSize(); - break; + return LM_ST_SCRIPT; case LM_ST_SCRIPT: - mb.style = LM_ST_SCRIPTSCRIPT; - mb.font.decSize(); - default: - break; + case LM_ST_SCRIPTSCRIPT: + return LM_ST_SCRIPTSCRIPT; } + // shut up compiler + lyxerr << "should not happen\n"; + return LM_ST_DISPLAY; } -MathScriptChanger::~MathScriptChanger() -{ - orig_ = save_; -} +MathScriptChanger::MathScriptChanger(MathMetricsBase & mb) + : MathStyleChanger(mb, smallerScriptStyle(mb.style)) +{} -// decrease math size for fractions -MathFracChanger::MathFracChanger(MathMetricsBase & mb) - : MathChanger(mb) +MathStyles smallerFracStyle(MathStyles st) { - save_ = mb; - switch (mb.style) { + switch (st) { case LM_ST_DISPLAY: - mb.style = LM_ST_TEXT; - break; + return LM_ST_TEXT; case LM_ST_TEXT: - mb.style = LM_ST_SCRIPT; - mb.font.decSize(); - mb.font.decSize(); - break; + return LM_ST_SCRIPT; case LM_ST_SCRIPT: - mb.style = LM_ST_SCRIPTSCRIPT; - mb.font.decSize(); - break; - default: - break; + case LM_ST_SCRIPTSCRIPT: + return LM_ST_SCRIPTSCRIPT; } + // shut up compiler + lyxerr << "should not happen\n"; + return LM_ST_DISPLAY; } -MathFracChanger::~MathFracChanger() -{ - orig_ = save_; -} +MathFracChanger::MathFracChanger(MathMetricsBase & mb) + : MathStyleChanger(mb, smallerFracStyle(mb.style)) +{} @@ -108,22 +94,22 @@ MathShapeChanger::~MathShapeChanger() -void changeSize(LyXFont & font, int diff) -{ - if (diff < 0) { - font.decSize(); - changeSize(font, diff + 1); - } else if (diff > 0) { - font.incSize(); - changeSize(font, diff - 1); - } -} - MathStyleChanger::MathStyleChanger(MathMetricsBase & mb, MathStyles style) : MathChanger(mb) { + static const int diff[4][4] = { { 0, 0, -3, -5 }, + { 0, 0, -3, -5 }, + { 3, 3, 0, -2 }, + { 5, 5, 2, 0 } }; save_ = mb; - changeSize(mb.font, mb.style - style); + int t = diff[mb.style][style]; + if (t > 0) + while (t--) + mb.font.incSize(); + else + while (t++) + mb.font.decSize(); + mb.style = style; } diff --git a/src/mathed/math_metricsinfo.h b/src/mathed/math_metricsinfo.h index 6985a6d309..bd8a46d15b 100644 --- a/src/mathed/math_metricsinfo.h +++ b/src/mathed/math_metricsinfo.h @@ -79,23 +79,6 @@ protected: -struct MathScriptChanger : public MathChanger { - /// - MathScriptChanger(MathMetricsBase & orig); - /// - ~MathScriptChanger(); -}; - - -struct MathFracChanger : public MathChanger { - /// - MathFracChanger(MathMetricsBase & orig); - /// - ~MathFracChanger(); -}; - - - struct MathFontChanger : public MathChanger { /// MathFontChanger(LyXFont & orig, char const * font); @@ -120,6 +103,18 @@ struct MathStyleChanger : public MathChanger { }; +struct MathScriptChanger : public MathStyleChanger { + /// + MathScriptChanger(MathMetricsBase & mb); +}; + + +struct MathFracChanger : public MathStyleChanger { + /// + MathFracChanger(MathMetricsBase & mb); +}; + + struct MathShapeChanger : public MathChanger { /// MathShapeChanger(LyXFont & font, LyXFont::FONT_SHAPE shape); diff --git a/src/mathed/math_scriptinset.C b/src/mathed/math_scriptinset.C index cff1503225..f0023d9f66 100644 --- a/src/mathed/math_scriptinset.C +++ b/src/mathed/math_scriptinset.C @@ -184,8 +184,10 @@ int MathScriptInset::ndes() const void MathScriptInset::metrics(MathMetricsInfo & mi) const { - MathNestInset::metrics(mi); + cell(2).metrics(mi); MathScriptChanger dummy(mi.base); + cell(0).metrics(mi); + cell(1).metrics(mi); dim_.w = 0; if (hasLimits()) { dim_.w = nwid();