mirror of
https://bitbucket.org/mfeemster/fractorium.git
synced 2025-01-22 05:30:06 -05:00
330074cfb2
-Add new variations: bubbleT3D, crob, hexaplay3D, hexcrop, hexes, hexnix3D, loonie2, loonie3, nBlur, octapol and synth. -Allow for pre/post versions of dc_bubble, dc_cylinder and dc_linear whereas before they were omitted. -When saving a file with multiple embers in it, detect if time values are all the same and if so, start them at zero and increment by 1 for each ember. -Allow for numerous quality increases to be coalesced into one. It will pick up at the end of the current render. -Show selection highlight on variations tree in response to mouse hover. This makes it easier to see for which variation or param the current mouse wheel action will apply. -Make default temporal samples be 100, whereas before it was 1000 which was overkill. -Require the shift key to be held with delete for deleting an ember to prevent it from triggering when the user enters delete in the edit box. -This wasn't otherwise fixable without writing a lot more code. --Bug fixes -EmberGenome was crashing when generating a sequence from a source file with more than 2 embers in it. -EmberGenome was improperly handling the first frame of a merge after the last frame of the loop. -These bugs were due to a previous commit. Revert parts of that commit. -Prevent a zoom value of less than 0 when reading from xml. -Slight optimization of the crescents, and mask variations, if the compiler wasn't doing it already. -Unique file naming was broken because it was looking for _# and the default names ended with -#. -Disallow renaming of an ember in the library tree to an empty string. -Severe bug that prevented some variations from being read correctly from params generated outside this program. -Severe OpenCL randomization bug. The first x coordinates of the first points in the first kernel call of the first ember of a render since the OpenCL renderer object was created were not random and were mostly -1. -Severe bug when populating xform selection distributions that could sometimes cause a crash due to roundoff error. Fix by using double. -Limit the max number of variations in a random ember to MAX_CL_VARS, which is 8. This ensures they'll look the same on CPU and GPU. -Prevent user from saving stylesheet to default.qss, it's a special reserved filename. --Code changes -Generalize using the running sum output point inside of a variation for all cases: pre, reg and post. -Allow for array variables in variations where the address of each element is stored in m_Params. -Qualify all math functions with std:: -No longer use our own Clamp() in OpenCL, instead use the standard clamp(). -Redesign how functions are used in the variations OpenCL code. -Add tests to EmberTester to verify some of the new functionality. -Place more const and override qualifiers on functions where appropriate. -Add a global rand with a lock to be used very sparingly. -Use a map instead of a vector for bad param names in Xml parsing. -Prefix affine interpolation mode defines with "AFFINE_" to make their purpose more clear. -Allow for variations that change state during iteration by sending a separate copy of the ember to each rendering thread. -Implement this same functionality with a local struct in OpenCL. It's members are the total of all variables that need to change state within an ember. -Add Contains() function to Utils.h. -EmberRender: print names of kernels being printed with --dump_kernel option. -Clean up EmberTester to handle some of the recent changes. -Fix various casts. -Replace % 2 with & 1, even though the compiler was likely doing this already. -Add new file Variations06.h to accommodate new variations. -General cleanup.
620 lines
11 KiB
Plaintext
620 lines
11 KiB
Plaintext
/*---Base Style---
|
||
This is needed to deal with the large tabs in the fusion theme which is the default on Linux, and optional on Windows.
|
||
It's not needed for other themes.
|
||
You should keep this at the top of whatever custom style you make to ensure the tabs aren't unusually large.*/
|
||
QTabBar::tab { height: 5ex; }/*Do this for windows*/
|
||
/*QTabBar::tab { height: 3ex; }*//*Do this for linux*/
|
||
|
||
/*This is needed to give the labels on the status bar some padding.*/
|
||
QStatusBar QLabel { padding-left: 2px; padding-right: 2px; }
|
||
|
||
/*Specific styles below this line*/
|
||
|
||
QObject
|
||
{
|
||
background-color : rgb(53, 53, 53);
|
||
color: darkgray;
|
||
alternate-background-color: rgb(53, 53, 53);
|
||
selection-color: black;
|
||
selection-background-color: rgb(42, 130, 218);
|
||
}
|
||
|
||
QObject:disabled
|
||
{
|
||
color: rgb(35, 35, 35);
|
||
background-color: rgb(53, 53, 53);
|
||
border-color: rgb(35, 35, 35);
|
||
}
|
||
|
||
QDockWidget::float-button
|
||
{
|
||
background-color: gray;
|
||
}
|
||
|
||
QDockWidget::title
|
||
{
|
||
margin: 1px;
|
||
padding: 2px;
|
||
background-color: gray;
|
||
}
|
||
|
||
QTabWidget::pane
|
||
{
|
||
border: 1px solid gray;
|
||
}
|
||
|
||
QPushButton
|
||
{
|
||
margin: 1px;
|
||
padding: 4px;
|
||
border: 1px solid gray;
|
||
}
|
||
|
||
QPushButton:pressed
|
||
{
|
||
background-color: gray;
|
||
}
|
||
|
||
QPushButton:focus
|
||
{
|
||
outline: none;
|
||
}
|
||
|
||
QTableView QPushButton
|
||
{
|
||
border: 1px solid gray;
|
||
margin: 1px;
|
||
padding: 0px;
|
||
}
|
||
|
||
QLineEdit, QTextEdit
|
||
{
|
||
border: 1px solid gray;
|
||
color: darkgray;
|
||
background-color: rgb(40, 40, 50);
|
||
selection-background-color: darkgray;
|
||
}
|
||
|
||
QToolTip
|
||
{
|
||
background-color: darkgray;
|
||
border: 1px solid darkgray;
|
||
}
|
||
|
||
QSpinBox,
|
||
QDoubleSpinBox
|
||
{
|
||
padding-right: 0px;
|
||
color: darkgray;
|
||
selection-background-color: darkgray;
|
||
font: 9pt "Segoe UI";/*For some reason the font changes if you set any style. Set this to whatever font is the default on your system*/
|
||
}
|
||
|
||
QCheckBox
|
||
{
|
||
spacing: 5px;
|
||
}
|
||
|
||
QCheckBox::indicator,
|
||
QTableView::indicator
|
||
{
|
||
border: none;
|
||
border-radius: 2px;
|
||
background-color: lightgray;
|
||
}
|
||
|
||
QCheckBox::indicator:enabled:unchecked,
|
||
QTableView::indicator:enabled:unchecked
|
||
{
|
||
background-color: lightgray;
|
||
image: url(:/Fractorium/Icons/checkbox_unchecked.png);
|
||
}
|
||
|
||
QCheckBox::indicator:enabled:checked,
|
||
QTableView::indicator:enabled:checked
|
||
{
|
||
background-color: lightgray;
|
||
image: url(:/Fractorium/Icons/checkbox_checked.png);
|
||
}
|
||
|
||
QCheckBox::indicator:disabled:unchecked,
|
||
QTableView::indicator:disabled:unchecked
|
||
{
|
||
background-color: gray;
|
||
image: none;
|
||
}
|
||
|
||
QCheckBox::indicator:disabled:checked,
|
||
QTableView::indicator:disabled:checked
|
||
{
|
||
background-color: gray;
|
||
image: none;
|
||
}
|
||
|
||
QRadioButton::indicator:checked
|
||
{
|
||
background-color: black;
|
||
border: 2px solid gray;
|
||
border-radius: 7px;
|
||
width: 8px;
|
||
height: 8px;
|
||
margin: 3px;
|
||
padding: 1px;
|
||
}
|
||
|
||
QRadioButton::indicator:checked:disabled
|
||
{
|
||
background-color: rgb(35, 35, 35);
|
||
}
|
||
|
||
QRadioButton::indicator:unchecked
|
||
{
|
||
border: 2px solid gray;
|
||
border-radius: 7px;
|
||
width: 8px;
|
||
height: 8px;
|
||
margin: 3px;
|
||
padding: 1px;
|
||
}
|
||
|
||
QComboBox
|
||
{
|
||
margin: 0px;
|
||
padding-left: 4px;
|
||
border: 1px solid gray;
|
||
}
|
||
|
||
QComboBox::down-arrow:enabled
|
||
{
|
||
border: 1px solid gray;
|
||
margin-right: 2px;
|
||
margin-top: 0px;
|
||
margin-bottom: 1px;
|
||
}
|
||
|
||
|
||
QComboBox::down-arrow:disabled
|
||
{
|
||
border: 1px solid rgb(35, 35, 35);
|
||
margin-right: 2px;
|
||
margin-top: 0px;
|
||
margin-bottom: 1px;
|
||
}
|
||
|
||
QComboBox::drop-down
|
||
{
|
||
border: none;
|
||
}
|
||
|
||
/*For some reason this is needed with Fusion, but not with Windows*/
|
||
QComboBox::item:selected
|
||
{
|
||
selection-background-color: darkgray;
|
||
}
|
||
|
||
QComboBox QAbstractItemView
|
||
{
|
||
border: 1px solid gray;
|
||
outline: none;
|
||
selection-background-color: darkgray;
|
||
}
|
||
|
||
QTableView QComboBox
|
||
{
|
||
margin: 1px;
|
||
padding: 0px;
|
||
padding-left: 3px;
|
||
}
|
||
|
||
QGroupBox QComboBox
|
||
{
|
||
margin: 1px;
|
||
margin-bottom: 0px;
|
||
}
|
||
|
||
QTableView QComboBox::down-arrow
|
||
{
|
||
margin-top: 0px;
|
||
margin-right: 1px;
|
||
margin-bottom: 0px;
|
||
}
|
||
|
||
QProgressBar
|
||
{
|
||
color: black;
|
||
background-color: gray;
|
||
border: 0px none gray;
|
||
border-radius: 3px;
|
||
text-align: center;
|
||
}
|
||
|
||
QProgressBar::chunk
|
||
{
|
||
border-radius: 3px;
|
||
background-color: lightgray;
|
||
}
|
||
|
||
QStatusBar QProgressBar
|
||
{
|
||
min-width: 300px;
|
||
max-width: 300px;
|
||
margin-right: 4px;
|
||
}
|
||
|
||
QMenuBar
|
||
{
|
||
border-bottom: 1px solid gray;
|
||
}
|
||
|
||
QMenuBar::item
|
||
{
|
||
background-color: rgb(53, 53, 53);
|
||
}
|
||
|
||
QMenu::item:disabled
|
||
{
|
||
color: rgb(35, 35, 35);
|
||
|
||
}
|
||
|
||
QMenu::item:enabled:selected
|
||
{
|
||
background-color: gray;
|
||
}
|
||
|
||
QMenu::item:disabled:selected
|
||
{
|
||
background-color: rgb(53, 53, 53);
|
||
}
|
||
|
||
QToolBar
|
||
{
|
||
border: 0px none gray;
|
||
}
|
||
|
||
QGroupBox
|
||
{
|
||
padding-top: 3px;
|
||
border: 2px solid gray;
|
||
border-radius: 4px;
|
||
margin-top: 3ex;
|
||
}
|
||
|
||
QGroupBox::title
|
||
{
|
||
subcontrol-origin: border;
|
||
subcontrol-position: top left;
|
||
margin-top: -1ex;
|
||
margin-left: 0px;
|
||
padding-right: 1px;
|
||
padding-left: 2px;
|
||
top: -2ex;
|
||
left: 8px;
|
||
}
|
||
|
||
QListView
|
||
{
|
||
selection-color: black;
|
||
selection-background-color: darkgray;
|
||
}
|
||
|
||
QListView::item:selected
|
||
{
|
||
background-color: darkgray;
|
||
}
|
||
|
||
QTreeView
|
||
{
|
||
border: 1px solid gray;
|
||
background-color: rgb(53, 53, 53);
|
||
}
|
||
|
||
/*Setting this gives a more consistent look, but removes the ability to gray variations that are included in the xform*/
|
||
QTreeView::item
|
||
{
|
||
background-color: rgb(53, 53, 53);
|
||
color: darkgray;
|
||
outline: none;
|
||
margin-right: 1px;
|
||
}
|
||
|
||
QTreeView::item:hover
|
||
{
|
||
border: 0px none black;
|
||
background-color: gray;
|
||
outline: none;
|
||
}
|
||
|
||
QTreeView::item:selected
|
||
{
|
||
border: 0px none black;
|
||
background-color: gray;
|
||
outline: none;
|
||
}
|
||
|
||
QTreeView::branch:!has-children
|
||
{
|
||
background: rgb(53, 53, 53);
|
||
}
|
||
|
||
QTreeView::branch:has-children:closed
|
||
{
|
||
border: 1px solid darkgray;
|
||
background: gray;
|
||
margin: 2px;
|
||
}
|
||
|
||
QTreeView::branch:has-children:!closed
|
||
{
|
||
border: 1px solid lightgray;
|
||
background: gray;
|
||
margin-left: 1px;
|
||
margin-right: 0px;
|
||
margin-top: 3px;
|
||
margin-bottom: 3px;
|
||
}
|
||
|
||
QTableView
|
||
{
|
||
border-left: 0px none gray;
|
||
border-top: 0px none gray;
|
||
border-right: 0px none gray;
|
||
border-bottom: 0px none gray;
|
||
gridline-color: gray;
|
||
color: darkgray;
|
||
selection-color: darkgray;
|
||
selection-background-color: rgb(53, 53, 53);
|
||
}
|
||
|
||
QTableView QTableCornerButton::section:enabled
|
||
{
|
||
background-color: darkgray;
|
||
}
|
||
|
||
QTableView QTableCornerButton::section:disabled
|
||
{
|
||
background-color: rgb(53, 53, 53);
|
||
}
|
||
|
||
QTableView::indicator:disabled
|
||
{
|
||
background-color: rgb(35, 35, 35);
|
||
}
|
||
|
||
QTableView:disabled
|
||
{
|
||
color: rgb(35, 35, 35);
|
||
border: none;
|
||
gridline-color: rgb(35, 35, 35);
|
||
}
|
||
|
||
QHeaderView::section::vertical:enabled
|
||
{
|
||
color: black;
|
||
background-color: gray;
|
||
border: none;
|
||
border-bottom: 1px solid gray;
|
||
padding: 4px;
|
||
}
|
||
|
||
QHeaderView::section::horizontal:enabled
|
||
{
|
||
color: black;
|
||
background-color: darkgray;
|
||
border: 0px solid darkgray;
|
||
border-right: 1px solid gray;
|
||
padding: 4px;
|
||
}
|
||
|
||
QHeaderView::section::vertical:disabled
|
||
{
|
||
color: rgb(35, 35, 35);
|
||
background-color: rgb(53, 53, 53);
|
||
border: 0px none darkgray;
|
||
border-bottom: 1px solid rgb(53, 53, 53);
|
||
padding: 4px;
|
||
}
|
||
|
||
QHeaderView::section::horizontal:disabled
|
||
{
|
||
color:rgb(35, 35, 35);
|
||
background-color: rgb(53, 53, 53);
|
||
border: 0px none darkgray;
|
||
border-right: 1px solid rgb(53, 53, 53);
|
||
padding: 4px;
|
||
}
|
||
|
||
QScrollBar::vertical
|
||
{
|
||
background-color: darkgray;
|
||
border: 0px solid darkgray;
|
||
width: 15px;
|
||
margin: 22px 0 22px 0;
|
||
}
|
||
|
||
QScrollBar::handle::vertical
|
||
{
|
||
background-color: gray;
|
||
border-top: 1px solid darkgray;
|
||
border-bottom: 1px solid darkgray;
|
||
min-height: 20px;
|
||
}
|
||
|
||
QScrollBar::add-line::vertical
|
||
{
|
||
border: 0px solid darkgray;
|
||
background-color: gray;
|
||
height: 22px;
|
||
subcontrol-position: bottom;
|
||
subcontrol-origin: margin;
|
||
}
|
||
|
||
QScrollBar::sub-line::vertical
|
||
{
|
||
border: 0px solid darkgray;
|
||
background-color: gray;
|
||
height: 22px;
|
||
subcontrol-position: top;
|
||
subcontrol-origin: margin;
|
||
}
|
||
|
||
QScrollBar::up-arrow::vertical, QScrollBar::down-arrow::vertical
|
||
{
|
||
border: 2px solid darkgray;
|
||
width: 5px;
|
||
height: 12px;
|
||
background-color: gray;
|
||
}
|
||
|
||
QScrollBar::add-page::vertical, QScrollBar::sub-page::vertical, QScrollBar::add-page::horizontal, QScrollBar::sub-page::horizontal
|
||
{
|
||
background-color: darkgray;
|
||
}
|
||
|
||
QScrollBar::horizontal
|
||
{
|
||
background-color: darkgray;
|
||
border: 0px solid darkgray;
|
||
height: 15px;
|
||
margin: 0px 20px 0 20px;
|
||
}
|
||
|
||
QScrollBar::handle::horizontal
|
||
{
|
||
background-color: gray;
|
||
border-left: 1px solid darkgray;
|
||
border-right: 1px solid darkgray;
|
||
min-width: 20px;
|
||
}
|
||
|
||
QScrollBar::add-line::horizontal
|
||
{
|
||
border: 0px solid darkgray;
|
||
background-color: gray;
|
||
width: 20px;
|
||
subcontrol-position: right;
|
||
subcontrol-origin: margin;
|
||
}
|
||
|
||
QScrollBar::sub-line::horizontal
|
||
{
|
||
border: 0px solid darkgray;
|
||
background-color: gray;
|
||
width: 20px;
|
||
subcontrol-position: left;
|
||
subcontrol-origin: margin;
|
||
}
|
||
|
||
QScrollBar::left-arrow::horizontal, QScrollBar::right-arrow::horizontal
|
||
{
|
||
border: 2px solid darkgray;
|
||
width: 12px;
|
||
height: 5px;
|
||
background-color: gray;
|
||
}
|
||
|
||
QMenu::separator
|
||
{
|
||
height: 1px;
|
||
background-color: gray;
|
||
}
|
||
|
||
QToolBar::separator
|
||
{
|
||
width: 1px;
|
||
margin-top: 3px;
|
||
margin-bottom: 2px;
|
||
background-color: gray;
|
||
}
|
||
|
||
QStatusBar::item
|
||
{
|
||
border: none;
|
||
}
|
||
|
||
/*Specific controls*/
|
||
QTableWidget#ColorTableHeader QHeaderView::section::horizontal,
|
||
QTableWidget#GeometryTableHeader QHeaderView::section::horizontal,
|
||
QTableWidget#FilterTableHeader QHeaderView::section::horizontal,
|
||
QTableWidget#IterationTableHeader QHeaderView::section::horizontal,
|
||
QTreeWidget#LibraryTree QHeaderView::section::horizontal
|
||
{
|
||
border-right: none;
|
||
}
|
||
|
||
QTableWidget#ColorTable,
|
||
QTableWidget#GeometryTable,
|
||
QTableWidget#FilterTable,
|
||
QTableWidget#IterationTable,
|
||
QTableWidget#XformWeightNameTable
|
||
{
|
||
border-left: 1px solid gray;
|
||
}
|
||
|
||
QTableWidget#SummaryTable,
|
||
QTableWidget#PaletteListTable
|
||
{
|
||
border-left: 1px solid gray;
|
||
}
|
||
|
||
QTableWidget#SummaryTable QHeaderView::section::vertical
|
||
{
|
||
background-color: darkgray;
|
||
}
|
||
|
||
QTableWidget#PaletteAdjustTable,
|
||
QTableWidget#PalettePreviewTable,
|
||
QTableWidget#XformColorIndexTable,
|
||
QTableWidget#XformColorValuesTable,
|
||
QTableWidget#InfoBoundsTable,
|
||
QTableWidget#OptionsXmlSavingTable,
|
||
QTableWidget#OptionsIdentityTable,
|
||
QTableWidget#FinalRenderSizeTable,
|
||
QTableWidget#FinalRenderParamsTable
|
||
{
|
||
border-left: 1px solid gray;
|
||
border-top: 1px solid gray;
|
||
}
|
||
|
||
QLineEdit#PaletteFilterLineEdit,
|
||
QLineEdit#VariationsFilterLineEdit
|
||
{
|
||
height: 20px;
|
||
min-height: 20px;
|
||
max-height: 20px;
|
||
}
|
||
|
||
QSpinBox#ThreadCountSpin,
|
||
QSpinBox#RandomCountSpin,
|
||
QSpinBox#CpuSubBatchSpin,
|
||
QSpinBox#OpenCLSubBatchSpin,
|
||
QSpinBox#FinalRenderCurrentSpin,
|
||
QSpinBox#FinalRenderThreadCountSpin
|
||
{
|
||
padding: 2px;
|
||
border: 1px solid gray;
|
||
}
|
||
|
||
QSpinBox#ThreadCountSpin:disabled,
|
||
QSpinBox#CpuSubBatchSpin:disabled,
|
||
QSpinBox#OpenCLSubBatchSpin:disabled,
|
||
QSpinBox#FinalRenderCurrentSpin:disabled,
|
||
QSpinBox#FinalRenderThreadCountSpin:disabled
|
||
{
|
||
padding: 2px;
|
||
border: 1px solid rgb(35, 35, 35);
|
||
}
|
||
|
||
QTableView#FinalRenderParamsTable QComboBox
|
||
{
|
||
margin-top: 0px;
|
||
margin-bottom: 0px;
|
||
}
|
||
|
||
QTableView#FinalRenderParamsTable QPushButton
|
||
{
|
||
margin-top: 1px;
|
||
margin-bottom: 2px;
|
||
padding: 0px;
|
||
}
|
||
|