mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-30 22:20:21 +00:00
84ebd1d67a
Setting the profile and grayscale mode of the profile via functions is from a time when the same profile widget was used for printing and the UI. It is simpler to set the mode when constructing the object and not deal with changes. To prepare for this scenario, take the flag at construction time. This still keeps the callers as-is. These will be adapted later. Logically, then the printFlag also has to be set in DiveCartesianAxis at construction time. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
97 lines
3.1 KiB
C++
97 lines
3.1 KiB
C++
// SPDX-License-Identifier: GPL-2.0
|
|
// Displays the dive profile. Used by the interactive profile widget
|
|
// and the printing/exporting code.
|
|
#ifndef PROFILESCENE_H
|
|
#define PROFILESCENE_H
|
|
|
|
#include "core/color.h"
|
|
#include "core/display.h"
|
|
|
|
#include <QGraphicsScene>
|
|
|
|
class DivePlannerPointsModel;
|
|
class DivePlotDataModel;
|
|
|
|
class AbstractProfilePolygonItem;
|
|
class DepthAxis;
|
|
class DiveCartesianAxis;
|
|
class DiveCalculatedCeiling;
|
|
class DiveCalculatedTissue;
|
|
class DiveCartesianAxis;
|
|
class DiveEventItem;
|
|
class DiveGasPressureItem;
|
|
class DiveHeartrateItem;
|
|
class DiveMeanDepthItem;
|
|
class DivePercentageItem;
|
|
class DiveProfileItem;
|
|
class DiveReportedCeiling;
|
|
class DiveTemperatureItem;
|
|
class DiveTextItem;
|
|
class PartialGasPressureAxis;
|
|
class PartialPressureGasItem;
|
|
class TankItem;
|
|
class TemperatureAxis;
|
|
class TimeAxis;
|
|
|
|
class ProfileScene : public QGraphicsScene {
|
|
public:
|
|
ProfileScene(double fontPrintScale, bool printMode, bool isGrayscale);
|
|
~ProfileScene();
|
|
|
|
void updateAxes(bool instant); // Update axes according to preferences
|
|
void clear();
|
|
bool isPointOutOfBoundaries(const QPointF &point) const;
|
|
|
|
// If a plannerModel is passed, the deco-information is taken from there.
|
|
void plotDive(const struct dive *d, int dc, DivePlannerPointsModel *plannerModel = nullptr, bool inPlanner = false,
|
|
bool instant = false, bool calcMax = true);
|
|
|
|
const struct dive *d;
|
|
int dc;
|
|
private:
|
|
template<typename T, class... Args> T *createItem(const DiveCartesianAxis &vAxis, int vColumn, int z, Args&&... args);
|
|
PartialPressureGasItem *createPPGas(int column, color_index_t color, color_index_t colorAlert,
|
|
const double *thresholdSettingsMin, const double *thresholdSettingsMax);
|
|
void updateVisibility(); // Update visibility of non-interactive chart features according to preferences
|
|
|
|
friend class ProfileWidget2; // For now, give the ProfileWidget full access to the objects on the scene
|
|
double fontPrintScale;
|
|
bool printMode;
|
|
bool isGrayscale;
|
|
int maxtime;
|
|
int maxdepth;
|
|
|
|
DivePlotDataModel *dataModel;
|
|
struct plot_info plotInfo;
|
|
DepthAxis *profileYAxis;
|
|
PartialGasPressureAxis *gasYAxis;
|
|
TemperatureAxis *temperatureAxis;
|
|
TimeAxis *timeAxis;
|
|
DiveCartesianAxis *cylinderPressureAxis;
|
|
DiveCartesianAxis *heartBeatAxis;
|
|
DiveCartesianAxis *percentageAxis;
|
|
std::vector<AbstractProfilePolygonItem *> profileItems;
|
|
DiveProfileItem *diveProfileItem;
|
|
DiveTemperatureItem *temperatureItem;
|
|
DiveMeanDepthItem *meanDepthItem;
|
|
DiveGasPressureItem *gasPressureItem;
|
|
QList<DiveEventItem *> eventItems;
|
|
DiveTextItem *diveComputerText;
|
|
DiveReportedCeiling *reportedCeiling;
|
|
PartialPressureGasItem *pn2GasItem;
|
|
PartialPressureGasItem *pheGasItem;
|
|
PartialPressureGasItem *po2GasItem;
|
|
PartialPressureGasItem *o2SetpointGasItem;
|
|
PartialPressureGasItem *ccrsensor1GasItem;
|
|
PartialPressureGasItem *ccrsensor2GasItem;
|
|
PartialPressureGasItem *ccrsensor3GasItem;
|
|
PartialPressureGasItem *ocpo2GasItem;
|
|
DiveCalculatedCeiling *diveCeiling;
|
|
DiveTextItem *decoModelParameters;
|
|
QList<DiveCalculatedTissue *> allTissues;
|
|
DiveHeartrateItem *heartBeatItem;
|
|
QList<DivePercentageItem *> allPercentages;
|
|
TankItem *tankItem;
|
|
};
|
|
|
|
#endif
|