MythTV master
videovisualcircles.cpp
Go to the documentation of this file.
1// Qt
2#include <QPen>
3
4// MythTV
5#include "libmythbase/mythconfig.h"
8
9#if CONFIG_VULKAN
11#endif
12
14 : VideoVisualSpectrum(Audio, Render)
15{
16 m_numSamples = 32;
17}
18
19void VideoVisualCircles::DrawPriv(MythPainter* Painter, QPaintDevice* Device)
20{
21 if (!Painter)
22 return;
23
24 static const QBrush kNobrush(Qt::NoBrush);
25 int red = 0;
26 int green = 200;
27 QPen pen(QColor(red, green, 0, 255));
28 int count = m_scale.range();
29 int incr = 200 / count;
30 int rad = static_cast<int>(m_range);
31 QRect circ(m_area.x() + (m_area.width() / 2), m_area.y() + (m_area.height() / 2),
32 rad, rad);
33 Painter->Begin(Device);
34 for (int i = 0; i < count; i++, rad += m_range, red += incr, green -= incr)
35 {
36 double mag = qAbs((m_magnitudes[i] + m_magnitudes[i + count]) / 2.0);
37 if (mag > 1.0)
38 {
39 pen.setWidth(static_cast<int>(mag));
40 Painter->DrawRoundRect(circ, rad, kNobrush, pen, 200);
41 }
42 circ.adjust(static_cast<int>(-m_range), static_cast<int>(-m_range),
43 static_cast<int>(m_range), static_cast<int>(m_range));
44 pen.setColor(QColor(red, green, 0, 255));
45 }
46 Painter->End();
47}
48
50{
51 m_range = (static_cast<double>(m_area.height()) / 2.0) / (m_scale.range() - 10);
52 m_scaleFactor = 10.0;
53 m_falloff = 1.0;
54
55 LOG(VB_GENERAL, LOG_INFO, DESC +
56 QString("Initialised Circles with %1 circles.") .arg(m_scale.range()));
57 return true;
58}
59
61{
62 public:
63 const QString &name() const override
64 {
65 static QString s_name(CIRCLES_NAME);
66 return s_name;
67 }
68
69 VideoVisual* Create(AudioPlayer* Audio, MythRender* Render) const override
70 {
71#if CONFIG_VULKAN
72 auto * vulkan = dynamic_cast<MythRenderVulkan*>(Render);
73 if (vulkan)
74 return new MythVisualCirclesVulkan(Audio, vulkan);
75#endif
76 return new VideoVisualCircles(Audio, Render);
77 }
78
79 bool SupportedRenderer(RenderType Type) override;
80
82
84{
85 return ((Type == kRenderOpenGL) || (Type == kRenderVulkan));
86}
A device containing images (ie. USB stick, CD, storage group etc)
int range() const
virtual void Begin(QPaintDevice *)
Definition: mythpainter.h:54
virtual void DrawRoundRect(QRect area, int cornerRadius, const QBrush &fillBrush, const QPen &linePen, int alpha)
virtual void End()
Definition: mythpainter.h:55
const QString & name() const override
bool SupportedRenderer(RenderType Type) override
VideoVisual * Create(AudioPlayer *Audio, MythRender *Render) const override
void DrawPriv(MythPainter *Painter, QPaintDevice *Device) override
VideoVisualCircles(AudioPlayer *Audio, MythRender *Render)
bool InitialisePriv() override
QVector< double > m_magnitudes
QRect m_area
Definition: videovisual.h:71
#define LOG(_MASK_, _LEVEL_, _QSTRING_)
Definition: mythlogging.h:39
RenderType
@ kRenderOpenGL
@ kRenderVulkan
#define DESC
Definition: videovisual.h:19
VideoVisualCirclesFactory VideoVisualCirclesFactory
#define CIRCLES_NAME