Skip to content

Commit

Permalink
Merge pull request FreeCAD#12064 from bdieterm/fixPlaneTransparency
Browse files Browse the repository at this point in the history
Gui: add explicit transparency specification
  • Loading branch information
chennes authored Jan 24, 2024
2 parents 00cd50b + 240d1ed commit c7ac9ee
Show file tree
Hide file tree
Showing 7 changed files with 64 additions and 0 deletions.
1 change: 1 addition & 0 deletions src/Gui/ViewProviderOriginFeature.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ ViewProviderOriginFeature::ViewProviderOriginFeature () {
QT_TRANSLATE_NOOP("App::Property", "Visual size of the feature"));

ShapeColor.setValue ( ViewProviderOrigin::defaultColor ); // Set default color for origin (light-blue)
Transparency.setValue(0);
BoundingBox.setStatus(App::Property::Hidden, true); // Hide Boundingbox from the user due to it doesn't make sense

// Create node for scaling the origin
Expand Down
1 change: 1 addition & 0 deletions src/Mod/Fem/Gui/ViewProviderFemMesh.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -197,6 +197,7 @@ ViewProviderFemMesh::ViewProviderFemMesh()
LineWidth.setConstraints(&floatRange);

ShapeColor.setValue(App::Color(1.0f, 0.7f, 0.0f));
Transparency.setValue(0);
ADD_PROPERTY(BackfaceCulling, (true));
ADD_PROPERTY(ShowInner, (false));
ADD_PROPERTY(MaxFacesShowInner, (50000));
Expand Down
1 change: 1 addition & 0 deletions src/Mod/Import/Gui/dxf/ImpExpDxfGui.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ void ImpExpDxfReadGui::ApplyGuiStyles(Part::Feature* object)
view->LineColor.setValue(color);
view->PointColor.setValue(color);
view->ShapeColor.setValue(color);
view->Transparency.setValue(0);
}

void ImpExpDxfReadGui::ApplyGuiStyles(App::FeaturePython* object)
Expand Down
1 change: 1 addition & 0 deletions src/Mod/Part/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ set(Part_tests
parttests/regression_tests.py
parttests/TopoShapeListTest.py
parttests/ColorPerFaceTest.py
parttests/ColorTransparencyTest.py
)

add_custom_target(PartScripts ALL SOURCES
Expand Down
1 change: 1 addition & 0 deletions src/Mod/Part/Gui/DlgProjectionOnSurface.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -638,6 +638,7 @@ void PartGui::DlgProjectionOnSurface::show_projected_shapes(const std::vector<SS
vp->LineColor.setValue(0x8ae23400);
vp->ShapeColor.setValue(0x8ae23400);
vp->PointColor.setValue(0x8ae23400);
vp->Transparency.setValue(0);
}
}

Expand Down
1 change: 1 addition & 0 deletions src/Mod/Part/TestPartGui.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ def findDockWidget(name):
#---------------------------------------------------------------------------
"""
from parttests.ColorPerFaceTest import ColorPerFaceTest
from parttests.ColorTransparencyTest import ColorTransparencyTest


#class PartGuiTestCases(unittest.TestCase):
Expand Down
58 changes: 58 additions & 0 deletions src/Mod/Part/parttests/ColorTransparencyTest.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
import unittest

import FreeCAD as App


class ColorTransparencyTest(unittest.TestCase):

def setUp(self):
self._doc = App.newDocument()
self._pg = App.ParamGet('User parameter:BaseApp/Preferences/View')
self._backup_default_transparency = self._pg.GetInt('DefaultShapeTransparency')
self._backup_default_shapecolor = self._pg.GetUnsigned('DefaultShapeColor')


def tearDown(self):
App.closeDocument(self._doc.Name)
self._pg.SetInt('DefaultShapeTransparency', self._backup_default_transparency)
self._pg.SetUnsigned('DefaultShapeColor', self._backup_default_shapecolor)


def test_default_shape_transparency(self):
"""
related: https://github.com/FreeCAD/FreeCAD/pull/11866
related: https://github.com/FreeCAD/FreeCAD/pull/11586
"""
transparency = 70
self._pg.SetInt('DefaultShapeTransparency', transparency)
obj = self._doc.addObject('Part::Box')
assert obj.ViewObject.Transparency == transparency
obj.ViewObject.ShapeColor = (0.5, 0.0, 0.0)

self.assertEqual(obj.ViewObject.Transparency, transparency,
'transparency was unexpectedly changed to {} when changing the color.'.format(
obj.ViewObject.Transparency))


def test_default_shape_color(self):
"""
related: https://github.com/FreeCAD/FreeCAD/pull/11866
"""
self._pg.SetUnsigned('DefaultShapeColor', 0xff000000) # red
obj = self._doc.addObject('Part::Box')

self.assertEqual(obj.ViewObject.ShapeColor, (1.0, 0.0, 0.0, 0.0),
'default shape color was not set correctly')


def test_app_plane_transparency(self):
"""
related: https://github.com/FreeCAD/FreeCAD/pull/12064
"""
self._pg.SetInt('DefaultShapeTransparency', 70)
obj = self._doc.addObject('App::Origin')
t = self._doc.findObjects('App::Plane')[0].ViewObject.Transparency

self.assertEqual(t, 0,
'transparency of App::Plane object is {} instead of 0'.format(t))

0 comments on commit c7ac9ee

Please sign in to comment.