Enlightenment CVS committal

Author  : raster
Project : e17
Module  : libs/edje

Dir     : e17/libs/edje/src/lib


Modified Files:
        edje_embryo.c 


Log Message:


ok - examples of how to hook some embryo calls in - help appreciated with the
nice big LIST! :)

===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/edje/src/lib/edje_embryo.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -3 -r1.7 -r1.8
--- edje_embryo.c       1 Apr 2004 09:30:45 -0000       1.7
+++ edje_embryo.c       2 Apr 2004 03:55:38 -0000       1.8
@@ -183,10 +183,15 @@
 
 /* EDJE...
  * 
- * set_state(part_id, state[], Float:state_val)
- * set_tween_state(part_id, state1[], Float:state1_val, state2[], Float:state2_val)
+ * implemented so far as examples:
+ * 
  * emit(sig[], src[])
+ * set_state(part_id, state[], Float:state_val)
+ * set_tween_state(part_id, Float:tween, state1[], Float:state1_val, state2[], 
Float:state2_val)
  * run_program(program_id)
+ * 
+ * still need to implement this:
+ * 
  * stop_program(program_id)
  * stop_programs_on(part_id)
  * Direction:get_drag_dir(part_id)
@@ -223,6 +228,106 @@
  * get_clip(part_id)
  */
 
+/* emit(sig[], src[]) */
+static Embryo_Cell
+_edje_embryo_fn_emit(Embryo_Program *ep, Embryo_Cell *params)
+{
+   Edje *ed;
+   char *sig = NULL, *src = NULL;
+   
+   CHKPARAM(2);
+   ed = embryo_program_data_get(ep);
+   GETSTR(sig, params[1]);
+   GETSTR(src, params[2]);
+   if ((!sig) || (!src)) return 0;
+   _edje_emit(ed, sig, src);
+   return 0;
+}
+
+/* set_state(part_id, state[], Float:state_val) */
+static Embryo_Cell
+_edje_embryo_fn_set_state(Embryo_Program *ep, Embryo_Cell *params)
+{
+   Edje *ed;
+   char *state = NULL;
+   int part_id = 0;
+   float f = 0.0;
+   double value = 0.0;
+   Edje_Real_Part *rp;
+   
+   CHKPARAM(3);
+   ed = embryo_program_data_get(ep);
+   GETSTR(state, params[2]);
+   if ((!state)) return 0;
+   part_id = params[1];
+   if (part_id < 0) return 0;
+   f = EMBRYO_CELL_TO_FLOAT(params[3]);
+   value = (double)f;
+   rp = ed->table_parts[part_id % ed->table_parts_size];
+   if (rp)
+     {
+       if (rp->program) _edje_program_end(ed, rp->program);
+        _edje_part_description_apply(ed, rp, state, value, NULL, 0.0);
+       _edje_part_pos_set(ed, rp, EDJE_TWEEN_MODE_LINEAR, 0.0);
+     }
+   return 0;
+}
+
+/* set_tween_state(part_id, Float:tween, state1[], Float:state1_val, state2[], 
Float:state2_val) */
+static Embryo_Cell
+_edje_embryo_fn_set_tween_state(Embryo_Program *ep, Embryo_Cell *params)
+{
+   Edje *ed;
+   char *state1 = NULL, *state2 = NULL;
+   int part_id = 0;
+   float f = 0.0;
+   double tween = 0.0, value1 = 0.0, value2 = 0.0;
+   Edje_Real_Part *rp;
+   
+   CHKPARAM(6);
+   ed = embryo_program_data_get(ep);
+   GETSTR(state1, params[3]);
+   GETSTR(state2, params[5]);
+   if ((!state1) || (!state2)) return 0;
+   part_id = params[1];
+   if (part_id < 0) return 0;
+   f = EMBRYO_CELL_TO_FLOAT(params[2]);
+   tween = (double)f;
+   f = EMBRYO_CELL_TO_FLOAT(params[4]);
+   value1 = (double)f;
+   f = EMBRYO_CELL_TO_FLOAT(params[6]);
+   value2 = (double)f;
+   rp = ed->table_parts[part_id % ed->table_parts_size];
+   if (rp)
+     {
+       if (rp->program) _edje_program_end(ed, rp->program);
+       _edje_part_description_apply(ed, rp, state1, value1, state2, value2);
+       _edje_part_pos_set(ed, rp, EDJE_TWEEN_MODE_LINEAR, tween);
+     }
+   return 0;
+}
+
+/* run_program(program_id) */
+static Embryo_Cell
+_edje_embryo_fn_run_program(Embryo_Program *ep, Embryo_Cell *params)
+{
+   Edje *ed;
+   char *state1 = NULL, *state2 = NULL;
+   int program_id = 0;
+   Edje_Program *pr;
+   
+   CHKPARAM(1);
+   ed = embryo_program_data_get(ep);
+   program_id = params[1];
+   if (program_id < 0) return 0;
+   pr = ed->table_programs[program_id % ed->table_programs_size];
+   if (pr)
+     {
+       _edje_program_run(ed, pr, 0, "", "");
+     }
+   return 0;
+}
+
 /* MODIFY STATE VALUES
  * 
  * set_state_val(part_id, state[], Float:state_val, Param:param, ...)
@@ -262,36 +367,6 @@
  * 
  */
 
-/**** All the api exported to edje scripts ****/
-/* tst() */
-static Embryo_Cell
-_edje_embryo_fn_tst(Embryo_Program *ep, Embryo_Cell *params)
-{
-   Edje *ed;
-   
-   /* params[0] = number of bytes of params passed */
-   ed = embryo_program_data_get(ep);
-   printf("EDJE DEBUG: Embryo code detected for \"%s\":\"%s\"\n",
-         ed->path, ed->part);
-   return 7;
-}
-
-/* emit(sig[], src[]) */
-static Embryo_Cell
-_edje_embryo_fn_emit(Embryo_Program *ep, Embryo_Cell *params)
-{
-   Edje *ed;
-   char *sig, *src;
-   
-   CHKPARAM(2);
-   ed = embryo_program_data_get(ep);
-   GETSTR(sig, params[1]);
-   GETSTR(src, params[2]);
-   if ((!sig) || (!src)) return 0;
-   _edje_emit(ed, sig, src);
-   return 0;
-}
-
 void
 _edje_embryo_script_init(Edje *ed)
 {
@@ -311,8 +386,11 @@
    embryo_program_native_call_add(ep, "get_strlen", _edje_embryo_fn_get_strlen);
    embryo_program_native_call_add(ep, "set_str", _edje_embryo_fn_set_str);
    
-   embryo_program_native_call_add(ep, "tst", _edje_embryo_fn_tst);
    embryo_program_native_call_add(ep, "emit", _edje_embryo_fn_emit);
+   embryo_program_native_call_add(ep, "set_state", _edje_embryo_fn_set_state);
+   embryo_program_native_call_add(ep, "set_tween_state", 
_edje_embryo_fn_set_tween_state);
+   embryo_program_native_call_add(ep, "run_program", _edje_embryo_fn_run_program);
+   
    embryo_program_vm_push(ep); /* neew a new vm to run in */
    _edje_embryo_globals_init(ed);
 }




-------------------------------------------------------
This SF.Net email is sponsored by: IBM Linux Tutorials
Free Linux tutorial presented by Daniel Robbins, President and CEO of
GenToo technologies. Learn everything from fundamentals to system
administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to