freecad-cam/Mod/Part/parttests/ColorTransparencyTest.py
2026-02-01 01:59:24 +01:00

70 lines
2.6 KiB
Python

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.ShapeAppearance[0].DiffuseColor = (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
"""
"""
This test isn't currently valid as it draws from the hard coded default material.
The preference editor doesn't allow for setting transparencies. The default value
of 0 corresponds to a fully transparent color, which is not desirable. It changes
the transparency when loading to 1.0
"""
self._pg.SetUnsigned('DefaultShapeColor', 0xff000000) # red
obj = self._doc.addObject('Part::Box')
self.assertEqual(obj.ViewObject.ShapeAppearance[0].DiffuseColor, (1.0, 0.0, 0.0, 1.0),
'default shape color was not set correctly')
self.assertEqual(obj.ViewObject.ShapeMaterial.DiffuseColor, (1.0, 0.0, 0.0, 1.0),
'default material 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))