12#include "KDChartPolarCoordinatePlane_p.h"
18#include "KDChartPainterSaver_p.h"
29#include <KDABLibFakes>
46void PolarCoordinatePlane::init()
54 "PolarCoordinatePlane::addDiagram",
"Only polar"
55 "diagrams can be added to a polar coordinate plane!");
63 if (
d->coordinateTransformations.size() !=
diags.size()) {
68 Q_ASSERT(!
d->coordinateTransformations.isEmpty());
72 ctx.setCoordinatePlane(
this);
81 for (
int i = 0;
i <
diags.size();
i++) {
82 d->currentTransformation = &(
d->coordinateTransformations[
i]);
95 d->currentTransformation =
nullptr;
103 d->currentTransformation = &
d->coordinateTransformations.first();
104 d->grid->drawGrid(&
ctx);
107 for (
int i = 0;
i <
diags.size();
i++) {
108 d->currentTransformation = &(
d->coordinateTransformations[
i]);
118 d->currentTransformation =
nullptr;
130 d->initialResizeEventReceived =
true;
146 :
d->coordinateTransformations.front().zoom;
149 d->coordinateTransformations.clear();
150 const auto constDiagrams =
diagrams();
182 Q_ASSERT_X(
d->currentTransformation !=
nullptr,
"PolarCoordinatePlane::translate",
183 "Only call translate() from within paint().");
189 Q_ASSERT_X(
d->currentTransformation !=
nullptr,
"PolarCoordinatePlane::translate",
190 "Only call translate() from within paint().");
191 return d->currentTransformation->translatePolar(
diagramPoint);
196 Q_ASSERT_X(
d->currentTransformation !=
nullptr,
"PolarCoordinatePlane::angleUnit",
197 "Only call angleUnit() from within paint().");
198 return d->currentTransformation->angleUnit;
203 Q_ASSERT_X(
d->currentTransformation !=
nullptr,
"PolarCoordinatePlane::radiusUnit",
204 "Only call radiusUnit() from within paint().");
205 return d->currentTransformation->radiusUnit;
210 if (
d->initialResizeEventReceived)
217 "setStartPosition() needs a diagram to be associated to the plane.");
219 it !=
d->coordinateTransformations.end();
222 trans.startPosition = degrees;
228 return d->coordinateTransformations.isEmpty()
230 :
d->coordinateTransformations.first().startPosition;
235 return d->coordinateTransformations.isEmpty()
242 return d->coordinateTransformations.isEmpty()
244 :
d->coordinateTransformations.first().zoom.yFactor;
256 it !=
d->coordinateTransformations.end();
266 it !=
d->coordinateTransformations.end();
275 return d->coordinateTransformations.isEmpty()
277 :
QPointF(
d->coordinateTransformations.first().zoom.xCenter,
d->coordinateTransformations.first().zoom.yCenter);
283 it !=
d->coordinateTransformations.end();
287 trans.zoom.yCenter = center.y();
305 d->gridAttributesCircular = a;
307 d->gridAttributesSagittal = a;
308 setHasOwnGridAttributes(circular,
true);
310 Q_EMIT propertiesChanged();
316 setHasOwnGridAttributes(circular,
false);
323 if (hasOwnGridAttributes(circular)) {
325 return d->gridAttributesCircular;
327 return d->gridAttributesSagittal;
329 return globalGridAttributes();
338 const qreal offset = temp.
y();
339 referencePointAtTop.
setX(referencePointAtTop.
x() - offset);
345void KDChart::PolarCoordinatePlane::setHasOwnGridAttributes(
346 bool circular,
bool on)
349 d->hasOwnGridAttributesCircular = on;
351 d->hasOwnGridAttributesSagittal = on;
352 Q_EMIT propertiesChanged();
359 ?
d->hasOwnGridAttributesCircular
360 :
d->hasOwnGridAttributesSagittal;
QRect areaGeometry() const override
Base class common for all coordinate planes, CartesianCoordinatePlane, PolarCoordinatePlane,...
virtual void addDiagram(AbstractDiagram *diagram)
AbstractDiagramList diagrams()
AbstractDiagram * diagram()
QRect geometry() const override
AbstractDiagram defines the interface for diagram classes.
void layoutChanged(AbstractDiagram *)
Base class for diagrams based on a polar coordinate system.
A chart with one or more diagrams.
A set of attributes controlling the appearance of grids.
Stores information about painting diagrams.
void setPainter(QPainter *painter)
const GridAttributes gridAttributes(bool circular) const
void setZoomFactorY(qreal factor) override
void layoutDiagrams() override
qreal startPosition() const
void addDiagram(AbstractDiagram *diagram) override
~PolarCoordinatePlane() override
void setZoomCenter(const QPointF ¢er) override
void setZoomFactorX(qreal factor) override
QPointF zoomCenter() const override
void resizeEvent(QResizeEvent *)
void adjustZoomAndRepaint()
void paint(QPainter *) override
DataDimensionsList getDataDimensionsList() const override
qreal zoomFactorX() const override
qreal zoomFactorY() const override
void setStartPosition(qreal degrees)
Specify the rotation of the coordinate plane.
const QPointF translate(const QPointF &diagramPoint) const override
bool hasOwnGridAttributes(bool circular) const
void setZoomFactors(qreal factorX, qreal factorY) override
PolarCoordinatePlane(Chart *parent=nullptr)
void setGridAttributes(bool circular, const GridAttributes &)
void resetGridAttributes(bool circular)
void slotLayoutChanged(AbstractDiagram *diagram)
const QPointF translatePolar(const QPointF &diagramPoint) const
PolarDiagram defines a common polar diagram.
void paint(PaintContext *paintContext) override
QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
T qobject_cast(QObject *object)
void setBottomRight(const QPointF &position)
void setTopLeft(const QPointF &position)