Example #1
0
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();
}
Example #3
0
void ScaleDraw::draw(QPainter *painter, const QPalette& palette) const
{
	drawBreak(painter);
	QwtScaleDraw::draw(painter, palette);
}