Base: Move App::Color to Base
Every basic data type is stored in Base module, color is standing out as one that does not. Moving it to Base opens possibilities to integrate it better with the rest of FreeCAD.
This commit is contained in:
@@ -192,13 +192,13 @@ ViewProviderFemMesh::ViewProviderFemMesh()
|
||||
{
|
||||
sPixmap = "fem-femmesh-from-shape";
|
||||
|
||||
ADD_PROPERTY(PointColor, (App::Color(0.7f, 0.7f, 0.7f)));
|
||||
ADD_PROPERTY(PointColor, (Base::Color(0.7f, 0.7f, 0.7f)));
|
||||
ADD_PROPERTY(PointSize, (5.0f));
|
||||
PointSize.setConstraints(&floatRange);
|
||||
ADD_PROPERTY(LineWidth, (1.0f));
|
||||
LineWidth.setConstraints(&floatRange);
|
||||
|
||||
ShapeAppearance.setDiffuseColor(App::Color(1.0f, 0.7f, 0.0f));
|
||||
ShapeAppearance.setDiffuseColor(Base::Color(1.0f, 0.7f, 0.0f));
|
||||
Transparency.setValue(0);
|
||||
ADD_PROPERTY(BackfaceCulling, (true));
|
||||
ADD_PROPERTY(ShowInner, (false));
|
||||
@@ -412,7 +412,7 @@ void ViewProviderFemMesh::onChanged(const App::Property* prop)
|
||||
pcPointStyle->pointSize = PointSize.getValue();
|
||||
}
|
||||
else if (prop == &PointColor) {
|
||||
const App::Color& c = PointColor.getValue();
|
||||
const Base::Color& c = PointColor.getValue();
|
||||
pcPointMaterial->diffuseColor.setValue(c.r, c.g, c.b);
|
||||
}
|
||||
else if (prop == &BackfaceCulling) {
|
||||
@@ -683,11 +683,11 @@ void ViewProviderFemMesh::applyDisplacementToNodes(double factor)
|
||||
}
|
||||
|
||||
void ViewProviderFemMesh::setColorByNodeId(const std::vector<long>& NodeIds,
|
||||
const std::vector<App::Color>& NodeColors)
|
||||
const std::vector<Base::Color>& NodeColors)
|
||||
{
|
||||
long endId = *(std::max_element(NodeIds.begin(), NodeIds.end()));
|
||||
|
||||
std::vector<App::Color> colorVec(endId + 1, App::Color(0, 1, 0));
|
||||
std::vector<Base::Color> colorVec(endId + 1, Base::Color(0, 1, 0));
|
||||
long i = 0;
|
||||
for (std::vector<long>::const_iterator it = NodeIds.begin(); it != NodeIds.end(); ++it, i++) {
|
||||
colorVec[*it] = NodeColors[i];
|
||||
@@ -696,7 +696,7 @@ void ViewProviderFemMesh::setColorByNodeId(const std::vector<long>& NodeIds,
|
||||
setColorByNodeIdHelper(colorVec);
|
||||
}
|
||||
|
||||
void ViewProviderFemMesh::setColorByNodeIdHelper(const std::vector<App::Color>& colorVec)
|
||||
void ViewProviderFemMesh::setColorByNodeIdHelper(const std::vector<Base::Color>& colorVec)
|
||||
{
|
||||
pcMatBinding->value = SoMaterialBinding::PER_VERTEX_INDEXED;
|
||||
|
||||
@@ -716,43 +716,43 @@ void ViewProviderFemMesh::setColorByNodeIdHelper(const std::vector<App::Color>&
|
||||
|
||||
void ViewProviderFemMesh::resetColorByNodeId()
|
||||
{
|
||||
const App::Color& c = ShapeAppearance.getDiffuseColor();
|
||||
const Base::Color& c = ShapeAppearance.getDiffuseColor();
|
||||
NodeColorArray.setValue(c);
|
||||
}
|
||||
|
||||
void ViewProviderFemMesh::setColorByNodeId(
|
||||
const std::map<std::vector<long>, App::Color>& elemColorMap)
|
||||
const std::map<std::vector<long>, Base::Color>& elemColorMap)
|
||||
{
|
||||
setColorByIdHelper(elemColorMap, vNodeElementIdx, 0, NodeColorArray);
|
||||
}
|
||||
|
||||
void ViewProviderFemMesh::setColorByElementId(
|
||||
const std::map<std::vector<long>, App::Color>& elemColorMap)
|
||||
const std::map<std::vector<long>, Base::Color>& elemColorMap)
|
||||
{
|
||||
setColorByIdHelper(elemColorMap, vFaceElementIdx, 3, ElementColorArray);
|
||||
}
|
||||
|
||||
void ViewProviderFemMesh::setColorByIdHelper(
|
||||
const std::map<std::vector<long>, App::Color>& elemColorMap,
|
||||
const std::map<std::vector<long>, Base::Color>& elemColorMap,
|
||||
const std::vector<unsigned long>& vElementIdx,
|
||||
int rShift,
|
||||
App::PropertyColorList& prop)
|
||||
{
|
||||
std::vector<App::Color> vecColor(vElementIdx.size());
|
||||
std::map<long, const App::Color*> colorMap;
|
||||
std::vector<Base::Color> vecColor(vElementIdx.size());
|
||||
std::map<long, const Base::Color*> colorMap;
|
||||
for (const auto& m : elemColorMap) {
|
||||
for (long i : m.first) {
|
||||
colorMap[i] = &m.second;
|
||||
}
|
||||
}
|
||||
|
||||
App::Color baseDif = ShapeAppearance.getDiffuseColor();
|
||||
Base::Color baseDif = ShapeAppearance.getDiffuseColor();
|
||||
int i = 0;
|
||||
for (std::vector<unsigned long>::const_iterator it = vElementIdx.begin();
|
||||
it != vElementIdx.end();
|
||||
++it, i++) {
|
||||
unsigned long ElemIdx = ((*it) >> rShift);
|
||||
const std::map<long, const App::Color*>::const_iterator pos = colorMap.find(ElemIdx);
|
||||
const std::map<long, const Base::Color*>::const_iterator pos = colorMap.find(ElemIdx);
|
||||
vecColor[i] = pos == colorMap.end() ? baseDif : *pos->second;
|
||||
}
|
||||
|
||||
@@ -762,10 +762,10 @@ void ViewProviderFemMesh::setColorByIdHelper(
|
||||
void ViewProviderFemMesh::setMaterialOverall() const
|
||||
{
|
||||
const App::Material& mat = ShapeAppearance[0];
|
||||
App::Color baseDif = mat.diffuseColor;
|
||||
App::Color baseAmb = mat.ambientColor;
|
||||
App::Color baseSpe = mat.specularColor;
|
||||
App::Color baseEmi = mat.emissiveColor;
|
||||
Base::Color baseDif = mat.diffuseColor;
|
||||
Base::Color baseAmb = mat.ambientColor;
|
||||
Base::Color baseSpe = mat.specularColor;
|
||||
Base::Color baseEmi = mat.emissiveColor;
|
||||
float baseShi = mat.shininess;
|
||||
float baseTra = mat.transparency;
|
||||
|
||||
@@ -793,15 +793,15 @@ void ViewProviderFemMesh::setMaterialByColorArray(
|
||||
const std::vector<unsigned long>& vElementIdx) const
|
||||
{
|
||||
const App::Material& baseMat = ShapeAppearance[0];
|
||||
App::Color baseDif = baseMat.diffuseColor;
|
||||
App::Color baseAmb = baseMat.ambientColor;
|
||||
App::Color baseSpe = baseMat.specularColor;
|
||||
App::Color baseEmi = baseMat.emissiveColor;
|
||||
Base::Color baseDif = baseMat.diffuseColor;
|
||||
Base::Color baseAmb = baseMat.ambientColor;
|
||||
Base::Color baseSpe = baseMat.specularColor;
|
||||
Base::Color baseEmi = baseMat.emissiveColor;
|
||||
float baseShi = baseMat.shininess;
|
||||
float baseTra = baseMat.transparency;
|
||||
|
||||
// resizing and writing the color vector:
|
||||
std::vector<App::Color> vecColor = prop->getValue();
|
||||
std::vector<Base::Color> vecColor = prop->getValue();
|
||||
size_t elemSize = vElementIdx.size();
|
||||
if (vecColor.size() == 1) {
|
||||
pcMatBinding->value = SoMaterialBinding::OVERALL;
|
||||
@@ -844,7 +844,7 @@ void ViewProviderFemMesh::setMaterialByColorArray(
|
||||
vecColor.resize(elemSize, baseDif);
|
||||
|
||||
int i = 0;
|
||||
for (const App::Color& c : vecColor) {
|
||||
for (const Base::Color& c : vecColor) {
|
||||
diffuse[i] = SbColor(c.r, c.g, c.b);
|
||||
ambient[i] = SbColor(baseAmb.r, baseAmb.g, baseAmb.b);
|
||||
specular[i] = SbColor(baseSpe.r, baseSpe.g, baseSpe.b);
|
||||
@@ -866,7 +866,7 @@ void ViewProviderFemMesh::setMaterialByColorArray(
|
||||
|
||||
void ViewProviderFemMesh::resetColorByElementId()
|
||||
{
|
||||
const App::Color& c = ShapeAppearance.getDiffuseColor();
|
||||
const Base::Color& c = ShapeAppearance.getDiffuseColor();
|
||||
ElementColorArray.setValue(c);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user