import unittest if __name__== '__main__': import sys sys.path.insert(0,"../../../stage/lib64/openstructure/") sys.path.insert(0,"../../../stage/lib/openstructure/") import ost import ost.mol as mol import ost.gfx as gfx import ost.geom as geom def col_delta(c1,c2): return geom.Distance(geom.Vec3(c1[0],c1[1],c1[2]),geom.Vec3(c2[0],c2[1],c2[2])) class TestGfx(unittest.TestCase): def runTest(self): self.test_gradient() self.test_color() self.test_primlist() self.test_entity_reset() def test_entity_reset(self): eh=mol.CreateEntity() eh2=mol.CreateEntity() go=gfx.Entity("foo",eh) go.Reset(eh) go.Reset("rnum=1") go.Reset(entity=eh2) go.Reset(eh.Select("rnum=2")) go.Reset(eh,"rnum=3",mol.MATCH_RESIDUES) go.Reset("rnum=4",eh2) def test_gradient(self): gs=[gfx.Gradient(), gfx.Gradient({0.0: [1,0,0], 1.0: gfx.Color(0,1,0)})] gs[0].SetColorAt(0.0,gfx.Color(1.0,0.0,0.0)) gs[0].SetColorAt(1.0,gfx.Color(0.0,1.0,0.0)) for g in gs: self.assertAlmostEqual(col_delta(g.GetColorAt(0.0),gfx.Color(1.0,0,0)),0.0) self.assertAlmostEqual(col_delta(g.GetColorAt(0.5),gfx.Color(0.5,0.5,0)),0.0) self.assertAlmostEqual(col_delta(g.GetColorAt(1.0),gfx.Color(0,1.0,0)),0.0) def test_color(self): c=gfx.Color(0.5,0.3,0.2) self.assertAlmostEqual(c.r,0.5) self.assertAlmostEqual(c.g,0.3) self.assertAlmostEqual(c.b,0.2) self.assertAlmostEqual(c.a,1.0) self.assertAlmostEqual(c.red,0.5) self.assertAlmostEqual(c.green,0.3) self.assertAlmostEqual(c.blue,0.2) self.assertAlmostEqual(c.alpha,1.0) self.assertAlmostEqual(c[0],0.5) self.assertAlmostEqual(c[1],0.3) self.assertAlmostEqual(c[2],0.2) self.assertAlmostEqual(c[3],1.0) c.r=0.9 self.assertAlmostEqual(c.r,0.9) self.assertAlmostEqual(c.red,0.9) self.assertAlmostEqual(c[0],0.9) def test_primlist(self): pl=gfx.PrimList("foo") pl.AddPoint([0,0,0]) pl.AddPoint(geom.Vec3(1,2,3),color=gfx.RED) pl.AddLine([0,0,0],[1,2,3]) pl.AddLine(geom.Vec3(0,0,0),geom.Vec3(1,2,3),color=gfx.BLUE) pl.AddSphere([0,0,0],radius=2.0) pl.AddSphere(geom.Vec3(1,2,3),color=gfx.RED,radius=3.0) pl.AddCyl([0,0,0],[1,2,3],radius=0.5,color=gfx.YELLOW) pl.AddCyl(geom.Vec3(0,0,0),geom.Vec3(1,2,3),radius1=0.5,radius2=0.1,color1=gfx.BLUE,color2=gfx.GREEN) pl.AddText("foo",[0,2,3]) pl.AddText("bar",[-2,0,0],color=gfx.WHITE,point_size=8) if __name__== '__main__': unittest.main()