@@ -33,6 +33,7 @@ static VALUE display_alloc(VALUE klass) | |||||
static VALUE display_initialize(int argc, VALUE* argv, VALUE self) | static VALUE display_initialize(int argc, VALUE* argv, VALUE self) | ||||
{ | { | ||||
caca_display_t *display; | caca_display_t *display; | ||||
cucul_canvas_t *canvas; | |||||
VALUE cv; | VALUE cv; | ||||
rb_scan_args(argc, argv, "01", &cv); | rb_scan_args(argc, argv, "01", &cv); | ||||
@@ -40,6 +41,8 @@ static VALUE display_initialize(int argc, VALUE* argv, VALUE self) | |||||
if(NIL_P(cv)) | if(NIL_P(cv)) | ||||
{ | { | ||||
display = caca_create_display(NULL); | display = caca_create_display(NULL); | ||||
canvas = caca_get_canvas(display); | |||||
cv = canvas_create(canvas); | |||||
} | } | ||||
else | else | ||||
{ | { | ||||
@@ -58,6 +61,8 @@ static VALUE display_initialize(int argc, VALUE* argv, VALUE self) | |||||
_SELF = display; | _SELF = display; | ||||
rb_iv_set(self, "@canvas", cv); | |||||
return self; | return self; | ||||
} | } | ||||
@@ -49,6 +49,11 @@ static VALUE canvas_alloc(VALUE klass) | |||||
return obj; | return obj; | ||||
} | } | ||||
VALUE canvas_create(cucul_canvas_t *canvas) | |||||
{ | |||||
return Data_Wrap_Struct(cCanvas, 0, canvas_free, canvas); | |||||
} | |||||
static VALUE canvas_initialize(VALUE self, VALUE width, VALUE height) | static VALUE canvas_initialize(VALUE self, VALUE width, VALUE height) | ||||
{ | { | ||||
unsigned int w, h; | unsigned int w, h; | ||||
@@ -5,5 +5,6 @@ | |||||
extern VALUE cCanvas; | extern VALUE cCanvas; | ||||
extern void Init_cucul_canvas(VALUE); | extern void Init_cucul_canvas(VALUE); | ||||
extern VALUE canvas_create(cucul_canvas_t *canvas); | |||||
#endif | #endif |
@@ -2,6 +2,9 @@ require 'cucul' | |||||
require 'caca.so' | require 'caca.so' | ||||
module Caca | module Caca | ||||
class Display | |||||
attr_reader :canvas | |||||
end | |||||
class Event | class Event | ||||
def Event.to_i | def Event.to_i | ||||
const_get("TYPE") | const_get("TYPE") | ||||
@@ -33,7 +33,7 @@ irb(main):009:0> Caca.my_methods | |||||
\code | \code | ||||
irb(main):010:0> Caca::Display.my_instance_methods | irb(main):010:0> Caca::Display.my_instance_methods | ||||
=> ["get_event", "height", "mouse=", "mouse_x", "mouse_y", "refresh", | |||||
=> ["canvas", "get_event", "height", "mouse=", "mouse_x", "mouse_y", "refresh", | |||||
"set_mouse", "set_time", "set_title", "time", "time=", "title=", "width"] | "set_mouse", "set_time", "set_title", "time", "time=", "title=", "width"] | ||||
\endcode | \endcode | ||||