X-Git-Url: http://git.code-monkey.de/?p=ruby-edje.git;a=blobdiff_plain;f=src%2Frb_edje_main.c;h=eef4cfbd0b43c21dfcef5e460dcad8ac7504b878;hp=e3e9a0f8ca374655eb64346a56637546b4c4fe8b;hb=00a4c037d60430de9f496f26804474949dceebad;hpb=4f42f11a79fd44fd647c213c1561beb9e1d199af diff --git a/src/rb_edje_main.c b/src/rb_edje_main.c index e3e9a0f..eef4cfb 100644 --- a/src/rb_edje_main.c +++ b/src/rb_edje_main.c @@ -1,6 +1,4 @@ /* - * $Id$ - * * Copyright (C) 2004 Tilman Sauerbeck (tilman at code-monkey de) * * This library is free software; you can redistribute it and/or @@ -24,17 +22,94 @@ #include "rb_edje_main.h" #include "rb_edje.h" +#include "rb_part.h" + +/* + * call-seq: + * Edje.freeze => nil + * + * Freezes all Edje::Edje objects. + */ +static VALUE m_freeze (VALUE self) +{ + edje_init (); + edje_freeze (); + edje_shutdown (); + + return Qnil; +} + +/* + * call-seq: + * Edje.thaw => nil + * + * Thaws all Edje::Edje objects. + */ +static VALUE m_thaw (VALUE self) +{ + edje_init (); + edje_thaw (); + edje_shutdown (); + + return Qnil; +} + +/* + * call-seq: + * Edje.frametime => float + * + * Returns the frametime (1 / fps) for the Edje library. + */ +static VALUE m_frametime_get (VALUE self) +{ + VALUE ret; -static VALUE m_init (VALUE self) + edje_init (); + ret = rb_float_new (edje_frametime_get ()); + edje_shutdown (); + + return ret; +} + +/* + * call-seq: + * Edje.frametime(float) + * + * Sets the frametime (1 / fps) for the Edje library. + */ +static VALUE m_frametime_set (VALUE self, VALUE val) { - return INT2FIX (edje_init ()); + Check_Type (val, T_FLOAT); + + edje_init (); + edje_frametime_set (NUM2DBL (val)); + edje_shutdown (); + + return Qnil; } -static VALUE m_shutdown (VALUE self) +static VALUE m_collections_get (VALUE self, VALUE file) { - rb_gc_start (); + VALUE ary; + Evas_List *list, *l; + + Check_Type (file, T_STRING); + + ary = rb_ary_new (); + + edje_init (); + + list = edje_file_collection_list (StringValuePtr (file)); + if (list) { + for (l = list; l; l = l->next) + rb_ary_push (ary, rb_str_new2 (l->data)); + + edje_file_collection_list_free (list); + } + + edje_shutdown (); - return INT2FIX (edje_shutdown ()); + return ary; } void Init_edje (void) @@ -43,9 +118,13 @@ void Init_edje (void) mEdje = rb_define_module ("Edje"); - rb_define_module_function (mEdje, "init", m_init, 0); - rb_define_module_function (mEdje, "shutdown", m_shutdown, 0); + rb_define_module_function (mEdje, "freeze", m_freeze, 0); + rb_define_module_function (mEdje, "thaw", m_thaw, 0); + rb_define_module_function (mEdje, "frametime", m_frametime_get, 0); + rb_define_module_function (mEdje, "frametime=", m_frametime_set, 1); + rb_define_module_function (mEdje, "collections", m_collections_get, 1); Init_Edje (); + Init_Part (); }