plots/multicolor.py# ----------------------------------------------------------------------------
# MODES: serial
# CLASSES: nightly
#
# Test Case: multicolor.py
#
# Tests: Tests setting colors using the multiColor field in some of
# our plots.
# Plots - Boundary, Contour, FilledBoundary, Subset
# Operators - Transform
#
# Programmer: Brad Whitlock
# Date: Wed Apr 6 17:52:12 PST 2005
#
# Modifications:
#
# Mark C. Miller, Thu Jul 13 22:41:56 PDT 2006
# Added test of user-specified material colors
#
# Mark C. Miller, Wed Jan 20 07:37:11 PST 2010
# Added ability to swtich between Silo's HDF5 and PDB data.
# ----------------------------------------------------------------------------
def TestColorDefinitions(testname, colors):
s = ""
for c in colors:
s = s + str(c) + "\n"
TestText(testname, s)
def TestMultiColor(section, plotAtts, decreasingOpacity):
# Get the current colors.
m = plotAtts.GetMultiColor()
# Test what the image currently looks like.
Test("multicolor_%d_00" % section)
# Change the colors all at once. We should have red->blue
for i in range(len(m)):
t = float(i) / float(len(m) - 1)
c = int(t * 255.)
m[i] = (255-c, 0, c, 255)
plotAtts.SetMultiColor(m)
SetPlotOptions(plotAtts)
Test("multicolor_%d_01" % section)
TestColorDefinitions("multicolor_%d_02" % section, plotAtts.GetMultiColor())
# Change the colors another way. We should get green to blue
for i in range(len(m)):
t = float(i) / float(len(m) - 1)
c = int(t * 255.)
plotAtts.SetMultiColor(i, 0, 255-c, c)
SetPlotOptions(plotAtts)
Test("multicolor_%d_03" % section)
TestColorDefinitions("multicolor_%d_04" % section, plotAtts.GetMultiColor())
# Change the colors another way. We should get yellow to red but
# the redder it gets, the more transparent it should also get.
for i in range(len(m)):
t = float(i) / float(len(m) - 1)
c = int(t * 255.)
if decreasingOpacity:
plotAtts.SetMultiColor(i, (255, 255-c, 0, 255 - c))
else:
plotAtts.SetMultiColor(i, (255, 255-c, 0, c))
SetPlotOptions(plotAtts)
Test("multicolor_%d_05" % section)
TestColorDefinitions("multicolor_%d_06" % section, plotAtts.GetMultiColor())
def test1():
TestSection("Testing setting of multiColor in Boundary plot")
# Set up the plot
OpenDatabase(silo_data_path("rect2d.silo"))
AddPlot("Boundary", "mat1")
b = BoundaryAttributes()
b.lineWidth = 4
DrawPlots()
# Test the plot
TestMultiColor(0, b, 0)
# Delete the plots
DeleteAllPlots()
def test2():
TestSection("Testing setting of multiColor in Contour plot")
# Set up the plot
OpenDatabase(silo_data_path("noise.silo"))
AddPlot("Contour", "hardyglobal")
c = ContourAttributes()
c.contourNLevels = 20
SetPlotOptions(c)
DrawPlots()
# Set the view.
v = GetView3D()
v.viewNormal = (-0.400348, -0.676472, 0.618148)
v.focus = (0,0,0)
v.viewUp = (-0.916338, 0.300483, -0.264639)
v.parallelScale = 17.3205
v.imagePan = (0, 0.0397866)
v.imageZoom = 1.07998
SetView3D(v)
# Test the plot
TestMultiColor(1, c, 0)
# Delete the plots
DeleteAllPlots()
def test3():
TestSection("Testing setting of multiColor in FilledBoundary plot")
# Set up the plots. First we want globe so we can see something inside
# of the Subset plot to make sure that setting alpha works.
OpenDatabase(silo_data_path("globe.silo"))
AddPlot("Pseudocolor", "w")
p = PseudocolorAttributes()
p.legendFlag = 0
p.colorTableName = "xray"
SetPlotOptions(p)
OpenDatabase(silo_data_path("bigsil.silo"))
AddPlot("FilledBoundary", "mat")
f = FilledBoundaryAttributes()
f.legendFlag = 0
SetPlotOptions(f)
# Add an operator to globe to make it small.
SetActivePlots(0)
AddOperator("Transform", 0)
t = TransformAttributes()
t.doScale = 1
t.scaleX, t.scaleY, t.scaleZ = 0.04, 0.04, 0.04
t.doTranslate = 1
t.translateX, t.translateY, t.translateZ = 0.5, 0.5, 0.5
SetOperatorOptions(t)
SetActivePlots(1)
DrawPlots()
# Set the view.
v = GetView3D()
v.viewNormal = (-0.385083, -0.737931, -0.554229)
v.focus = (0.5, 0.5, 0.5)
v.viewUp = (-0.922871, 0.310902, 0.227267)
v.parallelScale = 0.866025
v.imagePan = (-0.0165315, 0.0489375)
v.imageZoom = 1.13247
SetView3D(v)
# Test the plot
TestMultiColor(2, f, 1)
# Delete the plots
DeleteAllPlots()
def test4():
TestSection("Testing setting of multiColor in Subset plot")
# Set up the plots. First we want globe so we can see something inside
# of the Subset plot to make sure that setting alpha works.
OpenDatabase(silo_data_path("globe.silo"))
AddPlot("Pseudocolor", "w")
p = PseudocolorAttributes()
p.legendFlag = 0
p.colorTableName = "xray"
SetPlotOptions(p)
OpenDatabase(silo_data_path("bigsil.silo"))
AddPlot("Subset", "domains")
s = SubsetAttributes()
s.legendFlag = 0
SetPlotOptions(s)
# Add an operator to globe to make it small.
SetActivePlots(0)
AddOperator("Transform", 0)
t = TransformAttributes()
t.doScale = 1
t.scaleX, t.scaleY, t.scaleZ = 0.04, 0.04, 0.04
t.doTranslate = 1
t.translateX, t.translateY, t.translateZ = 0.5, 0.5, 0.5
SetOperatorOptions(t)
SetActivePlots(1)
DrawPlots()
# Set the view.
v = GetView3D()
v.viewNormal = (-0.385083, -0.737931, -0.554229)
v.focus = (0.5, 0.5, 0.5)
v.viewUp = (-0.922871, 0.310902, 0.227267)
v.parallelScale = 0.866025
v.imagePan = (-0.0165315, 0.0489375)
v.imageZoom = 1.13247
SetView3D(v)
# Test the plot
TestMultiColor(3, s, 1)
# Delete the plots
DeleteAllPlots()
def test5():
TestSection("Testing user defined colors for FilledBoundary")
ResetView()
OpenDatabase(silo_data_path("globe_matcolors.silo"))
AddPlot("FilledBoundary","mat1")
AddOperator("Slice")
DrawPlots()
Test("multicolor_matcolors")
DeleteAllPlots()
def main():
test1()
test2()
test3()
test4()
test5()
# Run the tests
main()
Exit()