.TH "libcaca-ruby-api" 3caca "Fri Apr 6 2012" "Version 0.99.beta18" "libcaca" \" -*- nroff -*- .ad l .nh .SH NAME libcaca-ruby-api \- Libcaca Ruby API .SH "Classes" .PP The classes available for libcaca are : .PP .PD 0 .IP "\(bu" 2 \fBCaca::Canvas\fP : functions that have a caca_canvas_t* as first argument .IP "\(bu" 2 \fBCaca::Dither\fP : functions that have a caca_dither_t* as first argument .IP "\(bu" 2 \fBCaca::Font\fP : functions that have a caca_font_t* as first argument (The constructor can currently only accept the name of a builtin font) .IP "\(bu" 2 \fBCaca::Display\fP .IP "\(bu" 2 \fBCaca::Event\fP .IP "\(bu" 2 \fBCaca::Event::Key\fP .IP "\(bu" 2 \fBCaca::Event::Key::Press\fP .IP "\(bu" 2 \fBCaca::Event::Key::Release\fP .IP "\(bu" 2 \fBCaca::Event::Mouse\fP .IP "\(bu" 2 \fBCaca::Event::Mouse::Press\fP .IP "\(bu" 2 \fBCaca::Event::Mouse::Release\fP .IP "\(bu" 2 \fBCaca::Event::Mouse::Motion\fP .IP "\(bu" 2 \fBCaca::Event::Resize\fP .IP "\(bu" 2 \fBCaca::Event::Quit\fP .PP The character set conversion functions are not available yet in the binding\&. .PP .PP .nf $ 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 .fi .PP .PP .PP .nf 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'] .fi .PP .PP .PP .nf irb(main):010:0> Caca\&.my_methods => ['version'] .fi .PP .PP .PP .nf irb(main):011:0> Caca::Canvas\&.my_methods => ['export_list', 'import_list'] .fi .PP .PP .PP .nf irb(main):012:0> Caca::Canvas\&.my_instance_methods => ['attr=', 'blit', 'clear', 'create_frame', '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_to_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_from_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', 'wherex', 'wherey', 'width', 'width='] .fi .PP .PP .PP .nf irb(main):013:0> Caca::Font\&.my_methods => ['list'] .fi .PP .PP .PP .nf irb(main):014:0> Caca::Font\&.my_instance_methods => ['blocks', 'height', 'width'] .fi .PP .PP .PP .nf 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'] .fi .PP .PP .PP .nf 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'] .fi .PP .PP .PP .nf irb(main):011:0> Caca::Event\&.constants => ['Key', 'Quit', 'TYPE', 'Mouse', 'Resize'] .fi .PP .PP .PP .nf irb(main):012:0> Caca::Event\&.my_instance_methods => ['quit?'] .fi .PP .PP .PP .nf irb(main):013:0> Caca::Event::Key\&.my_instance_methods => ['ch', 'utf32', 'utf8'] .fi .PP .PP .PP .nf irb(main):014:0> Caca::Event::Mouse\&.my_instance_methods => ['button', 'x', 'y'] .fi .PP .PP .PP .nf irb(main):015:0> Caca::Event::Resize\&.my_instance_methods => ['w', 'h'] .fi .PP .SH "Samples" .PP .PP .nf $ 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_to_memory('irc')' ### #x# ### .fi .PP .PP .PP .nf $ ruby -e 'puts Caca::Canvas\&.new(6,3)\&.draw_thin_polyline([[0,0], [0,2], [5,2],[0,0]])\&.export_to_memory('irc')' -\&. | `\&. ----`- .fi .PP .PP .PP .nf $ 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']] .fi .PP .PP .PP .nf $ ruby -rcaca -e 'p Caca::Font\&.list' ['Monospace9', 'Monospace Bold 12'] .fi .PP .PP .PP .nf 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 module Caca 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 .fi .PP