1
#include "edje_private.h"
244
_edje_embryo_fn_get_int(Embryo_Program *ep, Embryo_Cell *params)
249
ed = embryo_program_data_get(ep);
250
return (Embryo_Cell)_edje_var_int_get(ed, (int)params[1]);
255
_edje_embryo_fn_set_int(Embryo_Program *ep, Embryo_Cell *params)
260
ed = embryo_program_data_get(ep);
261
_edje_var_int_set(ed, (int)params[1], (int)params[2]);
267
_edje_embryo_fn_get_float(Embryo_Program *ep, Embryo_Cell *params)
273
ed = embryo_program_data_get(ep);
274
v = (float)_edje_var_float_get(ed, params[1]);
275
return EMBRYO_FLOAT_TO_CELL(v);
280
_edje_embryo_fn_set_float(Embryo_Program *ep, Embryo_Cell *params)
286
ed = embryo_program_data_get(ep);
287
v = EMBRYO_CELL_TO_FLOAT(params[2]);
288
_edje_var_float_set(ed, (int)params[1], (double)v);
294
_edje_embryo_fn_get_str(Embryo_Program *ep, Embryo_Cell *params)
300
if (params[3] < 1) return 0;
301
ed = embryo_program_data_get(ep);
302
s = (char *)_edje_var_str_get(ed, (int)params[1]);
305
if ((int)strlen(s) < params[3])
307
SETSTR(s, params[2]);
313
ss = alloca(strlen(s) + 1);
315
ss[params[3] - 1] = 0;
316
SETSTR(ss, params[2]);
321
SETSTR("", params[2]);
328
_edje_embryo_fn_get_strlen(Embryo_Program *ep, Embryo_Cell *params)
334
ed = embryo_program_data_get(ep);
335
s = (char *)_edje_var_str_get(ed, (int)params[1]);
345
_edje_embryo_fn_set_str(Embryo_Program *ep, Embryo_Cell *params)
351
ed = embryo_program_data_get(ep);
352
GETSTR(s, params[2]);
355
_edje_var_str_set(ed, (int)params[1], s);
362
_edje_embryo_fn_count(Embryo_Program *ep, Embryo_Cell *params)
364
Edje *ed = embryo_program_data_get(ep);
368
return (Embryo_Cell)_edje_var_list_count_get(ed, (int)params[1]);
373
_edje_embryo_fn_remove(Embryo_Program *ep, Embryo_Cell *params)
375
Edje *ed = embryo_program_data_get(ep);
379
_edje_var_list_remove_nth(ed, (int)params[1], (int)params[2]);
386
_edje_embryo_fn_append_int(Embryo_Program *ep, Embryo_Cell *params)
388
Edje *ed = embryo_program_data_get(ep);
392
_edje_var_list_int_append(ed, (int)params[1], (int)params[2]);
399
_edje_embryo_fn_prepend_int(Embryo_Program *ep, Embryo_Cell *params)
401
Edje *ed = embryo_program_data_get(ep);
405
_edje_var_list_int_prepend(ed, (int)params[1], (int)params[2]);
412
_edje_embryo_fn_insert_int(Embryo_Program *ep, Embryo_Cell *params)
414
Edje *ed = embryo_program_data_get(ep);
418
_edje_var_list_int_insert(ed, (int)params[1], (int)params[2],
426
_edje_embryo_fn_replace_int(Embryo_Program *ep, Embryo_Cell *params)
428
Edje *ed = embryo_program_data_get(ep);
432
_edje_var_list_nth_int_set(ed, (int)params[1], (int)params[2],
440
_edje_embryo_fn_fetch_int(Embryo_Program *ep, Embryo_Cell *params)
442
Edje *ed = embryo_program_data_get(ep);
446
return _edje_var_list_nth_int_get(ed, (int)params[1],
452
_edje_embryo_fn_append_str(Embryo_Program *ep, Embryo_Cell *params)
454
Edje *ed = embryo_program_data_get(ep);
459
GETSTR(s, params[2]);
461
_edje_var_list_str_append(ed, (int)params[1], s);
468
_edje_embryo_fn_prepend_str(Embryo_Program *ep, Embryo_Cell *params)
470
Edje *ed = embryo_program_data_get(ep);
475
GETSTR(s, params[2]);
477
_edje_var_list_str_prepend(ed, (int)params[1], s);
484
_edje_embryo_fn_insert_str(Embryo_Program *ep, Embryo_Cell *params)
486
Edje *ed = embryo_program_data_get(ep);
491
GETSTR(s, params[3]);
493
_edje_var_list_str_insert(ed, (int)params[1], (int)params[2], s);
500
_edje_embryo_fn_replace_str(Embryo_Program *ep, Embryo_Cell *params)
502
Edje *ed = embryo_program_data_get(ep);
507
GETSTR(s, params[3]);
509
_edje_var_list_nth_str_set(ed, (int)params[1], (int)params[2], s);
516
_edje_embryo_fn_fetch_str(Embryo_Program *ep, Embryo_Cell *params)
518
Edje *ed = embryo_program_data_get(ep);
523
s = (char *)_edje_var_list_nth_str_get(ed, (int)params[1],
527
if ((int)strlen(s) < params[4])
529
SETSTR(s, params[3]);
535
ss = alloca(strlen(s) + 1);
537
ss[params[4] - 1] = 0;
538
SETSTR(ss, params[3]);
543
SETSTR("", params[3]);
551
_edje_embryo_fn_append_float(Embryo_Program *ep, Embryo_Cell *params)
553
Edje *ed = embryo_program_data_get(ep);
558
f = EMBRYO_CELL_TO_FLOAT(params[2]);
559
_edje_var_list_float_append(ed, (int)params[1], f);
566
_edje_embryo_fn_prepend_float(Embryo_Program *ep, Embryo_Cell *params)
568
Edje *ed = embryo_program_data_get(ep);
573
f = EMBRYO_CELL_TO_FLOAT(params[2]);
574
_edje_var_list_float_prepend(ed, (int)params[1], f);
581
_edje_embryo_fn_insert_float(Embryo_Program *ep, Embryo_Cell *params)
583
Edje *ed = embryo_program_data_get(ep);
588
f = EMBRYO_CELL_TO_FLOAT(params[3]);
589
_edje_var_list_float_insert(ed, (int)params[1], (int)params[2], f);
596
_edje_embryo_fn_replace_float(Embryo_Program *ep, Embryo_Cell *params)
598
Edje *ed = embryo_program_data_get(ep);
602
_edje_var_list_nth_float_set(ed, (int)params[1], (int)params[2],
603
EMBRYO_CELL_TO_FLOAT(params[3]));
610
_edje_embryo_fn_fetch_float(Embryo_Program *ep, Embryo_Cell *params)
612
Edje *ed = embryo_program_data_get(ep);
617
f = _edje_var_list_nth_float_get(ed, (int)params[1], (int)params[2]);
619
return EMBRYO_FLOAT_TO_CELL(f);
624
_edje_embryo_fn_timer(Embryo_Program *ep, Embryo_Cell *params)
633
ed = embryo_program_data_get(ep);
634
GETSTR(fname, params[2]);
635
if ((!fname)) return 0;
636
f = EMBRYO_CELL_TO_FLOAT(params[1]);
639
return _edje_var_timer_add(ed, in, fname, val);
644
_edje_embryo_fn_cancel_timer(Embryo_Program *ep, Embryo_Cell *params)
650
ed = embryo_program_data_get(ep);
652
if (id <= 0) return 0;
653
_edje_var_timer_del(ed, id);
659
_edje_embryo_fn_reset_timer(Embryo_Program *ep, Embryo_Cell *params)
665
ed = embryo_program_data_get(ep);
667
if (id <= 0) return 0;
668
_edje_var_timer_reset(ed, id);
674
_edje_embryo_fn_anim(Embryo_Program *ep, Embryo_Cell *params)
683
ed = embryo_program_data_get(ep);
684
GETSTR(fname, params[2]);
685
if ((!fname)) return 0;
686
f = EMBRYO_CELL_TO_FLOAT(params[1]);
689
return _edje_var_anim_add(ed, len, fname, val);
694
_edje_embryo_fn_cancel_anim(Embryo_Program *ep, Embryo_Cell *params)
700
ed = embryo_program_data_get(ep);
702
if (id <= 0) return 0;
703
_edje_var_anim_del(ed, id);
709
_edje_embryo_fn_get_anim_pos_map(Embryo_Program *ep, Embryo_Cell *params)
716
pos = EMBRYO_CELL_TO_FLOAT(params[1]);
718
v1 = EMBRYO_CELL_TO_FLOAT(params[3]);
719
v2 = EMBRYO_CELL_TO_FLOAT(params[4]);
723
case ECORE_POS_MAP_LINEAR:
724
case ECORE_POS_MAP_ACCELERATE:
725
case ECORE_POS_MAP_DECELERATE:
726
case ECORE_POS_MAP_SINUSOIDAL:
727
pos = ecore_animator_pos_map(pos, tween, 0, 0);
730
case ECORE_POS_MAP_ACCELERATE_FACTOR:
731
pos = ecore_animator_pos_map(pos, ECORE_POS_MAP_ACCELERATE_FACTOR,
735
case ECORE_POS_MAP_DECELERATE_FACTOR:
736
pos = ecore_animator_pos_map(pos, ECORE_POS_MAP_DECELERATE_FACTOR,
740
case ECORE_POS_MAP_SINUSOIDAL_FACTOR:
741
pos = ecore_animator_pos_map(pos, ECORE_POS_MAP_SINUSOIDAL_FACTOR,
745
case ECORE_POS_MAP_DIVISOR_INTERP:
746
case ECORE_POS_MAP_BOUNCE:
747
case ECORE_POS_MAP_SPRING:
748
pos = ecore_animator_pos_map(pos, tween, v1, v2);
755
SETFLOAT(pos, params[5]);
762
_edje_embryo_fn_set_min_size(Embryo_Program *ep, Embryo_Cell *params)
766
double w = 0.0, h = 0.0;
769
ed = embryo_program_data_get(ep);
770
f = EMBRYO_CELL_TO_FLOAT(params[1]);
772
f = EMBRYO_CELL_TO_FLOAT(params[2]);
775
if (w < 0.0) w = 0.0;
776
if (h < 0.0) h = 0.0;
777
ed->collection->prop.min.w = w;
778
ed->collection->prop.min.h = h;
779
ed->recalc_call = EINA_TRUE;
780
ed->dirty = EINA_TRUE;
781
#ifdef EDJE_CALC_CACHE
782
ed->all_part_change = EINA_TRUE;
790
_edje_embryo_fn_set_max_size(Embryo_Program *ep, Embryo_Cell *params)
794
double w = 0.0, h = 0.0;
797
ed = embryo_program_data_get(ep);
798
f = EMBRYO_CELL_TO_FLOAT(params[1]);
800
f = EMBRYO_CELL_TO_FLOAT(params[2]);
803
if (w < 0.0) w = 0.0;
804
if (h < 0.0) h = 0.0;
805
ed->collection->prop.max.w = w;
806
ed->collection->prop.max.h = h;
807
ed->recalc_call = EINA_TRUE;
808
ed->dirty = EINA_TRUE;
809
#ifdef EDJE_CALC_CACHE
810
ed->all_part_change = EINA_TRUE;
819
_edje_embryo_fn_stop_program(Embryo_Program *ep, Embryo_Cell *params)
823
Edje_Running_Program *runp;
824
Edje_Pending_Program *pp;
828
ed = embryo_program_data_get(ep);
829
program_id = params[1];
830
if (program_id < 0) return 0;
832
ed->walking_actions = EINA_TRUE;
834
EINA_LIST_FOREACH(ed->actions, l, runp)
835
if (program_id == runp->program->id)
836
_edje_program_end(ed, runp);
837
EINA_LIST_FOREACH_SAFE(ed->pending_actions, l, ll, pp)
838
if (program_id == pp->program->id)
840
ed->pending_actions = eina_list_remove_list(ed->pending_actions, l);
841
ecore_timer_del(pp->timer);
845
ed->walking_actions = EINA_FALSE;
852
_edje_embryo_fn_stop_programs_on(Embryo_Program *ep, Embryo_Cell *params)
860
ed = embryo_program_data_get(ep);
862
if (part_id < 0) return 0;
863
rp = ed->table_parts[part_id % ed->table_parts_size];
866
Eina_List *l, *ll, *lll;
867
Edje_Pending_Program *pp;
868
Edje_Program_Target *pt;
870
if (rp->program) _edje_program_end(ed, rp->program);
871
EINA_LIST_FOREACH_SAFE(ed->pending_actions, l, ll, pp)
873
EINA_LIST_FOREACH(pp->program->targets, lll, pt)
874
if (pt->id == part_id)
876
ed->pending_actions = eina_list_remove_list(ed->pending_actions, l);
877
ecore_timer_del(pp->timer);
888
_edje_embryo_fn_get_mouse(Embryo_Program *ep, Embryo_Cell *params)
891
Evas_Coord x = 0, y = 0;
894
ed = embryo_program_data_get(ep);
895
evas_pointer_canvas_xy_get(ed->base.evas, &x, &y);
898
SETINT((int)x, params[1]);
899
SETINT((int)y, params[2]);
905
_edje_embryo_fn_get_mouse_buttons(Embryo_Program *ep, Embryo_Cell *params)
910
ed = embryo_program_data_get(ep);
911
return evas_pointer_button_down_mask_get(ed->base.evas);
916
_edje_embryo_fn_emit(Embryo_Program *ep, Embryo_Cell *params)
919
char *sig = NULL, *src = NULL;
922
ed = embryo_program_data_get(ep);
923
GETSTR(sig, params[1]);
924
GETSTR(src, params[2]);
925
if ((!sig) || (!src)) return 0;
926
_edje_emit(ed, sig, src);
932
_edje_embryo_fn_get_part_id(Embryo_Program *ep, Embryo_Cell *params)
935
Edje_Part_Collection *col;
941
ed = embryo_program_data_get(ep);
942
GETSTR(p, params[1]);
944
col = ed->collection;
947
for (i = 0; i < col->parts_count; i++, part++)
949
if (!(*part)->name) continue;
950
if (!strcmp((*part)->name, p)) return (*part)->id;
957
_edje_embryo_fn_get_image_id(Embryo_Program *ep, Embryo_Cell *params)
961
Edje_Image_Directory *dir;
962
Edje_Image_Directory_Entry *dirent;
967
ed = embryo_program_data_get(ep);
968
GETSTR(p, params[1]);
971
if (!file) return -1;
972
dir = file->image_dir;
973
dirent = dir->entries;
974
for (i = 0; i < dir->entries_count; i++, dirent++)
976
if (!dirent->entry) continue;
977
if (!strcmp(dirent->entry, p)) return dirent->id;
984
_edje_embryo_fn_get_program_id(Embryo_Program *ep, Embryo_Cell *params)
992
ed = embryo_program_data_get(ep);
993
GETSTR(p, params[1]);
995
prog = ed->collection->patterns.table_programs;
996
if (!prog) return -1;
997
for (i = 0; i < ed->collection->patterns.table_programs_size; i++, prog++)
999
if (!(*prog)->name) continue;
1000
if (!strcmp((*prog)->name, p)) return (*prog)->id;
1006
_edje_embryo_fn_play_sample(Embryo_Program *ep, Embryo_Cell *params)
1009
char *sample_name = NULL;
1013
if (params[0] < (int)(sizeof(Embryo_Cell) * 2))
1015
ed = embryo_program_data_get(ep);
1016
GETSTR(sample_name, params[1]);
1017
if ((!sample_name)) return 0;
1018
speed = EMBRYO_CELL_TO_FLOAT(params[2]);
1019
if (params[0] == (int)(sizeof(Embryo_Cell) * 3))
1020
GETINT(channel, params[3]);
1021
_edje_multisense_internal_sound_sample_play(ed, sample_name,
1022
(double)speed, channel);
1027
_edje_embryo_fn_play_tone(Embryo_Program *ep, Embryo_Cell *params)
1030
char *tone_name = NULL;
1031
float duration = 0.1;
1034
if (params[0] < (int)(sizeof(Embryo_Cell) * 2))
1036
ed = embryo_program_data_get(ep);
1037
GETSTR(tone_name, params[1]);
1038
if ((!tone_name)) return 0;
1039
duration = EMBRYO_CELL_TO_FLOAT(params[2]);
1040
if (params[0] == (int)(sizeof(Embryo_Cell) * 3))
1041
GETINT(channel, params[3]);
1042
_edje_multisense_internal_sound_tone_play(ed, tone_name,
1043
(double)duration, channel);
1048
_edje_embryo_fn_play_vibration(Embryo_Program *ep, Embryo_Cell *params)
1051
char *sample_name = NULL;
1054
if (params[0] < (int)(sizeof(Embryo_Cell) * 2)) return 0;
1055
ed = embryo_program_data_get(ep);
1056
GETSTR(sample_name, params[1]);
1057
if ((!sample_name)) return 0;
1059
if (params[0] == (int)(sizeof(Embryo_Cell) * 2))
1060
GETINT(repeat, params[2]);
1062
_edje_multisense_internal_vibration_sample_play(ed, sample_name,
1069
_edje_embryo_fn_set_state(Embryo_Program *ep, Embryo_Cell *params)
1078
if (!(HASNPARAMS(2) || HASNPARAMS(3))) return -1;
1080
ed = embryo_program_data_get(ep);
1081
GETSTR(state, params[2]);
1082
if ((!state)) return 0;
1083
part_id = params[1];
1084
if (part_id < 0) return 0;
1087
f = EMBRYO_CELL_TO_FLOAT(params[3]);
1092
rp = ed->table_parts[part_id % ed->table_parts_size];
1095
if (rp->program) _edje_program_end(ed, rp->program);
1096
_edje_part_description_apply(ed, rp, state, value, NULL, 0.0);
1097
_edje_part_pos_set(ed, rp, EDJE_TWEEN_MODE_LINEAR, ZERO, ZERO, ZERO,
1105
_edje_embryo_fn_set_state_anim(Embryo_Program *ep, Embryo_Cell *params)
1115
double tween = 0.0, v1 = 0.0, v2 = 0.0, v3 = 0.0, v4 = 0.0;
1117
if (HASNPARAMS(4)) return -1;
1119
ed = embryo_program_data_get(ep);
1120
GETSTR(state, params[2]);
1121
if ((!state)) return 0;
1122
part_id = params[1];
1123
if (part_id < 0) return 0;
1124
f = EMBRYO_CELL_TO_FLOAT(params[3]);
1126
anim_type = params[4];
1127
f = EMBRYO_CELL_TO_FLOAT(params[5]);
1129
if ((anim_type >= EDJE_TWEEN_MODE_LINEAR) &&
1130
(anim_type <= EDJE_TWEEN_MODE_DECELERATE))
1134
GETSTR(tmp, params[6]);
1135
if ((tmp) && (!strcmp(tmp, "CURRENT")))
1136
anim_type |= EDJE_TWEEN_MODE_OPT_FROM_CURRENT;
1139
else if ((anim_type >= EDJE_TWEEN_MODE_ACCELERATE_FACTOR) &&
1140
(anim_type <= EDJE_TWEEN_MODE_SINUSOIDAL_FACTOR))
1144
GETSTR(tmp, params[7]);
1145
if ((tmp) && (!strcmp(tmp, "CURRENT")))
1146
anim_type |= EDJE_TWEEN_MODE_OPT_FROM_CURRENT;
1148
else if (HASNPARAMS(5))
1150
ERR("parse error. Need 6th parameter to set factor");
1153
GETFLOAT_T(v1, params[6]);
1155
else if ((anim_type >= EDJE_TWEEN_MODE_DIVISOR_INTERP) &&
1156
(anim_type <= EDJE_TWEEN_MODE_SPRING))
1160
GETSTR(tmp, params[8]);
1161
if ((tmp) && (!strcmp(tmp, "CURRENT")))
1162
anim_type |= EDJE_TWEEN_MODE_OPT_FROM_CURRENT;
1164
else if (HASNPARAMS(5))
1166
ERR("parse error.Need 6th and 7th parameters to set factor and counts");
1169
GETFLOAT_T(v1, params[6]);
1170
GETFLOAT_T(v2, params[7]);
1172
else if (anim_type == EDJE_TWEEN_MODE_CUBIC_BEZIER)
1176
GETSTR(tmp, params[8]);
1177
if ((tmp) && (!strcmp(tmp, "CURRENT")))
1178
anim_type |= EDJE_TWEEN_MODE_OPT_FROM_CURRENT;
1180
else if (HASNPARAMS(5))
1182
ERR("parse error.Need 6th, 7th, 9th and 10th parameters to set x1, y1, x2 and y2");
1187
GETFLOAT_T(v1, params[6]);
1188
GETFLOAT_T(v2, params[7]);
1189
GETFLOAT_T(v3, params[9]);
1190
GETFLOAT_T(v4, params[10]);
1194
GETFLOAT_T(v1, params[6]);
1195
GETFLOAT_T(v2, params[7]);
1196
GETFLOAT_T(v3, params[8]);
1197
GETFLOAT_T(v4, params[9]);
1200
rp = ed->table_parts[part_id % ed->table_parts_size];
1202
_edje_part_description_apply(ed, rp, NULL, 0.0, state, value);
1203
_edje_part_pos_set(ed, rp, anim_type, FROM_DOUBLE(tween), v1, v2,
1211
_edje_embryo_fn_get_state(Embryo_Program *ep, Embryo_Cell *params)
1219
ed = embryo_program_data_get(ep);
1220
part_id = params[1];
1221
if (part_id < 0) return 0;
1222
rp = ed->table_parts[part_id % ed->table_parts_size];
1223
if (rp->chosen_description)
1225
SETFLOAT(rp->chosen_description->state.value, params[4]);
1226
s = rp->chosen_description->state.name;
1229
if ((int)strlen(s) < params[3])
1231
SETSTR(s, params[2]);
1237
ss = alloca(strlen(s) + 1);
1239
ss[params[3] - 1] = 0;
1240
SETSTR(ss, params[2]);
1245
SETSTR("", params[2]);
1250
SETFLOAT(0.0, params[4]);
1251
SETSTR("", params[2]);
1258
_edje_embryo_fn_set_tween_state(Embryo_Program *ep, Embryo_Cell *params)
1261
char *state1 = NULL, *state2 = NULL;
1264
double tween = 0.0, value1 = 0.0, value2 = 0.0;
1268
ed = embryo_program_data_get(ep);
1269
GETSTR(state1, params[3]);
1270
GETSTR(state2, params[5]);
1271
if ((!state1) || (!state2)) return 0;
1272
part_id = params[1];
1273
if (part_id < 0) return 0;
1274
f = EMBRYO_CELL_TO_FLOAT(params[2]);
1276
f = EMBRYO_CELL_TO_FLOAT(params[4]);
1278
f = EMBRYO_CELL_TO_FLOAT(params[6]);
1280
rp = ed->table_parts[part_id % ed->table_parts_size];
1283
if (rp->program) _edje_program_end(ed, rp->program);
1284
_edje_part_description_apply(ed, rp, state1, value1, state2, value2);
1285
_edje_part_pos_set(ed, rp, EDJE_TWEEN_MODE_LINEAR, FROM_DOUBLE(tween),
1286
ZERO, ZERO, ZERO, ZERO);
1293
_edje_embryo_fn_set_tween_state_anim(Embryo_Program *ep, Embryo_Cell *params)
1297
char *state1 = NULL, *state2 = NULL;
1301
double tween = 0.0, value1 = 0.0, value2 = 0.0, v1 = 0.0, v2 = 0.0, v3 = 0.0, v4 = 0.0;
1304
if (HASNPARAMS(6)) return -1;
1305
ed = embryo_program_data_get(ep);
1306
GETSTR(state1, params[2]);
1307
GETSTR(state2, params[4]);
1308
if ((!state1) || (!state2)) return 0;
1309
part_id = params[1];
1310
anim_type = params[6];
1311
if (part_id < 0) return 0;
1312
f = EMBRYO_CELL_TO_FLOAT(params[3]);
1314
f = EMBRYO_CELL_TO_FLOAT(params[5]);
1316
f = EMBRYO_CELL_TO_FLOAT(params[7]);
1318
if ((anim_type >= EDJE_TWEEN_MODE_LINEAR) &&
1319
(anim_type <= EDJE_TWEEN_MODE_DECELERATE))
1323
GETSTR(tmp, params[8]);
1325
if (!strcmp(tmp, "CURRENT"))
1326
anim_type |= EDJE_TWEEN_MODE_OPT_FROM_CURRENT;
1329
else if ((anim_type >= EDJE_TWEEN_MODE_ACCELERATE_FACTOR) &&
1330
(anim_type <= EDJE_TWEEN_MODE_SINUSOIDAL_FACTOR))
1334
GETSTR(tmp, params[9]);
1336
if (!strcmp(tmp, "CURRENT"))
1337
anim_type |= EDJE_TWEEN_MODE_OPT_FROM_CURRENT;
1339
else if (HASNPARAMS(7))
1341
ERR("parse error. Need 8th parameter to set factor");
1344
GETFLOAT_T(v1, params[8]);
1346
else if ((anim_type >= EDJE_TWEEN_MODE_DIVISOR_INTERP) &&
1347
(anim_type <= EDJE_TWEEN_MODE_SPRING))
1351
GETSTR(tmp, params[10]);
1353
if (!strcmp(tmp, "CURRENT"))
1354
anim_type |= EDJE_TWEEN_MODE_OPT_FROM_CURRENT;
1356
else if (HASNPARAMS(7))
1358
ERR("parse error.Need 8th and 9th parameters to set factor and counts");
1361
GETFLOAT_T(v1, params[8]);
1362
GETFLOAT_T(v2, params[9]);
1364
else if (anim_type == EDJE_TWEEN_MODE_CUBIC_BEZIER)
1368
GETSTR(tmp, params[10]);
1370
if (!strcmp(tmp, "CURRENT"))
1371
anim_type |= EDJE_TWEEN_MODE_OPT_FROM_CURRENT;
1373
else if (HASNPARAMS(7))
1375
ERR("parse error.Need 8th, 9th, 10th and 11th parameters to set x1, y1, x2 and y2");
1380
GETFLOAT_T(v1, params[8]);
1381
GETFLOAT_T(v2, params[9]);
1382
GETFLOAT_T(v3, params[11]);
1383
GETFLOAT_T(v4, params[12]);
1387
GETFLOAT_T(v1, params[8]);
1388
GETFLOAT_T(v2, params[9]);
1389
GETFLOAT_T(v3, params[10]);
1390
GETFLOAT_T(v4, params[11]);
1393
rp = ed->table_parts[part_id % ed->table_parts_size];
1396
if (rp->program) _edje_program_end(ed, rp->program);
1397
_edje_part_description_apply(ed, rp, state1, value1, state2, value2);
1398
_edje_part_pos_set(ed, rp, anim_type, FROM_DOUBLE(tween),
1406
_edje_embryo_fn_run_program(Embryo_Program *ep, Embryo_Cell *params)
1413
ed = embryo_program_data_get(ep);
1414
program_id = params[1];
1415
if (program_id < 0) return 0;
1416
pr = ed->collection->patterns.table_programs[program_id % ed->collection->patterns.table_programs_size];
1419
_edje_program_run(ed, pr, 0, "", "", NULL);
1426
_edje_embryo_fn_get_drag_dir(Embryo_Program *ep, Embryo_Cell *params)
1433
ed = embryo_program_data_get(ep);
1434
part_id = params[1];
1435
if (part_id < 0) return 0;
1436
rp = ed->table_parts[part_id % ed->table_parts_size];
1437
return edje_object_part_drag_dir_get(ed->obj, rp->part->name);
1442
_edje_embryo_fn_get_drag(Embryo_Program *ep, Embryo_Cell *params)
1447
double dx = 0.0, dy = 0.0;
1450
ed = embryo_program_data_get(ep);
1451
part_id = params[1];
1452
if (part_id < 0) return 0;
1453
rp = ed->table_parts[part_id % ed->table_parts_size];
1454
edje_object_part_drag_value_get(ed->obj, rp->part->name, &dx, &dy);
1455
SETFLOAT(dx, params[2]);
1456
SETFLOAT(dy, params[3]);
1463
_edje_embryo_fn_set_drag(Embryo_Program *ep, Embryo_Cell *params)
1470
ed = embryo_program_data_get(ep);
1471
part_id = params[1];
1472
if (part_id < 0) return 0;
1473
rp = ed->table_parts[part_id % ed->table_parts_size];
1474
edje_object_part_drag_value_set(ed->obj, rp->part->name,
1475
(double)EMBRYO_CELL_TO_FLOAT(params[2]),
1476
(double)EMBRYO_CELL_TO_FLOAT(params[3]));
1482
_edje_embryo_fn_get_drag_size(Embryo_Program *ep, Embryo_Cell *params)
1487
double dx = 0.0, dy = 0.0;
1490
ed = embryo_program_data_get(ep);
1491
part_id = params[1];
1492
if (part_id < 0) return 0;
1493
rp = ed->table_parts[part_id % ed->table_parts_size];
1494
edje_object_part_drag_size_get(ed->obj, rp->part->name, &dx, &dy);
1495
SETFLOAT(dx, params[2]);
1496
SETFLOAT(dy, params[3]);
1503
_edje_embryo_fn_set_drag_size(Embryo_Program *ep, Embryo_Cell *params)
1510
ed = embryo_program_data_get(ep);
1511
part_id = params[1];
1512
if (part_id < 0) return 0;
1513
rp = ed->table_parts[part_id % ed->table_parts_size];
1514
edje_object_part_drag_size_set(ed->obj, rp->part->name,
1515
(double)EMBRYO_CELL_TO_FLOAT(params[2]),
1516
(double)EMBRYO_CELL_TO_FLOAT(params[3]));
1522
_edje_embryo_fn_set_text(Embryo_Program *ep, Embryo_Cell *params)
1530
ed = embryo_program_data_get(ep);
1531
part_id = params[1];
1532
if (part_id < 0) return 0;
1533
rp = ed->table_parts[part_id % ed->table_parts_size];
1534
GETSTR(s, params[2]);
1537
edje_object_part_text_set(ed->obj, rp->part->name, s);
1544
_edje_embryo_fn_get_text(Embryo_Program *ep, Embryo_Cell *params)
1552
ed = embryo_program_data_get(ep);
1553
part_id = params[1];
1554
if (part_id < 0) return 0;
1555
rp = ed->table_parts[part_id % ed->table_parts_size];
1556
s = (char *)edje_object_part_text_get(ed->obj, rp->part->name);
1559
if ((int)strlen(s) < params[3])
1561
SETSTR(s, params[2]);
1567
ss = alloca(strlen(s) + 1);
1569
ss[params[3] - 1] = 0;
1570
SETSTR(ss, params[2]);
1575
SETSTR("", params[2]);
1582
_edje_embryo_fn_get_min_size(Embryo_Program *ep, Embryo_Cell *params)
1585
Evas_Coord w = 0, h = 0;
1588
ed = embryo_program_data_get(ep);
1589
edje_object_size_min_get(ed->obj, &w, &h);
1590
SETINT(w, params[1]);
1591
SETINT(h, params[2]);
1597
_edje_embryo_fn_get_max_size(Embryo_Program *ep, Embryo_Cell *params)
1600
Evas_Coord w = 0, h = 0;
1603
ed = embryo_program_data_get(ep);
1604
edje_object_size_max_get(ed->obj, &w, &h);
1605
SETINT(w, params[1]);
1606
SETINT(h, params[2]);
1612
_edje_embryo_fn_get_color_class(Embryo_Program *ep, Embryo_Cell *params)
1615
Edje_Color_Class *c_class;
1619
ed = embryo_program_data_get(ep);
1620
GETSTR(class, params[1]);
1621
if (!class) return 0;
1622
c_class = _edje_color_class_recursive_find(ed, class);
1623
if (!c_class) return 0;
1624
SETINT(c_class->r, params[2]);
1625
SETINT(c_class->g, params[3]);
1626
SETINT(c_class->b, params[4]);
1627
SETINT(c_class->a, params[5]);
1633
_edje_embryo_fn_set_color_class(Embryo_Program *ep, Embryo_Cell *params)
1639
ed = embryo_program_data_get(ep);
1640
GETSTR(class, params[1]);
1641
if (!class) return 0;
1642
edje_object_color_class_set(ed->obj, class, params[2], params[3], params[4],
1643
params[5], params[2], params[3], params[4],
1644
params[5], params[2], params[3], params[4],
1651
_edje_embryo_fn_set_text_class(Embryo_Program *ep, Embryo_Cell *params)
1655
Evas_Font_Size fsize;
1658
ed = embryo_program_data_get(ep);
1659
GETSTR(class, params[1]);
1660
GETSTR(font, params[2]);
1661
if ( !class || !font ) return 0;
1662
fsize = (Evas_Font_Size)EMBRYO_CELL_TO_FLOAT(params[3]);
1663
edje_object_text_class_set(ed->obj, class, font, fsize);
1669
_edje_embryo_fn_get_text_class(Embryo_Program *ep, Embryo_Cell *params)
1673
Edje_Text_Class *t_class;
1676
ed = embryo_program_data_get(ep);
1677
GETSTR(class, params[1]);
1678
if (!class) return 0;
1679
t_class = _edje_text_class_find(ed, class);
1680
if (!t_class) return 0;
1681
SETSTR((char *)t_class->font, params[2]);
1682
SETFLOAT(t_class->size, params[3]);
1688
_edje_embryo_fn_get_drag_step(Embryo_Program *ep, Embryo_Cell *params)
1693
double dx = 0.0, dy = 0.0;
1696
ed = embryo_program_data_get(ep);
1697
part_id = params[1];
1698
if (part_id < 0) return 0;
1699
rp = ed->table_parts[part_id % ed->table_parts_size];
1700
edje_object_part_drag_step_get(ed->obj, rp->part->name, &dx, &dy);
1701
SETFLOAT(dx, params[2]);
1702
SETFLOAT(dy, params[3]);
1709
_edje_embryo_fn_set_drag_step(Embryo_Program *ep, Embryo_Cell *params)
1716
ed = embryo_program_data_get(ep);
1717
part_id = params[1];
1718
if (part_id < 0) return 0;
1719
rp = ed->table_parts[part_id % ed->table_parts_size];
1720
edje_object_part_drag_step_set(ed->obj, rp->part->name,
1721
(double)EMBRYO_CELL_TO_FLOAT(params[2]),
1722
(double)EMBRYO_CELL_TO_FLOAT(params[3]));
1728
_edje_embryo_fn_get_drag_page(Embryo_Program *ep, Embryo_Cell *params)
1733
double dx = 0.0, dy = 0.0;
1736
ed = embryo_program_data_get(ep);
1737
part_id = params[1];
1738
if (part_id < 0) return 0;
1739
rp = ed->table_parts[part_id % ed->table_parts_size];
1740
edje_object_part_drag_page_get(ed->obj, rp->part->name, &dx, &dy);
1741
SETFLOAT(dx, params[2]);
1742
SETFLOAT(dy, params[3]);
1749
_edje_embryo_fn_get_geometry(Embryo_Program *ep, Embryo_Cell *params)
1754
Evas_Coord x = 0, y = 0, w = 0, h = 0;
1757
ed = embryo_program_data_get(ep);
1758
part_id = params[1];
1759
if (part_id < 0) return 0;
1760
rp = ed->table_parts[part_id % ed->table_parts_size];
1761
edje_object_part_geometry_get(ed->obj, rp->part->name, &x, &y, &w, &h);
1762
SETINT(x, params[2]);
1763
SETINT(y, params[3]);
1764
SETINT(w, params[4]);
1765
SETINT(h, params[5]);
1772
_edje_embryo_fn_set_drag_page(Embryo_Program *ep, Embryo_Cell *params)
1779
ed = embryo_program_data_get(ep);
1780
part_id = params[1];
1781
if (part_id < 0) return 0;
1782
rp = ed->table_parts[part_id % ed->table_parts_size];
1783
edje_object_part_drag_page_set(ed->obj, rp->part->name,
1784
(double)EMBRYO_CELL_TO_FLOAT(params[2]),
1785
(double)EMBRYO_CELL_TO_FLOAT(params[3]));
1791
_edje_embryo_fn_send_message(Embryo_Program *ep, Embryo_Cell *params)
1794
Edje_Message_Type type;
1798
if (params[0] < (int)(sizeof(Embryo_Cell) * (2))) return 0;
1799
ed = embryo_program_data_get(ep);
1804
case EDJE_MESSAGE_NONE:
1805
_edje_util_message_send(ed, EDJE_QUEUE_APP, type, id, NULL);
1808
case EDJE_MESSAGE_SIGNAL:
1811
case EDJE_MESSAGE_STRING:
1815
cptr = embryo_data_address_get(ep, params[3]);
1818
Edje_Message_String *emsg;
1822
l = embryo_data_string_length_get(ep, cptr);
1825
embryo_data_string_get(ep, cptr, s);
1826
emsg = alloca(sizeof(Edje_Message_String));
1828
_edje_util_message_send(ed, EDJE_QUEUE_APP, type, id, emsg);
1833
case EDJE_MESSAGE_INT:
1835
Edje_Message_Int *emsg;
1837
emsg = alloca(sizeof(Edje_Message_Int));
1838
ptr = embryo_data_address_get(ep, params[3]);
1839
if (ptr) emsg->val = (int)*ptr;
1841
_edje_util_message_send(ed, EDJE_QUEUE_APP, type, id, emsg);
1845
case EDJE_MESSAGE_FLOAT:
1847
Edje_Message_Float *emsg;
1850
emsg = alloca(sizeof(Edje_Message_Float));
1851
ptr = embryo_data_address_get(ep, params[3]);
1854
f = EMBRYO_CELL_TO_FLOAT(*ptr);
1855
emsg->val = (double)f;
1859
_edje_util_message_send(ed, EDJE_QUEUE_APP, type, id, emsg);
1863
case EDJE_MESSAGE_STRING_SET:
1865
Edje_Message_String_Set *emsg;
1867
n = (params[0] / sizeof(Embryo_Cell)) + 1;
1868
emsg = alloca(sizeof(Edje_Message_String_Set) + ((n - 3 - 1) * sizeof(char *)));
1869
emsg->count = n - 3;
1870
for (i = 3; i < n; i++)
1874
cptr = embryo_data_address_get(ep, params[i]);
1880
l = embryo_data_string_length_get(ep, cptr);
1883
embryo_data_string_get(ep, cptr, s);
1884
emsg->str[i - 3] = s;
1887
_edje_util_message_send(ed, EDJE_QUEUE_APP, type, id, emsg);
1891
case EDJE_MESSAGE_INT_SET:
1893
Edje_Message_Int_Set *emsg;
1895
n = (params[0] / sizeof(Embryo_Cell)) + 1;
1896
emsg = alloca(sizeof(Edje_Message_Int_Set) + ((n - 3 - 1) * sizeof(int)));
1897
emsg->count = n - 3;
1898
for (i = 3; i < n; i++)
1900
ptr = embryo_data_address_get(ep, params[i]);
1901
if (ptr) emsg->val[i - 3] = (int)*ptr;
1902
else emsg->val[i - 3] = 0;
1904
_edje_util_message_send(ed, EDJE_QUEUE_APP, type, id, emsg);
1908
case EDJE_MESSAGE_FLOAT_SET:
1910
Edje_Message_Float_Set *emsg;
1912
n = (params[0] / sizeof(Embryo_Cell)) + 1;
1913
emsg = alloca(sizeof(Edje_Message_Float_Set) + ((n - 3 - 1) * sizeof(double)));
1914
emsg->count = n - 3;
1915
for (i = 3; i < n; i++)
1919
ptr = embryo_data_address_get(ep, params[i]);
1922
f = EMBRYO_CELL_TO_FLOAT(*ptr);
1923
emsg->val[i - 3] = (double)f;
1926
emsg->val[i - 3] = 0.0;
1928
_edje_util_message_send(ed, EDJE_QUEUE_APP, type, id, emsg);
1932
case EDJE_MESSAGE_STRING_INT:
1934
Edje_Message_String_Int *emsg;
1937
cptr = embryo_data_address_get(ep, params[3]);
1943
l = embryo_data_string_length_get(ep, cptr);
1946
embryo_data_string_get(ep, cptr, s);
1947
emsg = alloca(sizeof(Edje_Message_String_Int));
1949
ptr = embryo_data_address_get(ep, params[4]);
1950
if (ptr) emsg->val = (int)*ptr;
1952
_edje_util_message_send(ed, EDJE_QUEUE_APP, type, id, emsg);
1957
case EDJE_MESSAGE_STRING_FLOAT:
1959
Edje_Message_String_Float *emsg;
1962
cptr = embryo_data_address_get(ep, params[3]);
1969
l = embryo_data_string_length_get(ep, cptr);
1972
embryo_data_string_get(ep, cptr, s);
1973
emsg = alloca(sizeof(Edje_Message_String_Float));
1975
ptr = embryo_data_address_get(ep, params[4]);
1978
f = EMBRYO_CELL_TO_FLOAT(*ptr);
1979
emsg->val = (double)f;
1983
_edje_util_message_send(ed, EDJE_QUEUE_APP, type, id, emsg);
1988
case EDJE_MESSAGE_STRING_INT_SET:
1990
Edje_Message_String_Int_Set *emsg;
1993
cptr = embryo_data_address_get(ep, params[3]);
1999
l = embryo_data_string_length_get(ep, cptr);
2002
embryo_data_string_get(ep, cptr, s);
2003
n = (params[0] / sizeof(Embryo_Cell)) + 1;
2004
emsg = alloca(sizeof(Edje_Message_String_Int_Set) + ((n - 4 - 1) * sizeof(int)));
2006
emsg->count = n - 4;
2007
for (i = 4; i < n; i++)
2009
ptr = embryo_data_address_get(ep, params[i]);
2010
if (ptr) emsg->val[i - 4] = (int)*ptr;
2011
else emsg->val[i - 4] = 0;
2013
_edje_util_message_send(ed, EDJE_QUEUE_APP, type, id, emsg);
2018
case EDJE_MESSAGE_STRING_FLOAT_SET:
2020
Edje_Message_String_Float_Set *emsg;
2023
cptr = embryo_data_address_get(ep, params[3]);
2029
l = embryo_data_string_length_get(ep, cptr);
2032
embryo_data_string_get(ep, cptr, s);
2033
n = (params[0] / sizeof(Embryo_Cell)) + 1;
2034
emsg = alloca(sizeof(Edje_Message_String_Float_Set) + ((n - 4 - 1) * sizeof(double)));
2036
emsg->count = n - 4;
2037
for (i = 4; i < n; i++)
2041
ptr = embryo_data_address_get(ep, params[i]);
2044
f = EMBRYO_CELL_TO_FLOAT(*ptr);
2045
emsg->val[i - 4] = (double)f;
2048
emsg->val[i - 4] = 0.0;
2050
_edje_util_message_send(ed, EDJE_QUEUE_APP, type, id, emsg);
2063
_edje_embryo_fn_custom_state(Embryo_Program *ep, Embryo_Cell *params)
2065
Edje *ed = embryo_program_data_get(ep);
2067
Edje_Part_Description_Common *parent, *d = NULL;
2076
if (!(rp = ed->table_parts[params[1] % ed->table_parts_size]))
2083
GETSTR(name, params[2]);
2087
val = EMBRYO_CELL_TO_FLOAT(params[3]);
2089
if (!(parent = _edje_part_description_find(ed, rp, name, val, EINA_TRUE)))
2092
rp->custom = eina_mempool_malloc(_edje_real_part_state_mp, sizeof (Edje_Real_Part_State));
2093
if (!rp->custom) return 0;
2095
memset(rp->custom, 0, sizeof (Edje_Real_Part_State));
2098
switch (rp->part->type)
2100
#define ALLOC_DESC(Short, Type, To) \
2101
case EDJE_PART_TYPE_##Short: To = calloc(1, sizeof (Edje_Part_Description_##Type)); break;
2103
#define ALLOC_COPY_DESC(Short, Type, To, Spec) \
2104
case EDJE_PART_TYPE_##Short: \
2106
Edje_Part_Description_##Type * tmp; \
2107
Edje_Part_Description_##Type * new; \
2108
tmp = (Edje_Part_Description_##Type *)parent; \
2109
new = calloc(1, sizeof (Edje_Part_Description_##Type)); \
2111
new->Spec = tmp->Spec; \
2112
To = &new->common; \
2116
ALLOC_DESC(RECTANGLE, Common, d);
2117
ALLOC_DESC(SPACER, Common, d);
2118
ALLOC_DESC(SWALLOW, Common, d);
2119
ALLOC_DESC(GROUP, Common, d);
2121
ALLOC_COPY_DESC(IMAGE, Image, d, image);
2122
ALLOC_COPY_DESC(PROXY, Proxy, d, proxy);
2123
ALLOC_COPY_DESC(TEXT, Text, d, text);
2124
ALLOC_COPY_DESC(TEXTBLOCK, Text, d, text);
2125
ALLOC_COPY_DESC(BOX, Box, d, box);
2126
ALLOC_COPY_DESC(TABLE, Table, d, table);
2127
ALLOC_COPY_DESC(EXTERNAL, External, d, external_params);
2128
ALLOC_COPY_DESC(VECTOR, Vector, d, vg);
2133
eina_mempool_free(_edje_real_part_state_mp, rp->custom);
2140
d->state.name = (char *)eina_stringshare_add("custom");
2141
d->state.value = 0.0;
2146
if (rp->part->type == EDJE_PART_TYPE_IMAGE)
2148
Edje_Part_Description_Image *img_desc;
2149
Edje_Part_Description_Image *parent_img_desc;
2151
img_desc = (Edje_Part_Description_Image *)d;
2152
parent_img_desc = (Edje_Part_Description_Image *)parent;
2154
img_desc->image.tweens_count = parent_img_desc->image.tweens_count;
2155
img_desc->image.tweens = calloc(img_desc->image.tweens_count,
2156
sizeof(Edje_Part_Image_Id *));
2157
if (img_desc->image.tweens)
2161
for (i = 0; i < parent_img_desc->image.tweens_count; ++i)
2163
Edje_Part_Image_Id *iid_new;
2165
iid_new = calloc(1, sizeof(Edje_Part_Image_Id));
2166
if (!iid_new) continue;
2168
*iid_new = *parent_img_desc->image.tweens[i];
2170
img_desc->image.tweens[i] = iid_new;
2175
#define DUP(x) x ? (char *)eina_stringshare_add(x) : NULL
2176
d->color_class = DUP(d->color_class);
2178
if (rp->part->type == EDJE_PART_TYPE_TEXT
2179
|| rp->part->type == EDJE_PART_TYPE_TEXTBLOCK)
2181
Edje_Part_Description_Text *text_desc;
2183
text_desc = (Edje_Part_Description_Text *)d;
2185
text_desc->text.text_class = DUP(text_desc->text.text_class);
2186
text_desc->text.text.str = DUP(edje_string_get(&text_desc->text.text));
2187
text_desc->text.text.id = 0;
2188
text_desc->text.text.translated = NULL;
2189
text_desc->text.domain = DUP(text_desc->text.domain);
2190
text_desc->text.font.str = DUP(edje_string_get(&text_desc->text.font));
2191
text_desc->text.font.id = 0;
2192
text_desc->text.style.str = DUP(edje_string_get(&text_desc->text.style));
2193
text_desc->text.style.id = 0;
2197
rp->custom->description = d;
2204
_edje_embryo_fn_set_state_val(Embryo_Program *ep, Embryo_Cell *params)
2206
Edje *ed = embryo_program_data_get(ep);
2211
if (params[0] < (int)(sizeof(Embryo_Cell) * 3))
2217
if (!(rp = ed->table_parts[params[1] % ed->table_parts_size]))
2226
case EDJE_STATE_PARAM_ALIGNMENT:
2229
GETFLOAT_T(rp->custom->description->align.x, params[3]);
2230
GETFLOAT_T(rp->custom->description->align.y, params[4]);
2234
case EDJE_STATE_PARAM_MIN:
2237
GETINT(rp->custom->description->min.w, params[3]);
2238
GETINT(rp->custom->description->min.h, params[4]);
2242
case EDJE_STATE_PARAM_MAX:
2245
GETINT(rp->custom->description->max.w, params[3]);
2246
GETINT(rp->custom->description->max.h, params[4]);
2250
case EDJE_STATE_PARAM_STEP:
2253
GETINT(rp->custom->description->step.x, params[3]);
2254
GETINT(rp->custom->description->step.y, params[4]);
2258
case EDJE_STATE_PARAM_ASPECT:
2261
GETFLOAT_T(rp->custom->description->aspect.min, params[3]);
2262
GETFLOAT_T(rp->custom->description->aspect.max, params[4]);
2266
case EDJE_STATE_PARAM_ASPECT_PREF:
2269
GETINT(rp->custom->description->aspect.prefer, params[3]);
2273
case EDJE_STATE_PARAM_COLOR:
2276
GETINT(rp->custom->description->color.r, params[3]);
2277
GETINT(rp->custom->description->color.g, params[4]);
2278
GETINT(rp->custom->description->color.b, params[5]);
2279
GETINT(rp->custom->description->color.a, params[6]);
2283
case EDJE_STATE_PARAM_COLOR2:
2286
GETINT(rp->custom->description->color2.r, params[3]);
2287
GETINT(rp->custom->description->color2.g, params[4]);
2288
GETINT(rp->custom->description->color2.b, params[5]);
2289
GETINT(rp->custom->description->color2.a, params[6]);
2293
case EDJE_STATE_PARAM_COLOR3:
2295
Edje_Part_Description_Text *text;
2297
if ((rp->part->type != EDJE_PART_TYPE_TEXT) &&
2298
(rp->part->type != EDJE_PART_TYPE_TEXTBLOCK))
2303
text = (Edje_Part_Description_Text *)rp->custom->description;
2305
GETINT(text->text.color3.r, params[3]);
2306
GETINT(text->text.color3.g, params[4]);
2307
GETINT(text->text.color3.b, params[5]);
2308
GETINT(text->text.color3.a, params[6]);
2312
case EDJE_STATE_PARAM_COLOR_CLASS:
2315
GETSTR(s, params[3]);
2316
GETSTREVAS(s, rp->custom->description->color_class);
2320
case EDJE_STATE_PARAM_REL1:
2323
GETFLOAT_T(rp->custom->description->rel1.relative_x, params[3]);
2324
GETFLOAT_T(rp->custom->description->rel1.relative_y, params[4]);
2328
case EDJE_STATE_PARAM_REL1_TO:
2331
GETINT(rp->custom->description->rel1.id_x, params[3]);
2332
GETINT(rp->custom->description->rel1.id_y, params[4]);
2336
case EDJE_STATE_PARAM_REL1_OFFSET:
2339
GETINT(rp->custom->description->rel1.offset_x, params[3]);
2340
GETINT(rp->custom->description->rel1.offset_y, params[4]);
2344
case EDJE_STATE_PARAM_REL2:
2347
GETFLOAT_T(rp->custom->description->rel2.relative_x, params[3]);
2348
GETFLOAT_T(rp->custom->description->rel2.relative_y, params[4]);
2352
case EDJE_STATE_PARAM_REL2_TO:
2355
GETINT(rp->custom->description->rel2.id_x, params[3]);
2356
GETINT(rp->custom->description->rel2.id_y, params[4]);
2360
case EDJE_STATE_PARAM_REL2_OFFSET:
2363
GETINT(rp->custom->description->rel2.offset_x, params[3]);
2364
GETINT(rp->custom->description->rel2.offset_y, params[4]);
2368
case EDJE_STATE_PARAM_IMAGE:
2370
Edje_Part_Description_Image *img;
2372
if ((rp->part->type != EDJE_PART_TYPE_IMAGE)) return 0;
2375
img = (Edje_Part_Description_Image *)rp->custom->description;
2376
GETINT(img->image.id, params[3]);
2381
case EDJE_STATE_PARAM_BORDER:
2383
Edje_Part_Description_Image *img;
2385
if ((rp->part->type != EDJE_PART_TYPE_IMAGE)) return 0;
2388
img = (Edje_Part_Description_Image *)rp->custom->description;
2390
GETINT(img->image.border.l, params[3]);
2391
GETINT(img->image.border.r, params[4]);
2392
GETINT(img->image.border.t, params[5]);
2393
GETINT(img->image.border.b, params[6]);
2398
case EDJE_STATE_PARAM_FILL_SMOOTH:
2400
Edje_Part_Description_Image *img;
2401
Edje_Part_Description_Proxy *proxy;
2403
if ((rp->part->type != EDJE_PART_TYPE_IMAGE) && (rp->part->type != EDJE_PART_TYPE_PROXY)) return 0;
2406
if (rp->part->type == EDJE_PART_TYPE_IMAGE)
2408
img = (Edje_Part_Description_Image *)rp->custom->description;
2409
GETINT(img->image.fill.smooth, params[3]);
2413
proxy = (Edje_Part_Description_Proxy *)rp->custom->description;
2414
GETINT(proxy->proxy.fill.smooth, params[3]);
2420
case EDJE_STATE_PARAM_FILL_POS:
2422
Edje_Part_Description_Image *img;
2423
Edje_Part_Description_Proxy *proxy;
2425
if ((rp->part->type != EDJE_PART_TYPE_IMAGE) && (rp->part->type != EDJE_PART_TYPE_PROXY)) return 0;
2428
if (rp->part->type == EDJE_PART_TYPE_IMAGE)
2430
img = (Edje_Part_Description_Image *)rp->custom->description;
2432
GETFLOAT_T(img->image.fill.pos_rel_x, params[3]);
2433
GETFLOAT_T(img->image.fill.pos_rel_y, params[4]);
2434
GETINT(img->image.fill.pos_abs_x, params[5]);
2435
GETINT(img->image.fill.pos_abs_y, params[6]);
2439
proxy = (Edje_Part_Description_Proxy *)rp->custom->description;
2441
GETFLOAT_T(proxy->proxy.fill.pos_rel_x, params[3]);
2442
GETFLOAT_T(proxy->proxy.fill.pos_rel_y, params[4]);
2443
GETINT(proxy->proxy.fill.pos_abs_x, params[5]);
2444
GETINT(proxy->proxy.fill.pos_abs_y, params[6]);
2450
case EDJE_STATE_PARAM_FILL_SIZE:
2452
Edje_Part_Description_Image *img;
2453
Edje_Part_Description_Proxy *proxy;
2455
if ((rp->part->type != EDJE_PART_TYPE_IMAGE) && (rp->part->type != EDJE_PART_TYPE_PROXY)) return 0;
2458
if (rp->part->type == EDJE_PART_TYPE_IMAGE)
2460
img = (Edje_Part_Description_Image *)rp->custom->description;
2462
GETFLOAT_T(img->image.fill.rel_x, params[3]);
2463
GETFLOAT_T(img->image.fill.rel_y, params[4]);
2464
GETINT(img->image.fill.abs_x, params[5]);
2465
GETINT(img->image.fill.abs_y, params[6]);
2469
proxy = (Edje_Part_Description_Proxy *)rp->custom->description;
2471
GETFLOAT_T(proxy->proxy.fill.rel_x, params[3]);
2472
GETFLOAT_T(proxy->proxy.fill.rel_y, params[4]);
2473
GETINT(proxy->proxy.fill.abs_x, params[5]);
2474
GETINT(proxy->proxy.fill.abs_y, params[6]);
2480
case EDJE_STATE_PARAM_TEXT:
2482
Edje_Part_Description_Text *text;
2484
if ((rp->part->type != EDJE_PART_TYPE_TEXT) &&
2485
(rp->part->type != EDJE_PART_TYPE_TEXTBLOCK))
2489
GETSTR(s, params[3]);
2491
text = (Edje_Part_Description_Text *)rp->custom->description;
2492
GETSTREVAS(s, text->text.text.str);
2497
case EDJE_STATE_PARAM_TEXT_CLASS:
2499
Edje_Part_Description_Text *text;
2501
if ((rp->part->type != EDJE_PART_TYPE_TEXT) &&
2502
(rp->part->type != EDJE_PART_TYPE_TEXTBLOCK))
2506
GETSTR(s, params[3]);
2508
text = (Edje_Part_Description_Text *)rp->custom->description;
2509
GETSTREVAS(s, text->text.text_class);
2514
case EDJE_STATE_PARAM_TEXT_FONT:
2516
Edje_Part_Description_Text *text;
2518
if ((rp->part->type != EDJE_PART_TYPE_TEXT)) return 0;
2521
GETSTR(s, params[3]);
2523
text = (Edje_Part_Description_Text *)rp->custom->description;
2524
GETSTREVAS(s, text->text.font.str);
2529
case EDJE_STATE_PARAM_TEXT_STYLE:
2531
Edje_Part_Description_Text *text;
2533
if ((rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) return 0;
2536
GETSTR(s, params[3]);
2538
text = (Edje_Part_Description_Text *)rp->custom->description;
2539
GETSTREVAS(s, text->text.style.str);
2544
case EDJE_STATE_PARAM_TEXT_SIZE:
2546
Edje_Part_Description_Text *text;
2548
if ((rp->part->type != EDJE_PART_TYPE_TEXT)) return 0;
2551
text = (Edje_Part_Description_Text *)rp->custom->description;
2552
GETINT(text->text.size, params[3]);
2557
case EDJE_STATE_PARAM_TEXT_FIT:
2559
Edje_Part_Description_Text *text;
2561
if ((rp->part->type != EDJE_PART_TYPE_TEXT)) return 0;
2564
text = (Edje_Part_Description_Text *)rp->custom->description;
2566
GETINT(text->text.fit_x, params[3]);
2567
GETINT(text->text.fit_y, params[4]);
2572
case EDJE_STATE_PARAM_TEXT_MIN:
2574
Edje_Part_Description_Text *text;
2576
if ((rp->part->type != EDJE_PART_TYPE_TEXT) &&
2577
(rp->part->type != EDJE_PART_TYPE_TEXTBLOCK))
2581
text = (Edje_Part_Description_Text *)rp->custom->description;
2583
GETINT(text->text.min_x, params[3]);
2584
GETINT(text->text.min_y, params[4]);
2589
case EDJE_STATE_PARAM_TEXT_MAX:
2591
Edje_Part_Description_Text *text;
2593
if ((rp->part->type != EDJE_PART_TYPE_TEXT) &&
2594
(rp->part->type != EDJE_PART_TYPE_TEXTBLOCK))
2598
text = (Edje_Part_Description_Text *)rp->custom->description;
2600
GETINT(text->text.max_x, params[3]);
2601
GETINT(text->text.max_y, params[4]);
2606
case EDJE_STATE_PARAM_TEXT_ALIGN:
2608
Edje_Part_Description_Text *text;
2610
if ((rp->part->type != EDJE_PART_TYPE_TEXT)) return 0;
2613
text = (Edje_Part_Description_Text *)rp->custom->description;
2615
GETFLOAT_T(text->text.align.x, params[3]);
2616
GETFLOAT_T(text->text.align.y, params[4]);
2621
case EDJE_STATE_PARAM_VISIBLE:
2624
GETINT(rp->custom->description->visible, params[3]);
2628
case EDJE_STATE_PARAM_MAP_ON:
2631
GETINT(rp->custom->description->map.on, params[3]);
2635
case EDJE_STATE_PARAM_MAP_PERSP:
2638
GETINT(rp->custom->description->map.id_persp, params[3]);
2642
case EDJE_STATE_PARAM_MAP_LIGHT:
2645
GETINT(rp->custom->description->map.id_light, params[3]);
2649
case EDJE_STATE_PARAM_MAP_ROT_CENTER:
2652
GETINT(rp->custom->description->map.rot.id_center, params[3]);
2656
case EDJE_STATE_PARAM_MAP_ROT_X:
2659
GETFLOAT_T(rp->custom->description->map.rot.x, params[3]);
2663
case EDJE_STATE_PARAM_MAP_ROT_Y:
2666
GETFLOAT_T(rp->custom->description->map.rot.y, params[3]);
2670
case EDJE_STATE_PARAM_MAP_ROT_Z:
2673
GETFLOAT_T(rp->custom->description->map.rot.z, params[3]);
2677
case EDJE_STATE_PARAM_MAP_BACK_CULL:
2680
GETINT(rp->custom->description->map.backcull, params[3]);
2684
case EDJE_STATE_PARAM_MAP_PERSP_ON:
2687
GETINT(rp->custom->description->map.persp_on, params[3]);
2691
case EDJE_STATE_PARAM_PERSP_ZPLANE:
2694
GETINT(rp->custom->description->persp.zplane, params[3]);
2698
case EDJE_STATE_PARAM_PERSP_FOCAL:
2701
GETINT(rp->custom->description->persp.focal, params[3]);
2705
case EDJE_STATE_PARAM_PROXY_SRC_CLIP:
2707
Edje_Part_Description_Proxy *proxy;
2709
if ((rp->part->type != EDJE_PART_TYPE_PROXY)) return 0;
2712
proxy = (Edje_Part_Description_Proxy *)rp->custom->description;
2713
GETINT(proxy->proxy.source_clip, params[3]);
2718
case EDJE_STATE_PARAM_PROXY_SRC_VISIBLE:
2720
Edje_Part_Description_Proxy *proxy;
2722
if ((rp->part->type != EDJE_PART_TYPE_PROXY)) return 0;
2725
proxy = (Edje_Part_Description_Proxy *)rp->custom->description;
2726
GETINT(proxy->proxy.source_visible, params[3]);
2731
case EDJE_STATE_PARAM_BOX_LAYOUT:
2733
Edje_Part_Description_Box *box;
2734
if ((rp->part->type != EDJE_PART_TYPE_BOX)) return 0;
2737
GETSTR(s, params[3]);
2740
box = (Edje_Part_Description_Box *)rp->custom->description;
2741
box->box.layout = s;
2746
case EDJE_STATE_PARAM_BOX_FALLBACK_LAYOUT:
2748
Edje_Part_Description_Box *box;
2749
if ((rp->part->type != EDJE_PART_TYPE_BOX)) return 0;
2752
GETSTR(s, params[3]);
2755
box = (Edje_Part_Description_Box *)rp->custom->description;
2756
box->box.alt_layout = s;
2761
case EDJE_STATE_PARAM_BOX_ALIGN:
2763
Edje_Part_Description_Box *box;
2764
if ((rp->part->type != EDJE_PART_TYPE_BOX)) return 0;
2767
box = (Edje_Part_Description_Box *)rp->custom->description;
2768
GETFLOAT_T(box->box.align.x, params[3]);
2769
GETFLOAT_T(box->box.align.y, params[4]);
2774
case EDJE_STATE_PARAM_BOX_PADDING:
2776
Edje_Part_Description_Box *box;
2777
if ((rp->part->type != EDJE_PART_TYPE_BOX)) return 0;
2780
box = (Edje_Part_Description_Box *)rp->custom->description;
2781
GETINT(box->box.padding.x, params[3]);
2782
GETINT(box->box.padding.y, params[4]);
2787
case EDJE_STATE_PARAM_BOX_MIN:
2789
Edje_Part_Description_Box *box;
2790
if ((rp->part->type != EDJE_PART_TYPE_BOX)) return 0;
2793
box = (Edje_Part_Description_Box *)rp->custom->description;
2794
GETINT(box->box.min.h, params[3]);
2795
GETINT(box->box.min.v, params[4]);
2801
case EDJE_STATE_PARAM_PHYSICS_MASS:
2804
GETFLOAT_T(rp->custom->description->physics.mass, params[3]);
2808
case EDJE_STATE_PARAM_PHYSICS_RESTITUTION:
2811
GETFLOAT_T(rp->custom->description->physics.restitution, params[3]);
2815
case EDJE_STATE_PARAM_PHYSICS_FRICTION:
2818
GETFLOAT_T(rp->custom->description->physics.friction, params[3]);
2822
case EDJE_STATE_PARAM_PHYSICS_DAMPING:
2825
GETFLOAT_T(rp->custom->description->physics.damping.linear, params[3]);
2826
GETFLOAT_T(rp->custom->description->physics.damping.angular,
2831
case EDJE_STATE_PARAM_PHYSICS_SLEEP:
2834
GETFLOAT_T(rp->custom->description->physics.sleep.linear, params[3]);
2835
GETFLOAT_T(rp->custom->description->physics.sleep.angular, params[4]);
2839
case EDJE_STATE_PARAM_PHYSICS_MATERIAL:
2842
GETINT(rp->custom->description->physics.material, params[3]);
2845
case EDJE_STATE_PARAM_PHYSICS_DENSITY:
2848
GETFLOAT_T(rp->custom->description->physics.density, params[3]);
2851
case EDJE_STATE_PARAM_PHYSICS_HARDNESS:
2854
GETFLOAT_T(rp->custom->description->physics.hardness, params[3]);
2857
case EDJE_STATE_PARAM_PHYSICS_IGNORE_PART_POS:
2860
GETINT(rp->custom->description->physics.ignore_part_pos, params[3]);
2863
case EDJE_STATE_PARAM_PHYSICS_LIGHT_ON:
2866
GETINT(rp->custom->description->physics.light_on, params[3]);
2869
case EDJE_STATE_PARAM_PHYSICS_MOV_FREEDOM_LIN:
2872
GETINT(rp->custom->description->physics.mov_freedom.lin.x, params[3]);
2873
GETINT(rp->custom->description->physics.mov_freedom.lin.y, params[4]);
2874
GETINT(rp->custom->description->physics.mov_freedom.lin.z, params[5]);
2877
case EDJE_STATE_PARAM_PHYSICS_MOV_FREEDOM_ANG:
2880
GETINT(rp->custom->description->physics.mov_freedom.ang.x, params[3]);
2881
GETINT(rp->custom->description->physics.mov_freedom.ang.y, params[4]);
2882
GETINT(rp->custom->description->physics.mov_freedom.ang.z, params[5]);
2885
case EDJE_STATE_PARAM_PHYSICS_BACK_CULL:
2888
GETINT(rp->custom->description->physics.backcull, params[3]);
2891
case EDJE_STATE_PARAM_PHYSICS_Z:
2894
GETINT(rp->custom->description->physics.z, params[3]);
2897
case EDJE_STATE_PARAM_PHYSICS_DEPTH:
2900
GETINT(rp->custom->description->physics.depth, params[3]);
2908
#ifdef EDJE_CALC_CACHE
2909
rp->invalidate = EINA_TRUE;
2911
ed->dirty = EINA_TRUE;
2917
_edje_embryo_fn_get_state_val(Embryo_Program *ep, Embryo_Cell *params)
2919
Edje *ed = embryo_program_data_get(ep);
2924
if (params[0] < (int)(sizeof(Embryo_Cell) * 3))
2930
if (!(rp = ed->table_parts[params[1] % ed->table_parts_size]))
2939
case EDJE_STATE_PARAM_ALIGNMENT:
2942
SETFLOAT_T(rp->custom->description->align.x, params[3]);
2943
SETFLOAT_T(rp->custom->description->align.y, params[4]);
2947
case EDJE_STATE_PARAM_MIN:
2950
SETINT(rp->custom->description->min.w, params[3]);
2951
SETINT(rp->custom->description->min.h, params[4]);
2955
case EDJE_STATE_PARAM_MAX:
2958
SETINT(rp->custom->description->max.w, params[3]);
2959
SETINT(rp->custom->description->max.h, params[4]);
2963
case EDJE_STATE_PARAM_STEP:
2966
SETINT(rp->custom->description->step.x, params[3]);
2967
SETINT(rp->custom->description->step.y, params[4]);
2971
case EDJE_STATE_PARAM_ASPECT:
2974
SETFLOAT_T(rp->custom->description->aspect.min, params[3]);
2975
SETFLOAT_T(rp->custom->description->aspect.max, params[4]);
2979
case EDJE_STATE_PARAM_ASPECT_PREF:
2982
SETINT(rp->custom->description->aspect.prefer, params[3]);
2986
case EDJE_STATE_PARAM_COLOR:
2989
SETINT(rp->custom->description->color.r, params[3]);
2990
SETINT(rp->custom->description->color.g, params[4]);
2991
SETINT(rp->custom->description->color.b, params[5]);
2992
SETINT(rp->custom->description->color.a, params[6]);
2996
case EDJE_STATE_PARAM_COLOR2:
2999
SETINT(rp->custom->description->color2.r, params[3]);
3000
SETINT(rp->custom->description->color2.g, params[4]);
3001
SETINT(rp->custom->description->color2.b, params[5]);
3002
SETINT(rp->custom->description->color2.a, params[6]);
3006
case EDJE_STATE_PARAM_COLOR3:
3008
Edje_Part_Description_Text *text;
3010
if (rp->part->type == EDJE_PART_TYPE_TEXT
3011
|| rp->part->type == EDJE_PART_TYPE_TEXTBLOCK)
3016
text = (Edje_Part_Description_Text *)rp->custom->description;
3018
SETINT(text->text.color3.r, params[3]);
3019
SETINT(text->text.color3.g, params[4]);
3020
SETINT(text->text.color3.b, params[5]);
3021
SETINT(text->text.color3.a, params[6]);
3026
case EDJE_STATE_PARAM_COLOR_CLASS:
3029
s = rp->custom->description->color_class;
3034
case EDJE_STATE_PARAM_REL1:
3037
SETFLOAT_T(rp->custom->description->rel1.relative_x, params[3]);
3038
SETFLOAT_T(rp->custom->description->rel1.relative_y, params[4]);
3042
case EDJE_STATE_PARAM_REL1_TO:
3045
SETINT(rp->custom->description->rel1.id_x, params[3]);
3046
SETINT(rp->custom->description->rel1.id_y, params[4]);
3050
case EDJE_STATE_PARAM_REL1_OFFSET:
3053
SETINT(rp->custom->description->rel1.offset_x, params[3]);
3054
SETINT(rp->custom->description->rel1.offset_y, params[4]);
3058
case EDJE_STATE_PARAM_REL2:
3061
SETFLOAT_T(rp->custom->description->rel2.relative_x, params[3]);
3062
SETFLOAT_T(rp->custom->description->rel2.relative_y, params[4]);
3066
case EDJE_STATE_PARAM_REL2_TO:
3069
SETINT(rp->custom->description->rel2.id_x, params[3]);
3070
SETINT(rp->custom->description->rel2.id_y, params[4]);
3074
case EDJE_STATE_PARAM_REL2_OFFSET:
3077
SETINT(rp->custom->description->rel2.offset_x, params[3]);
3078
SETINT(rp->custom->description->rel2.offset_y, params[4]);
3082
case EDJE_STATE_PARAM_IMAGE:
3084
Edje_Part_Description_Image *img;
3086
if ((rp->part->type != EDJE_PART_TYPE_IMAGE)) return 0;
3089
img = (Edje_Part_Description_Image *)rp->custom->description;
3091
SETINT(img->image.id, params[3]);
3096
case EDJE_STATE_PARAM_BORDER:
3098
Edje_Part_Description_Image *img;
3100
if ((rp->part->type != EDJE_PART_TYPE_IMAGE)) return 0;
3103
img = (Edje_Part_Description_Image *)rp->custom->description;
3105
SETINT(img->image.border.l, params[3]);
3106
SETINT(img->image.border.r, params[4]);
3107
SETINT(img->image.border.t, params[5]);
3108
SETINT(img->image.border.b, params[6]);
3113
case EDJE_STATE_PARAM_FILL_SMOOTH:
3115
Edje_Part_Description_Image *img;
3116
Edje_Part_Description_Proxy *proxy;
3118
if ((rp->part->type != EDJE_PART_TYPE_IMAGE) && (rp->part->type != EDJE_PART_TYPE_PROXY)) return 0;
3121
if (rp->part->type == EDJE_PART_TYPE_IMAGE)
3123
img = (Edje_Part_Description_Image *)rp->custom->description;
3125
SETINT(img->image.fill.smooth, params[3]);
3129
proxy = (Edje_Part_Description_Proxy *)rp->custom->description;
3131
SETINT(proxy->proxy.fill.smooth, params[3]);
3137
case EDJE_STATE_PARAM_FILL_POS:
3139
Edje_Part_Description_Image *img;
3140
Edje_Part_Description_Proxy *proxy;
3142
if ((rp->part->type != EDJE_PART_TYPE_IMAGE) && (rp->part->type != EDJE_PART_TYPE_PROXY)) return 0;
3145
if (rp->part->type == EDJE_PART_TYPE_IMAGE)
3147
img = (Edje_Part_Description_Image *)rp->custom->description;
3149
SETFLOAT_T(img->image.fill.pos_rel_x, params[3]);
3150
SETFLOAT_T(img->image.fill.pos_rel_y, params[4]);
3151
SETINT(img->image.fill.pos_abs_x, params[5]);
3152
SETINT(img->image.fill.pos_abs_y, params[6]);
3156
proxy = (Edje_Part_Description_Proxy *)rp->custom->description;
3158
SETFLOAT_T(proxy->proxy.fill.pos_rel_x, params[3]);
3159
SETFLOAT_T(proxy->proxy.fill.pos_rel_y, params[4]);
3160
SETINT(proxy->proxy.fill.pos_abs_x, params[5]);
3161
SETINT(proxy->proxy.fill.pos_abs_y, params[6]);
3167
case EDJE_STATE_PARAM_FILL_SIZE:
3169
Edje_Part_Description_Image *img;
3170
Edje_Part_Description_Proxy *proxy;
3172
if ((rp->part->type != EDJE_PART_TYPE_IMAGE) && (rp->part->type != EDJE_PART_TYPE_PROXY)) return 0;
3175
if (rp->part->type == EDJE_PART_TYPE_IMAGE)
3177
img = (Edje_Part_Description_Image *)rp->custom->description;
3179
SETFLOAT_T(img->image.fill.rel_x, params[3]);
3180
SETFLOAT_T(img->image.fill.rel_y, params[4]);
3181
SETINT(img->image.fill.abs_x, params[5]);
3182
SETINT(img->image.fill.abs_y, params[6]);
3186
proxy = (Edje_Part_Description_Proxy *)rp->custom->description;
3188
SETFLOAT_T(proxy->proxy.fill.rel_x, params[3]);
3189
SETFLOAT_T(proxy->proxy.fill.rel_y, params[4]);
3190
SETINT(proxy->proxy.fill.abs_x, params[5]);
3191
SETINT(proxy->proxy.fill.abs_y, params[6]);
3197
case EDJE_STATE_PARAM_TEXT:
3199
Edje_Part_Description_Text *text;
3201
if ((rp->part->type != EDJE_PART_TYPE_TEXT) &&
3202
(rp->part->type != EDJE_PART_TYPE_TEXTBLOCK))
3207
text = (Edje_Part_Description_Text *)rp->custom->description;
3209
s = (char *)text->text.text.str;
3215
case EDJE_STATE_PARAM_TEXT_CLASS:
3217
Edje_Part_Description_Text *text;
3219
if ((rp->part->type != EDJE_PART_TYPE_TEXT) &&
3220
(rp->part->type != EDJE_PART_TYPE_TEXTBLOCK))
3225
text = (Edje_Part_Description_Text *)rp->custom->description;
3227
s = text->text.text_class;
3233
case EDJE_STATE_PARAM_TEXT_FONT:
3235
Edje_Part_Description_Text *text;
3237
if ((rp->part->type != EDJE_PART_TYPE_TEXT)) return 0;
3241
text = (Edje_Part_Description_Text *)rp->custom->description;
3243
s = (char *)text->text.font.str;
3249
case EDJE_STATE_PARAM_TEXT_STYLE:
3251
Edje_Part_Description_Text *text;
3253
if ((rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) return 0;
3257
text = (Edje_Part_Description_Text *)rp->custom->description;
3259
s = (char *)text->text.style.str;
3265
case EDJE_STATE_PARAM_TEXT_SIZE:
3267
Edje_Part_Description_Text *text;
3269
if ((rp->part->type != EDJE_PART_TYPE_TEXT)) return 0;
3273
text = (Edje_Part_Description_Text *)rp->custom->description;
3275
SETINT(text->text.size, params[3]);
3280
case EDJE_STATE_PARAM_TEXT_FIT:
3282
Edje_Part_Description_Text *text;
3284
if ((rp->part->type != EDJE_PART_TYPE_TEXT)) return 0;
3287
text = (Edje_Part_Description_Text *)rp->custom->description;
3289
SETINT(text->text.fit_x, params[3]);
3290
SETINT(text->text.fit_y, params[4]);
3295
case EDJE_STATE_PARAM_TEXT_MIN:
3297
Edje_Part_Description_Text *text;
3299
if ((rp->part->type != EDJE_PART_TYPE_TEXT) &&
3300
(rp->part->type != EDJE_PART_TYPE_TEXTBLOCK))
3305
text = (Edje_Part_Description_Text *)rp->custom->description;
3307
SETINT(text->text.min_x, params[3]);
3308
SETINT(text->text.min_y, params[4]);
3313
case EDJE_STATE_PARAM_TEXT_MAX:
3315
Edje_Part_Description_Text *text;
3317
if ((rp->part->type != EDJE_PART_TYPE_TEXT) &&
3318
(rp->part->type != EDJE_PART_TYPE_TEXTBLOCK))
3323
text = (Edje_Part_Description_Text *)rp->custom->description;
3325
SETINT(text->text.max_x, params[3]);
3326
SETINT(text->text.max_y, params[4]);
3331
case EDJE_STATE_PARAM_TEXT_ALIGN:
3333
Edje_Part_Description_Text *text;
3335
if ((rp->part->type != EDJE_PART_TYPE_TEXT)) return 0;
3339
text = (Edje_Part_Description_Text *)rp->custom->description;
3341
SETFLOAT_T(text->text.align.x, params[3]);
3342
SETFLOAT_T(text->text.align.y, params[4]);
3347
case EDJE_STATE_PARAM_VISIBLE:
3350
SETINT(rp->custom->description->visible, params[3]);
3354
case EDJE_STATE_PARAM_MAP_ON:
3357
SETINT(rp->custom->description->map.on, params[3]);
3361
case EDJE_STATE_PARAM_MAP_PERSP:
3364
SETINT(rp->custom->description->map.id_persp, params[3]);
3368
case EDJE_STATE_PARAM_MAP_LIGHT:
3371
SETINT(rp->custom->description->map.id_light, params[3]);
3375
case EDJE_STATE_PARAM_MAP_ROT_CENTER:
3378
SETINT(rp->custom->description->map.rot.id_center, params[3]);
3382
case EDJE_STATE_PARAM_MAP_ROT_X:
3385
SETFLOAT_T(rp->custom->description->map.rot.x, params[3]);
3389
case EDJE_STATE_PARAM_MAP_ROT_Y:
3392
SETFLOAT_T(rp->custom->description->map.rot.y, params[3]);
3396
case EDJE_STATE_PARAM_MAP_ROT_Z:
3399
SETFLOAT_T(rp->custom->description->map.rot.z, params[3]);
3403
case EDJE_STATE_PARAM_MAP_BACK_CULL:
3406
SETINT(rp->custom->description->map.backcull, params[3]);
3410
case EDJE_STATE_PARAM_MAP_PERSP_ON:
3413
SETINT(rp->custom->description->map.persp_on, params[3]);
3417
case EDJE_STATE_PARAM_PERSP_ZPLANE:
3420
SETINT(rp->custom->description->persp.zplane, params[3]);
3424
case EDJE_STATE_PARAM_PERSP_FOCAL:
3427
SETINT(rp->custom->description->persp.focal, params[3]);
3431
case EDJE_STATE_PARAM_PROXY_SRC_CLIP:
3433
Edje_Part_Description_Proxy *proxy;
3435
if ((rp->part->type != EDJE_PART_TYPE_PROXY)) return 0;
3438
proxy = (Edje_Part_Description_Proxy *)rp->custom->description;
3439
SETINT(proxy->proxy.source_clip, params[3]);
3444
case EDJE_STATE_PARAM_PROXY_SRC_VISIBLE:
3446
Edje_Part_Description_Proxy *proxy;
3448
if ((rp->part->type != EDJE_PART_TYPE_PROXY)) return 0;
3451
proxy = (Edje_Part_Description_Proxy *)rp->custom->description;
3452
SETINT(proxy->proxy.source_visible, params[3]);
3458
case EDJE_STATE_PARAM_PHYSICS_MASS:
3461
SETFLOAT_T(rp->custom->description->physics.mass, params[3]);
3465
case EDJE_STATE_PARAM_PHYSICS_RESTITUTION:
3468
SETFLOAT_T(rp->custom->description->physics.restitution, params[3]);
3472
case EDJE_STATE_PARAM_PHYSICS_FRICTION:
3475
SETFLOAT_T(rp->custom->description->physics.friction, params[3]);
3479
case EDJE_STATE_PARAM_PHYSICS_DAMPING:
3482
SETFLOAT_T(rp->custom->description->physics.damping.linear, params[3]);
3483
SETFLOAT_T(rp->custom->description->physics.damping.angular,
3488
case EDJE_STATE_PARAM_PHYSICS_SLEEP:
3491
SETFLOAT_T(rp->custom->description->physics.sleep.linear, params[3]);
3492
SETFLOAT_T(rp->custom->description->physics.sleep.angular, params[4]);
3496
case EDJE_STATE_PARAM_PHYSICS_MATERIAL:
3499
SETINT(rp->custom->description->physics.material, params[3]);
3502
case EDJE_STATE_PARAM_PHYSICS_DENSITY:
3505
SETFLOAT_T(rp->custom->description->physics.density, params[3]);
3508
case EDJE_STATE_PARAM_PHYSICS_HARDNESS:
3511
SETFLOAT_T(rp->custom->description->physics.hardness, params[3]);
3514
case EDJE_STATE_PARAM_PHYSICS_IGNORE_PART_POS:
3517
SETINT(rp->custom->description->physics.ignore_part_pos, params[3]);
3520
case EDJE_STATE_PARAM_PHYSICS_LIGHT_ON:
3523
SETINT(rp->custom->description->physics.light_on, params[3]);
3526
case EDJE_STATE_PARAM_PHYSICS_MOV_FREEDOM_LIN:
3529
SETINT(rp->custom->description->physics.mov_freedom.lin.x, params[3]);
3530
SETINT(rp->custom->description->physics.mov_freedom.lin.y, params[4]);
3531
SETINT(rp->custom->description->physics.mov_freedom.lin.z, params[5]);
3534
case EDJE_STATE_PARAM_PHYSICS_MOV_FREEDOM_ANG:
3537
SETINT(rp->custom->description->physics.mov_freedom.ang.x, params[3]);
3538
SETINT(rp->custom->description->physics.mov_freedom.ang.y, params[4]);
3539
SETINT(rp->custom->description->physics.mov_freedom.ang.z, params[5]);
3542
case EDJE_STATE_PARAM_PHYSICS_BACK_CULL:
3545
SETINT(rp->custom->description->physics.backcull, params[3]);
3548
case EDJE_STATE_PARAM_PHYSICS_Z:
3551
SETINT(rp->custom->description->physics.z, params[3]);
3554
case EDJE_STATE_PARAM_PHYSICS_DEPTH:
3557
SETINT(rp->custom->description->physics.depth, params[3]);
3570
_edje_embryo_fn_set_mouse_events(Embryo_Program *ep, Embryo_Cell *params)
3578
part_id = params[1];
3579
if (part_id < 0) return 0;
3581
ed = embryo_program_data_get(ep);
3582
rp = ed->table_parts[part_id % ed->table_parts_size];
3585
_edje_real_part_mouse_events_set(ed, rp, params[2]);
3592
_edje_embryo_fn_get_mouse_events(Embryo_Program *ep, Embryo_Cell *params)
3600
part_id = params[1];
3601
if (part_id < 0) return 0;
3603
ed = embryo_program_data_get(ep);
3604
rp = ed->table_parts[part_id % ed->table_parts_size];
3607
return (Embryo_Cell)_edje_var_int_get(ed, (int)_edje_real_part_mouse_events_get(ed, rp));
3615
_edje_embryo_fn_set_pointer_mode(Embryo_Program *ep, Embryo_Cell *params)
3623
part_id = params[1];
3624
if (part_id < 0) return 0;
3626
ed = embryo_program_data_get(ep);
3627
rp = ed->table_parts[part_id % ed->table_parts_size];
3630
_edje_real_part_pointer_mode_set(ed, rp, params[2]);
3637
_edje_embryo_fn_set_repeat_events(Embryo_Program *ep, Embryo_Cell *params)
3645
part_id = params[1];
3646
if (part_id < 0) return 0;
3648
ed = embryo_program_data_get(ep);
3649
rp = ed->table_parts[part_id % ed->table_parts_size];
3652
_edje_real_part_repeat_events_set(ed, rp, params[2]);
3659
_edje_embryo_fn_get_repeat_events(Embryo_Program *ep, Embryo_Cell *params)
3667
part_id = params[1];
3668
if (part_id < 0) return 0;
3670
ed = embryo_program_data_get(ep);
3671
rp = ed->table_parts[part_id % ed->table_parts_size];
3674
return (Embryo_Cell)_edje_var_int_get(ed, (int)_edje_real_part_repeat_events_get(ed, rp));
3682
_edje_embryo_fn_set_ignore_flags(Embryo_Program *ep, Embryo_Cell *params)
3690
part_id = params[1];
3691
if (part_id < 0) return 0;
3693
ed = embryo_program_data_get(ep);
3694
rp = ed->table_parts[part_id % ed->table_parts_size];
3697
_edje_real_part_ignore_flags_set(ed, rp, params[2]);
3704
_edje_embryo_fn_get_ignore_flags(Embryo_Program *ep, Embryo_Cell *params)
3712
part_id = params[1];
3713
if (part_id < 0) return 0;
3715
ed = embryo_program_data_get(ep);
3716
rp = ed->table_parts[part_id % ed->table_parts_size];
3719
return (Embryo_Cell)_edje_var_int_get(ed, (int)_edje_real_part_ignore_flags_get(ed, rp));
3727
_edje_embryo_fn_set_mask_flags(Embryo_Program *ep, Embryo_Cell *params)
3735
part_id = params[1];
3736
if (part_id < 0) return 0;
3738
ed = embryo_program_data_get(ep);
3739
rp = ed->table_parts[part_id % ed->table_parts_size];
3742
_edje_real_part_mask_flags_set(ed, rp, params[2]);
3749
_edje_embryo_fn_get_mask_flags(Embryo_Program *ep, Embryo_Cell *params)
3757
part_id = params[1];
3758
if (part_id < 0) return 0;
3760
ed = embryo_program_data_get(ep);
3761
rp = ed->table_parts[part_id % ed->table_parts_size];
3764
return (Embryo_Cell)_edje_var_int_get(ed, (int)_edje_real_part_mask_flags_get(ed, rp));
3772
_edje_embryo_fn_part_swallow(Embryo_Program *ep, Embryo_Cell *params)
3775
char *group_name = 0;
3778
Evas_Object *new_obj;
3782
part_id = params[1];
3783
if (part_id < 0) return 0;
3785
GETSTR(group_name, params[2]);
3786
if (!group_name) return 0;
3788
ed = embryo_program_data_get(ep);
3790
rp = ed->table_parts[part_id % ed->table_parts_size];
3793
new_obj = edje_object_add(ed->base.evas);
3794
if (!new_obj) return 0;
3796
if (!edje_object_file_set(new_obj, ed->file->path, group_name))
3798
evas_object_del(new_obj);
3801
edje_object_part_swallow(ed->obj, rp->part->name, new_obj);
3802
_edje_subobj_register(ed, new_obj);
3809
_edje_embryo_fn_set_focus(Embryo_Program *ep, Embryo_Cell *params)
3814
char *seat_name = NULL;
3816
if (!(HASNPARAMS(1) || HASNPARAMS(2))) return -1;
3817
ed = embryo_program_data_get(ep);
3819
part_id = params[1];
3820
if (part_id < 0) return 0;
3821
rp = ed->table_parts[part_id % ed->table_parts_size];
3828
GETSTR(seat_name, params[2]);
3829
if (!seat_name) return 0;
3832
_edje_part_focus_set(ed, seat_name, rp);
3839
_edje_embryo_fn_unset_focus(Embryo_Program *ep, Embryo_Cell *params)
3842
char *seat_name = NULL;
3844
if (!(HASNPARAMS(0) || HASNPARAMS(1))) return -1;
3845
ed = embryo_program_data_get(ep);
3851
GETSTR(seat_name, params[1]);
3852
if (!seat_name) return 0;
3855
_edje_part_focus_set(ed, seat_name, NULL);
3862
_edje_embryo_fn_external_param_get_int(Embryo_Program *ep, Embryo_Cell *params)
3867
Edje_External_Param eep;
3871
ed = embryo_program_data_get(ep);
3873
part_id = params[1];
3874
if (part_id < 0) return 0;
3875
rp = ed->table_parts[part_id % ed->table_parts_size];
3877
GETSTR(param_name, params[2]);
3878
if (!param_name) return 0;
3879
eep.name = param_name;
3880
eep.type = EDJE_EXTERNAL_PARAM_TYPE_INT;
3882
_edje_external_param_get(NULL, rp, &eep);
3888
_edje_embryo_fn_external_param_set_int(Embryo_Program *ep, Embryo_Cell *params)
3893
Edje_External_Param eep;
3897
ed = embryo_program_data_get(ep);
3899
part_id = params[1];
3900
if (part_id < 0) return 0;
3901
rp = ed->table_parts[part_id % ed->table_parts_size];
3903
GETSTR(param_name, params[2]);
3904
if (!param_name) return 0;
3905
eep.name = param_name;
3906
eep.type = EDJE_EXTERNAL_PARAM_TYPE_INT;
3908
return _edje_external_param_set(NULL, rp, &eep);
3913
_edje_embryo_fn_external_param_get_float(Embryo_Program *ep, Embryo_Cell *params)
3918
Edje_External_Param eep;
3923
ed = embryo_program_data_get(ep);
3925
part_id = params[1];
3926
if (part_id < 0) return 0;
3927
rp = ed->table_parts[part_id % ed->table_parts_size];
3929
GETSTR(param_name, params[2]);
3930
if (!param_name) return 0;
3931
eep.name = param_name;
3932
eep.type = EDJE_EXTERNAL_PARAM_TYPE_DOUBLE;
3934
_edje_external_param_get(NULL, rp, &eep);
3936
return EMBRYO_FLOAT_TO_CELL(v);
3941
_edje_embryo_fn_external_param_set_float(Embryo_Program *ep, Embryo_Cell *params)
3946
Edje_External_Param eep;
3950
ed = embryo_program_data_get(ep);
3952
part_id = params[1];
3953
if (part_id < 0) return 0;
3954
rp = ed->table_parts[part_id % ed->table_parts_size];
3956
GETSTR(param_name, params[2]);
3957
if (!param_name) return 0;
3958
eep.name = param_name;
3959
eep.type = EDJE_EXTERNAL_PARAM_TYPE_DOUBLE;
3960
eep.d = EMBRYO_CELL_TO_FLOAT(params[3]);
3961
return _edje_external_param_set(NULL, rp, &eep);
3966
_edje_embryo_fn_external_param_get_strlen(Embryo_Program *ep, Embryo_Cell *params)
3971
Edje_External_Param eep;
3975
ed = embryo_program_data_get(ep);
3977
part_id = params[1];
3978
if (part_id < 0) return 0;
3979
rp = ed->table_parts[part_id % ed->table_parts_size];
3981
GETSTR(param_name, params[2]);
3982
if (!param_name) return 0;
3983
eep.name = param_name;
3984
eep.type = EDJE_EXTERNAL_PARAM_TYPE_STRING;
3986
_edje_external_param_get(NULL, rp, &eep);
3987
if (!eep.s) return 0;
3988
return strlen(eep.s);
3993
_edje_embryo_fn_external_param_get_str(Embryo_Program *ep, Embryo_Cell *params)
3998
Edje_External_Param eep;
4000
size_t src_len, dst_len;
4003
dst_len = params[4];
4004
if (dst_len < 1) goto error;
4006
ed = embryo_program_data_get(ep);
4008
part_id = params[1];
4009
if (part_id < 0) goto error;
4010
rp = ed->table_parts[part_id % ed->table_parts_size];
4012
GETSTR(param_name, params[2]);
4013
if (!param_name) return 0;
4014
eep.name = param_name;
4015
eep.type = EDJE_EXTERNAL_PARAM_TYPE_STRING;
4017
_edje_external_param_get(NULL, rp, &eep);
4018
if (!eep.s) goto error;
4019
src_len = strlen(eep.s);
4020
if (src_len < dst_len)
4022
SETSTR(eep.s, params[3]);
4026
char *tmp = alloca(dst_len);
4027
memcpy(tmp, eep.s, dst_len - 1);
4028
tmp[dst_len - 1] = '\0';
4029
SETSTR(tmp, params[3]);
4034
SETSTR("", params[3]);
4040
_edje_embryo_fn_external_param_set_str(Embryo_Program *ep, Embryo_Cell *params)
4045
Edje_External_Param eep;
4046
char *param_name, *val;
4049
ed = embryo_program_data_get(ep);
4051
part_id = params[1];
4052
if (part_id < 0) return 0;
4053
rp = ed->table_parts[part_id % ed->table_parts_size];
4055
GETSTR(param_name, params[2]);
4056
if (!param_name) return 0;
4057
eep.name = param_name;
4058
eep.type = EDJE_EXTERNAL_PARAM_TYPE_STRING;
4059
GETSTR(val, params[3]);
4062
return _edje_external_param_set(NULL, rp, &eep);
4067
_edje_embryo_fn_external_param_get_choice_len(Embryo_Program *ep, Embryo_Cell *params)
4072
Edje_External_Param eep;
4076
ed = embryo_program_data_get(ep);
4078
part_id = params[1];
4079
if (part_id < 0) return 0;
4080
rp = ed->table_parts[part_id % ed->table_parts_size];
4082
GETSTR(param_name, params[2]);
4083
if (!param_name) return 0;
4084
eep.name = param_name;
4085
eep.type = EDJE_EXTERNAL_PARAM_TYPE_CHOICE;
4087
_edje_external_param_get(NULL, rp, &eep);
4088
if (!eep.s) return 0;
4089
return strlen(eep.s);
4094
_edje_embryo_fn_external_param_get_choice(Embryo_Program *ep, Embryo_Cell *params)
4099
Edje_External_Param eep;
4101
size_t src_len, dst_len;
4104
dst_len = params[4];
4105
if (dst_len < 1) goto error;
4107
ed = embryo_program_data_get(ep);
4109
part_id = params[1];
4110
if (part_id < 0) goto error;
4111
rp = ed->table_parts[part_id % ed->table_parts_size];
4113
GETSTR(param_name, params[2]);
4114
if (!param_name) return 0;
4115
eep.name = param_name;
4116
eep.type = EDJE_EXTERNAL_PARAM_TYPE_CHOICE;
4118
_edje_external_param_get(NULL, rp, &eep);
4119
if (!eep.s) goto error;
4120
src_len = strlen(eep.s);
4121
if (src_len < dst_len)
4123
SETSTR(eep.s, params[3]);
4127
char *tmp = alloca(dst_len);
4128
memcpy(tmp, eep.s, dst_len - 1);
4129
tmp[dst_len - 1] = '\0';
4130
SETSTR(tmp, params[3]);
4135
SETSTR("", params[3]);
4141
_edje_embryo_fn_external_param_set_choice(Embryo_Program *ep, Embryo_Cell *params)
4146
Edje_External_Param eep;
4147
char *param_name, *val;
4150
ed = embryo_program_data_get(ep);
4152
part_id = params[1];
4153
if (part_id < 0) return 0;
4154
rp = ed->table_parts[part_id % ed->table_parts_size];
4156
GETSTR(param_name, params[2]);
4157
if (!param_name) return 0;
4158
eep.name = param_name;
4159
eep.type = EDJE_EXTERNAL_PARAM_TYPE_CHOICE;
4160
GETSTR(val, params[3]);
4163
return _edje_external_param_set(NULL, rp, &eep);
4168
_edje_embryo_fn_external_param_get_bool(Embryo_Program *ep, Embryo_Cell *params)
4173
Edje_External_Param eep;
4177
ed = embryo_program_data_get(ep);
4179
part_id = params[1];
4180
if (part_id < 0) return 0;
4181
rp = ed->table_parts[part_id % ed->table_parts_size];
4183
GETSTR(param_name, params[2]);
4184
if (!param_name) return 0;
4185
eep.name = param_name;
4186
eep.type = EDJE_EXTERNAL_PARAM_TYPE_BOOL;
4188
_edje_external_param_get(NULL, rp, &eep);
4194
_edje_embryo_fn_external_param_set_bool(Embryo_Program *ep, Embryo_Cell *params)
4199
Edje_External_Param eep;
4203
ed = embryo_program_data_get(ep);
4205
part_id = params[1];
4206
if (part_id < 0) return 0;
4207
rp = ed->table_parts[part_id % ed->table_parts_size];
4209
GETSTR(param_name, params[2]);
4210
if (!param_name) return 0;
4211
eep.name = param_name;
4212
eep.type = EDJE_EXTERNAL_PARAM_TYPE_BOOL;
4214
return _edje_external_param_set(NULL, rp, &eep);
4222
_edje_embryo_fn_physics_components_set(Embryo_Program *ep, Embryo_Cell *params, void (*func)(EPhysics_Body *body, double x, double y, double z))
4230
ed = embryo_program_data_get(ep);
4231
part_id = params[1];
4232
if (part_id < 0) return 0;
4234
rp = ed->table_parts[part_id % ed->table_parts_size];
4235
if ((rp) && (rp->body))
4239
x = (double)EMBRYO_CELL_TO_FLOAT(params[2]);
4240
y = (double)EMBRYO_CELL_TO_FLOAT(params[3]);
4241
z = (double)EMBRYO_CELL_TO_FLOAT(params[4]);
4243
func(rp->body, x, y, z);
4253
_edje_embryo_fn_physics_components_get(Embryo_Program *ep, Embryo_Cell *params, void (*func)(const EPhysics_Body *body, double *x, double *y, double *z))
4261
ed = embryo_program_data_get(ep);
4262
part_id = params[1];
4263
if (part_id < 0) return 0;
4265
rp = ed->table_parts[part_id % ed->table_parts_size];
4266
if ((rp) && (rp->body))
4269
func(rp->body, &x, &y, &z);
4270
SETFLOAT(x, params[2]);
4271
SETFLOAT(y, params[3]);
4272
SETFLOAT(z, params[4]);
4280
_edje_embryo_fn_physics_impulse(Embryo_Program *ep, Embryo_Cell *params)
4282
if (!EPH_LOAD()) return 0;
4283
return _edje_embryo_fn_physics_components_set(
4284
ep, params, EPH_CALL(ephysics_body_central_impulse_apply));
4289
_edje_embryo_fn_physics_torque_impulse(Embryo_Program *ep, Embryo_Cell *params)
4291
if (!EPH_LOAD()) return 0;
4292
return _edje_embryo_fn_physics_components_set(
4293
ep, params, EPH_CALL(ephysics_body_torque_impulse_apply));
4298
_edje_embryo_fn_physics_force(Embryo_Program *ep, Embryo_Cell *params)
4300
if (!EPH_LOAD()) return 0;
4301
return _edje_embryo_fn_physics_components_set(
4302
ep, params, EPH_CALL(ephysics_body_central_force_apply));
4307
_edje_embryo_fn_physics_torque(Embryo_Program *ep, Embryo_Cell *params)
4309
if (!EPH_LOAD()) return 0;
4310
return _edje_embryo_fn_physics_components_set(
4311
ep, params, EPH_CALL(ephysics_body_torque_apply));
4316
_edje_embryo_fn_physics_clear_forces(Embryo_Program *ep, Embryo_Cell *params)
4324
if (!EPH_LOAD()) return 0;
4325
ed = embryo_program_data_get(ep);
4326
part_id = params[1];
4327
if (part_id < 0) return 0;
4329
rp = ed->table_parts[part_id % ed->table_parts_size];
4330
if ((rp) && (rp->body))
4331
EPH_CALL(ephysics_body_forces_clear)(rp->body);
4338
_edje_embryo_fn_physics_get_forces(Embryo_Program *ep, Embryo_Cell *params)
4340
if (!EPH_LOAD()) return 0;
4341
return _edje_embryo_fn_physics_components_get(
4342
ep, params, EPH_CALL(ephysics_body_forces_get));
4347
_edje_embryo_fn_physics_get_torques(Embryo_Program *ep, Embryo_Cell *params)
4349
if (!EPH_LOAD()) return 0;
4350
return _edje_embryo_fn_physics_components_get(
4351
ep, params, EPH_CALL(ephysics_body_torques_get));
4356
_edje_embryo_fn_physics_set_velocity(Embryo_Program *ep, Embryo_Cell *params)
4358
if (!EPH_LOAD()) return 0;
4359
return _edje_embryo_fn_physics_components_set(
4360
ep, params, EPH_CALL(ephysics_body_linear_velocity_set));
4365
_edje_embryo_fn_physics_get_velocity(Embryo_Program *ep, Embryo_Cell *params)
4367
if (!EPH_LOAD()) return 0;
4368
return _edje_embryo_fn_physics_components_get(
4369
ep, params, EPH_CALL(ephysics_body_linear_velocity_get));
4374
_edje_embryo_fn_physics_set_ang_velocity(Embryo_Program *ep, Embryo_Cell *params)
4376
if (!EPH_LOAD()) return 0;
4377
return _edje_embryo_fn_physics_components_set(
4378
ep, params, EPH_CALL(ephysics_body_angular_velocity_set));
4383
_edje_embryo_fn_physics_get_ang_velocity(Embryo_Program *ep, Embryo_Cell *params)
4385
if (!EPH_LOAD()) return 0;
4386
return _edje_embryo_fn_physics_components_get(
4387
ep, params, EPH_CALL(ephysics_body_angular_velocity_get));
4392
_edje_embryo_fn_physics_stop(Embryo_Program *ep, Embryo_Cell *params)
4400
if (!EPH_LOAD()) return 0;
4401
ed = embryo_program_data_get(ep);
4402
part_id = params[1];
4403
if (part_id < 0) return 0;
4405
rp = ed->table_parts[part_id % ed->table_parts_size];
4406
if ((rp) && (rp->body))
4407
EPH_CALL(ephysics_body_stop)(rp->body);
4414
_edje_embryo_fn_physics_set_rotation(Embryo_Program *ep, Embryo_Cell *params)
4422
if (!EPH_LOAD()) return 0;
4423
ed = embryo_program_data_get(ep);
4424
part_id = params[1];
4425
if (part_id < 0) return 0;
4427
rp = ed->table_parts[part_id % ed->table_parts_size];
4428
if ((rp) && (rp->body))
4430
EPhysics_Quaternion quat;
4433
w = (double)EMBRYO_CELL_TO_FLOAT(params[2]);
4434
x = (double)EMBRYO_CELL_TO_FLOAT(params[3]);
4435
y = (double)EMBRYO_CELL_TO_FLOAT(params[4]);
4436
z = (double)EMBRYO_CELL_TO_FLOAT(params[5]);
4438
EPH_CALL(ephysics_quaternion_set)(&quat, x, y, z, w);
4439
EPH_CALL(ephysics_quaternion_normalize)(&quat);
4440
EPH_CALL(ephysics_body_rotation_set)(rp->body, &quat);
4448
_edje_embryo_fn_physics_get_rotation(Embryo_Program *ep, Embryo_Cell *params)
4456
if (!EPH_LOAD()) return 0;
4457
ed = embryo_program_data_get(ep);
4458
part_id = params[1];
4459
if (part_id < 0) return 0;
4461
rp = ed->table_parts[part_id % ed->table_parts_size];
4462
if ((rp) && (rp->body))
4464
EPhysics_Quaternion quat;
4467
EPH_CALL(ephysics_body_rotation_get)(rp->body, &quat);
4468
EPH_CALL(ephysics_quaternion_get)(&quat, &x, &y, &z, &w);
4470
SETFLOAT(w, params[2]);
4471
SETFLOAT(x, params[3]);
4472
SETFLOAT(y, params[4]);
4473
SETFLOAT(z, params[5]);
4483
_edje_embryo_fn_swallow_has_content(Embryo_Program *ep, Embryo_Cell *params)
4490
ed = embryo_program_data_get(ep);
4491
part_id = params[1];
4492
if (part_id < 0) return 0;
4493
rp = ed->table_parts[part_id % ed->table_parts_size];
4497
(rp->part->type != EDJE_PART_TYPE_SWALLOW) ||
4498
(!rp->typedata.swallow) ||
4499
(!rp->typedata.swallow->swallowed_object))
4507
_edje_embryo_fn_echo(Embryo_Program *ep, Embryo_Cell *params)
4513
ed = embryo_program_data_get(ep);
4514
GETSTR(p, params[1]);
4517
"<EDJE ECHO> [%llx | %s:%s]: %s\n",
4518
(unsigned long long)((uintptr_t)ed),
4526
_edje_embryo_script_init(Edje_Part_Collection *edc)
4531
if (!edc->script) return;
4535
embryo_program_native_call_add(ep, "get_int", _edje_embryo_fn_get_int);
4536
embryo_program_native_call_add(ep, "set_int", _edje_embryo_fn_set_int);
4537
embryo_program_native_call_add(ep, "get_float", _edje_embryo_fn_get_float);
4538
embryo_program_native_call_add(ep, "set_float", _edje_embryo_fn_set_float);
4539
embryo_program_native_call_add(ep, "get_str", _edje_embryo_fn_get_str);
4540
embryo_program_native_call_add(ep, "get_strlen", _edje_embryo_fn_get_strlen);
4541
embryo_program_native_call_add(ep, "set_str", _edje_embryo_fn_set_str);
4542
embryo_program_native_call_add(ep, "count", _edje_embryo_fn_count);
4543
embryo_program_native_call_add(ep, "remove", _edje_embryo_fn_remove);
4544
embryo_program_native_call_add(ep, "append_int", _edje_embryo_fn_append_int);
4545
embryo_program_native_call_add(ep, "prepend_int", _edje_embryo_fn_prepend_int);
4546
embryo_program_native_call_add(ep, "insert_int", _edje_embryo_fn_insert_int);
4547
embryo_program_native_call_add(ep, "replace_int", _edje_embryo_fn_replace_int);
4548
embryo_program_native_call_add(ep, "fetch_int", _edje_embryo_fn_fetch_int);
4549
embryo_program_native_call_add(ep, "append_str", _edje_embryo_fn_append_str);
4550
embryo_program_native_call_add(ep, "prepend_str", _edje_embryo_fn_prepend_str);
4551
embryo_program_native_call_add(ep, "insert_str", _edje_embryo_fn_insert_str);
4552
embryo_program_native_call_add(ep, "replace_str", _edje_embryo_fn_replace_str);
4553
embryo_program_native_call_add(ep, "fetch_str", _edje_embryo_fn_fetch_str);
4554
embryo_program_native_call_add(ep, "append_float", _edje_embryo_fn_append_float);
4555
embryo_program_native_call_add(ep, "prepend_float", _edje_embryo_fn_prepend_float);
4556
embryo_program_native_call_add(ep, "insert_float", _edje_embryo_fn_insert_float);
4557
embryo_program_native_call_add(ep, "replace_float", _edje_embryo_fn_replace_float);
4558
embryo_program_native_call_add(ep, "fetch_float", _edje_embryo_fn_fetch_float);
4560
embryo_program_native_call_add(ep, "timer", _edje_embryo_fn_timer);
4561
embryo_program_native_call_add(ep, "cancel_timer", _edje_embryo_fn_cancel_timer);
4562
embryo_program_native_call_add(ep, "reset_timer", _edje_embryo_fn_reset_timer);
4564
embryo_program_native_call_add(ep, "anim", _edje_embryo_fn_anim);
4565
embryo_program_native_call_add(ep, "cancel_anim", _edje_embryo_fn_cancel_anim);
4566
embryo_program_native_call_add(ep, "get_anim_pos_map", _edje_embryo_fn_get_anim_pos_map);
4568
embryo_program_native_call_add(ep, "emit", _edje_embryo_fn_emit);
4569
embryo_program_native_call_add(ep, "get_part_id", _edje_embryo_fn_get_part_id);
4570
embryo_program_native_call_add(ep, "get_image_id", _edje_embryo_fn_get_image_id);
4571
embryo_program_native_call_add(ep, "get_program_id", _edje_embryo_fn_get_program_id);
4572
embryo_program_native_call_add(ep, "set_state", _edje_embryo_fn_set_state);
4573
embryo_program_native_call_add(ep, "get_state", _edje_embryo_fn_get_state);
4574
embryo_program_native_call_add(ep, "set_tween_state", _edje_embryo_fn_set_tween_state);
4575
embryo_program_native_call_add(ep, "set_tween_state_anim", _edje_embryo_fn_set_tween_state_anim);
4576
embryo_program_native_call_add(ep, "run_program", _edje_embryo_fn_run_program);
4577
embryo_program_native_call_add(ep, "get_drag_dir", _edje_embryo_fn_get_drag_dir);
4578
embryo_program_native_call_add(ep, "get_drag", _edje_embryo_fn_get_drag);
4579
embryo_program_native_call_add(ep, "set_drag", _edje_embryo_fn_set_drag);
4580
embryo_program_native_call_add(ep, "get_drag_size", _edje_embryo_fn_get_drag_size);
4581
embryo_program_native_call_add(ep, "set_drag_size", _edje_embryo_fn_set_drag_size);
4582
embryo_program_native_call_add(ep, "set_text", _edje_embryo_fn_set_text);
4583
embryo_program_native_call_add(ep, "get_text", _edje_embryo_fn_get_text);
4584
embryo_program_native_call_add(ep, "get_min_size", _edje_embryo_fn_get_min_size);
4585
embryo_program_native_call_add(ep, "get_max_size", _edje_embryo_fn_get_max_size);
4586
embryo_program_native_call_add(ep, "get_color_class", _edje_embryo_fn_get_color_class);
4587
embryo_program_native_call_add(ep, "set_color_class", _edje_embryo_fn_set_color_class);
4588
embryo_program_native_call_add(ep, "set_text_class", _edje_embryo_fn_set_text_class);
4589
embryo_program_native_call_add(ep, "get_text_class", _edje_embryo_fn_get_text_class);
4590
embryo_program_native_call_add(ep, "get_drag_step", _edje_embryo_fn_get_drag_step);
4591
embryo_program_native_call_add(ep, "set_drag_step", _edje_embryo_fn_set_drag_step);
4592
embryo_program_native_call_add(ep, "get_drag_page", _edje_embryo_fn_get_drag_page);
4593
embryo_program_native_call_add(ep, "set_drag_page", _edje_embryo_fn_set_drag_page);
4594
embryo_program_native_call_add(ep, "get_mouse", _edje_embryo_fn_get_mouse);
4595
embryo_program_native_call_add(ep, "get_mouse_buttons", _edje_embryo_fn_get_mouse_buttons);
4596
embryo_program_native_call_add(ep, "stop_program", _edje_embryo_fn_stop_program);
4597
embryo_program_native_call_add(ep, "stop_programs_on", _edje_embryo_fn_stop_programs_on);
4598
embryo_program_native_call_add(ep, "set_min_size", _edje_embryo_fn_set_min_size);
4599
embryo_program_native_call_add(ep, "set_max_size", _edje_embryo_fn_set_max_size);
4600
embryo_program_native_call_add(ep, "play_sample", _edje_embryo_fn_play_sample);
4601
embryo_program_native_call_add(ep, "play_tone", _edje_embryo_fn_play_tone);
4602
embryo_program_native_call_add(ep, "play_vibration", _edje_embryo_fn_play_vibration);
4603
embryo_program_native_call_add(ep, "send_message", _edje_embryo_fn_send_message);
4604
embryo_program_native_call_add(ep, "get_geometry", _edje_embryo_fn_get_geometry);
4605
embryo_program_native_call_add(ep, "custom_state", _edje_embryo_fn_custom_state);
4606
embryo_program_native_call_add(ep, "set_state_val", _edje_embryo_fn_set_state_val);
4607
embryo_program_native_call_add(ep, "get_state_val", _edje_embryo_fn_get_state_val);
4608
embryo_program_native_call_add(ep, "set_state_anim", _edje_embryo_fn_set_state_anim);
4610
embryo_program_native_call_add(ep, "set_mouse_events", _edje_embryo_fn_set_mouse_events);
4611
embryo_program_native_call_add(ep, "get_mouse_events", _edje_embryo_fn_get_mouse_events);
4612
embryo_program_native_call_add(ep, "set_pointer_mode", _edje_embryo_fn_set_pointer_mode);
4613
embryo_program_native_call_add(ep, "set_repeat_events", _edje_embryo_fn_set_repeat_events);
4614
embryo_program_native_call_add(ep, "get_repeat_events", _edje_embryo_fn_get_repeat_events);
4615
embryo_program_native_call_add(ep, "set_ignore_flags", _edje_embryo_fn_set_ignore_flags);
4616
embryo_program_native_call_add(ep, "get_ignore_flags", _edje_embryo_fn_get_ignore_flags);
4617
embryo_program_native_call_add(ep, "set_mask_flags", _edje_embryo_fn_set_mask_flags);
4618
embryo_program_native_call_add(ep, "get_mask_flags", _edje_embryo_fn_get_mask_flags);
4620
embryo_program_native_call_add(ep, "set_focus", _edje_embryo_fn_set_focus);
4621
embryo_program_native_call_add(ep, "unset_focus", _edje_embryo_fn_unset_focus);
4623
embryo_program_native_call_add(ep, "part_swallow", _edje_embryo_fn_part_swallow);
4625
embryo_program_native_call_add(ep, "external_param_get_int", _edje_embryo_fn_external_param_get_int);
4626
embryo_program_native_call_add(ep, "external_param_set_int", _edje_embryo_fn_external_param_set_int);
4627
embryo_program_native_call_add(ep, "external_param_get_float", _edje_embryo_fn_external_param_get_float);
4628
embryo_program_native_call_add(ep, "external_param_set_float", _edje_embryo_fn_external_param_set_float);
4629
embryo_program_native_call_add(ep, "external_param_get_strlen", _edje_embryo_fn_external_param_get_strlen);
4630
embryo_program_native_call_add(ep, "external_param_get_str", _edje_embryo_fn_external_param_get_str);
4631
embryo_program_native_call_add(ep, "external_param_set_str", _edje_embryo_fn_external_param_set_str);
4632
embryo_program_native_call_add(ep, "external_param_get_choice_len", _edje_embryo_fn_external_param_get_choice_len);
4633
embryo_program_native_call_add(ep, "external_param_get_choice", _edje_embryo_fn_external_param_get_choice);
4634
embryo_program_native_call_add(ep, "external_param_set_choice", _edje_embryo_fn_external_param_set_choice);
4635
embryo_program_native_call_add(ep, "external_param_get_bool", _edje_embryo_fn_external_param_get_bool);
4636
embryo_program_native_call_add(ep, "external_param_set_bool", _edje_embryo_fn_external_param_set_bool);
4639
embryo_program_native_call_add(ep, "physics_impulse", _edje_embryo_fn_physics_impulse);
4640
embryo_program_native_call_add(ep, "physics_torque_impulse", _edje_embryo_fn_physics_torque_impulse);
4641
embryo_program_native_call_add(ep, "physics_force", _edje_embryo_fn_physics_force);
4642
embryo_program_native_call_add(ep, "physics_torque", _edje_embryo_fn_physics_torque);
4643
embryo_program_native_call_add(ep, "physics_clear_forces", _edje_embryo_fn_physics_clear_forces);
4644
embryo_program_native_call_add(ep, "physics_get_forces", _edje_embryo_fn_physics_get_forces);
4645
embryo_program_native_call_add(ep, "physics_get_torques", _edje_embryo_fn_physics_get_torques);
4646
embryo_program_native_call_add(ep, "physics_set_velocity", _edje_embryo_fn_physics_set_velocity);
4647
embryo_program_native_call_add(ep, "physics_get_velocity", _edje_embryo_fn_physics_get_velocity);
4648
embryo_program_native_call_add(ep, "physics_set_ang_velocity", _edje_embryo_fn_physics_set_ang_velocity);
4649
embryo_program_native_call_add(ep, "physics_get_ang_velocity", _edje_embryo_fn_physics_get_ang_velocity);
4650
embryo_program_native_call_add(ep, "physics_stop", _edje_embryo_fn_physics_stop);
4651
embryo_program_native_call_add(ep, "physics_set_rotation", _edje_embryo_fn_physics_set_rotation);
4652
embryo_program_native_call_add(ep, "physics_get_rotation", _edje_embryo_fn_physics_get_rotation);
4655
embryo_program_native_call_add(ep, "swallow_has_content", _edje_embryo_fn_swallow_has_content);
4656
embryo_program_native_call_add(ep, "echo", _edje_embryo_fn_echo);
4660
_edje_embryo_script_shutdown(Edje_Part_Collection *edc)
4663
if (!edc->script) return;
4664
if (embryo_program_recursion_get(edc->script) > 0) return;
4665
embryo_program_free(edc->script);
4670
_edje_embryo_script_reset(Edje *ed)
4673
if (!ed->collection) return;
4674
if (!ed->collection->script) return;
4675
if (embryo_program_recursion_get(ed->collection->script) > 0) return;
4676
embryo_program_vm_reset(ed->collection->script);
4677
_edje_embryo_globals_init(ed);
4682
_edje_embryo_test_run(Edje *ed, Edje_Program *pr, const char *sig, const char *src)
4688
if (!ed->collection) return;
4689
if (!ed->collection->script) return;
4690
embryo_program_vm_push(ed->collection->script);
4691
_edje_embryo_globals_init(ed);
4694
snprintf(fname, sizeof(fname), "_p%i", pr->id);
4695
fn = embryo_program_function_find(ed->collection->script, (char *)fname);
4696
if (fn != EMBRYO_FUNCTION_NONE)
4701
embryo_parameter_string_push(ed->collection->script, (char *)sig);
4702
embryo_parameter_string_push(ed->collection->script, (char *)src);
4703
pdata = embryo_program_data_get(ed->collection->script);
4704
embryo_program_data_set(ed->collection->script, ed);
4716
embryo_program_max_cycle_run_set(ed->collection->script, 5000000);
4717
if (embryo_program_recursion_get(ed->collection->script) && (!ed->collection->script_recursion))
4718
ERR("You are running Embryo->EDC->Embryo with script program '%s';\n"
4719
"A run_program runs the '%d'th program '%s' in the group '%s' of file %s;\n"
4720
"By the power of Grayskull, your previous Embryo stack is now broken!",
4721
fname, (fn + 1), pr->name, ed->group, ed->path);
4723
ret = embryo_program_run(ed->collection->script, fn);
4724
if (ret == EMBRYO_PROGRAM_FAIL)
4726
ERR("ERROR with embryo script. "
4727
"OBJECT NAME: '%s', "
4728
"OBJECT FILE: '%s', "
4729
"ENTRY POINT: '%s (%s)', "
4733
ed->collection->part,
4737
embryo_error_string_get(embryo_program_error_get(ed->collection->script)));
4739
else if (ret == EMBRYO_PROGRAM_TOOLONG)
4741
ERR("ERROR with embryo script. "
4742
"OBJECT NAME: '%s', "
4743
"OBJECT FILE: '%s', "
4744
"ENTRY POINT: '%s (%s)', "
4747
"ERROR: 'Script exceeded maximum allowed cycle count of %i'",
4748
ed->collection->part,
4752
embryo_program_max_cycle_run_get(ed->collection->script));
4754
embryo_program_data_set(ed->collection->script, pdata);
4756
embryo_program_vm_pop(ed->collection->script);
4760
_edje_embryo_globals_init(Edje *ed)
4765
ep = ed->collection->script;
4766
n = embryo_program_variable_count_get(ep);
4767
for (i = 0; i < n; i++)
4769
Embryo_Cell cell, *cptr;
4771
cell = embryo_program_variable_get(ep, i);
4772
if (cell != EMBRYO_CELL_NONE)
4774
cptr = embryo_data_address_get(ep, cell);
4775
if (cptr) *cptr = EDJE_VAR_MAGIC_BASE + i;