MythTV master
synaesthesia.h
Go to the documentation of this file.
1#ifndef SYNAETHESIA
2#define SYNAETHESIA
3
4// C++
5#include <array>
6
7// MythMusic
8#include "mainvisual.h"
9#include "polygon.h"
10
11class QImage;
12
13static constexpr size_t LogSize { 10 };
14static constexpr size_t NumSamples { 1<<LogSize };
15static constexpr uint8_t Brightness { 150 };
16
17using samp_dbl_array = std::array<double,NumSamples>;
18using samp_int_array = std::array<int,NumSamples>;
19
20enum Mode : std::uint8_t {
21 Flame = 0,
22 Wave = 1,
23 Stars = 2
24};
25
27{
28public:
29 Synaesthesia(void);
30 ~Synaesthesia() override;
31
32 void resize(const QSize &size) override; // VisualBase
33 bool process(VisualNode *node) override; // VisualBase
34 bool draw(QPainter *p, const QColor &back) override; // VisualBase
35 void handleKeyPress([[maybe_unused]] const QString &action) override {}; // VisualBase
36
37private:
38 void setupPalette(void);
39 void coreInit(void);
40 static int bitReverser(int i);
41 void fft(double *x, double *y);
42 void setStarSize(double lsize);
43
44 inline void addPixel(int x, int y, int br1, int br2) const;
45 static inline void addPixelFast(unsigned char *p, int br1, int br2);
46 inline unsigned char getPixel(int x, int y, int where) const;
47
48 inline void fadePixelWave(int x, int y, int where, int step);
49 void fadeWave(void);
50 inline void fadePixelHeat(int x, int y, int where, int step);
51 void fadeHeat(void);
52 void fadeFade(void) const;
53 void fade(void);
54
55 QSize m_size {0,0};
56
60 std::array<int,256> m_scaleDown {};
65 double m_starSize {0.5};
66
67 int m_outWidth {0};
68 int m_outHeight {0};
69
73 QImage *m_outputImage {nullptr};
74
75 std::array<uint8_t,768> m_palette {};
76 double m_fgRedSlider {0.0};
77 double m_fgGreenSlider {0.5};
78 double m_bgRedSlider {0.75};
79 double m_bgGreenSlider {0.4};
80
81 double m_energyAvg {80.0};
82};
83
84#endif // SYNAETHESIA
void fadeFade(void) const
Synaesthesia(void)
Bitmap< unsigned short > m_outputBmp
Definition: synaesthesia.h:70
void resize(const QSize &size) override
static void addPixelFast(unsigned char *p, int br1, int br2)
~Synaesthesia() override
static int bitReverser(int i)
double m_bgGreenSlider
Definition: synaesthesia.h:79
samp_int_array m_bitReverse
Definition: synaesthesia.h:59
void fadePixelHeat(int x, int y, int where, int step)
void fade(void)
void fft(double *x, double *y)
bool process(VisualNode *node) override
void setStarSize(double lsize)
void coreInit(void)
std::array< uint8_t, 768 > m_palette
Definition: synaesthesia.h:75
void fadeWave(void)
double m_fgRedSlider
Definition: synaesthesia.h:76
unsigned char getPixel(int x, int y, int where) const
std::array< int, 256 > m_scaleDown
Definition: synaesthesia.h:60
samp_dbl_array m_cosTable
Definition: synaesthesia.h:57
QImage * m_outputImage
Definition: synaesthesia.h:73
void addPixel(int x, int y, int br1, int br2) const
void setupPalette(void)
bool m_pointsAreDiamonds
Definition: synaesthesia.h:63
int m_maxStarRadius
Definition: synaesthesia.h:61
bool draw(QPainter *p, const QColor &back) override
double m_starSize
Definition: synaesthesia.h:65
void fadeHeat(void)
double m_fgGreenSlider
Definition: synaesthesia.h:77
Bitmap< unsigned short > m_lastLastOutputBmp
Definition: synaesthesia.h:72
double m_energyAvg
Definition: synaesthesia.h:81
Bitmap< unsigned short > m_lastOutputBmp
Definition: synaesthesia.h:71
double m_brightnessTwiddler
Definition: synaesthesia.h:64
void handleKeyPress(const QString &action) override
Definition: synaesthesia.h:35
samp_dbl_array m_negSinTable
Definition: synaesthesia.h:58
double m_bgRedSlider
Definition: synaesthesia.h:78
void fadePixelWave(int x, int y, int where, int step)
static guint32 * back
Definition: goom_core.cpp:25
static constexpr size_t LogSize
Definition: synaesthesia.h:13
std::array< double, NumSamples > samp_dbl_array
Definition: synaesthesia.h:17
static constexpr size_t NumSamples
Definition: synaesthesia.h:14
Mode
Definition: synaesthesia.h:20
@ Wave
Definition: synaesthesia.h:22
@ Stars
Definition: synaesthesia.h:23
@ Flame
Definition: synaesthesia.h:21
std::array< int, NumSamples > samp_int_array
Definition: synaesthesia.h:18