Skip to content

File GradientCoordinates.hpp

File List > effects > internal > GradientCoordinates.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/effects/GradientColorTypes.hpp"

#include <algorithm>

namespace QAccelPlot::Internal {

inline float unboundedGradientCoordinate(const Qt::Orientation direction, const qreal value, const qreal minimum, const qreal maximum)
{
    constexpr auto minimumRange = qreal{1e-12};
    const auto range = std::max(maximum - minimum, minimumRange);
    const auto normalized = (value - minimum) / range;
    return static_cast<float>(direction == Qt::Vertical ? 1.0 - normalized : normalized);
}

template <typename Payload> void resolveGradientValueRange(Payload& payload, const qreal dataMin, const qreal dataMax)
{
    if (!payload.gradientValueMin.has_value()) {
        payload.gradientValueMin = dataMin;
    }
    if (!payload.gradientValueMax.has_value()) {
        payload.gradientValueMax = dataMax;
    }
}

} // namespace QAccelPlot::Internal