Skip to content

File RectUniforms.hpp

File List > internal > RectUniforms.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 <QSGMaterialShader>

namespace QAccelPlot {
class RectMaterial;
}

namespace QAccelPlot::Internal {

struct RectUbo {
    float matrix[16];      // 0–63
    float color[4];        // 64–79
    float borderColor[4];  // 80–95
    float hoverColor[4];   // 96–111
    float domainMin[2];    // 112–119
    float domainMax[2];    // 120–127
    float viewportSize[2]; // 128–135
    float minimumSize[2];  // 136–143
    float logScaleX;       // 144–147
    float logScaleY;       // 148–151
    float useVertexColor;  // 152–155
    float rectCount;       // 156–159
    float opacity;         // 160–163
    float borderWidth;     // 164–167
    float hoveredIndex;    // 168–171
    float antialiasing;    // 172–175
};

static_assert(sizeof(RectUbo) == 176);

void writeRectUniforms(RectUbo& ubo, const QSGMaterialShader::RenderState& state, const RectMaterial& material);

} // namespace QAccelPlot::Internal