namespace lyx {
namespace frontend {
+
+const float Painter::thin_line = 0.0;
GuiPainter::GuiPainter(QPaintDevice * device)
: QPainter(device), Painter(),
// new QPainter has default QPen:
current_color_ = guiApp->colorCache().get(Color_black);
current_ls_ = line_solid;
- current_lw_ = line_thin;
+ current_lw_ = thin_line;
}
void GuiPainter::setQPainterPen(QColor const & col,
- Painter::line_style ls, Painter::line_width lw)
+ Painter::line_style ls, float lw)
{
if (col == current_color_ && ls == current_ls_ && lw == current_lw_)
return;
case line_onoffdash: pen.setStyle(Qt::DotLine); break;
}
- switch (lw) {
- case line_thin: pen.setWidth(0); break;
- case line_thick: pen.setWidth(3); break;
- }
+ pen.setWidthF(lw);
setPen(pen);
}
sig.append(QChar(static_cast<short>(f.series())));
sig.append(QChar(static_cast<short>(f.realShape())));
sig.append(QChar(static_cast<short>(f.size())));
- sig.append(QChar(static_cast<short>(f.color())));
+ Color const & color = f.realColor();
+ sig.append(QChar(static_cast<short>(color.baseColor)));
+ sig.append(QChar(static_cast<short>(color.mergeColor)));
if (!monochrome_min_.empty()) {
QColor const & min = monochrome_min_.top();
QColor const & max = monochrome_max_.top();
void GuiPainter::leaveMonochromeMode()
{
- LASSERT(!monochrome_min_.empty(), /**/);
+ LASSERT(!monochrome_min_.empty(), return);
monochrome_min_.pop();
monochrome_max_.pop();
}
void GuiPainter::line(int x1, int y1, int x2, int y2,
Color col,
line_style ls,
- line_width lw)
+ float lw)
{
if (!isDrawingEnabled())
return;
void GuiPainter::lines(int const * xp, int const * yp, int np,
Color col,
line_style ls,
- line_width lw)
+ float lw)
{
if (!isDrawingEnabled())
return;
void GuiPainter::rectangle(int x, int y, int w, int h,
Color col,
line_style ls,
- line_width lw)
+ float lw)
{
if (!isDrawingEnabled())
return;
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;
}
// 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;
}
+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; }