diff --git a/src/Mod/Part/Gui/ViewProvider.cpp b/src/Mod/Part/Gui/ViewProvider.cpp index 60d71d8d8..ee38999ab 100644 --- a/src/Mod/Part/Gui/ViewProvider.cpp +++ b/src/Mod/Part/Gui/ViewProvider.cpp @@ -78,6 +78,20 @@ void ViewProviderPart::applyColor(const Part::ShapeHistory& hist, } } +void ViewProviderPart::applyTransparency(const float& transparency, + std::vector& colors) +{ + if (transparency != 0.0) { + // transparency has been set object-wide + std::vector::iterator j; + for (j = colors.begin(); j != colors.end(); ++j) { + // transparency hasn't been set for this face + if (j->a == 0.0) + j->a = transparency/100.0; // transparency comes in percent + } + } +} + // ---------------------------------------------------------------------------- void ViewProviderShapeBuilder::buildNodes(const App::Property* , std::vector& ) const diff --git a/src/Mod/Part/Gui/ViewProvider.h b/src/Mod/Part/Gui/ViewProvider.h index d21f6346e..7246e32ce 100644 --- a/src/Mod/Part/Gui/ViewProvider.h +++ b/src/Mod/Part/Gui/ViewProvider.h @@ -57,6 +57,8 @@ protected: void applyColor(const Part::ShapeHistory& hist, const std::vector& colBase, std::vector& colBool); + void applyTransparency(const float& transparency, + std::vector& colors); }; } // namespace PartGui diff --git a/src/Mod/Part/Gui/ViewProviderBoolean.cpp b/src/Mod/Part/Gui/ViewProviderBoolean.cpp index b440f276c..db5411bc9 100644 --- a/src/Mod/Part/Gui/ViewProviderBoolean.cpp +++ b/src/Mod/Part/Gui/ViewProviderBoolean.cpp @@ -106,6 +106,8 @@ void ViewProviderBoolean::updateData(const App::Property* prop) std::vector colTool = static_cast(vpTool)->DiffuseColor.getValues(); std::vector colBool; colBool.resize(boolMap.Extent(), this->ShapeColor.getValue()); + applyTransparency(static_cast(vpBase)->Transparency.getValue(),colBase); + applyTransparency(static_cast(vpTool)->Transparency.getValue(),colTool); bool setColor=false; if (static_cast(colBase.size()) == baseMap.Extent()) { @@ -203,6 +205,7 @@ void ViewProviderMultiFuse::updateData(const App::Property* prop) Gui::ViewProvider* vpBase = Gui::Application::Instance->getViewProvider(objBase); std::vector colBase = static_cast(vpBase)->DiffuseColor.getValues(); + applyTransparency(static_cast(vpBase)->Transparency.getValue(),colBase); if (static_cast(colBase.size()) == baseMap.Extent()) { applyColor(hist[index], colBase, colBool); setColor = true; @@ -332,6 +335,7 @@ void ViewProviderMultiCommon::updateData(const App::Property* prop) Gui::ViewProvider* vpBase = Gui::Application::Instance->getViewProvider(objBase); std::vector colBase = static_cast(vpBase)->DiffuseColor.getValues(); + applyTransparency(static_cast(vpBase)->Transparency.getValue(),colBase); if (static_cast(colBase.size()) == baseMap.Extent()) { applyColor(hist[index], colBase, colBool); setColor = true;