int ScalePicker::maxLabelWidth(const QwtScale *scale) const
{
	QFontMetrics fm(scale->font());
	const QwtScaleDraw * scaleDraw=scale->scaleDraw ();
	const QwtScaleDiv 	scaleDiv=scaleDraw->scaleDiv();
	const double step_eps = 1.0e-6;
    int maxWidth = 0;

    for (uint i = 0; i < scaleDiv.majCnt(); i++)
    {
        double val = scaleDiv.majMark(i);

        // correct rounding errors if val = 0
        if ((!scaleDiv.logScale()) 
            && (qwtAbs(val) < step_eps * qwtAbs(scaleDiv.majStep())))
        {
            val = 0.0;
        }

        const int w = fm.boundingRect(scaleDraw->label(val)).width();
        if ( w > maxWidth )
            maxWidth = w;
    }

    return maxWidth;
}
int ScalePicker::maxLabelHeight(const QwtScale *scale) const
{
	QFontMetrics fm(scale->font());
	const QwtScaleDraw * scaleDraw=scale->scaleDraw ();
	const QwtScaleDiv 	scaleDiv=scaleDraw->scaleDiv();
   
	int maxHeight = 0;

    for (uint i = 0; i < scaleDiv.majCnt(); i++)
    {
        double val = scaleDiv.majMark(i);

        const int w = fm.boundingRect(scaleDraw->label(val)).height();
        if ( w > maxHeight )
            maxHeight = w;
    }
	
    return maxHeight;
}