예제 #1
0
    def test_root_window_model(self):
        from xpra.server.shadow.root_window_model import RootWindowModel
        W = 640
        H = 480

        class FakeDisplay:
            def get_name(self):
                return "fake-display"

        class FakeScreen:
            def get_display(self):
                return FakeDisplay()

        class FakeRootWindow:
            def get_screen(self):
                return FakeScreen()

            def get_geometry(self):
                return (0, 0, W, H)

        class FakeCapture:
            def take_screenshot(self):
                return self.get_image(0, 0, W, H)

            def get_image(self, x, y, w, h):
                pixels = "0" * w * 4 * h
                return ImageWrapper(x, y, w, h, pixels, "BGRA", 32, w * 4, 4,
                                    ImageWrapper.PACKED, True, None)

            def get_info(self):
                return {"type": "fake"}

        window = FakeRootWindow()
        rwm = RootWindowModel(window, FakeCapture())
        assert repr(rwm)
        assert rwm.get_info()
        rwm.get_default_window_icon(32)
        for prop in ("title", "class-instance", "size-hints", "icons"):
            rwm.get_property(prop)
        for prop, value in {
                "client-machine": socket.gethostname(),
                "window-type": ["NORMAL"],
                "fullscreen": False,
                "shadow": True,
                "depth": 24,
                "scaling": None,
                "opacity": None,
                "content-type": "desktop",
        }.items():
            assert rwm.get_property(prop) == value
        rwm.suspend()
        rwm.unmanage(True)
        assert rwm.take_screenshot()
        assert rwm.get_image(10, 10, 20, 20)
        rwm.geometry = (10, 10, W, H)
        img = rwm.get_image(10, 10, 20, 20)
        assert img.get_target_x() == 10
        assert img.get_target_y() == 10
예제 #2
0
def main():
    from xpra.platform import program_context
    with program_context("Shadow-Test", "Shadow Server Screen Capture Test"):
        rwm = RootWindowModel(None)
        pngdata = rwm.take_screenshot()
        FILENAME = "screenshot.png"
        with open(FILENAME, "wb") as f:
            f.write(pngdata[4])
        print("saved screenshot as %s" % FILENAME)