File CurveRendererParams.hpp¶
File List > QAccelPlot > src > QAccelPlot > renderers > CurveRendererParams.hpp
Go to the documentation of this file
//
// SPDX-FileCopyrightText: 2026 Michal Grabarczyk
// SPDX-License-Identifier: GPL-3.0-only WITH Universal-FOSS-exception-1.0
//
// This file is also available under a separate commercial license.
// See COMMERCIAL-LICENSING.md for contact information.
//
#pragma once
#include "QAccelPlot/axis/Axis.hpp"
#include "QAccelPlot/series/StepMode.hpp"
#include <vector>
namespace QAccelPlot {
struct CurveChunk {
int start;
int count;
qreal minX;
qreal maxX;
qreal minY;
qreal maxY;
};
struct CurveDataView {
const float* floatData{nullptr};
const double* doubleData{nullptr};
qreal x(int index) const
{
const auto offset = static_cast<std::size_t>(index) * 2;
return doubleData ? static_cast<qreal>(doubleData[offset]) : static_cast<qreal>(floatData[offset]);
}
qreal y(int index) const
{
const auto offset = static_cast<std::size_t>(index) * 2 + 1;
return doubleData ? static_cast<qreal>(doubleData[offset]) : static_cast<qreal>(floatData[offset]);
}
};
struct CurveHitTestParams {
CurveDataView data;
int pointCount;
const std::vector<CurveChunk>& chunks;
Axis* xAxis;
Axis* yAxis;
qreal width;
qreal height;
qreal hitThreshold;
bool nonPositiveXInvalid;
bool nonPositiveYInvalid;
StepMode stepMode{StepMode::None};
};
inline bool isEmptyChunk(const CurveChunk& chunk)
{
return chunk.minX > chunk.maxX || chunk.minY > chunk.maxY;
}
} // namespace QAccelPlot