示例#1
0
 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")
示例#2
0
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'))
示例#3
0
 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)
示例#4
0
 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)
示例#5
0
 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))
示例#7
0
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"))
示例#8
0
 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)
示例#9
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())
示例#10
0
 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)
示例#11
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)
示例#12
0
 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)
示例#13
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)
示例#14
0
 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)
示例#15
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")
示例#16
0
 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])
示例#17
0
 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")
示例#18
0
 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)
示例#19
0
    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")
示例#20
0
 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")
示例#21
0
 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)
示例#22
0
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)
示例#23
0
    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")
示例#24
0
 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")
示例#25
0
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)
示例#26
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)
示例#27
0
文件: widget.py 项目: chazu/jinxes
    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()
示例#28
0
文件: display.py 项目: chazu/jinxes
    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()
示例#29
0
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
示例#30
0
    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