def test_create(self): """ module canvas: Canvas.__init__() """ self.assertTrue(isinstance(Canvas(), Canvas)) self.assertTrue(isinstance(Canvas(10, 10), Canvas)) self.assertRaises(CanvasError, Canvas, "a", 12) self.assertRaises(CanvasError, Canvas, 12, "a")
def main(): """ Main function. """ try: pig = Canvas(0, 0) pig.import_from_memory(STRING, "text") cv = Canvas(pig.get_width() * 2, pig.get_height() * 2) except CanvasError as err: sys.stderr.write("%s\n" % err) sys.exit(2) cv.blit(0, 0, pig, NullCanvas()) pig.flip() cv.blit(pig.get_width(), 0, pig, NullCanvas()) pig.flip() pig.flop() cv.blit(0, pig.get_height(), pig, NullCanvas()) pig.flop() pig.rotate_180() cv.blit(pig.get_width(), pig.get_height(), pig, NullCanvas()) for j in range(0, cv.get_height()): for i in range(0, cv.get_width(), 2): cv.set_color_ansi(caca.COLOR_LIGHTBLUE + (i + j) % 6, caca.COLOR_DEFAULT) a = cv.get_attr(-1, -1) cv.put_attr(i, j, a) cv.put_attr(i+1, j, a) print("%s" % cv.export_to_memory('utf8')) cv.rotate_left() print("%s" % cv.export_to_memory('utf8'))
def test_blit(self): """ module canvas: Canvas.blit() """ cv1 = Canvas(10, 1) cv2 = Canvas(10, 1) cv2.put_str(0, 0, "teststring") self.assertEqual(0, cv1.blit(0, 0, cv2)) self.assertEqual("teststring", cv1.export_to_memory("utf8").strip('\n')) self.assertRaises(CanvasError, cv1.blit, 0, 0, "abc") self.assertRaises(CanvasError, cv1.blit, "a", 0, cv2)
def test_blit_mask(self): """ module canvas: Canvas.blit() (with mask) """ cv1 = Canvas(10, 1) cv2 = Canvas(10, 1) mask = Canvas(10, 1) badm = Canvas() cv2.put_str(0, 0, "teststring") mask.put_str(0, 0, "####") self.assertEqual(0, cv1.blit(0, 0, cv2, mask)) self.assertEqual("test ", cv1.export_to_memory("utf8").strip("\n")) self.assertRaises(CanvasError, cv1.blit, 0, 0, cv2, badm)
def test_draw_thin_triangle(self): """ module canvas: Canvas.draw_thin_triangle() """ cv = Canvas(10, 10) self.assertEqual(0, cv.draw_thin_triangle(0, 0, 2, 2, 4, 0)) self.assertRaises(CanvasError, cv.draw_thin_triangle, 0, 0, 2, 2, 4, '#')
def get_canvas(self): """ Get the canvas attached to a caca graphical context. """ _lib.caca_get_canvas.argtypes = [_Display] _lib.caca_get_canvas.restype = ctypes.POINTER(ctypes.c_char_p) return Canvas(pointer=_lib.caca_get_canvas(self))
def main(): """ Main function. """ if len(sys.argv) < 3: sys.stderr.write("Usage: %s <figfont file> <word>\n" \ % os.path.basename(sys.argv[0])) sys.exit(2) try: cv = Canvas(0, 0) except CanvasError as err: sys.stderr.write("%s\n" % err) sys.exit(2) if cv.set_figfont(sys.argv[1]): sys.stderr.write("Could not open font...\n") sys.exit(2) if sys.version_info[0:2] >= (3, 0): word = sys.argv[2] else: word = codecs.decode(sys.argv[2], "utf8") for c in word: cv.put_figchar(c) sys.stderr.write(cv.export_to_memory("utf8"))
def test_fill_ellipse(self): """ module canvas: Canvas.fill_ellipse() """ cv = Canvas(10, 10) self.assertEqual(0, cv.fill_ellipse(5, 5, 3, 3, '#')) self.assertRaises(CanvasError, cv.fill_ellipse, 0, 0, 3, '#', '#') self.assertRaises(CanvasError, cv.fill_ellipse, 0, 0, 3, 3, 0)
def test_enable_dirty_rect(self): """ module canvas: Canvas.enable_dirty_rect() """ cv = Canvas() self.assertRaises(CanvasError, cv.enable_dirty_rect) cv.disable_dirty_rect() self.assertEqual(0, cv.enable_dirty_rect())
def test_fill_box(self): """ module canvas: Canvas.fill_box() """ cv = Canvas(10, 10) self.assertEqual(0, cv.fill_box(0, 0, 2, 2, '#')) self.assertRaises(CanvasError, cv.fill_box, 0, 0, 2, '#', '#') self.assertRaises(CanvasError, cv.fill_box, 0, 0, 2, 2, 0)
def test_draw_thin_line(self): """ module canvas: Canvas.draw_thin_line() """ cv = Canvas(10, 1) cv.draw_thin_line(0, 0, 10, 1) self.assertEqual("-" * 10, cv.export_to_memory("utf8").strip('\n')) self.assertRaises(CanvasError, cv.draw_thin_line, 0, "a", 10, 1)
def test_draw_circle(self): """ module canvas: Canvas.draw_circle() """ cv = Canvas(10, 10) self.assertEqual(0, cv.draw_circle(5, 5, 3, '#')) self.assertRaises(CanvasError, cv.draw_circle, 0, 0, '#', '#') self.assertRaises(CanvasError, cv.draw_circle, 0, 0, 3, 0)
def test_remove_dirty_rect(self): """ module canvas: Canvas.remove_dirty_rect() """ cv = Canvas(10, 10) cv.add_dirty_rect(4, 4, 2, 2) self.assertEqual(0, cv.remove_dirty_rect(4, 4, 2, 2)) self.assertRaises(CanvasError, cv.remove_dirty_rect, 11, 11, 20, 20)
def test_fill_triangle(self): """ module canvas: Canvas.fill_triangle() """ cv = Canvas(10, 10) self.assertEqual(0, cv.fill_triangle(0, 0, 2, 2, 4, 0, '#')) self.assertRaises(CanvasError, cv.fill_triangle, 0, 0, 2, 2, 4, '#', '#') self.assertRaises(CanvasError, cv.fill_triangle, 0, 0, 2, 2, 4, 0, 0)
def test_gotoxy(self): """ module canvas: Canvas.gotoxy() """ cv = Canvas(10, 10) cv.gotoxy(5, 5) self.assertEqual((5, 5), (cv.wherex(), cv.wherey())) self.assertRaises(CanvasError, cv.gotoxy, "a", 9) self.assertRaises(CanvasError, cv.gotoxy, 9, "a")
def test_draw_thin_polyline(self): """ module canvas: Canvas.draw_thin_polyline() """ cv = Canvas(10, 10) self.assertEqual( 0, cv.draw_thin_polyline([(0, 0), (2, 2), (5, 2), (0, 0)])) self.assertRaises(CanvasError, cv.draw_thin_polyline, []) self.assertRaises(CanvasError, cv.draw_thin_polyline, [0, 1, 2, 4])
def test_set_handle(self): """ module canvas: Canvas.set_handle() """ cv = Canvas(10, 5) self.assertEqual(0, cv.set_handle(3, 3)) self.assertEqual((3, 3), (cv.get_handle_x(), cv.get_handle_y())) self.assertRaises(CanvasError, cv.set_handle, "a", 1) self.assertRaises(CanvasError, cv.set_handle, 1, "a")
def test_clear(self): """ module canvas: Canvas.clear() """ cv = Canvas(5, 1) cv.put_str(0, 0, "test!") cv.clear() data = cv.export_to_memory("utf8").strip('\n') self.assertEqual(" ", data)
def test_set_size(self): """ module canvas: Canvas.set_size() """ cv = Canvas(0, 0) cv.set_size(1234, 1001) self.assertEqual((1234, 1001), (cv.get_width(), cv.get_height())) self.assertRaises(CanvasError, cv.set_size, "a", 12) self.assertRaises(CanvasError, cv.set_size, 12, "a")
def test_put_char(self): """ module canvas: Canvas.put_char() """ cv = Canvas(10, 1) self.assertEqual(1, cv.put_char(0, 0, "z")) self.assertEqual(1, cv.put_char(1, 0, "é")) self.assertEqual("z", cv.get_char(0, 0)) self.assertEqual("é", cv.get_char(1, 0)) self.assertRaises(CanvasError, cv.put_char, "a", 1, 2) self.assertRaises(CanvasError, cv.put_char, "a", 1, "b")
def test_set_boundaries(self): """ module canvas: Canvas.set_boundaries() """ cv = Canvas() self.assertEqual(0, cv.set_boundaries(0, 0, 10, 10)) self.assertEqual((10, 10), (cv.get_width(), cv.get_height())) self.assertEqual(0, cv.set_boundaries(0, 0, 5, 5)) self.assertEqual((5, 5), (cv.get_width(), cv.get_height())) self.assertRaises(CanvasError, cv.set_boundaries, "a", 0, 10, 10) self.assertRaises(CanvasError, cv.set_boundaries, 0, 0, "abc", 10)
def main(): """ Main function. """ try: cv = Canvas(8, 2) except CanvasError as err: sys.stderr.write("%s\n" % err) sys.exit(127) cv.set_color_ansi(caca.COLOR_WHITE, caca.COLOR_BLACK) cv.put_str(0, 0, "ABcde") cv.set_color_ansi(caca.COLOR_LIGHTRED, caca.COLOR_BLACK) cv.put_str(5, 0, "\\o/") cv.set_color_ansi(caca.COLOR_WHITE, caca.COLOR_BLUE) cv.put_str(0, 1, "&$âøÿØ?!") fonts = caca.get_font_list() if not fonts: sys.stderr.write("libcaca was compiled without any fonts\n") sys.exit(127) try: f = Font(fonts[0]) except FontError as err: sys.stderr.write("%s\n" % err) sys.exit(127) w = cv.get_width() * f.get_width() h = cv.get_height() * f.get_height() buf = ctypes.c_buffer(4 * w * h) cv.render(f, buf, w, h, 4 * w) cv.set_size(80, 32) try: dp = Display(cv) except DisplayError as err: sys.stderr.write("%s\n" % err) sys.exit(127) try: if sys.byteorder == 'big': dit = Dither(32, w, h, 4 * w, 0xff0000, 0xff00, 0xff, 0xff000000) else: dit = Dither(32, w, h, 4 * w, 0xff00, 0xff0000, 0xff000000, 0xff) dit.bitmap(cv, 0, 0, cv.get_width(), cv.get_height(), buf) except DitherError as err: sys.stderr.write("%s\n" % err) sys.exit(127) else: dp.refresh() dp.get_event(caca.EVENT_KEY_PRESS, Event(), -1)
def test_put_str(self): """ module canvas: Canvas.put_str() """ cv = Canvas(10, 1) self.assertEqual(10, cv.put_str(0, 0, "teststring")) liststring = [] for i in range(0, 10): liststring.append(cv.get_char(i, 0)) self.assertEqual("teststring", "".join(liststring)) self.assertRaises(CanvasError, cv.put_str, 0, 0, 111) self.assertRaises(CanvasError, cv.put_str, 0, "z", "abc")
def test_printf(self): """ module canvas: Canvas.printf() """ word1, word2 = "test", "string" cv = Canvas(10, 1) self.assertEqual(10, cv.printf(0, 0, "%s%s", word1, word2)) liststring = [] for i in range(0, 10): liststring.append(cv.get_char(i, 0)) self.assertEqual("teststring", "".join(liststring)) self.assertRaises(CanvasError, cv.printf, 0, 0, 111) self.assertRaises(CanvasError, cv.printf, 0, "z", "abc %s", "def")
def main(): """ Main function. """ try: cv = Canvas(0, 0) dp = Display(cv) except (CanvasError, DisplayError) as err: sys.stderr.write("%s\n" % err) sys.exit(2) sprite = Canvas(0, 0) sprite.set_color_ansi(caca.COLOR_LIGHTRED, caca.COLOR_BLACK) sprite.import_from_memory(THE_PIG, "text") sprite.set_handle(sprite.get_width()//2, sprite.get_height()//2) cv.set_color_ansi(caca.COLOR_WHITE, caca.COLOR_BLUE) cv.put_str(0, 0, "Centered sprite") cv.blit(cv.get_width()//2, cv.get_height()//2, sprite, NullCanvas()) dp.refresh() dp.get_event(caca.EVENT_KEY_PRESS, Event(), -1) sys.exit(0)
def main(): """ Main function. """ try: cv = Canvas(80, 24) dp = Display(cv) except (CanvasError, DisplayError) as err: sys.stderr.write("%s\n" % err) sys.exit(127) cv.set_color_ansi(caca.COLOR_LIGHTGRAY, caca.COLOR_BLACK) cv.clear() for i in range(0, 16): if i >= 8: y = i + 3 else: y = i + 2 cv.set_color_ansi(caca.COLOR_LIGHTGRAY, caca.COLOR_BLACK) cv.printf(3, y, "ANSI %i", i) for j in range(0, 16): if j >= 8: x = 13 + (j * 4) else: x = 12 + (j * 4) if i >= 8: y = i + 3 else: y = i + 2 cv.set_color_ansi(i, j) cv.put_str(x, y, "Aaホ") cv.set_color_ansi(caca.COLOR_LIGHTGRAY, caca.COLOR_BLACK) cv.put_str( 3, 20, "This is bold This is blink This is italics This is underline" ) cv.set_attr(caca.STYLE_BOLD) cv.put_str(3 + 8, 20, "bold") cv.set_attr(caca.STYLE_BLINK) cv.put_str(3 + 24, 20, "blink") cv.set_attr(caca.STYLE_ITALICS) cv.put_str(3 + 41, 20, "italics") cv.set_attr(caca.STYLE_UNDERLINE) cv.put_str(3 + 60, 20, "underline") dp.refresh() dp.get_event(caca.EVENT_KEY_PRESS, Event(), -1)
def __init__(self, app, spec): self.app = app self.initialize_spec_and_state(spec) self.dirty = False self.buffer = None self.width = self.current_state["width"] self.height = self.current_state["height"] if self.specifies('name'): self.name = spec["name"] else: self.name = "Unknown" if self.specifies("height") and self.specifies("width"): self.canvas = Canvas(spec["width"], spec["height"]) self.canvas.set_color_ansi(caca.COLOR_WHITE, caca.COLOR_BLACK) else: self.canvas = Canvas(0, 0) self.canvas.set_color_ansi(caca.COLOR_WHITE, caca.COLOR_BLACK) logging.debug("Spec for widget:") logging.debug(str(self.spec)) self.build_all()
def __init__(self, app, spec, driver='gl'): self.app = app self.spec = spec self.widgets = [] self.focus_order = None self.parser = FileParser(self.app) self.widgets = self.parser.parse(self.spec["widgets"]) self.canvas = Canvas(self.spec["app"]["width"], self.spec["app"]["height"]) self.display = Display(self.canvas) self.display.set_driver(driver) if len(self.widgets) > 0: self.focused_widget = self.widgets[0] self.build_focus_order()
def main(): """ Main function. """ try: cv = Canvas(0, 0) except CanvasError as err: sys.stderr.write("%s\n" % err) sys.exit(2) for idx in range(1, 200): cv.create_frame(idx) sys.stderr.write("canvas created, size is %dx%d\n" \ % (cv.get_width(), cv.get_height())) cv.set_size(150, 80) sys.stderr.write("canvas expanded, size is %dx%d\n" \ % (cv.get_width(), cv.get_height())) for idx in range(0, 16): cv.set_frame(idx) cv.set_color_ansi(caca.COLOR_WHITE, idx) cv.fill_box(0, 0, 40, 15, ':') cv.set_color_ansi(caca.COLOR_WHITE, caca.COLOR_BLUE) cv.put_str((idx * 5) // 2, idx, "カカ") cv.set_color_ansi(caca.COLOR_DEFAULT, caca.COLOR_TRANSPARENT) cv.set_size(41, 16) sys.stderr.write("canvas shrinked, size is %dx%d\n" \ % (cv.get_width(), cv.get_height())) try: dp = Display(cv) except DisplayError as err: sys.stderr.write("%s\n" % err) sys.exit(2) dp.set_time(50000) sys.stderr.write("display attached, size is %dx%d\n" \ % (cv.get_width(), cv.get_height())) n = 0 while not dp.get_event(caca.EVENT_KEY_PRESS, Event(), 0): cv.set_frame(n % 16) dp.refresh() n += 1
def __init__(self, *args, **kwargs): """ """ KinematicServer.__init__(self, *args, **kwargs) self.robots = [ r for (name, r) in self.elements.items() if isinstance(r, Robot) ] self.cv = Canvas() self.dp = Display(self.cv) self.ev = Event() self.quit = False self.width = self.cv.get_width() self.height = self.cv.get_height() self.camera = Camera(self, 640, 480) self.camera.translation = [3.5, 0, 1] self.camera.init() self.fps = -1.0 self.frames = 0 self.last_t = 0