mirror of
https://git.lyx.org/repos/lyx.git
synced 2025-01-03 08:28:25 +00:00
Factor out painting of text decorations
This commit is contained in:
parent
fa9bd04ea4
commit
53b75399e7
@ -127,6 +127,9 @@ public:
|
||||
*/
|
||||
virtual int text(int x, int y, char_type c, FontInfo const & f) = 0;
|
||||
|
||||
/// draw the underbar, strikeout, uuline and uwave font attributes
|
||||
virtual void textDecoration(FontInfo const & f, int x, int y, int width) = 0;
|
||||
|
||||
/**
|
||||
* Draw a string and enclose it inside a rectangle. If
|
||||
* back color is specified, the background is cleared with
|
||||
|
@ -335,14 +335,7 @@ int GuiPainter::text(int x, int y, docstring const & s,
|
||||
|
||||
if (f.realShape() == SMALLCAPS_SHAPE) {
|
||||
textwidth = smallCapsText(x, y, str, f);
|
||||
if (f.underbar() == FONT_ON)
|
||||
underline(f, x, y, textwidth);
|
||||
if (f.strikeout() == FONT_ON)
|
||||
strikeoutLine(f, x, y, textwidth);
|
||||
if (f.uuline() == FONT_ON)
|
||||
doubleUnderline(f, x, y, textwidth);
|
||||
if (f.uwave() == FONT_ON)
|
||||
wavyHorizontalLine(x, y, textwidth, f.realColor().baseColor);
|
||||
textDecoration(f, x, y, textwidth);
|
||||
return textwidth;
|
||||
}
|
||||
|
||||
@ -350,15 +343,7 @@ int GuiPainter::text(int x, int y, docstring const & s,
|
||||
// textwidth = fontMetrics().width(str);
|
||||
// because the above is awfully expensive on MacOSX
|
||||
textwidth = fm.width(s);
|
||||
if (f.underbar() == FONT_ON)
|
||||
underline(f, x, y, textwidth);
|
||||
if (f.strikeout() == FONT_ON)
|
||||
strikeoutLine(f, x, y, textwidth);
|
||||
if (f.uuline() == FONT_ON)
|
||||
doubleUnderline(f, x, y, textwidth);
|
||||
if (f.uwave() == FONT_ON)
|
||||
// f.color() doesn't work on some circumstances
|
||||
wavyHorizontalLine(x, y, textwidth, f.realColor().baseColor);
|
||||
textDecoration(f, x, y, textwidth);
|
||||
|
||||
if (!isDrawingEnabled())
|
||||
return textwidth;
|
||||
@ -441,6 +426,20 @@ int GuiPainter::text(int x, int y, docstring const & s,
|
||||
}
|
||||
|
||||
|
||||
void GuiPainter::textDecoration(FontInfo const & f, int x, int y, int width)
|
||||
{
|
||||
if (f.underbar() == FONT_ON)
|
||||
underline(f, x, y, width);
|
||||
if (f.strikeout() == FONT_ON)
|
||||
strikeoutLine(f, x, y, width);
|
||||
if (f.uuline() == FONT_ON)
|
||||
doubleUnderline(f, x, y, width);
|
||||
if (f.uwave() == FONT_ON)
|
||||
// f.color() doesn't work on some circumstances
|
||||
wavyHorizontalLine(x, y, width, f.realColor().baseColor);
|
||||
}
|
||||
|
||||
|
||||
static int max(int a, int b) { return a > b ? a : b; }
|
||||
|
||||
|
||||
|
@ -93,6 +93,9 @@ public:
|
||||
/// draw a char at position x, y (y is the baseline)
|
||||
virtual int text(int x, int y, char_type c, FontInfo const & f);
|
||||
|
||||
///
|
||||
virtual void textDecoration(FontInfo const & f, int x, int y, int width);
|
||||
|
||||
/// draw a string and enclose it inside a button frame
|
||||
virtual void buttonText(int x, int baseline, docstring const & s,
|
||||
FontInfo const & font, bool mouseHover);
|
||||
|
Loading…
Reference in New Issue
Block a user