void QwtPlot::printScale(QPainter *painter, int axis, int startDist, int endDist, int baseDist, const QRect &rect) const { if (!d_axisEnabled[axis]) return; QwtScaleDraw::Orientation o; int x, y, w; switch(axis) { case yLeft: { x = rect.right() - baseDist; y = rect.y() + startDist; w = rect.height() - startDist - endDist; o = QwtScaleDraw::Left; break; } case yRight: { x = rect.left() + baseDist; y = rect.y() + startDist; w = rect.height() - startDist - endDist; o = QwtScaleDraw::Right; break; } case xTop: { x = rect.left() + startDist; y = rect.bottom() - baseDist; w = rect.width() - startDist - endDist; o = QwtScaleDraw::Top; break; } case xBottom: { x = rect.left() + startDist; y = rect.top() + baseDist; w = rect.width() - startDist - endDist; o = QwtScaleDraw::Bottom; break; } default: return; } const QwtScale *scale = d_scale[axis]; scale->drawTitle(painter, o, rect); painter->save(); QPen pen(painter->pen()); pen.setColor( scale->palette().color(QPalette::Active, QColorGroup::Foreground)); painter->setPen(pen); painter->setFont(scale->font()); QwtScaleDraw *sd = (QwtScaleDraw *)scale->scaleDraw(); int xSd = sd->x(); int ySd = sd->y(); int lengthSd = sd->length(); sd->setGeometry(x, y, w, o); sd->draw(painter); sd->setGeometry(xSd, ySd, lengthSd, o); // reset previous values painter->restore(); }