void Plot::drawItems (QPainter *painter, const QRect &rect, const QwtScaleMap map[axisCnt], const QwtPlotPrintFilter &pfilter) const { painter->save(); painter->setRenderHint(QPainter::Antialiasing); for (int i=0; i<QwtPlot::axisCnt; i++){ if (!axisEnabled(i)) continue; drawBreak(painter, rect, map[i], i); } painter->restore(); for (int i=0; i<QwtPlot::axisCnt; i++){ if (!axisEnabled(i)) continue; const ScaleEngine *sc_engine = (const ScaleEngine *)axisScaleEngine(i); /*const QwtScaleEngine *qwtsc_engine=axisScaleEngine(i); const ScaleEngine *sc_engine =dynamic_cast<const ScaleEngine*>(qwtsc_engine); if(sc_engine!=NULL) { */ if (!sc_engine->hasBreak()) continue; QwtScaleMap m = map[i]; int lb = m.transform(sc_engine->axisBreakLeft()); int rb = m.transform(sc_engine->axisBreakRight()); int start = lb, end = rb; if (sc_engine->testAttribute(QwtScaleEngine::Inverted)){ end = lb; start = rb; } QRegion cr(rect); if (i == QwtPlot::xBottom || i == QwtPlot::xTop) painter->setClipRegion(cr.subtracted(QRegion(start, rect.y(), abs(end - start), rect.height())), Qt::IntersectClip); else if (i == QwtPlot::yLeft || i == QwtPlot::yRight) painter->setClipRegion(cr.subtracted(QRegion(rect.x(), end, rect.width(), abs(end - start))), Qt::IntersectClip); //} } QwtPlot::drawItems(painter, rect, map, pfilter); for (int i=0; i<QwtPlot::axisCnt; i++){ if (!axisEnabled(i)) continue; const ScaleDraw *sd = (const ScaleDraw *) axisScaleDraw (i); int majorTicksType = sd->majorTicksStyle(); int minorTicksType = sd->minorTicksStyle(); bool min = (minorTicksType == ScaleDraw::In || minorTicksType == ScaleDraw::Both); bool maj = (majorTicksType == ScaleDraw::In || majorTicksType == ScaleDraw::Both); if (min || maj) drawInwardTicks(painter, rect, map[i], i, min, maj); } }
void ScaleDraw::draw(QPainter *painter, const QPalette& palette) const { drawBreak(painter); QwtScaleDraw::draw(painter, palette); if (!d_plot->isPrinting()) return; painter->save(); QPen pen = painter->pen(); pen.setColor(palette.color(QPalette::Foreground)); painter->setPen(pen); int majLen = d_plot->majorTickLength(); if (d_majTicks >= Both && majLen > 0){ const QwtValueList &ticks = this->scaleDiv().ticks(QwtScaleDiv::MajorTick); for (int i = 0; i < (int)ticks.count(); i++){ const double v = ticks[i]; if (this->scaleDiv().contains(v)) drawInwardTick(painter, v, majLen); } } int minLen = d_plot->minorTickLength(); if (d_minTicks >= Both && minLen > 0){ for (int tickType = QwtScaleDiv::MinorTick; tickType < QwtScaleDiv::MajorTick; tickType++){ const QwtValueList &ticks = this->scaleDiv().ticks(tickType); for (int i = 0; i < (int)ticks.count(); i++){ const double v = ticks[i]; if ( this->scaleDiv().contains(v) ) drawInwardTick(painter, v, minLen); } } } painter->restore(); }
void ScaleDraw::draw(QPainter *painter, const QPalette& palette) const { drawBreak(painter); QwtScaleDraw::draw(painter, palette); }