example usage

This commit is contained in:
Rick Vogel 2023-11-07 20:42:57 +01:00
parent 22c8f15d33
commit e8ebc0965d
1 changed files with 15 additions and 15 deletions

View File

@ -26,6 +26,7 @@
#include <QskScaleTickmarks.h>
#include <QskTextLabel.h>
#include <QskAnimator.h>
#include <QskTickmarksMetrics.h>
#include <QGuiApplication>
@ -84,10 +85,12 @@ class ContentBox : public QskBox
struct Tickmarks final : public QskControl
{
public:
QSK_SUBCONTROLS(Ticks)
using QskControl::QskControl;
QskTickmarksMetrics metrics;
};
QSK_SUBCONTROL(Tickmarks, Ticks)
class TickmarksSkinlet final : public QskSkinlet
{
Q_GADGET
@ -124,8 +127,9 @@ class TickmarksSkinlet final : public QskSkinlet
tickmarks.setMediumTicks(medium);
tickmarks.setMinorTicks(minor);
const auto metric = q->tickmarksMetricsHint(Tickmarks::Ticks);
tickmarksNode->update(
Qt::darkGray, rect, { -100, +100 }, tickmarks, 1, Qt::Horizontal, Qt::AlignBottom, q->metrics );
Qt::darkGray, rect, { -100, +100 }, tickmarks, 1, Qt::Horizontal, Qt::AlignBottom, metric );
return tickmarksNode;
}
@ -150,9 +154,7 @@ class Window : public QskWindow
{
(void) new QskTextLabel("Custom", layout);
auto* const tickmarks = new Tickmarks(layout);
tickmarks->metrics.setMajorRatio( 1.0 );
tickmarks->metrics.setMediumRatio( 0.5 );
tickmarks->metrics.setMinorRatio( 0.2 );
tickmarks->setTickmarksMetricsHint(Tickmarks::Ticks, { 0.2, 0.5, 1.0 } );
auto* const skinlet = new TickmarksSkinlet;
tickmarks->setSkinlet(skinlet);
skinlet->setOwnedBySkinnable(true);
@ -160,9 +162,7 @@ class Window : public QskWindow
{
(void) new QskTextLabel("Custom (Major only)", layout);
auto* const tickmarks = new Tickmarks(layout);
tickmarks->metrics.setMajorRatio( 1.0 );
tickmarks->metrics.setMediumRatio( 0.0 );
tickmarks->metrics.setMinorRatio( 0.0 );
tickmarks->setTickmarksMetricsHint(Tickmarks::Ticks, { 0.0, 0.0, 1.0 } );
auto* const skinlet = new TickmarksSkinlet;
tickmarks->setSkinlet(skinlet);
skinlet->setOwnedBySkinnable(true);
@ -170,9 +170,7 @@ class Window : public QskWindow
{
(void) new QskTextLabel("Custom (Major + Minor only)", layout);
auto* const tickmarks = new Tickmarks(layout);
tickmarks->metrics.setMajorRatio( 1.0 );
tickmarks->metrics.setMediumRatio( 0.0 );
tickmarks->metrics.setMinorRatio( 0.2 );
tickmarks->setTickmarksMetricsHint(Tickmarks::Ticks, { 0.2, 0.0, 1.0 } );
auto* const skinlet = new TickmarksSkinlet;
tickmarks->setSkinlet(skinlet);
skinlet->setOwnedBySkinnable(true);
@ -195,10 +193,12 @@ class Window : public QskWindow
void advance( qreal value ) override
{
tickmarks.metrics.setMinorRatio( 0.1 + 0.1 * qFastSin(value * 2 * M_PI));
tickmarks.metrics.setMediumRatio( 0.25 + 0.25 * qFastSin(value * 2 * M_PI));
tickmarks.metrics.setMajorRatio( 0.5 + 0.5 * qFastSin(value * 2 * M_PI));
tickmarks.update();
const QskTickmarksMetrics metrics {
( 0.1 + 0.1 * qFastSin( value * 2 * M_PI ) ),
( 0.25 + 0.25 * qFastSin( value * 2 * M_PI ) ),
( 0.5 + 0.5 * qFastSin( value * 2 * M_PI ) )
};
tickmarks.setTickmarksMetricsHint(Tickmarks::Ticks, metrics);
}
Tickmarks& tickmarks;