KChart

KChartCartesianGrid.h
1 /*
2  * SPDX-FileCopyrightText: 2001-2015 Klaralvdalens Datakonsult AB. All rights reserved.
3  *
4  * This file is part of the KD Chart library.
5  *
6  * SPDX-License-Identifier: GPL-2.0-or-later
7  */
8 
9 #ifndef KCHARTCARTESIANGRID_H
10 #define KCHARTCARTESIANGRID_H
11 
12 #include "KChartCartesianCoordinatePlane.h"
13 #include "KChartAbstractGrid.h"
14 
15 namespace KChart {
16 
17  class PaintContext;
18  class CartesianCoordinatePlane;
19 
20  /**
21  * \internal
22  *
23  * \brief Class for the grid in a cartesian plane.
24  *
25  * The CartesianGrid interface is used
26  * for calculating and for drawing
27  * the horizontal grid lines, and the vertical grid lines
28  * of a cartesian coordinate plane.
29  */
30  class CartesianGrid : public AbstractGrid
31  {
32  public:
33  CartesianGrid();
34  ~CartesianGrid() override;
35 
36  int minimalSteps() const;
37  void setMinimalSteps(int minsteps);
38 
39  int maximalSteps() const;
40  void setMaximalSteps(int maxsteps);
41 
42  void drawGrid( PaintContext* context ) override;
43 
44  private:
45  int m_minsteps;
46  int m_maxsteps;
47 
48  DataDimensionsList calculateGrid(
49  const DataDimensionsList& rawDataDimensions ) const override;
50 
51  /**
52  * Helper function called by calculateGrid() to calculate the grid of one dimension.
53  *
54  * Classes derived from CartesianGrid can overwrite calculateGridXY() if they need
55  * a special way of calculating the start or end or step width of their grid lines.
56  *
57  * \param adjustLower If true, the function adjusts the start value
58  * so it matches the position of a grid line, if false the start value is
59  * the raw data dimension start value.
60  * \param adjustUpper If true, the function adjusts the end value
61  * so it matches the position of a grid line, if false the end value is
62  * the raw data dimension end value.
63  */
64  virtual DataDimension calculateGridXY(
65  const DataDimension& rawDataDimension,
66  Qt::Orientation orientation,
67  bool adjustLower, bool adjustUpper ) const;
68 
69  /**
70  * Helper function called by calculateGridXY().
71  *
72  * Classes derived from CartesianGrid can overwrite calculateStepWidth() if they need
73  * a way of calculating the step width, based upon given start/end values
74  * for their horizontal or vertical grid lines which is different from the default
75  * implementation.
76  *
77  * \note The CartesianGrid class tries to keep the displayed range as close to
78  * the raw data range as possible, so in most cases there should be no reason
79  * to change the default implementation: Using
80  * KChart::GridAttributes::setGridGranularitySequence() should be sufficient.
81  *
82  * \param start The raw start value of the data range.
83  * \param end The raw end value of the data range.
84  * \param granularities The list of allowed granularities.
85  * \param adjustLower If true, the function adjusts the start value
86  * so it matches the position of a grid line, if false the start value is
87  * left as it is, in any case the value is adjusted for internal calculation only.
88  * \param adjustUpper If true, the function adjusts the end value
89  * so it matches the position of a grid line, if false the end value is
90  * left as it is, in any case the value is adjusted for internal calculation only.
91  *
92  * \returns stepWidth: One of the values from the granularities
93  * list, optionally multiplied by a positive (or negative, resp.)
94  * power of ten. subStepWidth: The matching width for sub-grid lines.
95  */
96  virtual void calculateStepWidth(
97  qreal start, qreal end,
98  const QList<qreal>& granularities,
99  Qt::Orientation orientation,
100  qreal& stepWidth, qreal& subStepWidth,
101  bool adjustLower, bool adjustUpper ) const;
102  };
103 
104 }
105 
106 #endif
Helper class for one dimension of data, e.g.
Stores information about painting diagrams.
Class for the grid in a cartesian plane.
void drawGrid(PaintContext *context) override
Doing the actual drawing.
Orientation
Global namespace.
Abstract base class for grid classes: cartesian, polar, ...
This file is part of the KDE documentation.
Documentation copyright © 1996-2021 The KDE developers.
Generated on Fri Nov 26 2021 22:38:57 by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.