# SPDX-License-Identifier: LGPL-2.1-or-later 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))