mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-12-22 13:18:28 +00:00
Improve display of the logos.
This look now more like the real logos. Moreover, we use not the normal font color because Color_special is a bit too flashy.
This commit is contained in:
parent
ddd0b327df
commit
322da78299
@ -43,12 +43,54 @@ InsetSpecialChar::Kind InsetSpecialChar::kind() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
|
||||||
|
int logoWidth(FontInfo const & font, InsetSpecialChar::Kind kind) {
|
||||||
|
frontend::FontMetrics const & fm = theFontMetrics(font);
|
||||||
|
double const em = fm.width('M');
|
||||||
|
int width = 0;
|
||||||
|
switch (kind) {
|
||||||
|
case InsetSpecialChar::PHRASE_LYX:
|
||||||
|
width = fm.width(from_ascii("L")) - 0.16667 * em
|
||||||
|
+ fm.width(from_ascii("Y")) - 0.125 * em
|
||||||
|
+ fm.width(from_ascii("X"));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case InsetSpecialChar::PHRASE_TEX:
|
||||||
|
width = fm.width(from_ascii("T")) - 0.16667 * em
|
||||||
|
+ fm.width(from_ascii("E")) - 0.125 * em
|
||||||
|
+ fm.width(from_ascii("X"));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case InsetSpecialChar::PHRASE_LATEX2E:
|
||||||
|
width = logoWidth(font, InsetSpecialChar::PHRASE_LATEX)
|
||||||
|
+ fm.width(from_ascii("2") + char_type(0x03b5));
|
||||||
|
break;
|
||||||
|
case InsetSpecialChar::PHRASE_LATEX: {
|
||||||
|
FontInfo smaller = font;
|
||||||
|
smaller.decSize().decSize();
|
||||||
|
width = fm.width(from_ascii("L")) - 0.36 * em
|
||||||
|
+ theFontMetrics(smaller).width(from_ascii("A")) - 0.15 * em
|
||||||
|
+ logoWidth(font, InsetSpecialChar::PHRASE_TEX);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
LYXERR0("No information for computing width of logo " << kind);
|
||||||
|
}
|
||||||
|
|
||||||
|
return width;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void InsetSpecialChar::metrics(MetricsInfo & mi, Dimension & dim) const
|
void InsetSpecialChar::metrics(MetricsInfo & mi, Dimension & dim) const
|
||||||
{
|
{
|
||||||
frontend::FontMetrics const & fm =
|
frontend::FontMetrics const & fm =
|
||||||
theFontMetrics(mi.base.font);
|
theFontMetrics(mi.base.font);
|
||||||
dim.asc = fm.maxAscent();
|
dim.asc = fm.maxAscent();
|
||||||
dim.des = fm.maxDescent();
|
dim.des = fm.maxDescent();
|
||||||
|
dim.wid = 0;
|
||||||
|
|
||||||
docstring s;
|
docstring s;
|
||||||
switch (kind_) {
|
switch (kind_) {
|
||||||
@ -65,7 +107,9 @@ void InsetSpecialChar::metrics(MetricsInfo & mi, Dimension & dim) const
|
|||||||
s = from_ascii(" x ");
|
s = from_ascii(" x ");
|
||||||
break;
|
break;
|
||||||
case HYPHENATION:
|
case HYPHENATION:
|
||||||
s = from_ascii("-");
|
dim.wid = fm.width(from_ascii("-"));
|
||||||
|
if (dim.wid > 5)
|
||||||
|
dim.wid -= 2; // to make it look shorter
|
||||||
break;
|
break;
|
||||||
case SLASH:
|
case SLASH:
|
||||||
s = from_ascii("/");
|
s = from_ascii("/");
|
||||||
@ -74,26 +118,66 @@ void InsetSpecialChar::metrics(MetricsInfo & mi, Dimension & dim) const
|
|||||||
s = from_ascii("-");
|
s = from_ascii("-");
|
||||||
break;
|
break;
|
||||||
case PHRASE_LYX:
|
case PHRASE_LYX:
|
||||||
s = from_ascii("LyX");
|
|
||||||
break;
|
|
||||||
case PHRASE_TEX:
|
case PHRASE_TEX:
|
||||||
s = from_ascii("TeX");
|
|
||||||
break;
|
|
||||||
case PHRASE_LATEX2E:
|
case PHRASE_LATEX2E:
|
||||||
s = from_ascii("LaTeX2") + char_type(0x03b5);
|
|
||||||
break;
|
|
||||||
case PHRASE_LATEX:
|
case PHRASE_LATEX:
|
||||||
s = from_ascii("LaTeX");
|
dim.wid = logoWidth(mi.base.font, kind_);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
dim.wid = fm.width(s);
|
if (dim.wid == 0)
|
||||||
if (kind_ == HYPHENATION && dim.wid > 5)
|
dim.wid = fm.width(s);
|
||||||
dim.wid -= 2; // to make it look shorter
|
|
||||||
|
|
||||||
setDimCache(mi, dim);
|
setDimCache(mi, dim);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
|
||||||
|
void drawLogo(PainterInfo & pi, InsetSpecialChar::Kind kind, int & x, int & y) {
|
||||||
|
FontInfo const & font = pi.base.font;
|
||||||
|
// FIXME: this definition of em is bogus, but there is a need
|
||||||
|
// for a big refactoring of the code around this issue anyway.
|
||||||
|
double const em = theFontMetrics(font).width('M');
|
||||||
|
switch (kind) {
|
||||||
|
case InsetSpecialChar::PHRASE_LYX:
|
||||||
|
x += pi.pain.text(x, y, from_ascii("L"), font);
|
||||||
|
x -= 0.16667 * em;
|
||||||
|
x += pi.pain.text(x, y + 0.25 * em, from_ascii("Y"), font);
|
||||||
|
x -= 0.125 * em;
|
||||||
|
x += pi.pain.text(x, y, from_ascii("X"), font);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case InsetSpecialChar::PHRASE_TEX:
|
||||||
|
x += pi.pain.text(x, y, from_ascii("T"), font);
|
||||||
|
x -= 0.16667 * em;
|
||||||
|
x += pi.pain.text(x, y + 0.25 * em, from_ascii("E"), font);
|
||||||
|
x -= 0.125 * em;
|
||||||
|
x += pi.pain.text(x, y, from_ascii("X"), font);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case InsetSpecialChar::PHRASE_LATEX2E:
|
||||||
|
drawLogo(pi, InsetSpecialChar::PHRASE_LATEX, x, y);
|
||||||
|
x += pi.pain.text(x, y, from_ascii("2"), font);
|
||||||
|
x += pi.pain.text(x, y + 0.25 * em, char_type(0x03b5), font);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case InsetSpecialChar::PHRASE_LATEX: {
|
||||||
|
x += pi.pain.text(x, y, from_ascii("L"), font);
|
||||||
|
x -= 0.36 * em;
|
||||||
|
FontInfo smaller = font;
|
||||||
|
smaller.decSize().decSize();
|
||||||
|
x += pi.pain.text(x, y - 0.2 * em, from_ascii("A"), smaller);
|
||||||
|
x -= 0.15 * em;
|
||||||
|
drawLogo(pi, InsetSpecialChar::PHRASE_TEX, x, y);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
LYXERR0("No information for drawing logo " << kind);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
void InsetSpecialChar::draw(PainterInfo & pi, int x, int y) const
|
void InsetSpecialChar::draw(PainterInfo & pi, int x, int y) const
|
||||||
{
|
{
|
||||||
FontInfo font = pi.base.font;
|
FontInfo font = pi.base.font;
|
||||||
@ -157,20 +241,10 @@ void InsetSpecialChar::draw(PainterInfo & pi, int x, int y) const
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case PHRASE_LYX:
|
case PHRASE_LYX:
|
||||||
font.setColor(Color_special);
|
|
||||||
pi.pain.text(x, y, from_ascii("LyX"), font);
|
|
||||||
break;
|
|
||||||
case PHRASE_TEX:
|
case PHRASE_TEX:
|
||||||
font.setColor(Color_special);
|
|
||||||
pi.pain.text(x, y, from_ascii("TeX"), font);
|
|
||||||
break;
|
|
||||||
case PHRASE_LATEX2E:
|
case PHRASE_LATEX2E:
|
||||||
font.setColor(Color_special);
|
|
||||||
pi.pain.text(x, y, from_ascii("LaTeX2") + char_type(0x03b5), font);
|
|
||||||
break;
|
|
||||||
case PHRASE_LATEX:
|
case PHRASE_LATEX:
|
||||||
font.setColor(Color_special);
|
drawLogo(pi, kind_, x, y);
|
||||||
pi.pain.text(x, y, from_ascii("LaTeX"), font);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user