diff --git a/src/App/Material.cpp b/src/App/Material.cpp
index af399dcc32..89c55430d1 100644
--- a/src/App/Material.cpp
+++ b/src/App/Material.cpp
@@ -31,19 +31,7 @@
#include "Application.h"
#include "Material.h"
-// Helper functions to consistently convert between float and long
-namespace
-{
-float fromPercent(long value)
-{
- return std::roundf(value) / 100.0F;
-}
-
-long toPercent(float value)
-{
- return std::lround(100.0 * value);
-}
-} // namespace
+#include
using namespace App;
@@ -351,9 +339,9 @@ App::Material Material::getDefaultAppearance()
};
App::Material mat(App::Material::DEFAULT);
- mat.transparency = fromPercent(hGrp->GetInt("DefaultShapeTransparency", 0));
- long shininess = toPercent(mat.shininess);
- mat.shininess = fromPercent(hGrp->GetInt("DefaultShapeShininess", shininess));
+ mat.transparency = Base::fromPercent(hGrp->GetInt("DefaultShapeTransparency", 0));
+ long shininess = Base::toPercent(mat.shininess);
+ mat.shininess = Base::fromPercent(hGrp->GetInt("DefaultShapeShininess", shininess));
// This is handled in the material code when using the object appearance
bool randomColor = hGrp->GetBool("RandomColor", false);
diff --git a/src/Base/Tools.h b/src/Base/Tools.h
index 6c0e0657ec..107be7617d 100644
--- a/src/Base/Tools.h
+++ b/src/Base/Tools.h
@@ -143,6 +143,16 @@ inline T toDegrees(T r)
return static_cast((r / M_PI) * 180.0);
}
+inline float fromPercent(const long value)
+{
+ return std::roundf(value) / 100.0F;
+}
+
+inline long toPercent(float value)
+{
+ return std::lround(100.0 * value);
+}
+
template
inline T fmod(T numerator, T denominator)
{
diff --git a/src/Gui/Dialogs/DlgMaterialPropertiesImp.cpp b/src/Gui/Dialogs/DlgMaterialPropertiesImp.cpp
index a121928968..2b59d320d6 100644
--- a/src/Gui/Dialogs/DlgMaterialPropertiesImp.cpp
+++ b/src/Gui/Dialogs/DlgMaterialPropertiesImp.cpp
@@ -28,6 +28,8 @@
#include "ui_DlgMaterialProperties.h"
#include "ViewProvider.h"
+#include
+
using namespace Gui::Dialog;
@@ -129,7 +131,7 @@ void DlgMaterialPropertiesImp::onSpecularColorChanged()
*/
void DlgMaterialPropertiesImp::onShininessValueChanged(int sh)
{
- customMaterial.shininess = (float)sh / 100.0F;
+ customMaterial.shininess = Base::fromPercent(sh);
}
/**
@@ -137,7 +139,7 @@ void DlgMaterialPropertiesImp::onShininessValueChanged(int sh)
*/
void DlgMaterialPropertiesImp::onTransparencyValueChanged(int sh)
{
- customMaterial.transparency = (float)sh / 100.0F;
+ customMaterial.transparency = Base::fromPercent(sh);
}
/**
diff --git a/src/Gui/PreferencePages/DlgSettingsLightSources.cpp b/src/Gui/PreferencePages/DlgSettingsLightSources.cpp
index 21e06721a2..d39fe4bf50 100644
--- a/src/Gui/PreferencePages/DlgSettingsLightSources.cpp
+++ b/src/Gui/PreferencePages/DlgSettingsLightSources.cpp
@@ -95,7 +95,7 @@ DlgSettingsLightSources::DlgSettingsLightSources(QWidget* parent)
QCheckBox* enabledCheckbox,
std::function setLightEnabled) {
light->color = Base::convertTo(colorButton->color());
- light->intensity = intensitySpinBox->value() / 100.F;
+ light->intensity = Base::fromPercent(intensitySpinBox->value());
light->direction =
Base::convertTo(azimuthElevationToDirection(horizontalAngleSpinBox->rawValue(),
verticalAngleSpinBox->rawValue()));
@@ -161,7 +161,7 @@ DlgSettingsLightSources::DlgSettingsLightSources(QWidget* parent)
view->getEnvironment()->ambientColor =
Base::convertTo(ui->ambientLightColor->color());
view->getEnvironment()->ambientIntensity =
- ui->ambientLightIntensitySpinBox->value() / 100.F;
+ Base::fromPercent(ui->ambientLightIntensitySpinBox->value());
};
connect(ui->ambientLightIntensitySpinBox,
diff --git a/src/Gui/View3DSettings.cpp b/src/Gui/View3DSettings.cpp
index cfdbfb65a6..287b4d6d77 100644
--- a/src/Gui/View3DSettings.cpp
+++ b/src/Gui/View3DSettings.cpp
@@ -38,6 +38,8 @@
#include "View3DSettings.h"
#include "View3DInventorViewer.h"
+#include
+
using namespace Gui;
View3DSettings::View3DSettings(ParameterGrp::handle hGrp,
@@ -150,9 +152,9 @@ void View3DSettings::OnChange(ParameterGrp::SubjectType &rCaller,ParameterGrp::M
}
}
else if (strcmp(Reason,"HeadlightIntensity") == 0) {
- long value = rGrp.GetInt("HeadlightIntensity", 100);
+ long value = rGrp.GetInt("HeadlightIntensity", 90);
for (auto _viewer : _viewers) {
- _viewer->getHeadlight()->intensity.setValue((float)value/100.0f);
+ _viewer->getHeadlight()->intensity.setValue(Base::fromPercent(value));
}
}
else if (strcmp(Reason,"EnableBacklight") == 0) {
@@ -186,7 +188,7 @@ void View3DSettings::OnChange(ParameterGrp::SubjectType &rCaller,ParameterGrp::M
else if (strcmp(Reason,"BacklightIntensity") == 0) {
long value = rGrp.GetInt("BacklightIntensity", 60);
for (auto _viewer : _viewers) {
- _viewer->getBacklight()->intensity.setValue((float)value/100.0f);
+ _viewer->getBacklight()->intensity.setValue(Base::fromPercent(value));
}
}
else if (strcmp(Reason,"EnableFillLight") == 0) {
@@ -220,7 +222,7 @@ void View3DSettings::OnChange(ParameterGrp::SubjectType &rCaller,ParameterGrp::M
else if (strcmp(Reason,"FillLightIntensity") == 0) {
long value = rGrp.GetInt("FillLightIntensity", 40);
for (auto _viewer : _viewers) {
- _viewer->getFillLight()->intensity.setValue((float)value/100.0f);
+ _viewer->getFillLight()->intensity.setValue(Base::fromPercent(value));
}
}
else if (strcmp(Reason,"AmbientLightColor") == 0) {
@@ -235,7 +237,7 @@ void View3DSettings::OnChange(ParameterGrp::SubjectType &rCaller,ParameterGrp::M
else if (strcmp(Reason,"AmbientLightIntensity") == 0) {
long value = rGrp.GetInt("AmbientLightIntensity", 20);
for (auto _viewer : _viewers) {
- _viewer->getEnvironment()->ambientIntensity.setValue((float)value/100.0f);
+ _viewer->getEnvironment()->ambientIntensity.setValue(Base::fromPercent(value));
}
}
else if (strcmp(Reason,"EnablePreselection") == 0) {
diff --git a/src/Gui/ViewProviderGeometryObject.cpp b/src/Gui/ViewProviderGeometryObject.cpp
index e585a4ed60..73889f5e5c 100644
--- a/src/Gui/ViewProviderGeometryObject.cpp
+++ b/src/Gui/ViewProviderGeometryObject.cpp
@@ -49,21 +49,10 @@
#include "ViewProviderGeometryObject.h"
#include "ViewProviderGeometryObjectPy.h"
+#include
+
using namespace Gui;
-// Helper functions to consistently convert between float and long
-namespace {
-float fromPercent(long value)
-{
- return std::roundf(value) / 100.0F;
-}
-
-long toPercent(float value)
-{
- return std::lround(100.0 * value);
-}
-}
-
PROPERTY_SOURCE(Gui::ViewProviderGeometryObject, Gui::ViewProviderDragger)
const App::PropertyIntegerConstraint::Constraints intPercent = {0, 100, 5};
@@ -71,7 +60,8 @@ const App::PropertyIntegerConstraint::Constraints intPercent = {0, 100, 5};
ViewProviderGeometryObject::ViewProviderGeometryObject()
{
App::Material mat = App::Material::getDefaultAppearance();
- long initialTransparency = toPercent(mat.transparency);
+
+ long initialTransparency = Base::toPercent(mat.transparency);
static const char* dogroup = "Display Options";
static const char* sgroup = "Selection";
@@ -140,8 +130,8 @@ void ViewProviderGeometryObject::onChanged(const App::Property* prop)
setSelectable(Sel);
}
else if (prop == &Transparency) {
- long value = toPercent(ShapeAppearance.getTransparency());
- float trans = fromPercent(Transparency.getValue());
+ long value = Base::toPercent(ShapeAppearance.getTransparency());
+ float trans = Base::fromPercent(Transparency.getValue());
if (value != Transparency.getValue()) {
ShapeAppearance.setTransparency(trans);
}
@@ -152,7 +142,7 @@ void ViewProviderGeometryObject::onChanged(const App::Property* prop)
if (getObject() && getObject()->testStatus(App::ObjectStatus::TouchOnColorChange)) {
getObject()->touch(true);
}
- long value = toPercent(ShapeAppearance.getTransparency());
+ long value = Base::toPercent(ShapeAppearance.getTransparency());
if (value != Transparency.getValue()) {
Transparency.setValue(value);
}
diff --git a/src/Gui/propertyeditor/PropertyItem.cpp b/src/Gui/propertyeditor/PropertyItem.cpp
index c619e6e891..9769db88a8 100644
--- a/src/Gui/propertyeditor/PropertyItem.cpp
+++ b/src/Gui/propertyeditor/PropertyItem.cpp
@@ -71,17 +71,6 @@ namespace
{
constexpr const int lowPrec = 2;
constexpr const int highPrec = 16;
-
-int toPercent(float value)
-{
- return static_cast(100 * value); // NOLINT
-}
-
-float fromPercent(int value)
-{
- return static_cast(value) / 100.0F; // NOLINT
-}
-
} // namespace
PropertyItemFactory& PropertyItemFactory::instance()
@@ -3658,7 +3647,7 @@ int PropertyMaterialItem::getShininess() const
}
auto val = value.value();
- return toPercent(val.shininess);
+ return Base::toPercent(val.shininess);
}
void PropertyMaterialItem::setShininess(int s)
@@ -3669,7 +3658,7 @@ void PropertyMaterialItem::setShininess(int s)
}
auto mat = value.value();
- mat.shininess = fromPercent(s);
+ mat.shininess = Base::fromPercent(s);
setValue(QVariant::fromValue(mat));
}
@@ -3681,7 +3670,7 @@ int PropertyMaterialItem::getTransparency() const
}
auto val = value.value();
- return toPercent(val.transparency);
+ return Base::toPercent(val.transparency);
}
void PropertyMaterialItem::setTransparency(int t)
@@ -3692,7 +3681,7 @@ void PropertyMaterialItem::setTransparency(int t)
}
auto mat = value.value();
- mat.transparency = fromPercent(t);
+ mat.transparency = Base::fromPercent(t);
setValue(QVariant::fromValue(mat));
}
@@ -3747,8 +3736,8 @@ QVariant PropertyMaterialItem::toolTip(const App::Property* prop) const
.arg(ec.red())
.arg(ec.green())
.arg(ec.blue())
- .arg(toPercent(value.shininess))
- .arg(toPercent(value.transparency));
+ .arg(Base::toPercent(value.shininess))
+ .arg(Base::toPercent(value.transparency));
return {data};
}
@@ -4085,7 +4074,7 @@ int PropertyMaterialListItem::getShininess() const
}
auto mat = list[0].value();
- return toPercent(mat.shininess);
+ return Base::toPercent(mat.shininess);
}
void PropertyMaterialListItem::setShininess(int s)
@@ -4105,7 +4094,7 @@ void PropertyMaterialListItem::setShininess(int s)
}
auto mat = list[0].value();
- mat.shininess = fromPercent(s);
+ mat.shininess = Base::fromPercent(s);
list[0] = QVariant::fromValue(mat);
setValue(list);
}
@@ -4127,7 +4116,7 @@ int PropertyMaterialListItem::getTransparency() const
}
auto mat = list[0].value();
- return toPercent(mat.transparency);
+ return Base::toPercent(mat.transparency);
}
void PropertyMaterialListItem::setTransparency(int t)
@@ -4147,7 +4136,7 @@ void PropertyMaterialListItem::setTransparency(int t)
}
auto mat = list[0].value();
- mat.transparency = fromPercent(t);
+ mat.transparency = Base::fromPercent(t);
list[0] = QVariant::fromValue(mat);
setValue(list);
}
@@ -4235,8 +4224,8 @@ QVariant PropertyMaterialListItem::toolTip(const App::Property* prop) const
.arg(ec.red())
.arg(ec.green())
.arg(ec.blue())
- .arg(toPercent(value.shininess))
- .arg(toPercent(value.transparency));
+ .arg(Base::toPercent(value.shininess))
+ .arg(Base::toPercent(value.transparency));
return {data};
}
diff --git a/src/Mod/Fem/Gui/ViewProviderFemPostObject.cpp b/src/Mod/Fem/Gui/ViewProviderFemPostObject.cpp
index 7d33b08eb7..2f76154c3b 100644
--- a/src/Mod/Fem/Gui/ViewProviderFemPostObject.cpp
+++ b/src/Mod/Fem/Gui/ViewProviderFemPostObject.cpp
@@ -69,6 +69,8 @@
#include "ViewProviderAnalysis.h"
#include "ViewProviderFemPostObject.h"
+#include
+
using namespace FemGui;
namespace sp = std::placeholders;
@@ -659,7 +661,7 @@ void ViewProviderFemPostObject::WriteColorData(bool ResetColorBarRange)
if (Field.getEnumVector().empty() || Field.getValue() == 0) {
m_material->diffuseColor.setValue(SbColor(0.8, 0.8, 0.8));
- float trans = float(Transparency.getValue()) / 100.0;
+ float trans = Base::fromPercent(Transparency.getValue());
m_material->transparency.setValue(trans);
m_materialBinding->value = SoMaterialBinding::OVERALL;
m_materialBinding->touch();
@@ -696,7 +698,7 @@ void ViewProviderFemPostObject::WriteColorData(bool ResetColorBarRange)
SbColor* diffcol = m_material->diffuseColor.startEditing();
SbColor* edgeDiffcol = m_matPlainEdges->diffuseColor.startEditing();
- float overallTransp = Transparency.getValue() / 100.0f;
+ float overallTransp = Base::fromPercent(Transparency.getValue());
m_material->transparency.setNum(numPts);
m_matPlainEdges->transparency.setNum(numPts);
float* transp = m_material->transparency.startEditing();
@@ -737,7 +739,7 @@ void ViewProviderFemPostObject::WriteColorData(bool ResetColorBarRange)
void ViewProviderFemPostObject::WriteTransparency()
{
- float trans = static_cast(Transparency.getValue()) / 100.0;
+ float trans = Base::fromPercent(Transparency.getValue());
float* value = m_material->transparency.startEditing();
float* edgeValue = m_matPlainEdges->transparency.startEditing();
// m_material and m_matPlainEdges field containers have same size
diff --git a/src/Mod/Material/App/MaterialManager.cpp b/src/Mod/Material/App/MaterialManager.cpp
index 9595142219..30c6cf4cce 100644
--- a/src/Mod/Material/App/MaterialManager.cpp
+++ b/src/Mod/Material/App/MaterialManager.cpp
@@ -38,6 +38,8 @@
#include "ModelManager.h"
#include "ModelUuids.h"
+#include
+
using namespace Materials;
@@ -174,8 +176,8 @@ std::shared_ptr MaterialManager::defaultAppearance()
long initialTransparency = hGrp->GetInt("DefaultShapeTransparency", 0);
long initialShininess = hGrp->GetInt("DefaultShapeShininess", 90);
- mat.shininess = ((float)initialShininess / 100.0F);
- mat.transparency = ((float)initialTransparency / 100.0F);
+ mat.shininess = Base::fromPercent(initialShininess);
+ mat.transparency = Base::fromPercent(initialTransparency);
return std::make_shared(mat);
}
diff --git a/src/Mod/Mesh/Gui/ViewProvider.cpp b/src/Mod/Mesh/Gui/ViewProvider.cpp
index d414d6a670..033b0449de 100644
--- a/src/Mod/Mesh/Gui/ViewProvider.cpp
+++ b/src/Mod/Mesh/Gui/ViewProvider.cpp
@@ -329,7 +329,7 @@ void ViewProviderMesh::onChanged(const App::Property* prop)
pcMatBinding->value = SoMaterialBinding::OVERALL;
}
if (prop == &LineTransparency) {
- float trans = LineTransparency.getValue() / 100.0F;
+ float trans = Base::fromPercent(LineTransparency.getValue());
pLineColor->transparency = trans;
}
else if (prop == &LineWidth) {
@@ -590,7 +590,7 @@ void ViewProviderMesh::tryColorPerVertexOrFace(bool on)
pcMatBinding->value = SoMaterialBinding::OVERALL;
const App::Color& c = ShapeAppearance.getDiffuseColor();
pcShapeMaterial->diffuseColor.setValue(c.r, c.g, c.b);
- pcShapeMaterial->transparency.setValue(Transparency.getValue() / 100.0F);
+ pcShapeMaterial->transparency.setValue(Base::fromPercent(Transparency.getValue()));
}
}
diff --git a/src/Mod/Part/Gui/ViewProvider.cpp b/src/Mod/Part/Gui/ViewProvider.cpp
index ce8f98bff0..9174a2526e 100644
--- a/src/Mod/Part/Gui/ViewProvider.cpp
+++ b/src/Mod/Part/Gui/ViewProvider.cpp
@@ -33,6 +33,8 @@
#include "ViewProvider.h"
+#include
+
using namespace PartGui;
@@ -88,7 +90,7 @@ void ViewProviderPart::applyTransparency(float transparency, std::vector ViewProviderPartExt::getElementColors(const cha
if(!element || !element[0]) {
auto color = ShapeAppearance.getDiffuseColor();
- color.setTransparency(Transparency.getValue()/100.0F);
+ color.setTransparency(Base::fromPercent(Transparency.getValue()));
ret["Face"] = color;
ret["Edge"] = LineColor.getValue();
ret["Vertex"] = PointColor.getValue();
@@ -687,7 +674,7 @@ std::map ViewProviderPartExt::getElementColors(const cha
auto size = ShapeAppearance.getSize();
if(element[4]=='*') {
auto color = ShapeAppearance.getDiffuseColor();
- color.setTransparency(Transparency.getValue()/100.0F);
+ color.setTransparency(Base::fromPercent(Transparency.getValue()));
bool singleColor = true;
for(int i=0;i ViewProviderPartExt::getElementColors(const cha
}
if(size && singleColor) {
color = ShapeAppearance.getDiffuseColor(0);
- color.setTransparency(Transparency.getValue()/100.0F);
+ color.setTransparency(Base::fromPercent(100.0F));
ret.clear();
}
ret["Face"] = color;
@@ -710,7 +697,7 @@ std::map ViewProviderPartExt::getElementColors(const cha
else
ret[element] = ShapeAppearance.getDiffuseColor();
if(size==1)
- ret[element].setTransparency(Transparency.getValue()/100.0F);
+ ret[element].setTransparency(Base::fromPercent(Transparency.getValue()));
}
} else if (boost::starts_with(element,"Edge")) {
auto size = LineColorArray.getSize();