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;
|
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
|
* Draw a string and enclose it inside a rectangle. If
|
||||||
* back color is specified, the background is cleared with
|
* 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) {
|
if (f.realShape() == SMALLCAPS_SHAPE) {
|
||||||
textwidth = smallCapsText(x, y, str, f);
|
textwidth = smallCapsText(x, y, str, f);
|
||||||
if (f.underbar() == FONT_ON)
|
textDecoration(f, x, y, textwidth);
|
||||||
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);
|
|
||||||
return textwidth;
|
return textwidth;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -350,15 +343,7 @@ int GuiPainter::text(int x, int y, docstring const & s,
|
|||||||
// textwidth = fontMetrics().width(str);
|
// textwidth = fontMetrics().width(str);
|
||||||
// because the above is awfully expensive on MacOSX
|
// because the above is awfully expensive on MacOSX
|
||||||
textwidth = fm.width(s);
|
textwidth = fm.width(s);
|
||||||
if (f.underbar() == FONT_ON)
|
textDecoration(f, x, y, textwidth);
|
||||||
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);
|
|
||||||
|
|
||||||
if (!isDrawingEnabled())
|
if (!isDrawingEnabled())
|
||||||
return textwidth;
|
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; }
|
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)
|
/// 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 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
|
/// draw a string and enclose it inside a button frame
|
||||||
virtual void buttonText(int x, int baseline, docstring const & s,
|
virtual void buttonText(int x, int baseline, docstring const & s,
|
||||||
FontInfo const & font, bool mouseHover);
|
FontInfo const & font, bool mouseHover);
|
||||||
|
Loading…
Reference in New Issue
Block a user