mirror of
https://bitbucket.org/mfeemster/fractorium.git
synced 2025-01-21 05:00:06 -05:00
--User changes
-Add a progress bar for sequence previews. --Bug fixes -Attempt to prevent crash when dragging in a new file while the previews from the current file are still rendering.
This commit is contained in:
parent
745f06d29d
commit
b3ad38020e
@ -1,7 +1,7 @@
|
|||||||
<Project Sdk="WixToolset.Sdk/4.0.0">
|
<Project Sdk="WixToolset.Sdk/4.0.0">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<ProductVersion>3.7</ProductVersion>
|
<ProductVersion>3.7</ProductVersion>
|
||||||
<OutputName>Fractorium_23.23.8.100</OutputName>
|
<OutputName>Fractorium_23.23.8.101</OutputName>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
|
||||||
<OutputPath>$(SolutionDir)..\..\..\Bin\$(Platform)\$(Configuration)\</OutputPath>
|
<OutputPath>$(SolutionDir)..\..\..\Bin\$(Platform)\$(Configuration)\</OutputPath>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:ui="http://wixtoolset.org/schemas/v4/wxs/ui">
|
<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:ui="http://wixtoolset.org/schemas/v4/wxs/ui">
|
||||||
<?define ProductVersion="23.23.8.100" ?>
|
<?define ProductVersion="23.23.8.101" ?>
|
||||||
<?define ProductName="Fractorium $(var.ProductVersion) ($(var.GpuType))" ?>
|
<?define ProductName="Fractorium $(var.ProductVersion) ($(var.GpuType))" ?>
|
||||||
<?define UpgradeCode="{4714cd15-bfba-44f6-8059-9e1466ebfa6e}"?>
|
<?define UpgradeCode="{4714cd15-bfba-44f6-8059-9e1466ebfa6e}"?>
|
||||||
<?define Manufacturer="Fractorium"?>
|
<?define Manufacturer="Fractorium"?>
|
||||||
@ -12,7 +12,7 @@
|
|||||||
<!--
|
<!--
|
||||||
Change this for every release.
|
Change this for every release.
|
||||||
-->
|
-->
|
||||||
<?define ProductCode="{03DF885D-6E38-4185-8C2F-AA95EEAC6CB9}"?>
|
<?define ProductCode="{C4B772EF-F8FE-4327-9CE7-22308F363E69}"?>
|
||||||
|
|
||||||
<Package Name="$(var.ProductName)" Language="1033" Version="$(var.ProductVersion)" Manufacturer="$(var.Manufacturer)" UpgradeCode="$(var.UpgradeCode)" InstallerVersion="400" Scope="perMachine" ProductCode="$(var.ProductCode)">
|
<Package Name="$(var.ProductName)" Language="1033" Version="$(var.ProductVersion)" Manufacturer="$(var.Manufacturer)" UpgradeCode="$(var.UpgradeCode)" InstallerVersion="400" Scope="perMachine" ProductCode="$(var.ProductCode)">
|
||||||
<SummaryInformation Keywords="Installer" Description="$(var.Manufacturer)" Manufacturer="$(var.Manufacturer)" />
|
<SummaryInformation Keywords="Installer" Description="$(var.Manufacturer)" Manufacturer="$(var.Manufacturer)" />
|
||||||
@ -124,19 +124,19 @@
|
|||||||
<File Id="libxml2.dll" Source="$(var.SolutionDir)..\..\..\Bin\$(var.Platform)\Release\libxml2.dll" KeyPath="yes" Checksum="yes" ProcessorArchitecture="x64" ReadOnly="yes" />
|
<File Id="libxml2.dll" Source="$(var.SolutionDir)..\..\..\Bin\$(var.Platform)\Release\libxml2.dll" KeyPath="yes" Checksum="yes" ProcessorArchitecture="x64" ReadOnly="yes" />
|
||||||
</Component>
|
</Component>
|
||||||
<Component Id="msvcp140.dll" Guid="8f1ffde7-c1bd-45fb-8bc8-26dde552eafd">
|
<Component Id="msvcp140.dll" Guid="8f1ffde7-c1bd-45fb-8bc8-26dde552eafd">
|
||||||
<File Id="msvcp140.dll" Source="$(var.DevEnvDir)..\..\VC\Redist\MSVC\14.36.32532\x64\Microsoft.VC143.CRT\msvcp140.dll" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
|
<File Id="msvcp140.dll" Source="$(var.DevEnvDir)..\..\VC\Redist\MSVC\14.38.33130\x64\Microsoft.VC143.CRT\msvcp140.dll" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
|
||||||
</Component>
|
</Component>
|
||||||
<Component Id="vcruntime140.dll" Guid="50c9bc27-c547-4a03-9f6c-cd416f449dd8">
|
<Component Id="vcruntime140.dll" Guid="50c9bc27-c547-4a03-9f6c-cd416f449dd8">
|
||||||
<File Id="vcruntime140.dll" Source="$(var.DevEnvDir)..\..\VC\Redist\MSVC\14.36.32532\x64\Microsoft.VC143.CRT\vcruntime140.dll" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
|
<File Id="vcruntime140.dll" Source="$(var.DevEnvDir)..\..\VC\Redist\MSVC\14.38.33130\x64\Microsoft.VC143.CRT\vcruntime140.dll" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
|
||||||
</Component>
|
</Component>
|
||||||
<Component Id="vcruntime140_1.dll" Guid="a02507f8-326b-45b2-b734-e5091921559f">
|
<Component Id="vcruntime140_1.dll" Guid="a02507f8-326b-45b2-b734-e5091921559f">
|
||||||
<File Id="vcruntime140_1.dll" Source="$(var.DevEnvDir)..\..\VC\Redist\MSVC\14.36.32532\x64\Microsoft.VC143.CRT\vcruntime140_1.dll" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
|
<File Id="vcruntime140_1.dll" Source="$(var.DevEnvDir)..\..\VC\Redist\MSVC\14.38.33130\x64\Microsoft.VC143.CRT\vcruntime140_1.dll" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
|
||||||
</Component>
|
</Component>
|
||||||
<Component Id="vccorlib140.dll" Guid="affe33e7-1e64-4bb0-a062-2b56f77459b4">
|
<Component Id="vccorlib140.dll" Guid="affe33e7-1e64-4bb0-a062-2b56f77459b4">
|
||||||
<File Id="vccorlib140.dll" Source="$(var.DevEnvDir)..\..\VC\Redist\MSVC\14.36.32532\x64\Microsoft.VC143.CRT\vccorlib140.dll" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
|
<File Id="vccorlib140.dll" Source="$(var.DevEnvDir)..\..\VC\Redist\MSVC\14.38.33130\x64\Microsoft.VC143.CRT\vccorlib140.dll" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
|
||||||
</Component>
|
</Component>
|
||||||
<Component Id="concrt140.dll" Guid="7fb716a1-1b4f-42fb-89c7-4d216ebd6e2e">
|
<Component Id="concrt140.dll" Guid="7fb716a1-1b4f-42fb-89c7-4d216ebd6e2e">
|
||||||
<File Id="concrt140.dll" Source="$(var.DevEnvDir)..\..\VC\Redist\MSVC\14.36.32532\x64\Microsoft.VC143.CRT\concrt140.dll" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
|
<File Id="concrt140.dll" Source="$(var.DevEnvDir)..\..\VC\Redist\MSVC\14.38.33130\x64\Microsoft.VC143.CRT\concrt140.dll" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
|
||||||
</Component>
|
</Component>
|
||||||
<Component Id="flam3palettes.xml" Guid="d3adb0bb-14ef-4923-99d9-a5784b7ef04e">
|
<Component Id="flam3palettes.xml" Guid="d3adb0bb-14ef-4923-99d9-a5784b7ef04e">
|
||||||
<File Id="flam3palettes.xml" Source="$(var.SolutionDir)..\..\..\Data\flam3-palettes.xml" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
|
<File Id="flam3palettes.xml" Source="$(var.SolutionDir)..\..\..\Data\flam3-palettes.xml" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
|
||||||
|
Binary file not shown.
@ -49,8 +49,8 @@
|
|||||||
//
|
//
|
||||||
|
|
||||||
VS_VERSION_INFO VERSIONINFO
|
VS_VERSION_INFO VERSIONINFO
|
||||||
FILEVERSION 23, 23, 8, 100
|
FILEVERSION 23, 23, 8, 101
|
||||||
PRODUCTVERSION 23, 23, 8, 100
|
PRODUCTVERSION 23, 23, 8, 101
|
||||||
FILEFLAGSMASK 0x3fL
|
FILEFLAGSMASK 0x3fL
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
FILEFLAGS 0x1L
|
FILEFLAGS 0x1L
|
||||||
@ -67,12 +67,12 @@
|
|||||||
BEGIN
|
BEGIN
|
||||||
VALUE "CompanyName", "Open Source"
|
VALUE "CompanyName", "Open Source"
|
||||||
VALUE "FileDescription", "Renders fractal flames as animations with motion blur"
|
VALUE "FileDescription", "Renders fractal flames as animations with motion blur"
|
||||||
VALUE "FileVersion", "23, 23, 8, 100"
|
VALUE "FileVersion", "23, 23, 8, 101"
|
||||||
VALUE "InternalName", "EmberAnimate.exe"
|
VALUE "InternalName", "EmberAnimate.exe"
|
||||||
VALUE "LegalCopyright", "Copyright (C) Matt Feemster 2021, GPL v3"
|
VALUE "LegalCopyright", "Copyright (C) Matt Feemster 2021, GPL v3"
|
||||||
VALUE "OriginalFilename", "EmberAnimate.exe"
|
VALUE "OriginalFilename", "EmberAnimate.exe"
|
||||||
VALUE "ProductName", "Ember Animate"
|
VALUE "ProductName", "Ember Animate"
|
||||||
VALUE "ProductVersion", "23, 23, 8, 100"
|
VALUE "ProductVersion", "23, 23, 8, 101"
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
BLOCK "VarFileInfo"
|
BLOCK "VarFileInfo"
|
||||||
|
Binary file not shown.
@ -49,8 +49,8 @@
|
|||||||
//
|
//
|
||||||
|
|
||||||
VS_VERSION_INFO VERSIONINFO
|
VS_VERSION_INFO VERSIONINFO
|
||||||
FILEVERSION 23, 23, 8, 100
|
FILEVERSION 23, 23, 8, 101
|
||||||
PRODUCTVERSION 23, 23, 8, 100
|
PRODUCTVERSION 23, 23, 8, 101
|
||||||
FILEFLAGSMASK 0x3fL
|
FILEFLAGSMASK 0x3fL
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
FILEFLAGS 0x1L
|
FILEFLAGS 0x1L
|
||||||
@ -67,12 +67,12 @@
|
|||||||
BEGIN
|
BEGIN
|
||||||
VALUE "CompanyName", "Open Source"
|
VALUE "CompanyName", "Open Source"
|
||||||
VALUE "FileDescription", "Manipulates fractal flame parameter files"
|
VALUE "FileDescription", "Manipulates fractal flame parameter files"
|
||||||
VALUE "FileVersion", "23, 23, 8, 100"
|
VALUE "FileVersion", "23, 23, 8, 101"
|
||||||
VALUE "InternalName", "EmberGenome.exe"
|
VALUE "InternalName", "EmberGenome.exe"
|
||||||
VALUE "LegalCopyright", "Copyright (C) Matt Feemster 2021, GPL v3"
|
VALUE "LegalCopyright", "Copyright (C) Matt Feemster 2021, GPL v3"
|
||||||
VALUE "OriginalFilename", "EmberGenome.exe"
|
VALUE "OriginalFilename", "EmberGenome.exe"
|
||||||
VALUE "ProductName", "Ember Genome"
|
VALUE "ProductName", "Ember Genome"
|
||||||
VALUE "ProductVersion", "23, 23, 8, 100"
|
VALUE "ProductVersion", "23, 23, 8, 101"
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
BLOCK "VarFileInfo"
|
BLOCK "VarFileInfo"
|
||||||
|
@ -49,8 +49,8 @@
|
|||||||
//
|
//
|
||||||
|
|
||||||
VS_VERSION_INFO VERSIONINFO
|
VS_VERSION_INFO VERSIONINFO
|
||||||
FILEVERSION 23, 23, 8, 100
|
FILEVERSION 23, 23, 8, 101
|
||||||
PRODUCTVERSION 23, 23, 8, 100
|
PRODUCTVERSION 23, 23, 8, 101
|
||||||
FILEFLAGSMASK 0x3fL
|
FILEFLAGSMASK 0x3fL
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
FILEFLAGS 0x1L
|
FILEFLAGS 0x1L
|
||||||
@ -67,12 +67,12 @@
|
|||||||
BEGIN
|
BEGIN
|
||||||
VALUE "CompanyName", "Open Source"
|
VALUE "CompanyName", "Open Source"
|
||||||
VALUE "FileDescription", "Renders fractal flames as single images"
|
VALUE "FileDescription", "Renders fractal flames as single images"
|
||||||
VALUE "FileVersion", "23, 23, 8, 100"
|
VALUE "FileVersion", "23, 23, 8, 101"
|
||||||
VALUE "InternalName", "EmberRender.exe"
|
VALUE "InternalName", "EmberRender.exe"
|
||||||
VALUE "LegalCopyright", "Copyright (C) Matt Feemster 2021, GPL v3"
|
VALUE "LegalCopyright", "Copyright (C) Matt Feemster 2021, GPL v3"
|
||||||
VALUE "OriginalFilename", "EmberRender.exe"
|
VALUE "OriginalFilename", "EmberRender.exe"
|
||||||
VALUE "ProductName", "Ember Render"
|
VALUE "ProductName", "Ember Render"
|
||||||
VALUE "ProductVersion", "23, 23, 8, 100"
|
VALUE "ProductVersion", "23, 23, 8, 101"
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
BLOCK "VarFileInfo"
|
BLOCK "VarFileInfo"
|
||||||
|
Binary file not shown.
@ -1,4 +1,4 @@
|
|||||||
23.23.8.100 8/6/2023
|
23.23.8.1 8/6/2023
|
||||||
|
|
||||||
--User changes
|
--User changes
|
||||||
-Add Clear Sequence button to the Sequence Panel.
|
-Add Clear Sequence button to the Sequence Panel.
|
||||||
|
@ -37,7 +37,7 @@ static void sincos(float x, float* s, float* c)
|
|||||||
|
|
||||||
namespace EmberNs
|
namespace EmberNs
|
||||||
{
|
{
|
||||||
#define EMBER_VERSION "23.23.8.100"
|
#define EMBER_VERSION "23.23.8.101"
|
||||||
//#define FLAM3_COMPAT 1//Uncomment this if you want full compatibility with flam3 regarding some of the trig-based variations in Variations01.h
|
//#define FLAM3_COMPAT 1//Uncomment this if you want full compatibility with flam3 regarding some of the trig-based variations in Variations01.h
|
||||||
#define EPS6 T(1e-6)
|
#define EPS6 T(1e-6)
|
||||||
#define EPS std::numeric_limits<T>::epsilon()//Apoplugin.h uses -20, but it's more mathematically correct to do it this way.
|
#define EPS std::numeric_limits<T>::epsilon()//Apoplugin.h uses -20, but it's more mathematically correct to do it this way.
|
||||||
|
@ -531,6 +531,10 @@ bool RendererBase::Shared() const { return false; }
|
|||||||
void RendererBase::Reset()
|
void RendererBase::Reset()
|
||||||
{
|
{
|
||||||
Abort();
|
Abort();
|
||||||
|
|
||||||
|
while (InRender())
|
||||||
|
std::this_thread::sleep_for(std::chrono::milliseconds(10));
|
||||||
|
|
||||||
EnterRender();
|
EnterRender();
|
||||||
EnterFinalAccum();
|
EnterFinalAccum();
|
||||||
LeaveFinalAccum();
|
LeaveFinalAccum();
|
||||||
|
@ -61,7 +61,7 @@
|
|||||||
<enum>QFrame::NoFrame</enum>
|
<enum>QFrame::NoFrame</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string><html><head/><body><p align="center"><span style=" font-size:10pt;">Fractorium 23.23.8.100</span></p><p align="center"><span style=" font-size:10pt;">A Qt-based fractal flame editor which uses a C++ re-write of the flam3 algorithm named Ember and a GPU capable version named EmberCL which implements a portion of the cuburn algorithm in OpenCL.</span></p><p align="center"><a href="http://fractorium.com"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">fractorium.com</span></a></p></body></html></string>
|
<string><html><head/><body><p align="center"><span style=" font-size:10pt;">Fractorium 23.23.8.101</span></p><p align="center"><span style=" font-size:10pt;">A Qt-based fractal flame editor which uses a C++ re-write of the flam3 algorithm named Ember and a GPU capable version named EmberCL which implements a portion of the cuburn algorithm in OpenCL.</span></p><p align="center"><a href="http://fractorium.com"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">fractorium.com</span></a></p></body></html></string>
|
||||||
</property>
|
</property>
|
||||||
<property name="textFormat">
|
<property name="textFormat">
|
||||||
<enum>Qt::RichText</enum>
|
<enum>Qt::RichText</enum>
|
||||||
|
@ -40,15 +40,7 @@ void FinalRenderEmberController<T>::CancelRender()
|
|||||||
|
|
||||||
if (m_Renderer.get())
|
if (m_Renderer.get())
|
||||||
{
|
{
|
||||||
m_Renderer->Abort();
|
m_Renderer->Reset();
|
||||||
|
|
||||||
while (m_Renderer->InRender())
|
|
||||||
std::this_thread::sleep_for(std::chrono::milliseconds(10));
|
|
||||||
|
|
||||||
m_Renderer->EnterRender();
|
|
||||||
m_Renderer->EnterFinalAccum();
|
|
||||||
m_Renderer->LeaveFinalAccum();
|
|
||||||
m_Renderer->LeaveRender();
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -177,7 +177,7 @@ public:
|
|||||||
using PreviewRenderer<T>::m_PreviewRenderer;
|
using PreviewRenderer<T>::m_PreviewRenderer;
|
||||||
using PreviewRenderer<T>::m_PreviewFinalImage;
|
using PreviewRenderer<T>::m_PreviewFinalImage;
|
||||||
|
|
||||||
FinalRenderPreviewRenderer(FinalRenderEmberController<T>* controller) : m_Controller(controller)
|
FinalRenderPreviewRenderer(FinalRenderEmberController<T>* controller) : m_Controller(controller), PreviewRenderer<T>(nullptr)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6264,8 +6264,8 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>269</width>
|
<width>144</width>
|
||||||
<height>650</height>
|
<height>58</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
@ -8074,6 +8074,13 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="7" column="2">
|
||||||
|
<widget class="QProgressBar" name="SequenceProgressBar">
|
||||||
|
<property name="value">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
|
@ -68,8 +68,8 @@ FractoriumEmberController<T>::FractoriumEmberController(Fractorium* fractorium)
|
|||||||
{
|
{
|
||||||
size_t b = 0;
|
size_t b = 0;
|
||||||
m_GLController = make_unique<GLEmberController<T>>(fractorium, fractorium->ui.GLDisplay, this);
|
m_GLController = make_unique<GLEmberController<T>>(fractorium, fractorium->ui.GLDisplay, this);
|
||||||
m_LibraryPreviewRenderer = make_unique<TreePreviewRenderer<T>>(this, m_Fractorium->ui.LibraryTree, m_EmberFile);
|
m_LibraryPreviewRenderer = make_unique<TreePreviewRenderer<T>>(this, m_Fractorium->ui.LibraryTree, m_EmberFile, nullptr);
|
||||||
m_SequencePreviewRenderer = make_unique<TreePreviewRenderer<T>>(this, m_Fractorium->ui.SequenceTree, m_SequenceFile);
|
m_SequencePreviewRenderer = make_unique<TreePreviewRenderer<T>>(this, m_Fractorium->ui.SequenceTree, m_SequenceFile, m_Fractorium->ui.SequenceProgressBar);
|
||||||
m_PaletteList->Clear();
|
m_PaletteList->Clear();
|
||||||
m_Fractorium->ui.PaletteFilenameCombo->clear();
|
m_Fractorium->ui.PaletteFilenameCombo->clear();
|
||||||
//Initial combo change event to fill the palette table will be called automatically later.
|
//Initial combo change event to fill the palette table will be called automatically later.
|
||||||
@ -397,6 +397,12 @@ void TreePreviewRenderer<T>::PreviewRenderFunc(uint start, uint end)
|
|||||||
if (const auto top = m_Tree->topLevelItem(m_Tree->topLevelItemCount() - 1))
|
if (const auto top = m_Tree->topLevelItem(m_Tree->topLevelItemCount() - 1))
|
||||||
{
|
{
|
||||||
size_t i = start;
|
size_t i = start;
|
||||||
|
double prc = 0;
|
||||||
|
double ct = 0;
|
||||||
|
double total = end - start;
|
||||||
|
|
||||||
|
if (m_Pb)
|
||||||
|
QMetaObject::invokeMethod(m_Pb, "setValue", Qt::QueuedConnection, Q_ARG(const int, 0));
|
||||||
|
|
||||||
for (auto b = Advance(m_EmberFile.m_Embers.begin(), start); m_PreviewRun && i < end && b != m_EmberFile.m_Embers.end(); ++b, ++i)
|
for (auto b = Advance(m_EmberFile.m_Embers.begin(), start); m_PreviewRun && i < end && b != m_EmberFile.m_Embers.end(); ++b, ++i)
|
||||||
{
|
{
|
||||||
@ -422,11 +428,19 @@ void TreePreviewRenderer<T>::PreviewRenderFunc(uint start, uint end)
|
|||||||
Q_ARG(vv4F&, m_PreviewFinalImage),
|
Q_ARG(vv4F&, m_PreviewFinalImage),
|
||||||
Q_ARG(uint, PREVIEW_SIZE),
|
Q_ARG(uint, PREVIEW_SIZE),
|
||||||
Q_ARG(uint, PREVIEW_SIZE));
|
Q_ARG(uint, PREVIEW_SIZE));
|
||||||
|
prc = 100.0 * (++ct / total);
|
||||||
|
|
||||||
|
if (m_Pb)
|
||||||
|
QMetaObject::invokeMethod(m_Pb, "setValue", Qt::QueuedConnection, Q_ARG(const int, int(prc)));
|
||||||
|
|
||||||
treeItem->SetRendered();
|
treeItem->SetRendered();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (m_Pb)
|
||||||
|
QMetaObject::invokeMethod(m_Pb, "setValue", Qt::QueuedConnection, Q_ARG(const int, 100));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -646,8 +646,9 @@ template <typename T>
|
|||||||
class PreviewRenderer
|
class PreviewRenderer
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
PreviewRenderer()
|
PreviewRenderer(QProgressBar* p)
|
||||||
{
|
{
|
||||||
|
m_Pb = p;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual ~PreviewRenderer()
|
virtual ~PreviewRenderer()
|
||||||
@ -669,8 +670,10 @@ public:
|
|||||||
void Stop()
|
void Stop()
|
||||||
{
|
{
|
||||||
m_PreviewRun = false;
|
m_PreviewRun = false;
|
||||||
m_PreviewRenderer.Abort();
|
m_PreviewRenderer.Reset();
|
||||||
m_PreviewResult.waitForFinished();
|
|
||||||
|
while (m_PreviewResult.isRunning())
|
||||||
|
QApplication::processEvents();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool EarlyClip()
|
bool EarlyClip()
|
||||||
@ -696,6 +699,7 @@ protected:
|
|||||||
vector<unsigned char> m_PreviewVec;
|
vector<unsigned char> m_PreviewVec;
|
||||||
vv4F m_PreviewFinalImage;
|
vv4F m_PreviewFinalImage;
|
||||||
EmberNs::Renderer<T, float> m_PreviewRenderer;
|
EmberNs::Renderer<T, float> m_PreviewRenderer;
|
||||||
|
QProgressBar* m_Pb = nullptr;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QFuture<void> m_PreviewResult;
|
QFuture<void> m_PreviewResult;
|
||||||
@ -714,6 +718,7 @@ public:
|
|||||||
using PreviewRenderer<T>::m_PreviewVec;
|
using PreviewRenderer<T>::m_PreviewVec;
|
||||||
using PreviewRenderer<T>::m_PreviewRenderer;
|
using PreviewRenderer<T>::m_PreviewRenderer;
|
||||||
using PreviewRenderer<T>::m_PreviewFinalImage;
|
using PreviewRenderer<T>::m_PreviewFinalImage;
|
||||||
|
using PreviewRenderer<T>::m_Pb;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initializes a new instance of the <see cref="TreePreviewRenderer{T}"/> class.
|
/// Initializes a new instance of the <see cref="TreePreviewRenderer{T}"/> class.
|
||||||
@ -721,10 +726,11 @@ public:
|
|||||||
/// <param name="controller">A pointer to the controller this instance is a member of</param>
|
/// <param name="controller">A pointer to the controller this instance is a member of</param>
|
||||||
/// <param name="tree">A pointer to the tree to render to</param>
|
/// <param name="tree">A pointer to the tree to render to</param>
|
||||||
/// <param name="emberFile">A reference to the ember file to render</param>
|
/// <param name="emberFile">A reference to the ember file to render</param>
|
||||||
TreePreviewRenderer(FractoriumEmberController<T>* controller, QTreeWidget* tree, EmberFile<T>& emberFile) :
|
TreePreviewRenderer(FractoriumEmberController<T>* controller, QTreeWidget* tree, EmberFile<T>& emberFile, QProgressBar* p) :
|
||||||
m_Controller(controller),
|
m_Controller(controller),
|
||||||
m_Tree(tree),
|
m_Tree(tree),
|
||||||
m_EmberFile(emberFile)
|
m_EmberFile(emberFile),
|
||||||
|
PreviewRenderer<T>(p)
|
||||||
{
|
{
|
||||||
const auto f = m_Controller->m_Fractorium;
|
const auto f = m_Controller->m_Fractorium;
|
||||||
m_PreviewRenderer.Callback(nullptr);
|
m_PreviewRenderer.Callback(nullptr);
|
||||||
|
@ -465,7 +465,11 @@ void FractoriumEmberController<T>::RenderLibraryPreviews(uint start, uint end)
|
|||||||
}
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
void FractoriumEmberController<T>::StopLibraryPreviewRender() { m_LibraryPreviewRenderer->Stop(); }
|
void FractoriumEmberController<T>::StopLibraryPreviewRender()
|
||||||
|
{
|
||||||
|
m_LibraryPreviewRenderer->Stop();
|
||||||
|
QApplication::processEvents();
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Thing wrapper around StopLibraryPreviewRender() and StopSequencePreviewRender() to stop both preview renderers.
|
/// Thing wrapper around StopLibraryPreviewRender() and StopSequencePreviewRender() to stop both preview renderers.
|
||||||
@ -571,17 +575,18 @@ void FractoriumEmberController<T>::RenderSequencePreviews(uint start, uint end)
|
|||||||
RenderPreviews(m_Fractorium->ui.SequenceTree, m_SequencePreviewRenderer.get(), m_SequenceFile, start, end);
|
RenderPreviews(m_Fractorium->ui.SequenceTree, m_SequencePreviewRenderer.get(), m_SequenceFile, start, end);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Fractorium::OnSequenceStartPreviewsButtonClicked(bool checked)
|
void Fractorium::OnSequenceStartPreviewsButtonClicked(bool checked) { m_Controller->RenderSequencePreviews(); }
|
||||||
{
|
|
||||||
m_Controller->RenderSequencePreviews();
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Stop rendering the sequence previews.
|
/// Stop rendering the sequence previews.
|
||||||
/// Called when Stop Previews is clicked.
|
/// Called when Stop Previews is clicked.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
template <typename T>
|
template <typename T>
|
||||||
void FractoriumEmberController<T>::StopSequencePreviewRender() { m_SequencePreviewRenderer->Stop(); }
|
void FractoriumEmberController<T>::StopSequencePreviewRender()
|
||||||
|
{
|
||||||
|
m_SequencePreviewRenderer->Stop();
|
||||||
|
QApplication::processEvents();
|
||||||
|
}
|
||||||
void Fractorium::OnSequenceStopPreviewsButtonClicked(bool checked) { m_Controller->StopSequencePreviewRender(); }
|
void Fractorium::OnSequenceStopPreviewsButtonClicked(bool checked) { m_Controller->StopSequencePreviewRender(); }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -290,13 +290,13 @@ void FractoriumEmberController<T>::OpenAndPrepFiles(const QStringList& filenames
|
|||||||
{
|
{
|
||||||
if (!filenames.empty())
|
if (!filenames.empty())
|
||||||
{
|
{
|
||||||
|
StopAllPreviewRenderers();
|
||||||
size_t i;
|
size_t i;
|
||||||
EmberFile<T> emberFile;
|
EmberFile<T> emberFile;
|
||||||
XmlToEmber<T> parser;
|
XmlToEmber<T> parser;
|
||||||
vector<Ember<T>> embers;
|
vector<Ember<T>> embers;
|
||||||
vector<string> errors;
|
vector<string> errors;
|
||||||
uint previousSize = append ? uint(m_EmberFile.Size()) : 0u;
|
uint previousSize = append ? uint(m_EmberFile.Size()) : 0u;
|
||||||
StopAllPreviewRenderers();
|
|
||||||
emberFile.m_Filename = filenames[0];
|
emberFile.m_Filename = filenames[0];
|
||||||
|
|
||||||
for (auto& filename : filenames)
|
for (auto& filename : filenames)
|
||||||
|
@ -641,7 +641,7 @@ bool FractoriumEmberController<T>::CreateRenderer(eRendererType renderType, cons
|
|||||||
|
|
||||||
if (updatePreviews)
|
if (updatePreviews)
|
||||||
{
|
{
|
||||||
m_LibraryPreviewRenderer = make_unique<TreePreviewRenderer<T>>(this, m_Fractorium->ui.LibraryTree, m_EmberFile);//Will take the same settings as the main renderer.
|
m_LibraryPreviewRenderer = make_unique<TreePreviewRenderer<T>>(this, m_Fractorium->ui.LibraryTree, m_EmberFile, nullptr);//Will take the same settings as the main renderer.
|
||||||
RenderLibraryPreviews();
|
RenderLibraryPreviews();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user