Scroll panels for certain areas of the UI

0.4.0.6 Beta 07/22/2014
--User Changes
Place certain areas of the UI on scroll panels so they are not obscured
on low resolution monitors.
This commit is contained in:
mfeemster 2014-07-22 07:53:36 -07:00
parent 280473c8a0
commit ed8850e3db
12 changed files with 1631 additions and 1443 deletions

4
.gitignore vendored
View File

@ -27,4 +27,6 @@
*.idb
*.flam3
*moc_*
*GeneratedFiles*
*GeneratedFiles*
*.unsuccessfulbuild
*\Obj\*

View File

@ -6,7 +6,7 @@
<ProductVersion>3.7</ProductVersion>
<ProjectGuid>{c8096c47-e358-438c-a520-146d46b0637d}</ProjectGuid>
<SchemaVersion>2.0</SchemaVersion>
<OutputName>Fractorium_Beta_0.4.0.5</OutputName>
<OutputName>Fractorium_Beta_0.4.0.6</OutputName>
<OutputType>Package</OutputType>
<WixTargetsPath Condition=" '$(WixTargetsPath)' == '' AND '$(MSBuildExtensionsPath32)' != '' ">$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath>
<WixTargetsPath Condition=" '$(WixTargetsPath)' == '' ">$(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<?define ProductVersion="0.4.0.5" ?>
<?define ProductVersion="0.4.0.6" ?>
<?define ProductName="Fractorium Beta $(var.ProductVersion) ($(var.GpuType))" ?>
<?define UpgradeCode="{4714cd15-bfba-44f6-8059-9e1466ebfa6e}"?>
<?define Manufacturer="Fractorium"?>
@ -13,7 +13,7 @@
<!--
Change this for every release.
-->
<?define ProductCode="{9059E2AE-AC08-44B1-93D5-AAAC258506E6}"?>
<?define ProductCode="{16DA4191-1391-40D5-BA37-C4BC0ADED012}"?>
<Product Id="$(var.ProductCode)" Name="$(var.ProductName)" Language="1033" Version="$(var.ProductVersion)" Manufacturer="$(var.Manufacturer)" UpgradeCode="$(var.UpgradeCode)">
<Package

View File

@ -1,3 +1,7 @@
0.4.0.6 Beta 07/22/2014
--User Changes
Place certain areas of the UI on scroll panels so they are not obscured on low resolution monitors.
0.4.0.5 Beta 07/18/2014
--User Changes
Allow for vibrancy values > 1.

View File

@ -1095,6 +1095,10 @@ public:
std::sort(m_Xforms.end() - result, m_Xforms.end(), &Interpolater<T>::CompareXforms);
}
/// <summary>
/// Return a uint with bits set to indicate which kind of projection should be done.
/// </summary>
/// <param name="onlyScaleIfNewIsSmaller">A uint with bits set for each kind of projection that is needed</param>
unsigned int ProjBits()
{
unsigned int val = 0;
@ -1108,15 +1112,30 @@ public:
return val;
}
/// <summary>
/// Call the appropriate projection function via function pointer.
/// </summary>
/// <param name="point">The point to project</param>
/// <param name="rand">The Isaac object to pass to the projection functions</param>
inline void Proj(Point<T>& point, QTIsaac<ISAAC_SIZE, ISAAC_INT>& rand)
{
(this->*m_ProjFunc)(point, rand);
}
/// <summary>
/// Placeholder to do nothing.
/// </summary>
/// <param name="point">Unused</param>
/// <param name="rand">Unused</param>
void ProjectNone(Point<T>& point, QTIsaac<ISAAC_SIZE, ISAAC_INT>& rand)
{
}
/// <summary>
/// Project when only z is set, and not pitch, yaw, projection or depth blur.
/// </summary>
/// <param name="point">The point to project</param>
/// <param name="rand">Unused</param>
void ProjectZPerspective(Point<T>& point, QTIsaac<ISAAC_SIZE, ISAAC_INT>& rand)
{
T zr = Zeps(1 - m_CamPerspective * (point.m_Z - m_CamZPos));
@ -1126,6 +1145,11 @@ public:
point.m_Z -= m_CamZPos;
}
/// <summary>
/// Project when pitch, and optionally z and perspective are set, but not depth blur or yaw.
/// </summary>
/// <param name="point">The point to project</param>
/// <param name="rand">Unused</param>
void ProjectPitch(Point<T>& point, QTIsaac<ISAAC_SIZE, ISAAC_INT>& rand)
{
T z = point.m_Z - m_CamZPos;
@ -1137,6 +1161,11 @@ public:
point.m_Z -= m_CamZPos;
}
/// <summary>
/// Project when depth blur, and optionally pitch, perspective and z are set, but not yaw.
/// </summary>
/// <param name="point">The point to project</param>
/// <param name="rand">Used for blurring</param>
void ProjectPitchDepthBlur(Point<T>& point, QTIsaac<ISAAC_SIZE, ISAAC_INT>& rand)
{
T y, z, zr;
@ -1157,6 +1186,11 @@ public:
point.m_Z -= m_CamZPos;
}
/// <summary>
/// Project when depth blur, yaw and optionally pitch are set, but not perspective and z.
/// </summary>
/// <param name="point">The point to project</param>
/// <param name="rand">Used for blurring</param>
void ProjectPitchYawDepthBlur(Point<T>& point, QTIsaac<ISAAC_SIZE, ISAAC_INT>& rand)
{
T dsin, dcos;
@ -1177,6 +1211,11 @@ public:
point.m_Z -= m_CamZPos;
}
/// <summary>
/// Project when yaw and optionally pitch, z, and perspective are set, but not depth blur.
/// </summary>
/// <param name="point">The point to project</param>
/// <param name="rand">Unused</param>
void ProjectPitchYaw(Point<T>& point, QTIsaac<ISAAC_SIZE, ISAAC_INT>& rand)
{
T z = point.m_Z - m_CamZPos;
@ -1573,11 +1612,12 @@ public:
private:
/// <summary>
/// Interps the t.
/// Interpolation function that takes the address of a member variable of type T as a template parameter.
/// This is an alternative to using macros.
/// </summary>
/// <param name="embers">The embers.</param>
/// <param name="coefs">The coefs.</param>
/// <param name="size">The size.</param>
/// <param name="embers">The list of embers to interpolate</param>
/// <param name="coefs">The list of coefficients to interpolate</param>
/// <param name="size">The size of the lists, both must match.</param>
template <T Ember<T>::*m>
void InterpT(Ember<T>* embers, vector<T>& coefs, size_t size)
{
@ -1587,6 +1627,12 @@ private:
this->*m += coefs[k] * embers[k].*m;
}
/// <summary>
/// Interpolation function that takes the address of a member variable of any type as a template parameter.
/// </summary>
/// <param name="embers">The list of embers to interpolate</param>
/// <param name="coefs">The list of coefficients to interpolate</param>
/// <param name="size">The size of the lists, both must match.</param>
template <typename M, M Ember<T>::*m>
void InterpX(Ember<T>* embers, vector<T>& coefs, size_t size)
{
@ -1596,6 +1642,12 @@ private:
this->*m += coefs[k] * embers[k].*m;
}
/// <summary>
/// Interpolation function that takes the address of a member variable of type integer as a template parameter.
/// </summary>
/// <param name="embers">The list of embers to interpolate</param>
/// <param name="coefs">The list of coefficients to interpolate</param>
/// <param name="size">The size of the lists, both must match.</param>
template <unsigned int Ember<T>::*m>
void InterpI(Ember<T>* embers, vector<T>& coefs, size_t size)
{
@ -1607,6 +1659,15 @@ private:
this->*m = (int)Rint(t);
}
/// <summary>
/// Interpolation function that takes the address of an xform member variable of type T as a template parameter.
/// This is an alternative to using macros.
/// </summary>
/// <param name="xform">A pointer to a list of xforms to interpolate</param>
/// <param name="i">The xform index to interpolate</param>
/// <param name="embers">The list of embers to interpolate</param>
/// <param name="coefs">The list of coefficients to interpolate</param>
/// <param name="size">The size of the lists, both must match.</param>
template <T Xform<T>::*m>
void InterpXform(Xform<T>* xform, unsigned int i, Ember<T>* embers, vector<T>& coefs, size_t size)
{

View File

@ -25,7 +25,7 @@ namespace EmberNs
extern void sincos(double x, double *s, double *c);
#endif
#define EMBER_VERSION "0.4.0.5"
#define EMBER_VERSION "0.4.0.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 ISAAC_SIZE 4

View File

@ -49,8 +49,8 @@ END
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 0,4,0,5
PRODUCTVERSION 0,4,0,5
FILEVERSION 0,4,0,6
PRODUCTVERSION 0,4,0,6
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
@ -67,12 +67,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "Open Source"
VALUE "FileDescription", "Renders fractal flames as animations with motion blur"
VALUE "FileVersion", "0.4.0.5"
VALUE "FileVersion", "0.4.0.6"
VALUE "InternalName", "EmberAnimate.rc"
VALUE "LegalCopyright", "Copyright (C) Matt Feemster 2013, GPL v3"
VALUE "OriginalFilename", "EmberAnimate.rc"
VALUE "ProductName", "Ember Animate"
VALUE "ProductVersion", "0.4.0.5"
VALUE "ProductVersion", "0.4.0.6"
END
END
BLOCK "VarFileInfo"

View File

@ -49,8 +49,8 @@ END
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 0,4,0,5
PRODUCTVERSION 0,4,0,5
FILEVERSION 0,4,0,6
PRODUCTVERSION 0,4,0,6
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
@ -67,12 +67,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "Open Source"
VALUE "FileDescription", "Manipulates fractal flames parameter files"
VALUE "FileVersion", "0.4.0.5"
VALUE "FileVersion", "0.4.0.6"
VALUE "InternalName", "EmberGenome.rc"
VALUE "LegalCopyright", "Copyright (C) Matt Feemster 2013, GPL v3"
VALUE "OriginalFilename", "EmberGenome.rc"
VALUE "ProductName", "Ember Genome"
VALUE "ProductVersion", "0.4.0.5"
VALUE "ProductVersion", "0.4.0.6"
END
END
BLOCK "VarFileInfo"

View File

@ -49,8 +49,8 @@ END
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 0,4,0,5
PRODUCTVERSION 0,4,0,5
FILEVERSION 0,4,0,6
PRODUCTVERSION 0,4,0,6
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
@ -67,12 +67,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "Open Source"
VALUE "FileDescription", "Renders fractal flames as single images"
VALUE "FileVersion", "0.4.0.5"
VALUE "FileVersion", "0.4.0.6"
VALUE "InternalName", "EmberRender.rc"
VALUE "LegalCopyright", "Copyright (C) Matt Feemster 2013, GPL v3"
VALUE "OriginalFilename", "EmberRender.rc"
VALUE "ProductName", "Ember Render"
VALUE "ProductVersion", "0.4.0.5"
VALUE "ProductVersion", "0.4.0.6"
END
END
BLOCK "VarFileInfo"

View File

@ -52,7 +52,7 @@
</font>
</property>
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;center&quot;&gt;&lt;br/&gt;&lt;span style=&quot; font-size:12pt;&quot;&gt;Fractorium 0.4.0.5 Beta&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;&lt;br/&gt;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.&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;Matt Feemster&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;center&quot;&gt;&lt;br/&gt;&lt;span style=&quot; font-size:12pt;&quot;&gt;Fractorium 0.4.0.6 Beta&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;&lt;br/&gt;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.&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;Matt Feemster&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="textFormat">
<enum>Qt::RichText</enum>

Binary file not shown.

File diff suppressed because it is too large Load Diff