11 from builtins
import str
12 from builtins
import range
29 from .
import Base, Fields, Image, Logging
45 context = TestHelper.getInstance().getHelperContext()
46 modOffRend = context.module(
'oSSOffscreenRender')
47 if not modOffRend.field(
'supported').value:
48 Logging.warning(
'Offscreen rendering is not supported on this hardware. Cannot create screenshot.')
51 resultDirectory = Base.getResultDirectory()
56 filename = os.path.join(resultDirectory,
"Screenshot_%03d.png")
57 while os.path.isfile(filename % (i)):
61 path = os.path.join(resultDirectory, filename)
63 if os.path.isfile(path):
64 Logging.error(
"File with name %s already exists!" % (path))
69 changeSet.setFieldValue(
"oSSOffscreenRender.transparencyType", transparencyType)
71 changeSet.setFieldValue(
"oSSOffscreenRender.size", size)
73 changeSet.setFieldValue(
"oSSOffscreenRender.bgColor", backgroundColor)
75 modImgSave = context.module(
'oSSImgSave')
77 modOffRend.field(
"sceneGraph").connectFrom(Base.getTestCaseContext().field(SONodeName))
78 mevis.MLAB.processInventorQueue()
79 modOffRend.field(
"update").
touch()
80 if not modOffRend.field(
'output0').isValid():
81 Logging.error(
'Creation of screenshot failed.')
84 modImgSave.field(
"format").value =
"PNG"
85 modImgSave.field(
'filename').value = path
86 modImgSave.field(
'save').
touch()
94 helperModule = TestHelper.getInstance().getHelperContext()
96 pathname = Base.getResultDirectory()
99 Logging.error(
"ScreenShot failed (no window available)")
102 tabview = window.getTabViewControl()
111 mevis.MLAB.processEvents(
True)
114 for i
in range(0, tabview.countTabs()):
115 tabview.selectTabAtIndex(i)
117 mevis.MLAB.priv().repaintWidget(tabview.widget())
119 imgName = os.path.join(pathname, filename+
"."+str(i)+
".png")
121 if not window.createScreenshot(imgName):
122 Logging.warning(
"ScreenShot failed")
124 imgList.append(imgName)
131 context = TestHelper.getInstance().getHelperContext()
132 return context.field(
'oSSOffscreenRender.supported').value
Class to handle field changes and make them revertable.
def touch(fieldName, verbose=True)
Touch the given field.
def createOffscreenScreenShot(SONodeName, filename=None, transparencyType=None, size=None, backgroundColor=None)
Create an screenshot of the given Inventor node that must be present in the given context.
def canCreateScreenshot()
Returns whether a screenshot can be created on this hardware.
def createScreenShot(window, filename)
Create a screenshot of the given MeVisLab window.