5#include <QOpenGLShaderProgram>
21 Q_PROPERTY(QStringList
filterJsons READ getFilterJsons)
24 QString m_filterPrefix;
25 QStringList m_filterJsons;
26 int m_frameHeight = 1;
28 double m_frameRate = 1.0;
37 QDir filterDir(m_filterPrefix);
38 for(
auto && filename : filterDir.entryList({
"*.json"})) {
39 QFile file = filterDir.filePath(filename);
40 file.open(QIODevice::OpenModeFlag::ReadOnly);
41 m_filterJsons.append(file.readAll());
44 this->setFlag(QQuickItem::ItemHasContents);
45 connect(
this, &QQuickItem::windowChanged,
this, [
this](QQuickWindow *win){
46 qDebug() <<
"Window Size Changed:" <<
static_cast<void *
>(win) <<
".";
48 connect(this->window(), &QQuickWindow::beforeSynchronizing, m_renderer, &
FireworksRenderer::sync, Qt::DirectConnection);
49 connect(this->window(), &QQuickWindow::beforeRendering, m_renderer, &
FireworksRenderer::init, Qt::DirectConnection);
50 win->setColor(Qt::black);
52 qWarning() <<
"Window destroy.";
56 qDebug() <<
"Create Hurricane QuickItem.";
63 [[nodiscard]] QString getFilterPrefix()
const {
return m_filterPrefix; }
65 [[nodiscard]]
bool isKeepFrameRate()
const {
return m_renderer->isKeepFrameRate(); }
67 [[nodiscard]] QStringList getFilterJsons()
const {
return m_filterJsons; }
69 [[nodiscard]] GLfloat getBrightness()
const {
return m_renderer->getBrightness(); }
71 void setKeepFrameRate(
bool keep) {
72 m_renderer->setKeepFrameRate(keep);
77 m_renderer->setBrightness(b);
82 return m_renderer->getContrast();
86 m_renderer->setContrast(c);
90 [[nodiscard]] GLfloat
getSaturation()
const {
return m_renderer->getSaturation(); };
93 m_renderer->setSaturation(s);
117 if (m_renderer->setVideoFrame(pic)) {
120 if (!pic.
isSameSize(m_frameWidth, m_frameHeight)) {
123 m_frameRate =
static_cast<double>(m_frameHeight) /
static_cast<double>(m_frameWidth);
135 if (!path.isEmpty()) {
136 image.load(QDir(m_filterPrefix).filePath(path));
137 image.convertTo(QImage::Format_RGB888);
140 m_renderer->setLUTFilter(image);
Definition: fireworks.hpp:10
int getWidth() const
Definition: fireworks.hpp:101
PONY_GUARD_BY(MAIN) private
Definition: fireworks.hpp:62
QStringList filterJsons
Definition: fireworks.hpp:21
GLfloat saturation
Definition: fireworks.hpp:19
double frameRate
Definition: fireworks.hpp:16
QML_ELEMENTbool keepFrameRate
Definition: fireworks.hpp:13
GLfloat getContrast() const
Definition: fireworks.hpp:81
int getHeight() const
Definition: fireworks.hpp:97
QSGNode * updatePaintNode(QSGNode *node, UpdatePaintNodeData *data) override
Definition: fireworks.hpp:30
Fireworks(QQuickItem *parent=nullptr)
Definition: fireworks.hpp:35
int frameHeight
Definition: fireworks.hpp:14
Q_INVOKABLE void setLUTFilter(const QString &path)
Definition: fireworks.hpp:133
void setBrightness(GLfloat b)
Definition: fireworks.hpp:76
void setSaturation(GLfloat s)
Definition: fireworks.hpp:92
double getFrameRate() const
Definition: fireworks.hpp:105
GLfloat contrast
Definition: fireworks.hpp:18
GLfloat getSaturation() const
Definition: fireworks.hpp:90
void setVideoFrame(const VideoFrameRef &pic)
Definition: fireworks.hpp:112
void setContrast(GLfloat c)
Definition: fireworks.hpp:85
GLfloat brightness
Definition: fireworks.hpp:17
int frameWidth
Definition: fireworks.hpp:15
~Fireworks() override
Definition: fireworks.hpp:58
QString filterPrefix
Definition: fireworks.hpp:20
void keepFrameRateChanged()
Definition: renderer.hpp:67
void sync()
Definition: renderer.hpp:173
void init()
Definition: renderer.hpp:117
bool isSameSize(const VideoFrameRef &frame) const
Definition: frame.hpp:130
int getWidth() const
Definition: frame.hpp:122
int getHeight() const
Definition: frame.hpp:126
Definition: audioformat.hpp:155
constexpr PonyThread MAIN
Definition: ponyplayer.h:47
QString getAssetsDir()
Definition: platform.hpp:20