]> git.lyx.org Git - lyx.git/blobdiff - src/FontInfo.cpp
Further amendment to 72a488d7
[lyx.git] / src / FontInfo.cpp
index 9edf97e52e9e7ee56e63d9e7da738a502bec1595..be792623071b74fb36f9f7bb9383b49bf65e6bd1 100644 (file)
 #include "ColorSet.h"
 #include "FontInfo.h"
 #include "Lexer.h"
+#include "LyXRC.h"
 
+#include "support/convert.h"
 #include "support/debug.h"
 #include "support/docstring.h"
 #include "support/lstrings.h"
 #include "support/RefChanger.h"
 
+#include <algorithm>
 #include <ostream>
 #include <sstream>
 
@@ -168,6 +171,29 @@ FontInfo & FontInfo::incSize()
 }
 
 
+double FontInfo::realSize() const
+{
+       double d = convert<double>(lyxrc.font_sizes[size()]);
+       // The following is according to the average of the values in the
+       // definitions of \defaultscriptratio and \defaultscriptscriptratio in LaTeX
+       // font packages. No attempt is made to implement the actual values from
+       // \DefineMathSizes.
+       switch (style()) {
+       case LM_ST_DISPLAY:
+       case LM_ST_TEXT:
+               break;
+       case LM_ST_SCRIPT:
+               d *= .73;
+               break;
+       case LM_ST_SCRIPTSCRIPT:
+               d *= .55;
+               break;
+       }
+       // Never go below the smallest size
+       return max(d, convert<double>(lyxrc.font_sizes[FONT_SIZE_TINY]));
+}
+
+
 /// Reduce font to fall back to template where possible
 void FontInfo::reduce(FontInfo const & tmplt)
 {
@@ -246,23 +272,29 @@ FontInfo & FontInfo::realize(FontInfo const & tmplt)
 }
 
 
-Changer FontInfo::changeColor(ColorCode const color, bool cond)
+Changer FontInfo::changeColor(ColorCode const color)
+{
+       return make_change(color_, color);
+}
+
+
+Changer FontInfo::changeShape(FontShape const shape)
 {
-       return make_change(color_, color, cond);
+       return make_change(shape_, shape);
 }
 
 
-Changer FontInfo::changeShape(FontShape const shape, bool cond)
+Changer FontInfo::changeStyle(MathStyle const new_style)
 {
-       return make_change(shape_, shape, cond);
+       return make_change(style_, new_style);
 }
 
 
-Changer FontInfo::change(FontInfo font, bool realiz, bool cond)
+Changer FontInfo::change(FontInfo font, bool realiz)
 {
        if (realiz)
                font.realize(*this);
-       return make_change(*this, font, cond);
+       return make_change(*this, font);
 }