}
-QColor GuiPainter::computeColor(ColorCode col)
+QColor GuiPainter::computeColor(Color col)
{
return filterColor(guiApp->colorCache().get(col));
}
}
-void GuiPainter::enterMonochromeMode(ColorCode const & min, ColorCode const & max)
+void GuiPainter::enterMonochromeMode(Color const & min, Color const & max)
{
QColor qmin = filterColor(guiApp->colorCache().get(min));
QColor qmax = filterColor(guiApp->colorCache().get(max));
}
-void GuiPainter::point(int x, int y, ColorCode col)
+void GuiPainter::point(int x, int y, Color col)
{
if (!isDrawingEnabled())
return;
void GuiPainter::line(int x1, int y1, int x2, int y2,
- ColorCode col,
+ Color col,
line_style ls,
line_width lw)
{
void GuiPainter::lines(int const * xp, int const * yp, int np,
- ColorCode col,
+ Color col,
line_style ls,
line_width lw)
{
void GuiPainter::rectangle(int x, int y, int w, int h,
- ColorCode col,
+ Color col,
line_style ls,
line_width lw)
{
}
-void GuiPainter::fillRectangle(int x, int y, int w, int h, ColorCode col)
+void GuiPainter::fillRectangle(int x, int y, int w, int h, Color col)
{
if (!isDrawingEnabled())
return;
void GuiPainter::arc(int x, int y, unsigned int w, unsigned int h,
- int a1, int a2, ColorCode col)
+ int a1, int a2, Color col)
{
if (!isDrawingEnabled())
return;
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);
return textwidth;
}
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);
if (!isDrawingEnabled())
return textwidth;
//LYXERR(Debug::PAINTING, "h=" << h << " mA=" << mA << " mD=" << mD
// << " w=" << w << " lb=" << lb << " tw=" << textwidth
// << " rb=" << rb);
+
+ // Draw the new cached pixmap.
+ drawPixmap(x + lb, y - mA, pm);
+
return textwidth;
}
}
void GuiPainter::rectText(int x, int y, docstring const & str,
- FontInfo const & font, ColorCode back, ColorCode frame)
+ FontInfo const & font, Color back, Color frame)
{
int width;
int ascent;
}
+void GuiPainter::doubleUnderline(FontInfo const & f, int x, int y, int width)
+{
+ FontMetrics const & fm = theFontMetrics(f);
+
+ int const below = max(fm.maxDescent() / 2, 2);
+
+ line(x, y + below, x + width, y + below, f.realColor());
+ line(x, y + below - 2, x + width, y + below - 2, f.realColor());
+}
+
+
void GuiPainter::underline(FontInfo const & f, int x, int y, int width)
{
FontMetrics const & fm = theFontMetrics(f);
}
+void GuiPainter::strikeoutLine(FontInfo const & f, int x, int y, int width)
+{
+ FontMetrics const & fm = theFontMetrics(f);
+
+ int const middle = max((fm.maxHeight() / 4), 1);
+ int const height = middle/3;
+
+ if (height < 2)
+ line(x, y - middle, x + width, y - middle, f.realColor());
+ else
+ fillRectangle(x, y - middle, width, height, f.realColor());
+}
+
+
void GuiPainter::dashedUnderline(FontInfo const & f, int x, int y, int width)
{
FontMetrics const & fm = theFontMetrics(f);
line(x, y + below + n, x + width, y + below + n, f.realColor(), line_onoffdash);
}
+
+void GuiPainter::wavyHorizontalLine(int x, int y, int width, ColorCode col)
+{
+ setQPainterPen(computeColor(col));
+ int const step = 4;
+ int const xend = x + width;
+ int height = 1;
+ //FIXME: I am not sure if Antialiasing gives the best effect.
+ //setRenderHint(Antialiasing, true);
+ while (x < xend) {
+ height = - height;
+ drawLine(x, y - height, x + step, y + height);
+ x += step;
+ drawLine(x, y + height, x + 2, y + height);
+ x += 2;
+ }
+ //setRenderHint(Antialiasing, false);
+}
+
} // namespace frontend
} // namespace lyx