00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef __KDCHARTAXISPARAMS_H__
00030 #define __KDCHARTAXISPARAMS_H__
00031
00032 #include <qfont.h>
00033 #include <qcolor.h>
00034 #include <qmap.h>
00035 #include <qobject.h>
00036 #include <qtextstream.h>
00037 #include <qstringlist.h>
00038 #include <qdatetime.h>
00039 #include <qvariant.h>
00040
00041 #include "KDChartGlobal.h"
00042 #include "KDChartEnums.h"
00043
00044 class KDChartParams;
00045
00052 #define KDCHART_AXIS_LABELS_AUTO_LIMIT QVariant( 140319.64 )
00053
00054
00061 #define KDCHART_AXIS_LABELS_AUTO_DELTA 140319.64
00062
00071 #define KDCHART_AXIS_LABELS_AUTO_LEAVEOUT 14364
00072
00077 #define KDCHART_AXIS_LABELS_AUTO_DATETIME_FORMAT "AUTO"
00078
00086 #define KDCHART_AXIS_LABELS_AUTO_DIGITS 14364
00087
00096 #define KDCHART_DEFAULT_AXIS_GRID_COLOR QColor( 0xA0, 0xA0, 0xA0 )
00097
00104 #define KDCHART_AXIS_GRID_AUTO_LINEWIDTH 14364
00105
00112 #define KDCHART_AXIS_IGNORE_EMPTY_INNER_SPAN 1
00113
00121 #define KDCHART_DONT_CHANGE_EMPTY_INNER_SPAN_NOW -2
00122
00123
00124
00125
00132 class KDCHART_EXPORT KDChartAxisParams : public QObject
00133 {
00134 Q_OBJECT
00135 Q_ENUMS(AxisType)
00136 Q_ENUMS(AxisPos)
00137 Q_ENUMS(AxisAreaMode)
00138 Q_ENUMS(AxisCalcMode)
00139 Q_ENUMS(LabelsFromDataRow)
00140 Q_ENUMS(ValueScale)
00141
00142
00143 Q_ENUMS( PenStyle )
00144
00145 public:
00146
00147 enum AxisType { AxisTypeUnknown,
00148 AxisTypeEAST,
00149 AxisTypeNORTH,
00150 AxisUP };
00151
00152 public slots:
00153 void setAxisType( AxisType axisType );
00154
00155
00156 AxisType axisType() const { return _axisType; }
00157 static QString axisTypeToString( AxisType type );
00158 static AxisType stringToAxisType( const QString& type );
00159
00160 public:
00161
00162
00163
00164 enum AxisPos { AxisPosSTART = 0,
00165
00166 AxisPosBottom = 0,
00167 AxisPosSagittal = 0,
00168 AxisPosSaggital = 0,
00169 AxisPosLeft = 1,
00170 AxisPosCircular = 1,
00171 AxisPosLowerRightEdge = 2,
00172
00173 AxisPosTop = 3,
00174 AxisPosRight = 4,
00175 AxisPosLowerLeftEdge = 5,
00176
00177
00178
00179 AxisPosAdditionalsSTART = 6,
00180
00181 AxisPosBottom2 = 6,
00182 AxisPosLeft2 = 7,
00183 AxisPosLowerRightEdge2 = 8,
00184
00185 AxisPosTop2 = 9,
00186 AxisPosRight2 = 10,
00187 AxisPosLowerLeftEdge2 = 11,
00188
00189
00190 AxisPosEND = 11 };
00191
00192 public slots:
00193 static AxisPos basicAxisPos( uint pos );
00194 void setAxisVisible( bool axisVisible );
00195 bool axisVisible() const;
00196
00197 public:
00198 enum AxisAreaMode { AxisAreaModeFixedSize,
00199 AxisAreaModeAutoSize,
00200 AxisAreaModeMinMaxSize };
00201
00202 public slots:
00203 void setAxisAreaMode( AxisAreaMode axisAreaMode );
00204 AxisAreaMode axisAreaMode() const;
00205 static QString axisAreaModeToString( AxisAreaMode mode );
00206 static AxisAreaMode stringToAxisAreaMode( const QString& type );
00207 void setAxisAreaMin( int axisAreaMin );
00208
00209
00210 int axisAreaMin() const { return _axisAreaMin; }
00211 void setAxisUseAvailableSpace( int axisUseAvailableSpaceFrom,
00212 int axisUseAvailableSpaceTo );
00213 int axisUseAvailableSpaceFrom() const { return _axisUseAvailableSpaceFrom; }
00214 int axisUseAvailableSpaceTo() const { return _axisUseAvailableSpaceTo; }
00215 void setAxisAreaMax( int axisAreaMax );
00216 int axisAreaMax() const { return _axisAreaMax; }
00217 void setAxisArea( AxisAreaMode axisAreaMode,
00218 int axisAreaMin,
00219 int axisAreaMax );
00220
00221 public:
00222 enum AxisCalcMode { AxisCalcLinear, AxisCalcLogarithmic };
00223
00224 public slots:
00225 void setAxisCalcMode( AxisCalcMode axisCalcMode );
00226 AxisCalcMode axisCalcMode() const { return _axisCalcMode; }
00227 static QString axisCalcModeToString( AxisCalcMode mode );
00228 static AxisCalcMode stringToAxisCalcMode( const QString& type );
00229 void setIsometricReferenceAxis( uint isoRefAxis );
00230 uint isometricReferenceAxis() const { return _axisIsoRefAxis; }
00231 void setAxisTrueAreaSize( int axisTrueAreaSize ) { _axisTrueAreaSize = axisTrueAreaSize; }
00232 int axisTrueAreaSize() const { return _axisTrueAreaSize; }
00233 void setAxisTrueAreaRect( const QRect& axisTrueAreaRect ) { _axisTrueAreaRect = axisTrueAreaRect; }
00234 QRect axisTrueAreaRect() const { return _axisTrueAreaRect; }
00235 void setAxisLineVisible( bool axisLineVisible );
00236 bool axisLineVisible() const { return _axisLineVisible; }
00237 void setAxisLineWidth( int axisLineWidth );
00238 int axisLineWidth() const { return _axisLineWidth; }
00239 void setAxisTrueLineWidth( int axisTrueLineWidth ) { _axisTrueLineWidth = axisTrueLineWidth; }
00240 int axisTrueLineWidth() const { return _axisTrueLineWidth; }
00241 void setAxisLineColor( QColor axisLineColor );
00242 QColor axisLineColor() const { return _axisLineColor; }
00243
00244 void setAxisShowFractionalValuesDelimiters( bool axisShowFractValDelim );
00245 bool axisShowFractionalValuesDelimiters() const { return _axisShowFractionalValuesDelimiters; }
00246 void setAxisShowGrid( bool axisShowGrid );
00247 bool axisShowGrid() const { return _axisShowGrid; }
00248 void setAxisGridStyle( PenStyle axisGridStyle );
00249 PenStyle axisGridStyle() const { return _axisGridStyle; }
00250 void setAxisGridColor( QColor axisGridColor );
00251 QColor axisGridColor() const { return _axisGridColor; }
00252 void setAxisGridLineWidth( int axisGridLineWidth );
00253 int axisGridLineWidth() const { return _axisGridLineWidth; }
00254
00255 void setAxisShowSubDelimiters( bool axisShowSubDelimiters );
00256 bool axisShowSubDelimiters() const { return _axisShowSubDelimiters; }
00257 void setAxisGridSubStyle( PenStyle axisGridSubStyle );
00258 PenStyle axisGridSubStyle() const { return _axisGridSubStyle; }
00259 void setAxisGridSubColor( QColor axisGridSubColor );
00260 QColor axisGridSubColor() const { return _axisGridSubColor; }
00261 void setAxisGridSubLineWidth( int axisGridSubLineWidth );
00262 int axisGridSubLineWidth() const { return _axisGridSubLineWidth; }
00263
00264 void setAxisZeroLineColor( QColor axisZeroLineColor );
00265 QColor axisZeroLineColor() const { return _axisZeroLineColor; }
00266
00267 void setAxisLabelsVisible( bool axisLabelsVisible );
00268 bool axisLabelsVisible() const { return _axisLabelsVisible; }
00269 void setAxisLabelsTouchEdges( bool axisLabelsTouchEdges );
00270 bool axisLabelsTouchEdges() const { return _axisLabelsTouchEdges; }
00271 void setAxisLabelsFont( QFont axisLabelsFont, bool useFontSize );
00272 QFont axisLabelsFont() const { return _axisLabelsFont; }
00273 void setAxisLabelsFontUseRelSize( bool axisLabelsFontUseRelSize );
00274 bool axisLabelsFontUseRelSize() const { return _axisLabelsFontUseRelSize; }
00275 void setAxisLabelsFontRelSize( int axisLabelsFontRelSize );
00276 int axisLabelsFontRelSize() const { return _axisLabelsFontRelSize; }
00277 void setAxisLabelsFontMinSize( int axisLabelsFontMinSize ) { _axisLabelsFontMinSize = axisLabelsFontMinSize; }
00278 int axisLabelsFontMinSize() const { return _axisLabelsFontMinSize; }
00279 void setAxisLabelsDontShrinkFont( bool labelsDontShrinkFont ) { _axisLabelsDontShrinkFont = labelsDontShrinkFont; }
00280 bool axisLabelsDontShrinkFont() const { return _axisLabelsDontShrinkFont; }
00281 void setAxisLabelsDontAutoRotate( bool labelsDontAutoRotate ) { _axisLabelsDontAutoRotate = labelsDontAutoRotate; }
00282 bool axisLabelsDontAutoRotate() const { return _axisLabelsDontAutoRotate; }
00283 void setAxisLabelsRotation( int rotation ) { _axisLabelsRotation = rotation; }
00284 int axisLabelsRotation() const { return _axisLabelsRotation; }
00285 void setAxisLabelsColor( QColor axisLabelsColor );
00286 QColor axisLabelsColor() const { return _axisLabelsColor; }
00287
00288 void setAxisLabelsCalc( int divPow10 = 0,
00289 int digitsBehindComma = KDCHART_AXIS_LABELS_AUTO_DIGITS );
00290 int axisLabelsDivPow10() const { return _axisLabelsDivPow10; }
00291 int axisLabelsDigitsBehindComma() const { return _axisDigitsBehindComma; }
00292 void setAxisLabelsRadix( const QString& decimalPoint,
00293 const QString& thousandsPoint );
00294 QString axisLabelsDecimalPoint() const { return _axisLabelsDecimalPoint; }
00295 QString axisLabelsThousandsPoint() const { return _axisLabelsThousandsPoint; }
00296
00297 void setAxisLabelsNotation( KDChartEnums::NumberNotation notation );
00298 KDChartEnums::NumberNotation axisLabelsNotation() const { return _axisLabelsNotation; }
00299
00300 void setAxisLabelsFormat( const QString& prefix = "",
00301 const QString& postfix = "",
00302 const int& totalLen = 0,
00303 const QChar& padFill = ' ',
00304 const bool& blockAlign = true );
00305 QString axisLabelsPrefix() const { return _axisLabelsPrefix; }
00306 QString axisLabelsPostfix() const { return _axisLabelsPostfix; }
00307 int axisLabelsTotalLen() const { return _axisLabelsTotalLen; }
00308 QChar axisLabelsPadFill() const { return _axisLabelsPadFill; }
00309 bool axisLabelsBlockAlign() const { return _axisLabelsBlockAlign; }
00310
00311 public:
00312 enum LabelsFromDataRow { LabelsFromDataRowYes,
00313 LabelsFromDataRowNo,
00314 LabelsFromDataRowGuess };
00315
00316 public slots:
00317 static QString labelsFromDataRowToString( LabelsFromDataRow mode );
00318 static LabelsFromDataRow stringToLabelsFromDataRow( const QString& type );
00319
00320 public:
00321 enum ValueScale { ValueScaleNumerical = 0,
00322 ValueScaleSecond = 20,
00323 ValueScaleMinute = 30,
00324 ValueScaleHour = 40,
00325 ValueScaleDay = 50,
00326 ValueScaleWeek = 60,
00327 ValueScaleMonth = 70,
00328 ValueScaleQuarter = 80,
00329 ValueScaleYear = 90 };
00330
00331 public slots:
00332 void setAxisValues( bool axisSteadyValueCalc = true,
00333 const QVariant& axisValueStart = KDCHART_AXIS_LABELS_AUTO_LIMIT,
00334 const QVariant& axisValueEnd = KDCHART_AXIS_LABELS_AUTO_LIMIT,
00335 double axisValueDelta = KDCHART_AXIS_LABELS_AUTO_DELTA,
00336 int axisDigitsBehindComma = KDCHART_AXIS_LABELS_AUTO_DIGITS,
00337 int axisMaxEmptyInnerSpan = KDCHART_DONT_CHANGE_EMPTY_INNER_SPAN_NOW,
00338 LabelsFromDataRow takeLabelsFromDataRow = LabelsFromDataRowNo,
00339 int labelTextsDataRow = 0,
00340 QStringList* axisLabelStringList = 0,
00341 QStringList* axisShortLabelsStringList = 0,
00342 int axisValueLeaveOut = KDCHART_AXIS_LABELS_AUTO_LEAVEOUT,
00343 ValueScale axisValueDeltaScale = ValueScaleNumerical );
00344
00345
00346 void setAxisValueStartIsExact( bool isExactValue=true ) { _axisValueStartIsExact = isExactValue; }
00347 bool axisValueStartIsExact() const { return _axisValueStartIsExact; }
00348 void setAxisValueStart( const QVariant& axisValueStart ) { _axisValueStart = axisValueStart; }
00349 QVariant axisValueStart() const { return _axisValueStart; }
00350 void setAxisValueEnd( const QVariant& axisValueEnd ) {_axisValueEnd = axisValueEnd; }
00351 QVariant axisValueEnd() const { return _axisValueEnd; }
00352 void setAxisValueDelta( const double axisValueDelta,
00353 ValueScale scale = ValueScaleNumerical );
00354 double axisValueDelta() const { return _axisValueDelta; }
00355 ValueScale axisValueDeltaScale() const { return _axisValueDeltaScale; }
00356 void setAxisValueLeaveOut( const int leaveOut ) { _axisValueLeaveOut = leaveOut; }
00357 int axisValueLeaveOut() const { return _axisValueLeaveOut; }
00358 void setAxisValuesDecreasing( bool valuesDecreasing = true )
00359 {
00360 _axisValuesDecreasing = valuesDecreasing;
00361 }
00362 bool axisValuesDecreasing() const { return _axisValuesDecreasing; }
00363 void setTrueAxisDeltaPixels( double nDeltaPixels ) { _trueAxisDeltaPixels = nDeltaPixels; }
00364 double trueAxisDeltaPixels() const { return _trueAxisDeltaPixels; }
00365 void setTrueAxisLowHighDelta( double nLow, double nHigh, double nDelta );
00366 double trueAxisLow() const { return _trueLow; }
00367 double trueAxisHigh() const { return _trueHigh; }
00368 double trueAxisDelta() const { return _trueDelta; }
00369 void setTrueAxisDtLowHighDeltaScale( QDateTime dtLow, QDateTime dtHigh,
00370 ValueScale dtDeltaScale );
00371 void setTrueAxisDtLow( QDateTime dtLow ) { _trueDtLow = dtLow; }
00372 void setTrueAxisDtHigh( QDateTime dtHigh ) { _trueDtHigh = dtHigh; }
00373 void setTrueAxisDtScale( ValueScale scale ) { _trueDtDeltaScale = scale; }
00374 QDateTime trueAxisDtLow() const { return _trueDtLow; }
00375 QDateTime trueAxisDtHigh() const { return _trueDtHigh; }
00376 ValueScale trueAxisDtDeltaScale() const { return _trueDtDeltaScale; }
00377 void setAxisZeroLineStart( double x, double y );
00378 double axisZeroLineStartX() const { return _axisZeroLineStartX; }
00379 double axisZeroLineStartY() const { return _axisZeroLineStartY; }
00380 void setAxisDtLowPos( double x, double y );
00381 double axisDtLowPosX() const { return _axisDtLowPosX; }
00382 double axisDtLowPosY() const { return _axisDtLowPosY; }
00383 void setAxisDtHighPos( double x, double y );
00384 double axisDtHighPosX() const { return _axisDtHighPosX; }
00385 double axisDtHighPosY() const { return _axisDtHighPosY; }
00386 void setAxisDigitsBehindComma( const int digits ) { _axisDigitsBehindComma = digits; }
00387 int axisDigitsBehindComma() const { return _axisDigitsBehindComma; }
00388 void setAxisLabelsDateTimeFormat( const QString& format ) { _axisLabelsDateTimeFormat = format; }
00389 QString axisLabelsDateTimeFormat() const { return _axisLabelsDateTimeFormat; }
00390 void setAxisMaxEmptyInnerSpan( const int maxEmpty ) { _axisMaxEmptyInnerSpan = maxEmpty; }
00391 int axisMaxEmptyInnerSpan() const { return _axisMaxEmptyInnerSpan; }
00392 void setLabelTextsFormDataRow( int row, LabelsFromDataRow mode );
00393 LabelsFromDataRow axisLabelTextsFormDataRow() const { return _takeLabelsFromDataRow; }
00394 int labelTextsDataRow() const { return _labelTextsDataRow; }
00395 void setAxisLabelStringLists( QStringList* axisLabelStringList,
00396 QStringList* axisShortLabelStringList,
00397 const QString& valueStart = QString::null,
00398 const QString& valueEnd = QString::null );
00399 QStringList axisLabelStringList() const { return _axisLabelStringList; }
00400 uint axisLabelStringCount() const { return _axisLabelStringList.count(); }
00401 QStringList axisShortLabelsStringList() const { return _axisShortLabelsStringList; }
00402 uint axisShortLabelsStringCount() const { return _axisShortLabelsStringList.count(); }
00403 const QStringList* axisLabelTexts() const { return _axisLabelTextsDirty ? 0 : &_axisLabelTexts; }
00404 void setAxisLabelTexts( const QStringList* axisLabelTexts );
00405 void setAxisLabelTextsDirty( bool axisLabelTextsDirty ) { _axisLabelTextsDirty = axisLabelTextsDirty; }
00406 bool axisLabelTextsDirty() const { return _axisLabelTextsDirty; }
00407 void setAxisFirstLabelText( const QString& axisFirstLabelText = QString() );
00408 void setAxisLastLabelText( const QString& axisLastLabelText = QString() );
00409 QString axisFirstLabelText() const { return _axisFirstLabelText; }
00410 QString axisLastLabelText() const { return _axisLastLabelText; }
00411 bool hasAxisFirstLabelText() const { return !_axisFirstLabelText.isNull(); }
00412 bool hasAxisLastLabelText() const { return !_axisLastLabelText.isNull(); }
00413 void setAxisSteadyValueCalc( bool axisSteadyValueCalc ) { _axisSteadyValueCalc = axisSteadyValueCalc; }
00414 bool axisSteadyValueCalc() const { return _axisSteadyValueCalc; }
00415
00416 public:
00417 KDChartAxisParams();
00418 virtual ~KDChartAxisParams();
00419 KDChartAxisParams& operator=( const KDChartAxisParams& R );
00420 static void deepCopy( KDChartAxisParams& D, const KDChartAxisParams& R );
00421 friend QTextStream& operator<<( QTextStream& s, const KDChartParams& p );
00422 friend QTextStream& operator>>( QTextStream& s, KDChartParams& p );
00423 friend class KDChartParams;
00424
00425 signals:
00426
00427
00428 void changed();
00429
00430 private:
00431
00432 AxisType _axisType;
00433 bool _axisVisible;
00434 bool _axisLabelsTouchEdges;
00435 AxisAreaMode _axisAreaMode;
00436 int _axisUseAvailableSpaceFrom;
00437 int _axisUseAvailableSpaceTo;
00438 int _axisAreaMin;
00439 int _axisAreaMax;
00440 AxisCalcMode _axisCalcMode;
00441 uint _axisIsoRefAxis;
00442 int _axisTrueAreaSize;
00443 QRect _axisTrueAreaRect;
00444 bool _axisLineVisible;
00445 int _axisLineWidth;
00446 int _axisTrueLineWidth;
00447 QColor _axisLineColor;
00448
00449 bool _axisShowFractionalValuesDelimiters;
00450 bool _axisShowGrid;
00451 QColor _axisGridColor;
00452 int _axisGridLineWidth;
00453 PenStyle _axisGridStyle;
00454
00455 bool _axisShowSubDelimiters;
00456 QColor _axisGridSubColor;
00457 int _axisGridSubLineWidth;
00458 PenStyle _axisGridSubStyle;
00459
00460 QColor _axisZeroLineColor;
00461 bool _axisLabelsVisible;
00462 QFont _axisLabelsFont;
00463 bool _axisLabelsFontUseRelSize;
00464 int _axisLabelsFontRelSize;
00465 int _axisLabelsFontMinSize;
00466 bool _axisLabelsDontShrinkFont;
00467 bool _axisLabelsDontAutoRotate;
00468 int _axisLabelsRotation;
00469 QColor _axisLabelsColor;
00470
00471 bool _axisSteadyValueCalc;
00472 bool _axisValueStartIsExact;
00473 QVariant _axisValueStart;
00474 QVariant _axisValueEnd;
00475 double _axisValueDelta;
00476 ValueScale _axisValueDeltaScale;
00477 int _axisValueLeaveOut;
00478 bool _axisValuesDecreasing;
00479 double _trueAxisDeltaPixels;
00480 double _trueLow;
00481 double _trueHigh;
00482 double _trueDelta;
00483 QDateTime _trueDtLow;
00484 QDateTime _trueDtHigh;
00485 ValueScale _trueDtDeltaScale;
00486 double _axisZeroLineStartX;
00487 double _axisZeroLineStartY;
00488 double _axisDtLowPosX;
00489 double _axisDtLowPosY;
00490 double _axisDtHighPosX;
00491 double _axisDtHighPosY;
00492 int _axisDigitsBehindComma;
00493 QString _axisLabelsDateTimeFormat;
00494 int _axisMaxEmptyInnerSpan;
00495 LabelsFromDataRow _takeLabelsFromDataRow;
00496 int _labelTextsDataRow;
00497 QStringList _axisLabelStringList;
00498 QStringList _axisShortLabelsStringList;
00499 QStringList _axisLabelTexts;
00500 bool _axisLabelTextsDirty;
00501 QString _axisFirstLabelText;
00502 QString _axisLastLabelText;
00503
00504 int _axisLabelsDivPow10;
00505 QString _axisLabelsDecimalPoint;
00506 QString _axisLabelsThousandsPoint;
00507 KDChartEnums::NumberNotation _axisLabelsNotation;
00508 QString _axisLabelsPrefix;
00509 QString _axisLabelsPostfix;
00510 int _axisLabelsTotalLen;
00511 QChar _axisLabelsPadFill;
00512 bool _axisLabelsBlockAlign;
00513 };
00514
00515 #endif