qskinny/src/common/QskTickmarks.h

110 lines
2.6 KiB
C
Raw Normal View History

2020-11-13 14:34:02 +00:00
/******************************************************************************
2024-01-17 13:31:45 +00:00
* QSkinny - Copyright (C) The authors
2023-04-06 07:23:37 +00:00
* SPDX-License-Identifier: BSD-3-Clause
2020-11-13 14:34:02 +00:00
*****************************************************************************/
2023-11-28 09:46:03 +00:00
#ifndef QSK_TICKMARKS_H
#define QSK_TICKMARKS_H
2020-11-13 14:34:02 +00:00
#include <QskIntervalF.h>
#include <QVector>
2023-11-28 09:46:03 +00:00
class QSK_EXPORT QskTickmarks
2020-11-13 14:34:02 +00:00
{
Q_GADGET
2020-12-05 14:09:31 +00:00
Q_PROPERTY( QVector< qreal > majorTicks READ majorTicks WRITE setMajorTicks )
Q_PROPERTY( QVector< qreal > mediumTicks READ mediumTicks WRITE setMediumTicks )
Q_PROPERTY( QVector< qreal > minorTicks READ minorTicks WRITE setMinorTicks )
2020-11-13 14:34:02 +00:00
public:
enum TickType
{
MinorTick,
MediumTick,
2020-11-26 05:56:38 +00:00
MajorTick
2020-11-13 14:34:02 +00:00
};
Q_ENUM( TickType )
2023-11-28 09:46:03 +00:00
QskTickmarks();
2023-11-28 12:07:21 +00:00
QskTickmarks( const QVector< qreal >& minorTicks,
const QVector< qreal >& mediumTicks, const QVector< qreal >& majorTicks );
2023-11-28 09:46:03 +00:00
~QskTickmarks();
2020-11-13 14:34:02 +00:00
2023-11-28 09:46:03 +00:00
bool operator==( const QskTickmarks& ) const noexcept;
bool operator!=( const QskTickmarks& ) const noexcept;
2020-11-13 14:34:02 +00:00
int tickCount() const noexcept;
Q_INVOKABLE int tickCount( TickType ) const noexcept;
2020-11-13 14:34:02 +00:00
2020-12-05 14:09:31 +00:00
QVector< qreal > ticks( TickType ) const noexcept;
void setTicks( TickType, const QVector< qreal >& );
2020-11-13 14:34:02 +00:00
2020-12-05 14:09:31 +00:00
void setMinorTicks( const QVector< qreal >& );
QVector< qreal > minorTicks() const noexcept;
2020-11-13 14:34:02 +00:00
2020-12-05 14:09:31 +00:00
void setMediumTicks( const QVector< qreal >& );
QVector< qreal > mediumTicks() const noexcept;
2020-11-13 14:34:02 +00:00
2020-12-05 14:09:31 +00:00
void setMajorTicks( const QVector< qreal >& );
QVector< qreal > majorTicks() const noexcept;
2020-11-13 14:34:02 +00:00
Q_INVOKABLE qreal tickAt( TickType, int index ) const;
2020-11-13 14:34:02 +00:00
void invert();
void reset();
2022-03-25 10:21:32 +00:00
QskHashValue hash( QskHashValue seed = 0 ) const noexcept;
2020-11-13 14:34:02 +00:00
private:
QVector< qreal > m_ticks[ 3 ];
};
2023-11-28 09:46:03 +00:00
inline void QskTickmarks::setMinorTicks( const QVector< qreal >& ticks )
2020-11-13 14:34:02 +00:00
{
setTicks( MinorTick, ticks );
}
2023-11-28 09:46:03 +00:00
inline QVector< qreal > QskTickmarks::minorTicks() const noexcept
2020-11-13 14:34:02 +00:00
{
return ticks( MinorTick );
}
2023-11-28 09:46:03 +00:00
inline void QskTickmarks::setMediumTicks( const QVector< qreal >& ticks )
2020-11-13 14:34:02 +00:00
{
setTicks( MediumTick, ticks );
}
2023-11-28 09:46:03 +00:00
inline QVector< qreal > QskTickmarks::mediumTicks() const noexcept
2020-11-13 14:34:02 +00:00
{
return ticks( MediumTick );
}
2023-11-28 09:46:03 +00:00
inline void QskTickmarks::setMajorTicks( const QVector< qreal >& ticks )
2020-11-13 14:34:02 +00:00
{
setTicks( MajorTick, ticks );
}
2023-11-28 09:46:03 +00:00
inline QVector< qreal > QskTickmarks::majorTicks() const noexcept
2020-11-13 14:34:02 +00:00
{
return ticks( MajorTick );
}
2023-11-28 09:46:03 +00:00
inline bool QskTickmarks::operator!=(
const QskTickmarks& other ) const noexcept
2020-11-13 14:34:02 +00:00
{
return !( *this == other );
}
2023-11-28 09:46:03 +00:00
Q_DECLARE_METATYPE( QskTickmarks )
2021-02-14 11:36:15 +00:00
#ifndef QT_NO_DEBUG_STREAM
2023-11-28 09:46:03 +00:00
QSK_EXPORT QDebug operator<<( QDebug, const QskTickmarks& );
2021-02-14 11:36:15 +00:00
#endif
2020-11-13 14:34:02 +00:00
#endif