Skip to content

Instantly share code, notes, and snippets.

@traverseda
Created September 21, 2020 14:14
Show Gist options
  • Save traverseda/4442cdca406b7739b91a5a986fa4b411 to your computer and use it in GitHub Desktop.
Save traverseda/4442cdca406b7739b91a5a986fa4b411 to your computer and use it in GitHub Desktop.
import pyglet
import inspect
import mahi_gui
from mahi_gui import imgui
def redirect_pyglet():
import pyglet
# Do not create a hidden window and opengl context
pyglet.options['shadow_window'] = False
# Trick pyglet into using an external context
import pyglet.gl
ctx = pyglet.gl.Context(None)
ctx.canvas = pyglet.canvas.base.Canvas(None)
ctx.set_current()
def screenshot(x=500,y=200):
def wrapper(func):
screenshotName = func.__name__
screenshotName = "docs/testShots/"+screenshotName+".png"
print(screenshotName)
screenShot = ScreenshotTest(func, x, y,"Test Runner", False,screenshotPath=screenshotName)
screenShot.run()
return func
return wrapper
class ScreenshotTest(mahi_gui.Application):
def __init__(self, drawFunc, *args, screenshotPath="./screenshot.png"):
self.screenshotPath=screenshotPath
self.drawFunc=drawFunc
self.ticks=0
super().__init__(*args)
imgui.disable_viewports()
def screenshot(self):
redirect_pyglet()
pyglet.image.get_buffer_manager().get_color_buffer().save(self.screenshotPath)
def _update(self):
width, height = self.get_window_size()
imgui.begin(
"Test Window",
imgui.Bool(True),
imgui.WindowFlags.NoTitleBar | imgui.WindowFlags.NoResize | imgui.WindowFlags.NoMove)
imgui.set_window_pos(imgui.Vec2(0,0))
imgui.set_window_size(imgui.Vec2(width, height))
self.drawFunc()
imgui.end()
if self.ticks > 1:
self.screenshot()
self.quit()
self.ticks+=1
@screenshot(500,200)
def test_hello_world():
imgui.text("Hello world")
@traverseda
Copy link
Author

Utils for taking screenshots in https://github.com/JoelLinn/py-mahi-gui intended to be part of test running infrastructure.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment