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