Skip to content

File Grid.hpp

File List > grid > Grid.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/theme/ColorPalette.hpp"

#include <QColor>
#include <QObject>
#include <QtQml/qqmlregistration.h>

namespace QAccelPlot {

class Grid : public QObject {
    Q_OBJECT
    QML_ANONYMOUS
    Q_PROPERTY(qreal gridLineWidth READ gridLineWidth WRITE setGridLineWidth NOTIFY gridLineWidthChanged)
    Q_PROPERTY(qreal subGridLineWidth READ subGridLineWidth WRITE setSubGridLineWidth NOTIFY subGridLineWidthChanged)
    Q_PROPERTY(QColor gridColor READ gridColor WRITE setGridColor NOTIFY gridColorChanged)
    Q_PROPERTY(QColor subGridColor READ subGridColor WRITE setSubGridColor NOTIFY subGridColorChanged)
    Q_PROPERTY(bool gridVisible READ gridVisible WRITE setGridVisible NOTIFY gridVisibleChanged)
    Q_PROPERTY(bool subGridVisible READ subGridVisible WRITE setSubGridVisible NOTIFY subGridVisibleChanged)
    Q_PROPERTY(bool gridHorizontalLinesVisible READ gridHorizontalLinesVisible WRITE setGridHorizontalLinesVisible NOTIFY gridHorizontalLinesVisibleChanged)
    Q_PROPERTY(bool gridVerticalLinesVisible READ gridVerticalLinesVisible WRITE setGridVerticalLinesVisible NOTIFY gridVerticalLinesVisibleChanged)
    Q_PROPERTY(bool subGridHorizontalLinesVisible READ subGridHorizontalLinesVisible WRITE setSubGridHorizontalLinesVisible NOTIFY
            subGridHorizontalLinesVisibleChanged)
    Q_PROPERTY(bool subGridVerticalLinesVisible READ subGridVerticalLinesVisible WRITE setSubGridVerticalLinesVisible NOTIFY subGridVerticalLinesVisibleChanged)

public:
    explicit Grid(QObject* parent = nullptr);

    qreal gridLineWidth() const;
    void setGridLineWidth(qreal w);

    qreal subGridLineWidth() const;
    void setSubGridLineWidth(qreal w);

    QColor gridColor() const;
    void setGridColor(const QColor& c);

    QColor subGridColor() const;
    void setSubGridColor(const QColor& c);

    bool gridVisible() const;
    void setGridVisible(bool on);

    bool subGridVisible() const;
    void setSubGridVisible(bool on);

    bool gridHorizontalLinesVisible() const;
    void setGridHorizontalLinesVisible(bool on);

    bool gridVerticalLinesVisible() const;
    void setGridVerticalLinesVisible(bool on);

    bool subGridHorizontalLinesVisible() const;
    void setSubGridHorizontalLinesVisible(bool on);

    bool subGridVerticalLinesVisible() const;
    void setSubGridVerticalLinesVisible(bool on);

signals:
    void gridLineWidthChanged();
    void subGridLineWidthChanged();
    void gridColorChanged();
    void subGridColorChanged();
    void gridVisibleChanged();
    void subGridVisibleChanged();
    void gridHorizontalLinesVisibleChanged();
    void gridVerticalLinesVisibleChanged();
    void subGridHorizontalLinesVisibleChanged();
    void subGridVerticalLinesVisibleChanged();

private:
    qreal gridLineWidth_{2.0};
    qreal subGridLineWidth_{1.0};
    QColor gridColor_{ColorPalette::dark().grid};
    QColor subGridColor_{ColorPalette::dark().subGrid};
    bool gridVisible_{true};
    bool subGridVisible_{true};
    bool gridHorizontalLinesVisible_{true};
    bool gridVerticalLinesVisible_{true};
    bool subGridHorizontalLinesVisible_{true};
    bool subGridVerticalLinesVisible_{true};
};

} // namespace QAccelPlot