99 lines
2.0 KiB
C++
99 lines
2.0 KiB
C++
/***************************************************************************
|
|
|
|
source::worx raDIYo
|
|
Copyright © 2020-2022 c.holzheuer
|
|
chris@sourceworx.org
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 2 of the License, or
|
|
(at your option) any later version.
|
|
|
|
***************************************************************************/
|
|
|
|
/**
|
|
* contains copy-written material from qt example code:
|
|
* @see shaped clock example
|
|
* @see embedded/flipdigits example
|
|
*
|
|
* **/
|
|
|
|
|
|
#ifndef SWFLIPDIGIT_H
|
|
#define SWFLIPDIGIT_H
|
|
|
|
#include <QWidget>
|
|
#include <QTimeLine>
|
|
|
|
#include <swdialwidget.h>
|
|
#include <swrangevalue.h>
|
|
|
|
|
|
/**
|
|
* @brief Simuliert die 'Klappzahl'-Darstellung einer Ziffer.
|
|
*/
|
|
|
|
class SWFlipDigit : public QWidget, public SWDialWidget, public SWRangeValue
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
public:
|
|
|
|
enum FlipMode
|
|
{
|
|
Slide,
|
|
Flip,
|
|
Rotate
|
|
};
|
|
|
|
explicit SWFlipDigit(QWidget *parent = nullptr);
|
|
virtual ~SWFlipDigit();
|
|
|
|
void setTransition( FlipMode tr );
|
|
FlipMode transition() const;
|
|
|
|
void onDialDeltaChanged( int delta ) override;
|
|
|
|
public slots:
|
|
|
|
virtual void setValue( int n ) override;
|
|
void flipTo( int n );
|
|
|
|
protected:
|
|
|
|
const char* SWDEFAULTFONT = "Grado Gradoo Nf";
|
|
const double SWSCALEFACTOR = 2.7;
|
|
const double SWFONTSCALE = 0.85;
|
|
|
|
void drawFrame( QPainter* p, const QRect& rect );
|
|
QPixmap drawDigits(int n, const QRect &rect);
|
|
void preparePixmap();
|
|
|
|
void resizeEvent( QResizeEvent* event ) override;
|
|
virtual void paintEvent( QPaintEvent* event ) override;
|
|
|
|
void paintStatic();
|
|
void paintSlide();
|
|
void paintFlip();
|
|
void paintRotate();
|
|
|
|
//const int SWPADWIDTH = 0;//1;//15;
|
|
|
|
double _scaleFactor = SWSCALEFACTOR;
|
|
double _fontScale = SWFONTSCALE;
|
|
|
|
QString _fontFamily;
|
|
FlipMode _transition;
|
|
QPixmap _pixmap;
|
|
QPixmap _lastPixmap;
|
|
QTimeLine _animator;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
#endif // SWFLIPDIGIT_H
|