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