/*************************************************************************** * Copyright (c) 2004 Juergen Riegel * * * * This file is part of the FreeCAD CAx development system. * * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Library General Public * * License as published by the Free Software Foundation; either * * version 2 of the License, or (at your option) any later version. * * * * This library is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU Library General Public License for more details. * * * * You should have received a copy of the GNU Library General Public * * License along with this library; see the file COPYING.LIB. If not, * * write to the Free Software Foundation, Inc., 59 Temple Place, * * Suite 330, Boston, MA 02111-1307, USA * * * ***************************************************************************/ #include "PreCompiled.h" #ifndef _PreComp_ #include #endif #include #include #include #include #include #include #include "ViewProvider.h" #include using namespace PartGui; PROPERTY_SOURCE(PartGui::ViewProviderPart, PartGui::ViewProviderPartExt) // NOLINT ViewProviderPart::ViewProviderPart() = default; ViewProviderPart::~ViewProviderPart() = default; bool ViewProviderPart::doubleClicked() { try { QString text = QObject::tr("Edit %1").arg(QString::fromUtf8(getObject()->Label.getValue())); Gui::Command::openCommand(text.toUtf8()); Gui::cmdSetEdit(pcObject); return true; } catch (const Base::Exception& e) { Base::Console().error("%s\n", e.what()); return false; } } void ViewProviderPart::applyColor(const Part::ShapeHistory& hist, const std::vector& colBase, std::vector& colBool) { // apply color from modified faces for (const auto& jt : hist.shapeMap) { for (auto kt : jt.second) { colBool.at(kt) = colBase.at(jt.first); } } } void ViewProviderPart::applyMaterial(const Part::ShapeHistory& hist, const std::vector& colBase, std::vector& colBool) { // apply color from modified faces for (const auto& jt : hist.shapeMap) { for (auto kt : jt.second) { colBool.at(kt) = colBase.at(jt.first); } } } void ViewProviderPart::applyTransparency(float transparency, std::vector& colors) { if (transparency != 0.0) { // transparency has been set object-wide for (auto& j : colors) { // transparency hasn't been set for this face if (j.a == 0.0) { j.setTransparency(Base::fromPercent(transparency)); // transparency comes in percent } } } } void ViewProviderPart::applyTransparency(float transparency, std::vector& colors) { if (transparency != 0.0) { // transparency has been set object-wide for (auto& j : colors) { // transparency hasn't been set for this face if (j.transparency == 0.0) { j.transparency = Base::fromPercent(transparency); // transparency comes in percent } } } } void ViewProviderPart::setEditViewer(Gui::View3DInventorViewer* viewer, int ModNum) { ViewProviderPartExt::setEditViewer(viewer, ModNum); if (gizmoContainer) { gizmoContainer->setUpAutoScale(viewer->getSoRenderManager()->getCamera()); auto originPlacement = App::GeoFeature::getGlobalPlacement(getObject()) * getObjectPlacement().inverse(); gizmoContainer->attachViewer(viewer, originPlacement); } } void ViewProviderPart::setGizmoContainer(Gui::GizmoContainer* gizmoContainer) { assert(gizmoContainer); this->gizmoContainer = gizmoContainer; } // ---------------------------------------------------------------------------- void ViewProviderShapeBuilder::buildNodes(const App::Property* prop, std::vector& nodes) const { Q_UNUSED(prop) Q_UNUSED(nodes) } void ViewProviderShapeBuilder::createShape(const App::Property* prop, SoSeparator* node) const { Q_UNUSED(prop) Q_UNUSED(node) }