libcaca-ruby-api(3caca)

NAME
libcaca-ruby-api - Libcaca Ruby API

Classes

The classes available for libcaca are :

•   Caca::Canvas : functions that have a caca_canvas_t* as first argument
•   Caca::Dither : functions that have a caca_dither_t* as first argument
•   Caca::Font : functions that have a caca_font_t* as first argument (The constructor can currently only accept the name of a builtin font)
•   Caca::Display
•   Caca::Event
•   Caca::Event::Key
•   Caca::Event::Key::Press
•   Caca::Event::Key::Release
•   Caca::Event::Mouse
•   Caca::Event::Mouse::Press
•   Caca::Event::Mouse::Release
•   Caca::Event::Mouse::Motion
•   Caca::Event::Resize
•   Caca::Event::Quit
The character set conversion functions are not available yet in the binding.
$ 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
irb(main):009:0> Caca.constants
=> ['BROWN', 'BOLD', 'GREEN', 'LIGHTMAGENTA', 'LIGHTBLUE', 'BLINK',
irb(main):010:0> Caca.my_methods
=> ['version']
irb(main):011:0> Caca::Canvas.my_methods
=> ['export_list', 'import_list']
irb(main):012:0> Caca::Canvas.my_instance_methods
=> ['attr=', 'blit', 'clear', 'create_frame',
irb(main):013:0> Caca::Font.my_methods
=> ['list']
irb(main):014:0> Caca::Font.my_instance_methods
=> ['blocks', 'height', 'width']
irb(main):015:0> Caca::Dither.my_instance_methods
=> ['algorithm=', 'algorithm_list', 'antialias=', 'antialias_list',
irb(main):010:0> Caca::Display.my_instance_methods
=> ['canvas', 'get_event', 'height', 'mouse=', 'mouse_x', 'mouse_y', 'refresh',
irb(main):011:0> Caca::Event.constants
=> ['Key', 'Quit', 'TYPE', 'Mouse', 'Resize']
irb(main):012:0> Caca::Event.my_instance_methods
=> ['quit?']
irb(main):013:0> Caca::Event::Key.my_instance_methods
=> ['ch', 'utf32', 'utf8']
irb(main):014:0> Caca::Event::Mouse.my_instance_methods
=> ['button', 'x', 'y']
irb(main):015:0> Caca::Event::Resize.my_instance_methods
=> ['w', 'h']

Samples
$ 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#
###
$ ruby -e 'puts Caca::Canvas.new(6,3).draw_thin_polyline([[0,0], [0,2],
[5,2],[0,0]]).export_to_memory('irc')'
-.
| `.
----`-
$ 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',
$ ruby -rcaca -e 'p Caca::Font.list'
['Monospace9', 'Monospace Bold 12']
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