15#include <QGraphicsItem>
16#include <QGraphicsScene>
46 const QList<Point> &points,
53 const double UNIT_LENGTH = 1.0;
61 path = QString (
"yMin=%1 ").arg (yMin);
65 double angle0 = points.at(0).posGraph().x();
66 double angle1 = points.at(1).posGraph().x();
67 double angle2 = points.at(2).posGraph().x();
69 QPointF (angle0, UNIT_LENGTH));
71 QPointF (angle1, UNIT_LENGTH));
73 QPointF (angle2, UNIT_LENGTH));
80 if ((sumAngle0 <= sumAngle1) && (sumAngle0 <= sumAngle2)) {
85 path += QString (
"from 1=%1 through 0 to 2=%2").arg (angle1).arg (angle2);
89 path += QString (
"from 2=%1 through 0 to 1=%2").arg (angle2).arg (angle1);
93 }
else if ((sumAngle1 <= sumAngle0) && (sumAngle1 <= sumAngle2)) {
98 path += QString (
"from 0=%1 through 1 to 2=%2").arg (angle0).arg (angle2);
102 path += QString (
"from 2=%1 through 1 to 0=%2").arg (angle2).arg (angle0);
111 path += QString (
"from 0=%1 through 2 to 1=%2").arg (angle0).arg (angle1);
115 path += QString (
"from 1=%1 through 2 to 0=%2").arg (angle1).arg (angle0);
122 while (xMax < xMin) {
126 path += QString (
" xMax+=%1").arg (thetaPeriod);
132 LOG4CPP_INFO_S ((*
mainCat)) <<
"Checker::adjustPolarAngleRanges path=(" << path.toLatin1().data() <<
")";
150 QPolygonF::const_iterator itr;
151 for (itr = polygon.begin (); itr != polygon.end (); itr++) {
153 const QPointF &pF = *itr;
159 points.push_back (p);
170 documentAxesPointsRequired);
181 <<
" transformation=" << transformation;
188 m_gridLines.clear ();
193 double xFrom = 0, xTo = 0, yFrom = 0, yTo = 0;
197 for (i = 0; i < points.count(); i++) {
198 if (!fourPoints || (points.at(i).isXOnly() && fourPoints)) {
202 xFrom = points.at(i).posGraph().x();
203 xTo = points.at(i).posGraph().x();
206 xFrom = qMin (xFrom, points.at(i).posGraph().x());
207 xTo = qMax (xTo , points.at(i).posGraph().x());
211 if (!fourPoints || (!points.at(i).isXOnly() && fourPoints)) {
215 yFrom = points.at(i).posGraph().y();
216 yTo = points.at(i).posGraph().y();
219 yFrom = qMin (yFrom, points.at(i).posGraph().y());
220 yTo = qMax (yTo , points.at(i).posGraph().y());
227 adjustPolarAngleRanges (modelCoords,
239 m_gridLines.add (factory.
createGridLine (xFrom, yFrom, xFrom, yTo , transformation));
240 m_gridLines.add (factory.
createGridLine (xFrom, yTo , xTo , yTo , transformation));
241 m_gridLines.add (factory.
createGridLine (xTo , yTo , xTo , yFrom, transformation));
242 m_gridLines.add (factory.
createGridLine (xTo , yFrom, xFrom, yFrom, transformation));
249 m_gridLines.setVisible (visible);
257 m_gridLines.setPen (pen);
const int CHECKER_POINTS_WIDTH
const int NUM_AXES_POINTS_2
const QString DUMMY_CURVE_NAME
const int NUM_AXES_POINTS_4
const int NUM_AXES_POINTS_3
DocumentAxesPointsRequired
@ DOCUMENT_AXES_POINTS_REQUIRED_4
#define ENGAUGE_ASSERT(cond)
Drop in replacement for Q_ASSERT.
QColor ColorPaletteToQColor(ColorPalette color)
log4cpp::Category * mainCat
void prepareForDisplay(const QPolygonF &polygon, int pointRadius, const DocumentModelAxesChecker &modelAxesChecker, const DocumentModelCoords &modelCoords, DocumentAxesPointsRequired documentAxesPointsRequired)
Create the polygon from current information, including pixel coordinates, just prior to display.
Checker(QGraphicsScene &scene)
Single constructor for DlgSettingsAxesChecker, which does not have an explicit transformation....
void setVisible(bool visible)
Show/hide this axes checker.
virtual void updateModelAxesChecker(const DocumentModelAxesChecker &modelAxesChecker)
Apply the new DocumentModelAxesChecker, to the points already associated with this object.
Model for DlgSettingsAxesChecker and CmdSettingsAxesChecker.
ColorPalette lineColor() const
Get method for line color.
Model for DlgSettingsCoords and CmdSettingsCoords.
double thetaPeriod() const
Return the period of the theta value for polar coordinates, consistent with CoordThetaUnits.
CoordsType coordsType() const
Get method for coordinates type.
double originRadius() const
Get method for origin radius in polar mode.
Factory class for generating the points, composed of QGraphicsItem objects, along a GridLine.
GridLine * createGridLine(double xFrom, double yFrom, double xTo, double yTo, const Transformation &transformation)
Create grid line, either along constant X/theta or constant Y/radius side.
Class that represents one digitized point. The screen-to-graph coordinate transformation is always ex...
#define LOG4CPP_INFO_S(logger)
double angleFromVectorToVector(const QPointF &vFrom, const QPointF &vTo)
Angle between two vectors. Direction is positive when rotation is about +z vector,...
double angleBetweenVectors(const QPointF &v1, const QPointF &v2)
Angle between two vectors. Direction is unimportant, so result is between 0 to pi radians.