Hi,
as I was frustrated when I read in TODO that Ruby bindings are "Not that
important", I started some.
I currently only have the canvas part of libcucul done (meaning all
functions that have a cucul_canvas_t* as first argument except
cucul_dither_bitmap).
I tried to follow Ruby spirit meaning that :
- most of the Cucul::Canvas methods return self
- the methods set_foo with only an argument are also available as foo=
(returning the value instead of self)
- the methods get_foo are also available as foo
What is currently available is :
$ irb -rcucul
irb(main):001:0> Cucul.constants
=> ["BROWN", "BOLD", "GREEN", "LIGHTMAGENTA", "LIGHTBLUE", "BLINK",
"MAGENTA", "DEFAULT", "TRANSPARENT", "BLUE", "LIGHTRED", "DARKGRAY",
"UNDERLINE", "RED", "WHITE", "BLACK", "LIGHTCYAN", "LIGHTGRAY",
"ITALICS", "CYAN", "YELLOW", "LIGHTGREEN", "Canvas"]
irb(main):002:0> Cucul::Canvas.methods.sort -
Cucul::Canvas.ancestors[1].methods
=> ["export_list", "import_list"]
irb(main):003:0> Cucul::Canvas.instance_methods.sort -
Cucul::Canvas.ancestors[1].instance_methods
=> ["attr=", "blit", "clear", "create_frame", "cursor_x", "cursor_y",
"draw_box", "draw_circle", "draw_cp437_box", "draw_ellipse",
"draw_line", "draw_polyline", "draw_thin_box", "draw_thin_ellipse",
"draw_thin_line", "draw_thin_polyline", "draw_thin_triangle",
"draw_triangle", "export_memory", "fill_box", "fill_ellipse",
"fill_triangle", "flip", "flop", "frame=", "frame_count", "frame_name",
"frame_name=", "free_frame", "get_attr", "get_char", "get_cursor_x",
"get_cursor_y", "get_frame_count", "get_frame_name", "get_handle_x",
"get_handle_y", "get_height", "get_width", "gotoxy", "handle_x",
"handle_y", "height", "height=", "import_file", "import_memory",
"invert", "printf", "put_attr", "put_char", "put_str", "rotate_180",
"rotate_left", "rotate_right", "set_attr", "set_boundaries",
"set_color_ansi", "set_color_argb", "set_frame", "set_frame_name",
"set_handle", "set_height", "set_size", "set_width", "stretch_left",
"stretch_right", "width", "width="]
And here are sample uses :
$ ruby -rcucul -e 'c=Cucul::Canvas.new(6, 3).fill_box(0,0,2,2,"#"[0]);
c2=Cucul::Canvas.new(1, 1).put_str(0,0,"x"); c.blit(1,1,c2); puts
c.export_memory("irc")'
###
#x#
###
$ ruby -e 'puts Cucul::Canvas.new(6,3).draw_thin_polyline([0,0,5,0],
[0,2,2,0]).export_memory("irc")'
-.
| `.
----`-
$ ruby -rcucul -e 'p Cucul::Canvas.export_list'
[["caca", "native libcaca format"], ["ansi", "ANSI"], ["utf8", "UTF-8
with ANSI escape codes"], ["utf8cr", "UTF-8 with ANSI escape codes and
MS-DOS \\r"], ["html", "HTML"], ["html3", "backwards-compatible HTML"],
["irc", "IRC with mIRC colours"], ["ps", "PostScript document"], ["svg",
"SVG vector image"], ["tga", "TGA image"]]
Here is the patch, you can start flaming :)
libcaca-ruby.patch
Description: Text Data
|