Skip to content

Commit

Permalink
qmlui: render PNG gobos too
Browse files Browse the repository at this point in the history
  • Loading branch information
mcallegari committed Nov 16, 2018
1 parent f4340cc commit b260dae
Showing 1 changed file with 25 additions and 4 deletions.
29 changes: 25 additions & 4 deletions qmlui/mainview3d.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1875,8 +1875,8 @@ void MainView3D::setSmokeAmount(float smokeAmount)
* ********************************************************************************* */

GoboTextureImage::GoboTextureImage(int w, int h, QString filename)
: m_renderer(nullptr)
{
m_renderer = new QSvgRenderer();
setSize(QSize(w, h));
setSource(filename);
}
Expand All @@ -1892,8 +1892,21 @@ void GoboTextureImage::setSource(QString filename)
return;

m_source = filename;
if (m_renderer->load(m_source) == false)
qWarning() << "Failed to load SVG gobo" << m_source;

if (filename.endsWith(".svg"))
{
if (m_renderer == nullptr)
m_renderer = new QSvgRenderer();

if (m_renderer->load(m_source) == false)
qWarning() << "Failed to load SVG gobo" << m_source;
}
else
{
if (m_renderer)
delete m_renderer;
m_renderer = nullptr;
}
update();
}

Expand All @@ -1905,5 +1918,13 @@ void GoboTextureImage::paint(QPainter *painter)
painter->fillRect(0, 0, w, h, Qt::black);
painter->setBrush(QBrush(Qt::white));
painter->drawEllipse(2, 2, w - 4, h - 4);
m_renderer->render(painter, QRect(1, 1, w - 2, h - 2));
if (m_renderer)
{
m_renderer->render(painter, QRect(1, 1, w - 2, h - 2));
}
else
{
QIcon goboFile(m_source);
painter->drawPixmap(1, 1, w - 2, h - 2, goboFile.pixmap(QSize(w - 2, h - 2)));
}
}

0 comments on commit b260dae

Please sign in to comment.