/*$Id$ */ /** \page libcaca-ruby-api Libcaca Ruby API The classes available for libcaca are : \li\b Caca::Canvas : functions that have a caca_canvas_t* as first argument \li\b Caca::Dither : functions that have a caca_dither_t* as first argument \li\b Caca::Font : functions that have a caca_font_t* as first argument (The constructor can currently only accept the name of a builtin font) \li\b Caca::Display \li\b Caca::Event \li\b Caca::Event::Key \li\b Caca::Event::Key::Press \li\b Caca::Event::Key::Release \li\b Caca::Event::Mouse \li\b Caca::Event::Mouse::Press \li\b Caca::Event::Mouse::Release \li\b Caca::Event::Mouse::Motion \li\b Caca::Event::Resize \li\b Caca::Event::Quit The character set conversion functions are not available yet in the binding. \code $irb -rcaca irb(main):001:0>class Object irb(main):002:1>def Object.my_instance_methods irb(main):003:2>instance_methods.sort - ancestors[1].instance_methods irb(main):004:2>end irb(main):005:1>def Object.my_methods irb(main):006:2>methods.sort - ancestors[1].methods irb(main):007:2>end irb(main):008:1>end \endcode \code irb(main):009:0>Caca.constants =>["BROWN", "BOLD", "GREEN", "LIGHTMAGENTA", "LIGHTBLUE", "BLINK", "MAGENTA","DEFAULT", "TRANSPARENT", "BLUE", "LIGHTRED", "DARKGRAY", "UNDERLINE","RED", "WHITE", "BLACK", "LIGHTCYAN", "LIGHTGRAY", "ITALICS","CYAN", "YELLOW", "LIGHTGREEN", "Canvas", "Dither", "Font"] \endcode \code irb(main):010:0>Caca.my_methods =>["version"] \endcode \code irb(main):011:0>Caca::Canvas.my_methods =>["export_list", "import_list"] \endcode \code irb(main):012:0>Caca::Canvas.my_instance_methods =>["attr=", "blit", "clear", "create_frame", "cursor_x", "cursor_y", "dither_bitmap","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", "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="] \endcode \code irb(main):013:0>Caca::Font.my_methods =>["list"] \endcode \code irb(main):014:0>Caca::Font.my_instance_methods =>["blocks", "height", "width"] \endcode \code irb(main):015:0>Caca::Dither.my_instance_methods =>["algorithm=", "algorithm_list", "antialias=", "antialias_list", "brightness=","charset=", "charset_list", "color=", "color_list", "contrast=","gamma=", "palette=", "set_algorithm", "set_antialias", "set_brightness","set_charset", "set_color", "set_contrast", "set_gamma","set_palette"] \endcode \code irb(main):010:0>Caca::Display.my_instance_methods =>["canvas", "get_event", "height", "mouse=", "mouse_x", "mouse_y", "refresh", "set_mouse","set_time", "set_title", "time", "time=", "title=", "width"] \endcode \code irb(main):011:0>Caca::Event.constants =>["Key", "Quit", "TYPE", "Mouse", "Resize"] \endcode \code irb(main):012:0>Caca::Event.my_instance_methods =>["quit?"] \endcode \code irb(main):013:0>Caca::Event::Key.my_instance_methods =>["ch", "utf32", "utf8"] \endcode \code irb(main):014:0>Caca::Event::Mouse.my_instance_methods =>["button", "x", "y"] \endcode \code irb(main):015:0>Caca::Event::Resize.my_instance_methods =>["w", "h"] \endcode \section Samples \code $ruby -rcaca -e 'c=Caca::Canvas.new(6, 3).fill_box(0,0,2,2,"#"[0]); c2=Caca::Canvas.new(1,1).put_str(0,0,"x"); c.blit(1,1,c2); puts c.export_memory("irc")' ### #x# ### \endcode \code $ruby -e 'puts Caca::Canvas.new(6,3).draw_thin_polyline([[0,0], [0,2], [5,2],[0,0]]).export_memory("irc")' -. | `. ----`- \endcode \code $ruby -rcaca -e 'p Caca::Canvas.export_list' [["caca","native libcaca format"], ["ansi", "ANSI"], ["utf8", "UTF-8 withANSI 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", "SVGvector image"], ["tga", "TGA image"]] \endcode \code $ruby -rcaca -e 'p Caca::Font.list' ["Monospace9", "Monospace Bold 12"] \endcode \code require'caca' c= Caca::Canvas.new(20,10) c.put_str(2,3, "plop!") c.draw_thin_polyline([[0,0],[0,2], [5,2], [0,0]]) d= Caca::Display.new(c) d.title= "Test !" d.refresh #Redefine Event::Key#quit? so that q, Q, and Esc become exit keys moduleCaca class Event::Key def quit? "qQ^[".split('').member?(@ch.chr) end end end while((e= d.get_event(Caca::Event, -1)) && ! e.quit?) p e d.refresh end \endcode */