Eo: Migrate to the new syntax (Eo4) and adjust the EFL

This is a merge commit for all of the relevant changes.

The syntax is described in: https://phab.enlightenment.org/w/eo/

Summary:
eo_do(obj, a_set(1)) -> a_set(obj, 1)
eo_do_super(obj, CLASS, a_set(1)) -> a_set(eo_super(obj, CLASS), 1)

eo_do_*_ret() set of functions are no longer needed.

This is the first step, the next step would be to also fix up eo_add()
which currently still uses the old syntax and is not 100% portable.
This commit is contained in:
Tom Hacohen 2016-03-03 10:05:38 +00:00
commit f46afbcbdf
291 changed files with 3995 additions and 6748 deletions

View File

@ -108,7 +108,6 @@ benchmark: all
EXAMPLES_SUBDIRS = \ EXAMPLES_SUBDIRS = \
examples/eina \ examples/eina \
examples/eo \
examples/eet \ examples/eet \
examples/evas \ examples/evas \
examples/ecore \ examples/ecore \

View File

@ -15,7 +15,7 @@ _other_call(Eo *obj EINA_UNUSED, void *class_data EINA_UNUSED, Eo *other, int ti
{ {
if (times > 0) if (times > 0)
{ {
eo_do(other, simple_other_call(obj, times-1)); simple_other_call(other, obj, times-1);
} }
} }

View File

@ -21,7 +21,7 @@ bench_eo_callbacks_add(int request)
for (i = 0 ; i < request ; i++) for (i = 0 ; i < request ; i++)
{ {
eo_do(obj, eo_event_callback_priority_add(SIMPLE_FOO, (short) i, _cb, NULL)); eo_event_callback_priority_add(obj, SIMPLE_FOO, (short) i, _cb, NULL);
} }
eo_unref(obj); eo_unref(obj);
@ -57,7 +57,7 @@ bench_eo_callbacks_call(int request)
for (j = 0 ; j < i ; j++) for (j = 0 ; j < i ; j++)
{ {
eo_do(obj[i], eo_event_callback_priority_add(SIMPLE_FOO, (short) j, _cb, NULL)); eo_event_callback_priority_add(obj[i], SIMPLE_FOO, (short) j, _cb, NULL);
} }
} }
@ -66,7 +66,7 @@ bench_eo_callbacks_call(int request)
for (j = 0 ; j < (int) (distribution[i] * request) ; j++) for (j = 0 ; j < (int) (distribution[i] * request) ; j++)
{ {
/* Miss finding the callbacks on purpose, so we measure worst case scenario. */ /* Miss finding the callbacks on purpose, so we measure worst case scenario. */
eo_do(obj[i], eo_event_callback_call(SIMPLE_BAR, NULL)); eo_event_callback_call(obj[i], SIMPLE_BAR, NULL);
} }
} }

View File

@ -13,7 +13,7 @@ bench_eo_do_simple(int request)
Eo *obj = eo_add(SIMPLE_CLASS, NULL); Eo *obj = eo_add(SIMPLE_CLASS, NULL);
for (i = 0 ; i < request ; i++) for (i = 0 ; i < request ; i++)
{ {
eo_do(obj, simple_a_set(i)); simple_a_set(obj, i);
} }
eo_unref(obj); eo_unref(obj);
@ -27,8 +27,8 @@ bench_eo_do_two_objs(int request)
Eo *obj2 = eo_add(SIMPLE_CLASS, NULL); Eo *obj2 = eo_add(SIMPLE_CLASS, NULL);
for (i = 0 ; i < request ; i++) for (i = 0 ; i < request ; i++)
{ {
eo_do(obj, simple_a_set(i)); simple_a_set(obj, i);
eo_do(obj2, simple_a_set(i)); simple_a_set(obj2, i);
} }
eo_unref(obj); eo_unref(obj);
@ -43,7 +43,7 @@ bench_eo_do_two_objs_growing_stack(int request)
Eo *obj2 = eo_add(SIMPLE_CLASS, NULL); Eo *obj2 = eo_add(SIMPLE_CLASS, NULL);
for (i = 0 ; i < request ; i++) for (i = 0 ; i < request ; i++)
{ {
eo_do(obj, simple_other_call(obj2, 20)); simple_other_call(obj, obj2, 20);
} }
eo_unref(obj); eo_unref(obj);
@ -55,7 +55,7 @@ static const Eo_Class *cur_klass;
static void static void
_a_set(Eo *obj, void *class_data EINA_UNUSED, int a) _a_set(Eo *obj, void *class_data EINA_UNUSED, int a)
{ {
eo_do_super(obj, cur_klass, simple_a_set(a)); simple_a_set(eo_super(obj, cur_klass), a);
} }
static Eo_Op_Description op_desc[] = { static Eo_Op_Description op_desc[] = {
@ -81,7 +81,7 @@ bench_eo_do_super(int request)
Eo *obj = eo_add(cur_klass, NULL); Eo *obj = eo_add(cur_klass, NULL);
for (i = 0 ; i < request ; i++) for (i = 0 ; i < request ; i++)
{ {
eo_do(obj, simple_a_set(i)); simple_a_set(obj, i);
} }
eo_unref(obj); eo_unref(obj);

View File

@ -97,7 +97,11 @@ eo_fundef_generate(const Eolian_Class *class, const Eolian_Function *func, Eolia
eina_strbuf_append_char(str_func, '\n'); eina_strbuf_append_char(str_func, '\n');
eina_strbuf_free(dbuf); eina_strbuf_free(dbuf);
} }
eina_strbuf_append_printf(str_func, "EOAPI @#rettype@#retspace%s(@#full_params);\n", func_env.lower_eo_func); eina_strbuf_append_printf(str_func, "EOAPI @#rettype@#retspace%s(%sEo *obj@#full_params);\n",
func_env.lower_eo_func,
(ftype == EOLIAN_PROP_GET ||
eolian_function_object_is_const(func) ||
eolian_function_is_class(func))?"const ":"");
if (scope == EOLIAN_SCOPE_PROTECTED) if (scope == EOLIAN_SCOPE_PROTECTED)
eina_strbuf_append_printf(str_func, "#endif\n"); eina_strbuf_append_printf(str_func, "#endif\n");
@ -106,7 +110,6 @@ eo_fundef_generate(const Eolian_Class *class, const Eolian_Function *func, Eolia
eina_strbuf_append_printf(str_func, "\n"); eina_strbuf_append_printf(str_func, "\n");
Eina_Strbuf *str_par = eina_strbuf_new(); Eina_Strbuf *str_par = eina_strbuf_new();
Eina_Strbuf *str_pardesc = eina_strbuf_new();
itr = eolian_property_keys_get(func, ftype); itr = eolian_property_keys_get(func, ftype);
EINA_ITERATOR_FOREACH(itr, data) EINA_ITERATOR_FOREACH(itr, data)
@ -115,9 +118,7 @@ eo_fundef_generate(const Eolian_Class *class, const Eolian_Function *func, Eolia
const Eolian_Type *ptypet = eolian_parameter_type_get(param); const Eolian_Type *ptypet = eolian_parameter_type_get(param);
const char *pname = eolian_parameter_name_get(param); const char *pname = eolian_parameter_name_get(param);
const char *ptype = eolian_type_c_type_get(ptypet); const char *ptype = eolian_type_c_type_get(ptypet);
eina_strbuf_append_printf(str_par, ", %s %s", ptype, pname);
if (eina_strbuf_length_get(str_par)) eina_strbuf_append(str_par, ", ");
eina_strbuf_append_printf(str_par, "%s %s", ptype, pname);
eina_stringshare_del(ptype); eina_stringshare_del(ptype);
} }
eina_iterator_free(itr); eina_iterator_free(itr);
@ -142,8 +143,7 @@ eo_fundef_generate(const Eolian_Class *class, const Eolian_Function *func, Eolia
if (ftype == EOLIAN_UNRESOLVED || ftype == EOLIAN_METHOD) add_star = (pdir == EOLIAN_OUT_PARAM || pdir == EOLIAN_INOUT_PARAM); if (ftype == EOLIAN_UNRESOLVED || ftype == EOLIAN_METHOD) add_star = (pdir == EOLIAN_OUT_PARAM || pdir == EOLIAN_INOUT_PARAM);
Eina_Bool had_star = !!strchr(ptype, '*'); Eina_Bool had_star = !!strchr(ptype, '*');
if (eina_strbuf_length_get(str_par)) eina_strbuf_append(str_par, ", "); eina_strbuf_append_printf(str_par, ", %s%s%s%s",
eina_strbuf_append_printf(str_par, "%s%s%s%s",
ptype, had_star?"":" ", add_star?"*":"", pname); ptype, had_star?"":" ", add_star?"*":"", pname);
eina_stringshare_del(ptype); eina_stringshare_del(ptype);
@ -159,15 +159,11 @@ eo_fundef_generate(const Eolian_Class *class, const Eolian_Function *func, Eolia
else else
eina_strbuf_replace_all(str_func, "@#retspace", ""); eina_strbuf_replace_all(str_func, "@#retspace", "");
eina_strbuf_replace_all(str_func, "@#list_param", eina_strbuf_string_get(str_par));
if (!eina_strbuf_length_get(str_par)) eina_strbuf_append(str_par, "void");
eina_strbuf_replace_all(str_func, "@#full_params", eina_strbuf_string_get(str_par)); eina_strbuf_replace_all(str_func, "@#full_params", eina_strbuf_string_get(str_par));
eina_strbuf_replace_all(str_func, "@#list_desc_param", eina_strbuf_string_get(str_pardesc));
if (rettype) eina_stringshare_del(rettype); if (rettype) eina_stringshare_del(rettype);
eina_strbuf_free(str_par); eina_strbuf_free(str_par);
eina_strbuf_free(str_pardesc);
eina_strbuf_append(functext, eina_strbuf_string_get(str_func)); eina_strbuf_append(functext, eina_strbuf_string_get(str_func));
eina_strbuf_free(str_func); eina_strbuf_free(str_func);
@ -515,9 +511,11 @@ eo_bind_func_generate(const Eolian_Class *class, const Eolian_Function *funcid,
Eina_Bool ret_is_void = (!rettype || !strcmp(rettype, "void")); Eina_Bool ret_is_void = (!rettype || !strcmp(rettype, "void"));
_class_func_env_create(class, eolian_function_name_get(funcid), ftype, &func_env); _class_func_env_create(class, eolian_function_name_get(funcid), ftype, &func_env);
eina_strbuf_append_printf(eo_func_decl, eina_strbuf_append_printf(eo_func_decl,
"EOAPI EO_%sFUNC_BODY%s(%s", "EOAPI EO_%sFUNC_BODY%s%s(%s",
ret_is_void?"VOID_":"", has_params?"V":"", ret_is_void?"VOID_":"", has_params?"V":"",
func_env.lower_eo_func); (ftype == EOLIAN_PROP_GET ||
eolian_function_object_is_const(funcid) ||
eolian_function_is_class(funcid))?"_CONST":"", func_env.lower_eo_func);
if (!ret_is_void) if (!ret_is_void)
{ {
const char *val_str = NULL; const char *val_str = NULL;

View File

@ -160,6 +160,8 @@ _prototype_generate(const Eolian_Function *foo, Eolian_Function_Type ftype, Eina
_params_generate(foo, ftype, var_as_ret, params, short_params); _params_generate(foo, ftype, var_as_ret, params, short_params);
if (eina_strbuf_length_get(params)) if (eina_strbuf_length_get(params))
eina_strbuf_prepend_printf(params, ", "); eina_strbuf_prepend_printf(params, ", ");
if (eina_strbuf_length_get(short_params))
eina_strbuf_prepend_printf(short_params, ", ");
fname = eolian_function_name_get(foo); fname = eolian_function_name_get(foo);
if (fname) if (fname)
@ -172,9 +174,9 @@ _prototype_generate(const Eolian_Function *foo, Eolian_Function_Type ftype, Eina
{ {
eina_strbuf_append_printf eina_strbuf_append_printf
(super_invok, (super_invok,
" eo_do_super(obj, %s_%s, %s_%s(%s));\n", " %s_%s(eo_super(obj, %s_%s)%s);\n",
class_env.upper_eo_prefix, class_env.upper_classtype,
impl_env.lower_eo_prefix, eolian_function_name_get(foo), impl_env.lower_eo_prefix, eolian_function_name_get(foo),
class_env.upper_eo_prefix, class_env.upper_classtype,
eina_strbuf_string_get(short_params)); eina_strbuf_string_get(short_params));
} }
} }

View File

@ -23,9 +23,7 @@ tmpl_eapi_body[] ="\
EAPI @#ret_type\n\ EAPI @#ret_type\n\
@#eapi_func(@#full_params)\n\ @#eapi_func(@#full_params)\n\
{\n\ {\n\
@#ret_type ret;\n\ return @#eo_func(@#eo_obj@#eo_params);\n\
eo_do(@#eo_obj, ret = @#eo_func(@#eo_params));\n\
return ret;\n\
}\n\ }\n\
"; ";
static const char static const char
@ -34,7 +32,7 @@ tmpl_eapi_body_void[] ="\
EAPI void\n\ EAPI void\n\
@#eapi_func(@#full_params)\n\ @#eapi_func(@#full_params)\n\
{\n\ {\n\
eo_do(@#eo_obj, @#eo_func(@#eo_params));\n\ @#eo_func(@#eo_obj@#eo_params);\n\
}\n\ }\n\
"; ";
@ -266,8 +264,7 @@ _eapi_func_generate(const Eolian_Class *class, const Eolian_Function *funcid, Eo
if (eina_strbuf_length_get(fparam)) eina_strbuf_append(fparam, ", "); if (eina_strbuf_length_get(fparam)) eina_strbuf_append(fparam, ", ");
eina_strbuf_append_printf(fparam, "%s %s", ptype, pname); eina_strbuf_append_printf(fparam, "%s %s", ptype, pname);
eina_stringshare_del(ptype); eina_stringshare_del(ptype);
if (eina_strbuf_length_get(eoparam)) eina_strbuf_append(eoparam, ", "); eina_strbuf_append_printf(eoparam, ", %s", pname);
eina_strbuf_append_printf(eoparam, "%s", pname);
} }
eina_iterator_free(itr); eina_iterator_free(itr);
if (!var_as_ret) if (!var_as_ret)
@ -286,8 +283,7 @@ _eapi_func_generate(const Eolian_Class *class, const Eolian_Function *funcid, Eo
eina_strbuf_append_printf(fparam, "%s%s%s%s", eina_strbuf_append_printf(fparam, "%s%s%s%s",
ptype, had_star?"":" ", add_star?"*":"", pname); ptype, had_star?"":" ", add_star?"*":"", pname);
eina_stringshare_del(ptype); eina_stringshare_del(ptype);
if (eina_strbuf_length_get(eoparam)) eina_strbuf_append(eoparam, ", "); eina_strbuf_append_printf(eoparam, ", %s", pname);
eina_strbuf_append_printf(eoparam, "%s", pname);
} }
eina_iterator_free(itr); eina_iterator_free(itr);
} }

View File

@ -25,7 +25,7 @@ int read_cb(void *data EINA_UNUSED, Eo *eo_obj, void *buf, int len)
float *val = buf; float *val = buf;
int i; int i;
eo_do(eo_obj, ecore_audio_obj_volume_get(&volume)); ecore_audio_obj_volume_get(eo_obj, &volume);
for(i=0; i<len/4; i++, phase1++) for(i=0; i<len/4; i++, phase1++)
{ {
@ -64,13 +64,13 @@ main(int argc, const char *argv[])
printf("error when creating ecore audio source.\n"); printf("error when creating ecore audio source.\n");
goto end; goto end;
} }
eo_do(in, ecore_audio_obj_name_set("wail")); ecore_audio_obj_name_set(in, "wail");
eo_do(in, ecore_audio_obj_in_samplerate_set(44100)); ecore_audio_obj_in_samplerate_set(in, 44100);
eo_do(in, ecore_audio_obj_in_channels_set(1)); ecore_audio_obj_in_channels_set(in, 1);
eo_do(in, ecore_audio_obj_volume_set(0.7)); ecore_audio_obj_volume_set(in, 0.7);
eo_do(in, ecore_audio_obj_vio_set(&vio, NULL, NULL)); ecore_audio_obj_vio_set(in, &vio, NULL, NULL);
eo_do(out, ret = ecore_audio_obj_out_input_attach(in)); ret = ecore_audio_obj_out_input_attach(out, in);
if (!ret) { if (!ret) {
printf("Could not attach input"); printf("Could not attach input");
goto end; goto end;

View File

@ -30,19 +30,19 @@ handle_cmd(char *cmd, size_t bread)
if (!out) if (!out)
return; return;
eo_do(out, ecore_audio_obj_out_inputs_get(&out_inputs)); ecore_audio_obj_out_inputs_get(out, &out_inputs);
EINA_LIST_FOREACH(out_inputs, input, in) EINA_LIST_FOREACH(out_inputs, input, in)
{ {
eo_do(in, ecore_audio_obj_in_seek(0, SEEK_CUR, &pos)); ecore_audio_obj_in_seek(in, 0, SEEK_CUR, &pos);
if (!strncmp(cmd, "<", bread)) if (!strncmp(cmd, "<", bread))
eo_do(in, ecore_audio_obj_in_seek(-10, SEEK_CUR, &pos)); ecore_audio_obj_in_seek(in, -10, SEEK_CUR, &pos);
else if (!strncmp(cmd, ">", bread)) else if (!strncmp(cmd, ">", bread))
eo_do(in, ecore_audio_obj_in_seek(10, SEEK_CUR, &pos)); ecore_audio_obj_in_seek(in, 10, SEEK_CUR, &pos);
min = pos / 60; min = pos / 60;
eo_do(in, ecore_audio_obj_name_get(&name)); ecore_audio_obj_name_get(in, &name);
eo_do(in, ecore_audio_obj_in_length_get(&length)); ecore_audio_obj_in_length_get(in, &length);
printf("Position: %2im %5.02fs (%0.2f%%) - %s\n", min, pos - min * 60, pos/length*100, name); printf("Position: %2im %5.02fs (%0.2f%%) - %s\n", min, pos - min * 60, pos/length*100, name);
} }
@ -53,7 +53,7 @@ handle_cmd(char *cmd, size_t bread)
else if (!strncmp(cmd, "n", bread)) else if (!strncmp(cmd, "n", bread))
{ {
in = eina_list_data_get(out_inputs); in = eina_list_data_get(out_inputs);
eo_do(out, ret = ecore_audio_obj_out_input_detach(in)); ret = ecore_audio_obj_out_input_detach(out, in);
if (!ret) if (!ret)
printf("Could not detach input\n"); printf("Could not detach input\n");
@ -63,11 +63,11 @@ handle_cmd(char *cmd, size_t bread)
{ {
in = (Eo *)eina_list_data_get(inputs); in = (Eo *)eina_list_data_get(inputs);
eo_do(in, ecore_audio_obj_name_get(&name), ecore_audio_obj_name_get(in, &name);
ecore_audio_obj_in_length_get(&length)); ecore_audio_obj_in_length_get(in, &length);
printf("Start: %s (%0.2fs)\n", name, length); printf("Start: %s (%0.2fs)\n", name, length);
eo_do(out, ret = ecore_audio_obj_out_input_attach(in)); ret = ecore_audio_obj_out_input_attach(out, in);
if (!ret) if (!ret)
printf("Could not attach input %s\n", name); printf("Could not attach input %s\n", name);
} }
@ -84,11 +84,11 @@ handle_cmd(char *cmd, size_t bread)
{ {
in = (Eo *)eina_list_data_get(inputs); in = (Eo *)eina_list_data_get(inputs);
eo_do(in, ecore_audio_obj_name_get(&name), ecore_audio_obj_name_get(in, &name);
ecore_audio_obj_in_length_get(&length)); ecore_audio_obj_in_length_get(in, &length);
printf("Start: %s (%0.2fs)\n", name, length); printf("Start: %s (%0.2fs)\n", name, length);
eo_do(out, ret = ecore_audio_obj_out_input_attach(in)); ret = ecore_audio_obj_out_input_attach(out, in);
if (!ret) if (!ret)
printf("Could not attach input %s\n", name); printf("Could not attach input %s\n", name);
} }
@ -98,25 +98,25 @@ handle_cmd(char *cmd, size_t bread)
EINA_LIST_FOREACH(out_inputs, input, in) EINA_LIST_FOREACH(out_inputs, input, in)
{ {
Eina_Bool loop; Eina_Bool loop;
eo_do(in, ecore_audio_obj_in_looped_get(&loop), ecore_audio_obj_in_looped_get(in, &loop);
ecore_audio_obj_name_get(&name)); ecore_audio_obj_name_get(in, &name);
printf("%s song %s\n", !loop?"Looping":"Not looping", name); printf("%s song %s\n", !loop?"Looping":"Not looping", name);
eo_do(in, ecore_audio_obj_in_looped_set(!loop)); ecore_audio_obj_in_looped_set(in, !loop);
} }
} }
else if (!strncmp(cmd, "+", bread)) else if (!strncmp(cmd, "+", bread))
{ {
if (volume < 1.5) if (volume < 1.5)
volume += 0.01; volume += 0.01;
eo_do(out, ecore_audio_obj_volume_set(volume)); ecore_audio_obj_volume_set(out, volume);
printf("Volume: %3.0f%%\n", volume * 100); printf("Volume: %3.0f%%\n", volume * 100);
} }
else if (!strncmp(cmd, "-", bread)) else if (!strncmp(cmd, "-", bread))
{ {
if (volume > 0) if (volume > 0)
volume -= 0.01; volume -= 0.01;
eo_do(out, ecore_audio_obj_volume_set(volume)); ecore_audio_obj_volume_set(out, volume);
printf("Volume: %3.0f%%\n", volume * 100); printf("Volume: %3.0f%%\n", volume * 100);
} }
else if (!strncmp(cmd, "*", bread)) else if (!strncmp(cmd, "*", bread))
@ -124,11 +124,11 @@ handle_cmd(char *cmd, size_t bread)
double speed; double speed;
EINA_LIST_FOREACH(out_inputs, input, in) EINA_LIST_FOREACH(out_inputs, input, in)
{ {
eo_do(in, ecore_audio_obj_in_speed_get(&speed)); ecore_audio_obj_in_speed_get(in, &speed);
if (speed < 2.0) if (speed < 2.0)
speed += 0.01; speed += 0.01;
eo_do(in, ecore_audio_obj_in_speed_set(speed), ecore_audio_obj_in_speed_set(in, speed);
ecore_audio_obj_name_get(&name)); ecore_audio_obj_name_get(in, &name);
printf("Speed: %3.0f%% (%s)\n", speed * 100, name); printf("Speed: %3.0f%% (%s)\n", speed * 100, name);
} }
} }
@ -137,11 +137,11 @@ handle_cmd(char *cmd, size_t bread)
double speed; double speed;
EINA_LIST_FOREACH(out_inputs, input, in) EINA_LIST_FOREACH(out_inputs, input, in)
{ {
eo_do(in, ecore_audio_obj_in_speed_get(&speed)); ecore_audio_obj_in_speed_get(in, &speed);
if (speed > 0.5) if (speed > 0.5)
speed -= 0.01; speed -= 0.01;
eo_do(in, ecore_audio_obj_in_speed_set(speed), ecore_audio_obj_in_speed_set(in, speed);
ecore_audio_obj_name_get(&name)); ecore_audio_obj_name_get(in, &name);
printf("Speed: %3.0f%% (%s)\n", speed * 100, name); printf("Speed: %3.0f%% (%s)\n", speed * 100, name);
} }
} }
@ -149,11 +149,11 @@ handle_cmd(char *cmd, size_t bread)
{ {
EINA_LIST_FOREACH(out_inputs, input, in) EINA_LIST_FOREACH(out_inputs, input, in)
{ {
eo_do(in, ecore_audio_obj_paused_get(&paused), ecore_audio_obj_paused_get(in, &paused);
ecore_audio_obj_name_get(&name), ecore_audio_obj_name_get(in, &name);
ecore_audio_obj_in_remaining_get(&length)); ecore_audio_obj_in_remaining_get(in, &length);
printf("%s %s\n%0.2f remaining\n", !paused ? "Paused" : "Unpaused", name, length); printf("%s %s\n%0.2f remaining\n", !paused ? "Paused" : "Unpaused", name, length);
eo_do(in, ecore_audio_obj_paused_set(!paused)); ecore_audio_obj_paused_set(in, !paused);
} }
} }
else if (!strncmp(cmd, "q", bread)) else if (!strncmp(cmd, "q", bread))
@ -196,11 +196,11 @@ static Eina_Bool _play_finished(void *data EINA_UNUSED, const Eo_Event *event)
const char *name; const char *name;
Eina_Bool ret; Eina_Bool ret;
eo_do(event->obj, ecore_audio_obj_name_get(&name)); ecore_audio_obj_name_get(event->obj, &name);
printf("Done: %s\n", name); printf("Done: %s\n", name);
inputs = eina_list_remove(inputs, event->obj); inputs = eina_list_remove(inputs, event->obj);
eo_do(out, ret = ecore_audio_obj_out_input_detach(event->obj)); ret = ecore_audio_obj_out_input_detach(out, event->obj);
eo_del(event->obj); eo_del(event->obj);
if (!ret) if (!ret)
@ -212,9 +212,9 @@ static Eina_Bool _play_finished(void *data EINA_UNUSED, const Eo_Event *event)
const char *name; const char *name;
Eo *in = (Eo *)eina_list_data_get(inputs); Eo *in = (Eo *)eina_list_data_get(inputs);
eo_do(in, ecore_audio_obj_name_get(&name)); ecore_audio_obj_name_get(in, &name);
printf("Start: %s\n", name); printf("Start: %s\n", name);
eo_do(out, ret = ecore_audio_obj_out_input_attach(in)); ret = ecore_audio_obj_out_input_attach(out, in);
if (!ret) if (!ret)
printf("Could not attach input %s\n", name); printf("Could not attach input %s\n", name);
} }
@ -266,13 +266,13 @@ main(int argc, const char *argv[])
{ {
if (!strncmp(val, "freq=", 5)) { if (!strncmp(val, "freq=", 5)) {
freq = atoi(&val[5]); freq = atoi(&val[5]);
eo_do(in, eo_key_data_set(ECORE_AUDIO_ATTR_TONE_FREQ, &freq)); eo_key_data_set(in, ECORE_AUDIO_ATTR_TONE_FREQ, &freq);
} else if (!strncmp(val, "duration=", 9)) { } else if (!strncmp(val, "duration=", 9)) {
eo_do(in, ecore_audio_obj_in_length_set(atof(&val[9]))); ecore_audio_obj_in_length_set(in, atof(&val[9]));
} }
} }
free(tmp); free(tmp);
eo_do(in, ecore_audio_obj_name_set(argv[i])); ecore_audio_obj_name_set(in, argv[i]);
} }
else else
{ {
@ -283,15 +283,15 @@ main(int argc, const char *argv[])
goto end; goto end;
} }
tmp = strdup(argv[i]); tmp = strdup(argv[i]);
eo_do(in, ecore_audio_obj_name_set(basename(tmp))); ecore_audio_obj_name_set(in, basename(tmp));
free(tmp); free(tmp);
eo_do(in, ret = ecore_audio_obj_source_set(argv[i])); ret = ecore_audio_obj_source_set(in, argv[i]);
if (!ret) { if (!ret) {
printf("Could not set %s as input\n", argv[i]); printf("Could not set %s as input\n", argv[i]);
continue; continue;
} }
} }
eo_do(in, eo_event_callback_add(ECORE_AUDIO_EV_IN_STOPPED, _play_finished, NULL)); eo_event_callback_add(in, ECORE_AUDIO_EV_IN_STOPPED, _play_finished, NULL);
inputs = eina_list_append(inputs, in); inputs = eina_list_append(inputs, in);
} }
@ -302,13 +302,13 @@ main(int argc, const char *argv[])
if (!in) if (!in)
return 1; return 1;
eo_do(in, ecore_audio_obj_name_get(&name), ecore_audio_obj_name_get(in, &name);
ecore_audio_obj_in_length_get(&length)); ecore_audio_obj_in_length_get(in, &length);
printf("Start: %s (%0.2fs)\n", name, length); printf("Start: %s (%0.2fs)\n", name, length);
out = eo_add(ECORE_AUDIO_OBJ_OUT_PULSE_CLASS, NULL); out = eo_add(ECORE_AUDIO_OBJ_OUT_PULSE_CLASS, NULL);
eo_do(out, ret = ecore_audio_obj_out_input_attach(in)); ret = ecore_audio_obj_out_input_attach(out, in);
if (!ret) if (!ret)
printf("Could not attach input %s\n", name); printf("Could not attach input %s\n", name);

View File

@ -20,10 +20,10 @@ static Eina_Bool _play_finished(void *data EINA_UNUSED, const Eo_Event *event)
const char *name; const char *name;
Eo *out; Eo *out;
eo_do(event->obj, ecore_audio_obj_name_get(&name)); ecore_audio_obj_name_get(event->obj, &name);
printf("Done: %s\n", name); printf("Done: %s\n", name);
eo_do(event->obj, ecore_audio_obj_in_output_get(&out)); ecore_audio_obj_in_output_get(event->obj, &out);
eo_del(event->obj); eo_del(event->obj);
eo_del(out); eo_del(out);
@ -50,18 +50,18 @@ main(int argc, char *argv[])
in = eo_add(ECORE_AUDIO_OBJ_IN_SNDFILE_CLASS, NULL); in = eo_add(ECORE_AUDIO_OBJ_IN_SNDFILE_CLASS, NULL);
eo_do(in, ecore_audio_obj_name_set(basename(argv[1]))); ecore_audio_obj_name_set(in, basename(argv[1]));
eo_do(in, ret = ecore_audio_obj_source_set(argv[1])); ret = ecore_audio_obj_source_set(in, argv[1]);
if (!ret) { if (!ret) {
printf("Could not set %s as input\n", argv[1]); printf("Could not set %s as input\n", argv[1]);
eo_del(in); eo_del(in);
return 1; return 1;
} }
eo_do(in, eo_event_callback_add(ECORE_AUDIO_EV_IN_STOPPED, _play_finished, NULL)); eo_event_callback_add(in, ECORE_AUDIO_EV_IN_STOPPED, _play_finished, NULL);
out = eo_add(ECORE_AUDIO_OBJ_OUT_SNDFILE_CLASS, NULL); out = eo_add(ECORE_AUDIO_OBJ_OUT_SNDFILE_CLASS, NULL);
eo_do(out, ret = ecore_audio_obj_source_set(argv[2])); ret = ecore_audio_obj_source_set(out, argv[2]);
if (!ret) { if (!ret) {
printf("Could not set %s as output\n", argv[2]); printf("Could not set %s as output\n", argv[2]);
eo_del(in); eo_del(in);
@ -69,7 +69,7 @@ main(int argc, char *argv[])
return 1; return 1;
} }
eo_do(out, ret = ecore_audio_obj_out_input_attach(in)); ret = ecore_audio_obj_out_input_attach(out, in);
if (!ret) { if (!ret) {
printf("Could not attach input\n"); printf("Could not attach input\n");
eo_del(out); eo_del(out);

View File

@ -110,7 +110,7 @@ main(void)
ctxt.enterer = ecore_idle_enterer_add(_enterer_cb, &ctxt); ctxt.enterer = ecore_idle_enterer_add(_enterer_cb, &ctxt);
ctxt.exiter = ecore_idle_exiter_add(_exiter_cb, &ctxt); ctxt.exiter = ecore_idle_exiter_add(_exiter_cb, &ctxt);
ctxt.idler = ecore_idler_add(_idler_cb, &ctxt); ctxt.idler = ecore_idler_add(_idler_cb, &ctxt);
// ctxt.idler = eo_add(ECORE_IDLER_CLASS, NULL, ecore_idler_constructor(_idler_cb, &ctxt)); // ctxt.idler = eo_add(ECORE_IDLER_CLASS, NULL, ecore_idler_constructor(eoid, _idler_cb, &ctxt));
ctxt.handler = ecore_event_handler_add(_event_type, ctxt.handler = ecore_event_handler_add(_event_type,
_event_handler_cb, _event_handler_cb,
&ctxt); &ctxt);

View File

@ -48,12 +48,9 @@ main(void)
poller2 = ecore_poller_add(ECORE_POLLER_CORE, 8, _poller_print_cb, str2); poller2 = ecore_poller_add(ECORE_POLLER_CORE, 8, _poller_print_cb, str2);
poller3 = ecore_poller_add(ECORE_POLLER_CORE, 30, _poller_quit_cb, str3); poller3 = ecore_poller_add(ECORE_POLLER_CORE, 30, _poller_quit_cb, str3);
// poller1 = eo_add(ECORE_POLLER_CLASS, NULL, // poller1 = eo_add(ECORE_POLLER_CLASS, NULL, // ecore_poller_constructor(eoid, ECORE_POLLER_CORE, 4, _poller_print_cb, str1));
// ecore_poller_constructor(ECORE_POLLER_CORE, 4, _poller_print_cb, str1)); // poller2 = eo_add(ECORE_POLLER_CLASS, NULL, // ecore_poller_constructor(eoid, ECORE_POLLER_CORE, 8, _poller_print_cb, str2));
// poller2 = eo_add(ECORE_POLLER_CLASS, NULL, // poller3 = eo_add(ECORE_POLLER_CLASS, NULL, // ecore_poller_constructor(eoid, ECORE_POLLER_CORE, 20, _poller_quit_cb, str3));
// ecore_poller_constructor(ECORE_POLLER_CORE, 8, _poller_print_cb, str2));
// poller3 = eo_add(ECORE_POLLER_CLASS, NULL,
// ecore_poller_constructor(ECORE_POLLER_CORE, 20, _poller_quit_cb, str3));
ecore_main_loop_begin(); ecore_main_loop_begin();
@ -61,7 +58,7 @@ main(void)
printf("changing poller2 interval to 16\n"); printf("changing poller2 interval to 16\n");
ecore_poller_poller_interval_set(poller2, 16); ecore_poller_poller_interval_set(poller2, 16);
// eo_do(poller2, ecore_poller_interval_set(16, NULL)); // ecore_poller_interval_set(poller2, 16, NULL);
ecore_main_loop_begin(); ecore_main_loop_begin();
// eo_unref(poller1); // eo_unref(poller1);

View File

@ -55,7 +55,7 @@ _on_mouse_down(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *o EINA_
fprintf(stderr, "Setting lang of this edje object to '%s'\n", lang[lang_idx]); fprintf(stderr, "Setting lang of this edje object to '%s'\n", lang[lang_idx]);
env = getenv("LANGUAGE"); env = getenv("LANGUAGE");
setenv("LANGUAGE", lang[lang_idx], 1); setenv("LANGUAGE", lang[lang_idx], 1);
eo_do(o, edje_obj_language_set(lang[lang_idx])); edje_obj_language_set(o, lang[lang_idx]);
setenv("LANGUAGE", env, 1); setenv("LANGUAGE", env, 1);
} }
@ -108,7 +108,7 @@ main(int argc EINA_UNUSED, char *argv[] EINA_UNUSED)
evas_object_resize(edje_obj, WIDTH - 40, HEIGHT - 40); evas_object_resize(edje_obj, WIDTH - 40, HEIGHT - 40);
evas_object_show(edje_obj); evas_object_show(edje_obj);
setenv("LANGUAGE", "en_IN", 1); setenv("LANGUAGE", "en_IN", 1);
eo_do(edje_obj, edje_obj_language_set("en_IN")); edje_obj_language_set(edje_obj, "en_IN");
edje_object_text_change_cb_set(edje_obj, _on_text_change, NULL); edje_object_text_change_cb_set(edje_obj, _on_text_change, NULL);
edje_object_part_text_set(edje_obj, "part_two", "<b>Click here"); edje_object_part_text_set(edje_obj, "part_two", "<b>Click here");
edje_object_part_text_select_allow_set(edje_obj, "part_two", EINA_TRUE); edje_object_part_text_select_allow_set(edje_obj, "part_two", EINA_TRUE);
@ -123,7 +123,7 @@ main(int argc EINA_UNUSED, char *argv[] EINA_UNUSED)
evas_object_move(edje_obj_one, 0, 50); evas_object_move(edje_obj_one, 0, 50);
evas_object_resize(edje_obj_one, WIDTH - 40, HEIGHT - 40); evas_object_resize(edje_obj_one, WIDTH - 40, HEIGHT - 40);
evas_object_show(edje_obj_one); evas_object_show(edje_obj_one);
eo_do(edje_obj_one, edje_obj_language_set("en_IN")); edje_obj_language_set(edje_obj_one, "en_IN");
edje_object_text_change_cb_set(edje_obj_one, _on_text_change, NULL); edje_object_text_change_cb_set(edje_obj_one, _on_text_change, NULL);
edje_object_part_text_set(edje_obj_one, "part_two", "<b>Click here"); edje_object_part_text_set(edje_obj_one, "part_two", "<b>Click here");
edje_object_part_text_select_allow_set(edje_obj_one, "part_two", EINA_TRUE); edje_object_part_text_select_allow_set(edje_obj_one, "part_two", EINA_TRUE);

View File

@ -29,9 +29,8 @@ _event_interface_load_status_cb(void *data EINA_UNUSED, Eo *model,
if (EFL_MODEL_LOAD_STATUS_LOADED != actual_load->status) if (EFL_MODEL_LOAD_STATUS_LOADED != actual_load->status)
return EINA_TRUE; return EINA_TRUE;
eo_do(model, name = eldbus_model_proxy_name_get(model);
name = eldbus_model_proxy_name_get(), efl_model_properties_get(model, &properties_list);
efl_model_properties_get(&properties_list));
printf(" -> %s\n", name); printf(" -> %s\n", name);
if (eina_array_count(properties_list)) if (eina_array_count(properties_list))
@ -39,7 +38,7 @@ _event_interface_load_status_cb(void *data EINA_UNUSED, Eo *model,
EINA_ARRAY_ITER_NEXT(properties_list, i, property, iterator) EINA_ARRAY_ITER_NEXT(properties_list, i, property, iterator)
{ {
eo_do(model, efl_model_property_get(property, &property_value)); efl_model_property_get(model, property, &property_value);
if (property_value) if (property_value)
{ {
prop_str = eina_value_to_string(property_value); prop_str = eina_value_to_string(property_value);
@ -70,7 +69,7 @@ _event_load_status_cb(void *data EINA_UNUSED, Eo *model,
if (EFL_MODEL_LOAD_STATUS_LOADED != actual_load->status) if (EFL_MODEL_LOAD_STATUS_LOADED != actual_load->status)
return EINA_TRUE; return EINA_TRUE;
eo_do(model, efl_model_children_count_get(&children_count)); efl_model_children_count_get(model, &children_count);
if (children_count == 0) if (children_count == 0)
{ {
printf("Don't find Interfaces\n"); printf("Don't find Interfaces\n");
@ -78,12 +77,12 @@ _event_load_status_cb(void *data EINA_UNUSED, Eo *model,
return EINA_FALSE; return EINA_FALSE;
} }
eo_do(model, efl_model_children_slice_get(0, 0, &accessor)); efl_model_children_slice_get(model, 0, 0, &accessor);
printf("\nInterfaces:\n"); printf("\nInterfaces:\n");
EINA_ACCESSOR_FOREACH(accessor, i, child) EINA_ACCESSOR_FOREACH(accessor, i, child)
{ {
eo_do(child, eo_event_callback_add(EFL_MODEL_BASE_EVENT_LOAD_STATUS, _event_interface_load_status_cb, NULL)); eo_event_callback_add(child, EFL_MODEL_BASE_EVENT_LOAD_STATUS, _event_interface_load_status_cb, NULL);
eo_do(child, efl_model_load()); efl_model_load(child);
} }
return EINA_FALSE; return EINA_FALSE;
@ -103,17 +102,14 @@ main(int argc, char **argv EINA_UNUSED)
if (argc > 1) bus = argv[1]; if (argc > 1) bus = argv[1];
if (argc > 2) path = argv[2]; if (argc > 2) path = argv[2];
root = eo_add_ref(ELDBUS_MODEL_OBJECT_CLASS, NULL, root = eo_add_ref(ELDBUS_MODEL_OBJECT_CLASS, NULL, eldbus_model_object_constructor(eoid, ELDBUS_CONNECTION_TYPE_SESSION, NULL, EINA_FALSE, bus, path));
eldbus_model_object_constructor(ELDBUS_CONNECTION_TYPE_SESSION,
NULL, EINA_FALSE, bus, path));
eo_do(root, eo_event_callback_add(root, EFL_MODEL_BASE_EVENT_LOAD_STATUS, _event_load_status_cb, NULL);
eo_event_callback_add(EFL_MODEL_BASE_EVENT_LOAD_STATUS, _event_load_status_cb, NULL), efl_model_load(root);
efl_model_load());
ecore_main_loop_begin(); ecore_main_loop_begin();
eo_do(root, eo_event_callback_del(EFL_MODEL_BASE_EVENT_LOAD_STATUS, _event_load_status_cb, NULL)); eo_event_callback_del(root, EFL_MODEL_BASE_EVENT_LOAD_STATUS, _event_load_status_cb, NULL);
eo_unref(root); eo_unref(root);
} }

View File

@ -65,8 +65,8 @@ main(int argc, const char *argv[])
em = emotion_object_add(e); em = emotion_object_add(e);
emotion_object_init(em, NULL); emotion_object_init(em, NULL);
eo_do(em, eo_event_callback_add eo_event_callback_add
(EMOTION_OBJECT_EVENT_PLAYBACK_STARTED, _playback_started_cb, NULL)); (em, EMOTION_OBJECT_EVENT_PLAYBACK_STARTED, _playback_started_cb, NULL);
emotion_object_file_set(em, filename); emotion_object_file_set(em, filename);

View File

@ -33,8 +33,7 @@ _create_emotion_object(Evas *e)
emotion_object_init(em, "gstreamer1"); emotion_object_init(em, "gstreamer1");
eo_do(em, eo_event_callback_add( eo_event_callback_add(em, EMOTION_OBJECT_EVENT_PLAYBACK_STARTED, _playback_started_cb, NULL);
EMOTION_OBJECT_EVENT_PLAYBACK_STARTED, _playback_started_cb, NULL));
return em; return em;
} }
@ -241,7 +240,7 @@ main(int argc, const char *argv[])
ecore_evas_data_set(ee, "emotion", em); ecore_evas_data_set(ee, "emotion", em);
eo_do(em, eo_event_callback_array_add(emotion_object_example_callbacks, NULL)); eo_event_callback_array_add(em, emotion_object_example_callbacks, NULL);
evas_object_event_callback_add(bg, EVAS_CALLBACK_KEY_DOWN, _on_key_down, em); evas_object_event_callback_add(bg, EVAS_CALLBACK_KEY_DOWN, _on_key_down, em);
evas_object_focus_set(bg, EINA_TRUE); evas_object_focus_set(bg, EINA_TRUE);

View File

@ -45,10 +45,10 @@ _create_emotion_object(Evas *e)
emotion_object_init(em, "generic"); emotion_object_init(em, "generic");
eo_do(em, eo_event_callback_add eo_event_callback_add
(EMOTION_OBJECT_EVENT_PLAYBACK_STARTED, _playback_started_cb, NULL)); (em, EMOTION_OBJECT_EVENT_PLAYBACK_STARTED, _playback_started_cb, NULL);
eo_do(em, eo_event_callback_add eo_event_callback_add
(EMOTION_OBJECT_EVENT_PLAYBACK_FINISHED, _playback_stopped_cb, NULL)); (em, EMOTION_OBJECT_EVENT_PLAYBACK_FINISHED, _playback_stopped_cb, NULL);
return em; return em;
} }
@ -227,7 +227,7 @@ main(int argc, const char *argv[])
evas_object_resize(em, WIDTH, HEIGHT); evas_object_resize(em, WIDTH, HEIGHT);
evas_object_show(em); evas_object_show(em);
eo_do(em, eo_event_callback_array_add(emotion_object_example_callbacks, NULL)); eo_event_callback_array_add(em, emotion_object_example_callbacks, NULL);
evas_object_event_callback_add(bg, EVAS_CALLBACK_KEY_DOWN, _on_key_down, em); evas_object_event_callback_add(bg, EVAS_CALLBACK_KEY_DOWN, _on_key_down, em);
evas_object_focus_set(bg, EINA_TRUE); evas_object_focus_set(bg, EINA_TRUE);

View File

@ -80,8 +80,8 @@ main(int argc, const char *argv[])
if (subtitle_filename) if (subtitle_filename)
emotion_object_video_subtitle_file_set(em, subtitle_filename); emotion_object_video_subtitle_file_set(em, subtitle_filename);
eo_do(em, eo_event_callback_add eo_event_callback_add
(EMOTION_OBJECT_EVENT_PLAYBACK_STARTED, _playback_started_cb, NULL)); (em, EMOTION_OBJECT_EVENT_PLAYBACK_STARTED, _playback_started_cb, NULL);
emotion_object_file_set(em, filename); emotion_object_file_set(em, filename);

View File

@ -68,8 +68,7 @@ _position_update_cb(void *data EINA_UNUSED,
Eo *o, const Eo_Event_Description *desc EINA_UNUSED, void *event_info EINA_UNUSED) Eo *o, const Eo_Event_Description *desc EINA_UNUSED, void *event_info EINA_UNUSED)
{ {
printf(">>> Emotion object first position update.\n"); printf(">>> Emotion object first position update.\n");
eo_do(o, eo_event_callback_del(EMOTION_OBJECT_EVENT_POSITION_UPDATE, eo_event_callback_del(o, EMOTION_OBJECT_EVENT_POSITION_UPDATE, _position_update_cb, NULL);
_position_update_cb, NULL));
_display_info(o); _display_info(o);
return EINA_TRUE; return EINA_TRUE;
@ -80,8 +79,7 @@ _frame_decode_cb(void *data EINA_UNUSED,
Eo *o, const Eo_Event_Description *desc EINA_UNUSED, void *event_info EINA_UNUSED) Eo *o, const Eo_Event_Description *desc EINA_UNUSED, void *event_info EINA_UNUSED)
{ {
printf(">>> Emotion object first frame decode.\n"); printf(">>> Emotion object first frame decode.\n");
eo_do(o, eo_event_callback_del(EMOTION_OBJECT_EVENT_FRAME_DECODE, eo_event_callback_del(o, EMOTION_OBJECT_EVENT_FRAME_DECODE, _frame_decode_cb, NULL);
_frame_decode_cb, NULL));
_display_info(o); _display_info(o);
return EINA_TRUE; return EINA_TRUE;
@ -121,8 +119,8 @@ static const Eo_Callback_Array_Item emotion_object_example_callbacks[] = {
static void static void
_setup_emotion_callbacks(Evas_Object *o) _setup_emotion_callbacks(Evas_Object *o)
{ {
eo_do(o, eo_event_callback_add eo_event_callback_add
(EMOTION_OBJECT_EVENT_PLAYBACK_STARTED, _playback_started_cb, NULL)); (o, EMOTION_OBJECT_EVENT_PLAYBACK_STARTED, _playback_started_cb, NULL);
} }
int int

View File

@ -1,2 +0,0 @@
/eo_isa
/eo_simple

View File

@ -1,103 +0,0 @@
MAINTAINERCLEANFILES = Makefile.in
AM_CPPFLAGS = \
-I$(top_builddir)/src/lib/efl \
-I. \
-I$(top_srcdir)/src/lib/eina \
-I$(top_srcdir)/src/lib/eo \
-I$(top_builddir)/src/lib/eina \
-I$(top_builddir)/src/lib/eo \
@EO_CFLAGS@
EXTRA_PROGRAMS = eo_isa eo_simple
if EO_BUILD_EXAMPLE_EVAS
EXTRA_PROGRAMS += eo_evas
endif
eo_isa_SOURCES = \
isa/eo_isa_complex.c \
isa/eo_isa_complex.h \
isa/eo_isa_interface.c \
isa/eo_isa_interface.h \
isa/eo_isa_main.c \
isa/eo_isa_mixin.c \
isa/eo_isa_mixin.h \
isa/eo_isa_simple.c \
isa/eo_isa_simple.h
eo_isa_LDADD = $(top_builddir)/src/lib/eo/libeo.la $(top_builddir)/src/lib/eina/libeina.la @EO_LDFLAGS@ @EFL_PTHREAD_LIBS@
if EO_BUILD_EXAMPLE_EVAS
AM_CPPFLAGS += @ELM_CFLAGS@
eo_evas_SOURCES = \
evas/evas_elw_box.c \
evas/evas_elw_box.h \
evas/evas_elw_boxedbutton.c \
evas/evas_elw_boxedbutton.h \
evas/evas_elw_button.c \
evas/evas_elw_button.h \
evas/evas_elw_win.h \
evas/evas_elw_win.c \
evas/evas_evas_obj.c \
evas/evas_evas_obj.h \
evas/evas_test.c
eo_evas_LDADD = $(top_builddir)/src/lib/eo/libeo.la @ELM_LIBS@ @EO_LDFLAGS@ @EFL_PTHREAD_LIBS@
endif
eo_simple_SOURCES = \
simple/simple_interface.c \
simple/simple_interface.h \
simple/simple_main.c \
simple/simple_mixin.c \
simple/simple_mixin.h \
simple/simple_simple.c \
simple/simple_simple.h
eo_simple_LDADD = $(top_builddir)/src/lib/eo/libeo.la $(top_builddir)/src/lib/eina/libeina.la @EO_LDFLAGS@ @EFL_PTHREAD_LIBS@
DATA_FILES = Makefile.examples
EXTRA_DIST = $(DATA_FILES)
examples: $(EXTRA_PROGRAMS)
clean-local:
rm -f $(EXTRA_PROGRAMS)
install-examples:
$(MKDIR_P) $(datadir)/eo/examples
$(MKDIR_P) $(datadir)/eo/examples/isa
$(MKDIR_P) $(datadir)/eo/examples/simple
cd $(srcdir); \
$(install_sh_DATA) -c $(DATA_FILES) $(datadir)/eo/examples; \
$(install_sh_DATA) -c $(eo_isa_SOURCES) $(datadir)/eo/examples/isa; \
$(install_sh_DATA) -c $(eo_simple_SOURCES) $(datadir)/eo/examples/simple;
if EO_BUILD_EXAMPLE_EVAS
$(MKDIR_P) $(datadir)/eo/examples/evas
cd $(srcdir) && $(install_sh_DATA) -c $(eo_evas_SOURCES) $(datadir)/eo/examples/evas
endif
uninstall-local:
for f in $(DATA_FILES) ; do \
rm -f $(datadir)/eo/examples/$$f ; \
done
for f in $(eo_isa_SOURCES) ; do \
rm -f $(datadir)/eo/examples/isa/$$f ; \
done
for f in $(eo_simple_SOURCES) ; do \
rm -f $(datadir)/eo/examples/simple/$$f ; \
done
for f in $(eo_evas_SOURCES) ; do \
rm -f $(datadir)/eo/examples/evas/$$f ; \
done
if ALWAYS_BUILD_EXAMPLES
noinst_PROGRAMS = $(EXTRA_PROGRAMS)
endif

View File

@ -1,42 +0,0 @@
CC=gcc
COMMON_FLAGS=`pkg-config --libs --cflags eo`
EXTRA_FLAGS=`pkg-config --libs --cflags evas,elementary`
SIMPLE= simple/simple_main.c \
simple/simple_interface.c \
simple/simple_mixin.c \
simple/simple_simple.c
ISA= isa/eo_isa_main.c \
isa/eo_isa_complex.c \
isa/eo_isa_interface.c \
isa/eo_isa_simple.c \
isa/eo_isa_mixin.c
EVAS= evas/evas_test.c \
evas/evas_elw_box.c \
evas/evas_elw_boxedbutton.c \
evas/evas_elw_button.c \
evas/evas_elw_win.c \
evas/evas_evas_obj.c
EXAMPLES= eo_simple \
eo_isa
all: examples
examples: $(EXAMPLES)
@echo "To build optional evas examples, run: make Makefile.examples eo_evas"
eo_simple:
$(CC) -o $@ $(SIMPLE) $(COMMON_FLAGS)
eo_isa:
$(CC) -o $@ $(ISA) $(COMMON_FLAGS)
eo_evas:
$(CC) -o $@ $(EVAS) $(COMMON_FLAGS) $(EXTRA_FLAGS)
clean:
@echo "Cleaning up built objects..."
@rm -Rf $(EXAMPLES) eo_evas

View File

@ -1,74 +0,0 @@
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include <Elementary.h>
#include "Eo.h"
#include "evas_evas_obj.h"
#include "evas_elw_box.h"
EAPI Eo_Op ELW_BOX_BASE_ID = 0;
typedef struct
{
Evas_Object *bx;
} Widget_Data;
#define MY_CLASS ELW_BOX_CLASS
static void
_pack_end(Eo *obj EINA_UNUSED, void *class_data, va_list *list)
{
Widget_Data *wd = class_data;
Eo *child_obj;
child_obj = va_arg(*list, Eo *);
/* FIXME: Ref and the later uref child_obj here... */
elm_box_pack_end(wd->bx, eo_evas_object_get(child_obj));
}
static void
_constructor(Eo *obj, void *class_data, va_list *list EINA_UNUSED)
{
eo_do_super(obj, MY_CLASS, eo_constructor());
Widget_Data *wd = class_data;
/* FIXME: An hack, because our tree is not yet only Eo */
wd->bx = elm_box_add(eo_evas_object_get(eo_parent_get(obj)));
evas_object_size_hint_align_set(wd->bx, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(wd->bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
eo_evas_object_set(obj, wd->bx);
}
static void
_class_constructor(Eo_Class *klass)
{
const Eo_Op_Func_Description func_desc[] = {
EO_OP_FUNC(EO_BASE_ID(EO_BASE_SUB_ID_CONSTRUCTOR), _constructor),
EO_OP_FUNC(ELW_BOX_ID(ELW_BOX_SUB_ID_PACK_END), _pack_end),
EO_OP_FUNC_SENTINEL
};
eo_class_funcs_set(klass, func_desc);
}
static const Eo_Op_Description op_desc[] = {
EO_OP_DESCRIPTION(ELW_BOX_SUB_ID_PACK_END, "Pack obj at the end of box."),
EO_OP_DESCRIPTION_SENTINEL
};
static const Eo_Class_Description class_desc = {
EO_VERSION,
"Elw Box",
EO_CLASS_TYPE_REGULAR,
EO_CLASS_DESCRIPTION_OPS(&ELW_BOX_BASE_ID, op_desc, ELW_BOX_SUB_ID_LAST),
NULL,
sizeof(Widget_Data),
_class_constructor,
NULL
};
EO_DEFINE_CLASS(elw_box_class_get, &class_desc, EXEVAS_OBJ_CLASS, NULL)

View File

@ -1,25 +0,0 @@
#ifndef ELW_BOX_H
#define ELW_BOX_H
#include "Eo.h"
extern EAPI Eo_Op ELW_BOX_BASE_ID;
enum {
ELW_BOX_SUB_ID_PACK_END,
ELW_BOX_SUB_ID_LAST
};
#define ELW_BOX_ID(sub_id) (ELW_BOX_BASE_ID + sub_id)
/**
* @def elw_box_pack_end(obj)
* @brief Pack object to the end of the box
* @param[in] obj object to pack into box
*/
#define elw_box_pack_end(obj) ELW_BOX_ID(ELW_BOX_SUB_ID_PACK_END), EO_TYPECHECK(Eo *, obj)
#define ELW_BOX_CLASS elw_box_class_get()
const Eo_Class *elw_box_class_get(void);
#endif

View File

@ -1,57 +0,0 @@
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include <Elementary.h>
#include "Eo.h"
#include "evas_evas_obj.h"
#include "evas_elw_box.h"
#include "evas_elw_button.h"
#include "evas_elw_boxedbutton.h"
typedef struct
{
// Evas_Object *bx;
} Widget_Data;
#define MY_CLASS ELW_BOXEDBUTTON_CLASS
static void
_constructor(Eo *obj, void *class_data EINA_UNUSED, va_list *list EINA_UNUSED)
{
eo_do_super(obj, MY_CLASS, eo_constructor());
Eo *bt = eo_add(ELW_BUTTON_CLASS, obj);
eo_do(obj, eo_composite_attach(bt));
eo_do(bt, eo_event_callback_forwarder_add(EV_CLICKED, obj));
eo_do(bt, exevas_obj_visibility_set(EINA_TRUE));
eo_do(obj, elw_box_pack_end(bt));
eo_unref(bt);
}
static void
_class_constructor(Eo_Class *klass)
{
const Eo_Op_Func_Description func_desc[] = {
EO_OP_FUNC(EO_BASE_ID(EO_BASE_SUB_ID_CONSTRUCTOR), _constructor),
EO_OP_FUNC_SENTINEL
};
eo_class_funcs_set(klass, func_desc);
}
static const Eo_Class_Description class_desc = {
EO_VERSION,
"Elw BoxedButton",
EO_CLASS_TYPE_REGULAR,
EO_CLASS_DESCRIPTION_OPS(NULL, NULL, 0),
NULL,
sizeof(Widget_Data),
_class_constructor,
NULL
};
EO_DEFINE_CLASS(elw_boxedbutton_class_get, &class_desc, ELW_BOX_CLASS, ELW_BUTTON_CLASS, NULL)

View File

@ -1,9 +0,0 @@
#ifndef ELW_BOXEDBUTTON_H
#define ELW_BOXEDBUTTON_H
#include "Eo.h"
#define ELW_BOXEDBUTTON_CLASS elw_boxedbutton_class_get()
const Eo_Class *elw_boxedbutton_class_get(void);
#endif

View File

@ -1,115 +0,0 @@
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include <Elementary.h>
#include "Eo.h"
#include "evas_evas_obj.h"
#include "evas_elw_button.h"
EAPI Eo_Op ELW_BUTTON_BASE_ID = 0;
EAPI const Eo_Event_Description _EV_CLICKED =
EO_EVENT_DESCRIPTION("clicked");
typedef struct
{
Evas_Object *bt;
} Widget_Data;
#define MY_CLASS ELW_BUTTON_CLASS
static void
_position_set(Eo *obj, void *class_data EINA_UNUSED, va_list *list)
{
(void) obj;
Evas_Coord x, y;
x = va_arg(*list, Evas_Coord);
y = va_arg(*list, Evas_Coord);
printf("But set position %d,%d\n", x, y);
eo_do_super(obj, MY_CLASS, exevas_obj_position_set(x, y));
}
static void
_text_set(Eo *obj EINA_UNUSED, void *class_data, va_list *list)
{
Widget_Data *wd = class_data;
const char *text;
text = va_arg(*list, const char *);
elm_object_text_set(wd->bt, text);
}
static void
_btn_clicked(void *data, Evas_Object *evas_obj, void *event_info)
{
(void) evas_obj;
(void) event_info;
Eo *obj = data;
eo_do(obj, eo_event_callback_call(EV_CLICKED, NULL, NULL));
}
static void
_constructor(Eo *obj, void *class_data, va_list *list EINA_UNUSED)
{
eo_do_super(obj, MY_CLASS, eo_constructor());
Widget_Data *wd = class_data;
/* FIXME: An hack, because our tree is not yet only Eo */
wd->bt = elm_button_add(eo_evas_object_get(eo_parent_get(obj)));
evas_object_size_hint_align_set(wd->bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(wd->bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_smart_callback_add(wd->bt, "clicked", _btn_clicked, obj);
eo_evas_object_set(obj, wd->bt);
}
static void
_destructor(Eo *obj, void *class_data EINA_UNUSED, va_list *list EINA_UNUSED)
{
eo_do_super(obj, MY_CLASS, eo_destructor());
//Widget_Data *wd = class_data;
/* FIXME: Commented out because it's automatically done because our tree
* is not made of only eo */
//evas_object_del(wd->bt);
}
static void
_class_constructor(Eo_Class *klass)
{
const Eo_Op_Func_Description func_desc[] = {
EO_OP_FUNC(EO_BASE_ID(EO_BASE_SUB_ID_CONSTRUCTOR), _constructor),
EO_OP_FUNC(EO_BASE_ID(EO_BASE_SUB_ID_DESTRUCTOR), _destructor),
EO_OP_FUNC(ELW_BUTTON_ID(ELW_BUTTON_SUB_ID_TEXT_SET), _text_set),
EO_OP_FUNC(EXEVAS_OBJ_ID(EXEVAS_OBJ_SUB_ID_POSITION_SET), _position_set),
EO_OP_FUNC_SENTINEL
};
eo_class_funcs_set(klass, func_desc);
}
static const Eo_Op_Description op_desc[] = {
EO_OP_DESCRIPTION(ELW_BUTTON_SUB_ID_TEXT_SET, "Text of a text supporting evas object."), // FIXME: This ID sholudn't really be defined here...
EO_OP_DESCRIPTION_SENTINEL
};
static const Eo_Event_Description *event_desc[] = {
EV_CLICKED,
NULL
};
static const Eo_Class_Description class_desc = {
EO_VERSION,
"Elw Button",
EO_CLASS_TYPE_REGULAR,
EO_CLASS_DESCRIPTION_OPS(&ELW_BUTTON_BASE_ID, op_desc, ELW_BUTTON_SUB_ID_LAST),
event_desc,
sizeof(Widget_Data),
_class_constructor,
NULL
};
EO_DEFINE_CLASS(elw_button_class_get, &class_desc, EXEVAS_OBJ_CLASS, NULL)

View File

@ -1,29 +0,0 @@
#ifndef ELW_BUTTON_H
#define ELW_BUTTON_H
#include "Eo.h"
extern EAPI Eo_Op ELW_BUTTON_BASE_ID;
enum {
ELW_BUTTON_SUB_ID_TEXT_SET,
ELW_BUTTON_SUB_ID_LAST
};
#define ELW_BUTTON_ID(sub_id) (ELW_BUTTON_BASE_ID + sub_id)
/**
* @def elw_button_text_set(text)
* @brief Set button text
* @param[in] text text to assing to button
* FIXME Doesn't belong here, but just for the example...
*/
#define elw_button_text_set(text) ELW_BUTTON_ID(ELW_BUTTON_SUB_ID_TEXT_SET), EO_TYPECHECK(const char *, text)
extern const Eo_Event_Description _EV_CLICKED;
#define EV_CLICKED (&(_EV_CLICKED))
#define ELW_BUTTON_CLASS elw_button_class_get()
const Eo_Class *elw_button_class_get(void);
#endif

View File

@ -1,74 +0,0 @@
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include <Elementary.h>
#include "Eo.h"
#include "evas_evas_obj.h"
#include "evas_elw_win.h"
typedef struct
{
Evas_Object *win;
Evas_Object *bg;
} Widget_Data;
#define MY_CLASS ELW_WIN_CLASS
static void
my_win_del(void *data, Evas_Object *obj, void *event_info)
{
/* called when my_win_main is requested to be deleted */
elm_exit(); /* exit the program's main loop that runs in elm_run() */
(void) data;
(void) obj;
(void) event_info;
}
static void
_constructor(Eo *obj, void *class_data, va_list *list EINA_UNUSED)
{
eo_do_super(obj, MY_CLASS, eo_constructor());
Widget_Data *wd = class_data;
/* FIXME: Will actually do something about those when I care... */
wd->win = elm_win_add(NULL, "eo-test", ELM_WIN_BASIC);
elm_win_title_set(wd->win, "Eo Test");
elm_win_autodel_set(wd->win, EINA_TRUE);
evas_object_smart_callback_add(wd->win, "delete,request", my_win_del, NULL);
wd->bg = elm_bg_add(wd->win);
elm_win_resize_object_add(wd->win, wd->bg);
evas_object_size_hint_weight_set(wd->bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(wd->bg);
eo_evas_object_set(obj, wd->win);
}
static void
_class_constructor(Eo_Class *klass)
{
const Eo_Op_Func_Description func_desc[] = {
EO_OP_FUNC(EO_BASE_ID(EO_BASE_SUB_ID_CONSTRUCTOR), _constructor),
EO_OP_FUNC_SENTINEL
};
eo_class_funcs_set(klass, func_desc);
}
static const Eo_Class_Description class_desc = {
EO_VERSION,
"Elw Win",
EO_CLASS_TYPE_REGULAR,
EO_CLASS_DESCRIPTION_OPS(NULL, NULL, 0),
NULL,
sizeof(Widget_Data),
_class_constructor,
NULL
};
EO_DEFINE_CLASS(elw_win_class_get, &class_desc, EXEVAS_OBJ_CLASS, NULL)

View File

@ -1,9 +0,0 @@
#ifndef ELW_WIN_H
#define ELW_WIN_H
#include "Eo.h"
#define ELW_WIN_CLASS elw_win_class_get()
const Eo_Class *elw_win_class_get(void);
#endif

View File

@ -1,146 +0,0 @@
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include <Elementary.h>
#include "Eo.h"
#include "evas_evas_obj.h"
#define MY_CLASS EXEVAS_OBJ_CLASS
EAPI Eo_Op EXEVAS_OBJ_BASE_ID = 0;
typedef struct
{
Eina_List *children;
} Widget_Data;
static void
_position_set(Eo *obj, void *class_data EINA_UNUSED, va_list *list)
{
Evas_Object *evas_obj = eo_evas_object_get(obj);
Evas_Coord x, y;
x = va_arg(*list, Evas_Coord);
y = va_arg(*list, Evas_Coord);
evas_object_move(evas_obj, x, y);
}
static void
_size_set(Eo *obj, void *class_data EINA_UNUSED, va_list *list)
{
Evas_Object *evas_obj = eo_evas_object_get(obj);
Evas_Coord w, h;
w = va_arg(*list, Evas_Coord);
h = va_arg(*list, Evas_Coord);
evas_object_resize(evas_obj, w, h);
}
static void
_color_set(Eo *obj, void *class_data EINA_UNUSED, va_list *list)
{
Evas_Object *evas_obj = eo_evas_object_get(obj);
int r, g, b, a;
r = va_arg(*list, int);
g = va_arg(*list, int);
b = va_arg(*list, int);
a = va_arg(*list, int);
evas_object_color_set(evas_obj, r, g, b, a);
}
static void
_color_get(Eo *obj, void *class_data EINA_UNUSED, va_list *list)
{
Evas_Object *evas_obj = eo_evas_object_get(obj);
int *r, *g, *b, *a;
r = va_arg(*list, int *);
g = va_arg(*list, int *);
b = va_arg(*list, int *);
a = va_arg(*list, int *);
evas_object_color_get(evas_obj, r, g, b, a);
}
static void
_visibility_set(Eo *obj, void *class_data EINA_UNUSED, va_list *list)
{
Evas_Object *evas_obj = eo_evas_object_get(obj);
Eina_Bool v;
v = va_arg(*list, int);
if (v) evas_object_show(evas_obj);
else evas_object_hide(evas_obj);
}
static void
_child_add(Eo *obj, void *class_data, va_list *list)
{
Widget_Data *wd = class_data;
Eo *child;
child = va_arg(*list, Eo *);
wd->children = eina_list_append(wd->children, eo_xref(child, obj));
}
static void
_constructor(Eo *obj, void *class_data EINA_UNUSED, va_list *list EINA_UNUSED)
{
eo_do_super(obj, MY_CLASS, eo_constructor());
/* Add type check. */
Eo *parent = eo_parent_get(obj);
if (parent)
eo_do(parent, exevas_obj_child_add(obj));
}
static void
_destructor(Eo *obj, void *class_data, va_list *list EINA_UNUSED)
{
eo_do_super(obj, MY_CLASS, eo_destructor());
Widget_Data *wd = class_data;
Eo *child;
EINA_LIST_FREE(wd->children, child)
{
eo_xunref(child, obj);
}
}
static void
_class_constructor(Eo_Class *klass)
{
const Eo_Op_Func_Description func_desc[] = {
EO_OP_FUNC(EO_BASE_ID(EO_BASE_SUB_ID_CONSTRUCTOR), _constructor),
EO_OP_FUNC(EO_BASE_ID(EO_BASE_SUB_ID_DESTRUCTOR), _destructor),
EO_OP_FUNC(EXEVAS_OBJ_ID(EXEVAS_OBJ_SUB_ID_POSITION_SET), _position_set),
EO_OP_FUNC(EXEVAS_OBJ_ID(EXEVAS_OBJ_SUB_ID_SIZE_SET), _size_set),
EO_OP_FUNC(EXEVAS_OBJ_ID(EXEVAS_OBJ_SUB_ID_COLOR_SET), _color_set),
EO_OP_FUNC(EXEVAS_OBJ_ID(EXEVAS_OBJ_SUB_ID_COLOR_GET), _color_get),
EO_OP_FUNC(EXEVAS_OBJ_ID(EXEVAS_OBJ_SUB_ID_VISIBILITY_SET), _visibility_set),
EO_OP_FUNC(EXEVAS_OBJ_ID(EXEVAS_OBJ_SUB_ID_CHILD_ADD), _child_add),
EO_OP_FUNC_SENTINEL
};
eo_class_funcs_set(klass, func_desc);
}
static const Eo_Op_Description op_desc[] = {
EO_OP_DESCRIPTION(EXEVAS_OBJ_SUB_ID_POSITION_SET, "Position of an evas object."),
EO_OP_DESCRIPTION(EXEVAS_OBJ_SUB_ID_SIZE_SET, "Size of an evas object."),
EO_OP_DESCRIPTION(EXEVAS_OBJ_SUB_ID_COLOR_SET, "Color of an evas object."),
EO_OP_DESCRIPTION(EXEVAS_OBJ_SUB_ID_COLOR_GET, "Color of an evas object."),
EO_OP_DESCRIPTION(EXEVAS_OBJ_SUB_ID_VISIBILITY_SET, "Visibility of an evas object."),
EO_OP_DESCRIPTION(EXEVAS_OBJ_SUB_ID_CHILD_ADD, "Add a child eo."),
EO_OP_DESCRIPTION_SENTINEL
};
static const Eo_Class_Description class_desc = {
EO_VERSION,
"Evas Object",
EO_CLASS_TYPE_REGULAR_NO_INSTANT,
EO_CLASS_DESCRIPTION_OPS(&EXEVAS_OBJ_BASE_ID, op_desc, EXEVAS_OBJ_SUB_ID_LAST),
NULL,
sizeof(Widget_Data),
_class_constructor,
NULL
};
EO_DEFINE_CLASS(evas_object_class_get, &class_desc, EO_CLASS, NULL)

View File

@ -1,90 +0,0 @@
#ifndef EXEVAS_OBJ_H
#define EXEVAS_OBJ_H
#include "Eo.h"
extern EAPI Eo_Op EXEVAS_OBJ_BASE_ID;
enum {
EXEVAS_OBJ_SUB_ID_POSITION_SET,
EXEVAS_OBJ_SUB_ID_SIZE_SET,
EXEVAS_OBJ_SUB_ID_COLOR_SET,
EXEVAS_OBJ_SUB_ID_COLOR_GET,
EXEVAS_OBJ_SUB_ID_VISIBILITY_SET,
EXEVAS_OBJ_SUB_ID_CHILD_ADD,
EXEVAS_OBJ_SUB_ID_LAST
};
#define EXEVAS_OBJ_ID(sub_id) (EXEVAS_OBJ_BASE_ID + sub_id)
/**
* @def exevas_obj_position_set(x, y)
* @brief Set object's position
* @param[in] x object's X position
* @param[in] y object's Y position
*/
#define exevas_obj_position_set(x, y) EXEVAS_OBJ_ID(EXEVAS_OBJ_SUB_ID_POSITION_SET), EO_TYPECHECK(Evas_Coord, x), EO_TYPECHECK(Evas_Coord, y)
/**
* @def exevas_obj_size_set(w, h)
* @brief Set object's size
* @param[in] w object's width
* @param[in] h object's height
*/
#define exevas_obj_size_set(w, h) EXEVAS_OBJ_ID(EXEVAS_OBJ_SUB_ID_SIZE_SET), EO_TYPECHECK(Evas_Coord, w), EO_TYPECHECK(Evas_Coord, h)
/**
* @def exevas_obj_color_set(r, g, b, a)
* @brief Set object's color
* @param[in] r r-value of color
* @param[in] g g-value of color
* @param[in] b b-value of color
* @param[in] a a-value of color
*/
#define exevas_obj_color_set(r, g, b, a) EXEVAS_OBJ_ID(EXEVAS_OBJ_SUB_ID_COLOR_SET), EO_TYPECHECK(int, r), EO_TYPECHECK(int, g), EO_TYPECHECK(int, b), EO_TYPECHECK(int, a)
/**
* @def exevas_obj_color_get(r, g, b, a)
* @brief Set object's position
* @param[out] r integer pointer for r-value of color
* @param[out] g integer pointer for g-value of color
* @param[out] b integer pointer for b-value of color
* @param[out] a integer pointer for a-value of color
*/
#define exevas_obj_color_get(r, g, b, a) EXEVAS_OBJ_ID(EXEVAS_OBJ_SUB_ID_COLOR_GET), EO_TYPECHECK(int *, r), EO_TYPECHECK(int *, g), EO_TYPECHECK(int *, b), EO_TYPECHECK(int *, a)
/**
* @def exevas_obj_visibility_set(v)
* @brief Set object's visible property
* @param[in] v True/False value
*/
#define exevas_obj_visibility_set(v) EXEVAS_OBJ_ID(EXEVAS_OBJ_SUB_ID_VISIBILITY_SET), EO_TYPECHECK(Eina_Bool, v)
/**
* @def exevas_obj_child_add(child)
* @brief Add child to current object
* @param[in] pointer to child object
*/
#define exevas_obj_child_add(child) EXEVAS_OBJ_ID(EXEVAS_OBJ_SUB_ID_CHILD_ADD), EO_TYPECHECK(Eo *, child)
#define EXEVAS_OBJ_CLASS evas_object_class_get()
const Eo_Class *evas_object_class_get(void);
#define EXEVAS_OBJ_STR "Evas_Obj"
/* FIXME: Hack in the meanwhile. */
static inline Evas_Object *
eo_evas_object_get(const Eo *obj)
{
void *data;
eo_do((Eo *) obj, eo_key_data_get(EXEVAS_OBJ_STR, &data));
return data;
}
/* FIXME: Hack in the meanwhile. */
static inline void
eo_evas_object_set(Eo *obj, Evas_Object *evas_obj)
{
eo_do(obj, eo_key_data_set(EXEVAS_OBJ_STR, evas_obj));
}
#endif

View File

@ -1,66 +0,0 @@
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include <Elementary.h>
#include "evas_evas_obj.h"
#include "evas_elw_button.h"
#include "evas_elw_box.h"
#include "evas_elw_boxedbutton.h"
#include "evas_elw_win.h"
Eina_Bool
_btn_clicked_cb(void *data, const Eo_Event *event)
{
const Eo_Class *klass = eo_class_get(event->obj);
printf("%s obj-type:'%s' data:'%s'\n", desc->name, eo_class_name_get(klass), (const char *) data);
return EO_CALLBACK_CONTINUE;
}
int
main(int argc, char *argv[])
{
Evas_Coord winw, winh;
{
winw = 400;
winh = 400;
}
elm_init(argc, argv);
eo_init();
Eo *win = eo_add(ELW_WIN_CLASS, NULL);
eo_do(win, exevas_obj_size_set(winw, winh), exevas_obj_visibility_set(EINA_TRUE));
Eo *bt = eo_add(ELW_BUTTON_CLASS, win);
eo_do(bt, exevas_obj_position_set(25, 25),
exevas_obj_size_set(50, 50),
exevas_obj_color_set(255, 0, 0, 255),
elw_button_text_set("Click"),
exevas_obj_visibility_set(EINA_TRUE));
eo_do(bt, eo_event_callback_add(EV_CLICKED, _btn_clicked_cb, "btn"));
int r, g, b, a;
eo_do(bt, exevas_obj_color_get(&r, &g, &b, &a));
printf("RGBa(%d, %d, %d, %d)\n", r, g, b, a);
Eo *bx = eo_add(ELW_BOXEDBUTTON_CLASS, win);
eo_do(bx, exevas_obj_position_set(100, 100),
exevas_obj_size_set(70, 70),
exevas_obj_color_set(0, 0, 255, 255),
elw_button_text_set("Click2"),
exevas_obj_visibility_set(EINA_TRUE));
eo_do(bx, eo_event_callback_add(EV_CLICKED, _btn_clicked_cb, "bxedbtn"));
elm_run();
eo_unref(bx);
eo_unref(bt);
eo_unref(win);
eo_shutdown();
elm_shutdown();
return 0;
}

View File

@ -1,21 +0,0 @@
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include "Eo.h"
#include "eo_isa_complex.h"
#define MY_CLASS COMPLEX_CLASS
static const Eo_Class_Description class_desc = {
EO_VERSION,
"Complex",
EO_CLASS_TYPE_REGULAR,
EO_CLASS_DESCRIPTION_NOOPS(),
NULL,
0,
NULL,
NULL
};
EO_DEFINE_CLASS(complex_class_get, &class_desc, SIMPLE_CLASS, NULL);

View File

@ -1,10 +0,0 @@
#ifndef COMPLEX_H
#define COMPLEX_H
#include "Eo.h"
#include "eo_isa_simple.h"
#define COMPLEX_CLASS complex_class_get()
const Eo_Class *complex_class_get(void);
#endif

View File

@ -1,28 +0,0 @@
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include "Eo.h"
#include "eo_isa_interface.h"
#define MY_CLASS INTERFACE_CLASS
EAPI EO_FUNC_BODY(interface_a_power_3_get, int, 0);
static Eo_Op_Description op_desc[] = {
EO_OP_FUNC(interface_a_power_3_get, NULL),
};
static const Eo_Class_Description class_desc = {
EO_VERSION,
"Interface",
EO_CLASS_TYPE_INTERFACE,
EO_CLASS_DESCRIPTION_OPS(op_desc),
NULL,
0,
NULL,
NULL
};
EO_DEFINE_CLASS(interface_class_get, &class_desc, NULL, NULL)

View File

@ -1,16 +0,0 @@
#ifndef INTERFACE_H
#define INTERFACE_H
#include "Eo.h"
/**
* @def interface_a_power_3_get(ret)
* @brief Get a^3
* @return integer value
*/
EAPI int interface_a_power_3_get(void);
#define INTERFACE_CLASS interface_class_get()
const Eo_Class *interface_class_get(void);
#endif

View File

@ -1,36 +0,0 @@
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include "Eo.h"
#include "eo_isa_simple.h"
#include "eo_isa_complex.h"
int
main(int argc, char *argv[])
{
(void) argc;
(void) argv;
eo_init();
Eo *simpleobj = eo_add(SIMPLE_CLASS, NULL);
Eo *complexobj = eo_add(COMPLEX_CLASS, NULL);
printf("Simple: isa-simple:%d isa-complex:%d isa-mixin:%d isa-interface:%d\n",
eo_isa(simpleobj, SIMPLE_CLASS),
eo_isa(simpleobj, COMPLEX_CLASS),
eo_isa(simpleobj, MIXIN_CLASS),
eo_isa(simpleobj, INTERFACE_CLASS));
printf("Complex: isa-simple:%d isa-complex:%d isa-mixin:%d isa-interface:%d\n",
eo_isa(complexobj, SIMPLE_CLASS),
eo_isa(complexobj, COMPLEX_CLASS),
eo_isa(complexobj, MIXIN_CLASS),
eo_isa(complexobj, INTERFACE_CLASS));
eo_unref(simpleobj);
eo_unref(complexobj);
eo_shutdown();
return 0;
}

View File

@ -1,39 +0,0 @@
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include "Eo.h"
#include "eo_isa_mixin.h"
#include "eo_isa_simple.h"
#define MY_CLASS MIXIN_CLASS
static int
_a_square_get(Eo *obj, void *class_data EINA_UNUSED)
{
int a;
eo_do(obj, a = simple_a_get());
printf("%s %s\n", eo_class_name_get(MY_CLASS), __func__);
return a * a;
}
EAPI EO_FUNC_BODY(mixin_a_square_get, int, 0);
static Eo_Op_Description op_desc[] = {
EO_OP_FUNC(mixin_a_square_get, _a_square_get),
};
static const Eo_Class_Description class_desc = {
EO_VERSION,
"Mixin",
EO_CLASS_TYPE_MIXIN,
EO_CLASS_DESCRIPTION_OPS(op_desc),
NULL,
0,
NULL,
NULL
};
EO_DEFINE_CLASS(mixin_class_get, &class_desc, NULL, NULL)

View File

@ -1,16 +0,0 @@
#ifndef MIXIN_H
#define MIXIN_H
#include "Eo.h"
/**
* @def mixin_a_square_get(ret)
* @brief Get the square of a.
* @param[out] ret the square of a
*/
EAPI int mixin_a_square_get(void);
#define MIXIN_CLASS mixin_class_get()
const Eo_Class *mixin_class_get(void);
#endif

View File

@ -1,59 +0,0 @@
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include "Eo.h"
#include "eo_isa_simple.h"
typedef struct
{
int a;
} Private_Data;
#define MY_CLASS SIMPLE_CLASS
static int
_a_get(Eo *obj EINA_UNUSED, void *class_data)
{
const Private_Data *pd = class_data;
printf("%s %s\n", eo_class_name_get(MY_CLASS), __func__);
return pd->a;
}
static void
_a_set(Eo *obj EINA_UNUSED, void *class_data, int a)
{
Private_Data *pd = class_data;
pd->a = a;
printf("%s %s\n", eo_class_name_get(MY_CLASS), __func__);
}
static int
_a_power_3_get(Eo *obj EINA_UNUSED, void *class_data)
{
const Private_Data *pd = class_data;
printf("%s %s\n", eo_class_name_get(MY_CLASS), __func__);
return pd->a * pd->a * pd->a;
}
EAPI EO_FUNC_BODY(simple_a_get, int, 0);
EAPI EO_VOID_FUNC_BODYV(simple_a_set, EO_FUNC_CALL(a), int a);
static Eo_Op_Description op_desc[] = {
EO_OP_FUNC(simple_a_set, _a_set),
EO_OP_FUNC(simple_a_get, _a_get),
EO_OP_FUNC_OVERRIDE(interface_a_power_3_get, _a_power_3_get),
};
static const Eo_Class_Description class_desc = {
EO_VERSION,
"Simple",
EO_CLASS_TYPE_REGULAR,
EO_CLASS_DESCRIPTION_OPS(op_desc),
NULL,
sizeof(Private_Data),
NULL,
NULL
};
EO_DEFINE_CLASS(simple_class_get, &class_desc, EO_CLASS, INTERFACE_CLASS, MIXIN_CLASS, NULL);

View File

@ -1,25 +0,0 @@
#ifndef SIMPLE_H
#define SIMPLE_H
#include "Eo.h"
#include "eo_isa_interface.h"
#include "eo_isa_mixin.h"
/**
* @def simple_a_set(a)
* @brief Set value to a-property
* @param[in] a integer value to set
*/
EAPI void simple_a_set(int a);
/**
* @def simple_a_get(a)
* @brief Get value of a-property
* @param[out] integer pointer to a-value
*/
EAPI int simple_a_get(void);
#define SIMPLE_CLASS simple_class_get()
const Eo_Class *simple_class_get(void);
#endif

View File

@ -1,28 +0,0 @@
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include "Eo.h"
#include "simple_interface.h"
#define MY_CLASS INTERFACE_CLASS
EAPI EO_FUNC_BODY(interface_a_power_3_get, int, 0);
static Eo_Op_Description op_desc[] = {
EO_OP_FUNC(interface_a_power_3_get, NULL),
};
static const Eo_Class_Description class_desc = {
EO_VERSION,
"Interface",
EO_CLASS_TYPE_INTERFACE,
EO_CLASS_DESCRIPTION_OPS(op_desc),
NULL,
0,
NULL,
NULL
};
EO_DEFINE_CLASS(interface_class_get, &class_desc, NULL, NULL)

View File

@ -1,16 +0,0 @@
#ifndef INTERFACE_H
#define INTERFACE_H
#include "Eo.h"
/**
* @def interface_a_power_3_get(ret)
* @brief Get a^3
* @return integer value
*/
EAPI int interface_a_power_3_get(void);
#define INTERFACE_CLASS interface_class_get()
const Eo_Class *interface_class_get(void);
#endif

View File

@ -1,31 +0,0 @@
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include "Eo.h"
#include "simple_simple.h"
int
main(int argc, char *argv[])
{
(void) argc;
(void) argv;
eo_init();
Eo *obj = eo_add(SIMPLE_CLASS, NULL);
eo_do(obj, simple_a_set(4));
int a = 0, a2 = 0, a3 = 0;
eo_do(obj, a = simple_a_get(),
a3 = interface_a_power_3_get(),
a2 = mixin_a_square_get());
printf("Got %d %d %d\n", a, a2, a3);
eo_unref(obj);
eo_shutdown();
return 0;
}

View File

@ -1,39 +0,0 @@
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include "Eo.h"
#include "simple_mixin.h"
#include "simple_simple.h"
#define MY_CLASS MIXIN_CLASS
static int
_a_square_get(Eo *obj, void *class_data EINA_UNUSED)
{
int a;
eo_do(obj, a = simple_a_get());
printf("%s %s\n", eo_class_name_get(MY_CLASS), __func__);
return a * a;
}
EAPI EO_FUNC_BODY(mixin_a_square_get, int, 0);
static Eo_Op_Description op_desc[] = {
EO_OP_FUNC(mixin_a_square_get, _a_square_get),
};
static const Eo_Class_Description class_desc = {
EO_VERSION,
"Mixin",
EO_CLASS_TYPE_MIXIN,
EO_CLASS_DESCRIPTION_OPS(op_desc),
NULL,
0,
NULL,
NULL
};
EO_DEFINE_CLASS(mixin_class_get, &class_desc, NULL, NULL)

View File

@ -1,16 +0,0 @@
#ifndef MIXIN_H
#define MIXIN_H
#include "Eo.h"
/**
* @def mixin_a_square_get(ret)
* @brief Get the square of a.
* @param[out] ret the square of a
*/
EAPI int mixin_a_square_get(void);
#define MIXIN_CLASS mixin_class_get()
const Eo_Class *mixin_class_get(void);
#endif

View File

@ -1,59 +0,0 @@
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include "Eo.h"
#include "simple_simple.h"
typedef struct
{
int a;
} Private_Data;
#define MY_CLASS SIMPLE_CLASS
static int
_a_get(Eo *obj EINA_UNUSED, void *class_data)
{
const Private_Data *pd = class_data;
printf("%s %s\n", eo_class_name_get(MY_CLASS), __func__);
return pd->a;
}
static void
_a_set(Eo *obj EINA_UNUSED, void *class_data, int a)
{
Private_Data *pd = class_data;
pd->a = a;
printf("%s %s\n", eo_class_name_get(MY_CLASS), __func__);
}
static int
_a_power_3_get(Eo *obj EINA_UNUSED, void *class_data)
{
const Private_Data *pd = class_data;
printf("%s %s\n", eo_class_name_get(MY_CLASS), __func__);
return pd->a * pd->a * pd->a;
}
EAPI EO_FUNC_BODY(simple_a_get, int, 0);
EAPI EO_VOID_FUNC_BODYV(simple_a_set, EO_FUNC_CALL(a), int a);
static Eo_Op_Description op_desc[] = {
EO_OP_FUNC(simple_a_set, _a_set),
EO_OP_FUNC(simple_a_get, _a_get),
EO_OP_FUNC_OVERRIDE(interface_a_power_3_get, _a_power_3_get),
};
static const Eo_Class_Description class_desc = {
EO_VERSION,
"Simple",
EO_CLASS_TYPE_REGULAR,
EO_CLASS_DESCRIPTION_OPS(op_desc),
NULL,
sizeof(Private_Data),
NULL,
NULL
};
EO_DEFINE_CLASS(simple_class_get, &class_desc, EO_CLASS, INTERFACE_CLASS, MIXIN_CLASS, NULL);

View File

@ -1,25 +0,0 @@
#ifndef SIMPLE_H
#define SIMPLE_H
#include "Eo.h"
#include "simple_interface.h"
#include "simple_mixin.h"
/**
* @def simple_a_set(a)
* @brief Set value to a-property
* @param[in] a integer value to set
*/
EAPI void simple_a_set(int a);
/**
* @def simple_a_get(a)
* @brief Get value of a-property
* @param[out] integer pointer to a-value
*/
EAPI int simple_a_get(void);
#define SIMPLE_CLASS simple_class_get()
const Eo_Class *simple_class_get(void);
#endif

View File

@ -35,7 +35,7 @@ _colourable_eo_base_constructor(Eo *obj, Colourable_Data *self EINA_UNUSED)
= eina_log_domain_register("colourable", EINA_COLOR_BLUE); = eina_log_domain_register("colourable", EINA_COLOR_BLUE);
} }
DBG("_colourable_constructor(%p, %p)\n", obj, MY_CLASS); DBG("_colourable_constructor(%p, %p)\n", obj, MY_CLASS);
return eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor()); return eo_constructor(eo_super(obj, MY_CLASS));
} }
void void
@ -47,7 +47,7 @@ _colourable_eo_base_destructor(Eo *obj, Colourable_Data *self EINA_UNUSED)
_colourable_impl_logdomain = 0; _colourable_impl_logdomain = 0;
} }
DBG("_colourable_destructor()\n"); DBG("_colourable_destructor()\n");
eo_do_super(obj, MY_CLASS, eo_destructor()); eo_destructor(eo_super(obj, MY_CLASS));
} }
void void
@ -63,7 +63,7 @@ _colourable_rgb_24bits_constructor(Eo *obj, Colourable_Data *self, int rgb)
self->g = (rgb & 0x0000ff00) >> 8; self->g = (rgb & 0x0000ff00) >> 8;
self->b = rgb & 0x000000ff; self->b = rgb & 0x000000ff;
DBG("_colourable_rgb_24bits_constructor(0x%.6x)\n", (int)rgb); DBG("_colourable_rgb_24bits_constructor(0x%.6x)\n", (int)rgb);
eo_do_super(obj, MY_CLASS, eo_constructor()); eo_constructor(eo_super(obj, MY_CLASS));
} }
void void

View File

@ -35,7 +35,7 @@ _colourablesquare_size_constructor(Eo *obj, ColourableSquare_Data *self, int siz
} }
self->size = size; self->size = size;
DBG("_colourablesquare_constructor(%d)\n", size); DBG("_colourablesquare_constructor(%d)\n", size);
eo_do_super(obj, MY_CLASS, eo_constructor()); eo_constructor(eo_super(obj, MY_CLASS));
} }
static int static int

View File

@ -57,7 +57,7 @@ _animate_scene(void *data)
{ {
static int frame = 0; static int frame = 0;
eo_do((Evas_Canvas3D_Node *)data, evas_canvas3d_node_mesh_frame_set(mesh, frame)); evas_canvas3d_node_mesh_frame_set((Evas_Canvas3D_Node *)data, mesh, frame);
_redraw_aabb(); _redraw_aabb();
@ -84,22 +84,22 @@ _on_key_down(void *data, Evas *e EINA_UNUSED, Evas_Object *eo EINA_UNUSED, void
{ {
case 1: case 1:
{ {
eo_do(node, evas_canvas3d_node_orientation_angle_axis_set(90, 1.0, 0.0, 0.0)); evas_canvas3d_node_orientation_angle_axis_set(node, 90, 1.0, 0.0, 0.0);
break; break;
} }
case 2: case 2:
{ {
eo_do(node, evas_canvas3d_node_orientation_angle_axis_set(90, 0.0, 1.0, 0.0)); evas_canvas3d_node_orientation_angle_axis_set(node, 90, 0.0, 1.0, 0.0);
break; break;
} }
case 3: case 3:
{ {
eo_do(node, evas_canvas3d_node_orientation_angle_axis_set(90, 0.0, 0.0, 1.0)); evas_canvas3d_node_orientation_angle_axis_set(node, 90, 0.0, 0.0, 1.0);
break; break;
} }
case 4: case 4:
{ {
eo_do(node, evas_canvas3d_node_orientation_angle_axis_set(90, 1.0, 1.0, 0.0)); evas_canvas3d_node_orientation_angle_axis_set(node, 90, 1.0, 1.0, 0.0);
break; break;
} }
} }
@ -111,8 +111,8 @@ _on_canvas_resize(Ecore_Evas *ee)
int w, h; int w, h;
ecore_evas_geometry_get(ee, NULL, NULL, &w, &h); ecore_evas_geometry_get(ee, NULL, NULL, &w, &h);
eo_do(background, efl_gfx_size_set(w, h)); efl_gfx_size_set(background, w, h);
eo_do(image, efl_gfx_size_set(w, h)); efl_gfx_size_set(image, w, h);
} }
static Eina_Bool static Eina_Bool
@ -120,9 +120,9 @@ _redraw_aabb()
{ {
Evas_Real x0, y0, z0, x1, y1, z1; Evas_Real x0, y0, z0, x1, y1, z1;
eo_do(mesh_node, evas_canvas3d_node_bounding_box_get(&x0, &y0, &z0, &x1, &y1, &z1)); evas_canvas3d_node_bounding_box_get(mesh_node, &x0, &y0, &z0, &x1, &y1, &z1);
eo_do(mesh_box_node, evas_canvas3d_node_position_set((x0 + x1)/2, (y0 + y1)/2, (z0 + z1)/2), evas_canvas3d_node_position_set(mesh_box_node, (x0 + x1)/2, (y0 + y1)/2, (z0 + z1)/2);
evas_canvas3d_node_scale_set(x1 - x0, y1 - y0, z1 - z0)); evas_canvas3d_node_scale_set(mesh_box_node, x1 - x0, y1 - y0, z1 - z0);
return EINA_TRUE; return EINA_TRUE;
} }
@ -144,118 +144,87 @@ main(void)
scene = eo_add(EVAS_CANVAS3D_SCENE_CLASS, evas); scene = eo_add(EVAS_CANVAS3D_SCENE_CLASS, evas);
root_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, root_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_NODE));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_NODE));
camera = eo_add(EVAS_CANVAS3D_CAMERA_CLASS, evas); camera = eo_add(EVAS_CANVAS3D_CAMERA_CLASS, evas);
eo_do(camera, evas_canvas3d_camera_projection_perspective_set(camera, 60.0, 1.0, 1.0, 500.0);
evas_canvas3d_camera_projection_perspective_set(60.0, 1.0, 1.0, 500.0));
camera_node = camera_node =
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_CAMERA));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_CAMERA)); evas_canvas3d_node_camera_set(camera_node, camera);
eo_do(camera_node, evas_canvas3d_node_member_add(root_node, camera_node);
evas_canvas3d_node_camera_set(camera)); evas_canvas3d_node_position_set(camera_node, 100.0, 50.0, 20.0);
eo_do(root_node, evas_canvas3d_node_look_at_set(camera_node, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 20.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 1.0);
evas_canvas3d_node_member_add(camera_node));
eo_do(camera_node,
evas_canvas3d_node_position_set(100.0, 50.0, 20.0),
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 20.0,
EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 1.0));
light = eo_add(EVAS_CANVAS3D_LIGHT_CLASS, evas); light = eo_add(EVAS_CANVAS3D_LIGHT_CLASS, evas);
eo_do(light, evas_canvas3d_light_ambient_set(light, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_light_ambient_set(1.0, 1.0, 1.0, 1.0), evas_canvas3d_light_diffuse_set(light, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_light_diffuse_set(1.0, 1.0, 1.0, 1.0), evas_canvas3d_light_specular_set(light, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_light_specular_set(1.0, 1.0, 1.0, 1.0), evas_canvas3d_light_directional_set(light, EINA_TRUE);
evas_canvas3d_light_directional_set(EINA_TRUE));
light_node = light_node =
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_LIGHT));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_LIGHT)); evas_canvas3d_node_light_set(light_node, light);
eo_do(light_node, evas_canvas3d_node_position_set(light_node, 1000.0, 0.0, 1000.0);
evas_canvas3d_node_light_set(light), evas_canvas3d_node_look_at_set(light_node, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0);
evas_canvas3d_node_position_set(1000.0, 0.0, 1000.0), evas_canvas3d_node_member_add(root_node, light_node);
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0,
EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0));
eo_do(root_node,
evas_canvas3d_node_member_add(light_node));
mesh = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas); mesh = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas);
material = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas); material = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas);
eo_do(mesh, efl_file_set(mesh, model_path, NULL);
efl_file_set(model_path, NULL), evas_canvas3d_mesh_frame_material_set(mesh, 0, material);
evas_canvas3d_mesh_frame_material_set(0, material), evas_canvas3d_mesh_shade_mode_set(mesh, EVAS_CANVAS3D_SHADE_MODE_PHONG);
evas_canvas3d_mesh_shade_mode_set(EVAS_CANVAS3D_SHADE_MODE_PHONG));
texture = eo_add(EVAS_CANVAS3D_TEXTURE_CLASS, evas); texture = eo_add(EVAS_CANVAS3D_TEXTURE_CLASS, evas);
eo_do(texture, evas_canvas3d_texture_file_set(texture, image_path, NULL);
evas_canvas3d_texture_file_set(image_path, NULL), evas_canvas3d_texture_filter_set(texture, EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST, EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST);
evas_canvas3d_texture_filter_set(EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST, evas_canvas3d_texture_wrap_set(texture, EVAS_CANVAS3D_WRAP_MODE_REPEAT, EVAS_CANVAS3D_WRAP_MODE_REPEAT);
EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST), evas_canvas3d_material_texture_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, texture);
evas_canvas3d_texture_wrap_set(EVAS_CANVAS3D_WRAP_MODE_REPEAT, evas_canvas3d_material_enable_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE);
EVAS_CANVAS3D_WRAP_MODE_REPEAT)); evas_canvas3d_material_enable_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE);
eo_do(material, evas_canvas3d_material_enable_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE);
evas_canvas3d_material_texture_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, texture), evas_canvas3d_material_enable_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_NORMAL, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE), evas_canvas3d_material_color_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, 0.01, 0.01, 0.01, 1.0);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE), evas_canvas3d_material_color_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE), evas_canvas3d_material_color_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_NORMAL, EINA_TRUE), evas_canvas3d_material_shininess_set(material, 50.0);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT,
0.01, 0.01, 0.01, 1.0),
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE,
1.0, 1.0, 1.0, 1.0),
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR,
1.0, 1.0, 1.0, 1.0),
evas_canvas3d_material_shininess_set(50.0));
mesh_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, mesh_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_MESH));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_MESH)); mesh_box_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_MESH));
mesh_box_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas,
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_MESH));
material_box = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas); material_box = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas);
eo_do(material_box, evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE)); evas_canvas3d_material_enable_set(material_box, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE);
cube = eo_add(EVAS_CANVAS3D_PRIMITIVE_CLASS, evas); cube = eo_add(EVAS_CANVAS3D_PRIMITIVE_CLASS, evas);
eo_do(cube, evas_canvas3d_primitive_form_set(cube, EVAS_CANVAS3D_MESH_PRIMITIVE_CUBE);
evas_canvas3d_primitive_form_set(EVAS_CANVAS3D_MESH_PRIMITIVE_CUBE));
mesh_box = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas); mesh_box = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas);
eo_do(mesh_box, evas_canvas3d_mesh_from_primitive_set(mesh_box, 0, cube);
evas_canvas3d_mesh_from_primitive_set(0, cube), evas_canvas3d_mesh_vertex_assembly_set(mesh_box, EVAS_CANVAS3D_VERTEX_ASSEMBLY_LINES);
evas_canvas3d_mesh_vertex_assembly_set(EVAS_CANVAS3D_VERTEX_ASSEMBLY_LINES), evas_canvas3d_mesh_shade_mode_set(mesh_box, EVAS_CANVAS3D_SHADE_MODE_VERTEX_COLOR);
evas_canvas3d_mesh_shade_mode_set(EVAS_CANVAS3D_SHADE_MODE_VERTEX_COLOR), evas_canvas3d_mesh_frame_material_set(mesh_box, 0, material_box);
evas_canvas3d_mesh_frame_material_set(0, material_box));
_redraw_aabb(); _redraw_aabb();
eo_do(root_node, evas_canvas3d_node_member_add(root_node, mesh_box_node);
evas_canvas3d_node_member_add(mesh_box_node)); evas_canvas3d_node_mesh_add(mesh_box_node, mesh_box);
eo_do(mesh_box_node,
evas_canvas3d_node_mesh_add(mesh_box));
eo_do(root_node, evas_canvas3d_node_member_add(root_node, mesh_node);
evas_canvas3d_node_member_add(mesh_node)); evas_canvas3d_node_mesh_add(mesh_node, mesh);
eo_do(mesh_node,
evas_canvas3d_node_mesh_add(mesh));
eo_do(scene, evas_canvas3d_scene_root_node_set(scene, root_node);
evas_canvas3d_scene_root_node_set(root_node), evas_canvas3d_scene_camera_node_set(scene, camera_node);
evas_canvas3d_scene_camera_node_set(camera_node), evas_canvas3d_scene_size_set(scene, WIDTH, HEIGHT);
evas_canvas3d_scene_size_set(WIDTH, HEIGHT));
background = eo_add(EVAS_RECTANGLE_CLASS, evas); background = eo_add(EVAS_RECTANGLE_CLASS, evas);
eo_do(background, efl_gfx_color_set(background, 0, 0, 0, 255);
efl_gfx_color_set(0, 0, 0, 255), efl_gfx_size_set(background, WIDTH, HEIGHT);
efl_gfx_size_set(WIDTH, HEIGHT), efl_gfx_visible_set(background, EINA_TRUE);
efl_gfx_visible_set(EINA_TRUE));
image = evas_object_image_filled_add(evas); image = evas_object_image_filled_add(evas);
eo_do(image, efl_gfx_size_set(image, WIDTH, HEIGHT);
efl_gfx_size_set(WIDTH, HEIGHT), efl_gfx_visible_set(image, EINA_TRUE);
efl_gfx_visible_set(EINA_TRUE));
evas_object_focus_set(image, EINA_TRUE); evas_object_focus_set(image, EINA_TRUE);
eo_do(image, evas_obj_image_scene_set(scene)); evas_obj_image_scene_set(image, scene);
evas_object_event_callback_add(image, EVAS_CALLBACK_KEY_DOWN, _on_key_down, mesh_node); evas_object_event_callback_add(image, EVAS_CALLBACK_KEY_DOWN, _on_key_down, mesh_node);

View File

@ -102,7 +102,7 @@ _on_key_down(void *data, Evas *e EINA_UNUSED, Evas_Object *eo EINA_UNUSED, void
func2 = EVAS_CANVAS3D_BLEND_FUNC_SRC_ALPHA_SATURATE; func2 = EVAS_CANVAS3D_BLEND_FUNC_SRC_ALPHA_SATURATE;
if(func2 > EVAS_CANVAS3D_BLEND_FUNC_SRC_ALPHA_SATURATE) if(func2 > EVAS_CANVAS3D_BLEND_FUNC_SRC_ALPHA_SATURATE)
func2 = EVAS_CANVAS3D_BLEND_FUNC_ZERO; func2 = EVAS_CANVAS3D_BLEND_FUNC_ZERO;
eo_do(scene->mesh1, evas_canvas3d_mesh_blending_func_set(func1, func2)); evas_canvas3d_mesh_blending_func_set(scene->mesh1, func1, func2);
printf("sfactor = %s, dfactor = %s\n", blend_func_names[func1], blend_func_names[func2]); printf("sfactor = %s, dfactor = %s\n", blend_func_names[func1], blend_func_names[func2]);
} }
@ -121,8 +121,8 @@ _on_canvas_resize(Ecore_Evas *ee)
ecore_evas_geometry_get(ee, NULL, NULL, &w, &h); ecore_evas_geometry_get(ee, NULL, NULL, &w, &h);
evas_object_resize(background, w, h); evas_object_resize(background, w, h);
eo_do(background, efl_gfx_size_set(w, h)); efl_gfx_size_set(background, w, h);
eo_do(image, efl_gfx_size_set(w, h)); efl_gfx_size_set(image, w, h);
} }
static Eina_Bool static Eina_Bool
@ -133,8 +133,7 @@ _animate_scene(void *data)
angle += 0.02; angle += 0.02;
eo_do(scene->mesh_node, evas_canvas3d_node_position_set(scene->mesh_node, 3 * sin(angle), 0.0, 3 * cos(angle));
evas_canvas3d_node_position_set(3 * sin(angle), 0.0, 3 * cos(angle)));
if (angle > 2 * M_PI) angle = 0; if (angle > 2 * M_PI) angle = 0;
@ -146,49 +145,40 @@ _camera_setup(Scene_Data *data)
{ {
data->camera = eo_add(EVAS_CANVAS3D_CAMERA_CLASS, evas); data->camera = eo_add(EVAS_CANVAS3D_CAMERA_CLASS, evas);
eo_do(data->camera, evas_canvas3d_camera_projection_perspective_set(data->camera, 60.0, 1.0, 2.0, 50.0);
evas_canvas3d_camera_projection_perspective_set(60.0, 1.0, 2.0, 50.0));
data->camera_node = data->camera_node =
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_CAMERA));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_CAMERA));
eo_do(data->camera_node, evas_canvas3d_node_camera_set(data->camera_node, data->camera);
evas_canvas3d_node_camera_set(data->camera), evas_canvas3d_node_position_set(data->camera_node, 0.0, 0.0, 10.0);
evas_canvas3d_node_position_set(0.0, 0.0, 10.0), evas_canvas3d_node_look_at_set(data->camera_node, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0);
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0,
EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0));
eo_do(data->root_node, evas_canvas3d_node_member_add(data->camera_node)); evas_canvas3d_node_member_add(data->root_node, data->camera_node);
} }
static void static void
_light_setup(Scene_Data *data) _light_setup(Scene_Data *data)
{ {
data->light = eo_add(EVAS_CANVAS3D_LIGHT_CLASS, evas); data->light = eo_add(EVAS_CANVAS3D_LIGHT_CLASS, evas);
eo_do(data->light, evas_canvas3d_light_ambient_set(data->light, 0.2, 0.2, 0.2, 1.0);
evas_canvas3d_light_ambient_set(0.2, 0.2, 0.2, 1.0), evas_canvas3d_light_diffuse_set(data->light, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_light_diffuse_set(1.0, 1.0, 1.0, 1.0), evas_canvas3d_light_specular_set(data->light, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_light_specular_set(1.0, 1.0, 1.0, 1.0));
data->light_node = data->light_node =
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_LIGHT));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_LIGHT)); evas_canvas3d_node_light_set(data->light_node, data->light);
eo_do(data->light_node, evas_canvas3d_node_position_set(data->light_node, 0.0, 0.0, 10.0);
evas_canvas3d_node_light_set(data->light), evas_canvas3d_node_look_at_set(data->light_node, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0);
evas_canvas3d_node_position_set(0.0, 0.0, 10.0), evas_canvas3d_node_member_add(data->root_node, data->light_node);
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0,
EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0));
eo_do(data->root_node, evas_canvas3d_node_member_add(data->light_node));
} }
static void static void
_set_ball(Eo *mesh, Eo *sphere, Evas_Canvas3D_Material *material) _set_ball(Eo *mesh, Eo *sphere, Evas_Canvas3D_Material *material)
{ {
eo_do(mesh, evas_canvas3d_mesh_from_primitive_set(mesh, 0, sphere);
evas_canvas3d_mesh_from_primitive_set(0, sphere), evas_canvas3d_mesh_frame_material_set(mesh, 0, material);
evas_canvas3d_mesh_frame_material_set(0, material), evas_canvas3d_mesh_shade_mode_set(mesh, EVAS_CANVAS3D_SHADE_MODE_PHONG);
evas_canvas3d_mesh_shade_mode_set(EVAS_CANVAS3D_SHADE_MODE_PHONG));
} }
static void static void
@ -196,32 +186,27 @@ _mesh_setup(Scene_Data *data)
{ {
data->material = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas); data->material = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas);
eo_do(data->material, evas_canvas3d_material_enable_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE), evas_canvas3d_material_enable_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE), evas_canvas3d_material_enable_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE), evas_canvas3d_material_color_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, 1.0, 0.2, 0.2, 0.2);
evas_canvas3d_material_color_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, 1.0, 0.0, 0.0, 0.2);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, 1.0, 0.2, 0.2, 0.2), evas_canvas3d_material_color_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, 1.0, 1.0, 1.0, 0.2);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, 1.0, 0.0, 0.0, 0.2), evas_canvas3d_material_shininess_set(data->material, 100.0);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, 1.0, 1.0, 1.0, 0.2),
evas_canvas3d_material_shininess_set(100.0));
data->material1 = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas); data->material1 = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas);
eo_do(data->material1, evas_canvas3d_material_enable_set(data->material1, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE), evas_canvas3d_material_enable_set(data->material1, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE), evas_canvas3d_material_enable_set(data->material1, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE), evas_canvas3d_material_color_set(data->material1, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, 0.0, 0.2, 0.2, 0.2);
evas_canvas3d_material_color_set(data->material1, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, 0.0, 0.0, 1.0, 0.2);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, 0.0, 0.2, 0.2, 0.2), evas_canvas3d_material_color_set(data->material1, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, 1.0, 1.0, 1.0, 0.2);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, 0.0, 0.0, 1.0, 0.2), evas_canvas3d_material_shininess_set(data->material1, 100.0);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, 1.0, 1.0, 1.0, 0.2),
evas_canvas3d_material_shininess_set(100.0));
data->sphere = eo_add(EVAS_CANVAS3D_PRIMITIVE_CLASS, evas); data->sphere = eo_add(EVAS_CANVAS3D_PRIMITIVE_CLASS, evas);
eo_do(data->sphere, evas_canvas3d_primitive_form_set(data->sphere, EVAS_CANVAS3D_MESH_PRIMITIVE_SPHERE);
evas_canvas3d_primitive_form_set(EVAS_CANVAS3D_MESH_PRIMITIVE_SPHERE), evas_canvas3d_primitive_precision_set(data->sphere, 50);
evas_canvas3d_primitive_precision_set(50));
data->mesh = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas); data->mesh = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas);
data->mesh1 = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas); data->mesh1 = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas);
@ -230,27 +215,23 @@ _mesh_setup(Scene_Data *data)
_set_ball(data->mesh1, data->sphere, data->material1); _set_ball(data->mesh1, data->sphere, data->material1);
data->mesh_node = data->mesh_node =
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_MESH));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_MESH));
eo_do(data->root_node, evas_canvas3d_node_member_add(data->mesh_node)); evas_canvas3d_node_member_add(data->root_node, data->mesh_node);
eo_do(data->mesh_node, evas_canvas3d_node_mesh_add(data->mesh)); evas_canvas3d_node_mesh_add(data->mesh_node, data->mesh);
data->mesh_node1 = data->mesh_node1 =
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_MESH));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_MESH));
eo_do(data->root_node, evas_canvas3d_node_member_add(data->mesh_node1)); evas_canvas3d_node_member_add(data->root_node, data->mesh_node1);
eo_do(data->mesh_node1, evas_canvas3d_node_mesh_add(data->mesh1)); evas_canvas3d_node_mesh_add(data->mesh_node1, data->mesh1);
eo_do(data->mesh1, evas_canvas3d_mesh_blending_enable_set(EINA_TRUE), evas_canvas3d_mesh_blending_enable_set(data->mesh1, EINA_TRUE);
evas_canvas3d_mesh_blending_func_set(func1, func2)); evas_canvas3d_mesh_blending_func_set(data->mesh1, func1, func2);
eo_do(data->mesh_node, evas_canvas3d_node_scale_set(data->mesh_node, 2.0, 2.0, 2.0);
evas_canvas3d_node_scale_set(2.0, 2.0, 2.0));
eo_do(data->mesh_node1, evas_canvas3d_node_scale_set(data->mesh_node1, 5.0, 5.0, 5.0);
evas_canvas3d_node_scale_set(5.0, 5.0, 5.0));
} }
static void static void
@ -258,21 +239,18 @@ _scene_setup(Scene_Data *data)
{ {
data->scene = eo_add(EVAS_CANVAS3D_SCENE_CLASS, evas); data->scene = eo_add(EVAS_CANVAS3D_SCENE_CLASS, evas);
eo_do(data->scene, evas_canvas3d_scene_size_set(data->scene, WIDTH, HEIGHT);
evas_canvas3d_scene_size_set(WIDTH, HEIGHT); evas_canvas3d_scene_background_color_set(data->scene, 0.5, 0.5, 0.5, 1);
evas_canvas3d_scene_background_color_set(0.5, 0.5, 0.5, 1));
data->root_node = data->root_node =
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_NODE));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_NODE));
_camera_setup(data); _camera_setup(data);
_light_setup(data); _light_setup(data);
_mesh_setup(data); _mesh_setup(data);
eo_do(data->scene, evas_canvas3d_scene_root_node_set(data->scene, data->root_node);
evas_canvas3d_scene_root_node_set(data->root_node), evas_canvas3d_scene_camera_node_set(data->scene, data->camera_node);
evas_canvas3d_scene_camera_node_set(data->camera_node));
} }
int int
@ -312,7 +290,7 @@ main(void)
evas_object_focus_set(image, EINA_TRUE); evas_object_focus_set(image, EINA_TRUE);
/* Set the image object as render target for 3D scene. */ /* Set the image object as render target for 3D scene. */
eo_do(image, evas_obj_image_scene_set(data.scene)); evas_obj_image_scene_set(image, data.scene);
/* Add animation timer callback. */ /* Add animation timer callback. */

View File

@ -119,8 +119,8 @@ _on_canvas_resize(Ecore_Evas *ee)
int w, h; int w, h;
ecore_evas_geometry_get(ee, NULL, NULL, &w, &h); ecore_evas_geometry_get(ee, NULL, NULL, &w, &h);
eo_do(bg, efl_gfx_size_set(w, h)); efl_gfx_size_set(bg, w, h);
eo_do(image, efl_gfx_size_set(w, h)); efl_gfx_size_set(image, w, h);
} }
static Eina_Bool static Eina_Bool
@ -129,7 +129,7 @@ _animate_sphere(void *data)
static int angle = 0.0; static int angle = 0.0;
Eo *n = (Eo*)(((Test_object *)data)->node); Eo *n = (Eo*)(((Test_object *)data)->node);
Evas_Real s = ((Test_object *)data)->speed; Evas_Real s = ((Test_object *)data)->speed;
eo_do(n, evas_canvas3d_node_orientation_angle_axis_set(angle, s, s - 1, s + 1)); evas_canvas3d_node_orientation_angle_axis_set(n, angle, s, s - 1, s + 1);
angle++; angle++;
if (angle > 360) angle = 0.0; if (angle > 360) angle = 0.0;
return EINA_TRUE; return EINA_TRUE;
@ -141,9 +141,8 @@ void _recalculate_position()
Evas_Real x1, y1, shiftx = 0, shifty = 0; Evas_Real x1, y1, shiftx = 0, shifty = 0;
Test_object *m; Test_object *m;
eo_do(((Test_object *)eina_list_nth(globalscene.spheres, 0))->node, evas_canvas3d_object_update(((Test_object *)eina_list_nth(globalscene.spheres, 0))->node);
evas_canvas3d_object_update(), evas_canvas3d_node_bounding_box_get(((Test_object *)eina_list_nth(globalscene.spheres, 0))->node, NULL, NULL, NULL, &x1, &y1, NULL);
evas_canvas3d_node_bounding_box_get(NULL, NULL, NULL, &x1, &y1, NULL));
for (i = 0; i < globalscene.row; ++i) for (i = 0; i < globalscene.row; ++i)
{ {
@ -152,7 +151,7 @@ void _recalculate_position()
{ {
shifty = (j * 2 - globalscene.col) * y1; shifty = (j * 2 - globalscene.col) * y1;
m = (Test_object *)eina_list_nth(globalscene.spheres, count); m = (Test_object *)eina_list_nth(globalscene.spheres, count);
eo_do(m->node, evas_canvas3d_node_position_set(shifty, 0.0, shiftx)); evas_canvas3d_node_position_set(m->node, shifty, 0.0, shiftx);
count++; count++;
} }
} }
@ -167,31 +166,29 @@ _on_key_down(void *data EINA_UNUSED, Evas *e EINA_UNUSED,
Test_object * item; Test_object * item;
if (!strcmp(ev->key, "Down")) if (!strcmp(ev->key, "Down"))
{ {
eo_do(globalscene.camera_node, evas_canvas3d_node_position_get(EVAS_CANVAS3D_SPACE_PARENT, &x, &y, &z), evas_canvas3d_node_position_get(globalscene.camera_node, EVAS_CANVAS3D_SPACE_PARENT, &x, &y, &z);
evas_canvas3d_node_position_set(x, y, (z - 5))); evas_canvas3d_node_position_set(globalscene.camera_node, x, y, (z - 5));
} }
else if (!strcmp(ev->key, "Up")) else if (!strcmp(ev->key, "Up"))
{ {
eo_do(globalscene.camera_node, evas_canvas3d_node_position_get(EVAS_CANVAS3D_SPACE_PARENT, &x, &y, &z), evas_canvas3d_node_position_get(globalscene.camera_node, EVAS_CANVAS3D_SPACE_PARENT, &x, &y, &z);
evas_canvas3d_node_position_set(x, y, (z + 5))); evas_canvas3d_node_position_set(globalscene.camera_node, x, y, (z + 5));
} }
else if (!strcmp(ev->key, "Left")) else if (!strcmp(ev->key, "Left"))
{ {
eo_do(((Test_object *)eina_list_nth(globalscene.spheres, 0))->node, evas_canvas3d_node_scale_get(((Test_object *)eina_list_nth(globalscene.spheres, 0))->node, EVAS_CANVAS3D_SPACE_PARENT, &x, &y, &z);
evas_canvas3d_node_scale_get(EVAS_CANVAS3D_SPACE_PARENT, &x, &y, &z));
EINA_LIST_FOREACH(globalscene.spheres, l, item) EINA_LIST_FOREACH(globalscene.spheres, l, item)
{ {
eo_do(item->node, evas_canvas3d_node_scale_set((x - SCALE_UNIT), (y - SCALE_UNIT), (z - SCALE_UNIT))); evas_canvas3d_node_scale_set(item->node, (x - SCALE_UNIT), (y - SCALE_UNIT), (z - SCALE_UNIT));
} }
_recalculate_position(); _recalculate_position();
} }
else if (!strcmp(ev->key, "Right")) else if (!strcmp(ev->key, "Right"))
{ {
eo_do(((Test_object *)eina_list_nth(globalscene.spheres, 0))->node, evas_canvas3d_node_scale_get(((Test_object *)eina_list_nth(globalscene.spheres, 0))->node, EVAS_CANVAS3D_SPACE_PARENT, &x, &y, &z);
evas_canvas3d_node_scale_get(EVAS_CANVAS3D_SPACE_PARENT, &x, &y, &z));
EINA_LIST_FOREACH(globalscene.spheres, l, item) EINA_LIST_FOREACH(globalscene.spheres, l, item)
{ {
eo_do(item->node, evas_canvas3d_node_scale_set((x + SCALE_UNIT), (y + SCALE_UNIT), (z + SCALE_UNIT))); evas_canvas3d_node_scale_set(item->node, (x + SCALE_UNIT), (y + SCALE_UNIT), (z + SCALE_UNIT));
} }
_recalculate_position(); _recalculate_position();
} }
@ -212,27 +209,26 @@ _on_mouse_down(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *eo EINA
Eina_Bool flag; Eina_Bool flag;
if (ev->button == 1) if (ev->button == 1)
{ {
eo_do(globalscene.scene, evas_canvas3d_scene_color_pick_enable_set(EINA_TRUE)); evas_canvas3d_scene_color_pick_enable_set(globalscene.scene, EINA_TRUE);
eo_do(globalscene.scene, flag = evas_canvas3d_scene_pick(globalscene.scene, ev->canvas.x, ev->canvas.y, &n, &m, NULL, NULL);
flag = evas_canvas3d_scene_pick(ev->canvas.x, ev->canvas.y, &n, &m, NULL, NULL));
time = clock() - time; time = clock() - time;
diff_sec = ((float)time) / CLOCKS_PER_SEC / 10; diff_sec = ((float)time) / CLOCKS_PER_SEC / 10;
if (flag) if (flag)
{ {
fprintf(stdout, "Boom! Time expended for color pick: %2.7f .\n", diff_sec); fprintf(stdout, "Boom! Time expended for color pick: %2.7f .\n", diff_sec);
eo_do(n, evas_canvas3d_node_scale_set(VEC_3(SMALL_SCALE))); evas_canvas3d_node_scale_set(n, VEC_3(SMALL_SCALE));
} }
} }
else else
{ {
eo_do(globalscene.scene, evas_canvas3d_scene_color_pick_enable_set(EINA_FALSE)); evas_canvas3d_scene_color_pick_enable_set(globalscene.scene, EINA_FALSE);
eo_do(globalscene.scene, flag = evas_canvas3d_scene_pick(ev->canvas.x, ev->canvas.y, &n, &m, &s, &t)); flag = evas_canvas3d_scene_pick(globalscene.scene, ev->canvas.x, ev->canvas.y, &n, &m, &s, &t);
time = clock() - time; time = clock() - time;
diff_sec = ((float)time) / CLOCKS_PER_SEC / 10; diff_sec = ((float)time) / CLOCKS_PER_SEC / 10;
if (flag) if (flag)
{ {
fprintf(stdout, "Boom! Time expended for geometry pick: %2.7f .\n", diff_sec); fprintf(stdout, "Boom! Time expended for geometry pick: %2.7f .\n", diff_sec);
eo_do(n, evas_canvas3d_node_scale_set(VEC_3(BIG_SCALE))); evas_canvas3d_node_scale_set(n, VEC_3(BIG_SCALE));
} }
} }
} }
@ -244,36 +240,27 @@ _init_sphere(void *this, const char *texture)
sphere->primitive = eo_add(EVAS_CANVAS3D_PRIMITIVE_CLASS, evas); sphere->primitive = eo_add(EVAS_CANVAS3D_PRIMITIVE_CLASS, evas);
sphere->mesh = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas); sphere->mesh = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas);
sphere->material = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas); sphere->material = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas);
eo_do(sphere->primitive, evas_canvas3d_primitive_form_set(sphere->primitive, EVAS_CANVAS3D_MESH_PRIMITIVE_SPHERE);
evas_canvas3d_primitive_form_set(EVAS_CANVAS3D_MESH_PRIMITIVE_SPHERE), evas_canvas3d_primitive_precision_set(sphere->primitive, 50);
evas_canvas3d_primitive_precision_set(50)); evas_canvas3d_mesh_from_primitive_set(sphere->mesh, 0, sphere->primitive);
eo_do(sphere->mesh, evas_canvas3d_mesh_frame_material_set(sphere->mesh, 0, sphere->material);
evas_canvas3d_mesh_from_primitive_set(0, sphere->primitive), evas_canvas3d_mesh_shade_mode_set(sphere->mesh, EVAS_CANVAS3D_SHADE_MODE_PHONG);
evas_canvas3d_mesh_frame_material_set(0, sphere->material),
evas_canvas3d_mesh_shade_mode_set(EVAS_CANVAS3D_SHADE_MODE_PHONG));
eo_do(sphere->mesh, evas_canvas3d_mesh_color_pick_enable_set(EINA_TRUE)); evas_canvas3d_mesh_color_pick_enable_set(sphere->mesh, EINA_TRUE);
sphere->texture = eo_add(EVAS_CANVAS3D_TEXTURE_CLASS, evas); sphere->texture = eo_add(EVAS_CANVAS3D_TEXTURE_CLASS, evas);
eo_do(sphere->texture, evas_canvas3d_texture_file_set(sphere->texture, texture, NULL);
evas_canvas3d_texture_file_set(texture, NULL), evas_canvas3d_texture_filter_set(sphere->texture, EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST, EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST);
evas_canvas3d_texture_filter_set(EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST, evas_canvas3d_texture_wrap_set(sphere->texture, EVAS_CANVAS3D_WRAP_MODE_REPEAT, EVAS_CANVAS3D_WRAP_MODE_REPEAT);
EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST), evas_canvas3d_material_texture_set(sphere->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, sphere->texture);
evas_canvas3d_texture_wrap_set(EVAS_CANVAS3D_WRAP_MODE_REPEAT, evas_canvas3d_material_enable_set(sphere->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE);
EVAS_CANVAS3D_WRAP_MODE_REPEAT)); evas_canvas3d_material_enable_set(sphere->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE);
eo_do(sphere->material, evas_canvas3d_material_enable_set(sphere->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE);
evas_canvas3d_material_texture_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, sphere->texture), evas_canvas3d_material_enable_set(sphere->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_NORMAL, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE), evas_canvas3d_material_color_set(sphere->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, 0.01, 0.01, 0.01, 1.0);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE), evas_canvas3d_material_color_set(sphere->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE), evas_canvas3d_material_color_set(sphere->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_NORMAL, EINA_TRUE), evas_canvas3d_material_shininess_set(sphere->material, 50.0);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT,
0.01, 0.01, 0.01, 1.0),
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE,
1.0, 1.0, 1.0, 1.0),
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR,
1.0, 1.0, 1.0, 1.0),
evas_canvas3d_material_shininess_set(50.0));
return EINA_TRUE; return EINA_TRUE;
} }
@ -287,41 +274,29 @@ _init_scene(const char *texture)
globalscene.scene = eo_add(EVAS_CANVAS3D_SCENE_CLASS, evas); globalscene.scene = eo_add(EVAS_CANVAS3D_SCENE_CLASS, evas);
globalscene.root_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, globalscene.root_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_NODE));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_NODE));
globalscene.camera = eo_add(EVAS_CANVAS3D_CAMERA_CLASS, evas); globalscene.camera = eo_add(EVAS_CANVAS3D_CAMERA_CLASS, evas);
eo_do(globalscene.camera, evas_canvas3d_camera_projection_perspective_set(globalscene.camera, 30.0, 1.0, 1.0, 1000.0);
evas_canvas3d_camera_projection_perspective_set(30.0, 1.0, 1.0, 1000.0));
globalscene.camera_node = globalscene.camera_node =
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_CAMERA));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_CAMERA)); evas_canvas3d_node_camera_set(globalscene.camera_node, globalscene.camera);
eo_do(globalscene.camera_node, evas_canvas3d_node_member_add(globalscene.root_node, globalscene.camera_node);
evas_canvas3d_node_camera_set(globalscene.camera)); evas_canvas3d_node_position_set(globalscene.camera_node, 0.0, 30.0, 800.0);
eo_do(globalscene.root_node, evas_canvas3d_node_look_at_set(globalscene.camera_node, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, -1000.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0);
evas_canvas3d_node_member_add(globalscene.camera_node));
eo_do(globalscene.camera_node,
evas_canvas3d_node_position_set(0.0, 30.0, 800.0),
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, -1000.0,
EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0));
globalscene.light = eo_add(EVAS_CANVAS3D_LIGHT_CLASS, evas); globalscene.light = eo_add(EVAS_CANVAS3D_LIGHT_CLASS, evas);
eo_do(globalscene.light, evas_canvas3d_light_ambient_set(globalscene.light, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_light_ambient_set(1.0, 1.0, 1.0, 1.0), evas_canvas3d_light_diffuse_set(globalscene.light, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_light_diffuse_set(1.0, 1.0, 1.0, 1.0), evas_canvas3d_light_specular_set(globalscene.light, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_light_specular_set(1.0, 1.0, 1.0, 1.0), evas_canvas3d_light_directional_set(globalscene.light, EINA_TRUE);
evas_canvas3d_light_directional_set(EINA_TRUE));
globalscene.light_node = globalscene.light_node =
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_LIGHT));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_LIGHT)); evas_canvas3d_node_light_set(globalscene.light_node, globalscene.light);
eo_do(globalscene.light_node, evas_canvas3d_node_position_set(globalscene.light_node, 100.0, 50.0, 300.0);
evas_canvas3d_node_light_set(globalscene.light), evas_canvas3d_node_look_at_set(globalscene.light_node, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 1.0, 1.0, 1.0);
evas_canvas3d_node_position_set(100.0, 50.0, 300.0), evas_canvas3d_node_member_add(globalscene.root_node, globalscene.light_node);
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0,
EVAS_CANVAS3D_SPACE_PARENT, 1.0, 1.0, 1.0));
eo_do(globalscene.root_node,
evas_canvas3d_node_member_add(globalscene.light_node));
tmp = 0.01; tmp = 0.01;
for (i = 0; i < globalscene.col * globalscene.row; i++) for (i = 0; i < globalscene.col * globalscene.row; i++)
@ -338,24 +313,22 @@ _init_scene(const char *texture)
m->material = spheretmp->material; m->material = spheretmp->material;
m->texture = spheretmp->texture; m->texture = spheretmp->texture;
} }
m->node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, m->node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_MESH));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_MESH));
m->speed = tmp; m->speed = tmp;
m->sphere_animate = _animate_sphere; m->sphere_animate = _animate_sphere;
m->animate = ecore_timer_add(m->speed, m->sphere_animate, m); m->animate = ecore_timer_add(m->speed, m->sphere_animate, m);
eo_do(globalscene.root_node, evas_canvas3d_node_member_add(m->node)); evas_canvas3d_node_member_add(globalscene.root_node, m->node);
eo_do(m->node, evas_canvas3d_node_mesh_add(m->mesh), evas_canvas3d_node_mesh_add(m->node, m->mesh);
evas_canvas3d_node_scale_set(VEC_3(INIT_SCALE))); evas_canvas3d_node_scale_set(m->node, VEC_3(INIT_SCALE));
globalscene.spheres = eina_list_append(globalscene.spheres, m); globalscene.spheres = eina_list_append(globalscene.spheres, m);
tmp += 0.01; tmp += 0.01;
} }
_recalculate_position(); _recalculate_position();
eo_do(globalscene.scene, evas_canvas3d_scene_root_node_set(globalscene.scene, globalscene.root_node);
evas_canvas3d_scene_root_node_set(globalscene.root_node), evas_canvas3d_scene_camera_node_set(globalscene.scene, globalscene.camera_node);
evas_canvas3d_scene_camera_node_set(globalscene.camera_node), evas_canvas3d_scene_size_set(globalscene.scene, WIDTH, HEIGHT);
evas_canvas3d_scene_size_set(WIDTH, HEIGHT));
return EINA_TRUE; return EINA_TRUE;
} }
@ -410,11 +383,10 @@ int main(int argc, char **argv)
image = evas_object_image_filled_add(evas); image = evas_object_image_filled_add(evas);
eo_do(image, efl_gfx_size_set(image, WIDTH, HEIGHT);
efl_gfx_size_set(WIDTH, HEIGHT), efl_gfx_visible_set(image, EINA_TRUE);
efl_gfx_visible_set(EINA_TRUE));
evas_object_focus_set(image, EINA_TRUE); evas_object_focus_set(image, EINA_TRUE);
eo_do(image, evas_obj_image_scene_set(globalscene.scene)); evas_obj_image_scene_set(image, globalscene.scene);
r = evas_object_key_grab(image, "Down", 0, 0, EINA_TRUE); r = evas_object_key_grab(image, "Down", 0, 0, EINA_TRUE);
r = evas_object_key_grab(image, "Up", 0, 0, EINA_TRUE); r = evas_object_key_grab(image, "Up", 0, 0, EINA_TRUE);

View File

@ -89,7 +89,7 @@ _rotate_x_reload(Evas_Canvas3D_Scene *eo_scene, Evas_Event_Mouse_Down *ev, Evas_
Evas_Real s, t; Evas_Real s, t;
int mouse_diff; int mouse_diff;
eo_do(eo_scene, evas_canvas3d_scene_pick(ev->canvas.x, ev->canvas.y, &n, &m, &s, &t)); evas_canvas3d_scene_pick(eo_scene, ev->canvas.x, ev->canvas.y, &n, &m, &s, &t);
if ((n == node) && (m == mesh)) if ((n == node) && (m == mesh))
{ {
@ -140,7 +140,7 @@ _animate_scene(void *data)
angle += sc->angle; angle += sc->angle;
eo_do(sc->mesh_node, evas_canvas3d_node_orientation_angle_axis_set(angle, 0, 1.0, 0.0)); evas_canvas3d_node_orientation_angle_axis_set(sc->mesh_node, angle, 0, 1.0, 0.0);
return EINA_TRUE; return EINA_TRUE;
} }
@ -149,39 +149,32 @@ static void
_camera_setup(Scene_Data *data) _camera_setup(Scene_Data *data)
{ {
data->camera = eo_add(EVAS_CANVAS3D_CAMERA_CLASS, evas); data->camera = eo_add(EVAS_CANVAS3D_CAMERA_CLASS, evas);
eo_do(data->camera, evas_canvas3d_camera_projection_perspective_set(data->camera, 20.0, 1.0, 2.0, 50.0);
evas_canvas3d_camera_projection_perspective_set(20.0, 1.0, 2.0, 50.0));
data->camera_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, data->camera_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_CAMERA));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_CAMERA)); evas_canvas3d_node_camera_set(data->camera_node, data->camera);
eo_do(data->camera_node, evas_canvas3d_node_position_set(data->camera_node, 3.0, 3.0, 10.0);
evas_canvas3d_node_camera_set(data->camera), evas_canvas3d_node_look_at_set(data->camera_node, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0);
evas_canvas3d_node_position_set(3.0, 3.0, 10.0),
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0));
eo_do(data->root_node, evas_canvas3d_node_member_add(data->camera_node)); evas_canvas3d_node_member_add(data->root_node, data->camera_node);
} }
static void static void
_light_setup(Scene_Data *data) _light_setup(Scene_Data *data)
{ {
data->light = eo_add(EVAS_CANVAS3D_LIGHT_CLASS,evas); data->light = eo_add(EVAS_CANVAS3D_LIGHT_CLASS, evas);
eo_do(data->light, evas_canvas3d_light_ambient_set(data->light, 0.2, 0.2, 0.2, 1.0);
evas_canvas3d_light_ambient_set(0.2, 0.2, 0.2, 1.0), evas_canvas3d_light_diffuse_set(data->light, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_light_diffuse_set(1.0, 1.0, 1.0, 1.0), evas_canvas3d_light_specular_set(data->light, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_light_specular_set(1.0, 1.0, 1.0, 1.0));
data->light_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, data->light_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_LIGHT));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_LIGHT));
eo_do(data->light_node, evas_canvas3d_node_light_set(data->light_node, data->light);
evas_canvas3d_node_light_set(data->light), evas_canvas3d_node_position_set(data->light_node, 5.0, 5.0, 10.0);
evas_canvas3d_node_position_set(5.0, 5.0, 10.0), evas_canvas3d_node_look_at_set(data->light_node, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0);
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0,
EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0));
eo_do(data->root_node, evas_canvas3d_node_member_add(data->light_node)); evas_canvas3d_node_member_add(data->root_node, data->light_node);
} }
static void static void
@ -190,51 +183,44 @@ _mesh_setup(Scene_Data *data)
/* Setup material. */ /* Setup material. */
data->material = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas); data->material = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas);
eo_do(data->material, evas_canvas3d_material_enable_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE), evas_canvas3d_material_enable_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE), evas_canvas3d_material_enable_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE), evas_canvas3d_material_color_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, 0.2, 0.2, 0.2, 1.0);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, 0.2, 0.2, 0.2, 1.0), evas_canvas3d_material_color_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, 0.8, 0.8, 0.8, 1.0);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, 0.8, 0.8, 0.8, 1.0), evas_canvas3d_material_color_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, 1.0, 1.0, 1.0, 1.0), evas_canvas3d_material_shininess_set(data->material, 100.0);
evas_canvas3d_material_shininess_set(100.0));
/* Setup primitive */ /* Setup primitive */
data->cube = eo_add(EVAS_CANVAS3D_PRIMITIVE_CLASS, evas); data->cube = eo_add(EVAS_CANVAS3D_PRIMITIVE_CLASS, evas);
eo_do(data->cube, evas_canvas3d_primitive_form_set(data->cube, EVAS_CANVAS3D_MESH_PRIMITIVE_CUBE);
evas_canvas3d_primitive_form_set(EVAS_CANVAS3D_MESH_PRIMITIVE_CUBE));
/* Setup mesh. */ /* Setup mesh. */
data->mesh = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas); data->mesh = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas);
eo_do(data->mesh, evas_canvas3d_mesh_from_primitive_set(data->mesh, 0, data->cube);
evas_canvas3d_mesh_from_primitive_set(0, data->cube), evas_canvas3d_mesh_shade_mode_set(data->mesh, EVAS_CANVAS3D_SHADE_MODE_PHONG);
evas_canvas3d_mesh_shade_mode_set(EVAS_CANVAS3D_SHADE_MODE_PHONG), evas_canvas3d_mesh_frame_material_set(data->mesh, 0, data->material);
evas_canvas3d_mesh_frame_material_set(0, data->material));
data->mesh_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_MESH)); data->mesh_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_MESH));
eo_do(data->root_node, evas_canvas3d_node_member_add(data->root_node, data->mesh_node);
evas_canvas3d_node_member_add(data->mesh_node)); evas_canvas3d_node_mesh_add(data->mesh_node, data->mesh);
eo_do(data->mesh_node, evas_canvas3d_node_mesh_add(data->mesh));
} }
static void static void
_scene_setup(Scene_Data *data) _scene_setup(Scene_Data *data)
{ {
scene = eo_add(EVAS_CANVAS3D_SCENE_CLASS, evas); scene = eo_add(EVAS_CANVAS3D_SCENE_CLASS, evas);
data->root_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, data->root_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_NODE));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_NODE));
eo_do(scene, evas_canvas3d_scene_size_set(scene, WIDTH, HEIGHT);
evas_canvas3d_scene_size_set(WIDTH, HEIGHT), evas_canvas3d_scene_background_color_set(scene, 0.0, 0.0, 0.0, 0.0);
evas_canvas3d_scene_background_color_set(0.0, 0.0, 0.0, 0.0));
_camera_setup(data); _camera_setup(data);
_light_setup(data); _light_setup(data);
_mesh_setup(data); _mesh_setup(data);
eo_do(scene, evas_canvas3d_scene_root_node_set(scene, data->root_node);
evas_canvas3d_scene_root_node_set(data->root_node), evas_canvas3d_scene_camera_node_set(scene, data->camera_node);
evas_canvas3d_scene_camera_node_set(data->camera_node));
data->mouse_old_x = 0; data->mouse_old_x = 0;
data->mouse_diff_x = 0; data->mouse_diff_x = 0;
@ -276,8 +262,7 @@ main(void)
evas_object_show(image); evas_object_show(image);
/* Set the image object as render target for 3D scene. */ /* Set the image object as render target for 3D scene. */
eo_do(image, evas_obj_image_scene_set(image, scene);
evas_obj_image_scene_set(scene));
evas_object_focus_set(image, EINA_TRUE); evas_object_focus_set(image, EINA_TRUE);

View File

@ -110,8 +110,8 @@ _on_canvas_resize(Ecore_Evas *ee)
int w, h; int w, h;
ecore_evas_geometry_get(ee, NULL, NULL, &w, &h); ecore_evas_geometry_get(ee, NULL, NULL, &w, &h);
eo_do(background, efl_gfx_size_set(w, h)); efl_gfx_size_set(background, w, h);
eo_do(image, efl_gfx_size_set(w, h)); efl_gfx_size_set(image, w, h);
} }
static Eina_Bool static Eina_Bool
@ -122,8 +122,7 @@ _animate_scene(void *data)
angle += 0.5; angle += 0.5;
eo_do(scene->mesh_node, evas_canvas3d_node_orientation_angle_axis_set(scene->mesh_node, angle, 1.0, 1.0, 1.0);
evas_canvas3d_node_orientation_angle_axis_set(angle, 1.0, 1.0, 1.0));
/* Rotate */ /* Rotate */
if (angle > 360.0) angle -= 360.0f; if (angle > 360.0) angle -= 360.0f;
@ -136,38 +135,30 @@ _camera_setup(Scene_Data *data)
{ {
data->camera = eo_add(EVAS_CANVAS3D_CAMERA_CLASS, evas); data->camera = eo_add(EVAS_CANVAS3D_CAMERA_CLASS, evas);
eo_do(data->camera, evas_canvas3d_camera_projection_perspective_set(data->camera, 60.0, 1.0, 2.0, 50.0);
evas_canvas3d_camera_projection_perspective_set(60.0, 1.0, 2.0, 50.0));
data->camera_node = data->camera_node =
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_CAMERA));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_CAMERA)); evas_canvas3d_node_camera_set(data->camera_node, data->camera);
eo_do(data->camera_node, evas_canvas3d_node_position_set(data->camera_node, 0.0, 0.0, 10.0);
evas_canvas3d_node_camera_set(data->camera), evas_canvas3d_node_look_at_set(data->camera_node, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0);
evas_canvas3d_node_position_set(0.0, 0.0, 10.0), evas_canvas3d_node_member_add(data->root_node, data->camera_node);
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0,
EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0));
eo_do(data->root_node, evas_canvas3d_node_member_add(data->camera_node));
} }
static void static void
_light_setup(Scene_Data *data) _light_setup(Scene_Data *data)
{ {
data->light = eo_add(EVAS_CANVAS3D_LIGHT_CLASS, evas); data->light = eo_add(EVAS_CANVAS3D_LIGHT_CLASS, evas);
eo_do(data->light, evas_canvas3d_light_ambient_set(data->light, 0.2, 0.2, 0.2, 1.0);
evas_canvas3d_light_ambient_set(0.2, 0.2, 0.2, 1.0), evas_canvas3d_light_diffuse_set(data->light, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_light_diffuse_set(1.0, 1.0, 1.0, 1.0), evas_canvas3d_light_specular_set(data->light, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_light_specular_set(1.0, 1.0, 1.0, 1.0));
data->light_node = data->light_node =
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_LIGHT));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_LIGHT)); evas_canvas3d_node_light_set(data->light_node, data->light);
eo_do(data->light_node, evas_canvas3d_node_position_set(data->light_node, 0.0, 0.0, 10.0);
evas_canvas3d_node_light_set(data->light), evas_canvas3d_node_look_at_set(data->light_node, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0);
evas_canvas3d_node_position_set(0.0, 0.0, 10.0), evas_canvas3d_node_member_add(data->root_node, data->light_node);
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0,
EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0));
eo_do(data->root_node, evas_canvas3d_node_member_add(data->light_node));
} }
static void static void
_mesh_setup(Scene_Data *data) _mesh_setup(Scene_Data *data)
@ -175,65 +166,49 @@ _mesh_setup(Scene_Data *data)
/* Setup material. */ /* Setup material. */
data->material = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas); data->material = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas);
eo_do(data->material, evas_canvas3d_material_enable_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE), evas_canvas3d_material_enable_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE), evas_canvas3d_material_enable_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE), evas_canvas3d_material_color_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, 0.2, 0.2, 0.2, 1.0);
evas_canvas3d_material_color_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, 0.8, 0.8, 0.8, 1.0);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, 0.2, 0.2, 0.2, 1.0), evas_canvas3d_material_color_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, 0.8, 0.8, 0.8, 1.0), evas_canvas3d_material_shininess_set(data->material, 100.0);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, 1.0, 1.0, 1.0, 1.0),
evas_canvas3d_material_shininess_set(100.0));
/* Setup mesh. */ /* Setup mesh. */
data->mesh = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas); data->mesh = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas);
eo_do(data->mesh, evas_canvas3d_mesh_vertex_count_set(data->mesh, 24);
evas_canvas3d_mesh_vertex_count_set(24), evas_canvas3d_mesh_frame_add(data->mesh, 0);
evas_canvas3d_mesh_frame_add(0), evas_canvas3d_mesh_frame_vertex_data_set(data->mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION, 12 * sizeof(float), &cube_vertices[ 0]);
evas_canvas3d_mesh_frame_vertex_data_set(data->mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_NORMAL, 12 * sizeof(float), &cube_vertices[ 3]);
evas_canvas3d_mesh_frame_vertex_data_set(0, EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION, evas_canvas3d_mesh_frame_vertex_data_set(data->mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_COLOR, 12 * sizeof(float), &cube_vertices[ 6]);
12 * sizeof(float), &cube_vertices[ 0]), evas_canvas3d_mesh_frame_vertex_data_set(data->mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_TEXCOORD, 12 * sizeof(float), &cube_vertices[10]);
evas_canvas3d_mesh_frame_vertex_data_set(0, EVAS_CANVAS3D_VERTEX_ATTRIB_NORMAL, evas_canvas3d_mesh_index_data_set(data->mesh, EVAS_CANVAS3D_INDEX_FORMAT_UNSIGNED_SHORT, 36, &cube_indices[0]);
12 * sizeof(float), &cube_vertices[ 3]), evas_canvas3d_mesh_vertex_assembly_set(data->mesh, EVAS_CANVAS3D_VERTEX_ASSEMBLY_TRIANGLES);
evas_canvas3d_mesh_frame_vertex_data_set(0, EVAS_CANVAS3D_VERTEX_ATTRIB_COLOR, evas_canvas3d_mesh_shade_mode_set(data->mesh, EVAS_CANVAS3D_SHADE_MODE_PHONG);
12 * sizeof(float), &cube_vertices[ 6]), evas_canvas3d_mesh_frame_material_set(data->mesh, 0, data->material);
evas_canvas3d_mesh_frame_vertex_data_set(0, EVAS_CANVAS3D_VERTEX_ATTRIB_TEXCOORD,
12 * sizeof(float), &cube_vertices[10]),
evas_canvas3d_mesh_index_data_set(EVAS_CANVAS3D_INDEX_FORMAT_UNSIGNED_SHORT,
36, &cube_indices[0]),
evas_canvas3d_mesh_vertex_assembly_set(EVAS_CANVAS3D_VERTEX_ASSEMBLY_TRIANGLES),
evas_canvas3d_mesh_shade_mode_set(EVAS_CANVAS3D_SHADE_MODE_PHONG),
evas_canvas3d_mesh_frame_material_set(0, data->material));
data->mesh_node = data->mesh_node =
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_MESH));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_MESH)); evas_canvas3d_node_member_add(data->root_node, data->mesh_node);
eo_do(data->root_node, evas_canvas3d_node_member_add(data->mesh_node)); evas_canvas3d_node_mesh_add(data->mesh_node, data->mesh);
eo_do(data->mesh_node, evas_canvas3d_node_mesh_add(data->mesh));
} }
static void static void
_scene_setup(Scene_Data *data) _scene_setup(Scene_Data *data)
{ {
data->scene = eo_add(EVAS_CANVAS3D_SCENE_CLASS, evas); data->scene = eo_add(EVAS_CANVAS3D_SCENE_CLASS, evas);
eo_do(data->scene, evas_canvas3d_scene_size_set(data->scene, WIDTH, HEIGHT);
evas_canvas3d_scene_size_set(WIDTH, HEIGHT); evas_canvas3d_scene_background_color_set(data->scene, 0.0, 0.0, 0.0, 0.0);
evas_canvas3d_scene_background_color_set(0.0, 0.0, 0.0, 0.0));
data->root_node = data->root_node =
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_NODE));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_NODE));
_camera_setup(data); _camera_setup(data);
_light_setup(data); _light_setup(data);
_mesh_setup(data); _mesh_setup(data);
eo_do(data->scene, evas_canvas3d_scene_root_node_set(data->scene, data->root_node);
evas_canvas3d_scene_root_node_set(data->root_node), evas_canvas3d_scene_camera_node_set(data->scene, data->camera_node);
evas_canvas3d_scene_camera_node_set(data->camera_node));
} }
int int
@ -259,19 +234,17 @@ main(void)
/* Add a background rectangle objects. */ /* Add a background rectangle objects. */
background = eo_add(EVAS_RECTANGLE_CLASS, evas); background = eo_add(EVAS_RECTANGLE_CLASS, evas);
eo_do(background, efl_gfx_color_set(background, 0, 0, 0, 255);
efl_gfx_color_set(0, 0, 0, 255), efl_gfx_size_set(background, WIDTH, HEIGHT);
efl_gfx_size_set(WIDTH, HEIGHT), efl_gfx_visible_set(background, EINA_TRUE);
efl_gfx_visible_set(EINA_TRUE));
/* Add an image object for 3D scene rendering. */ /* Add an image object for 3D scene rendering. */
image = evas_object_image_filled_add(evas); image = evas_object_image_filled_add(evas);
eo_do(image, efl_gfx_size_set(image, WIDTH, HEIGHT);
efl_gfx_size_set(WIDTH, HEIGHT), efl_gfx_visible_set(image, EINA_TRUE);
efl_gfx_visible_set(EINA_TRUE));
/* Set the image object as render target for 3D scene. */ /* Set the image object as render target for 3D scene. */
eo_do(image, evas_obj_image_scene_set(data.scene)); evas_obj_image_scene_set(image, data.scene);
/* Add animation timer callback. */ /* Add animation timer callback. */
ecore_timer_add(0.016, _animate_scene, &data); ecore_timer_add(0.016, _animate_scene, &data);

View File

@ -79,8 +79,8 @@ _on_canvas_resize(Ecore_Evas *ee)
int w, h; int w, h;
ecore_evas_geometry_get(ee, NULL, NULL, &w, &h); ecore_evas_geometry_get(ee, NULL, NULL, &w, &h);
eo_do(background, efl_gfx_size_set(w, h)); efl_gfx_size_set(background, w, h);
eo_do(image, efl_gfx_size_set(w, h)); efl_gfx_size_set(image, w, h);
} }
static Eina_Bool static Eina_Bool
@ -93,8 +93,7 @@ _animate_scene(void *data)
angle += 0.2; angle += 0.2;
eo_do(scene->mesh_node, evas_canvas3d_node_orientation_angle_axis_set(scene->mesh_node, angle, 1.0, 1.0, 1.0);
evas_canvas3d_node_orientation_angle_axis_set(angle, 1.0, 1.0, 1.0));
/* Rotate */ /* Rotate */
if (angle > 360.0) angle -= 360.0f; if (angle > 360.0) angle -= 360.0f;
@ -104,7 +103,7 @@ _animate_scene(void *data)
if (frame >= 20) inc = -1; if (frame >= 20) inc = -1;
else if (frame <= 0) inc = 1; else if (frame <= 0) inc = 1;
eo_do(scene->mesh_node, evas_canvas3d_node_mesh_frame_set(scene->mesh, frame)); evas_canvas3d_node_mesh_frame_set(scene->mesh_node, scene->mesh, frame);
return EINA_TRUE; return EINA_TRUE;
} }
@ -113,39 +112,30 @@ static void
_camera_setup(Scene_Data *data) _camera_setup(Scene_Data *data)
{ {
data->camera = eo_add(EVAS_CANVAS3D_CAMERA_CLASS, evas); data->camera = eo_add(EVAS_CANVAS3D_CAMERA_CLASS, evas);
eo_do(data->camera, evas_canvas3d_camera_projection_perspective_set(data->camera, 60.0, 1.0, 2.0, 50.0);
evas_canvas3d_camera_projection_perspective_set(60.0, 1.0, 2.0, 50.0));
data->camera_node = data->camera_node =
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_CAMERA));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_CAMERA)); evas_canvas3d_node_camera_set(data->camera_node, data->camera);
eo_do(data->camera_node, evas_canvas3d_node_position_set(data->camera_node, 0.0, 0.0, 3.0);
evas_canvas3d_node_camera_set(data->camera), evas_canvas3d_node_look_at_set(data->camera_node, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0);
evas_canvas3d_node_position_set(0.0, 0.0, 3.0), evas_canvas3d_node_member_add(data->root_node, data->camera_node);
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0,
EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0));
eo_do(data->root_node,
evas_canvas3d_node_member_add(data->camera_node));
} }
static void static void
_light_setup(Scene_Data *data) _light_setup(Scene_Data *data)
{ {
data->light = eo_add(EVAS_CANVAS3D_LIGHT_CLASS, evas); data->light = eo_add(EVAS_CANVAS3D_LIGHT_CLASS, evas);
eo_do(data->light, evas_canvas3d_light_ambient_set(data->light, 0.2, 0.2, 0.2, 1.0);
evas_canvas3d_light_ambient_set(0.2, 0.2, 0.2, 1.0), evas_canvas3d_light_diffuse_set(data->light, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_light_diffuse_set(1.0, 1.0, 1.0, 1.0), evas_canvas3d_light_specular_set(data->light, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_light_specular_set(1.0, 1.0, 1.0, 1.0));
data->light_node = data->light_node =
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_LIGHT));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_LIGHT)); evas_canvas3d_node_light_set(data->light_node, data->light);
eo_do(data->light_node, evas_canvas3d_node_position_set(data->light_node, 0.0, 0.0, 10.0);
evas_canvas3d_node_light_set(data->light), evas_canvas3d_node_look_at_set(data->light_node, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0);
evas_canvas3d_node_position_set(0.0, 0.0, 10.0), evas_canvas3d_node_member_add(data->root_node, data->light_node);
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0,
EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0));
eo_do(data->root_node, evas_canvas3d_node_member_add(data->light_node));
} }
static void static void
@ -155,86 +145,70 @@ _mesh_setup(Scene_Data *data)
data->material0 = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas); data->material0 = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas);
data->material1 = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas); data->material1 = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas);
eo_do(data->material0, evas_canvas3d_material_enable_set(data->material0, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE), evas_canvas3d_material_enable_set(data->material0, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE), evas_canvas3d_material_enable_set(data->material0, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE), evas_canvas3d_material_enable_set(data->material0, EVAS_CANVAS3D_MATERIAL_ATTRIB_NORMAL, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_NORMAL, EINA_TRUE), evas_canvas3d_material_color_set(data->material0, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, 0.2, 0.2, 0.2, 1.0);
evas_canvas3d_material_color_set(data->material0, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, 0.8, 0.8, 0.8, 1.0);
evas_canvas3d_material_color_set(data->material0, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_material_shininess_set(data->material0, 100.0);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, 0.2, 0.2, 0.2, 1.0), evas_canvas3d_material_enable_set(data->material1, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, 0.8, 0.8, 0.8, 1.0), evas_canvas3d_material_enable_set(data->material1, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, 1.0, 1.0, 1.0, 1.0), evas_canvas3d_material_enable_set(data->material1, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE);
evas_canvas3d_material_shininess_set(100.0)); evas_canvas3d_material_enable_set(data->material1, EVAS_CANVAS3D_MATERIAL_ATTRIB_NORMAL, EINA_TRUE);
evas_canvas3d_material_color_set(data->material1, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, 0.2, 0.2, 0.2, 1.0);
eo_do(data->material1, evas_canvas3d_material_color_set(data->material1, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, 0.8, 0.8, 0.8, 1.0);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE), evas_canvas3d_material_color_set(data->material1, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE), evas_canvas3d_material_shininess_set(data->material1, 100.0);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE),
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_NORMAL, EINA_TRUE),
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, 0.2, 0.2, 0.2, 1.0),
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, 0.8, 0.8, 0.8, 1.0),
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, 1.0, 1.0, 1.0, 1.0),
evas_canvas3d_material_shininess_set(100.0));
data->texture0 = eo_add(EVAS_CANVAS3D_TEXTURE_CLASS, evas); data->texture0 = eo_add(EVAS_CANVAS3D_TEXTURE_CLASS, evas);
data->texture1 = eo_add(EVAS_CANVAS3D_TEXTURE_CLASS, evas); data->texture1 = eo_add(EVAS_CANVAS3D_TEXTURE_CLASS, evas);
data->texture_normal = eo_add(EVAS_CANVAS3D_TEXTURE_CLASS, evas); data->texture_normal = eo_add(EVAS_CANVAS3D_TEXTURE_CLASS, evas);
eo_do(data->texture0, evas_canvas3d_texture_data_set(data->texture0, EVAS_COLORSPACE_ARGB8888, 4, 4, &pixels0[0]);
evas_canvas3d_texture_data_set(EVAS_COLORSPACE_ARGB8888, 4, 4, &pixels0[0])); evas_canvas3d_texture_data_set(data->texture1, EVAS_COLORSPACE_ARGB8888, 4, 4, &pixels1[0]);
eo_do(data->texture1, evas_canvas3d_texture_file_set(data->texture_normal, normal_map_path, NULL);
evas_canvas3d_texture_data_set(EVAS_COLORSPACE_ARGB8888, 4, 4, &pixels1[0]));
eo_do(data->texture_normal,
evas_canvas3d_texture_file_set(normal_map_path, NULL));
eo_do(data->material0, evas_canvas3d_material_texture_set(data->material0, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, data->texture0);
evas_canvas3d_material_texture_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, data->texture0)); evas_canvas3d_material_texture_set(data->material1, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, data->texture1);
eo_do(data->material1, evas_canvas3d_material_texture_set(data->material1, EVAS_CANVAS3D_MATERIAL_ATTRIB_NORMAL, data->texture_normal);
evas_canvas3d_material_texture_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, data->texture1));
eo_do(data->material1,
evas_canvas3d_material_texture_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_NORMAL, data->texture_normal));
/* Set data of primitive */ /* Set data of primitive */
data->cube = eo_add(EVAS_CANVAS3D_PRIMITIVE_CLASS, evas); data->cube = eo_add(EVAS_CANVAS3D_PRIMITIVE_CLASS, evas);
eo_do(data->cube, evas_canvas3d_primitive_form_set(data->cube, EVAS_CANVAS3D_MESH_PRIMITIVE_CUBE);
evas_canvas3d_primitive_form_set(EVAS_CANVAS3D_MESH_PRIMITIVE_CUBE));
/* Setup mesh. */ /* Setup mesh. */
data->mesh = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas); data->mesh = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas);
eo_do(data->mesh, evas_canvas3d_mesh_from_primitive_set(data->mesh, 0, data->cube);
evas_canvas3d_mesh_from_primitive_set(0, data->cube), evas_canvas3d_mesh_frame_material_set(data->mesh, 0, data->material0);
evas_canvas3d_mesh_frame_material_set(0, data->material0), evas_canvas3d_mesh_frame_add(data->mesh, 20);
evas_canvas3d_mesh_frame_add(20), evas_canvas3d_mesh_frame_material_set(data->mesh, 20, data->material1);
evas_canvas3d_mesh_frame_material_set(20, data->material1), evas_canvas3d_mesh_shade_mode_set(data->mesh, EVAS_CANVAS3D_SHADE_MODE_NORMAL_MAP);
evas_canvas3d_mesh_shade_mode_set(EVAS_CANVAS3D_SHADE_MODE_NORMAL_MAP));
data->mesh_node = data->mesh_node =
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_MESH));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_MESH)); evas_canvas3d_node_member_add(data->root_node, data->mesh_node);
eo_do(data->root_node, evas_canvas3d_node_member_add(data->mesh_node)); evas_canvas3d_node_mesh_add(data->mesh_node, data->mesh);
eo_do(data->mesh_node, evas_canvas3d_node_mesh_add(data->mesh));
} }
static void static void
_scene_setup(Scene_Data *data) _scene_setup(Scene_Data *data)
{ {
data->scene = eo_add(EVAS_CANVAS3D_SCENE_CLASS, evas); data->scene = eo_add(EVAS_CANVAS3D_SCENE_CLASS, evas);
eo_do(data->scene, evas_canvas3d_scene_size_set(data->scene, WIDTH, HEIGHT);
evas_canvas3d_scene_size_set(WIDTH, HEIGHT), evas_canvas3d_scene_background_color_set(data->scene, 0.0, 0.0, 0.0, 0.0);
evas_canvas3d_scene_background_color_set(0.0, 0.0, 0.0, 0.0));
data->root_node = data->root_node =
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_NODE));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_NODE));
_camera_setup(data); _camera_setup(data);
_light_setup(data); _light_setup(data);
_mesh_setup(data); _mesh_setup(data);
eo_do(data->scene, evas_canvas3d_scene_root_node_set(data->scene, data->root_node);
evas_canvas3d_scene_root_node_set(data->root_node), evas_canvas3d_scene_camera_node_set(data->scene, data->camera_node);
evas_canvas3d_scene_camera_node_set(data->camera_node));
} }
int int
@ -261,19 +235,17 @@ main(void)
/* Add a background rectangle objects. */ /* Add a background rectangle objects. */
background = eo_add(EVAS_RECTANGLE_CLASS, evas); background = eo_add(EVAS_RECTANGLE_CLASS, evas);
eo_do(background, efl_gfx_color_set(background, 0, 0, 0, 255);
efl_gfx_color_set(0, 0, 0, 255), efl_gfx_size_set(background, WIDTH, HEIGHT);
efl_gfx_size_set(WIDTH, HEIGHT), efl_gfx_visible_set(background, EINA_TRUE);
efl_gfx_visible_set(EINA_TRUE));
/* Add an image object for 3D scene rendering. */ /* Add an image object for 3D scene rendering. */
image = evas_object_image_filled_add(evas); image = evas_object_image_filled_add(evas);
eo_do(image, efl_gfx_size_set(image, WIDTH, HEIGHT);
efl_gfx_size_set(WIDTH, HEIGHT), efl_gfx_visible_set(image, EINA_TRUE);
efl_gfx_visible_set(EINA_TRUE));
/* Set the image object as render target for 3D scene. */ /* Set the image object as render target for 3D scene. */
eo_do(image, evas_obj_image_scene_set(data.scene)); evas_obj_image_scene_set(image, data.scene);
/* Add animation timer callback. */ /* Add animation timer callback. */
ecore_timer_add(0.01, _animate_scene, &data); ecore_timer_add(0.01, _animate_scene, &data);

View File

@ -58,8 +58,7 @@ _animate_eet(void *data)
{ {
angle += 0.5; angle += 0.5;
eo_do((Evas_Canvas3D_Node *)data, evas_canvas3d_node_orientation_angle_axis_set((Evas_Canvas3D_Node *)data, angle, 1.0, 1.0, 1.0);
evas_canvas3d_node_orientation_angle_axis_set(angle, 1.0, 1.0, 1.0));
/* Rotate */ /* Rotate */
if (angle > 360.0) angle -= 360.0f; if (angle > 360.0) angle -= 360.0f;
@ -72,7 +71,7 @@ _animate_md2(void *data)
{ {
static int frame = 0; static int frame = 0;
eo_do((Evas_Canvas3D_Node *)data, evas_canvas3d_node_mesh_frame_set(mesh, frame)); evas_canvas3d_node_mesh_frame_set((Evas_Canvas3D_Node *)data, mesh, frame);
frame += 32; frame += 32;
@ -93,8 +92,8 @@ _on_canvas_resize(Ecore_Evas *ee)
int w, h; int w, h;
ecore_evas_geometry_get(ee, NULL, NULL, &w, &h); ecore_evas_geometry_get(ee, NULL, NULL, &w, &h);
eo_do(background, efl_gfx_size_set(w, h)); efl_gfx_size_set(background, w, h);
eo_do(image, efl_gfx_size_set(w, h)); efl_gfx_size_set(image, w, h);
} }
int int
@ -119,113 +118,86 @@ main(void)
scene = eo_add(EVAS_CANVAS3D_SCENE_CLASS, evas); scene = eo_add(EVAS_CANVAS3D_SCENE_CLASS, evas);
/* Add the root node for the scene. */ /* Add the root node for the scene. */
root_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, root_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_NODE));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_NODE));
/* Add the camera. */ /* Add the camera. */
camera = eo_add(EVAS_CANVAS3D_CAMERA_CLASS, evas); camera = eo_add(EVAS_CANVAS3D_CAMERA_CLASS, evas);
eo_do(camera, evas_canvas3d_camera_projection_perspective_set(camera, 60.0, 1.0, 1.0, 500.0);
evas_canvas3d_camera_projection_perspective_set(60.0, 1.0, 1.0, 500.0));
camera_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, camera_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_CAMERA));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_CAMERA)); evas_canvas3d_node_camera_set(camera_node, camera);
eo_do(camera_node, evas_canvas3d_node_member_add(root_node, camera_node);
evas_canvas3d_node_camera_set(camera)); evas_canvas3d_node_position_set(camera_node, 200.0, 0.0, 40.0);
eo_do(root_node, evas_canvas3d_node_look_at_set(camera_node, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 20.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 1.0);
evas_canvas3d_node_member_add(camera_node));
eo_do(camera_node,
evas_canvas3d_node_position_set(200.0, 0.0, 40.0),
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 20.0,
EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 1.0));
/* Add the light. */ /* Add the light. */
light = eo_add(EVAS_CANVAS3D_LIGHT_CLASS, evas); light = eo_add(EVAS_CANVAS3D_LIGHT_CLASS, evas);
eo_do(light, evas_canvas3d_light_ambient_set(light, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_light_ambient_set(1.0, 1.0, 1.0, 1.0), evas_canvas3d_light_diffuse_set(light, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_light_diffuse_set(1.0, 1.0, 1.0, 1.0), evas_canvas3d_light_specular_set(light, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_light_specular_set(1.0, 1.0, 1.0, 1.0), evas_canvas3d_light_directional_set(light, EINA_TRUE);
evas_canvas3d_light_directional_set(EINA_TRUE));
light_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, light_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_LIGHT));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_LIGHT)); evas_canvas3d_node_light_set(light_node, light);
eo_do(light_node, evas_canvas3d_node_position_set(light_node, 1000.0, 0.0, 1000.0);
evas_canvas3d_node_light_set(light), evas_canvas3d_node_look_at_set(light_node, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0);
evas_canvas3d_node_position_set(1000.0, 0.0, 1000.0), evas_canvas3d_node_member_add(root_node, light_node);
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0,
EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0));
eo_do(root_node,
evas_canvas3d_node_member_add(light_node));
/* Add the meshes. */ /* Add the meshes. */
mesh = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas); mesh = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas);
mesh2 = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas); mesh2 = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas);
material = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas); material = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas);
eo_do(mesh, efl_file_set(mesh, input_model_path, NULL);
efl_file_set(input_model_path, NULL), evas_canvas3d_mesh_frame_material_set(mesh, 0, material);
evas_canvas3d_mesh_frame_material_set(0, material), evas_canvas3d_mesh_shade_mode_set(mesh, EVAS_CANVAS3D_SHADE_MODE_PHONG);
evas_canvas3d_mesh_shade_mode_set(EVAS_CANVAS3D_SHADE_MODE_PHONG));
eo_do(material, evas_canvas3d_material_enable_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE), evas_canvas3d_material_enable_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE), evas_canvas3d_material_enable_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE), evas_canvas3d_material_enable_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_NORMAL, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_NORMAL, EINA_TRUE), evas_canvas3d_material_color_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, 0.50, 0.50, 0.00, 0.30);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, evas_canvas3d_material_color_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, 0.00, 0.50, 0.50, 0.30);
0.50, 0.50, 0.00, 0.30), evas_canvas3d_material_color_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, 0.50, 0.00, 0.50, 0.30);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, evas_canvas3d_material_shininess_set(material, 50.0);
0.00, 0.50, 0.50, 0.30),
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR,
0.50, 0.00, 0.50, 0.30),
evas_canvas3d_material_shininess_set(50.0));
if (!ecore_file_mkpath(PACKAGE_EXAMPLES_DIR EVAS_SAVED_FILES)) if (!ecore_file_mkpath(PACKAGE_EXAMPLES_DIR EVAS_SAVED_FILES))
fprintf(stderr, "Failed to create folder %s\n\n", fprintf(stderr, "Failed to create folder %s\n\n",
PACKAGE_EXAMPLES_DIR EVAS_SAVED_FILES); PACKAGE_EXAMPLES_DIR EVAS_SAVED_FILES);
eo_do(mesh, efl_file_save(output_model_path, NULL, NULL)); efl_file_save(mesh, output_model_path, NULL, NULL);
eo_do(mesh2, efl_file_set(mesh2, output_model_path, NULL);
efl_file_set(output_model_path, NULL), evas_canvas3d_mesh_shade_mode_set(mesh2, EVAS_CANVAS3D_SHADE_MODE_PHONG);
evas_canvas3d_mesh_shade_mode_set(EVAS_CANVAS3D_SHADE_MODE_PHONG));
mesh_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, mesh_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_MESH));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_MESH));
eo_do(root_node, evas_canvas3d_node_member_add(root_node, mesh_node);
evas_canvas3d_node_member_add(mesh_node)); evas_canvas3d_node_mesh_add(mesh_node, mesh);
eo_do(mesh_node, evas_canvas3d_node_position_set(mesh_node, 0.0, -40.0, 0.0);
evas_canvas3d_node_mesh_add(mesh),
evas_canvas3d_node_position_set(0.0, -40.0, 0.0));
mesh_node2 = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, mesh_node2 = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_MESH));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_MESH)); evas_canvas3d_node_member_add(root_node, mesh_node2);
eo_do(root_node, evas_canvas3d_node_mesh_add(mesh_node2, mesh2);
evas_canvas3d_node_member_add(mesh_node2)); evas_canvas3d_node_position_set(mesh_node2, 0.0, 40.0, 0.0);
eo_do(mesh_node2,
evas_canvas3d_node_mesh_add(mesh2),
evas_canvas3d_node_position_set(0.0, 40.0, 0.0));
/* Set up scene. */ /* Set up scene. */
eo_do(scene, evas_canvas3d_scene_root_node_set(scene, root_node);
evas_canvas3d_scene_root_node_set(root_node), evas_canvas3d_scene_camera_node_set(scene, camera_node);
evas_canvas3d_scene_camera_node_set(camera_node), evas_canvas3d_scene_size_set(scene, WIDTH, HEIGHT);
evas_canvas3d_scene_size_set(WIDTH, HEIGHT));
/* Add a background rectangle objects. */ /* Add a background rectangle objects. */
background = eo_add(EVAS_RECTANGLE_CLASS, evas); background = eo_add(EVAS_RECTANGLE_CLASS, evas);
eo_do(background, efl_gfx_color_set(background, 0, 0, 0, 255);
efl_gfx_color_set(0, 0, 0, 255), efl_gfx_size_set(background, WIDTH, HEIGHT);
efl_gfx_size_set(WIDTH, HEIGHT), efl_gfx_visible_set(background, EINA_TRUE);
efl_gfx_visible_set(EINA_TRUE));
/* Add an image object for 3D scene rendering. */ /* Add an image object for 3D scene rendering. */
image = evas_object_image_filled_add(evas); image = evas_object_image_filled_add(evas);
eo_do(image, efl_gfx_size_set(image, WIDTH, HEIGHT);
efl_gfx_size_set(WIDTH, HEIGHT), efl_gfx_visible_set(image, EINA_TRUE);
efl_gfx_visible_set(EINA_TRUE));
/* Set the image object as render target for 3D scene. */ /* Set the image object as render target for 3D scene. */
eo_do(image, evas_obj_image_scene_set(scene)); evas_obj_image_scene_set(image, scene);
ecore_timer_add(0.01, _animate_md2, mesh_node); ecore_timer_add(0.01, _animate_md2, mesh_node);
ecore_timer_add(0.01, _animate_eet, mesh_node2); ecore_timer_add(0.01, _animate_eet, mesh_node2);

View File

@ -59,8 +59,8 @@ _on_canvas_resize(Ecore_Evas *ee)
ecore_evas_geometry_get(ee, NULL, NULL, &w, &h); ecore_evas_geometry_get(ee, NULL, NULL, &w, &h);
evas_object_resize(background, w, h); evas_object_resize(background, w, h);
eo_do(background, efl_gfx_size_set(w, h)); efl_gfx_size_set(background, w, h);
eo_do(image, efl_gfx_size_set(w, h)); efl_gfx_size_set(image, w, h);
} }
static Eina_Bool static Eina_Bool
@ -71,8 +71,7 @@ _animate_scene(void *data)
angle += 0.5; angle += 0.5;
eo_do(scene->animation_node, evas_canvas3d_node_orientation_angle_axis_set(scene->animation_node, angle, 0.0, 1.0, 0.0);
evas_canvas3d_node_orientation_angle_axis_set(angle, 0.0, 1.0, 0.0));
if (angle > 360.0) angle -= 360.0f; if (angle > 360.0) angle -= 360.0f;
@ -84,49 +83,40 @@ _camera_setup(Scene_Data *data)
{ {
data->camera = eo_add(EVAS_CANVAS3D_CAMERA_CLASS, evas); data->camera = eo_add(EVAS_CANVAS3D_CAMERA_CLASS, evas);
eo_do(data->camera, evas_canvas3d_camera_projection_perspective_set(data->camera, 60.0, 1.0, 2.0, 50.0);
evas_canvas3d_camera_projection_perspective_set(60.0, 1.0, 2.0, 50.0));
data->camera_node = data->camera_node =
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_CAMERA));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_CAMERA));
eo_do(data->camera_node, evas_canvas3d_node_camera_set(data->camera_node, data->camera);
evas_canvas3d_node_camera_set(data->camera), evas_canvas3d_node_position_set(data->camera_node, 0.0, 0.0, 7.0);
evas_canvas3d_node_position_set(0.0, 0.0, 7.0), evas_canvas3d_node_look_at_set(data->camera_node, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0);
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0,
EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0));
eo_do(data->root_node, evas_canvas3d_node_member_add(data->camera_node)); evas_canvas3d_node_member_add(data->root_node, data->camera_node);
} }
static void static void
_light_setup(Scene_Data *data) _light_setup(Scene_Data *data)
{ {
data->light = eo_add(EVAS_CANVAS3D_LIGHT_CLASS, evas); data->light = eo_add(EVAS_CANVAS3D_LIGHT_CLASS, evas);
eo_do(data->light, evas_canvas3d_light_ambient_set(data->light, 0.2, 0.2, 0.2, 1.0);
evas_canvas3d_light_ambient_set(0.2, 0.2, 0.2, 1.0), evas_canvas3d_light_diffuse_set(data->light, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_light_diffuse_set(1.0, 1.0, 1.0, 1.0), evas_canvas3d_light_specular_set(data->light, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_light_specular_set(1.0, 1.0, 1.0, 1.0));
data->light_node = data->light_node =
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_LIGHT));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_LIGHT)); evas_canvas3d_node_light_set(data->light_node, data->light);
eo_do(data->light_node, evas_canvas3d_node_position_set(data->light_node, 0.0, 0.0, 10.0);
evas_canvas3d_node_light_set(data->light), evas_canvas3d_node_look_at_set(data->light_node, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0);
evas_canvas3d_node_position_set(0.0, 0.0, 10.0), evas_canvas3d_node_member_add(data->root_node, data->light_node);
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0,
EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0));
eo_do(data->root_node, evas_canvas3d_node_member_add(data->light_node));
} }
static void static void
_set_ball(Eo *mesh, Eo *sphere, Evas_Canvas3D_Material *material) _set_ball(Eo *mesh, Eo *sphere, Evas_Canvas3D_Material *material)
{ {
eo_do(mesh, evas_canvas3d_mesh_from_primitive_set(mesh, 0, sphere);
evas_canvas3d_mesh_from_primitive_set(0, sphere), evas_canvas3d_mesh_shade_mode_set(mesh, EVAS_CANVAS3D_SHADE_MODE_PHONG);
evas_canvas3d_mesh_shade_mode_set(EVAS_CANVAS3D_SHADE_MODE_PHONG), evas_canvas3d_mesh_frame_material_set(mesh, 0, material);
evas_canvas3d_mesh_frame_material_set(0, material));
} }
@ -135,20 +125,17 @@ _mesh_setup(Scene_Data *data)
{ {
data->material = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas); data->material = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas);
eo_do(data->material, evas_canvas3d_material_enable_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE), evas_canvas3d_material_enable_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE), evas_canvas3d_material_enable_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE), evas_canvas3d_material_color_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, 0.2, 0.2, 0.2, 1.0);
evas_canvas3d_material_color_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, 0.8, 0.8, 0.8, 1.0);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, 0.2, 0.2, 0.2, 1.0), evas_canvas3d_material_color_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, 0.8, 0.8, 0.8, 1.0), evas_canvas3d_material_shininess_set(data->material, 100.0);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, 1.0, 1.0, 1.0, 1.0),
evas_canvas3d_material_shininess_set(100.0));
data->sphere = eo_add(EVAS_CANVAS3D_PRIMITIVE_CLASS, evas); data->sphere = eo_add(EVAS_CANVAS3D_PRIMITIVE_CLASS, evas);
eo_do(data->sphere, evas_canvas3d_primitive_form_set(data->sphere, EVAS_CANVAS3D_MESH_PRIMITIVE_SPHERE);
evas_canvas3d_primitive_form_set(EVAS_CANVAS3D_MESH_PRIMITIVE_SPHERE), evas_canvas3d_primitive_precision_set(data->sphere, 50);
evas_canvas3d_primitive_precision_set(50));
data->mesh = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas); data->mesh = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas);
data->mesh1 = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas); data->mesh1 = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas);
@ -157,28 +144,27 @@ _mesh_setup(Scene_Data *data)
_set_ball(data->mesh1, data->sphere, data->material); _set_ball(data->mesh1, data->sphere, data->material);
data->animation_node = data->animation_node =
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_NODE));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_NODE));
data->mesh_node = data->mesh_node =
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_MESH));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_MESH));
eo_do(data->animation_node, evas_canvas3d_node_member_add(data->mesh_node)); evas_canvas3d_node_member_add(data->animation_node, data->mesh_node);
eo_do(data->root_node, evas_canvas3d_node_member_add(data->animation_node)); evas_canvas3d_node_member_add(data->root_node, data->animation_node);
eo_do(data->mesh_node, evas_canvas3d_node_mesh_add(data->mesh), evas_canvas3d_node_mesh_add(data->mesh_node, data->mesh);
evas_canvas3d_node_position_set(0.0, 0.0, 3.0)); evas_canvas3d_node_position_set(data->mesh_node, 0.0, 0.0, 3.0);
data->mesh_node1 = data->mesh_node1 =
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_MESH));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_MESH));
eo_do(data->root_node, evas_canvas3d_node_member_add(data->mesh_node1)); evas_canvas3d_node_member_add(data->root_node, data->mesh_node1);
eo_do(data->mesh_node1, evas_canvas3d_node_mesh_add(data->mesh1), evas_canvas3d_node_mesh_add(data->mesh_node1, data->mesh1);
evas_canvas3d_node_scale_set(3, 3, 3)); evas_canvas3d_node_scale_set(data->mesh_node1, 3, 3, 3);
eo_do(data->mesh, evas_canvas3d_mesh_fog_enable_set(EINA_TRUE), evas_canvas3d_mesh_fog_color_set(FOG_COLOR, FOG_FACTOR)); evas_canvas3d_mesh_fog_enable_set(data->mesh, EINA_TRUE);
eo_do(data->mesh1, evas_canvas3d_mesh_fog_enable_set(EINA_TRUE), evas_canvas3d_mesh_fog_color_set(FOG_COLOR, FOG_FACTOR)); evas_canvas3d_mesh_fog_color_set(data->mesh, FOG_COLOR, FOG_FACTOR);
evas_canvas3d_mesh_fog_enable_set(data->mesh1, EINA_TRUE);
evas_canvas3d_mesh_fog_color_set(data->mesh1, FOG_COLOR, FOG_FACTOR);
} }
static void static void
@ -186,21 +172,18 @@ _scene_setup(Scene_Data *data)
{ {
data->scene = eo_add(EVAS_CANVAS3D_SCENE_CLASS, evas); data->scene = eo_add(EVAS_CANVAS3D_SCENE_CLASS, evas);
eo_do(data->scene, evas_canvas3d_scene_size_set(data->scene, WIDTH, HEIGHT);
evas_canvas3d_scene_size_set(WIDTH, HEIGHT); evas_canvas3d_scene_background_color_set(data->scene, FOG_COLOR, 1);
evas_canvas3d_scene_background_color_set(FOG_COLOR, 1));
data->root_node = data->root_node =
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_NODE));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_NODE));
_camera_setup(data); _camera_setup(data);
_light_setup(data); _light_setup(data);
_mesh_setup(data); _mesh_setup(data);
eo_do(data->scene, evas_canvas3d_scene_root_node_set(data->scene, data->root_node);
evas_canvas3d_scene_root_node_set(data->root_node), evas_canvas3d_scene_camera_node_set(data->scene, data->camera_node);
evas_canvas3d_scene_camera_node_set(data->camera_node));
} }
int int
@ -227,20 +210,18 @@ main(void)
/* Add a background rectangle objects. */ /* Add a background rectangle objects. */
background = eo_add(EVAS_RECTANGLE_CLASS, evas); background = eo_add(EVAS_RECTANGLE_CLASS, evas);
eo_do(background, efl_gfx_color_set(background, 0, 0, 0, 255);
efl_gfx_color_set(0, 0, 0, 255), efl_gfx_size_set(background, WIDTH, HEIGHT);
efl_gfx_size_set(WIDTH, HEIGHT), efl_gfx_visible_set(background, EINA_TRUE);
efl_gfx_visible_set(EINA_TRUE));
/* Add an image object for 3D scene rendering. */ /* Add an image object for 3D scene rendering. */
image = evas_object_image_filled_add(evas); image = evas_object_image_filled_add(evas);
eo_do(image, efl_gfx_size_set(image, WIDTH, HEIGHT);
efl_gfx_size_set(WIDTH, HEIGHT), efl_gfx_visible_set(image, EINA_TRUE);
efl_gfx_visible_set(EINA_TRUE));
/* Set the image object as render target for 3D scene. */ /* Set the image object as render target for 3D scene. */
eo_do(image, evas_obj_image_scene_set(data.scene)); evas_obj_image_scene_set(image, data.scene);
/* Add animation timer callback. */ /* Add animation timer callback. */
ecore_animator_frametime_set(0.008); ecore_animator_frametime_set(0.008);

View File

@ -100,18 +100,17 @@ _redraw_bounding_object(void *data)
Eo *current_mesh; Eo *current_mesh;
Eina_List *meshes = NULL, *l; Eina_List *meshes = NULL, *l;
eo_do(scene->mesh_node, meshes = (Eina_List *)evas_canvas3d_node_mesh_list_get()); meshes = (Eina_List *)evas_canvas3d_node_mesh_list_get(scene->mesh_node);
EINA_LIST_FOREACH(meshes, l, current_mesh) EINA_LIST_FOREACH(meshes, l, current_mesh)
{ {
eo_do(scene->mesh_node, evas_canvas3d_node_mesh_del(current_mesh)); evas_canvas3d_node_mesh_del(scene->mesh_node, current_mesh);
} }
switch (key) switch (key)
{ {
case EVAS_CANVAS3D_FRUSTUM_MODE_BSPHERE: case EVAS_CANVAS3D_FRUSTUM_MODE_BSPHERE:
{ {
eo_do(scene->mesh_node_model, evas_canvas3d_node_bounding_sphere_get(scene->mesh_node_model, &x0, &y0, &z0, &rad);
evas_canvas3d_node_bounding_sphere_get(&x0, &y0, &z0, &rad));
current_mesh = scene->mesh_sphere; current_mesh = scene->mesh_sphere;
px = x0; px = x0;
py = y0; py = y0;
@ -121,9 +120,7 @@ _redraw_bounding_object(void *data)
} }
case EVAS_CANVAS3D_FRUSTUM_MODE_AABB: case EVAS_CANVAS3D_FRUSTUM_MODE_AABB:
{ {
eo_do(scene->mesh_node_model, evas_canvas3d_node_bounding_box_get(scene->mesh_node_model, &x0, &y0, &z0, &x1, &y1, &z1);
evas_canvas3d_node_bounding_box_get(&x0, &y0, &z0,
&x1, &y1, &z1));
current_mesh = scene->mesh_aabb; current_mesh = scene->mesh_aabb;
px = (x1 + x0) / 2; px = (x1 + x0) / 2;
py = (y1 + y0) / 2; py = (y1 + y0) / 2;
@ -135,8 +132,7 @@ _redraw_bounding_object(void *data)
} }
case EVAS_CANVAS3D_FRUSTUM_MODE_CENTRAL_POINT: case EVAS_CANVAS3D_FRUSTUM_MODE_CENTRAL_POINT:
{ {
eo_do(scene->mesh_node_model, evas_canvas3d_node_bounding_sphere_get(scene->mesh_node_model, &x0, &y0, &z0, &rad);
evas_canvas3d_node_bounding_sphere_get(&x0, &y0, &z0, &rad));
current_mesh = scene->mesh_sphere; current_mesh = scene->mesh_sphere;
px = x0; px = x0;
py = y0; py = y0;
@ -148,10 +144,9 @@ _redraw_bounding_object(void *data)
return ECORE_CALLBACK_RENEW; return ECORE_CALLBACK_RENEW;
} }
eo_do(scene->mesh_node, evas_canvas3d_node_mesh_add(scene->mesh_node, current_mesh);
evas_canvas3d_node_mesh_add(current_mesh), evas_canvas3d_node_position_set(scene->mesh_node, px, py, pz);
evas_canvas3d_node_position_set(px, py, pz), evas_canvas3d_node_scale_set(scene->mesh_node, sx, sy, sz);
evas_canvas3d_node_scale_set(sx, sy, sz));
return ECORE_CALLBACK_RENEW; return ECORE_CALLBACK_RENEW;
} }
@ -166,109 +161,97 @@ _on_key_down(void *data, Evas *e EINA_UNUSED, Evas_Object *eo EINA_UNUSED, void
if (!strcmp("w", ev->key)) if (!strcmp("w", ev->key))
{ {
ffar += 20; ffar += 20;
eo_do(scene->camera, evas_canvas3d_camera_projection_frustum_set(fleft, fright, fbottom, fup, fnear, ffar)); evas_canvas3d_camera_projection_frustum_set(scene->camera, fleft, fright, fbottom, fup, fnear, ffar);
} }
else if(!strcmp("s", ev->key)) else if(!strcmp("s", ev->key))
{ {
ffar -= 20; ffar -= 20;
eo_do(scene->camera, evas_canvas3d_camera_projection_frustum_set(fleft, fright, fbottom, fup, fnear, ffar)); evas_canvas3d_camera_projection_frustum_set(scene->camera, fleft, fright, fbottom, fup, fnear, ffar);
} }
else if(!strcmp("t", ev->key)) else if(!strcmp("t", ev->key))
{ {
fnear += 2; fnear += 2;
eo_do(scene->camera, evas_canvas3d_camera_projection_frustum_set(fleft, fright, fbottom, fup, fnear, ffar)); evas_canvas3d_camera_projection_frustum_set(scene->camera, fleft, fright, fbottom, fup, fnear, ffar);
} }
else if(!strcmp("g", ev->key)) else if(!strcmp("g", ev->key))
{ {
fnear -= 2; fnear -= 2;
eo_do(scene->camera, evas_canvas3d_camera_projection_frustum_set(fleft, fright, fbottom, fup, fnear, ffar)); evas_canvas3d_camera_projection_frustum_set(scene->camera, fleft, fright, fbottom, fup, fnear, ffar);
} }
else if(!strcmp("i", ev->key)) else if(!strcmp("i", ev->key))
{ {
obj_y++; obj_y++;
eo_do(scene->mesh_node_model, evas_canvas3d_node_position_set(scene->mesh_node_model, obj_x, obj_y, obj_z);
evas_canvas3d_node_position_set(obj_x, obj_y, obj_z));
} }
else if(!strcmp("k", ev->key)) else if(!strcmp("k", ev->key))
{ {
obj_y--; obj_y--;
eo_do(scene->mesh_node_model, evas_canvas3d_node_position_set(scene->mesh_node_model, obj_x, obj_y, obj_z);
evas_canvas3d_node_position_set(obj_x, obj_y, obj_z));
} }
else if(!strcmp("o", ev->key)) else if(!strcmp("o", ev->key))
{ {
obj_z++; obj_z++;
eo_do(scene->mesh_node_model, evas_canvas3d_node_position_set(scene->mesh_node_model, obj_x, obj_y, obj_z);
evas_canvas3d_node_position_set(obj_x, obj_y, obj_z));
} }
else if(!strcmp("u", ev->key)) else if(!strcmp("u", ev->key))
{ {
obj_z--; obj_z--;
eo_do(scene->mesh_node_model, evas_canvas3d_node_position_set(scene->mesh_node_model, obj_x, obj_y, obj_z);
evas_canvas3d_node_position_set(obj_x, obj_y, obj_z));
} }
else if(!strcmp("l", ev->key)) else if(!strcmp("l", ev->key))
{ {
obj_x++; obj_x++;
eo_do(scene->mesh_node_model, evas_canvas3d_node_position_set(scene->mesh_node_model, obj_x, obj_y, obj_z);
evas_canvas3d_node_position_set(obj_x, obj_y, obj_z));
} }
else if(!strcmp("j", ev->key)) else if(!strcmp("j", ev->key))
{ {
obj_x--; obj_x--;
eo_do(scene->mesh_node_model, evas_canvas3d_node_position_set(scene->mesh_node_model, obj_x, obj_y, obj_z);
evas_canvas3d_node_position_set(obj_x, obj_y, obj_z));
} }
else if(!strcmp("z", ev->key)) else if(!strcmp("z", ev->key))
{ {
obj_sc_y+=0.02; obj_sc_y+=0.02;
eo_do(scene->mesh_node_model, evas_canvas3d_node_scale_set(scene->mesh_node_model, obj_sc_x, obj_sc_y, obj_sc_z);
evas_canvas3d_node_scale_set(obj_sc_x, obj_sc_y, obj_sc_z));
} }
else if(!strcmp("Z", ev->key)) else if(!strcmp("Z", ev->key))
{ {
obj_sc_y-=0.02; obj_sc_y-=0.02;
eo_do(scene->mesh_node_model, evas_canvas3d_node_scale_set(scene->mesh_node_model, obj_sc_x, obj_sc_y, obj_sc_z);
evas_canvas3d_node_scale_set(obj_sc_x, obj_sc_y, obj_sc_z));
} }
else if(!strcmp("x", ev->key)) else if(!strcmp("x", ev->key))
{ {
obj_sc_z+=0.02; obj_sc_z+=0.02;
eo_do(scene->mesh_node_model, evas_canvas3d_node_scale_set(scene->mesh_node_model, obj_sc_x, obj_sc_y, obj_sc_z);
evas_canvas3d_node_scale_set(obj_sc_x, obj_sc_y, obj_sc_z));
} }
else if(!strcmp("X", ev->key)) else if(!strcmp("X", ev->key))
{ {
obj_sc_z-=0.02; obj_sc_z-=0.02;
eo_do(scene->mesh_node_model, evas_canvas3d_node_scale_set(scene->mesh_node_model, obj_sc_x, obj_sc_y, obj_sc_z);
evas_canvas3d_node_scale_set(obj_sc_x, obj_sc_y, obj_sc_z));
} }
else if(!strcmp("c", ev->key)) else if(!strcmp("c", ev->key))
{ {
obj_sc_x+=0.02; obj_sc_x+=0.02;
eo_do(scene->mesh_node_model, evas_canvas3d_node_scale_set(scene->mesh_node_model, obj_sc_x, obj_sc_y, obj_sc_z);
evas_canvas3d_node_scale_set(obj_sc_x, obj_sc_y, obj_sc_z));
} }
else if(!strcmp("C", ev->key)) else if(!strcmp("C", ev->key))
{ {
obj_sc_x-=0.02; obj_sc_x-=0.02;
eo_do(scene->mesh_node_model, evas_canvas3d_node_scale_set(scene->mesh_node_model, obj_sc_x, obj_sc_y, obj_sc_z);
evas_canvas3d_node_scale_set(obj_sc_x, obj_sc_y, obj_sc_z));
} }
else if(!strcmp("Return", ev->key)) else if(!strcmp("Return", ev->key))
{ {
eo_do(scene->camera, evas_canvas3d_camera_projection_frustum_set(fleft, fright, fbottom, fup, fnear, ffar)); evas_canvas3d_camera_projection_frustum_set(scene->camera, fleft, fright, fbottom, fup, fnear, ffar);
} }
else if (!strcmp("1", ev->key)) else if (!strcmp("1", ev->key))
{ {
eo_do(scene->camera_node, evas_canvas3d_node_position_set(0.0, 0.0, 300.0), evas_canvas3d_node_position_set(scene->camera_node, 0.0, 0.0, 300.0);
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0)); evas_canvas3d_node_look_at_set(scene->camera_node, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0);
fprintf(stdout, "Changed position and view of camera\n"); fprintf(stdout, "Changed position and view of camera\n");
} }
else if (!strcmp("2", ev->key)) else if (!strcmp("2", ev->key))
{ {
eo_do(scene->camera_node, evas_canvas3d_node_position_set(300.0, 300.0, 300.0); evas_canvas3d_node_position_set(scene->camera_node, 300.0, 300.0, 300.0);
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0)); evas_canvas3d_node_look_at_set(scene->camera_node, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0);
fprintf(stdout, "Changed position and view of camera\n"); fprintf(stdout, "Changed position and view of camera\n");
} }
else if (!strcmp("3", ev->key)) else if (!strcmp("3", ev->key))
@ -289,7 +272,7 @@ _on_key_down(void *data, Evas *e EINA_UNUSED, Evas_Object *eo EINA_UNUSED, void
} }
_redraw_bounding_object(data); _redraw_bounding_object(data);
eo_do(scene->camera, frustum = evas_canvas3d_camera_node_visible_get(scene->camera_node, scene->mesh_node_model, key)); frustum = evas_canvas3d_camera_node_visible_get(scene->camera, scene->camera_node, scene->mesh_node_model, key);
fprintf(stdout, "far - %f frustum - %d radius - %f\n", ffar, frustum, radius); fprintf(stdout, "far - %f frustum - %d radius - %f\n", ffar, frustum, radius);
} }
@ -297,35 +280,30 @@ static void
_camera_setup(Scene_Data *data) _camera_setup(Scene_Data *data)
{ {
data->camera = eo_add(EVAS_CANVAS3D_CAMERA_CLASS, evas); data->camera = eo_add(EVAS_CANVAS3D_CAMERA_CLASS, evas);
data->camera_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, data->camera_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_CAMERA));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_CAMERA)); evas_canvas3d_node_camera_set(data->camera_node, data->camera);
eo_do(data->camera_node, evas_canvas3d_node_position_set(data->camera_node, 0.0, 0.0, 300.0);
evas_canvas3d_node_camera_set(data->camera), evas_canvas3d_node_look_at_set(data->camera_node, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0);
evas_canvas3d_node_position_set(0.0, 0.0, 300.0);
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0));
eo_do(data->camera, evas_canvas3d_camera_projection_frustum_set(fleft, fright, fbottom, fup, fnear, ffar)); evas_canvas3d_camera_projection_frustum_set(data->camera, fleft, fright, fbottom, fup, fnear, ffar);
eo_do(data->root_node, evas_canvas3d_node_member_add(data->camera_node)); evas_canvas3d_node_member_add(data->root_node, data->camera_node);
} }
static void static void
_light_setup(Scene_Data *data) _light_setup(Scene_Data *data)
{ {
data->light = eo_add(EVAS_CANVAS3D_LIGHT_CLASS, evas); data->light = eo_add(EVAS_CANVAS3D_LIGHT_CLASS, evas);
eo_do(data->light, evas_canvas3d_light_ambient_set(data->light, 0.2, 0.2, 0.2, 1.0);
evas_canvas3d_light_ambient_set( 0.2, 0.2, 0.2, 1.0); evas_canvas3d_light_diffuse_set(data->light, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_light_diffuse_set(1.0, 1.0, 1.0, 1.0); evas_canvas3d_light_specular_set(data->light, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_light_specular_set(1.0, 1.0, 1.0, 1.0));
data->light_node = eo_add(EVAS_CANVAS3D_NODE_CLASS,evas, data->light_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_LIGHT));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_LIGHT)); evas_canvas3d_node_light_set(data->light_node, data->light);
eo_do(data->light_node, evas_canvas3d_node_position_set(data->light_node, 0.0, 0.0, 200.0);
evas_canvas3d_node_light_set(data->light), evas_canvas3d_node_look_at_set(data->light_node, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 1.0);
evas_canvas3d_node_position_set(0.0, 0.0, 200.0),
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 1.0));
eo_do(data->root_node, evas_canvas3d_node_member_add(data->light_node)); evas_canvas3d_node_member_add(data->root_node, data->light_node);
} }
static void static void
@ -333,43 +311,37 @@ _mesh_setup(Scene_Data *data)
{ {
data->material = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas); data->material = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas);
eo_do(data->material, evas_canvas3d_material_enable_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE), evas_canvas3d_material_enable_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE), evas_canvas3d_material_enable_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE), evas_canvas3d_material_color_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, 0.2, 0.2, 0.2, 1.0);
evas_canvas3d_material_color_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, 0.8, 0.8, 0.8, 1.0);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, 0.2, 0.2, 0.2, 1.0), evas_canvas3d_material_color_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, 0.8, 0.8, 0.8, 1.0), evas_canvas3d_material_shininess_set(data->material, 100.0);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, 1.0, 1.0, 1.0, 1.0),
evas_canvas3d_material_shininess_set(100.0));
data->cube = eo_add(EVAS_CANVAS3D_PRIMITIVE_CLASS, evas); data->cube = eo_add(EVAS_CANVAS3D_PRIMITIVE_CLASS, evas);
eo_do(data->cube, evas_canvas3d_primitive_form_set(data->cube, EVAS_CANVAS3D_MESH_PRIMITIVE_CUBE);
evas_canvas3d_primitive_form_set(EVAS_CANVAS3D_MESH_PRIMITIVE_CUBE));
data->sphere = eo_add(EVAS_CANVAS3D_PRIMITIVE_CLASS, evas); data->sphere = eo_add(EVAS_CANVAS3D_PRIMITIVE_CLASS, evas);
eo_do(data->sphere, evas_canvas3d_primitive_form_set(data->sphere, EVAS_CANVAS3D_MESH_PRIMITIVE_SPHERE);
evas_canvas3d_primitive_form_set(EVAS_CANVAS3D_MESH_PRIMITIVE_SPHERE), evas_canvas3d_primitive_precision_set(data->sphere, 20);
evas_canvas3d_primitive_precision_set(20));
data->mesh_aabb = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas); data->mesh_aabb = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas);
eo_do(data->mesh_aabb, evas_canvas3d_mesh_from_primitive_set(data->mesh_aabb, 0, data->cube);
evas_canvas3d_mesh_from_primitive_set(0, data->cube), evas_canvas3d_mesh_vertex_assembly_set(data->mesh_aabb, EVAS_CANVAS3D_VERTEX_ASSEMBLY_LINES);
evas_canvas3d_mesh_vertex_assembly_set(EVAS_CANVAS3D_VERTEX_ASSEMBLY_LINES), evas_canvas3d_mesh_shade_mode_set(data->mesh_aabb, EVAS_CANVAS3D_SHADE_MODE_DIFFUSE);
evas_canvas3d_mesh_shade_mode_set(EVAS_CANVAS3D_SHADE_MODE_DIFFUSE), evas_canvas3d_mesh_frame_material_set(data->mesh_aabb, 0, data->material);
evas_canvas3d_mesh_frame_material_set(0, data->material));
data->mesh_sphere = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas); data->mesh_sphere = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas);
eo_do(data->mesh_sphere, evas_canvas3d_mesh_from_primitive_set(data->mesh_sphere, 0, data->sphere);
evas_canvas3d_mesh_from_primitive_set(0, data->sphere), evas_canvas3d_mesh_vertex_assembly_set(data->mesh_sphere, EVAS_CANVAS3D_VERTEX_ASSEMBLY_LINES);
evas_canvas3d_mesh_vertex_assembly_set(EVAS_CANVAS3D_VERTEX_ASSEMBLY_LINES), evas_canvas3d_mesh_shade_mode_set(data->mesh_sphere, EVAS_CANVAS3D_SHADE_MODE_DIFFUSE);
evas_canvas3d_mesh_shade_mode_set(EVAS_CANVAS3D_SHADE_MODE_DIFFUSE), evas_canvas3d_mesh_frame_material_set(data->mesh_sphere, 0, data->material);
evas_canvas3d_mesh_frame_material_set(0, data->material));
data->mesh_node = data->mesh_node =
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_MESH)); eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_MESH));
eo_do(data->root_node, evas_canvas3d_node_member_add(data->mesh_node)); evas_canvas3d_node_member_add(data->root_node, data->mesh_node);
eo_do(data->mesh_node, evas_canvas3d_node_mesh_add(data->mesh_aabb)); evas_canvas3d_node_mesh_add(data->mesh_node, data->mesh_aabb);
} }
static void static void
@ -379,27 +351,24 @@ _mesh_setup_model(Scene_Data *data)
data->material_model = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas); data->material_model = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas);
data->texture_model = eo_add(EVAS_CANVAS3D_TEXTURE_CLASS, evas); data->texture_model = eo_add(EVAS_CANVAS3D_TEXTURE_CLASS, evas);
eo_do(data->texture_model, evas_canvas3d_texture_file_set(data->texture_model, texture_path, NULL);
evas_canvas3d_texture_file_set(texture_path, NULL), evas_canvas3d_texture_filter_set(data->texture_model, EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST, EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST);
evas_canvas3d_texture_filter_set(EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST, EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST), evas_canvas3d_texture_wrap_set(data->texture_model, EVAS_CANVAS3D_WRAP_MODE_REPEAT, EVAS_CANVAS3D_WRAP_MODE_REPEAT);
evas_canvas3d_texture_wrap_set(EVAS_CANVAS3D_WRAP_MODE_REPEAT, EVAS_CANVAS3D_WRAP_MODE_REPEAT));
eo_do(data->material_model, evas_canvas3d_material_enable_set(data->material_model, EVAS_CANVAS3D_MATERIAL_ATTRIB_NORMAL, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_NORMAL, EINA_TRUE), evas_canvas3d_material_enable_set(data->material_model, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE), evas_canvas3d_material_enable_set(data->material_model, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE), evas_canvas3d_material_enable_set(data->material_model, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE); evas_canvas3d_material_enable_set(data->material_model, EVAS_CANVAS3D_MATERIAL_ATTRIB_NORMAL, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_NORMAL, EINA_TRUE), evas_canvas3d_material_color_set(data->material_model, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, 0.01, 0.01, 0.01, 1.0);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, 0.01, 0.01, 0.01, 1.0), evas_canvas3d_material_color_set(data->material_model, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, 1.0, 1.0, 1.0, 1.0), evas_canvas3d_material_color_set(data->material_model, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, 1.0, 1.0, 1.0, 1.0), evas_canvas3d_material_texture_set(data->material_model, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, data->texture_model);
evas_canvas3d_material_texture_set( EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, data->texture_model), evas_canvas3d_material_shininess_set(data->material_model, 100.0);
evas_canvas3d_material_shininess_set(100.0));
eo_do(data->mesh_model, efl_file_set(data->mesh_model, mesh_path, NULL);
efl_file_set(mesh_path, NULL), evas_canvas3d_mesh_frame_material_set(data->mesh_model, 0, data->material_model);
evas_canvas3d_mesh_frame_material_set(0, data->material_model), evas_canvas3d_mesh_shade_mode_set(data->mesh_model, EVAS_CANVAS3D_SHADE_MODE_DIFFUSE);
evas_canvas3d_mesh_shade_mode_set(EVAS_CANVAS3D_SHADE_MODE_DIFFUSE));
} }
static void static void
@ -407,29 +376,25 @@ _scene_setup(Scene_Data *data)
{ {
data->scene = eo_add(EVAS_CANVAS3D_SCENE_CLASS, evas); data->scene = eo_add(EVAS_CANVAS3D_SCENE_CLASS, evas);
data->root_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, data->root_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_NODE));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_NODE));
_light_setup(data); _light_setup(data);
_mesh_setup_model(data); _mesh_setup_model(data);
_camera_setup(data); _camera_setup(data);
data->mesh_node_model = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, data->mesh_node_model = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_MESH));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_MESH)); evas_canvas3d_node_position_set(data->mesh_node_model, obj_x, obj_y, obj_z);
eo_do(data->mesh_node_model, evas_canvas3d_node_orientation_angle_axis_set(data->mesh_node_model, -90, 1.0, 0.0, 0.0);
evas_canvas3d_node_position_set(obj_x, obj_y, obj_z), evas_canvas3d_node_scale_set(data->mesh_node_model, obj_sc_x, obj_sc_y, obj_sc_z);
evas_canvas3d_node_orientation_angle_axis_set(-90, 1.0, 0.0, 0.0), evas_canvas3d_node_member_add(data->root_node, data->mesh_node_model);
evas_canvas3d_node_scale_set(obj_sc_x, obj_sc_y, obj_sc_z)); evas_canvas3d_node_mesh_add(data->mesh_node_model, data->mesh_model);
eo_do(data->root_node, evas_canvas3d_node_member_add(data->mesh_node_model));
eo_do(data->mesh_node_model, evas_canvas3d_node_mesh_add(data->mesh_model));
_mesh_setup(data); _mesh_setup(data);
eo_do(data->scene, evas_canvas3d_scene_size_set(data->scene, WIDTH, HEIGHT);
evas_canvas3d_scene_size_set( WIDTH, HEIGHT), evas_canvas3d_scene_background_color_set(data->scene, 0.5, 0.5, 0.5, 0.0);
evas_canvas3d_scene_background_color_set(0.5, 0.5, 0.5, 0.0), evas_canvas3d_scene_root_node_set(data->scene, data->root_node);
evas_canvas3d_scene_root_node_set(data->root_node); evas_canvas3d_scene_camera_node_set(data->scene, data->camera_node);
evas_canvas3d_scene_camera_node_set(data->camera_node));
} }
int int
@ -466,7 +431,7 @@ main(void)
evas_object_show(image); evas_object_show(image);
evas_object_focus_set(image, EINA_TRUE); evas_object_focus_set(image, EINA_TRUE);
eo_do(image, evas_obj_image_scene_set(data.scene)); evas_obj_image_scene_set(image, data.scene);
_redraw_bounding_object(&data); _redraw_bounding_object(&data);
_show_help(); _show_help();

View File

@ -85,58 +85,52 @@ int rr;
#define MODEL_MESH_INIT(name, model, shade) \ #define MODEL_MESH_INIT(name, model, shade) \
data->mesh_##name = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas); \ data->mesh_##name = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas); \
eo_do(data->mesh_##name, \ efl_file_set(data->mesh_##name, model, NULL); \
efl_file_set(model, NULL), \ evas_canvas3d_mesh_vertex_assembly_set(data->mesh_##name, EVAS_CANVAS3D_VERTEX_ASSEMBLY_TRIANGLES); \
evas_canvas3d_mesh_vertex_assembly_set(EVAS_CANVAS3D_VERTEX_ASSEMBLY_TRIANGLES), \ evas_canvas3d_mesh_shade_mode_set(data->mesh_##name, EVAS_CANVAS3D_SHADE_MODE_##shade); \
evas_canvas3d_mesh_shade_mode_set(EVAS_CANVAS3D_SHADE_MODE_##shade), \ evas_canvas3d_mesh_frame_material_set(data->mesh_##name, 0, data->material);
evas_canvas3d_mesh_frame_material_set(0, data->material));
#define CONVEX_HULL_MESH_INIT(name) \ #define CONVEX_HULL_MESH_INIT(name) \
vert = eina_inarray_new(sizeof(float), 1); \ vert = eina_inarray_new(sizeof(float), 1); \
ind = eina_inarray_new(sizeof(unsigned short int), 1);\ ind = eina_inarray_new(sizeof(unsigned short int), 1);\
eo_do(data->mesh_##name, \ evas_canvas3d_mesh_convex_hull_data_get(data->mesh_##name, 0, vert, ind); \
evas_canvas3d_mesh_convex_hull_data_get(0, vert, ind)); \
vertex = (float*) vert->members;\ vertex = (float*) vert->members;\
index = ind->members;\ index = ind->members;\
data->mesh_##name##_ch = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas); \ data->mesh_##name##_ch = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas); \
eo_do(data->mesh_##name##_ch, \ evas_canvas3d_mesh_vertex_count_set(data->mesh_##name##_ch, (vert->len / 10)); \
evas_canvas3d_mesh_vertex_count_set((vert->len / 10)), \ evas_canvas3d_mesh_frame_add(data->mesh_##name##_ch, 0); \
evas_canvas3d_mesh_frame_add(0), \ evas_canvas3d_mesh_frame_vertex_data_copy_set(data->mesh_##name##_ch, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION, \
evas_canvas3d_mesh_frame_vertex_data_copy_set(0, EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION, \ 10 * sizeof(float), &vertex[ 0]); \
10 * sizeof(float), &vertex[ 0]), \ evas_canvas3d_mesh_frame_vertex_data_copy_set(data->mesh_##name##_ch, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_NORMAL, \
evas_canvas3d_mesh_frame_vertex_data_copy_set(0, EVAS_CANVAS3D_VERTEX_ATTRIB_NORMAL, \ 10 * sizeof(float), &vertex[ 3]); \
10 * sizeof(float), &vertex[ 3]), \ evas_canvas3d_mesh_frame_vertex_data_copy_set(data->mesh_##name##_ch, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_COLOR, \
evas_canvas3d_mesh_frame_vertex_data_copy_set(0, EVAS_CANVAS3D_VERTEX_ATTRIB_COLOR, \ 10 * sizeof(float), &vertex[ 6]); \
10 * sizeof(float), &vertex[ 6]), \ evas_canvas3d_mesh_index_data_copy_set(data->mesh_##name##_ch, EVAS_CANVAS3D_INDEX_FORMAT_UNSIGNED_SHORT, \
evas_canvas3d_mesh_index_data_copy_set(EVAS_CANVAS3D_INDEX_FORMAT_UNSIGNED_SHORT, \ ind->len, &index[0]); \
ind->len, &index[0]), \ evas_canvas3d_mesh_vertex_assembly_set(data->mesh_##name##_ch, EVAS_CANVAS3D_VERTEX_ASSEMBLY_TRIANGLES); \
evas_canvas3d_mesh_vertex_assembly_set(EVAS_CANVAS3D_VERTEX_ASSEMBLY_TRIANGLES), \ evas_canvas3d_mesh_shade_mode_set(data->mesh_##name##_ch, EVAS_CANVAS3D_SHADE_MODE_VERTEX_COLOR); \
evas_canvas3d_mesh_shade_mode_set(EVAS_CANVAS3D_SHADE_MODE_VERTEX_COLOR), \ evas_canvas3d_mesh_frame_material_set(data->mesh_##name##_ch, 0, data->material); \
evas_canvas3d_mesh_frame_material_set(0, data->material)); \
free(vert); \ free(vert); \
free(ind); free(ind);
#define SWITCH_MESH(index, name, scale) \ #define SWITCH_MESH(index, name, scale) \
case index: \ case index: \
{ \ { \
eo_do(scene->mesh_node, list = evas_canvas3d_node_mesh_list_get()); \ list = evas_canvas3d_node_mesh_list_get(scene->mesh_node); \
mesh = eina_list_nth(list, 0); \ mesh = eina_list_nth(list, 0); \
eo_do(scene->mesh_node, \ evas_canvas3d_node_mesh_del(scene->mesh_node, mesh); \
evas_canvas3d_node_mesh_del(mesh), \ evas_canvas3d_node_mesh_add(scene->mesh_node, scene->mesh_##name); \
evas_canvas3d_node_mesh_add(scene->mesh_##name), \ evas_canvas3d_node_scale_set(scene->mesh_node, scale, scale, scale); \
evas_canvas3d_node_scale_set(scale, scale, scale)); \ list = evas_canvas3d_node_mesh_list_get(scene->mesh_node_convex_hull); \
eo_do(scene->mesh_node_convex_hull, list = evas_canvas3d_node_mesh_list_get()); \
mesh = eina_list_nth(list, 0); \ mesh = eina_list_nth(list, 0); \
eo_do(scene->mesh_node_convex_hull, \ evas_canvas3d_node_mesh_del(scene->mesh_node_convex_hull, mesh); \
evas_canvas3d_node_mesh_del(mesh), \ evas_canvas3d_node_mesh_add(scene->mesh_node_convex_hull, scene->mesh_##name##_ch); \
evas_canvas3d_node_mesh_add(scene->mesh_##name##_ch), \ evas_canvas3d_node_scale_set(scene->mesh_node_convex_hull, scale, scale, scale); \
evas_canvas3d_node_scale_set(scale, scale, scale)); \ list = evas_canvas3d_node_mesh_list_get(scene->mesh_node_blender); \
eo_do(scene->mesh_node_blender, list = evas_canvas3d_node_mesh_list_get()); \
mesh = eina_list_nth(list, 0); \ mesh = eina_list_nth(list, 0); \
eo_do(scene->mesh_node_blender, \ evas_canvas3d_node_mesh_del(scene->mesh_node_blender, mesh); \
evas_canvas3d_node_mesh_del(mesh), \ evas_canvas3d_node_mesh_add(scene->mesh_node_blender, scene->mesh_blender_##name); \
evas_canvas3d_node_mesh_add(scene->mesh_blender_##name), \ evas_canvas3d_node_scale_set(scene->mesh_node_blender, scale, scale, scale); \
evas_canvas3d_node_scale_set(scale, scale, scale)); \
_print_result(scene->mesh_##name##_ch, scene->mesh_blender_test_##name); \ _print_result(scene->mesh_##name##_ch, scene->mesh_blender_test_##name); \
break; \ break; \
} }
@ -174,12 +168,12 @@ static void
_print_result(Evas_Canvas3D_Mesh *mesh, Evas_Canvas3D_Mesh *convex_mesh) _print_result(Evas_Canvas3D_Mesh *mesh, Evas_Canvas3D_Mesh *convex_mesh)
{ {
int v_count = 0; int v_count = 0;
eo_do(mesh, v_count = evas_canvas3d_mesh_vertex_count_get()); v_count = evas_canvas3d_mesh_vertex_count_get(mesh);
printf("Vertex count is %d for convex hull\n", printf("Vertex count is %d for convex hull\n",
v_count); v_count);
eo_do(convex_mesh, v_count = evas_canvas3d_mesh_vertex_count_get()); v_count = evas_canvas3d_mesh_vertex_count_get(convex_mesh);
printf("Vertex count is %d for blender convex hull\n\n", printf("Vertex count is %d for blender convex hull\n\n",
v_count); v_count);
@ -199,8 +193,8 @@ _on_canvas_resize(Ecore_Evas *ee)
int w, h; int w, h;
ecore_evas_geometry_get(ee, NULL, NULL, &w, &h); ecore_evas_geometry_get(ee, NULL, NULL, &w, &h);
eo_do(background, efl_gfx_size_set(w, h)); efl_gfx_size_set(background, w, h);
eo_do(image, efl_gfx_size_set(w, h)); efl_gfx_size_set(image, w, h);
} }
static Eina_Bool static Eina_Bool
@ -213,14 +207,11 @@ _animate_scene(void *data)
if (angle >= 360.0) if (angle >= 360.0)
angle = 0.0; angle = 0.0;
eo_do(scene->mesh_node, evas_canvas3d_node_orientation_angle_axis_set(scene->mesh_node, angle, 1.0, 1.0, 1.0);
evas_canvas3d_node_orientation_angle_axis_set(angle, 1.0, 1.0, 1.0));
eo_do(scene->mesh_node_convex_hull, evas_canvas3d_node_orientation_angle_axis_set(scene->mesh_node_convex_hull, angle, 1.0, 1.0, 1.0);
evas_canvas3d_node_orientation_angle_axis_set(angle, 1.0, 1.0, 1.0));
eo_do(scene->mesh_node_blender, evas_canvas3d_node_orientation_angle_axis_set(scene->mesh_node_blender, angle, 1.0, 1.0, 1.0);
evas_canvas3d_node_orientation_angle_axis_set(angle, 1.0, 1.0, 1.0));
return EINA_TRUE; return EINA_TRUE;
} }
@ -266,38 +257,30 @@ _camera_setup(Scene_Data *data)
{ {
data->camera = eo_add(EVAS_CANVAS3D_CAMERA_CLASS, evas); data->camera = eo_add(EVAS_CANVAS3D_CAMERA_CLASS, evas);
eo_do(data->camera, evas_canvas3d_camera_projection_perspective_set(data->camera, 60.0, 1.0, 2.0, 50.0);
evas_canvas3d_camera_projection_perspective_set(60.0, 1.0, 2.0, 50.0));
data->camera_node = data->camera_node =
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_CAMERA));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_CAMERA)); evas_canvas3d_node_camera_set(data->camera_node, data->camera);
eo_do(data->camera_node, evas_canvas3d_node_position_set(data->camera_node, 0.0, 0.0, 10.0);
evas_canvas3d_node_camera_set(data->camera), evas_canvas3d_node_look_at_set(data->camera_node, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0);
evas_canvas3d_node_position_set(0.0, 0.0, 10.0), evas_canvas3d_node_member_add(data->root_node, data->camera_node);
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0,
EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0));
eo_do(data->root_node, evas_canvas3d_node_member_add(data->camera_node));
} }
static void static void
_light_setup(Scene_Data *data) _light_setup(Scene_Data *data)
{ {
data->light = eo_add(EVAS_CANVAS3D_LIGHT_CLASS, evas); data->light = eo_add(EVAS_CANVAS3D_LIGHT_CLASS, evas);
eo_do(data->light, evas_canvas3d_light_ambient_set(data->light, 0.2, 0.2, 0.2, 1.0);
evas_canvas3d_light_ambient_set(0.2, 0.2, 0.2, 1.0), evas_canvas3d_light_diffuse_set(data->light, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_light_diffuse_set(1.0, 1.0, 1.0, 1.0), evas_canvas3d_light_specular_set(data->light, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_light_specular_set(1.0, 1.0, 1.0, 1.0));
data->light_node = data->light_node =
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_LIGHT));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_LIGHT)); evas_canvas3d_node_light_set(data->light_node, data->light);
eo_do(data->light_node, evas_canvas3d_node_position_set(data->light_node, 0.0, 0.0, 10.0);
evas_canvas3d_node_light_set(data->light), evas_canvas3d_node_look_at_set(data->light_node, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0);
evas_canvas3d_node_position_set(0.0, 0.0, 10.0), evas_canvas3d_node_member_add(data->root_node, data->light_node);
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0,
EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0));
eo_do(data->root_node, evas_canvas3d_node_member_add(data->light_node));
} }
static void static void
@ -311,51 +294,41 @@ _mesh_setup(Scene_Data *data)
/* Setup material. */ /* Setup material. */
data->material = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas); data->material = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas);
eo_do(data->material, evas_canvas3d_material_enable_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE), evas_canvas3d_material_enable_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE), evas_canvas3d_material_enable_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE), evas_canvas3d_material_color_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, 0.2, 0.2, 0.2, 1.0);
evas_canvas3d_material_color_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, 0.8, 0.8, 0.8, 1.0);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, 0.2, 0.2, 0.2, 1.0), evas_canvas3d_material_color_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, 0.8, 0.8, 0.8, 1.0), evas_canvas3d_material_shininess_set(data->material, 100.0);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, 1.0, 1.0, 1.0, 1.0),
evas_canvas3d_material_shininess_set(100.0));
/* Setup mesh sphere */ /* Setup mesh sphere */
primitive = eo_add(EVAS_CANVAS3D_PRIMITIVE_CLASS, evas); primitive = eo_add(EVAS_CANVAS3D_PRIMITIVE_CLASS, evas);
eo_do(primitive, evas_canvas3d_primitive_form_set(primitive, EVAS_CANVAS3D_MESH_PRIMITIVE_SPHERE);
evas_canvas3d_primitive_form_set(EVAS_CANVAS3D_MESH_PRIMITIVE_SPHERE), evas_canvas3d_primitive_precision_set(primitive, 10);
evas_canvas3d_primitive_precision_set(10));
data->mesh_sphere = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas); data->mesh_sphere = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas);
eo_do(data->mesh_sphere, evas_canvas3d_mesh_from_primitive_set(0, primitive)); evas_canvas3d_mesh_from_primitive_set(data->mesh_sphere, 0, primitive);
eo_do(data->mesh_sphere, evas_canvas3d_mesh_vertex_assembly_set(data->mesh_sphere, EVAS_CANVAS3D_VERTEX_ASSEMBLY_TRIANGLES);
evas_canvas3d_mesh_vertex_assembly_set(EVAS_CANVAS3D_VERTEX_ASSEMBLY_TRIANGLES), evas_canvas3d_mesh_shade_mode_set(data->mesh_sphere, EVAS_CANVAS3D_SHADE_MODE_PHONG);
evas_canvas3d_mesh_frame_material_set(data->mesh_sphere, 0, data->material);
evas_canvas3d_mesh_shade_mode_set(EVAS_CANVAS3D_SHADE_MODE_PHONG),
evas_canvas3d_mesh_frame_material_set(0, data->material));
/* Setup mesh torus */ /* Setup mesh torus */
data->mesh_torus = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas); data->mesh_torus = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas);
eo_do(primitive, evas_canvas3d_primitive_form_set(primitive, EVAS_CANVAS3D_MESH_PRIMITIVE_TORUS);
evas_canvas3d_primitive_form_set(EVAS_CANVAS3D_MESH_PRIMITIVE_TORUS), evas_canvas3d_primitive_precision_set(primitive, 50);
evas_canvas3d_primitive_precision_set(50)); evas_canvas3d_mesh_from_primitive_set(data->mesh_torus, 0, primitive);
eo_do(data->mesh_torus, evas_canvas3d_mesh_from_primitive_set(0, primitive)); evas_canvas3d_mesh_vertex_assembly_set(data->mesh_torus, EVAS_CANVAS3D_VERTEX_ASSEMBLY_TRIANGLES);
eo_do(data->mesh_torus, evas_canvas3d_mesh_shade_mode_set(data->mesh_torus, EVAS_CANVAS3D_SHADE_MODE_PHONG);
evas_canvas3d_mesh_vertex_assembly_set(EVAS_CANVAS3D_VERTEX_ASSEMBLY_TRIANGLES), evas_canvas3d_mesh_frame_material_set(data->mesh_torus, 0, data->material);
evas_canvas3d_mesh_shade_mode_set(EVAS_CANVAS3D_SHADE_MODE_PHONG),
evas_canvas3d_mesh_frame_material_set(0, data->material));
/* Setup mesh cube */ /* Setup mesh cube */
data->mesh_cube = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas); data->mesh_cube = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas);
eo_do(primitive, evas_canvas3d_primitive_form_set(primitive, EVAS_CANVAS3D_MESH_PRIMITIVE_CUBE);
evas_canvas3d_primitive_form_set(EVAS_CANVAS3D_MESH_PRIMITIVE_CUBE), evas_canvas3d_primitive_precision_set(primitive, 50);
evas_canvas3d_primitive_precision_set(50)); evas_canvas3d_mesh_from_primitive_set(data->mesh_cube, 0, primitive);
eo_do(data->mesh_cube, evas_canvas3d_mesh_from_primitive_set(0, primitive)); evas_canvas3d_mesh_vertex_assembly_set(data->mesh_cube, EVAS_CANVAS3D_VERTEX_ASSEMBLY_TRIANGLES);
eo_do(data->mesh_cube, evas_canvas3d_mesh_shade_mode_set(data->mesh_cube, EVAS_CANVAS3D_SHADE_MODE_PHONG);
evas_canvas3d_mesh_vertex_assembly_set(EVAS_CANVAS3D_VERTEX_ASSEMBLY_TRIANGLES), evas_canvas3d_mesh_frame_material_set(data->mesh_cube, 0, data->material);
evas_canvas3d_mesh_shade_mode_set(EVAS_CANVAS3D_SHADE_MODE_PHONG),
evas_canvas3d_mesh_frame_material_set(0, data->material));
MODEL_MESH_INIT(plain, plain, PHONG) MODEL_MESH_INIT(plain, plain, PHONG)
MODEL_MESH_INIT(column, column, PHONG) MODEL_MESH_INIT(column, column, PHONG)
@ -382,13 +355,11 @@ _mesh_setup(Scene_Data *data)
MODEL_MESH_INIT(blender_test_sonic, sonic_test, DIFFUSE) MODEL_MESH_INIT(blender_test_sonic, sonic_test, DIFFUSE)
data->mesh_node = data->mesh_node =
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_MESH));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_MESH)); evas_canvas3d_node_member_add(data->root_node, data->mesh_node);
eo_do(data->root_node, evas_canvas3d_node_member_add(data->mesh_node)); evas_canvas3d_node_mesh_add(data->mesh_node, data->mesh_sphere);
eo_do(data->mesh_node, evas_canvas3d_node_scale_set(data->mesh_node, SCALE_SPHERE, SCALE_SPHERE, SCALE_SPHERE);
evas_canvas3d_node_mesh_add(data->mesh_sphere), evas_canvas3d_node_position_set(data->mesh_node, 3.0, 0.0, 0.0);
evas_canvas3d_node_scale_set(SCALE_SPHERE, SCALE_SPHERE, SCALE_SPHERE),
evas_canvas3d_node_position_set(3.0, 0.0, 0.0));
CONVEX_HULL_MESH_INIT(sphere) CONVEX_HULL_MESH_INIT(sphere)
CONVEX_HULL_MESH_INIT(torus) CONVEX_HULL_MESH_INIT(torus)
@ -402,43 +373,36 @@ _mesh_setup(Scene_Data *data)
_print_result(data->mesh_sphere_ch, data->mesh_blender_test_sphere); _print_result(data->mesh_sphere_ch, data->mesh_blender_test_sphere);
data->mesh_node_convex_hull = data->mesh_node_convex_hull =
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_MESH));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_MESH)); evas_canvas3d_node_member_add(data->root_node, data->mesh_node_convex_hull);
eo_do(data->root_node, evas_canvas3d_node_member_add(data->mesh_node_convex_hull)); evas_canvas3d_node_position_set(data->mesh_node_convex_hull, 0.0, 0.0, 0.0);
eo_do(data->mesh_node_convex_hull, evas_canvas3d_node_scale_set(data->mesh_node_convex_hull, SCALE_SPHERE, SCALE_SPHERE, SCALE_SPHERE);
evas_canvas3d_node_position_set(0.0, 0.0, 0.0), evas_canvas3d_node_mesh_add(data->mesh_node_convex_hull, data->mesh_sphere_ch);
evas_canvas3d_node_scale_set(SCALE_SPHERE, SCALE_SPHERE, SCALE_SPHERE),
evas_canvas3d_node_mesh_add(data->mesh_sphere_ch));
data->mesh_node_blender = data->mesh_node_blender =
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_MESH));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_MESH)); evas_canvas3d_node_member_add(data->root_node, data->mesh_node_blender);
eo_do(data->root_node, evas_canvas3d_node_member_add(data->mesh_node_blender)); evas_canvas3d_node_position_set(data->mesh_node_blender, -3.0, 0.0, 0.0);
eo_do(data->mesh_node_blender, evas_canvas3d_node_scale_set(data->mesh_node_blender, SCALE_SPHERE, SCALE_SPHERE, SCALE_SPHERE);
evas_canvas3d_node_position_set(-3.0, 0.0, 0.0), evas_canvas3d_node_mesh_add(data->mesh_node_blender, data->mesh_blender_sphere);
evas_canvas3d_node_scale_set(SCALE_SPHERE, SCALE_SPHERE, SCALE_SPHERE),
evas_canvas3d_node_mesh_add(data->mesh_blender_sphere));
} }
static void static void
_scene_setup(Scene_Data *data) _scene_setup(Scene_Data *data)
{ {
data->scene = eo_add(EVAS_CANVAS3D_SCENE_CLASS, evas); data->scene = eo_add(EVAS_CANVAS3D_SCENE_CLASS, evas);
eo_do(data->scene, evas_canvas3d_scene_size_set(data->scene, WIDTH, HEIGHT);
evas_canvas3d_scene_size_set(WIDTH, HEIGHT); evas_canvas3d_scene_background_color_set(data->scene, 0.0, 0.0, 0.0, 0.0);
evas_canvas3d_scene_background_color_set(0.0, 0.0, 0.0, 0.0));
data->root_node = data->root_node =
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_NODE));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_NODE));
_camera_setup(data); _camera_setup(data);
_light_setup(data); _light_setup(data);
_mesh_setup(data); _mesh_setup(data);
eo_do(data->scene, evas_canvas3d_scene_root_node_set(data->scene, data->root_node);
evas_canvas3d_scene_root_node_set(data->root_node), evas_canvas3d_scene_camera_node_set(data->scene, data->camera_node);
evas_canvas3d_scene_camera_node_set(data->camera_node));
} }
int int
@ -468,22 +432,20 @@ main(void)
/* Add a background rectangle objects. */ /* Add a background rectangle objects. */
background = eo_add(EVAS_RECTANGLE_CLASS, evas); background = eo_add(EVAS_RECTANGLE_CLASS, evas);
eo_do(background, efl_gfx_color_set(background, 0, 0, 0, 255);
efl_gfx_color_set(0, 0, 0, 255), efl_gfx_size_set(background, WIDTH, HEIGHT);
efl_gfx_size_set(WIDTH, HEIGHT), efl_gfx_visible_set(background, EINA_TRUE);
efl_gfx_visible_set(EINA_TRUE));
/* Add an image object for 3D scene rendering. */ /* Add an image object for 3D scene rendering. */
image = evas_object_image_filled_add(evas); image = evas_object_image_filled_add(evas);
eo_do(image, efl_gfx_size_set(image, WIDTH, HEIGHT);
efl_gfx_size_set(WIDTH, HEIGHT), efl_gfx_visible_set(image, EINA_TRUE);
efl_gfx_visible_set(EINA_TRUE));
evas_object_show(image), evas_object_show(image),
evas_object_focus_set(image, EINA_TRUE); evas_object_focus_set(image, EINA_TRUE);
/* Set the image object as render target for 3D scene. */ /* Set the image object as render target for 3D scene. */
eo_do(image, evas_obj_image_scene_set(data.scene)); evas_obj_image_scene_set(image, data.scene);
evas_object_event_callback_add(image, EVAS_CALLBACK_KEY_DOWN, _key_down, &data); evas_object_event_callback_add(image, EVAS_CALLBACK_KEY_DOWN, _key_down, &data);

View File

@ -47,7 +47,7 @@ _animate_scene(void *data)
{ {
static int frame = 0; static int frame = 0;
eo_do((Evas_Canvas3D_Node *)data, evas_canvas3d_node_mesh_frame_set(mesh, frame)); evas_canvas3d_node_mesh_frame_set((Evas_Canvas3D_Node *)data, mesh, frame);
frame += 32; frame += 32;
@ -68,8 +68,8 @@ _on_canvas_resize(Ecore_Evas *ee)
int w, h; int w, h;
ecore_evas_geometry_get(ee, NULL, NULL, &w, &h); ecore_evas_geometry_get(ee, NULL, NULL, &w, &h);
eo_do(background, efl_gfx_size_set(w, h)); efl_gfx_size_set(background, w, h);
eo_do(image, efl_gfx_size_set(w, h)); efl_gfx_size_set(image, w, h);
} }
int int
@ -94,102 +94,76 @@ main(void)
scene = eo_add(EVAS_CANVAS3D_SCENE_CLASS, evas); scene = eo_add(EVAS_CANVAS3D_SCENE_CLASS, evas);
/* Add the root node for the scene. */ /* Add the root node for the scene. */
root_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, root_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_NODE));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_NODE));
/* Add the camera. */ /* Add the camera. */
camera = eo_add(EVAS_CANVAS3D_CAMERA_CLASS, evas); camera = eo_add(EVAS_CANVAS3D_CAMERA_CLASS, evas);
eo_do(camera, evas_canvas3d_camera_projection_perspective_set(camera, 60.0, 1.0, 1.0, 500.0);
evas_canvas3d_camera_projection_perspective_set(60.0, 1.0, 1.0, 500.0));
camera_node = camera_node =
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_CAMERA));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_CAMERA)); evas_canvas3d_node_camera_set(camera_node, camera);
eo_do(camera_node, evas_canvas3d_node_member_add(root_node, camera_node);
evas_canvas3d_node_camera_set(camera)); evas_canvas3d_node_position_set(camera_node, 100.0, 0.0, 20.0);
eo_do(root_node, evas_canvas3d_node_look_at_set(camera_node, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 20.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 1.0);
evas_canvas3d_node_member_add(camera_node));
eo_do(camera_node,
evas_canvas3d_node_position_set(100.0, 0.0, 20.0),
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 20.0,
EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 1.0));
/* Add the light. */ /* Add the light. */
light = eo_add(EVAS_CANVAS3D_LIGHT_CLASS, evas); light = eo_add(EVAS_CANVAS3D_LIGHT_CLASS, evas);
eo_do(light, evas_canvas3d_light_ambient_set(light, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_light_ambient_set(1.0, 1.0, 1.0, 1.0), evas_canvas3d_light_diffuse_set(light, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_light_diffuse_set(1.0, 1.0, 1.0, 1.0), evas_canvas3d_light_specular_set(light, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_light_specular_set(1.0, 1.0, 1.0, 1.0), evas_canvas3d_light_directional_set(light, EINA_TRUE);
evas_canvas3d_light_directional_set(EINA_TRUE));
light_node = light_node =
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_LIGHT));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_LIGHT)); evas_canvas3d_node_light_set(light_node, light);
eo_do(light_node, evas_canvas3d_node_position_set(light_node, 1000.0, 0.0, 1000.0);
evas_canvas3d_node_light_set(light), evas_canvas3d_node_look_at_set(light_node, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0);
evas_canvas3d_node_position_set(1000.0, 0.0, 1000.0), evas_canvas3d_node_member_add(root_node, light_node);
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0,
EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0));
eo_do(root_node,
evas_canvas3d_node_member_add(light_node));
/* Add the mesh. */ /* Add the mesh. */
mesh = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas); mesh = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas);
material = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas); material = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas);
eo_do(mesh, efl_file_set(mesh, model_path, NULL);
efl_file_set(model_path, NULL), evas_canvas3d_mesh_frame_material_set(mesh, 0, material);
evas_canvas3d_mesh_frame_material_set(0, material), evas_canvas3d_mesh_shade_mode_set(mesh, EVAS_CANVAS3D_SHADE_MODE_PHONG);
evas_canvas3d_mesh_shade_mode_set(EVAS_CANVAS3D_SHADE_MODE_PHONG));
texture = eo_add(EVAS_CANVAS3D_TEXTURE_CLASS, evas); texture = eo_add(EVAS_CANVAS3D_TEXTURE_CLASS, evas);
eo_do(texture, evas_canvas3d_texture_file_set(texture, image_path, NULL);
evas_canvas3d_texture_file_set(image_path, NULL), evas_canvas3d_texture_filter_set(texture, EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST, EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST);
evas_canvas3d_texture_filter_set(EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST, evas_canvas3d_texture_wrap_set(texture, EVAS_CANVAS3D_WRAP_MODE_REPEAT, EVAS_CANVAS3D_WRAP_MODE_REPEAT);
EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST), evas_canvas3d_material_texture_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, texture);
evas_canvas3d_texture_wrap_set(EVAS_CANVAS3D_WRAP_MODE_REPEAT, evas_canvas3d_material_enable_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE);
EVAS_CANVAS3D_WRAP_MODE_REPEAT)); evas_canvas3d_material_enable_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE);
eo_do(material, evas_canvas3d_material_enable_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE);
evas_canvas3d_material_texture_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, texture), evas_canvas3d_material_enable_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_NORMAL, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE), evas_canvas3d_material_color_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, 0.01, 0.01, 0.01, 1.0);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE), evas_canvas3d_material_color_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE), evas_canvas3d_material_color_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_NORMAL, EINA_TRUE), evas_canvas3d_material_shininess_set(material, 50.0);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT,
0.01, 0.01, 0.01, 1.0),
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE,
1.0, 1.0, 1.0, 1.0),
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR,
1.0, 1.0, 1.0, 1.0),
evas_canvas3d_material_shininess_set(50.0));
mesh_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, mesh_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_MESH));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_MESH)); evas_canvas3d_node_member_add(root_node, mesh_node);
eo_do(root_node, evas_canvas3d_node_mesh_add(mesh_node, mesh);
evas_canvas3d_node_member_add(mesh_node));
eo_do(mesh_node,
evas_canvas3d_node_mesh_add(mesh));
/* Set up scene. */ /* Set up scene. */
eo_do(scene, evas_canvas3d_scene_root_node_set(scene, root_node);
evas_canvas3d_scene_root_node_set(root_node), evas_canvas3d_scene_camera_node_set(scene, camera_node);
evas_canvas3d_scene_camera_node_set(camera_node), evas_canvas3d_scene_size_set(scene, WIDTH, HEIGHT);
evas_canvas3d_scene_size_set(WIDTH, HEIGHT));
/* Add a background rectangle objects. */ /* Add a background rectangle objects. */
background = eo_add(EVAS_RECTANGLE_CLASS, evas); background = eo_add(EVAS_RECTANGLE_CLASS, evas);
eo_do(background, efl_gfx_color_set(background, 0, 0, 0, 255);
efl_gfx_color_set(0, 0, 0, 255), efl_gfx_size_set(background, WIDTH, HEIGHT);
efl_gfx_size_set(WIDTH, HEIGHT), efl_gfx_visible_set(background, EINA_TRUE);
efl_gfx_visible_set(EINA_TRUE));
/* Add an image object for 3D scene rendering. */ /* Add an image object for 3D scene rendering. */
image = evas_object_image_filled_add(evas); image = evas_object_image_filled_add(evas);
eo_do(image, efl_gfx_size_set(image, WIDTH, HEIGHT);
efl_gfx_size_set(WIDTH, HEIGHT), efl_gfx_visible_set(image, EINA_TRUE);
efl_gfx_visible_set(EINA_TRUE));
/* Set the image object as render target for 3D scene. */ /* Set the image object as render target for 3D scene. */
eo_do(image, evas_obj_image_scene_set(scene)); evas_obj_image_scene_set(image, scene);
ecore_timer_add(0.01, _animate_scene, mesh_node); ecore_timer_add(0.01, _animate_scene, mesh_node);

View File

@ -33,24 +33,22 @@
snprintf(buffer, PATH_MAX, "%s%s", template_path, #extention); \ snprintf(buffer, PATH_MAX, "%s%s", template_path, #extention); \
extention##_file = eina_file_open(buffer , 0); \ extention##_file = eina_file_open(buffer , 0); \
mesh_##extention = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas); \ mesh_##extention = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas); \
eo_do(mesh_##extention, \ efl_file_mmap_set(mesh_##extention, extention##_file, NULL); \
efl_file_mmap_set(extention##_file, NULL), \ evas_canvas3d_mesh_frame_material_set(mesh_##extention, 0, material); \
evas_canvas3d_mesh_frame_material_set(0, material), \ evas_canvas3d_mesh_shade_mode_set(mesh_##extention, EVAS_CANVAS3D_SHADE_MODE_PHONG); \
evas_canvas3d_mesh_shade_mode_set(EVAS_CANVAS3D_SHADE_MODE_PHONG)); \ node_##extention = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_MESH)); \
node_##extention = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, \ evas_canvas3d_node_member_add(root_node, node_##extention); \
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_MESH)); \ evas_canvas3d_node_mesh_add(node_##extention, mesh_##extention); \
eo_do(root_node, evas_canvas3d_node_member_add(node_##extention)); \ evas_canvas3d_node_position_set(node_##extention, initial_node_data[number * 10], \
eo_do(node_##extention, evas_canvas3d_node_mesh_add(mesh_##extention), \ initial_node_data[number * 10 + 1], \
evas_canvas3d_node_position_set(initial_node_data[number * 10], \ initial_node_data[number * 10 + 2]); \
initial_node_data[number * 10 + 1], \ evas_canvas3d_node_scale_set(node_##extention, initial_node_data[number * 10 + 3], \
initial_node_data[number * 10 + 2]), \ initial_node_data[number * 10 + 4], \
evas_canvas3d_node_scale_set(initial_node_data[number * 10 + 3], \ initial_node_data[number * 10 + 5]); \
initial_node_data[number * 10 + 4], \ evas_canvas3d_node_orientation_angle_axis_set(node_##extention, initial_node_data[number * 10 + 6], \
initial_node_data[number * 10 + 5]), \ initial_node_data[number * 10 + 7], \
evas_canvas3d_node_orientation_angle_axis_set(initial_node_data[number * 10 + 6], \ initial_node_data[number * 10 + 8], \
initial_node_data[number * 10 + 7], \ initial_node_data[number * 10 + 9]);\
initial_node_data[number * 10 + 8], \
initial_node_data[number * 10 + 9]));\
ecore_timer_add(0.01, _animate_##extention, node_##extention); ecore_timer_add(0.01, _animate_##extention, node_##extention);
static const char *template_path = PACKAGE_EXAMPLES_DIR EVAS_MODEL_FOLDER "/mesh_for_mmap."; static const char *template_path = PACKAGE_EXAMPLES_DIR EVAS_MODEL_FOLDER "/mesh_for_mmap.";
@ -100,9 +98,8 @@ _animate_obj(void *data)
obj_animation_parameter += obj_animation_velocity; obj_animation_parameter += obj_animation_velocity;
float oap = obj_animation_parameter/200; float oap = obj_animation_parameter/200;
eo_do((Evas_Canvas3D_Node *)data, evas_canvas3d_node_scale_set((Evas_Canvas3D_Node *)data, oap, oap, oap);
evas_canvas3d_node_scale_set(oap, oap, oap), evas_canvas3d_node_orientation_angle_axis_set((Evas_Canvas3D_Node *)data, obj_animation_parameter, 0.0, 1.0, 0.0);
evas_canvas3d_node_orientation_angle_axis_set(obj_animation_parameter, 0.0, 1.0, 0.0));
if (obj_animation_parameter >= 360.0 || obj_animation_parameter <= 0.0) if (obj_animation_parameter >= 360.0 || obj_animation_parameter <= 0.0)
obj_animation_velocity *= -1.0; obj_animation_velocity *= -1.0;
@ -115,8 +112,7 @@ _animate_eet(void *data)
{ {
eet_animation_parameter += eet_animation_velocity; eet_animation_parameter += eet_animation_velocity;
eo_do((Evas_Canvas3D_Node *)data, evas_canvas3d_node_orientation_angle_axis_set((Evas_Canvas3D_Node *)data, eet_animation_parameter, 1.0, 0.0, 0.0);
evas_canvas3d_node_orientation_angle_axis_set(eet_animation_parameter, 1.0, 0.0, 0.0));
eet_animation_velocity = sin(eet_animation_parameter / 180 * M_PI) + 1.1; eet_animation_velocity = sin(eet_animation_parameter / 180 * M_PI) + 1.1;
return EINA_TRUE; return EINA_TRUE;
@ -127,8 +123,7 @@ _animate_ply(void *data)
{ {
ply_animation_parameter += ply_animation_velocity; ply_animation_parameter += ply_animation_velocity;
eo_do((Evas_Canvas3D_Node *)data, evas_canvas3d_node_orientation_angle_axis_set((Evas_Canvas3D_Node *)data, ply_animation_parameter, 1.0, 0.0, 0.0);
evas_canvas3d_node_orientation_angle_axis_set(ply_animation_parameter, 1.0, 0.0, 0.0));
if (ply_animation_parameter > 360.0) ply_animation_parameter -= 180.0f; if (ply_animation_parameter > 360.0) ply_animation_parameter -= 180.0f;
@ -140,8 +135,7 @@ _animate_md2(void *data)
{ {
md2_animation_parameter += md2_animation_velocity; md2_animation_parameter += md2_animation_velocity;
eo_do((Evas_Canvas3D_Node *)data, evas_canvas3d_node_mesh_frame_set((Evas_Canvas3D_Node *)data, mesh_md2, md2_animation_parameter);
evas_canvas3d_node_mesh_frame_set(mesh_md2, md2_animation_parameter));
if (md2_animation_parameter >= 360.0 || md2_animation_parameter <= 0.0) if (md2_animation_parameter >= 360.0 || md2_animation_parameter <= 0.0)
md2_animation_velocity *= -1.0; md2_animation_velocity *= -1.0;
@ -161,8 +155,8 @@ _on_canvas_resize(Ecore_Evas *ee)
int w, h; int w, h;
ecore_evas_geometry_get(ee, NULL, NULL, &w, &h); ecore_evas_geometry_get(ee, NULL, NULL, &w, &h);
eo_do(background, efl_gfx_size_set(w, h)); efl_gfx_size_set(background, w, h);
eo_do(image, efl_gfx_size_set(w, h)); efl_gfx_size_set(image, w, h);
} }
int int
@ -190,58 +184,42 @@ main(void)
scene = eo_add(EVAS_CANVAS3D_SCENE_CLASS, evas); scene = eo_add(EVAS_CANVAS3D_SCENE_CLASS, evas);
/* Add the root node for the scene. */ /* Add the root node for the scene. */
root_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, root_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_NODE));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_NODE));
/* Add the camera. */ /* Add the camera. */
camera = eo_add(EVAS_CANVAS3D_CAMERA_CLASS, evas); camera = eo_add(EVAS_CANVAS3D_CAMERA_CLASS, evas);
eo_do(camera, evas_canvas3d_camera_projection_perspective_set(camera, 10.0, 1.0, 1.0, 500.0);
evas_canvas3d_camera_projection_perspective_set(10.0, 1.0, 1.0, 500.0));
camera_node = camera_node =
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_CAMERA));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_CAMERA)); evas_canvas3d_node_camera_set(camera_node, camera);
eo_do(camera_node, evas_canvas3d_node_member_add(root_node, camera_node);
evas_canvas3d_node_camera_set(camera)); evas_canvas3d_node_position_set(camera_node, 0.0, 0.0, 100.0);
eo_do(root_node, evas_canvas3d_node_look_at_set(camera_node, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0);
evas_canvas3d_node_member_add(camera_node));
eo_do(camera_node,
evas_canvas3d_node_position_set(0.0, 0.0, 100.0),
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0,
EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0));
/* Add the light. */ /* Add the light. */
light = eo_add(EVAS_CANVAS3D_LIGHT_CLASS, evas); light = eo_add(EVAS_CANVAS3D_LIGHT_CLASS, evas);
eo_do(light, evas_canvas3d_light_ambient_set(light, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_light_ambient_set(1.0, 1.0, 1.0, 1.0), evas_canvas3d_light_diffuse_set(light, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_light_diffuse_set(1.0, 1.0, 1.0, 1.0), evas_canvas3d_light_specular_set(light, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_light_specular_set(1.0, 1.0, 1.0, 1.0), evas_canvas3d_light_directional_set(light, EINA_TRUE);
evas_canvas3d_light_directional_set(EINA_TRUE));
light_node = light_node =
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_LIGHT));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_LIGHT)); evas_canvas3d_node_light_set(light_node, light);
eo_do(light_node, evas_canvas3d_node_position_set(light_node, 1.0, 0.0, 100.0);
evas_canvas3d_node_light_set(light), evas_canvas3d_node_look_at_set(light_node, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0);
evas_canvas3d_node_position_set(1.0, 0.0, 100.0), evas_canvas3d_node_member_add(root_node, light_node);
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0,
EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0));
eo_do(root_node,
evas_canvas3d_node_member_add(light_node));
material = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas); material = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas);
eo_do(material, evas_canvas3d_material_enable_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE), evas_canvas3d_material_enable_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE), evas_canvas3d_material_enable_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE), evas_canvas3d_material_enable_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_NORMAL, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_NORMAL, EINA_TRUE), evas_canvas3d_material_color_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, 0.01, 0.01, 0.01, 1.0);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, evas_canvas3d_material_color_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, 1.0, 1.0, 0.0, 1.0);
0.01, 0.01, 0.01, 1.0), evas_canvas3d_material_color_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, 0.5, 0.0, 1.0, 1.0);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, evas_canvas3d_material_shininess_set(material, 50.0);
1.0, 1.0, 0.0, 1.0),
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR,
0.5, 0.0, 1.0, 1.0),
evas_canvas3d_material_shininess_set(50.0));
/* Add the meshes */ /* Add the meshes */
LOAD_AND_ADD_MESH(obj, 0); LOAD_AND_ADD_MESH(obj, 0);
@ -250,26 +228,23 @@ main(void)
LOAD_AND_ADD_MESH(md2, 3); LOAD_AND_ADD_MESH(md2, 3);
/* Set up scene. */ /* Set up scene. */
eo_do(scene, evas_canvas3d_scene_root_node_set(scene, root_node);
evas_canvas3d_scene_root_node_set(root_node), evas_canvas3d_scene_camera_node_set(scene, camera_node);
evas_canvas3d_scene_camera_node_set(camera_node), evas_canvas3d_scene_size_set(scene, WIDTH, HEIGHT);
evas_canvas3d_scene_size_set(WIDTH, HEIGHT));
/* Add a background rectangle objects. */ /* Add a background rectangle objects. */
background = eo_add(EVAS_RECTANGLE_CLASS, evas); background = eo_add(EVAS_RECTANGLE_CLASS, evas);
eo_do(background, efl_gfx_color_set(background, 20, 20, 200, 255);
efl_gfx_color_set(20, 20, 200, 255), efl_gfx_size_set(background, WIDTH, HEIGHT);
efl_gfx_size_set(WIDTH, HEIGHT), efl_gfx_visible_set(background, EINA_TRUE);
efl_gfx_visible_set(EINA_TRUE));
/* Add an image object for 3D scene rendering. */ /* Add an image object for 3D scene rendering. */
image = evas_object_image_filled_add(evas); image = evas_object_image_filled_add(evas);
eo_do(image, efl_gfx_size_set(image, WIDTH, HEIGHT);
efl_gfx_size_set(WIDTH, HEIGHT), efl_gfx_visible_set(image, EINA_TRUE);
efl_gfx_visible_set(EINA_TRUE));
/* Set the image object as render target for 3D scene. */ /* Set the image object as render target for 3D scene. */
eo_do(image, evas_obj_image_scene_set(scene)); evas_obj_image_scene_set(image, scene);
/* Enter main loop. */ /* Enter main loop. */
ecore_main_loop_begin(); ecore_main_loop_begin();

View File

@ -46,49 +46,43 @@
#define ADD_OBJ_MESH(path, Y, Z, num, shade_mode, name_of_material) \ #define ADD_OBJ_MESH(path, Y, Z, num, shade_mode, name_of_material) \
mesh[num] = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas); \ mesh[num] = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas); \
snprintf(full_file_path, PATH_MAX, "%s%s", path, ".obj"); \ snprintf(full_file_path, PATH_MAX, "%s%s", path, ".obj"); \
eo_do(mesh[num], \ efl_file_set(mesh[num], full_file_path, NULL); \
efl_file_set(full_file_path, NULL), \ evas_canvas3d_mesh_frame_material_set(mesh[num], 0, name_of_material); \
evas_canvas3d_mesh_frame_material_set(0, name_of_material), \ evas_canvas3d_mesh_shade_mode_set(mesh[num], shade_mode); \
evas_canvas3d_mesh_shade_mode_set(shade_mode)); \ mesh_node[num] = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_MESH)); \
mesh_node[num] = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, \ evas_canvas3d_node_member_add(root_node, mesh_node[num]); \
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_MESH)); \ evas_canvas3d_node_mesh_add(mesh_node[num], mesh[num]); \
eo_do(root_node, \ evas_canvas3d_node_position_set(mesh_node[num], 0, Y, Z); \
evas_canvas3d_node_member_add(mesh_node[num])); \
eo_do(mesh_node[num], \
evas_canvas3d_node_mesh_add(mesh[num]), \
evas_canvas3d_node_position_set(0, Y, Z)); \
#define ADD_OBJ_MESH_AND_SAVED_COPY(path, Y, Z, num, shade_mode, name_of_material)\ #define ADD_OBJ_MESH_AND_SAVED_COPY(path, Y, Z, num, shade_mode, name_of_material)\
snprintf(buffer, PATH_MAX, "%s%s", input_template, #path); \ snprintf(buffer, PATH_MAX, "%s%s", input_template, #path); \
ADD_OBJ_MESH(buffer, Y, Z, num, shade_mode, name_of_material) \ ADD_OBJ_MESH(buffer, Y, Z, num, shade_mode, name_of_material) \
snprintf(buffer, PATH_MAX, "%s%s%s", output_template, #path, ".obj"); \ snprintf(buffer, PATH_MAX, "%s%s%s", output_template, #path, ".obj"); \
eo_do(mesh[num], efl_file_save(buffer, NULL, NULL)); \ efl_file_save(mesh[num], buffer, NULL, NULL); \
snprintf(buffer, PATH_MAX, "%s%s", output_template, #path); \ snprintf(buffer, PATH_MAX, "%s%s", output_template, #path); \
ADD_OBJ_MESH(buffer, Y + COPY_OFFSET, Z, num + 4, shade_mode, name_of_material) ADD_OBJ_MESH(buffer, Y + COPY_OFFSET, Z, num + 4, shade_mode, name_of_material)
#define ADD_TEXTURE(name, path) \ #define ADD_TEXTURE(name, path) \
name = eo_add(EVAS_CANVAS3D_TEXTURE_CLASS, evas); \ name = eo_add(EVAS_CANVAS3D_TEXTURE_CLASS, evas); \
eo_do(name, \ evas_canvas3d_texture_file_set(name, path, NULL); \
evas_canvas3d_texture_file_set(path, NULL), \ evas_canvas3d_texture_filter_set(name, EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST, \
evas_canvas3d_texture_filter_set(EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST, \ EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST); \
EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST), \ evas_canvas3d_texture_wrap_set(name, EVAS_CANVAS3D_WRAP_MODE_REPEAT, \
evas_canvas3d_texture_wrap_set(EVAS_CANVAS3D_WRAP_MODE_REPEAT, \ EVAS_CANVAS3D_WRAP_MODE_REPEAT);
EVAS_CANVAS3D_WRAP_MODE_REPEAT));
#define ADD_MATERIAL(name) \ #define ADD_MATERIAL(name) \
name = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas); \ name = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas); \
eo_do(name, \ evas_canvas3d_material_enable_set(name, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE); \
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE), \ evas_canvas3d_material_enable_set(name, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE); \
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE), \ evas_canvas3d_material_enable_set(name, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE); \
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE),\ evas_canvas3d_material_enable_set(name, EVAS_CANVAS3D_MATERIAL_ATTRIB_NORMAL, EINA_TRUE); \
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_NORMAL, EINA_TRUE), \ evas_canvas3d_material_color_set(name, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, \
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, \ COL_RED, 0.5); \
COL_RED, 0.5), \ evas_canvas3d_material_color_set(name, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, \
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, \ COL_GREEN, 0.5); \
COL_GREEN, 0.5), \ evas_canvas3d_material_color_set(name, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, \
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, \ COL_BLUE, 0.5); \
COL_BLUE, 0.5), \ evas_canvas3d_material_shininess_set(name, 100.0);
evas_canvas3d_material_shininess_set(100.0));
static const char *texture_path = PACKAGE_EXAMPLES_DIR EVAS_IMAGE_FOLDER "/sweet_home_reversed.png"; static const char *texture_path = PACKAGE_EXAMPLES_DIR EVAS_IMAGE_FOLDER "/sweet_home_reversed.png";
static const char *output_template = PACKAGE_EXAMPLES_DIR EVAS_SAVED_FILES "/saved_"; static const char *output_template = PACKAGE_EXAMPLES_DIR EVAS_SAVED_FILES "/saved_";
@ -118,8 +112,7 @@ _animate_scene(void *data)
{ {
angle += 0.2; angle += 0.2;
eo_do((Evas_Canvas3D_Node *)data, evas_canvas3d_node_orientation_angle_axis_set((Evas_Canvas3D_Node *)data, angle, 1.0, 1.0, -1.0);
evas_canvas3d_node_orientation_angle_axis_set(angle, 1.0, 1.0, -1.0));
/* Rotate */ /* Rotate */
if (angle > 360.0) angle -= 360.0f; if (angle > 360.0) angle -= 360.0f;
@ -139,8 +132,8 @@ _on_canvas_resize(Ecore_Evas *ee)
int w, h; int w, h;
ecore_evas_geometry_get(ee, NULL, NULL, &w, &h); ecore_evas_geometry_get(ee, NULL, NULL, &w, &h);
eo_do(background, efl_gfx_size_set(w, h)); efl_gfx_size_set(background, w, h);
eo_do(image, efl_gfx_size_set(w, h)); efl_gfx_size_set(image, w, h);
} }
int int
@ -167,51 +160,38 @@ main(void)
scene = eo_add(EVAS_CANVAS3D_SCENE_CLASS, evas); scene = eo_add(EVAS_CANVAS3D_SCENE_CLASS, evas);
/* Add the root node for the scene. */ /* Add the root node for the scene. */
root_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, root_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_NODE));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_NODE));
/* Add the camera. */ /* Add the camera. */
camera = eo_add(EVAS_CANVAS3D_CAMERA_CLASS, evas); camera = eo_add(EVAS_CANVAS3D_CAMERA_CLASS, evas);
eo_do(camera, evas_canvas3d_camera_projection_perspective_set(camera, 20.0, 1.0, 1.0, 500.0);
evas_canvas3d_camera_projection_perspective_set(20.0, 1.0, 1.0, 500.0));
camera_node = camera_node =
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_CAMERA));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_CAMERA)); evas_canvas3d_node_camera_set(camera_node, camera);
eo_do(camera_node, evas_canvas3d_node_member_add(root_node, camera_node);
evas_canvas3d_node_camera_set(camera)); evas_canvas3d_node_position_set(camera_node, 100.0, 0.0, 0.0);
eo_do(root_node, evas_canvas3d_node_look_at_set(camera_node, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 1.0);
evas_canvas3d_node_member_add(camera_node));
eo_do(camera_node,
evas_canvas3d_node_position_set(100.0, 0.0, 0.0),
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0,
EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 1.0));
/* Add the light. */ /* Add the light. */
light = eo_add(EVAS_CANVAS3D_LIGHT_CLASS, evas); light = eo_add(EVAS_CANVAS3D_LIGHT_CLASS, evas);
eo_do(light, evas_canvas3d_light_ambient_set(light, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_light_ambient_set(1.0, 1.0, 1.0, 1.0), evas_canvas3d_light_diffuse_set(light, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_light_diffuse_set(1.0, 1.0, 1.0, 1.0), evas_canvas3d_light_specular_set(light, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_light_specular_set(1.0, 1.0, 1.0, 1.0), evas_canvas3d_light_directional_set(light, EINA_TRUE);
evas_canvas3d_light_directional_set(EINA_TRUE));
light_node = light_node =
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_LIGHT));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_LIGHT)); evas_canvas3d_node_light_set(light_node, light);
eo_do(light_node, evas_canvas3d_node_position_set(light_node, 10.0, 0.0, 0.0);
evas_canvas3d_node_light_set(light), evas_canvas3d_node_look_at_set(light_node, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0);
evas_canvas3d_node_position_set(10.0, 0.0, 0.0), evas_canvas3d_node_member_add(root_node, light_node);
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0,
EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0));
eo_do(root_node,
evas_canvas3d_node_member_add(light_node));
ADD_TEXTURE(texture, texture_path) ADD_TEXTURE(texture, texture_path)
ADD_MATERIAL(material) ADD_MATERIAL(material)
ADD_MATERIAL(material_with_tex) ADD_MATERIAL(material_with_tex)
eo_do(material_with_tex, evas_canvas3d_material_texture_set(material_with_tex, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, texture);
evas_canvas3d_material_texture_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, texture));
if (!ecore_file_mkpath(PACKAGE_EXAMPLES_DIR EVAS_SAVED_FILES)) if (!ecore_file_mkpath(PACKAGE_EXAMPLES_DIR EVAS_SAVED_FILES))
fprintf(stderr, "Failed to create folder %s\n\n", fprintf(stderr, "Failed to create folder %s\n\n",
@ -227,26 +207,23 @@ main(void)
EVAS_CANVAS3D_SHADE_MODE_SHADOW_MAP_RENDER, NULL) EVAS_CANVAS3D_SHADE_MODE_SHADOW_MAP_RENDER, NULL)
/* Set up scene. */ /* Set up scene. */
eo_do(scene, evas_canvas3d_scene_root_node_set(scene, root_node);
evas_canvas3d_scene_root_node_set(root_node), evas_canvas3d_scene_camera_node_set(scene, camera_node);
evas_canvas3d_scene_camera_node_set(camera_node), evas_canvas3d_scene_size_set(scene, WIDTH, HEIGHT);
evas_canvas3d_scene_size_set(WIDTH, HEIGHT));
/* Add a background rectangle MESHES. */ /* Add a background rectangle MESHES. */
background = eo_add(EVAS_RECTANGLE_CLASS, evas); background = eo_add(EVAS_RECTANGLE_CLASS, evas);
eo_do(background, efl_gfx_color_set(background, 0, 0, 0, 255);
efl_gfx_color_set(0, 0, 0, 255), efl_gfx_size_set(background, WIDTH, HEIGHT);
efl_gfx_size_set(WIDTH, HEIGHT), efl_gfx_visible_set(background, EINA_TRUE);
efl_gfx_visible_set(EINA_TRUE));
/* Add an image object for 3D scene rendering. */ /* Add an image object for 3D scene rendering. */
image = evas_object_image_filled_add(evas); image = evas_object_image_filled_add(evas);
eo_do(image, efl_gfx_size_set(image, WIDTH, HEIGHT);
efl_gfx_size_set(WIDTH, HEIGHT), efl_gfx_visible_set(image, EINA_TRUE);
efl_gfx_visible_set(EINA_TRUE));
/* Set the image object as render target for 3D scene. */ /* Set the image object as render target for 3D scene. */
eo_do(image, evas_obj_image_scene_set(scene)); evas_obj_image_scene_set(image, scene);
for (i = 0; i < NUMBER_OF_MESHES; i++) for (i = 0; i < NUMBER_OF_MESHES; i++)
ecore_timer_add(ANIM_SPEED, _animate_scene, mesh_node[i]); ecore_timer_add(ANIM_SPEED, _animate_scene, mesh_node[i]);

View File

@ -62,10 +62,10 @@ _on_key_down(void *data, Evas *e EINA_UNUSED, Evas_Object *eo EINA_UNUSED, void
Evas_Event_Key_Down *ev = event_info; Evas_Event_Key_Down *ev = event_info;
if (!strcmp("n", ev->key)) if (!strcmp("n", ev->key))
eo_do(scene->mesh, evas_canvas3d_mesh_shade_mode_set(EVAS_CANVAS3D_SHADE_MODE_NORMAL_MAP)); evas_canvas3d_mesh_shade_mode_set(scene->mesh, EVAS_CANVAS3D_SHADE_MODE_NORMAL_MAP);
if (!strcmp("p", ev->key)) if (!strcmp("p", ev->key))
eo_do(scene->mesh, evas_canvas3d_mesh_shade_mode_set(EVAS_CANVAS3D_SHADE_MODE_PARALLAX_OCCLUSION)); evas_canvas3d_mesh_shade_mode_set(scene->mesh, EVAS_CANVAS3D_SHADE_MODE_PARALLAX_OCCLUSION);
} }
static void static void
@ -80,8 +80,8 @@ _on_canvas_resize(Ecore_Evas *ee)
int w, h; int w, h;
ecore_evas_geometry_get(ee, NULL, NULL, &w, &h); ecore_evas_geometry_get(ee, NULL, NULL, &w, &h);
eo_do(background, efl_gfx_size_set(w, h)); efl_gfx_size_set(background, w, h);
eo_do(image, efl_gfx_size_set(w, h)); efl_gfx_size_set(image, w, h);
} }
static Eina_Bool static Eina_Bool
@ -92,10 +92,9 @@ _animate_scene(void *data)
angle += 0.5; angle += 0.5;
eo_do(scene->mesh_node, evas_canvas3d_node_orientation_angle_axis_set(scene->mesh_node, angle, 0.0, 1.0, 0.0);
evas_canvas3d_node_orientation_angle_axis_set(angle, 0.0, 1.0, 0.0));
eo_do(scene->mesh_node, evas_canvas3d_node_mesh_frame_set(scene->mesh, 50 * (1 + sin(angle / 180.0 * M_PI)))); evas_canvas3d_node_mesh_frame_set(scene->mesh_node, scene->mesh, 50 * (1 + sin(angle / 180.0 * M_PI)));
/* Rotate */ /* Rotate */
if (angle > 360.0) angle = 0.0f; if (angle > 360.0) angle = 0.0f;
@ -107,36 +106,28 @@ _camera_setup(Scene_Data *data)
{ {
data->camera = eo_add(EVAS_CANVAS3D_CAMERA_CLASS, evas); data->camera = eo_add(EVAS_CANVAS3D_CAMERA_CLASS, evas);
eo_do(data->camera, evas_canvas3d_camera_projection_perspective_set(data->camera, 30.0, 1.0, 2.0, 50.0);
evas_canvas3d_camera_projection_perspective_set(30.0, 1.0, 2.0, 50.0));
data->camera_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, data->camera_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_CAMERA));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_CAMERA)); evas_canvas3d_node_camera_set(data->camera_node, data->camera);
eo_do(data->camera_node, evas_canvas3d_node_position_set(data->camera_node, 0.0, 0.0, 10.0);
evas_canvas3d_node_camera_set(data->camera), evas_canvas3d_node_look_at_set(data->camera_node, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0);
evas_canvas3d_node_position_set(0.0, 0.0, 10.0), evas_canvas3d_node_member_add(data->root_node, data->camera_node);
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0,
EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0));
eo_do(data->root_node, evas_canvas3d_node_member_add(data->camera_node));
} }
static void static void
_light_setup(Scene_Data *data) _light_setup(Scene_Data *data)
{ {
data->light = eo_add(EVAS_CANVAS3D_LIGHT_CLASS, evas); data->light = eo_add(EVAS_CANVAS3D_LIGHT_CLASS, evas);
eo_do(data->light, evas_canvas3d_light_ambient_set(data->light, 0.2, 0.2, 0.2, 1.0);
evas_canvas3d_light_ambient_set(0.2, 0.2, 0.2, 1.0), evas_canvas3d_light_diffuse_set(data->light, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_light_diffuse_set(1.0, 1.0, 1.0, 1.0), evas_canvas3d_light_specular_set(data->light, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_light_specular_set(1.0, 1.0, 1.0, 1.0));
data->light_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, data->light_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_LIGHT));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_LIGHT)); evas_canvas3d_node_light_set(data->light_node, data->light);
eo_do(data->light_node, evas_canvas3d_node_position_set(data->light_node, -20.0, 20.0, 50.0);
evas_canvas3d_node_light_set(data->light), evas_canvas3d_node_look_at_set(data->light_node, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0);
evas_canvas3d_node_position_set(-20.0, 20.0, 50.0), evas_canvas3d_node_member_add(data->root_node, data->light_node);
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0,
EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0));
eo_do(data->root_node, evas_canvas3d_node_member_add(data->light_node));
} }
static void static void
@ -147,95 +138,80 @@ _mesh_setup(Scene_Data *data)
data->texture_rocks = eo_add(EVAS_CANVAS3D_TEXTURE_CLASS, evas); data->texture_rocks = eo_add(EVAS_CANVAS3D_TEXTURE_CLASS, evas);
data->texture_rocks_n = eo_add(EVAS_CANVAS3D_TEXTURE_CLASS, evas); data->texture_rocks_n = eo_add(EVAS_CANVAS3D_TEXTURE_CLASS, evas);
eo_do(data->texture_rocks, evas_canvas3d_texture_file_set(rock_diffuse, NULL), evas_canvas3d_texture_file_set(data->texture_rocks, rock_diffuse, NULL);
evas_canvas3d_texture_wrap_set(EVAS_CANVAS3D_WRAP_MODE_REPEAT, evas_canvas3d_texture_wrap_set(data->texture_rocks, EVAS_CANVAS3D_WRAP_MODE_REPEAT, EVAS_CANVAS3D_WRAP_MODE_REPEAT);
EVAS_CANVAS3D_WRAP_MODE_REPEAT)); evas_canvas3d_texture_file_set(data->texture_rocks_n, rock_n_and_height_map, NULL);
eo_do(data->texture_rocks_n, evas_canvas3d_texture_file_set(rock_n_and_height_map, NULL), evas_canvas3d_texture_wrap_set(data->texture_rocks_n, EVAS_CANVAS3D_WRAP_MODE_REPEAT, EVAS_CANVAS3D_WRAP_MODE_REPEAT);
evas_canvas3d_texture_wrap_set(EVAS_CANVAS3D_WRAP_MODE_REPEAT,
EVAS_CANVAS3D_WRAP_MODE_REPEAT));
eo_do(data->material_rocks, evas_canvas3d_material_texture_set(data->material_rocks, EVAS_CANVAS3D_MATERIAL_ATTRIB_NORMAL, data->texture_rocks_n);
evas_canvas3d_material_texture_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_NORMAL, data->texture_rocks_n), evas_canvas3d_material_texture_set(data->material_rocks, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, data->texture_rocks);
evas_canvas3d_material_texture_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, data->texture_rocks), evas_canvas3d_material_texture_set(data->material_rocks, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, data->texture_rocks);
evas_canvas3d_material_texture_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, data->texture_rocks), evas_canvas3d_material_texture_set(data->material_rocks, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, data->texture_rocks);
evas_canvas3d_material_texture_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, data->texture_rocks), evas_canvas3d_material_enable_set(data->material_rocks, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE), evas_canvas3d_material_enable_set(data->material_rocks, EVAS_CANVAS3D_MATERIAL_ATTRIB_NORMAL, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_NORMAL, EINA_TRUE), evas_canvas3d_material_enable_set(data->material_rocks, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE), evas_canvas3d_material_enable_set(data->material_rocks, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE), evas_canvas3d_material_color_set(data->material_rocks, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, 0.1, 0.1, 0.1, 1.0);
evas_canvas3d_material_color_set(data->material_rocks, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, 0.1, 0.1, 0.1, 1.0), evas_canvas3d_material_color_set(data->material_rocks, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, 1.0, 1.0, 1.0, 1.0), evas_canvas3d_material_shininess_set(data->material_rocks, 100.0);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, 1.0, 1.0, 1.0, 1.0),
evas_canvas3d_material_shininess_set(100.0));
data->material_wood = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas); data->material_wood = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas);
data->texture_wood = eo_add(EVAS_CANVAS3D_TEXTURE_CLASS, evas); data->texture_wood = eo_add(EVAS_CANVAS3D_TEXTURE_CLASS, evas);
data->texture_four_n = eo_add(EVAS_CANVAS3D_TEXTURE_CLASS, evas); data->texture_four_n = eo_add(EVAS_CANVAS3D_TEXTURE_CLASS, evas);
eo_do(data->texture_wood, evas_canvas3d_texture_file_set(wood_diffuse, NULL), evas_canvas3d_texture_file_set(data->texture_wood, wood_diffuse, NULL);
evas_canvas3d_texture_wrap_set(EVAS_CANVAS3D_WRAP_MODE_REPEAT, evas_canvas3d_texture_wrap_set(data->texture_wood, EVAS_CANVAS3D_WRAP_MODE_REPEAT, EVAS_CANVAS3D_WRAP_MODE_REPEAT);
EVAS_CANVAS3D_WRAP_MODE_REPEAT)); evas_canvas3d_texture_file_set(data->texture_four_n, wood_n_and_height_map, NULL);
eo_do(data->texture_four_n, evas_canvas3d_texture_file_set(wood_n_and_height_map, NULL), evas_canvas3d_texture_wrap_set(data->texture_four_n, EVAS_CANVAS3D_WRAP_MODE_REPEAT, EVAS_CANVAS3D_WRAP_MODE_REPEAT);
evas_canvas3d_texture_wrap_set(EVAS_CANVAS3D_WRAP_MODE_REPEAT,
EVAS_CANVAS3D_WRAP_MODE_REPEAT));
eo_do(data->material_wood, evas_canvas3d_material_texture_set(data->material_wood, EVAS_CANVAS3D_MATERIAL_ATTRIB_NORMAL, data->texture_four_n);
evas_canvas3d_material_texture_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_NORMAL, data->texture_four_n), evas_canvas3d_material_texture_set(data->material_wood, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, data->texture_wood);
evas_canvas3d_material_texture_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, data->texture_wood), evas_canvas3d_material_texture_set(data->material_wood, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, data->texture_wood);
evas_canvas3d_material_texture_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, data->texture_wood), evas_canvas3d_material_texture_set(data->material_wood, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, data->texture_wood);
evas_canvas3d_material_texture_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, data->texture_wood), evas_canvas3d_material_enable_set(data->material_wood, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE), evas_canvas3d_material_enable_set(data->material_wood, EVAS_CANVAS3D_MATERIAL_ATTRIB_NORMAL, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_NORMAL, EINA_TRUE), evas_canvas3d_material_enable_set(data->material_wood, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE), evas_canvas3d_material_enable_set(data->material_wood, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE), evas_canvas3d_material_color_set(data->material_wood, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, 0.1, 0.1, 0.1, 1.0);
evas_canvas3d_material_color_set(data->material_wood, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, 0.1, 0.1, 0.1, 1.0), evas_canvas3d_material_color_set(data->material_wood, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, 1.0, 1.0, 1.0, 1.0), evas_canvas3d_material_shininess_set(data->material_wood, 100.0);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, 1.0, 1.0, 1.0, 1.0),
evas_canvas3d_material_shininess_set(100.0));
/* Set data of primitive */ /* Set data of primitive */
data->cube = eo_add(EVAS_CANVAS3D_PRIMITIVE_CLASS, evas); data->cube = eo_add(EVAS_CANVAS3D_PRIMITIVE_CLASS, evas);
eo_do(data->cube, evas_canvas3d_primitive_form_set(data->cube, EVAS_CANVAS3D_MESH_PRIMITIVE_CUBE);
evas_canvas3d_primitive_form_set(EVAS_CANVAS3D_MESH_PRIMITIVE_CUBE));
/* Setup mesh. */ /* Setup mesh. */
data->mesh = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas); data->mesh = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas);
eo_do(data->mesh, evas_canvas3d_mesh_from_primitive_set(data->mesh, 0, data->cube);
evas_canvas3d_mesh_from_primitive_set(0, data->cube), evas_canvas3d_mesh_from_primitive_set(data->mesh, 100, data->cube);
evas_canvas3d_mesh_from_primitive_set(100, data->cube), evas_canvas3d_mesh_shade_mode_set(data->mesh, EVAS_CANVAS3D_SHADE_MODE_PARALLAX_OCCLUSION);
evas_canvas3d_mesh_shade_mode_set(EVAS_CANVAS3D_SHADE_MODE_PARALLAX_OCCLUSION), evas_canvas3d_mesh_frame_material_set(data->mesh, 0, data->material_rocks);
evas_canvas3d_mesh_frame_material_set(0, data->material_rocks));
eo_do(data->mesh, evas_canvas3d_mesh_frame_material_set(data->mesh, 100, data->material_wood);
evas_canvas3d_mesh_frame_material_set(100, data->material_wood));
data->mesh_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, data->mesh_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_MESH));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_MESH)); evas_canvas3d_node_member_add(data->root_node, data->mesh_node);
eo_do(data->root_node, evas_canvas3d_node_member_add(data->mesh_node)); evas_canvas3d_node_mesh_add(data->mesh_node, data->mesh);
eo_do(data->mesh_node, evas_canvas3d_node_mesh_add(data->mesh), evas_canvas3d_node_scale_set(data->mesh_node, 3, 3, 3);
evas_canvas3d_node_scale_set(3, 3, 3));
} }
static void static void
_scene_setup(Scene_Data *data) _scene_setup(Scene_Data *data)
{ {
data->scene = eo_add(EVAS_CANVAS3D_SCENE_CLASS, evas); data->scene = eo_add(EVAS_CANVAS3D_SCENE_CLASS, evas);
eo_do(data->scene, evas_canvas3d_scene_size_set(data->scene, WIDTH, HEIGHT);
evas_canvas3d_scene_size_set(WIDTH, HEIGHT); evas_canvas3d_scene_background_color_set(data->scene, 0.0, 0.0, 0.0, 0.0);
evas_canvas3d_scene_background_color_set(0.0, 0.0, 0.0, 0.0));
data->root_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, data->root_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_NODE));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_NODE));
_camera_setup(data); _camera_setup(data);
_light_setup(data); _light_setup(data);
_mesh_setup(data); _mesh_setup(data);
eo_do(data->scene, evas_canvas3d_scene_root_node_set(data->scene, data->root_node);
evas_canvas3d_scene_root_node_set(data->root_node), evas_canvas3d_scene_camera_node_set(data->scene, data->camera_node);
evas_canvas3d_scene_camera_node_set(data->camera_node));
} }
int int
@ -262,20 +238,18 @@ main(void)
/* Add a background rectangle objects. */ /* Add a background rectangle objects. */
background = eo_add(EVAS_RECTANGLE_CLASS, evas); background = eo_add(EVAS_RECTANGLE_CLASS, evas);
eo_do(background, efl_gfx_color_set(background, 0, 0, 0, 255);
efl_gfx_color_set(0, 0, 0, 255), efl_gfx_size_set(background, WIDTH, HEIGHT);
efl_gfx_size_set(WIDTH, HEIGHT), efl_gfx_visible_set(background, EINA_TRUE);
efl_gfx_visible_set(EINA_TRUE));
/* Add an image object for 3D scene rendering. */ /* Add an image object for 3D scene rendering. */
image = evas_object_image_filled_add(evas); image = evas_object_image_filled_add(evas);
eo_do(image, efl_gfx_size_set(image, WIDTH, HEIGHT);
efl_gfx_size_set(WIDTH, HEIGHT), efl_gfx_visible_set(image, EINA_TRUE);
efl_gfx_visible_set(EINA_TRUE), evas_object_focus_set(image, EINA_TRUE);
evas_object_focus_set(image, EINA_TRUE));
/* Set the image object as render target for 3D scene. */ /* Set the image object as render target for 3D scene. */
eo_do(image, evas_obj_image_scene_set(data.scene)); evas_obj_image_scene_set(image, data.scene);
/* Add animation timer callback. */ /* Add animation timer callback. */
ecore_timer_add(0.01, _animate_scene, &data); ecore_timer_add(0.01, _animate_scene, &data);

View File

@ -51,8 +51,7 @@ _animate_scene(void *data)
angle += 0.3; angle += 0.3;
eo_do((Evas_Canvas3D_Node *)data, evas_canvas3d_node_orientation_angle_axis_set((Evas_Canvas3D_Node *)data, angle, 0.0, 1.0, 0.0);
evas_canvas3d_node_orientation_angle_axis_set(angle, 0.0, 1.0, 0.0));
/* Rotate */ /* Rotate */
if (angle > 360.0) angle -= 360.0f; if (angle > 360.0) angle -= 360.0f;
@ -96,12 +95,12 @@ _on_mouse_down(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj,
obj_x = ev->canvas.x - x; obj_x = ev->canvas.x - x;
obj_y = ev->canvas.y - y; obj_y = ev->canvas.y - y;
eo_do(scene, evas_canvas3d_scene_size_get(&scene_w, &scene_h)); evas_canvas3d_scene_size_get(scene, &scene_w, &scene_h);
scene_x = obj_x * scene_w / (Evas_Real)w; scene_x = obj_x * scene_w / (Evas_Real)w;
scene_y = obj_y * scene_h / (Evas_Real)h; scene_y = obj_y * scene_h / (Evas_Real)h;
eo_do(scene, pick = evas_canvas3d_scene_pick(scene_x, scene_y, &n, &m, &s, &t)); pick = evas_canvas3d_scene_pick(scene, scene_x, scene_y, &n, &m, &s, &t);
if (pick) printf("Picked : "); if (pick) printf("Picked : ");
else printf("Not picked : "); else printf("Not picked : ");
@ -136,80 +135,62 @@ main(void)
scene = eo_add(EVAS_CANVAS3D_SCENE_CLASS, evas); scene = eo_add(EVAS_CANVAS3D_SCENE_CLASS, evas);
/* Add the root node for the scene. */ /* Add the root node for the scene. */
root_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, root_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_NODE));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_NODE));
/* Add the camera. */ /* Add the camera. */
camera = eo_add(EVAS_CANVAS3D_CAMERA_CLASS, evas); camera = eo_add(EVAS_CANVAS3D_CAMERA_CLASS, evas);
eo_do(camera, evas_canvas3d_camera_projection_perspective_set(camera, 30.0, 1.0, 1.0, 100.0);
evas_canvas3d_camera_projection_perspective_set(30.0, 1.0, 1.0, 100.0));
camera_node = camera_node =
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_CAMERA));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_CAMERA)); evas_canvas3d_node_camera_set(camera_node, camera);
eo_do(camera_node, evas_canvas3d_node_position_set(camera_node, 0.0, 0.0, 2.5);
evas_canvas3d_node_camera_set(camera), evas_canvas3d_node_look_at_set(camera_node, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0);
evas_canvas3d_node_position_set(0.0, 0.0, 2.5), evas_canvas3d_node_member_add(root_node, camera_node);
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0,
EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0));
eo_do(root_node, evas_canvas3d_node_member_add(camera_node));
sphere = eo_add(EVAS_CANVAS3D_PRIMITIVE_CLASS, evas); sphere = eo_add(EVAS_CANVAS3D_PRIMITIVE_CLASS, evas);
eo_do(sphere, evas_canvas3d_primitive_form_set(sphere, EVAS_CANVAS3D_MESH_PRIMITIVE_SPHERE);
evas_canvas3d_primitive_form_set(EVAS_CANVAS3D_MESH_PRIMITIVE_SPHERE), evas_canvas3d_primitive_precision_set(sphere, 50);
evas_canvas3d_primitive_precision_set(50));
mesh = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas); mesh = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas);
eo_do(mesh, evas_canvas3d_mesh_from_primitive_set(0, sphere)); evas_canvas3d_mesh_from_primitive_set(mesh, 0, sphere);
material = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas); material = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas);
texture_diffuse = eo_add(EVAS_CANVAS3D_TEXTURE_CLASS, evas); texture_diffuse = eo_add(EVAS_CANVAS3D_TEXTURE_CLASS, evas);
eo_do(texture_diffuse, evas_canvas3d_texture_file_set(texture_diffuse, image_path, NULL);
evas_canvas3d_texture_file_set(image_path, NULL), evas_canvas3d_texture_filter_set(texture_diffuse, EVAS_CANVAS3D_TEXTURE_FILTER_LINEAR, EVAS_CANVAS3D_TEXTURE_FILTER_LINEAR);
evas_canvas3d_texture_filter_set(EVAS_CANVAS3D_TEXTURE_FILTER_LINEAR, evas_canvas3d_material_texture_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, texture_diffuse);
EVAS_CANVAS3D_TEXTURE_FILTER_LINEAR)); evas_canvas3d_material_enable_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE);
eo_do(material, evas_canvas3d_material_enable_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE);
evas_canvas3d_material_texture_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, evas_canvas3d_material_enable_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE);
texture_diffuse), evas_canvas3d_material_color_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, 0.01, 0.01, 0.01, 1.0);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE), evas_canvas3d_material_color_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE), evas_canvas3d_material_color_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE), evas_canvas3d_material_shininess_set(material, 50.0);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, 0.01, 0.01, 0.01, mesh_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_MESH));
1.0),
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, 1.0, 1.0, 1.0,
1.0),
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, 1.0, 1.0, 1.0,
1.0),
evas_canvas3d_material_shininess_set(50.0));
mesh_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_member_add(root_node, mesh_node);
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_MESH)); evas_canvas3d_node_mesh_add(mesh_node, mesh);
evas_canvas3d_mesh_shade_mode_set(mesh, EVAS_CANVAS3D_SHADE_MODE_DIFFUSE);
eo_do(root_node, evas_canvas3d_node_member_add(mesh_node)); evas_canvas3d_mesh_frame_material_set(mesh, 0, material);
eo_do(mesh_node, evas_canvas3d_node_mesh_add(mesh));
eo_do(mesh, evas_canvas3d_mesh_shade_mode_set(EVAS_CANVAS3D_SHADE_MODE_DIFFUSE),
evas_canvas3d_mesh_frame_material_set(0, material));
/* Set up scene. */ /* Set up scene. */
eo_do(scene, evas_canvas3d_scene_root_node_set(scene, root_node);
evas_canvas3d_scene_root_node_set(root_node), evas_canvas3d_scene_camera_node_set(scene, camera_node);
evas_canvas3d_scene_camera_node_set(camera_node), evas_canvas3d_scene_size_set(scene, WIDTH, HEIGHT);
evas_canvas3d_scene_size_set(WIDTH, HEIGHT));
/* Add evas objects. */ /* Add evas objects. */
background = eo_add(EVAS_RECTANGLE_CLASS, evas); background = eo_add(EVAS_RECTANGLE_CLASS, evas);
eo_do(background, efl_gfx_color_set(background, 0, 0, 0, 255);
efl_gfx_color_set(0, 0, 0, 255), efl_gfx_size_set(background, WIDTH, HEIGHT);
efl_gfx_size_set(WIDTH, HEIGHT), efl_gfx_visible_set(background, EINA_TRUE);
efl_gfx_visible_set(EINA_TRUE));
image = evas_object_image_filled_add(evas); image = evas_object_image_filled_add(evas);
eo_do(image, evas_obj_image_scene_set(image, scene);
evas_obj_image_scene_set(scene), efl_gfx_size_set(image, WIDTH, HEIGHT);
efl_gfx_size_set(WIDTH, HEIGHT), efl_gfx_visible_set(image, EINA_TRUE);
efl_gfx_visible_set(EINA_TRUE));
evas_object_event_callback_add(image, EVAS_CALLBACK_MOUSE_DOWN, evas_object_event_callback_add(image, EVAS_CALLBACK_MOUSE_DOWN,
_on_mouse_down, NULL); _on_mouse_down, NULL);

View File

@ -78,7 +78,7 @@ _animate_scene(void *data)
{ {
angle += 0.2; angle += 0.2;
eo_do((Evas_Canvas3D_Node *)data, evas_canvas3d_node_orientation_angle_axis_set(angle, 1.0, 1.0, 1.0)); evas_canvas3d_node_orientation_angle_axis_set((Evas_Canvas3D_Node *)data, angle, 1.0, 1.0, 1.0);
/* Rotate */ /* Rotate */
if (angle > 360.0) angle -= 360.0f; if (angle > 360.0) angle -= 360.0f;
@ -98,8 +98,8 @@ _on_canvas_resize(Ecore_Evas *ee)
int w, h; int w, h;
ecore_evas_geometry_get(ee, NULL, NULL, &w, &h); ecore_evas_geometry_get(ee, NULL, NULL, &w, &h);
eo_do(background, efl_gfx_size_set(w, h)); efl_gfx_size_set(background, w, h);
eo_do(image, efl_gfx_size_set(w, h)); efl_gfx_size_set(image, w, h);
} }
int int
@ -133,63 +133,44 @@ main(void)
scene = eo_add(EVAS_CANVAS3D_SCENE_CLASS, evas); scene = eo_add(EVAS_CANVAS3D_SCENE_CLASS, evas);
/* Add the root node for the scene. */ /* Add the root node for the scene. */
root_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, root_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_NODE));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_NODE));
/* Add the camera. */ /* Add the camera. */
camera = eo_add(EVAS_CANVAS3D_CAMERA_CLASS, evas); camera = eo_add(EVAS_CANVAS3D_CAMERA_CLASS, evas);
eo_do(camera, evas_canvas3d_camera_projection_perspective_set(camera, 60.0, 1.0, 1.0, 500.0);
evas_canvas3d_camera_projection_perspective_set(60.0, 1.0, 1.0, 500.0));
camera_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, camera_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_CAMERA));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_CAMERA)); evas_canvas3d_node_camera_set(camera_node, camera);
eo_do(camera_node, evas_canvas3d_node_member_add(root_node, camera_node);
evas_canvas3d_node_camera_set(camera)); evas_canvas3d_node_position_set(camera_node, 15.0, 0.0, 0.0);
eo_do(root_node, evas_canvas3d_node_look_at_set(camera_node, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 1.0);
evas_canvas3d_node_member_add(camera_node));
eo_do(camera_node,
evas_canvas3d_node_position_set(15.0, 0.0, 0.0),
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0,
EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 1.0));
/* Add the light. */ /* Add the light. */
light = eo_add(EVAS_CANVAS3D_LIGHT_CLASS, evas); light = eo_add(EVAS_CANVAS3D_LIGHT_CLASS, evas);
eo_do(light, evas_canvas3d_light_ambient_set(light, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_light_ambient_set(1.0, 1.0, 1.0, 1.0), evas_canvas3d_light_diffuse_set(light, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_light_diffuse_set(1.0, 1.0, 1.0, 1.0), evas_canvas3d_light_specular_set(light, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_light_specular_set(1.0, 1.0, 1.0, 1.0), evas_canvas3d_light_directional_set(light, EINA_TRUE);
evas_canvas3d_light_directional_set(EINA_TRUE));
light_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, light_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_LIGHT));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_LIGHT)); evas_canvas3d_node_light_set(light_node, light);
eo_do(light_node, evas_canvas3d_node_position_set(light_node, 1000.0, 0.0, 1000.0);
evas_canvas3d_node_light_set(light), evas_canvas3d_node_look_at_set(light_node, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0);
evas_canvas3d_node_position_set(1000.0, 0.0, 1000.0), evas_canvas3d_node_member_add(root_node, light_node);
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0,
EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0));
eo_do(root_node,
evas_canvas3d_node_member_add(light_node));
material = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas); material = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas);
texture = eo_add(EVAS_CANVAS3D_TEXTURE_CLASS, evas); texture = eo_add(EVAS_CANVAS3D_TEXTURE_CLASS, evas);
eo_do(texture, evas_canvas3d_texture_file_set(texture, image_path, NULL);
evas_canvas3d_texture_file_set(image_path, NULL), evas_canvas3d_texture_filter_set(texture, EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST, EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST);
evas_canvas3d_texture_filter_set(EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST, evas_canvas3d_texture_wrap_set(texture, EVAS_CANVAS3D_WRAP_MODE_REPEAT, EVAS_CANVAS3D_WRAP_MODE_REPEAT);
EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST), evas_canvas3d_material_texture_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, texture);
evas_canvas3d_texture_wrap_set(EVAS_CANVAS3D_WRAP_MODE_REPEAT, evas_canvas3d_material_enable_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE);
EVAS_CANVAS3D_WRAP_MODE_REPEAT)); evas_canvas3d_material_enable_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE);
eo_do(material, evas_canvas3d_material_enable_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE);
evas_canvas3d_material_texture_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, texture), evas_canvas3d_material_enable_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_NORMAL, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE), evas_canvas3d_material_color_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, 0.01, 0.01, 0.01, 1.0);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE), evas_canvas3d_material_color_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE), evas_canvas3d_material_color_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_NORMAL, EINA_TRUE), evas_canvas3d_material_shininess_set(material, 50.0);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT,
0.01, 0.01, 0.01, 1.0),
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE,
1.0, 1.0, 1.0, 1.0),
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR,
1.0, 1.0, 1.0, 1.0),
evas_canvas3d_material_shininess_set(50.0));
if (!ecore_file_mkpath(PACKAGE_EXAMPLES_DIR EVAS_SAVED_FILES)) if (!ecore_file_mkpath(PACKAGE_EXAMPLES_DIR EVAS_SAVED_FILES))
fprintf(stderr, "Failed to create folder %s\n\n", fprintf(stderr, "Failed to create folder %s\n\n",
@ -201,51 +182,44 @@ main(void)
mesh[i] = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas); mesh[i] = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas);
snprintf(buffer, PATH_MAX, "%s%s", input_template, file_name[i % 8]); snprintf(buffer, PATH_MAX, "%s%s", input_template, file_name[i % 8]);
eo_do(mesh[i], efl_file_set(mesh[i], buffer, NULL);
efl_file_set(buffer, NULL), evas_canvas3d_mesh_frame_material_set(mesh[i], 0, material);
evas_canvas3d_mesh_frame_material_set(0, material), evas_canvas3d_mesh_shade_mode_set(mesh[i], draw_mode[(i % 8)]);
evas_canvas3d_mesh_shade_mode_set(draw_mode[(i % 8)]));
snprintf(buffer, PATH_MAX, "%s%s", output_template, file_name[i % 8]); snprintf(buffer, PATH_MAX, "%s%s", output_template, file_name[i % 8]);
eo_do(mesh[i], efl_file_save(buffer, NULL, NULL)); efl_file_save(mesh[i], buffer, NULL, NULL);
if (i > 15) if (i > 15)
{ {
eo_do(mesh[i], efl_file_set(mesh[i], buffer, NULL);
efl_file_set(buffer, NULL), evas_canvas3d_mesh_frame_material_set(mesh[i], 0, material);
evas_canvas3d_mesh_frame_material_set(0, material), evas_canvas3d_mesh_shade_mode_set(mesh[i], draw_mode[(i % 8)]);
evas_canvas3d_mesh_shade_mode_set(draw_mode[(i % 8)]));
} }
mesh_node[i] = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, mesh_node[i] = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_MESH));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_MESH)); evas_canvas3d_node_member_add(root_node, mesh_node[i]);
eo_do(root_node, evas_canvas3d_node_member_add(mesh_node[i])); evas_canvas3d_node_mesh_add(mesh_node[i], mesh[i]);
eo_do(mesh_node[i], evas_canvas3d_node_position_set(mesh_node[i], 0, ((i % 4) * 4) + ((i / 16) * 1) - 6.5, (((i % 16) / 4) * 4) - 6);
evas_canvas3d_node_mesh_add(mesh[i]),
evas_canvas3d_node_position_set(0, ((i % 4) * 4) + ((i / 16) * 1) - 6.5, (((i % 16) / 4) * 4) - 6));
} }
/* Set up scene. */ /* Set up scene. */
eo_do(scene, evas_canvas3d_scene_root_node_set(scene, root_node);
evas_canvas3d_scene_root_node_set(root_node), evas_canvas3d_scene_camera_node_set(scene, camera_node);
evas_canvas3d_scene_camera_node_set(camera_node), evas_canvas3d_scene_size_set(scene, WIDTH, HEIGHT);
evas_canvas3d_scene_size_set(WIDTH, HEIGHT));
/* Add a background rectangle objects. */ /* Add a background rectangle objects. */
background = eo_add(EVAS_RECTANGLE_CLASS, evas); background = eo_add(EVAS_RECTANGLE_CLASS, evas);
eo_do(background, efl_gfx_color_set(background, 100, 100, 100, 255);
efl_gfx_color_set(100, 100, 100, 255), efl_gfx_size_set(background, WIDTH, HEIGHT);
efl_gfx_size_set(WIDTH, HEIGHT), efl_gfx_visible_set(background, EINA_TRUE);
efl_gfx_visible_set(EINA_TRUE));
/* Add an image object for 3D scene rendering. */ /* Add an image object for 3D scene rendering. */
image = evas_object_image_filled_add(evas); image = evas_object_image_filled_add(evas);
eo_do(image, efl_gfx_size_set(image, WIDTH, HEIGHT);
efl_gfx_size_set(WIDTH, HEIGHT), efl_gfx_visible_set(image, EINA_TRUE);
efl_gfx_visible_set(EINA_TRUE));
/* Set the image object as render target for 3D scene. */ /* Set the image object as render target for 3D scene. */
eo_do(image, evas_obj_image_scene_set(scene)); evas_obj_image_scene_set(image, scene);
ecore_animator_frametime_set(0.03); ecore_animator_frametime_set(0.03);
for (i = 0; i < NUMBER_OF_MESHES; i++) for (i = 0; i < NUMBER_OF_MESHES; i++)

View File

@ -56,8 +56,8 @@ _on_canvas_resize(Ecore_Evas *ee)
int w, h; int w, h;
ecore_evas_geometry_get(ee, NULL, NULL, &w, &h); ecore_evas_geometry_get(ee, NULL, NULL, &w, &h);
eo_do(background, efl_gfx_size_set(w, h)); efl_gfx_size_set(background, w, h);
eo_do(image, efl_gfx_size_set(w, h)); efl_gfx_size_set(image, w, h);
} }
static Eina_Bool static Eina_Bool
@ -70,15 +70,13 @@ _animate_scene(void *data)
angle += 0.5; angle += 0.5;
eo_do(scene->mesh_node, evas_canvas3d_node_orientation_angle_axis_set(scene->mesh_node, angle, 1.0, 1.0, 1.0);
evas_canvas3d_node_orientation_angle_axis_set(angle, 1.0, 1.0, 1.0));
/* Rotate */ /* Rotate */
if (angle > 360.0) angle -= 360.0f; if (angle > 360.0) angle -= 360.0f;
eo_do(source, pixels = evas_obj_image_data_get(source, EINA_TRUE);
pixels = evas_obj_image_data_get(EINA_TRUE), stride = evas_obj_image_stride_get(source);
stride = evas_obj_image_stride_get());
for (i = 0; i < IMG_HEIGHT; i++) for (i = 0; i < IMG_HEIGHT; i++)
{ {
@ -90,9 +88,8 @@ _animate_scene(void *data)
} }
} }
eo_do(source, evas_obj_image_data_set(source, pixels);
evas_obj_image_data_set(pixels), evas_obj_image_data_update_add(source, 0, 0, IMG_WIDTH, IMG_HEIGHT);
evas_obj_image_data_update_add(0, 0, IMG_WIDTH, IMG_HEIGHT));
return EINA_TRUE; return EINA_TRUE;
} }
@ -101,39 +98,30 @@ static void
_camera_setup(Scene_Data *data) _camera_setup(Scene_Data *data)
{ {
data->camera = eo_add(EVAS_CANVAS3D_CAMERA_CLASS, evas); data->camera = eo_add(EVAS_CANVAS3D_CAMERA_CLASS, evas);
eo_do(data->camera, evas_canvas3d_camera_projection_perspective_set(data->camera, 30.0, 1.0, 2.0, 50.0);
evas_canvas3d_camera_projection_perspective_set(30.0, 1.0, 2.0, 50.0));
data->camera_node = data->camera_node =
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_CAMERA));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_CAMERA)); evas_canvas3d_node_camera_set(data->camera_node, data->camera);
eo_do(data->camera_node, evas_canvas3d_node_position_set(data->camera_node, 0.0, 0.0, 5.0);
evas_canvas3d_node_camera_set(data->camera), evas_canvas3d_node_look_at_set(data->camera_node, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0);
evas_canvas3d_node_position_set(0.0, 0.0, 5.0), evas_canvas3d_node_member_add(data->root_node, data->camera_node);
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0,
EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0));
eo_do(data->root_node,
evas_canvas3d_node_member_add(data->camera_node));
} }
static void static void
_light_setup(Scene_Data *data) _light_setup(Scene_Data *data)
{ {
data->light = eo_add(EVAS_CANVAS3D_LIGHT_CLASS, evas); data->light = eo_add(EVAS_CANVAS3D_LIGHT_CLASS, evas);
eo_do(data->light, evas_canvas3d_light_ambient_set(data->light, 0.2, 0.2, 0.2, 1.0);
evas_canvas3d_light_ambient_set(0.2, 0.2, 0.2, 1.0), evas_canvas3d_light_diffuse_set(data->light, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_light_diffuse_set(1.0, 1.0, 1.0, 1.0), evas_canvas3d_light_specular_set(data->light, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_light_specular_set(1.0, 1.0, 1.0, 1.0));
data->light_node = data->light_node =
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_LIGHT));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_LIGHT)); evas_canvas3d_node_light_set(data->light_node, data->light);
eo_do(data->light_node, evas_canvas3d_node_position_set(data->light_node, 0.0, 0.0, 10.0);
evas_canvas3d_node_light_set(data->light), evas_canvas3d_node_look_at_set(data->light_node, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0);
evas_canvas3d_node_position_set(0.0, 0.0, 10.0), evas_canvas3d_node_member_add(data->root_node, data->light_node);
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0,
EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0));
eo_do(data->root_node, evas_canvas3d_node_member_add(data->light_node));
} }
static void static void
@ -143,61 +131,51 @@ _mesh_setup(Scene_Data *data)
data->material = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas); data->material = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas);
data->texture = eo_add(EVAS_CANVAS3D_TEXTURE_CLASS, evas); data->texture = eo_add(EVAS_CANVAS3D_TEXTURE_CLASS, evas);
eo_do(data->texture, evas_canvas3d_texture_source_set(data->texture, source);
evas_canvas3d_texture_source_set(source), evas_canvas3d_texture_source_visible_set(data->texture, EINA_TRUE);
evas_canvas3d_texture_source_visible_set(EINA_TRUE));
eo_do(data->material, evas_canvas3d_material_enable_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE), evas_canvas3d_material_enable_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE), evas_canvas3d_material_enable_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE), evas_canvas3d_material_color_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, 0.2, 0.2, 0.2, 1.0);
evas_canvas3d_material_color_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, 0.8, 0.8, 0.8, 1.0);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, 0.2, 0.2, 0.2, 1.0), evas_canvas3d_material_color_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, 0.8, 0.8, 0.8, 1.0), evas_canvas3d_material_shininess_set(data->material, 100.0);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, 1.0, 1.0, 1.0, 1.0), evas_canvas3d_material_texture_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, data->texture);
evas_canvas3d_material_shininess_set(100.0),
evas_canvas3d_material_texture_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, data->texture));
/* Set data of primitive */ /* Set data of primitive */
data->cube = eo_add(EVAS_CANVAS3D_PRIMITIVE_CLASS, evas); data->cube = eo_add(EVAS_CANVAS3D_PRIMITIVE_CLASS, evas);
eo_do(data->cube, evas_canvas3d_primitive_form_set(data->cube, EVAS_CANVAS3D_MESH_PRIMITIVE_CUBE);
evas_canvas3d_primitive_form_set(EVAS_CANVAS3D_MESH_PRIMITIVE_CUBE));
/* Setup mesh. */ /* Setup mesh. */
data->mesh = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas); data->mesh = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas);
eo_do(data->mesh, evas_canvas3d_mesh_from_primitive_set(data->mesh, 0, data->cube);
evas_canvas3d_mesh_from_primitive_set(0, data->cube), evas_canvas3d_mesh_shade_mode_set(data->mesh, EVAS_CANVAS3D_SHADE_MODE_FLAT);
evas_canvas3d_mesh_shade_mode_set(EVAS_CANVAS3D_SHADE_MODE_FLAT), evas_canvas3d_mesh_frame_material_set(data->mesh, 0, data->material);
evas_canvas3d_mesh_frame_material_set(0, data->material));
data->mesh_node = data->mesh_node =
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_MESH));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_MESH));
eo_do(data->root_node, evas_canvas3d_node_member_add(data->mesh_node)); evas_canvas3d_node_member_add(data->root_node, data->mesh_node);
eo_do(data->mesh_node, evas_canvas3d_node_mesh_add(data->mesh)); evas_canvas3d_node_mesh_add(data->mesh_node, data->mesh);
} }
static void static void
_scene_setup(Scene_Data *data) _scene_setup(Scene_Data *data)
{ {
data->scene = eo_add(EVAS_CANVAS3D_SCENE_CLASS, evas); data->scene = eo_add(EVAS_CANVAS3D_SCENE_CLASS, evas);
eo_do(data->scene, evas_canvas3d_scene_size_set(data->scene, WIDTH, HEIGHT);
evas_canvas3d_scene_size_set(WIDTH, HEIGHT), evas_canvas3d_scene_background_color_set(data->scene, 0.0, 0.0, 0.0, 0.0);
evas_canvas3d_scene_background_color_set(0.0, 0.0, 0.0, 0.0));
data->root_node = data->root_node =
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_NODE));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_NODE));
_camera_setup(data); _camera_setup(data);
_light_setup(data); _light_setup(data);
_mesh_setup(data); _mesh_setup(data);
eo_do(data->scene, evas_canvas3d_scene_root_node_set(data->scene, data->root_node);
evas_canvas3d_scene_root_node_set(data->root_node), evas_canvas3d_scene_camera_node_set(data->scene, data->camera_node);
evas_canvas3d_scene_camera_node_set(data->camera_node));
} }
int int
@ -222,30 +200,27 @@ main(void)
/* Add a background rectangle objects. */ /* Add a background rectangle objects. */
background = eo_add(EVAS_RECTANGLE_CLASS, evas); background = eo_add(EVAS_RECTANGLE_CLASS, evas);
eo_do(background, efl_gfx_color_set(background, 0, 0, 0, 255);
efl_gfx_color_set(0, 0, 0, 255), efl_gfx_size_set(background, WIDTH, HEIGHT);
efl_gfx_size_set(WIDTH, HEIGHT), efl_gfx_visible_set(background, EINA_TRUE);
efl_gfx_visible_set(EINA_TRUE));
/* Add a background image. */ /* Add a background image. */
source = evas_object_image_filled_add(evas); source = evas_object_image_filled_add(evas);
eo_do(source, efl_gfx_view_size_set(source, IMG_WIDTH, IMG_HEIGHT);
efl_gfx_view_size_set(IMG_WIDTH, IMG_HEIGHT), efl_gfx_position_set(source, (WIDTH / 2), (HEIGHT / 2));
efl_gfx_position_set((WIDTH / 2), (HEIGHT / 2)), efl_gfx_size_set(source, (WIDTH / 2), (HEIGHT / 2));
efl_gfx_size_set((WIDTH / 2), (HEIGHT / 2)), efl_gfx_visible_set(source, EINA_TRUE);
efl_gfx_visible_set(EINA_TRUE));
/* Add an image object for 3D scene rendering. */ /* Add an image object for 3D scene rendering. */
image = evas_object_image_filled_add(evas); image = evas_object_image_filled_add(evas);
eo_do(image, efl_gfx_size_set(image, (WIDTH / 2), (HEIGHT / 2));
efl_gfx_size_set((WIDTH / 2), (HEIGHT / 2)), efl_gfx_visible_set(image, EINA_TRUE);
efl_gfx_visible_set(EINA_TRUE));
/* Setup scene */ /* Setup scene */
_scene_setup(&data); _scene_setup(&data);
/* Set the image object as render target for 3D scene. */ /* Set the image object as render target for 3D scene. */
eo_do(image, evas_obj_image_scene_set(data.scene)); evas_obj_image_scene_set(image, data.scene);
/* Add animation timer callback. */ /* Add animation timer callback. */
ecore_timer_add(0.016, _animate_scene, &data); ecore_timer_add(0.016, _animate_scene, &data);

View File

@ -84,20 +84,20 @@ _cb_clicked(void *data EINA_UNUSED, const Eo_Event *event)
Eina_List *meshes = NULL, *l; Eina_List *meshes = NULL, *l;
Evas_Canvas3D_Mesh *m; Evas_Canvas3D_Mesh *m;
Evas_Canvas3D_Node *billboard = NULL; Evas_Canvas3D_Node *billboard = NULL;
eo_do((Evas_Canvas3D_Node *)event->event_info, meshes = (Eina_List *)evas_canvas3d_node_mesh_list_get()); meshes = (Eina_List *)evas_canvas3d_node_mesh_list_get((Evas_Canvas3D_Node *)event->event_info);
EINA_LIST_FOREACH(meshes, l, m) EINA_LIST_FOREACH(meshes, l, m)
{ {
eo_do(m, evas_canvas3d_mesh_shade_mode_set(EVAS_CANVAS3D_SHADE_MODE_DIFFUSE)); evas_canvas3d_mesh_shade_mode_set(m, EVAS_CANVAS3D_SHADE_MODE_DIFFUSE);
} }
if (choosed_node != (Evas_Canvas3D_Node *)event->event_info) if (choosed_node != (Evas_Canvas3D_Node *)event->event_info)
{ {
eo_do(choosed_node, billboard = evas_canvas3d_node_billboard_target_get()); billboard = evas_canvas3d_node_billboard_target_get(choosed_node);
if (!billboard) if (!billboard)
{ {
eo_do(choosed_node, meshes = (Eina_List *)evas_canvas3d_node_mesh_list_get()); meshes = (Eina_List *)evas_canvas3d_node_mesh_list_get(choosed_node);
EINA_LIST_FOREACH(meshes, l, m) EINA_LIST_FOREACH(meshes, l, m)
{ {
eo_do(m, evas_canvas3d_mesh_shade_mode_set(EVAS_CANVAS3D_SHADE_MODE_PHONG)); evas_canvas3d_mesh_shade_mode_set(m, EVAS_CANVAS3D_SHADE_MODE_PHONG);
} }
} }
choosed_node = (Evas_Canvas3D_Node *)event->event_info; choosed_node = (Evas_Canvas3D_Node *)event->event_info;
@ -111,10 +111,10 @@ _cb_collision(void *data EINA_UNUSED, const Eo_Event *event)
{ {
Eina_List *meshes = NULL, *l; Eina_List *meshes = NULL, *l;
Evas_Canvas3D_Mesh *m; Evas_Canvas3D_Mesh *m;
eo_do((Evas_Canvas3D_Node *)event->event_info, meshes = (Eina_List *)evas_canvas3d_node_mesh_list_get()); meshes = (Eina_List *)evas_canvas3d_node_mesh_list_get((Evas_Canvas3D_Node *)event->event_info);
EINA_LIST_FOREACH(meshes, l, m) EINA_LIST_FOREACH(meshes, l, m)
{ {
eo_do(m, evas_canvas3d_mesh_shade_mode_set(EVAS_CANVAS3D_SHADE_MODE_DIFFUSE)); evas_canvas3d_mesh_shade_mode_set(m, EVAS_CANVAS3D_SHADE_MODE_DIFFUSE);
} }
return EINA_TRUE; return EINA_TRUE;
@ -142,20 +142,15 @@ _animate_scene(void *data)
Scene_Data *scene = (Scene_Data *)data; Scene_Data *scene = (Scene_Data *)data;
if (scene->init) if (scene->init)
{ {
eo_do(scene->mediator, evas_canvas3d_node_position_get(scene->mediator, EVAS_CANVAS3D_SPACE_PARENT, &x, &y, &z);
evas_canvas3d_node_position_get(EVAS_CANVAS3D_SPACE_PARENT, &x, &y, &z)); evas_canvas3d_node_position_set(scene->mediator, sin(angle) * 20, y, cos(angle) * 20);
eo_do(scene->mediator, evas_canvas3d_node_look_at_set(scene->mediator, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 3.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 5.0, 0.0);
evas_canvas3d_node_position_set(sin(angle) * 20 , y , cos(angle) * 20),
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 0.0, 3.0, 0.0,
EVAS_CANVAS3D_SPACE_PARENT, 0.0, 5.0, 0.0));
angle += 0.005; angle += 0.005;
if (angle > 360) angle = 0.0; if (angle > 360) angle = 0.0;
} }
else else
eo_do(scene->mediator, evas_canvas3d_node_position_set(scene->mediator, 0.0, 6.0, 12.0);
evas_canvas3d_node_position_set(0.0, 6.0, 12.0), evas_canvas3d_node_look_at_set(scene->mediator, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 3.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 5.0, 0.0);
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 0.0, 3.0, 0.0,
EVAS_CANVAS3D_SPACE_PARENT, 0.0, 5.0, 0.0));
return EINA_TRUE; return EINA_TRUE;
} }
@ -172,8 +167,8 @@ _on_canvas_resize(Ecore_Evas *ee)
int w, h; int w, h;
ecore_evas_geometry_get(ee, NULL, NULL, &w, &h); ecore_evas_geometry_get(ee, NULL, NULL, &w, &h);
eo_do(background, efl_gfx_size_set(w, h)); efl_gfx_size_set(background, w, h);
eo_do(image, efl_gfx_size_set(w, h)); efl_gfx_size_set(image, w, h);
} }
static void static void
@ -181,83 +176,70 @@ _body_material_set(Body_3D *body, float r, float g, float b)
{ {
body->material = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas); body->material = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas);
eo_do(body->material, evas_canvas3d_material_enable_set(body->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE), evas_canvas3d_material_enable_set(body->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE), evas_canvas3d_material_enable_set(body->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE), evas_canvas3d_material_color_set(body->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, r, g, b, 1.0);
evas_canvas3d_material_color_set(body->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, r, g, b, 1.0);
evas_canvas3d_material_color_set(body->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_material_shininess_set(body->material, 100.0);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, r, g, b, 1.0), evas_canvas3d_mesh_shade_mode_set(body->mesh, EVAS_CANVAS3D_SHADE_MODE_PHONG);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, r, g, b, 1.0), evas_canvas3d_mesh_frame_material_set(body->mesh, 0, body->material);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, 1.0, 1.0, 1.0, 1.0),
evas_canvas3d_material_shininess_set(100.0));
eo_do(body->mesh,
evas_canvas3d_mesh_shade_mode_set(EVAS_CANVAS3D_SHADE_MODE_PHONG),
evas_canvas3d_mesh_frame_material_set(0, body->material));
} }
static void static void
_sphere_setup(Body_3D *sphere) _sphere_setup(Body_3D *sphere)
{ {
sphere->primitive = eo_add(EVAS_CANVAS3D_PRIMITIVE_CLASS, evas); sphere->primitive = eo_add(EVAS_CANVAS3D_PRIMITIVE_CLASS, evas);
eo_do(sphere->primitive, evas_canvas3d_primitive_form_set(sphere->primitive, EVAS_CANVAS3D_MESH_PRIMITIVE_SPHERE);
evas_canvas3d_primitive_form_set(EVAS_CANVAS3D_MESH_PRIMITIVE_SPHERE), evas_canvas3d_primitive_precision_set(sphere->primitive, 50);
evas_canvas3d_primitive_precision_set(50));
sphere->mesh = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas); sphere->mesh = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas);
eo_do(sphere->mesh, evas_canvas3d_mesh_from_primitive_set(sphere->mesh, 0, sphere->primitive);
evas_canvas3d_mesh_from_primitive_set(0, sphere->primitive));
_body_material_set(sphere, 1, 0.0, 0.0); _body_material_set(sphere, 1, 0.0, 0.0);
sphere->node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, sphere->node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_MESH), evas_canvas3d_node_position_set(eoid, 3.0, 3.0, 0.0));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_MESH), evas_canvas3d_node_mesh_add(sphere->node, sphere->mesh);
evas_canvas3d_node_position_set(3.0, 3.0, 0.0));
eo_do(sphere->node, evas_canvas3d_node_mesh_add(sphere->mesh));
} }
static void static void
_cone_setup(Body_3D *cone) _cone_setup(Body_3D *cone)
{ {
cone->primitive = eo_add(EVAS_CANVAS3D_PRIMITIVE_CLASS, evas); cone->primitive = eo_add(EVAS_CANVAS3D_PRIMITIVE_CLASS, evas);
eo_do(cone->primitive, evas_canvas3d_primitive_form_set(cone->primitive, EVAS_CANVAS3D_MESH_PRIMITIVE_CONE);
evas_canvas3d_primitive_form_set(EVAS_CANVAS3D_MESH_PRIMITIVE_CONE), evas_canvas3d_primitive_precision_set(cone->primitive, 50);
evas_canvas3d_primitive_precision_set(50));
cone->mesh = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas); cone->mesh = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas);
eo_do(cone->mesh, evas_canvas3d_mesh_from_primitive_set(cone->mesh, 0, cone->primitive);
evas_canvas3d_mesh_from_primitive_set(0, cone->primitive));
_body_material_set(cone, 0.8, 0.5, 0.5); _body_material_set(cone, 0.8, 0.5, 0.5);
cone->node = cone->node =
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_MESH));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_MESH)); evas_canvas3d_node_mesh_add(cone->node, cone->mesh);
eo_do(cone->node, evas_canvas3d_node_mesh_add(cone->mesh), evas_canvas3d_node_orientation_angle_axis_set(cone->node, -90.0, 1.0, 0.0, 0.0);
evas_canvas3d_node_orientation_angle_axis_set(-90.0, 1.0, 0.0, 0.0), evas_canvas3d_node_position_set(cone->node, -4.0, 0.0, -3.0);
evas_canvas3d_node_position_set(-4.0, 0.0, -3.0));
} }
static void static void
_cylinder_setup(Body_3D *cylinder) _cylinder_setup(Body_3D *cylinder)
{ {
cylinder->primitive = eo_add(EVAS_CANVAS3D_PRIMITIVE_CLASS, evas); cylinder->primitive = eo_add(EVAS_CANVAS3D_PRIMITIVE_CLASS, evas);
eo_do(cylinder->primitive, evas_canvas3d_primitive_form_set(cylinder->primitive, EVAS_CANVAS3D_MESH_PRIMITIVE_CYLINDER);
evas_canvas3d_primitive_form_set(EVAS_CANVAS3D_MESH_PRIMITIVE_CYLINDER), evas_canvas3d_primitive_precision_set(cylinder->primitive, 50);
evas_canvas3d_primitive_precision_set(50));
cylinder->mesh = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas); cylinder->mesh = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas);
eo_do(cylinder->mesh, evas_canvas3d_mesh_from_primitive_set(cylinder->mesh, 0, cylinder->primitive);
evas_canvas3d_mesh_from_primitive_set(0, cylinder->primitive));
_body_material_set(cylinder, 0.0, 0.0, 1.0); _body_material_set(cylinder, 0.0, 0.0, 1.0);
cylinder->node = cylinder->node =
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_MESH));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_MESH)); evas_canvas3d_node_mesh_add(cylinder->node, cylinder->mesh);
eo_do(cylinder->node, evas_canvas3d_node_mesh_add(cylinder->mesh), evas_canvas3d_node_orientation_angle_axis_set(cylinder->node, -90.0, 1.0, 0.0, 0.0);
evas_canvas3d_node_orientation_angle_axis_set(-90.0, 1.0, 0.0, 0.0), evas_canvas3d_node_position_set(cylinder->node, -2.0, 3.0, 1.0);
evas_canvas3d_node_position_set(-2.0, 3.0, 1.0));
} }
static void static void
@ -265,228 +247,184 @@ _fence_setup(Body_3D *fence)
{ {
Eo *texture = eo_add(EVAS_CANVAS3D_TEXTURE_CLASS, evas); Eo *texture = eo_add(EVAS_CANVAS3D_TEXTURE_CLASS, evas);
eo_do(texture, evas_canvas3d_texture_atlas_enable_set(EINA_FALSE)); evas_canvas3d_texture_atlas_enable_set(texture, EINA_FALSE);
eo_do(texture, evas_canvas3d_texture_file_set(texture, PACKAGE_EXAMPLES_DIR EVAS_IMAGE_FOLDER "/grid.png", NULL);
evas_canvas3d_texture_file_set(PACKAGE_EXAMPLES_DIR EVAS_IMAGE_FOLDER "/grid.png", NULL), evas_canvas3d_texture_filter_set(texture, EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST, EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST);
evas_canvas3d_texture_filter_set(EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST, evas_canvas3d_texture_wrap_set(texture, EVAS_CANVAS3D_WRAP_MODE_REPEAT, EVAS_CANVAS3D_WRAP_MODE_REPEAT);
EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST),
evas_canvas3d_texture_wrap_set(EVAS_CANVAS3D_WRAP_MODE_REPEAT,
EVAS_CANVAS3D_WRAP_MODE_REPEAT));
Eo *texture1 = eo_add(EVAS_CANVAS3D_TEXTURE_CLASS, evas); Eo *texture1 = eo_add(EVAS_CANVAS3D_TEXTURE_CLASS, evas);
eo_do(texture1, evas_canvas3d_texture_atlas_enable_set(EINA_FALSE)); evas_canvas3d_texture_atlas_enable_set(texture1, EINA_FALSE);
eo_do(texture1, evas_canvas3d_texture_file_set(texture1, PACKAGE_EXAMPLES_DIR EVAS_IMAGE_FOLDER "/grid_n.png", NULL);
evas_canvas3d_texture_file_set(PACKAGE_EXAMPLES_DIR EVAS_IMAGE_FOLDER "/grid_n.png", NULL), evas_canvas3d_texture_filter_set(texture1, EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST, EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST);
evas_canvas3d_texture_filter_set(EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST, evas_canvas3d_texture_wrap_set(texture1, EVAS_CANVAS3D_WRAP_MODE_REPEAT, EVAS_CANVAS3D_WRAP_MODE_REPEAT);
EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST),
evas_canvas3d_texture_wrap_set(EVAS_CANVAS3D_WRAP_MODE_REPEAT,
EVAS_CANVAS3D_WRAP_MODE_REPEAT));
fence->material = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas); fence->material = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas);
eo_do(fence->material, evas_canvas3d_material_texture_set(fence->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, texture);
evas_canvas3d_material_texture_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, texture), evas_canvas3d_material_texture_set(fence->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, texture);
evas_canvas3d_material_texture_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, texture), evas_canvas3d_material_enable_set(fence->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE), evas_canvas3d_material_enable_set(fence->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE), evas_canvas3d_material_enable_set(fence->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE), evas_canvas3d_material_enable_set(fence->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_NORMAL, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_NORMAL, EINA_TRUE), evas_canvas3d_material_texture_set(fence->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_NORMAL, texture1);
evas_canvas3d_material_texture_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_NORMAL, texture1), evas_canvas3d_material_color_set(fence->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, 1.0, 1.0, 1.0, 1.0), evas_canvas3d_material_color_set(fence->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, 1.0, 1.0, 1.0, 1.0), evas_canvas3d_material_color_set(fence->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, 1.0, 1.0, 1.0, 1.0), evas_canvas3d_material_shininess_set(fence->material, 100.0);
evas_canvas3d_material_shininess_set(100.0));
fence->primitive = eo_add(EVAS_CANVAS3D_PRIMITIVE_CLASS, evas); fence->primitive = eo_add(EVAS_CANVAS3D_PRIMITIVE_CLASS, evas);
eo_do(fence->primitive, evas_canvas3d_primitive_form_set(fence->primitive, EVAS_CANVAS3D_MESH_PRIMITIVE_CYLINDER);
evas_canvas3d_primitive_form_set(EVAS_CANVAS3D_MESH_PRIMITIVE_CYLINDER), evas_canvas3d_primitive_mode_set(fence->primitive, EVAS_CANVAS3D_PRIMITIVE_MODE_WITHOUT_BASE);
evas_canvas3d_primitive_mode_set(EVAS_CANVAS3D_PRIMITIVE_MODE_WITHOUT_BASE), evas_canvas3d_primitive_tex_scale_set(fence->primitive, 160.0, 12.0);
evas_canvas3d_primitive_tex_scale_set(160.0, 12.0), evas_canvas3d_primitive_precision_set(fence->primitive, 50);
evas_canvas3d_primitive_precision_set(50));
fence->mesh = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas); fence->mesh = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas);
eo_do(fence->mesh, evas_canvas3d_mesh_from_primitive_set(fence->mesh, 0, fence->primitive);
evas_canvas3d_mesh_from_primitive_set(0, fence->primitive));
eo_do(fence->mesh, evas_canvas3d_mesh_frame_material_set(fence->mesh, 0, fence->material);
evas_canvas3d_mesh_frame_material_set(0, fence->material), evas_canvas3d_mesh_alpha_func_set(fence->mesh, EVAS_CANVAS3D_COMPARISON_GREATER, 0);
evas_canvas3d_mesh_alpha_func_set(EVAS_CANVAS3D_COMPARISON_GREATER, 0), evas_canvas3d_mesh_alpha_test_enable_set(fence->mesh, EINA_TRUE);
evas_canvas3d_mesh_alpha_test_enable_set(EINA_TRUE), evas_canvas3d_mesh_shade_mode_set(fence->mesh, EVAS_CANVAS3D_SHADE_MODE_NORMAL_MAP);
evas_canvas3d_mesh_shade_mode_set(EVAS_CANVAS3D_SHADE_MODE_NORMAL_MAP));
fence->node = fence->node =
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_MESH));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_MESH)); evas_canvas3d_node_mesh_add(fence->node, fence->mesh);
eo_do(fence->node, evas_canvas3d_node_mesh_add(fence->mesh), evas_canvas3d_node_orientation_angle_axis_set(fence->node, -90.0, 1.0, 0.0, 0.0);
evas_canvas3d_node_orientation_angle_axis_set(-90.0, 1.0, 0.0, 0.0), evas_canvas3d_node_scale_set(fence->node, 10.0, 10.0, 5.0);
evas_canvas3d_node_scale_set(10.0, 10.0, 5.0), evas_canvas3d_node_position_set(fence->node, 0.0, -1.0, -2.0);
evas_canvas3d_node_position_set(0.0, -1.0, -2.0));
} }
static void static void
_square_setup(Body_3D *square) _square_setup(Body_3D *square)
{ {
square->primitive = eo_add(EVAS_CANVAS3D_PRIMITIVE_CLASS, evas); square->primitive = eo_add(EVAS_CANVAS3D_PRIMITIVE_CLASS, evas);
eo_do(square->primitive, evas_canvas3d_primitive_form_set(square->primitive, EVAS_CANVAS3D_MESH_PRIMITIVE_SQUARE);
evas_canvas3d_primitive_form_set(EVAS_CANVAS3D_MESH_PRIMITIVE_SQUARE));
square->mesh = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas); square->mesh = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas);
eo_do(square->mesh, evas_canvas3d_mesh_from_primitive_set(square->mesh, 0, square->primitive);
evas_canvas3d_mesh_from_primitive_set(0, square->primitive));
_body_material_set(square, 0.4, 0.4, 0.4); _body_material_set(square, 0.4, 0.4, 0.4);
square->node = square->node =
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_MESH));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_MESH)); evas_canvas3d_node_mesh_add(square->node, square->mesh);
eo_do(square->node, evas_canvas3d_node_mesh_add(square->mesh), evas_canvas3d_node_position_set(square->node, 0.0, -1.0, 0.0);
evas_canvas3d_node_position_set(0.0, -1.0, 0.0), evas_canvas3d_node_scale_set(square->node, 30.0, 30.0, 30.0);
evas_canvas3d_node_scale_set(30.0, 30.0, 30.0), evas_canvas3d_node_orientation_angle_axis_set(square->node, 90.0, 1.0, 0.0, 0.0);
evas_canvas3d_node_orientation_angle_axis_set(90.0, 1.0, 0.0, 0.0));
} }
static void static void
_box_setup(Body_3D *box) _box_setup(Body_3D *box)
{ {
box->primitive = eo_add(EVAS_CANVAS3D_PRIMITIVE_CLASS, evas); box->primitive = eo_add(EVAS_CANVAS3D_PRIMITIVE_CLASS, evas);
eo_do(box->primitive, evas_canvas3d_primitive_form_set(box->primitive, EVAS_CANVAS3D_MESH_PRIMITIVE_CUBE);
evas_canvas3d_primitive_form_set(EVAS_CANVAS3D_MESH_PRIMITIVE_CUBE));
box->mesh = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas); box->mesh = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas);
eo_do(box->mesh, evas_canvas3d_mesh_from_primitive_set(box->mesh, 0, box->primitive);
evas_canvas3d_mesh_from_primitive_set(0, box->primitive));
_body_material_set(box, 0, 1, 0); _body_material_set(box, 0, 1, 0);
box->node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, box->node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_MESH));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_MESH)); evas_canvas3d_node_mesh_add(box->node, box->mesh);
eo_do(box->node, evas_canvas3d_node_mesh_add(box->mesh), evas_canvas3d_node_position_set(box->node, 3.0, 0.0, -3.0);
evas_canvas3d_node_position_set(3.0, 0.0, -3.0));
} }
static void static void
_model_setup(Body_3D *model) _model_setup(Body_3D *model)
{ {
model->texture = eo_add(EVAS_CANVAS3D_TEXTURE_CLASS, evas); model->texture = eo_add(EVAS_CANVAS3D_TEXTURE_CLASS, evas);
eo_do(model->texture, evas_canvas3d_texture_file_set(model->texture, image_path, NULL);
evas_canvas3d_texture_file_set(image_path, NULL), evas_canvas3d_texture_filter_set(model->texture, EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST, EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST);
evas_canvas3d_texture_filter_set(EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST, evas_canvas3d_texture_wrap_set(model->texture, EVAS_CANVAS3D_WRAP_MODE_REPEAT, EVAS_CANVAS3D_WRAP_MODE_REPEAT);
EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST),
evas_canvas3d_texture_wrap_set(EVAS_CANVAS3D_WRAP_MODE_REPEAT,
EVAS_CANVAS3D_WRAP_MODE_REPEAT));
model->material = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas); model->material = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas);
eo_do(model->material, evas_canvas3d_material_texture_set(model->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, model->texture);
evas_canvas3d_material_texture_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, model->texture), evas_canvas3d_material_texture_set(model->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, model->texture);
evas_canvas3d_material_texture_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, model->texture), evas_canvas3d_material_enable_set(model->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE), evas_canvas3d_material_enable_set(model->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE), evas_canvas3d_material_enable_set(model->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE), evas_canvas3d_material_shininess_set(model->material, 100.0);
evas_canvas3d_material_shininess_set(100.0));
model->mesh = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas); model->mesh = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas);
eo_do(model->mesh, efl_file_set(model->mesh, model_path, NULL);
efl_file_set(model_path, NULL), evas_canvas3d_mesh_frame_material_set(model->mesh, 0, model->material);
evas_canvas3d_mesh_frame_material_set(0, model->material), evas_canvas3d_mesh_shade_mode_set(model->mesh, EVAS_CANVAS3D_SHADE_MODE_PHONG);
evas_canvas3d_mesh_shade_mode_set(EVAS_CANVAS3D_SHADE_MODE_PHONG));
model->node = model->node =
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_MESH));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_MESH)); evas_canvas3d_node_mesh_add(model->node, model->mesh);
eo_do(model->node, evas_canvas3d_node_mesh_add(model->mesh), evas_canvas3d_node_scale_set(model->node, 0.1, 0.1, 0.1);
evas_canvas3d_node_scale_set(0.1, 0.1, 0.1), evas_canvas3d_node_orientation_angle_axis_set(model->node, 120.0, -0.577, -0.577, -0.577);
evas_canvas3d_node_orientation_angle_axis_set(120.0, -0.577, -0.577, -0.577));
} }
static void static void
_billboard_setup(Scene_Data *data) _billboard_setup(Scene_Data *data)
{ {
data->billboard.texture = eo_add(EVAS_CANVAS3D_TEXTURE_CLASS, evas); data->billboard.texture = eo_add(EVAS_CANVAS3D_TEXTURE_CLASS, evas);
eo_do(data->billboard.texture, evas_canvas3d_texture_file_set(data->billboard.texture, b_image_path, NULL);
evas_canvas3d_texture_file_set(b_image_path, NULL), evas_canvas3d_texture_filter_set(data->billboard.texture, EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST, EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST);
evas_canvas3d_texture_filter_set(EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST, evas_canvas3d_texture_wrap_set(data->billboard.texture, EVAS_CANVAS3D_WRAP_MODE_REPEAT, EVAS_CANVAS3D_WRAP_MODE_REPEAT);
EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST),
evas_canvas3d_texture_wrap_set(EVAS_CANVAS3D_WRAP_MODE_REPEAT,
EVAS_CANVAS3D_WRAP_MODE_REPEAT));
data->billboard.primitive = eo_add(EVAS_CANVAS3D_PRIMITIVE_CLASS, evas); data->billboard.primitive = eo_add(EVAS_CANVAS3D_PRIMITIVE_CLASS, evas);
eo_do(data->billboard.primitive, evas_canvas3d_primitive_form_set(data->billboard.primitive, EVAS_CANVAS3D_MESH_PRIMITIVE_SQUARE);
evas_canvas3d_primitive_form_set(EVAS_CANVAS3D_MESH_PRIMITIVE_SQUARE));
data->billboard.mesh = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas); data->billboard.mesh = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas);
eo_do(data->billboard.mesh, evas_canvas3d_mesh_from_primitive_set(data->billboard.mesh, 0, data->billboard.primitive);
evas_canvas3d_mesh_from_primitive_set(0, data->billboard.primitive));
_body_material_set(&(data->billboard), 1.0, 1.0, 1.0); _body_material_set(&(data->billboard), 1.0, 1.0, 1.0);
eo_do(data->billboard.material, evas_canvas3d_material_texture_set(data->billboard.material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, data->billboard.texture);
evas_canvas3d_material_texture_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, data->billboard.texture));
eo_do(data->billboard.mesh, evas_canvas3d_mesh_frame_material_set(data->billboard.mesh, 0, data->billboard.material);
evas_canvas3d_mesh_frame_material_set(0, data->billboard.material), evas_canvas3d_mesh_alpha_func_set(data->billboard.mesh, EVAS_CANVAS3D_COMPARISON_GREATER, 0);
evas_canvas3d_mesh_alpha_func_set(EVAS_CANVAS3D_COMPARISON_GREATER, 0), evas_canvas3d_mesh_alpha_test_enable_set(data->billboard.mesh, EINA_TRUE);
evas_canvas3d_mesh_alpha_test_enable_set(EINA_TRUE), evas_canvas3d_mesh_shade_mode_set(data->billboard.mesh, EVAS_CANVAS3D_SHADE_MODE_DIFFUSE);
evas_canvas3d_mesh_shade_mode_set(EVAS_CANVAS3D_SHADE_MODE_DIFFUSE), evas_canvas3d_mesh_blending_enable_set(data->billboard.mesh, EINA_TRUE);
evas_canvas3d_mesh_blending_enable_set(EINA_TRUE), evas_canvas3d_mesh_blending_func_set(data->billboard.mesh, EVAS_CANVAS3D_BLEND_FUNC_SRC_ALPHA, EVAS_CANVAS3D_BLEND_FUNC_ONE_MINUS_SRC_ALPHA);
evas_canvas3d_mesh_blending_func_set(EVAS_CANVAS3D_BLEND_FUNC_SRC_ALPHA,
EVAS_CANVAS3D_BLEND_FUNC_ONE_MINUS_SRC_ALPHA));
data->billboard.node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, data->billboard.node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_MESH));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_MESH)); evas_canvas3d_node_mesh_add(data->billboard.node, data->billboard.mesh);
eo_do(data->billboard.node, evas_canvas3d_node_position_set(data->billboard.node, 0.0, 2.0, 0.0);
evas_canvas3d_node_mesh_add(data->billboard.mesh), evas_canvas3d_node_scale_set(data->billboard.node, 2.2, 4.6, 4.0);
evas_canvas3d_node_position_set(0.0, 2.0, 0.0),
evas_canvas3d_node_scale_set(2.2, 4.6, 4.0));
eo_do(data->billboard.node, evas_canvas3d_node_billboard_target_set(data->billboard.node, data->mediator);
evas_canvas3d_node_billboard_target_set(data->mediator));
} }
static void static void
_camera_setup(Scene_Data *data) _camera_setup(Scene_Data *data)
{ {
data->camera = eo_add(EVAS_CANVAS3D_CAMERA_CLASS, evas); data->camera = eo_add(EVAS_CANVAS3D_CAMERA_CLASS, evas);
data->mediator = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, data->mediator = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_NODE));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_NODE));
eo_do(data->camera, evas_canvas3d_camera_projection_perspective_set(data->camera, 50.0, 1.0, 2.0, 100.0);
evas_canvas3d_camera_projection_perspective_set(50.0, 1.0, 2.0, 100.0));
data->camera_node = data->camera_node =
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_CAMERA));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_CAMERA));
eo_do(data->camera_node, evas_canvas3d_node_camera_set(data->camera_node, data->camera);
evas_canvas3d_node_camera_set(data->camera));
eo_do(data->mediator, evas_canvas3d_node_position_set(data->mediator, 0.0, 6.0, 12.0);
evas_canvas3d_node_position_set(0.0, 6.0, 12.0), evas_canvas3d_node_look_at_set(data->mediator, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 3.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 5.0, 0.0);
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 0.0, 3.0, 0.0,
EVAS_CANVAS3D_SPACE_PARENT, 0.0, 5.0, 0.0));
eo_do(data->mediator, evas_canvas3d_node_member_add(data->camera_node)); evas_canvas3d_node_member_add(data->mediator, data->camera_node);
eo_do(data->root_node, evas_canvas3d_node_member_add(data->mediator)); evas_canvas3d_node_member_add(data->root_node, data->mediator);
} }
static void static void
_light_setup(Scene_Data *data) _light_setup(Scene_Data *data)
{ {
data->light = eo_add(EVAS_CANVAS3D_LIGHT_CLASS, evas); data->light = eo_add(EVAS_CANVAS3D_LIGHT_CLASS, evas);
eo_do(data->light, evas_canvas3d_light_ambient_set(data->light, AMBIENT_LIGHT, 1.0);
evas_canvas3d_light_ambient_set(AMBIENT_LIGHT, 1.0), evas_canvas3d_light_diffuse_set(data->light, DIFFUSE_LIGHT, 1.0);
evas_canvas3d_light_diffuse_set(DIFFUSE_LIGHT, 1.0), evas_canvas3d_light_specular_set(data->light, SPECULAR_LIGHT, 1.0);
evas_canvas3d_light_specular_set(SPECULAR_LIGHT, 1.0), evas_canvas3d_light_spot_cutoff_set(data->light, 20);
evas_canvas3d_light_spot_cutoff_set(20), evas_canvas3d_light_projection_perspective_set(data->light, 40.0, 1.0, 2.0, 1000.0);
evas_canvas3d_light_projection_perspective_set(40.0, 1.0, 2.0, 1000.0));
data->light_node = data->light_node =
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_LIGHT));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_LIGHT)); evas_canvas3d_node_light_set(data->light_node, data->light);
eo_do(data->light_node, evas_canvas3d_node_position_set(data->light_node, 50.0, 50.0, 70.0);
evas_canvas3d_node_light_set(data->light), evas_canvas3d_node_look_at_set(data->light_node, EVAS_CANVAS3D_SPACE_PARENT, 15.0, 0.0, -5.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 1.0);
evas_canvas3d_node_position_set(50.0, 50.0, 70.0), evas_canvas3d_node_member_add(data->root_node, data->light_node);
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 15.0, 0.0, -5.0,
EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 1.0));
eo_do(data->root_node, evas_canvas3d_node_member_add(data->light_node));
} }
static void static void
@ -496,13 +434,11 @@ _scene_setup(Scene_Data *data)
data->scene = eo_add(EVAS_CANVAS3D_SCENE_CLASS, evas); data->scene = eo_add(EVAS_CANVAS3D_SCENE_CLASS, evas);
eo_do(data->scene, evas_canvas3d_scene_size_set(data->scene, WIDTH, HEIGHT);
evas_canvas3d_scene_size_set(WIDTH, HEIGHT); evas_canvas3d_scene_background_color_set(data->scene, BG_COLOR, 1);
evas_canvas3d_scene_background_color_set(BG_COLOR, 1));
data->root_node = data->root_node =
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_NODE));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_NODE));
_camera_setup(data); _camera_setup(data);
@ -517,19 +453,17 @@ _scene_setup(Scene_Data *data)
_fence_setup(&data->fence); _fence_setup(&data->fence);
_billboard_setup(data); _billboard_setup(data);
eo_do(data->root_node, evas_canvas3d_node_member_add(data->root_node, data->sphere.node);
evas_canvas3d_node_member_add(data->sphere.node), evas_canvas3d_node_member_add(data->root_node, data->cube.node);
evas_canvas3d_node_member_add(data->cube.node), evas_canvas3d_node_member_add(data->root_node, data->cylinder.node);
evas_canvas3d_node_member_add(data->cylinder.node), evas_canvas3d_node_member_add(data->root_node, data->square.node);
evas_canvas3d_node_member_add(data->square.node), evas_canvas3d_node_member_add(data->root_node, data->model.node);
evas_canvas3d_node_member_add(data->model.node), evas_canvas3d_node_member_add(data->root_node, data->cone.node);
evas_canvas3d_node_member_add(data->cone.node), evas_canvas3d_node_member_add(data->root_node, data->fence.node);
evas_canvas3d_node_member_add(data->fence.node));
eo_do(data->scene, evas_canvas3d_scene_root_node_set(data->scene, data->root_node);
evas_canvas3d_scene_root_node_set(data->root_node), evas_canvas3d_scene_camera_node_set(data->scene, data->camera_node);
evas_canvas3d_scene_camera_node_set(data->camera_node), evas_canvas3d_scene_shadows_enable_set(data->scene, EINA_TRUE);
evas_canvas3d_scene_shadows_enable_set(EINA_TRUE));
} }
static void static void
@ -540,66 +474,66 @@ _on_key_down(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *eo EINA_U
if (!strcmp("w", ev->key)) if (!strcmp("w", ev->key))
{ {
Evas_Real x, y, z; Evas_Real x, y, z;
eo_do(choosed_node, evas_canvas3d_node_position_get(EVAS_CANVAS3D_SPACE_PARENT, &x, &y, &z)); evas_canvas3d_node_position_get(choosed_node, EVAS_CANVAS3D_SPACE_PARENT, &x, &y, &z);
eo_do(choosed_node, evas_canvas3d_node_position_set(x, y + STEP, z)); evas_canvas3d_node_position_set(choosed_node, x, y + STEP, z);
} }
else if(!strcmp("s", ev->key)) else if(!strcmp("s", ev->key))
{ {
Evas_Real x, y, z; Evas_Real x, y, z;
eo_do(choosed_node, evas_canvas3d_node_position_get(EVAS_CANVAS3D_SPACE_PARENT, &x, &y, &z)); evas_canvas3d_node_position_get(choosed_node, EVAS_CANVAS3D_SPACE_PARENT, &x, &y, &z);
eo_do(choosed_node, evas_canvas3d_node_position_set(x, y - STEP, z)); evas_canvas3d_node_position_set(choosed_node, x, y - STEP, z);
} }
else if(!strcmp("a", ev->key)) else if(!strcmp("a", ev->key))
{ {
Evas_Real x, y, z; Evas_Real x, y, z;
eo_do(choosed_node, evas_canvas3d_node_position_get(EVAS_CANVAS3D_SPACE_PARENT, &x, &y, &z)); evas_canvas3d_node_position_get(choosed_node, EVAS_CANVAS3D_SPACE_PARENT, &x, &y, &z);
eo_do(choosed_node, evas_canvas3d_node_position_set(x - STEP, y, z)); evas_canvas3d_node_position_set(choosed_node, x - STEP, y, z);
} }
else if(!strcmp("d", ev->key)) else if(!strcmp("d", ev->key))
{ {
Evas_Real x, y, z; Evas_Real x, y, z;
eo_do(choosed_node, evas_canvas3d_node_position_get(EVAS_CANVAS3D_SPACE_PARENT, &x, &y, &z)); evas_canvas3d_node_position_get(choosed_node, EVAS_CANVAS3D_SPACE_PARENT, &x, &y, &z);
eo_do(choosed_node, evas_canvas3d_node_position_set(x + STEP, y, z)); evas_canvas3d_node_position_set(choosed_node, x + STEP, y, z);
} }
else if(!strcmp("q", ev->key)) else if(!strcmp("q", ev->key))
{ {
Evas_Real x, y, z; Evas_Real x, y, z;
eo_do(choosed_node, evas_canvas3d_node_position_get(EVAS_CANVAS3D_SPACE_PARENT, &x, &y, &z)); evas_canvas3d_node_position_get(choosed_node, EVAS_CANVAS3D_SPACE_PARENT, &x, &y, &z);
eo_do(choosed_node, evas_canvas3d_node_position_set(x, y, z - STEP)); evas_canvas3d_node_position_set(choosed_node, x, y, z - STEP);
} }
else if(!strcmp("e", ev->key)) else if(!strcmp("e", ev->key))
{ {
Evas_Real x, y, z; Evas_Real x, y, z;
eo_do(choosed_node, evas_canvas3d_node_position_get(EVAS_CANVAS3D_SPACE_PARENT, &x, &y, &z)); evas_canvas3d_node_position_get(choosed_node, EVAS_CANVAS3D_SPACE_PARENT, &x, &y, &z);
eo_do(choosed_node, evas_canvas3d_node_position_set(x, y, z + STEP)); evas_canvas3d_node_position_set(choosed_node, x, y, z + STEP);
} }
else if(!strcmp("1", ev->key)) else if(!strcmp("1", ev->key))
{ {
eo_do(scene->root_node, evas_canvas3d_node_member_del(scene->model.node)); evas_canvas3d_node_member_del(scene->root_node, scene->model.node);
eo_do(scene->root_node, evas_canvas3d_node_member_add(scene->billboard.node)); evas_canvas3d_node_member_add(scene->root_node, scene->billboard.node);
} }
else if(!strcmp("2", ev->key)) else if(!strcmp("2", ev->key))
{ {
eo_do(scene->root_node, evas_canvas3d_node_member_add(scene->model.node)); evas_canvas3d_node_member_add(scene->root_node, scene->model.node);
eo_do(scene->root_node, evas_canvas3d_node_member_del(scene->billboard.node)); evas_canvas3d_node_member_del(scene->root_node, scene->billboard.node);
} }
else if(!strcmp("Up", ev->key)) else if(!strcmp("Up", ev->key))
{ {
Evas_Real x, y, z; Evas_Real x, y, z;
eo_do(scene->camera_node, evas_canvas3d_node_position_get(EVAS_CANVAS3D_SPACE_PARENT, &x, &y, &z)); evas_canvas3d_node_position_get(scene->camera_node, EVAS_CANVAS3D_SPACE_PARENT, &x, &y, &z);
eo_do(scene->camera_node, evas_canvas3d_node_position_set(x, y, z + STEP)); evas_canvas3d_node_position_set(scene->camera_node, x, y, z + STEP);
} }
else if(!strcmp("Down", ev->key)) else if(!strcmp("Down", ev->key))
{ {
Evas_Real x, y, z; Evas_Real x, y, z;
eo_do(scene->camera_node, evas_canvas3d_node_position_get(EVAS_CANVAS3D_SPACE_PARENT, &x, &y, &z)); evas_canvas3d_node_position_get(scene->camera_node, EVAS_CANVAS3D_SPACE_PARENT, &x, &y, &z);
eo_do(scene->camera_node, evas_canvas3d_node_position_set(x, y, z - STEP)); evas_canvas3d_node_position_set(scene->camera_node, x, y, z - STEP);
} }
else if (!strcmp("i", ev->key)) else if (!strcmp("i", ev->key))
{ {
scene->init = !scene->init; scene->init = !scene->init;
eo_do(scene->model.node, evas_canvas3d_node_position_set(0.0, 0.0, 0.0)); evas_canvas3d_node_position_set(scene->model.node, 0.0, 0.0, 0.0);
eo_do(scene->billboard.node, evas_canvas3d_node_position_set(0.0, 2.0, 0.0)); evas_canvas3d_node_position_set(scene->billboard.node, 0.0, 2.0, 0.0);
} }
else else
{ {
@ -611,30 +545,30 @@ static void _init(Scene_Data *data)
{ {
Eina_List *meshes = NULL, *l; Eina_List *meshes = NULL, *l;
Evas_Canvas3D_Mesh *m; Evas_Canvas3D_Mesh *m;
eo_do(data->sphere.node, meshes = (Eina_List *)evas_canvas3d_node_mesh_list_get()); meshes = (Eina_List *)evas_canvas3d_node_mesh_list_get(data->sphere.node);
EINA_LIST_FOREACH(meshes, l, m) EINA_LIST_FOREACH(meshes, l, m)
{ {
eo_do(m, evas_canvas3d_mesh_shade_mode_set(EVAS_CANVAS3D_SHADE_MODE_PHONG)); evas_canvas3d_mesh_shade_mode_set(m, EVAS_CANVAS3D_SHADE_MODE_PHONG);
} }
eo_do(data->cube.node, meshes = (Eina_List *)evas_canvas3d_node_mesh_list_get()); meshes = (Eina_List *)evas_canvas3d_node_mesh_list_get(data->cube.node);
EINA_LIST_FOREACH(meshes, l, m) EINA_LIST_FOREACH(meshes, l, m)
{ {
eo_do(m, evas_canvas3d_mesh_shade_mode_set(EVAS_CANVAS3D_SHADE_MODE_PHONG)); evas_canvas3d_mesh_shade_mode_set(m, EVAS_CANVAS3D_SHADE_MODE_PHONG);
} }
eo_do(data->cylinder.node, meshes = (Eina_List *)evas_canvas3d_node_mesh_list_get()); meshes = (Eina_List *)evas_canvas3d_node_mesh_list_get(data->cylinder.node);
EINA_LIST_FOREACH(meshes, l, m) EINA_LIST_FOREACH(meshes, l, m)
{ {
eo_do(m, evas_canvas3d_mesh_shade_mode_set(EVAS_CANVAS3D_SHADE_MODE_PHONG)); evas_canvas3d_mesh_shade_mode_set(m, EVAS_CANVAS3D_SHADE_MODE_PHONG);
} }
eo_do(data->model.node, meshes = (Eina_List *)evas_canvas3d_node_mesh_list_get()); meshes = (Eina_List *)evas_canvas3d_node_mesh_list_get(data->model.node);
EINA_LIST_FOREACH(meshes, l, m) EINA_LIST_FOREACH(meshes, l, m)
{ {
eo_do(m, evas_canvas3d_mesh_shade_mode_set(EVAS_CANVAS3D_SHADE_MODE_PHONG)); evas_canvas3d_mesh_shade_mode_set(m, EVAS_CANVAS3D_SHADE_MODE_PHONG);
} }
eo_do(data->cone.node, meshes = (Eina_List *)evas_canvas3d_node_mesh_list_get()); meshes = (Eina_List *)evas_canvas3d_node_mesh_list_get(data->cone.node);
EINA_LIST_FOREACH(meshes, l, m) EINA_LIST_FOREACH(meshes, l, m)
{ {
eo_do(m, evas_canvas3d_mesh_shade_mode_set(EVAS_CANVAS3D_SHADE_MODE_PHONG)); evas_canvas3d_mesh_shade_mode_set(m, EVAS_CANVAS3D_SHADE_MODE_PHONG);
} }
} }
@ -651,7 +585,7 @@ _on_mouse_down(void *data, Evas *e EINA_UNUSED, Evas_Object *eo EINA_UNUSED, voi
_init(d); _init(d);
return; return;
} }
eo_do(d->scene, evas_canvas3d_scene_pick(ev->canvas.x, ev->canvas.y, &n, &m, &s, &t)); evas_canvas3d_scene_pick(d->scene, ev->canvas.x, ev->canvas.y, &n, &m, &s, &t);
} }
int int
@ -677,20 +611,18 @@ main(void)
/* Add a background rectangle objects. */ /* Add a background rectangle objects. */
background = eo_add(EVAS_RECTANGLE_CLASS, evas); background = eo_add(EVAS_RECTANGLE_CLASS, evas);
eo_do(background, efl_gfx_color_set(background, 0, 0, 0, 255);
efl_gfx_color_set(0, 0, 0, 255), efl_gfx_size_set(background, WIDTH, HEIGHT);
efl_gfx_size_set(WIDTH, HEIGHT), efl_gfx_visible_set(background, EINA_TRUE);
efl_gfx_visible_set(EINA_TRUE));
/* Add an image object for 3D scene rendering. */ /* Add an image object for 3D scene rendering. */
image = evas_object_image_filled_add(evas); image = evas_object_image_filled_add(evas);
eo_do(image, efl_gfx_size_set(image, WIDTH, HEIGHT);
efl_gfx_size_set(WIDTH, HEIGHT), efl_gfx_visible_set(image, EINA_TRUE);
efl_gfx_visible_set(EINA_TRUE));
evas_object_focus_set(image, EINA_TRUE); evas_object_focus_set(image, EINA_TRUE);
/* Set the image object as render target for 3D scene. */ /* Set the image object as render target for 3D scene. */
eo_do(image, evas_obj_image_scene_set(data.scene)); evas_obj_image_scene_set(image, data.scene);
nodes1 = eina_list_append(nodes1, data.sphere.node); nodes1 = eina_list_append(nodes1, data.sphere.node);
nodes2 = eina_list_append(nodes2, data.sphere.node); nodes2 = eina_list_append(nodes2, data.sphere.node);
@ -698,14 +630,14 @@ main(void)
nodes2 = eina_list_append(nodes2, data.cone.node); nodes2 = eina_list_append(nodes2, data.cone.node);
/*Set callbacks*/ /*Set callbacks*/
eo_do(data.cube.node, eo_event_callback_add(EVAS_CANVAS3D_OBJECT_EVENT_CLICKED, _cb_clicked, NULL)); eo_event_callback_add(data.cube.node, EVAS_CANVAS3D_OBJECT_EVENT_CLICKED, _cb_clicked, NULL);
eo_do(data.cube.node, eo_event_callback_add(EVAS_CANVAS3D_OBJECT_EVENT_COLLISION, _cb_collision, nodes2)); eo_event_callback_add(data.cube.node, EVAS_CANVAS3D_OBJECT_EVENT_COLLISION, _cb_collision, nodes2);
eo_do(data.model.node, eo_event_callback_add(EVAS_CANVAS3D_OBJECT_EVENT_CLICKED, _cb_clicked, NULL)); eo_event_callback_add(data.model.node, EVAS_CANVAS3D_OBJECT_EVENT_CLICKED, _cb_clicked, NULL);
eo_do(data.model.node, eo_event_callback_add(EVAS_CANVAS3D_OBJECT_EVENT_COLLISION, _cb_collision, nodes1)); eo_event_callback_add(data.model.node, EVAS_CANVAS3D_OBJECT_EVENT_COLLISION, _cb_collision, nodes1);
eo_do(data.billboard.node, eo_event_callback_add(EVAS_CANVAS3D_OBJECT_EVENT_CLICKED, _cb_clicked, NULL)); eo_event_callback_add(data.billboard.node, EVAS_CANVAS3D_OBJECT_EVENT_CLICKED, _cb_clicked, NULL);
eo_do(data.billboard.node, eo_event_callback_add(EVAS_CANVAS3D_OBJECT_EVENT_COLLISION, _cb_collision, nodes1)); eo_event_callback_add(data.billboard.node, EVAS_CANVAS3D_OBJECT_EVENT_COLLISION, _cb_collision, nodes1);
evas_object_event_callback_add(image, EVAS_CALLBACK_MOUSE_DOWN, _on_mouse_down, &data); evas_object_event_callback_add(image, EVAS_CALLBACK_MOUSE_DOWN, _on_mouse_down, &data);
evas_object_event_callback_add(image, EVAS_CALLBACK_KEY_DOWN, _on_key_down, &data); evas_object_event_callback_add(image, EVAS_CALLBACK_KEY_DOWN, _on_key_down, &data);

View File

@ -59,7 +59,7 @@ _canvas_resize_cb(Ecore_Evas *ee)
int w, h; int w, h;
ecore_evas_geometry_get(ee, NULL, NULL, &w, &h); ecore_evas_geometry_get(ee, NULL, NULL, &w, &h);
eo_do(d.bg, efl_gfx_size_set(w, h)); efl_gfx_size_set(d.bg, w, h);
} }
static void static void
@ -80,7 +80,7 @@ _on_keydown(void *data EINA_UNUSED,
{ {
int alpha, r, g, b; int alpha, r, g, b;
eo_do(d.clipper, efl_gfx_color_get(&r, &g, &b, &alpha)); efl_gfx_color_get(d.clipper, &r, &g, &b, &alpha);
evas_color_argb_unpremul(alpha, &r, &g, &b); evas_color_argb_unpremul(alpha, &r, &g, &b);
alpha -= 20; alpha -= 20;
@ -88,7 +88,7 @@ _on_keydown(void *data EINA_UNUSED,
alpha = 255; alpha = 255;
evas_color_argb_premul(alpha, &r, &g, &b); evas_color_argb_premul(alpha, &r, &g, &b);
eo_do(d.clipper, efl_gfx_color_set(r, g, b, alpha)); efl_gfx_color_set(d.clipper, r, g, b, alpha);
fprintf(stdout, "Changing clipper's opacity: %d%%\n", fprintf(stdout, "Changing clipper's opacity: %d%%\n",
(int)((alpha / 255.0) * 100)); (int)((alpha / 255.0) * 100));
@ -102,7 +102,7 @@ _on_keydown(void *data EINA_UNUSED,
fprintf(stdout, "Changing clipper's color to"); fprintf(stdout, "Changing clipper's color to");
eo_do(d.clipper, efl_gfx_color_get(&r, &g, &b, &alpha)); efl_gfx_color_get(d.clipper, &r, &g, &b, &alpha);
evas_color_argb_unpremul(alpha, &r, &g, &b); evas_color_argb_unpremul(alpha, &r, &g, &b);
if (g > 0) if (g > 0)
@ -117,7 +117,7 @@ _on_keydown(void *data EINA_UNUSED,
} }
evas_color_argb_premul(alpha, &r, &g, &b); evas_color_argb_premul(alpha, &r, &g, &b);
eo_do(d.clipper, efl_gfx_color_set(r, g, b, alpha)); efl_gfx_color_set(d.clipper, r, g, b, alpha);
return; return;
} }
@ -126,15 +126,15 @@ _on_keydown(void *data EINA_UNUSED,
fprintf(stdout, "Toggling clipping "); fprintf(stdout, "Toggling clipping ");
Evas_Object *clip = NULL; Evas_Object *clip = NULL;
eo_do(d.img, clip = evas_obj_clip_get()); clip = evas_obj_clip_get(d.img);
if (clip == d.clipper) if (clip == d.clipper)
{ {
eo_do(d.img, evas_obj_clip_unset()); evas_obj_clip_unset(d.img);
fprintf(stdout, "off\n"); fprintf(stdout, "off\n");
} }
else else
{ {
eo_do(d.img, evas_obj_clip_set(d.clipper)); evas_obj_clip_set(d.img, d.clipper);
fprintf(stdout, "on\n"); fprintf(stdout, "on\n");
} }
return; return;
@ -145,8 +145,8 @@ _on_keydown(void *data EINA_UNUSED,
Eina_Bool visibility; Eina_Bool visibility;
/* Don't use "get"-"set" expressions in one eo_do call, /* Don't use "get"-"set" expressions in one eo_do call,
* if you pass parameter to "set" by value. */ * if you pass parameter to "set" by value. */
eo_do(d.clipper, visibility = efl_gfx_visible_get()); visibility = efl_gfx_visible_get(d.clipper);
eo_do(d.clipper, efl_gfx_visible_set(!visibility)); efl_gfx_visible_set(d.clipper, !visibility);
fprintf(stdout, "Clipper is now %s\n", visibility ? "hidden" : "visible"); fprintf(stdout, "Clipper is now %s\n", visibility ? "hidden" : "visible");
return; return;
} }
@ -177,12 +177,15 @@ main(void)
d.bg = eo_add(EVAS_RECTANGLE_CLASS, d.canvas); d.bg = eo_add(EVAS_RECTANGLE_CLASS, d.canvas);
/* Eo-styled way to perform actions on an object*/ /* Eo-styled way to perform actions on an object*/
eo_do(d.bg, evas_obj_name_set("background rectangle"), evas_obj_name_set(d.bg, "background rectangle");
efl_gfx_color_set(255, 255, 255, 255), /* white bg */ efl_gfx_color_set(d.bg, 255, 255, 255, 255);
efl_gfx_position_set(0, 0), /* at canvas' origin */ /* white bg */
efl_gfx_size_set(WIDTH, HEIGHT), /* covers full canvas */ efl_gfx_position_set(d.bg, 0, 0);
efl_gfx_visible_set(EINA_TRUE), /* at canvas' origin */
evas_obj_focus_set(EINA_TRUE)); efl_gfx_size_set(d.bg, WIDTH, HEIGHT);
/* covers full canvas */
efl_gfx_visible_set(d.bg, EINA_TRUE);
evas_obj_focus_set(d.bg, EINA_TRUE);
evas_object_event_callback_add( evas_object_event_callback_add(
d.bg, EVAS_CALLBACK_KEY_DOWN, _on_keydown, NULL); d.bg, EVAS_CALLBACK_KEY_DOWN, _on_keydown, NULL);
@ -194,9 +197,9 @@ main(void)
* So it's possible to decrement refcount, and 'image' object * So it's possible to decrement refcount, and 'image' object
* will be deleted automatically by parent.*/ * will be deleted automatically by parent.*/
eo_do(d.img, evas_obj_image_filled_set(EINA_TRUE), evas_obj_image_filled_set(d.img, EINA_TRUE);
efl_file_set(img_path, NULL), efl_file_set(d.img, img_path, NULL);
err = evas_obj_image_load_error_get()); err = evas_obj_image_load_error_get(d.img);
if (err != EVAS_LOAD_ERROR_NONE) if (err != EVAS_LOAD_ERROR_NONE)
{ {
@ -204,20 +207,20 @@ main(void)
} }
else else
{ {
eo_do(d.img, efl_gfx_position_set(0, 0), efl_gfx_position_set(d.img, 0, 0);
efl_gfx_size_set(WIDTH, HEIGHT), efl_gfx_size_set(d.img, WIDTH, HEIGHT);
efl_gfx_visible_set(EINA_TRUE)); efl_gfx_visible_set(d.img, EINA_TRUE);
const char *type = NULL; const char *type = NULL;
eo_do(d.img, type = evas_obj_type_get()); type = evas_obj_type_get(d.img);
fprintf(stdout, "Image object added, type is: %s\n", type); fprintf(stdout, "Image object added, type is: %s\n", type);
} }
/* border on the image's clipper, here just to emphasize its position */ /* border on the image's clipper, here just to emphasize its position */
d.clipper_border = eo_add(EVAS_IMAGE_CLASS, d.canvas); d.clipper_border = eo_add(EVAS_IMAGE_CLASS, d.canvas);
eo_do(d.clipper_border, evas_obj_image_filled_set(EINA_TRUE), evas_obj_image_filled_set(d.clipper_border, EINA_TRUE);
efl_file_set(border_img_path, NULL), efl_file_set(d.clipper_border, border_img_path, NULL);
err = evas_obj_image_load_error_get()); err = evas_obj_image_load_error_get(d.clipper_border);
if (err != EVAS_LOAD_ERROR_NONE) if (err != EVAS_LOAD_ERROR_NONE)
{ {
@ -225,24 +228,22 @@ main(void)
} }
else else
{ {
eo_do(d.clipper_border, evas_obj_image_border_set(d.clipper_border, 3, 3, 3, 3);
evas_obj_image_border_set(3, 3, 3, 3), evas_obj_image_border_center_fill_set(d.clipper_border, EVAS_BORDER_FILL_NONE);
evas_obj_image_border_center_fill_set(EVAS_BORDER_FILL_NONE), efl_gfx_position_set(d.clipper_border, (WIDTH / 4) -3, (HEIGHT / 4) - 3);
efl_gfx_position_set((WIDTH / 4) -3, (HEIGHT / 4) - 3), efl_gfx_size_set(d.clipper_border, (WIDTH / 2) + 6, (HEIGHT / 2) + 6);
efl_gfx_size_set((WIDTH / 2) + 6, (HEIGHT / 2) + 6), efl_gfx_visible_set(d.clipper_border, EINA_TRUE);
efl_gfx_visible_set(EINA_TRUE));
} }
/* solid white clipper (note that it's the default color for a /* solid white clipper (note that it's the default color for a
* rectangle) - it won't change clippees' colors, then (multiplying * rectangle) - it won't change clippees' colors, then (multiplying
* by 255) */ * by 255) */
d.clipper = eo_add(EVAS_RECTANGLE_CLASS, d.canvas); d.clipper = eo_add(EVAS_RECTANGLE_CLASS, d.canvas);
eo_do(d.clipper, efl_gfx_position_set(d.clipper, WIDTH / 4, HEIGHT / 4);
efl_gfx_position_set( WIDTH / 4, HEIGHT / 4), efl_gfx_size_set(d.clipper, WIDTH / 2, HEIGHT / 2);
efl_gfx_size_set(WIDTH / 2, HEIGHT / 2), efl_gfx_visible_set(d.clipper, EINA_TRUE);
efl_gfx_visible_set(EINA_TRUE));
eo_do(d.img, evas_obj_clip_set(d.clipper)); evas_obj_clip_set(d.img, d.clipper);
fprintf(stdout, "%s", commands); fprintf(stdout, "%s", commands);

View File

@ -447,21 +447,17 @@ vector_set(int x, int y, int w, int h)
eina_matrix3_rotate(&matrix, radian); eina_matrix3_rotate(&matrix, radian);
root = evas_object_vg_root_node_get(d.vg); root = evas_object_vg_root_node_get(d.vg);
//eo_do(root, evas_vg_node_transformation_set(&matrix)); //evas_vg_node_transformation_set(root, &matrix);
Efl_VG *bg = eo_add(EFL_VG_SHAPE_CLASS, root, Efl_VG *bg = eo_add(EFL_VG_SHAPE_CLASS, root, efl_vg_name_set(eoid, "bg"));
efl_vg_name_set("bg"));
_rect_add(bg, 0, 0 , vg_w, vg_h); _rect_add(bg, 0, 0 , vg_w, vg_h);
evas_vg_node_origin_set(bg, 0,0); evas_vg_node_origin_set(bg, 0,0);
evas_vg_shape_stroke_width_set(bg, 1.0); evas_vg_shape_stroke_width_set(bg, 1.0);
evas_vg_node_color_set(bg, 80, 80, 80, 80); evas_vg_node_color_set(bg, 80, 80, 80, 80);
Efl_VG *shape = eo_add(EFL_VG_SHAPE_CLASS, root, Efl_VG *shape = eo_add(EFL_VG_SHAPE_CLASS, root, efl_vg_name_set(eoid, "shape"));
efl_vg_name_set("shape")); Efl_VG *rgradient = eo_add(EFL_VG_GRADIENT_RADIAL_CLASS, NULL, efl_vg_name_set(eoid, "rgradient"));
Efl_VG *rgradient = eo_add(EFL_VG_GRADIENT_RADIAL_CLASS, NULL, Efl_VG *lgradient = eo_add(EFL_VG_GRADIENT_LINEAR_CLASS, NULL, efl_vg_name_set(eoid, "lgradient"));
efl_vg_name_set("rgradient"));
Efl_VG *lgradient = eo_add(EFL_VG_GRADIENT_LINEAR_CLASS, NULL,
efl_vg_name_set("lgradient"));
_arcto(shape, 0, 0, 100, 100, 25, 330); _arcto(shape, 0, 0, 100, 100, 25, 330);
@ -502,8 +498,7 @@ vector_set(int x, int y, int w, int h)
evas_vg_node_color_set(shape, 0, 0, 255, 255); evas_vg_node_color_set(shape, 0, 0, 255, 255);
evas_vg_shape_stroke_color_set(shape, 0, 0, 255, 128); evas_vg_shape_stroke_color_set(shape, 0, 0, 255, 128);
Efl_VG *rect = eo_add(EFL_VG_SHAPE_CLASS, root, Efl_VG *rect = eo_add(EFL_VG_SHAPE_CLASS, root, efl_vg_name_set(eoid, "rect"));
efl_vg_name_set("rect"));
_rect_add(rect, 0, 0, 100, 100); _rect_add(rect, 0, 0, 100, 100);
evas_vg_node_origin_set(rect, 100, 100); evas_vg_node_origin_set(rect, 100, 100);
evas_vg_shape_fill_set(rect, lgradient); evas_vg_shape_fill_set(rect, lgradient);
@ -511,8 +506,7 @@ vector_set(int x, int y, int w, int h)
evas_vg_shape_stroke_join_set(rect, EFL_GFX_JOIN_ROUND); evas_vg_shape_stroke_join_set(rect, EFL_GFX_JOIN_ROUND);
evas_vg_shape_stroke_color_set(rect, 255, 255, 255, 255); evas_vg_shape_stroke_color_set(rect, 255, 255, 255, 255);
Efl_VG *rect1 = eo_add(EFL_VG_SHAPE_CLASS, root, Efl_VG *rect1 = eo_add(EFL_VG_SHAPE_CLASS, root, efl_vg_name_set(eoid, "rect1"));
efl_vg_name_set("rect1"));
_rect_add(rect1, 0, 0, 70, 70); _rect_add(rect1, 0, 0, 70, 70);
evas_vg_node_origin_set(rect1, 50, 70); evas_vg_node_origin_set(rect1, 50, 70);
evas_vg_shape_stroke_scale_set(rect1, 2); evas_vg_shape_stroke_scale_set(rect1, 2);
@ -520,8 +514,7 @@ vector_set(int x, int y, int w, int h)
evas_vg_shape_stroke_join_set(rect1, EFL_GFX_JOIN_ROUND); evas_vg_shape_stroke_join_set(rect1, EFL_GFX_JOIN_ROUND);
evas_vg_shape_stroke_color_set(rect1, 0, 100, 80, 100); evas_vg_shape_stroke_color_set(rect1, 0, 100, 80, 100);
Efl_VG *circle = eo_add(EFL_VG_SHAPE_CLASS, root, Efl_VG *circle = eo_add(EFL_VG_SHAPE_CLASS, root, efl_vg_name_set(eoid, "circle"));
efl_vg_name_set("circle"));
_arcto(circle, 0, 0, 250, 100, 30, 300); _arcto(circle, 0, 0, 250, 100, 30, 300);
evas_vg_shape_fill_set(circle, lgradient); evas_vg_shape_fill_set(circle, lgradient);
//evas_vg_node_transformation_set(&matrix), //evas_vg_node_transformation_set(&matrix),
@ -529,35 +522,30 @@ vector_set(int x, int y, int w, int h)
evas_vg_node_color_set(circle, 50, 0, 0, 50); evas_vg_node_color_set(circle, 50, 0, 0, 50);
// Foreground // Foreground
Efl_VG *fg = eo_add(EFL_VG_SHAPE_CLASS, root, Efl_VG *fg = eo_add(EFL_VG_SHAPE_CLASS, root, efl_vg_name_set(eoid, "fg"));
efl_vg_name_set("fg"));
_rect_add(fg, 0, 0, vg_w, vg_h); _rect_add(fg, 0, 0, vg_w, vg_h);
evas_vg_node_origin_set(fg, 0, 0); evas_vg_node_origin_set(fg, 0, 0);
evas_vg_shape_stroke_width_set(fg, 5.0); evas_vg_shape_stroke_width_set(fg, 5.0);
evas_vg_shape_stroke_join_set(fg, EFL_GFX_JOIN_ROUND); evas_vg_shape_stroke_join_set(fg, EFL_GFX_JOIN_ROUND);
evas_vg_shape_stroke_color_set(fg, 70, 70, 0, 70); evas_vg_shape_stroke_color_set(fg, 70, 70, 0, 70);
Efl_VG *tst = eo_add(EFL_VG_SHAPE_CLASS, root, Efl_VG *tst = eo_add(EFL_VG_SHAPE_CLASS, root, efl_vg_name_set(eoid, "tst"));
efl_vg_name_set("tst"));
evas_vg_shape_shape_append_rect(tst, 50, 25, 200, 200, 3, 5); evas_vg_shape_shape_append_rect(tst, 50, 25, 200, 200, 3, 5);
evas_vg_node_color_set(tst, 0, 0, 200, 200); evas_vg_node_color_set(tst, 0, 0, 200, 200);
evas_vg_shape_stroke_width_set(tst, 2); evas_vg_shape_stroke_width_set(tst, 2);
evas_vg_shape_stroke_color_set(tst, 255, 0, 0, 255); evas_vg_shape_stroke_color_set(tst, 255, 0, 0, 255);
Efl_VG *vc = eo_add(EFL_VG_SHAPE_CLASS, root, Efl_VG *vc = eo_add(EFL_VG_SHAPE_CLASS, root, efl_vg_name_set(eoid, "vc"));
efl_vg_name_set("vc"));
evas_vg_shape_shape_append_circle(vc, 100, 100, 23); evas_vg_shape_shape_append_circle(vc, 100, 100, 23);
evas_vg_node_color_set(vc, 0, 200, 0, 255); evas_vg_node_color_set(vc, 0, 200, 0, 255);
evas_vg_shape_stroke_width_set(vc, 4); evas_vg_shape_stroke_width_set(vc, 4);
evas_vg_shape_stroke_color_set(vc, 255, 0, 0, 255); evas_vg_shape_stroke_color_set(vc, 255, 0, 0, 255);
beginning = eo_add(EFL_VG_CONTAINER_CLASS, NULL, beginning = eo_add(EFL_VG_CONTAINER_CLASS, NULL, efl_vg_dup(eoid, root));
efl_vg_dup(root)); end = eo_add(EFL_VG_CONTAINER_CLASS, NULL, efl_vg_dup(eoid, root));
end = eo_add(EFL_VG_CONTAINER_CLASS, NULL,
efl_vg_dup(root));
eo_do(end, circle = efl_vg_container_child_get("circle")); circle = efl_vg_container_child_get(end, "circle");
eo_do(circle, efl_vg_transformation_set(&matrix)); efl_vg_transformation_set(circle, &matrix);
} }
static Eina_Bool static Eina_Bool
@ -578,7 +566,7 @@ _anim(void *data EINA_UNUSED)
pos = ecore_animator_pos_map((now - start_time) / 3, ECORE_POS_MAP_SINUSOIDAL, 0, 0); pos = ecore_animator_pos_map((now - start_time) / 3, ECORE_POS_MAP_SINUSOIDAL, 0, 0);
eo_do(root, efl_vg_interpolate(beginning, end, pos)); efl_vg_interpolate(root, beginning, end, pos);
return EINA_TRUE; return EINA_TRUE;
} }
@ -600,7 +588,7 @@ _keydown(void *data EINA_UNUSED, Evas *evas EINA_UNUSED, Evas_Object *o EINA_UNU
ecore_animator_del(anim); ecore_animator_del(anim);
anim = NULL; anim = NULL;
} }
/* eo_do(root, efl_vg_interpolate(beginning, end, 0.5)); */ /* efl_vg_interpolate(root, beginning, end, 0.5); */
} }
fprintf(stderr, "key: [%s]\n", ev->key); fprintf(stderr, "key: [%s]\n", ev->key);
} }

View File

@ -14,7 +14,7 @@ evas_box3_set(Box3 *box, Evas_Real x0, Evas_Real y0, Evas_Real z0, Evas_Real x1,
void void
_scale(Evas_Canvas3D_Node *node, Evas_Real scale) _scale(Evas_Canvas3D_Node *node, Evas_Real scale)
{ {
eo_do(node, evas_canvas3d_node_scale_set(1.0 * scale, 1.0 * scale, 1.0 * scale)); evas_canvas3d_node_scale_set(node, 1.0 * scale, 1.0 * scale, 1.0 * scale);
} }
float float
@ -27,21 +27,17 @@ void
_camera_setup(Scene_Data *data) _camera_setup(Scene_Data *data)
{ {
data->camera = eo_add(EVAS_CANVAS3D_CAMERA_CLASS, evas); data->camera = eo_add(EVAS_CANVAS3D_CAMERA_CLASS, evas);
eo_do(data->camera, evas_canvas3d_camera_projection_perspective_set(data->camera, 65.0, 1.0, 1.0, 300.0);
evas_canvas3d_camera_projection_perspective_set(65.0, 1.0, 1.0, 300.0));
data->mediator_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, data->mediator_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_NODE));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_NODE)); data->camera_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_CAMERA));
data->camera_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas,
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_CAMERA));
eo_do(data->root_node, evas_canvas3d_node_member_add(data->mediator_node)); evas_canvas3d_node_member_add(data->root_node, data->mediator_node);
eo_do(data->mediator_node, evas_canvas3d_node_member_add(data->camera_node)); evas_canvas3d_node_member_add(data->mediator_node, data->camera_node);
eo_do(data->camera_node, evas_canvas3d_node_camera_set(data->camera_node, data->camera);
evas_canvas3d_node_camera_set(data->camera), evas_canvas3d_node_position_set(data->camera_node, 20.0, 80.0, 30.0);
evas_canvas3d_node_position_set(20.0, 80.0, 30.0); evas_canvas3d_node_look_at_set(data->camera_node, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0);
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0));
} }
void void
@ -49,21 +45,18 @@ _light_setup(Scene_Data *data)
{ {
data->light = eo_add(EVAS_CANVAS3D_LIGHT_CLASS, evas); data->light = eo_add(EVAS_CANVAS3D_LIGHT_CLASS, evas);
eo_do(data->light, evas_canvas3d_light_ambient_set(data->light, 0.2, 0.2, 0.2, 1.0);
evas_canvas3d_light_ambient_set(0.2, 0.2, 0.2, 1.0), evas_canvas3d_light_diffuse_set(data->light, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_light_diffuse_set(1.0, 1.0, 1.0, 1.0), evas_canvas3d_light_specular_set(data->light, 0.2, 0.2, 0.2, 1.0);
evas_canvas3d_light_specular_set(0.2, 0.2, 0.2, 1.0), evas_canvas3d_light_projection_perspective_set(data->light, 100.0, 1.0, 1.0, 200.0);
evas_canvas3d_light_projection_perspective_set(100.0, 1.0, 1.0, 200.0));
data->light_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, data->light_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_LIGHT));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_LIGHT));
eo_do(data->light_node, evas_canvas3d_node_light_set(data->light_node, data->light);
evas_canvas3d_node_light_set(data->light), evas_canvas3d_node_position_set(data->light_node, -30.0, 70.0, 0.0);
evas_canvas3d_node_position_set(-30.0, 70.0, 0.0), evas_canvas3d_node_look_at_set(data->light_node, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 1.0);
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 1.0));
eo_do(data->root_node, evas_canvas3d_node_member_add(data->light_node)); evas_canvas3d_node_member_add(data->root_node, data->light_node);
} }
Eina_Bool _mesh_aabb(Evas_Canvas3D_Mesh **mesh, Scene_Data *scene, int index) Eina_Bool _mesh_aabb(Evas_Canvas3D_Mesh **mesh, Scene_Data *scene, int index)
@ -96,15 +89,12 @@ Eina_Bool _mesh_aabb(Evas_Canvas3D_Mesh **mesh, Scene_Data *scene, int index)
else if (fmod(index, 12) == 11) else if (fmod(index, 12) == 11)
node = scene->mesh_node_snake; node = scene->mesh_node_snake;
eo_do(node, evas_canvas3d_node_bounding_sphere_get(node, &x0, &y0, &z0, &r);
evas_canvas3d_node_bounding_sphere_get(&x0, &y0, &z0, &r));
eo_do(scene->mesh_node_ball, evas_canvas3d_node_scale_set(scene->mesh_node_ball, r, r, r);
evas_canvas3d_node_scale_set(r, r, r), evas_canvas3d_node_position_set(scene->mesh_node_ball, x0, y0, z0);
evas_canvas3d_node_position_set(x0, y0, z0));
eo_do(node, evas_canvas3d_node_bounding_box_get(node, &x0, &y0, &z0, &x1, &y1, &z1);
evas_canvas3d_node_bounding_box_get(&x0, &y0, &z0, &x1, &y1, &z1));
float vertixes[] = float vertixes[] =
{ {
@ -151,10 +141,9 @@ Eina_Bool _mesh_aabb(Evas_Canvas3D_Mesh **mesh, Scene_Data *scene, int index)
if (*mesh) if (*mesh)
{ {
eo_do(*mesh, evas_canvas3d_mesh_vertex_assembly_set(*mesh, EVAS_CANVAS3D_VERTEX_ASSEMBLY_LINES);
evas_canvas3d_mesh_vertex_assembly_set(EVAS_CANVAS3D_VERTEX_ASSEMBLY_LINES), evas_canvas3d_mesh_frame_vertex_data_copy_set(*mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION, 6 * sizeof(float), &vertixes[ 0]);
evas_canvas3d_mesh_frame_vertex_data_copy_set(0, EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION, 6 * sizeof(float), &vertixes[ 0]), evas_canvas3d_mesh_index_data_copy_set(*mesh, EVAS_CANVAS3D_INDEX_FORMAT_UNSIGNED_SHORT, 48, &indixes[0]);
evas_canvas3d_mesh_index_data_copy_set(EVAS_CANVAS3D_INDEX_FORMAT_UNSIGNED_SHORT, 48, &indixes[0]));
return EINA_TRUE; return EINA_TRUE;
} }
@ -183,8 +172,7 @@ Eina_Bool _horizontal_circle_resolution(Evas_Canvas3D_Node *node, Evas_Real x, E
{ {
Evas_Real x0, y0, z0, x1, y1, z1; Evas_Real x0, y0, z0, x1, y1, z1;
eo_do(node, evas_canvas3d_node_bounding_box_get(node, &x0, &y0, &z0, &x1, &y1, &z1);
evas_canvas3d_node_bounding_box_get(&x0, &y0, &z0, &x1, &y1, &z1));
if (((x0 - x) * (x0 - x)) + ((z0 - z) * (z0 - z)) < r * r) return EINA_FALSE; if (((x0 - x) * (x0 - x)) + ((z0 - z) * (z0 - z)) < r * r) return EINA_FALSE;
if (((x0 - x) * (x0 - x)) + ((z1 - z) * (z1 - z)) < r * r) return EINA_FALSE; if (((x0 - x) * (x0 - x)) + ((z1 - z) * (z1 - z)) < r * r) return EINA_FALSE;
@ -207,10 +195,8 @@ Eina_Bool _horizontal_circle_object_resolution(Evas_Canvas3D_Node *node, Evas_Ca
{ {
Evas_Real x0, y0, z0, x1, y1, z1, x, y, z; Evas_Real x0, y0, z0, x1, y1, z1, x, y, z;
eo_do(node2, evas_canvas3d_node_position_get(node2, EVAS_CANVAS3D_SPACE_WORLD, &x, &y, &z);
evas_canvas3d_node_position_get(EVAS_CANVAS3D_SPACE_WORLD, &x, &y, &z)); evas_canvas3d_node_bounding_box_get(node, &x0, &y0, &z0, &x1, &y1, &z1);
eo_do(node,
evas_canvas3d_node_bounding_box_get(&x0, &y0, &z0, &x1, &y1, &z1));
if (((x0 - x) * (x0 - x)) + ((z0 - z) * (z0 - z)) < r * r) return EINA_FALSE; if (((x0 - x) * (x0 - x)) + ((z0 - z) * (z0 - z)) < r * r) return EINA_FALSE;
if (((x0 - x) * (x0 - x)) + ((z1 - z) * (z1 - z)) < r * r) return EINA_FALSE; if (((x0 - x) * (x0 - x)) + ((z1 - z) * (z1 - z)) < r * r) return EINA_FALSE;
@ -233,8 +219,7 @@ Eina_Bool _horizontal_circle_position_resolution(Evas_Canvas3D_Node *node, Evas_
{ {
Evas_Real x0, y0, z0; Evas_Real x0, y0, z0;
eo_do(node, evas_canvas3d_node_position_get(node, EVAS_CANVAS3D_SPACE_PARENT, &x0, &y0, &z0);
evas_canvas3d_node_position_get(EVAS_CANVAS3D_SPACE_PARENT, &x0, &y0, &z0));
if (((x0 - x) * (x0 - x)) + ((z0 - z) * (z0 - z)) < r * r) return EINA_FALSE; if (((x0 - x) * (x0 - x)) + ((z0 - z) * (z0 - z)) < r * r) return EINA_FALSE;
@ -245,8 +230,7 @@ Eina_Bool _horizontal_position_resolution(Evas_Canvas3D_Node *node, Evas_Real x,
{ {
Evas_Real x0, y0, z0, x1, y1, z1; Evas_Real x0, y0, z0, x1, y1, z1;
eo_do(node, evas_canvas3d_node_bounding_box_get(node, &x0, &y0, &z0, &x1, &y1, &z1);
evas_canvas3d_node_bounding_box_get(&x0, &y0, &z0, &x1, &y1, &z1));
if ((x > x0) && (x < x1) && (z > z0) && (z < z1)) if ((x > x0) && (x < x1) && (z > z0) && (z < z1))
return EINA_FALSE; return EINA_FALSE;
@ -266,8 +250,7 @@ Eina_Bool _horizontal_object_resolution(Evas_Canvas3D_Node *node, Evas_Real x1,
{ {
Evas_Real x3, y3, z3, x4, y4, z4; Evas_Real x3, y3, z3, x4, y4, z4;
eo_do(node, evas_canvas3d_node_bounding_box_get(node, &x3, &y3, &z3, &x4, &y4, &z4);
evas_canvas3d_node_bounding_box_get(&x3, &y3, &z3, &x4, &y4, &z4));
if ((x4 + x_move < x1) || (x4 + x_move > x2) || if ((x4 + x_move < x1) || (x4 + x_move > x2) ||
(z4 + z_move < z1) || (z4 + z_move > z2)) (z4 + z_move < z1) || (z4 + z_move > z2))
@ -285,8 +268,7 @@ Eina_Bool _horizontal_frame_resolution(Evas_Canvas3D_Node *node, Evas_Real x1, E
*x_move = 0; *x_move = 0;
*z_move = 0; *z_move = 0;
eo_do(node, evas_canvas3d_node_bounding_box_get(node, &x3, &y3, &z3, &x4, &y4, &z4);
evas_canvas3d_node_bounding_box_get(&x3, &y3, &z3, &x4, &y4, &z4));
if (x3 < x1) if (x3 < x1)
*x_move = x1 - x3; *x_move = x1 - x3;
@ -364,14 +346,11 @@ _set_ball(Eo *mesh, int p)
_generate_square_grid(indices, p); _generate_square_grid(indices, p);
eo_do(mesh, evas_canvas3d_mesh_vertex_count_set(vcount), evas_canvas3d_mesh_vertex_count_set(mesh, vcount);
evas_canvas3d_mesh_frame_add(0); evas_canvas3d_mesh_frame_add(mesh, 0);
evas_canvas3d_mesh_frame_vertex_data_copy_set(0, EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION, evas_canvas3d_mesh_frame_vertex_data_copy_set(mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION, sizeof(vec3), &vertices[0]);
sizeof(vec3), &vertices[0]); evas_canvas3d_mesh_frame_vertex_data_copy_set(mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_NORMAL, sizeof(vec3), &normals[0]);
evas_canvas3d_mesh_frame_vertex_data_copy_set(0, EVAS_CANVAS3D_VERTEX_ATTRIB_NORMAL, evas_canvas3d_mesh_index_data_copy_set(mesh, EVAS_CANVAS3D_INDEX_FORMAT_UNSIGNED_SHORT, icount, &indices[0]);
sizeof(vec3), &normals[0]);
evas_canvas3d_mesh_index_data_copy_set(EVAS_CANVAS3D_INDEX_FORMAT_UNSIGNED_SHORT,
icount , &indices[0]));
free(vertices); free(vertices);
free(normals); free(normals);

View File

@ -110,111 +110,98 @@ typedef struct _vec2
#define ENABLE_FOG(mesh) \ #define ENABLE_FOG(mesh) \
eo_do(mesh, evas_canvas3d_mesh_fog_enable_set(EINA_TRUE), \ evas_canvas3d_mesh_fog_enable_set(mesh, EINA_TRUE); \
evas_canvas3d_mesh_fog_color_set(FOG_COLOR, FOG_FACTOR)); evas_canvas3d_mesh_fog_color_set(mesh, FOG_COLOR, FOG_FACTOR);
#define DISABLE_FOG(mesh) \ #define DISABLE_FOG(mesh) \
eo_do(mesh, evas_canvas3d_mesh_fog_enable_set(EINA_FALSE)); evas_canvas3d_mesh_fog_enable_set(mesh, EINA_FALSE);
#define ENABLE_NORMAL(mesh) \ #define ENABLE_NORMAL(mesh) \
eo_do(mesh, evas_canvas3d_mesh_shade_mode_set(EVAS_CANVAS3D_SHADE_MODE_NORMAL_MAP)); evas_canvas3d_mesh_shade_mode_set(mesh, EVAS_CANVAS3D_SHADE_MODE_NORMAL_MAP);
#define DISABLE_NORMAL(mesh) \ #define DISABLE_NORMAL(mesh) \
eo_do(mesh, evas_canvas3d_mesh_shade_mode_set(EVAS_CANVAS3D_SHADE_MODE_PHONG)); evas_canvas3d_mesh_shade_mode_set(mesh, EVAS_CANVAS3D_SHADE_MODE_PHONG);
#define ADD_MESH(Object, Name, a, d, s) \ #define ADD_MESH(Object, Name, a, d, s) \
data->material_##Object = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas); \ data->material_##Object = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas); \
\ \
eo_do(data->material_##Object, \ evas_canvas3d_material_enable_set(data->material_##Object, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE); \
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE), \ evas_canvas3d_material_enable_set(data->material_##Object, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE); \
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE), \ evas_canvas3d_material_enable_set(data->material_##Object, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE); \
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE), \ evas_canvas3d_material_enable_set(data->material_##Object, EVAS_CANVAS3D_MATERIAL_ATTRIB_NORMAL, EINA_TRUE); \
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_NORMAL, EINA_TRUE), \ evas_canvas3d_material_color_set(data->material_##Object, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, a, a, a, 1.0); \
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, a, a, a, 1.0), \ evas_canvas3d_material_color_set(data->material_##Object, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, d, d, d, 1.0); \
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, d, d, d, 1.0), \ evas_canvas3d_material_color_set(data->material_##Object, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, s, s, s, 1.0); \
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, s, s, s, 1.0), \ evas_canvas3d_material_shininess_set(data->material_##Object, 50.0); \
evas_canvas3d_material_shininess_set(50.0)); \
\ \
data->mesh_##Name = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas); data->mesh_##Name = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas);
#define SETUP_DEFAULT_MESH(Object, Name, Shade_Mode) \ #define SETUP_DEFAULT_MESH(Object, Name, Shade_Mode) \
eo_do(data->mesh_##Name, \ evas_canvas3d_mesh_shade_mode_set(data->mesh_##Name, EVAS_CANVAS3D_SHADE_MODE_##Shade_Mode); \
evas_canvas3d_mesh_shade_mode_set(EVAS_CANVAS3D_SHADE_MODE_##Shade_Mode), \ evas_canvas3d_mesh_vertex_assembly_set(data->mesh_##Name, EVAS_CANVAS3D_VERTEX_ASSEMBLY_TRIANGLES); \
evas_canvas3d_mesh_vertex_assembly_set(EVAS_CANVAS3D_VERTEX_ASSEMBLY_TRIANGLES), \ evas_canvas3d_mesh_frame_material_set(data->mesh_##Name, 0, data->material_##Object);
evas_canvas3d_mesh_frame_material_set(0, data->material_##Object));
#define SETUP_MESH_NODE(Name) \ #define SETUP_MESH_NODE(Name) \
data->mesh_node_##Name = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, \ data->mesh_node_##Name = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_MESH)); \
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_MESH)); \
\ \
eo_do(data->mesh_node_##Name, \ evas_canvas3d_node_mesh_add(data->mesh_node_##Name, data->mesh_##Name);
evas_canvas3d_node_mesh_add(data->mesh_##Name));
#define MATERIAL_TEXTURE_SET(Object, Name, file, image) \ #define MATERIAL_TEXTURE_SET(Object, Name, file, image) \
eo_do(data->mesh_##Name, \ efl_file_set(data->mesh_##Name, file, NULL); \
efl_file_set(file, NULL)); \
\ \
SETUP_DEFAULT_MESH(Object, Name, PHONG) \ SETUP_DEFAULT_MESH(Object, Name, PHONG) \
data->texture_diffuse_##Object = eo_add(EVAS_CANVAS3D_TEXTURE_CLASS, evas); \ data->texture_diffuse_##Object = eo_add(EVAS_CANVAS3D_TEXTURE_CLASS, evas); \
\ \
eo_do(data->texture_diffuse_##Object, \ evas_canvas3d_texture_atlas_enable_set(data->texture_diffuse_##Object, EINA_FALSE); \
evas_canvas3d_texture_atlas_enable_set(EINA_FALSE), \ evas_canvas3d_texture_file_set(data->texture_diffuse_##Object, image, NULL); \
evas_canvas3d_texture_file_set(image, NULL), \ evas_canvas3d_texture_filter_set(data->texture_diffuse_##Object, EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST, \
evas_canvas3d_texture_filter_set(EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST, \ EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST); \
EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST), \ evas_canvas3d_texture_wrap_set(data->texture_diffuse_##Object, EVAS_CANVAS3D_WRAP_MODE_REPEAT, EVAS_CANVAS3D_WRAP_MODE_REPEAT); \
evas_canvas3d_texture_wrap_set(EVAS_CANVAS3D_WRAP_MODE_REPEAT, EVAS_CANVAS3D_WRAP_MODE_REPEAT)); \
\ \
eo_do(data->material_##Object, \ evas_canvas3d_material_texture_set(data->material_##Object, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, \
evas_canvas3d_material_texture_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, \ data->texture_diffuse_##Object); \
data->texture_diffuse_##Object), \ evas_canvas3d_material_texture_set(data->material_##Object, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, \
evas_canvas3d_material_texture_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, \ data->texture_diffuse_##Object);
data->texture_diffuse_##Object));
#define CUBE_TEXTURE_SET(Object, Name, vertex, image) \ #define CUBE_TEXTURE_SET(Object, Name, vertex, image) \
eo_do(data->mesh_##Name, \ evas_canvas3d_mesh_from_primitive_set(data->mesh_##Name, 0, data->cube_primitive); \
evas_canvas3d_mesh_from_primitive_set(0, data->cube_primitive), \ evas_canvas3d_mesh_frame_vertex_data_set(data->mesh_##Name, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_TEXCOORD, \
evas_canvas3d_mesh_frame_vertex_data_set(0, EVAS_CANVAS3D_VERTEX_ATTRIB_TEXCOORD, \ 2 * sizeof(float), vertex); \
2 * sizeof(float), vertex)); \
SETUP_DEFAULT_MESH(Object, Name, NORMAL_MAP) \ SETUP_DEFAULT_MESH(Object, Name, NORMAL_MAP) \
data->texture_diffuse_##Object = eo_add(EVAS_CANVAS3D_TEXTURE_CLASS, evas); \ data->texture_diffuse_##Object = eo_add(EVAS_CANVAS3D_TEXTURE_CLASS, evas); \
\ \
eo_do(data->texture_diffuse_##Object, \ evas_canvas3d_texture_atlas_enable_set(data->texture_diffuse_##Object, EINA_FALSE); \
evas_canvas3d_texture_atlas_enable_set(EINA_FALSE), \ evas_canvas3d_texture_file_set(data->texture_diffuse_##Object, image, NULL); \
evas_canvas3d_texture_file_set(image, NULL), \ evas_canvas3d_texture_filter_set(data->texture_diffuse_##Object, EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST, \
evas_canvas3d_texture_filter_set(EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST, \ EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST); \
EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST), \ evas_canvas3d_texture_wrap_set(data->texture_diffuse_##Object, EVAS_CANVAS3D_WRAP_MODE_REPEAT, EVAS_CANVAS3D_WRAP_MODE_REPEAT); \
evas_canvas3d_texture_wrap_set(EVAS_CANVAS3D_WRAP_MODE_REPEAT, EVAS_CANVAS3D_WRAP_MODE_REPEAT)); \
\ \
eo_do(data->material_##Object, \ evas_canvas3d_material_texture_set(data->material_##Object, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, \
evas_canvas3d_material_texture_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, \ data->texture_diffuse_##Object); \
data->texture_diffuse_##Object), \ evas_canvas3d_material_texture_set(data->material_##Object, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, \
evas_canvas3d_material_texture_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, \ data->texture_diffuse_##Object);
data->texture_diffuse_##Object));
#define NORMAL_SET(Object, Name, normal) \ #define NORMAL_SET(Object, Name, normal) \
data->texture_normal_##Object = eo_add(EVAS_CANVAS3D_TEXTURE_CLASS, evas); \ data->texture_normal_##Object = eo_add(EVAS_CANVAS3D_TEXTURE_CLASS, evas); \
\ \
eo_do(data->texture_normal_##Object, \ evas_canvas3d_texture_atlas_enable_set(data->texture_normal_##Object, EINA_FALSE); \
evas_canvas3d_texture_atlas_enable_set(EINA_FALSE), \ evas_canvas3d_texture_file_set(data->texture_normal_##Object, normal, NULL); \
evas_canvas3d_texture_file_set(normal, NULL), \ evas_canvas3d_texture_filter_set(data->texture_normal_##Object, EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST, \
evas_canvas3d_texture_filter_set(EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST, \ EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST); \
EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST), \ evas_canvas3d_texture_wrap_set(data->texture_normal_##Object, EVAS_CANVAS3D_WRAP_MODE_REPEAT, EVAS_CANVAS3D_WRAP_MODE_REPEAT); \
evas_canvas3d_texture_wrap_set(EVAS_CANVAS3D_WRAP_MODE_REPEAT, EVAS_CANVAS3D_WRAP_MODE_REPEAT)); \
\ \
eo_do(data->material_##Object, \ evas_canvas3d_material_texture_set(data->material_##Object, EVAS_CANVAS3D_MATERIAL_ATTRIB_NORMAL, \
evas_canvas3d_material_texture_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_NORMAL, \ data->texture_normal_##Object); \
data->texture_normal_##Object)); \
\ \
eo_do(data->mesh_##Name, \ evas_canvas3d_mesh_shade_mode_set(data->mesh_##Name, EVAS_CANVAS3D_SHADE_MODE_NORMAL_MAP);
evas_canvas3d_mesh_shade_mode_set(EVAS_CANVAS3D_SHADE_MODE_NORMAL_MAP));
#define TEXTCOORDS_SET(Name, fb1, fb2, lr1, lr2, tb1, tb2) \ #define TEXTCOORDS_SET(Name, fb1, fb2, lr1, lr2, tb1, tb2) \
static float Name##_textcoords[] = \ static float Name##_textcoords[] = \

View File

@ -115,8 +115,7 @@ _key_down(void *data,
{ {
if (space_move == 0.0) if (space_move == 0.0)
{ {
eo_do(scene->mesh_node_tommy, evas_canvas3d_node_position_get(scene->mesh_node_tommy, EVAS_CANVAS3D_SPACE_PARENT, &x, &y, &z);
evas_canvas3d_node_position_get(EVAS_CANVAS3D_SPACE_PARENT, &x, &y, &z));
old_space_position = y; old_space_position = y;
space_move = JUMP; space_move = JUMP;
} }
@ -134,19 +133,15 @@ _key_down(void *data,
if (!scene->blending) if (!scene->blending)
{ {
scene->blending = EINA_TRUE; scene->blending = EINA_TRUE;
eo_do(scene->texture_diffuse_carpet, evas_canvas3d_texture_file_set(scene->texture_diffuse_carpet, gazebo_t_trans_path, NULL);
evas_canvas3d_texture_file_set(gazebo_t_trans_path, NULL)); evas_canvas3d_mesh_blending_enable_set(scene->mesh_carpet, EINA_TRUE);
eo_do(scene->mesh_carpet, evas_canvas3d_mesh_blending_func_set(scene->mesh_carpet, EVAS_CANVAS3D_BLEND_FUNC_SRC_ALPHA, EVAS_CANVAS3D_BLEND_FUNC_ONE_MINUS_SRC_ALPHA);
evas_canvas3d_mesh_blending_enable_set(EINA_TRUE),
evas_canvas3d_mesh_blending_func_set(EVAS_CANVAS3D_BLEND_FUNC_SRC_ALPHA, EVAS_CANVAS3D_BLEND_FUNC_ONE_MINUS_SRC_ALPHA));
} }
else else
{ {
scene->blending = EINA_FALSE; scene->blending = EINA_FALSE;
eo_do(scene->texture_diffuse_carpet, evas_canvas3d_texture_file_set(scene->texture_diffuse_carpet, gazebo_t_path, NULL);
evas_canvas3d_texture_file_set(gazebo_t_path, NULL)); evas_canvas3d_mesh_blending_enable_set(scene->mesh_carpet, EINA_FALSE);
eo_do(scene->mesh_carpet,
evas_canvas3d_mesh_blending_enable_set(EINA_FALSE));
} }
} }
else if (!strcmp(ev->key, "S")) else if (!strcmp(ev->key, "S"))
@ -154,14 +149,12 @@ _key_down(void *data,
if (!scene->blending) if (!scene->blending)
{ {
scene->blending = EINA_TRUE; scene->blending = EINA_TRUE;
eo_do(global_scene, evas_canvas3d_scene_shadows_enable_set(global_scene, EINA_TRUE);
evas_canvas3d_scene_shadows_enable_set(EINA_TRUE));
} }
else else
{ {
scene->blending = EINA_FALSE; scene->blending = EINA_FALSE;
eo_do(global_scene, evas_canvas3d_scene_shadows_enable_set(global_scene, EINA_FALSE);
evas_canvas3d_scene_shadows_enable_set(EINA_FALSE));
} }
} }
else if (!strcmp(ev->key, "F")) else if (!strcmp(ev->key, "F"))
@ -257,15 +250,19 @@ _key_down(void *data,
} }
} }
else if (!strcmp(ev->key, "F1")) else if (!strcmp(ev->key, "F1"))
eo_do(scene->camera_node, {
evas_canvas3d_node_position_set(0.0, 80.0, 30.0); evas_canvas3d_node_position_set(scene->camera_node, 0.0, 80.0, 30.0);
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0)); evas_canvas3d_node_look_at_set(scene->camera_node, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0);
}
else if (!strcmp(ev->key, "F2")) else if (!strcmp(ev->key, "F2"))
eo_do(scene->camera_node, {
evas_canvas3d_node_position_set(-2.0, 0.0, 4.0), evas_canvas3d_node_position_set(scene->camera_node, -2.0, 0.0, 4.0);
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, -100.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0)); evas_canvas3d_node_look_at_set(scene->camera_node, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, -100.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0);
}
else if (!strcmp(ev->key, "A")) else if (!strcmp(ev->key, "A"))
aabb_index++; {
aabb_index++;
}
} }
static void static void
@ -308,27 +305,22 @@ _animate_camera(void *data)
x_move_lateral = camera_move * sin((angle_camera + 90) * TO_RADIAN); x_move_lateral = camera_move * sin((angle_camera + 90) * TO_RADIAN);
z_move_lateral = camera_move * cos((angle_camera + 90) * TO_RADIAN); z_move_lateral = camera_move * cos((angle_camera + 90) * TO_RADIAN);
eo_do(scene->mediator_node, evas_canvas3d_node_position_get(scene->mediator_node, EVAS_CANVAS3D_SPACE_WORLD, &x, &y, &z);
evas_canvas3d_node_position_get(EVAS_CANVAS3D_SPACE_WORLD, &x, &y, &z));
eo_do(scene->mesh_node_world, evas_canvas3d_node_position_get(scene->mesh_node_world, EVAS_CANVAS3D_SPACE_PARENT, &x1, &y1, &z1);
evas_canvas3d_node_position_get(EVAS_CANVAS3D_SPACE_PARENT, &x1, &y1, &z1));
eo_do(scene->mesh_node_tommy, evas_canvas3d_node_position_get(scene->mesh_node_tommy, EVAS_CANVAS3D_SPACE_PARENT, &x2, &y2, &z2);
evas_canvas3d_node_position_get(EVAS_CANVAS3D_SPACE_PARENT, &x2, &y2, &z2));
if (fall_speed != 0) if (fall_speed != 0)
{ {
if (y - fall_speed < 0) if (y - fall_speed < 0)
{ {
eo_do(scene->mediator_node, evas_canvas3d_node_position_set(scene->mediator_node, x, 0, z);
evas_canvas3d_node_position_set(x, 0, z));
fall_speed = 0.0; fall_speed = 0.0;
} }
else else
{ {
eo_do(scene->mediator_node, evas_canvas3d_node_position_set(scene->mediator_node, x, y - fall_speed, z);
evas_canvas3d_node_position_set(x, y - fall_speed, z));
fall_speed += FALL_SPEED_UP; fall_speed += FALL_SPEED_UP;
} }
} }
@ -354,10 +346,8 @@ _animate_camera(void *data)
_horizontal_circle_position_resolution(scene->mesh_node_column[2], x + x_move, z + z_move, SOLDIER_RADIUS) && _horizontal_circle_position_resolution(scene->mesh_node_column[2], x + x_move, z + z_move, SOLDIER_RADIUS) &&
_horizontal_circle_position_resolution(scene->mesh_node_column[3], x + x_move, z + z_move, SOLDIER_RADIUS)) _horizontal_circle_position_resolution(scene->mesh_node_column[3], x + x_move, z + z_move, SOLDIER_RADIUS))
{ {
eo_do(scene->mediator_node, evas_canvas3d_node_position_set(scene->mediator_node, x + x_move, y, z + z_move);
evas_canvas3d_node_position_set(x + x_move, y, z + z_move)); evas_canvas3d_node_position_set(scene->mesh_node_world, x1 + x_move, y1, z1 + z_move);
eo_do(scene->mesh_node_world,
evas_canvas3d_node_position_set(x1 + x_move, y1, z1 + z_move));
} }
} }
else if ((SOLDIER_FRAME_X1 < x + x_move_lateral) && (x + x_move_lateral < SOLDIER_FRAME_X2) && else if ((SOLDIER_FRAME_X1 < x + x_move_lateral) && (x + x_move_lateral < SOLDIER_FRAME_X2) &&
@ -381,27 +371,22 @@ _animate_camera(void *data)
_horizontal_circle_position_resolution(scene->mesh_node_column[2], x + x_move_lateral, z + z_move_lateral, SOLDIER_RADIUS) && _horizontal_circle_position_resolution(scene->mesh_node_column[2], x + x_move_lateral, z + z_move_lateral, SOLDIER_RADIUS) &&
_horizontal_circle_position_resolution(scene->mesh_node_column[3], x + x_move_lateral, z + z_move_lateral, SOLDIER_RADIUS)) _horizontal_circle_position_resolution(scene->mesh_node_column[3], x + x_move_lateral, z + z_move_lateral, SOLDIER_RADIUS))
{ {
eo_do(scene->mediator_node, evas_canvas3d_node_position_set(scene->mediator_node, x + x_move_lateral, y, z + z_move_lateral);
evas_canvas3d_node_position_set(x + x_move_lateral, y, z + z_move_lateral)); evas_canvas3d_node_position_set(scene->mesh_node_world, x1 + x_move_lateral, y1, z1 + z_move_lateral);
eo_do(scene->mesh_node_world,
evas_canvas3d_node_position_set(x1 + x_move_lateral, y1, z1 + z_move_lateral));
} }
} }
eo_do(scene->mediator_node, evas_canvas3d_node_position_get(scene->mediator_node, EVAS_CANVAS3D_SPACE_PARENT, &x, &y, &z);
evas_canvas3d_node_position_get(EVAS_CANVAS3D_SPACE_PARENT, &x, &y, &z));
if (!_horizontal_position_resolution(scene->mesh_node_level[step_indicator+1], x, z)) if (!_horizontal_position_resolution(scene->mesh_node_level[step_indicator+1], x, z))
{ {
eo_do(scene->mediator_node, evas_canvas3d_node_position_set(scene->mediator_node, x, y + STEP, z);
evas_canvas3d_node_position_set(x, y + STEP, z));
old_space_position += STEP; old_space_position += STEP;
step_indicator++; step_indicator++;
} }
else if (!_horizontal_position_resolution(scene->mesh_node_level[step_indicator-1], x, z) && step_indicator > 0) else if (!_horizontal_position_resolution(scene->mesh_node_level[step_indicator-1], x, z) && step_indicator > 0)
{ {
eo_do(scene->mediator_node, evas_canvas3d_node_position_set(scene->mediator_node, x, y - STEP, z);
evas_canvas3d_node_position_set(x, y - STEP, z));
old_space_position -= STEP; old_space_position -= STEP;
step_indicator--; step_indicator--;
} }
@ -411,14 +396,11 @@ _animate_camera(void *data)
step_indicator = 0; step_indicator = 0;
} }
eo_do(scene->mediator_node, evas_canvas3d_node_orientation_angle_axis_set(scene->mediator_node, angle_camera, 0, 1.0, 0.0);
evas_canvas3d_node_orientation_angle_axis_set(angle_camera, 0, 1.0, 0.0), evas_canvas3d_node_position_get(scene->mediator_node, EVAS_CANVAS3D_SPACE_PARENT, &x, &y, &z);
evas_canvas3d_node_position_get(EVAS_CANVAS3D_SPACE_PARENT, &x, &y, &z));
eo_do(scene->mesh_node_warrior, evas_canvas3d_node_position_get(scene->mesh_node_warrior, EVAS_CANVAS3D_SPACE_PARENT, &x1, &y1, &z1);
evas_canvas3d_node_position_get(EVAS_CANVAS3D_SPACE_PARENT, &x1, &y1, &z1)); evas_canvas3d_node_position_get(scene->mesh_node_snake, EVAS_CANVAS3D_SPACE_PARENT, &x2, &y2, &z2);
eo_do(scene->mesh_node_snake,
evas_canvas3d_node_position_get(EVAS_CANVAS3D_SPACE_PARENT, &x2, &y2, &z2));
float snake_x = (x2 - x) / _distance(x, z, x2, z2); float snake_x = (x2 - x) / _distance(x, z, x2, z2);
float snake_z = (z2 - z) / _distance(x, z, x2, z2); float snake_z = (z2 - z) / _distance(x, z, x2, z2);
@ -432,11 +414,9 @@ _animate_camera(void *data)
_horizontal_circle_object_resolution(scene->mesh_node_warrior, scene->mesh_node_column[2], COLUMN_RADIUS) && _horizontal_circle_object_resolution(scene->mesh_node_warrior, scene->mesh_node_column[2], COLUMN_RADIUS) &&
_horizontal_circle_object_resolution(scene->mesh_node_warrior, scene->mesh_node_column[3], COLUMN_RADIUS) && _horizontal_circle_object_resolution(scene->mesh_node_warrior, scene->mesh_node_column[3], COLUMN_RADIUS) &&
_horizontal_circle_object_resolution(scene->mesh_node_level[0], scene->mesh_node_warrior, COLUMN_RADIUS)) _horizontal_circle_object_resolution(scene->mesh_node_level[0], scene->mesh_node_warrior, COLUMN_RADIUS))
eo_do(scene->mesh_node_warrior, evas_canvas3d_node_position_set(scene->mesh_node_warrior, (x - x1) * WARRIOR_SPEED + x1, y1, (z - z1) * WARRIOR_SPEED + z1);
evas_canvas3d_node_position_set((x - x1) * WARRIOR_SPEED + x1, y1, (z - z1) * WARRIOR_SPEED + z1));
else else
eo_do(scene->mesh_node_warrior, evas_canvas3d_node_position_set(scene->mesh_node_warrior, (z - z1) * WARRIOR_SPEED2 + x1, y1, -(x - x1) * WARRIOR_SPEED2 + z1);
evas_canvas3d_node_position_set((z - z1) * WARRIOR_SPEED2 + x1, y1, -(x - x1) * WARRIOR_SPEED2 + z1));
} }
/* if soldier is looking at the snake */ /* if soldier is looking at the snake */
@ -447,44 +427,34 @@ _animate_camera(void *data)
{ {
if ((_horizontal_object_resolution(scene->mesh_node_snake, SNAKE_FRAME_X1, SNAKE_FRAME_Z1, if ((_horizontal_object_resolution(scene->mesh_node_snake, SNAKE_FRAME_X1, SNAKE_FRAME_Z1,
SNAKE_FRAME_X2, SNAKE_FRAME_Z2, snake_z * SNAKE_SPEED, -snake_x * SNAKE_SPEED))) SNAKE_FRAME_X2, SNAKE_FRAME_Z2, snake_z * SNAKE_SPEED, -snake_x * SNAKE_SPEED)))
eo_do(scene->mesh_node_snake, evas_canvas3d_node_position_set(scene->mesh_node_snake, snake_z * SNAKE_SPEED + x2, y2, -snake_x * SNAKE_SPEED + z2);
evas_canvas3d_node_position_set(snake_z * SNAKE_SPEED + x2, y2, -snake_x * SNAKE_SPEED + z2));
else if (_horizontal_circle_resolution(scene->mesh_node_snake, (x2 - x) * SNAKE_SPEED2 + x, else if (_horizontal_circle_resolution(scene->mesh_node_snake, (x2 - x) * SNAKE_SPEED2 + x,
(z2 - z) * SNAKE_SPEED2 + z, SOLDIER_RADIUS)) (z2 - z) * SNAKE_SPEED2 + z, SOLDIER_RADIUS))
eo_do(scene->mesh_node_snake, evas_canvas3d_node_position_set(scene->mesh_node_snake, (x - x2) * SNAKE_SPEED2 + x2, y2, (z - z2) * SNAKE_SPEED2 + z2);
evas_canvas3d_node_position_set((x - x2) * SNAKE_SPEED2 + x2, y2, (z - z2) * SNAKE_SPEED2 + z2));
} }
/* if snake is located at the right hand of the soldier */ /* if snake is located at the right hand of the soldier */
else else
{ {
if ((_horizontal_object_resolution(scene->mesh_node_snake, SNAKE_FRAME_X1, SNAKE_FRAME_Z1, if ((_horizontal_object_resolution(scene->mesh_node_snake, SNAKE_FRAME_X1, SNAKE_FRAME_Z1,
SNAKE_FRAME_X2, SNAKE_FRAME_Z2, -snake_z * SNAKE_SPEED, snake_x * SNAKE_SPEED))) SNAKE_FRAME_X2, SNAKE_FRAME_Z2, -snake_z * SNAKE_SPEED, snake_x * SNAKE_SPEED)))
eo_do(scene->mesh_node_snake, evas_canvas3d_node_position_set(scene->mesh_node_snake, -snake_z * SNAKE_SPEED + x2, y2, snake_x * SNAKE_SPEED + z2);
evas_canvas3d_node_position_set(-snake_z * SNAKE_SPEED + x2, y2, snake_x * SNAKE_SPEED + z2));
else if (_horizontal_circle_resolution(scene->mesh_node_snake, (x2 - x) * SNAKE_SPEED2 + x, else if (_horizontal_circle_resolution(scene->mesh_node_snake, (x2 - x) * SNAKE_SPEED2 + x,
(z2 - z) * SNAKE_SPEED2 + z, SOLDIER_RADIUS)) (z2 - z) * SNAKE_SPEED2 + z, SOLDIER_RADIUS))
eo_do(scene->mesh_node_snake, evas_canvas3d_node_position_set(scene->mesh_node_snake, (x - x2) * SNAKE_SPEED2 + x2, y2, (z - z2) * SNAKE_SPEED2 + z2);
evas_canvas3d_node_position_set((x - x2) * SNAKE_SPEED2 + x2, y2, (z - z2) * SNAKE_SPEED2 + z2));
} }
} }
else if (_horizontal_circle_resolution(scene->mesh_node_snake, (x2 - x) * SNAKE_SPEED2 + x, (z2 - z) * SNAKE_SPEED2 + z, SOLDIER_RADIUS)) else if (_horizontal_circle_resolution(scene->mesh_node_snake, (x2 - x) * SNAKE_SPEED2 + x, (z2 - z) * SNAKE_SPEED2 + z, SOLDIER_RADIUS))
eo_do(scene->mesh_node_snake, evas_canvas3d_node_position_set(scene->mesh_node_snake, (x - x2) * SNAKE_SPEED2 + x2, y2, (z - z2) * SNAKE_SPEED2 + z2);
evas_canvas3d_node_position_set((x - x2) * SNAKE_SPEED2 + x2, y2, (z - z2) * SNAKE_SPEED2 + z2));
eo_do(scene->mesh_node_snake, evas_canvas3d_node_position_get(scene->mesh_node_snake, EVAS_CANVAS3D_SPACE_PARENT, &x2, &y2, &z2);
evas_canvas3d_node_position_get(EVAS_CANVAS3D_SPACE_PARENT, &x2, &y2, &z2));
eo_do(scene->mesh_node_warrior, evas_canvas3d_node_look_at_set(scene->mesh_node_warrior, EVAS_CANVAS3D_SPACE_PARENT, 0.0, -1000.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, (z - z1) / _distance(x, z, x1, z1), 0, (x1 - x) / _distance(x, z, x1, z1));
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 0.0, -1000.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT,
(z - z1) / _distance(x, z, x1, z1), 0, (x1 - x) / _distance(x, z, x1, z1)));
eo_do(scene->mesh_node_snake, evas_canvas3d_node_look_at_set(scene->mesh_node_snake, EVAS_CANVAS3D_SPACE_PARENT, 2 * x2 - x, y2, 2 * z2 - z, EVAS_CANVAS3D_SPACE_PARENT, 0, 1, 0);
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 2 * x2 - x, y2, 2 * z2 - z, EVAS_CANVAS3D_SPACE_PARENT, 0, 1, 0));
if (!_horizontal_frame_resolution(scene->mesh_node_snake, SNAKE_FRAME_X1, SNAKE_FRAME_Z1, if (!_horizontal_frame_resolution(scene->mesh_node_snake, SNAKE_FRAME_X1, SNAKE_FRAME_Z1,
SNAKE_FRAME_X2, SNAKE_FRAME_Z2, &x_move, &z_move)) SNAKE_FRAME_X2, SNAKE_FRAME_Z2, &x_move, &z_move))
eo_do(scene->mesh_node_snake, evas_canvas3d_node_position_set(scene->mesh_node_snake, x2 + x_move, y2, z2 + z_move);
evas_canvas3d_node_position_set(x2 + x_move, y2, z2 + z_move));
return EINA_TRUE; return EINA_TRUE;
} }
@ -509,22 +479,18 @@ _animate_scene_gun(void *data)
/* rocket and gun movement */ /* rocket and gun movement */
angle_eagle += d_angle_eagle; angle_eagle += d_angle_eagle;
eo_do(scene->mesh_node_eagle, frame_eagle = evas_canvas3d_node_mesh_frame_get(scene->mesh_node_eagle, scene->mesh_eagle);
frame_eagle = evas_canvas3d_node_mesh_frame_get(scene->mesh_eagle));
if (frame_eagle > 19500) frame_eagle = 0; if (frame_eagle > 19500) frame_eagle = 0;
frame_eagle += 150; frame_eagle += 150;
eo_do(scene->mesh_node_snake, frame_snake = evas_canvas3d_node_mesh_frame_get(scene->mesh_node_snake, scene->mesh_snake);
frame_snake = evas_canvas3d_node_mesh_frame_get(scene->mesh_snake));
if (frame_snake > 16000) frame_snake = 0; if (frame_snake > 16000) frame_snake = 0;
frame_snake += 64; frame_snake += 64;
eo_do(scene->mesh_node_eagle, evas_canvas3d_node_orientation_angle_axis_set(scene->mesh_node_eagle, angle_eagle, 0.0, 1.0, 0.0);
evas_canvas3d_node_orientation_angle_axis_set(angle_eagle, 0.0, 1.0, 0.0), /* equation of eagle flight */
/* equation of eagle flight */ evas_canvas3d_node_position_set(scene->mesh_node_eagle, 38 * sin((angle_eagle + 90) * TO_RADIAN), 20 + 20 * sin(angle_eagle * TO_RADIAN), -10 + 20.0 * cos((angle_eagle + 90) * TO_RADIAN));
evas_canvas3d_node_position_set(38 * sin((angle_eagle + 90) * TO_RADIAN), 20 + 20 * sin(angle_eagle * TO_RADIAN), evas_canvas3d_node_mesh_frame_set(scene->mesh_node_eagle, scene->mesh_eagle, frame_eagle);
-10 + 20.0 * cos((angle_eagle + 90) * TO_RADIAN)),
evas_canvas3d_node_mesh_frame_set(scene->mesh_eagle, frame_eagle));
for (i = 0; i < 10; i ++) for (i = 0; i < 10; i ++)
{ {
@ -536,15 +502,13 @@ _animate_scene_gun(void *data)
else if (rocket_indicator[i] == 1) else if (rocket_indicator[i] == 1)
{ {
_scale(scene->mesh_node_rocket[i], 0.4); _scale(scene->mesh_node_rocket[i], 0.4);
eo_do(scene->material_rocket[i], evas_canvas3d_material_color_set(scene->material_rocket[i], EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, 0.8, 0.8, 0.8, 1.0);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, 0.8, 0.8, 0.8, 1.0), evas_canvas3d_material_color_set(scene->material_rocket[i], EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, 0.2, 0.2, 0.0, 1.0);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, 0.2, 0.2, 0.0, 1.0), evas_canvas3d_material_color_set(scene->material_rocket[i], EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, 0.5, 0.5, 0.5, 1.0);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, 0.5, 0.5, 0.5, 1.0));
rocket_indicator[i] = 2; rocket_indicator[i] = 2;
eo_do(scene->mesh_node_rocket[i], evas_canvas3d_node_position_set(scene->mesh_node_rocket[i], ROCKET_POS_X, ROCKET_POS_Y, ROCKET_POS_Z);
evas_canvas3d_node_position_set(ROCKET_POS_X, ROCKET_POS_Y, ROCKET_POS_Z));
rocket_parametr[i] = 0; rocket_parametr[i] = 0;
} }
else if (rocket_indicator[i] == 2) else if (rocket_indicator[i] == 2)
@ -552,33 +516,27 @@ _animate_scene_gun(void *data)
rocket_parametr[i] += ROCKET_SPEED; rocket_parametr[i] += ROCKET_SPEED;
/* equation of rocket flight */ /* equation of rocket flight */
eo_do(scene->mesh_node_rocket[i], evas_canvas3d_node_position_get(scene->mesh_node_rocket[i], EVAS_CANVAS3D_SPACE_WORLD, &x, &y, &z);
evas_canvas3d_node_position_get(EVAS_CANVAS3D_SPACE_WORLD, &x, &y, &z));
if ((ROCKET_FRAME_X1 < x) && (x < ROCKET_FRAME_X2) && (ROCKET_FRAME_Z1 < z) && (z < ROCKET_FRAME_Z2)) if ((ROCKET_FRAME_X1 < x) && (x < ROCKET_FRAME_X2) && (ROCKET_FRAME_Z1 < z) && (z < ROCKET_FRAME_Z2))
eo_do(scene->mesh_node_rocket[i], evas_canvas3d_node_position_set(scene->mesh_node_rocket[i], ROCKET_POS_X, ROCKET_POS_Y, ROCKET_POS_Z - rocket_parametr[i]);
evas_canvas3d_node_position_set(ROCKET_POS_X, ROCKET_POS_Y, ROCKET_POS_Z - rocket_parametr[i]));
else else
rocket_indicator[i] = 3; rocket_indicator[i] = 3;
/* the way to stop the rocket */ /* the way to stop the rocket */
eo_do(scene->mesh_node_warrior, evas_canvas3d_node_bounding_box_get(scene->mesh_node_warrior, &x, &y, &z, &x1, &y1, &z1);
evas_canvas3d_node_bounding_box_get(&x, &y, &z, &x1, &y1, &z1));
evas_box3_set(&boxy, x, y, z, x1, y1, z1); evas_box3_set(&boxy, x, y, z, x1, y1, z1);
eo_do(scene->mesh_node_rocket[i], evas_canvas3d_node_position_get(scene->mesh_node_rocket[i], EVAS_CANVAS3D_SPACE_PARENT, &x, &y, &z);
evas_canvas3d_node_position_get(EVAS_CANVAS3D_SPACE_PARENT, &x, &y, &z));
eo_do(scene->mediator_node, evas_canvas3d_node_position_get(scene->mediator_node, EVAS_CANVAS3D_SPACE_PARENT, &x1, &y1, &z1);
evas_canvas3d_node_position_get(EVAS_CANVAS3D_SPACE_PARENT, &x1, &y1, &z1));
if (((z * sinus + x * cosinus + x1) >= boxy.p0.x) && ((z * sinus + x * cosinus + x1) <= boxy.p1.x) && if (((z * sinus + x * cosinus + x1) >= boxy.p0.x) && ((z * sinus + x * cosinus + x1) <= boxy.p1.x) &&
((z * cosinus - x * sinus + z1) >= boxy.p0.z) && ((z * cosinus - x * sinus + z1) <= boxy.p1.z)) ((z * cosinus - x * sinus + z1) >= boxy.p0.z) && ((z * cosinus - x * sinus + z1) <= boxy.p1.z))
{ {
eo_do(scene->material_rocket[i], evas_canvas3d_material_color_set(scene->material_rocket[i], EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, 0.8, 0.8, 0.8, 1.0);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, 0.8, 0.8, 0.8, 1.0), evas_canvas3d_material_color_set(scene->material_rocket[i], EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, 0.9, 0.1, 0.1, 1.0);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, 0.9, 0.1, 0.1, 1.0), evas_canvas3d_material_color_set(scene->material_rocket[i], EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, 0.5, 0.5, 0.5, 1.0);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, 0.5, 0.5, 0.5, 1.0));
_scale(scene->mesh_node_rocket[i], 4.5); _scale(scene->mesh_node_rocket[i], 4.5);
rocket_indicator[i] = 3; rocket_indicator[i] = 3;
@ -589,18 +547,14 @@ _animate_scene_gun(void *data)
if (tommy_indicator == 1) if (tommy_indicator == 1)
{ {
tommy_indicator = 2; tommy_indicator = 2;
eo_do(scene->mesh_node_tommy, evas_canvas3d_node_position_set(scene->mesh_node_tommy, TOMMY_POS_X, TOMMY_POS_Y, TOMMY_POS_Z);
evas_canvas3d_node_position_set(TOMMY_POS_X, TOMMY_POS_Y, TOMMY_POS_Z));
tommy_parametr = 0.0; tommy_parametr = 0.0;
} }
/* parametric equations of gun movement, (GUN_DIR_X, GUN_DIR_Y, GUN_DIR_Z) is direction vector */ /* parametric equations of gun movement, (GUN_DIR_X, GUN_DIR_Y, GUN_DIR_Z) is direction vector */
else if (tommy_indicator == 2) else if (tommy_indicator == 2)
{ {
tommy_parametr += GUN_SPEED; tommy_parametr += GUN_SPEED;
eo_do(scene->mesh_node_tommy, evas_canvas3d_node_position_set(scene->mesh_node_tommy, TOMMY_POS_X + GUN_DIR_X * tommy_parametr, TOMMY_POS_Y + GUN_DIR_Y * tommy_parametr, TOMMY_POS_Z + GUN_DIR_Z * tommy_parametr);
evas_canvas3d_node_position_set(TOMMY_POS_X + GUN_DIR_X * tommy_parametr,
TOMMY_POS_Y + GUN_DIR_Y * tommy_parametr,
TOMMY_POS_Z + GUN_DIR_Z * tommy_parametr));
if (TOMMY_POS_Z + GUN_DIR_Z * tommy_parametr >= -8.3) if (TOMMY_POS_Z + GUN_DIR_Z * tommy_parametr >= -8.3)
tommy_indicator = 3; tommy_indicator = 3;
@ -608,13 +562,9 @@ _animate_scene_gun(void *data)
else if (tommy_indicator == 3) else if (tommy_indicator == 3)
{ {
tommy_parametr-= GUN_SPEED / 2; tommy_parametr-= GUN_SPEED / 2;
eo_do(scene->mesh_node_tommy, evas_canvas3d_node_position_set(scene->mesh_node_tommy, TOMMY_POS_X + GUN_DIR_X * tommy_parametr, TOMMY_POS_Y + GUN_DIR_Y * tommy_parametr, TOMMY_POS_Z + GUN_DIR_Z * tommy_parametr);
evas_canvas3d_node_position_set(TOMMY_POS_X + GUN_DIR_X * tommy_parametr,
TOMMY_POS_Y + GUN_DIR_Y * tommy_parametr,
TOMMY_POS_Z + GUN_DIR_Z * tommy_parametr));
eo_do(scene->mesh_node_tommy, evas_canvas3d_node_position_get(scene->mesh_node_tommy, EVAS_CANVAS3D_SPACE_PARENT, &x, &y, &z);
evas_canvas3d_node_position_get(EVAS_CANVAS3D_SPACE_PARENT, &x, &y, &z));
if (z <= TOMMY_POS_Z) if (z <= TOMMY_POS_Z)
{ {
tommy_indicator = 4; tommy_indicator = 4;
@ -624,59 +574,44 @@ _animate_scene_gun(void *data)
if (angle_eagle > 360.0) angle -= 360.0f; if (angle_eagle > 360.0) angle -= 360.0f;
eo_do(scene->mesh_node_warrior, evas_canvas3d_node_mesh_frame_set(scene->mesh_node_warrior, scene->mesh_warrior, frame);
evas_canvas3d_node_mesh_frame_set(scene->mesh_warrior, frame));
eo_do(scene->mesh_node_snake, evas_canvas3d_node_mesh_frame_set(scene->mesh_node_snake, scene->mesh_snake, frame_snake);
evas_canvas3d_node_mesh_frame_set(scene->mesh_snake, frame_snake));
if (space_move && (soldier_mode == 0)) if (space_move && (soldier_mode == 0))
{ {
eo_do(scene->mesh_node_soldier, evas_canvas3d_node_mesh_add(scene->mesh_node_soldier, scene->mesh_soldier_jump);
evas_canvas3d_node_mesh_add(scene->mesh_soldier_jump), evas_canvas3d_node_mesh_del(scene->mesh_node_soldier, scene->mesh_soldier);
evas_canvas3d_node_mesh_del(scene->mesh_soldier), evas_canvas3d_node_mesh_frame_set(scene->mesh_node_soldier, scene->mesh_soldier_jump, 0);
evas_canvas3d_node_mesh_frame_set(scene->mesh_soldier_jump, 0));
soldier_mode = 1; soldier_mode = 1;
eo_do(scene->mesh_node_tommy, evas_canvas3d_node_position_set(scene->mesh_node_tommy, TOMMY_JUMP_X, TOMMY_JUMP_Y, TOMMY_JUMP_Z);
evas_canvas3d_node_position_set(TOMMY_JUMP_X, TOMMY_JUMP_Y, TOMMY_JUMP_Z), evas_canvas3d_node_look_at_set(scene->mesh_node_tommy, EVAS_CANVAS3D_SPACE_PARENT, 1000.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0, 0, 1);
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 1000.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT,
0, 0, 1));
} }
else if (soldier_mode == 1) else if (soldier_mode == 1)
{ {
eo_do(scene->mesh_node_soldier, frame_soldier = evas_canvas3d_node_mesh_frame_get(scene->mesh_node_soldier, scene->mesh_soldier_jump);
frame_soldier = evas_canvas3d_node_mesh_frame_get(scene->mesh_soldier_jump));
frame_soldier += 124; frame_soldier += 124;
eo_do(scene->mesh_node_soldier, evas_canvas3d_node_mesh_frame_set(scene->mesh_node_soldier, scene->mesh_soldier_jump, frame_soldier);
evas_canvas3d_node_mesh_frame_set(scene->mesh_soldier_jump, frame_soldier));
if (frame_soldier < 2480) if (frame_soldier < 2480)
eo_do(scene->mesh_node_tommy, evas_canvas3d_node_position_set(scene->mesh_node_tommy, TOMMY_JUMP_X, TOMMY_JUMP_Y + 4.5 * frame_soldier / 2480, TOMMY_JUMP_Z);
evas_canvas3d_node_position_set(TOMMY_JUMP_X, TOMMY_JUMP_Y + 4.5 * frame_soldier / 2480, TOMMY_JUMP_Z));
else else
eo_do(scene->mesh_node_tommy, evas_canvas3d_node_position_set(scene->mesh_node_tommy, TOMMY_JUMP_X, TOMMY_JUMP_Y + 4.5 * (4960 - frame_soldier) / 2480, TOMMY_JUMP_Z);
evas_canvas3d_node_position_set(TOMMY_JUMP_X, TOMMY_JUMP_Y + 4.5 * (4960 - frame_soldier) / 2480, TOMMY_JUMP_Z));
if (frame_soldier > 4960) if (frame_soldier > 4960)
{ {
eo_do(scene->mesh_node_soldier, evas_canvas3d_node_mesh_del(scene->mesh_node_soldier, scene->mesh_soldier_jump);
evas_canvas3d_node_mesh_del(scene->mesh_soldier_jump)); evas_canvas3d_node_mesh_add(scene->mesh_node_soldier, scene->mesh_soldier);
eo_do(scene->mesh_node_soldier, evas_canvas3d_node_mesh_frame_set(scene->mesh_node_soldier, scene->mesh_soldier, 0);
evas_canvas3d_node_mesh_add(scene->mesh_soldier),
evas_canvas3d_node_mesh_frame_set(scene->mesh_soldier, 0));
soldier_mode = 0; soldier_mode = 0;
eo_do(scene->mesh_node_tommy, evas_canvas3d_node_position_set(scene->mesh_node_tommy, TOMMY_POS_X, TOMMY_POS_Y, TOMMY_POS_Z);
evas_canvas3d_node_position_set(TOMMY_POS_X, TOMMY_POS_Y, TOMMY_POS_Z), evas_canvas3d_node_look_at_set(scene->mesh_node_tommy, EVAS_CANVAS3D_SPACE_PARENT, 0.0, -1000.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 2, 0, 1.5);
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 0.0, -1000.0, 0.0,
EVAS_CANVAS3D_SPACE_PARENT, 2, 0, 1.5));
} }
} }
else if (camera_move) else if (camera_move)
{ {
eo_do(scene->mesh_node_soldier, frame_soldier = evas_canvas3d_node_mesh_frame_get(scene->mesh_node_soldier, scene->mesh_soldier);
frame_soldier = evas_canvas3d_node_mesh_frame_get(scene->mesh_soldier));
frame_soldier += 124; frame_soldier += 124;
if (frame_soldier > 6200) frame_soldier = 0; if (frame_soldier > 6200) frame_soldier = 0;
eo_do(scene->mesh_node_soldier, evas_canvas3d_node_mesh_frame_set(scene->mesh_node_soldier, scene->mesh_soldier, frame_soldier);
evas_canvas3d_node_mesh_frame_set(scene->mesh_soldier, frame_soldier));
} }
/* create bounding box */ /* create bounding box */
@ -723,8 +658,7 @@ _reload_camera(void *data, Evas *e EINA_UNUSED, Evas_Object *eo EINA_UNUSED, voi
Evas_Canvas3D_Mesh *m; Evas_Canvas3D_Mesh *m;
Evas_Real s, t; Evas_Real s, t;
eo_do(global_scene, evas_canvas3d_scene_pick(global_scene, ev->canvas.x, ev->canvas.y, &n, &m, &s, &t);
evas_canvas3d_scene_pick(ev->canvas.x, ev->canvas.y, &n, &m, &s, &t));
d_angle_camera = 0; d_angle_camera = 0;
if (n || m) if (n || m)
@ -772,14 +706,12 @@ _mesh_setup_gun_planet(Scene_Data *data)
/* Setup material and texture for world. */ /* Setup material and texture for world. */
ADD_MESH(world, world, 0.5, 0.5, 1.0); ADD_MESH(world, world, 0.5, 0.5, 1.0);
eo_do(data->mesh_world, evas_canvas3d_mesh_from_primitive_set(data->mesh_world, 0, data->sphere_primitive);
evas_canvas3d_mesh_from_primitive_set(0, data->sphere_primitive));
SETUP_DEFAULT_MESH(world, world, DIFFUSE); SETUP_DEFAULT_MESH(world, world, DIFFUSE);
SETUP_MESH_NODE(world); SETUP_MESH_NODE(world);
eo_do(data->mesh_node_world, evas_canvas3d_node_scale_set(data->mesh_node_world, 350, 350, 350);
evas_canvas3d_node_scale_set(350, 350, 350), evas_canvas3d_node_position_set(data->mesh_node_world, 0.0, 0.0, 0.0);
evas_canvas3d_node_position_set(0.0, 0.0, 0.0));
/* Setup material and texture for player */ /* Setup material and texture for player */
@ -788,14 +720,11 @@ _mesh_setup_gun_planet(Scene_Data *data)
SETUP_MESH_NODE(soldier) SETUP_MESH_NODE(soldier)
eo_do(data->mesh_node_soldier, evas_canvas3d_node_position_set(data->mesh_node_soldier, 0, -10, 0);
evas_canvas3d_node_position_set(0, -10, 0), evas_canvas3d_node_scale_set(data->mesh_node_soldier, 5, 5, 5);
evas_canvas3d_node_scale_set(5, 5, 5));
eo_do(data->mesh_node_soldier, evas_canvas3d_node_look_at_set(data->mesh_node_soldier, EVAS_CANVAS3D_SPACE_PARENT, 0.0, -10.0, -100.0, EVAS_CANVAS3D_SPACE_PARENT, 0, 1, 0);
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 0.0, -10.0, -100.0, EVAS_CANVAS3D_SPACE_PARENT, evas_canvas3d_node_mesh_frame_set(data->mesh_node_soldier, data->mesh_soldier, 0);
0, 1, 0),
evas_canvas3d_node_mesh_frame_set(data->mesh_soldier, 0));
ADD_MESH(soldier, soldier_jump, 1.0, 1.0, 1.0) ADD_MESH(soldier, soldier_jump, 1.0, 1.0, 1.0)
MATERIAL_TEXTURE_SET(soldier, soldier_jump, soldier_jump_path, soldier_tex_path) MATERIAL_TEXTURE_SET(soldier, soldier_jump, soldier_jump_path, soldier_tex_path)
@ -804,17 +733,14 @@ _mesh_setup_gun_planet(Scene_Data *data)
ADD_MESH(tommy, tommy, 0.0, 0.3, 1.0) ADD_MESH(tommy, tommy, 0.0, 0.3, 1.0)
SETUP_MESH_NODE(tommy) SETUP_MESH_NODE(tommy)
eo_do(data->mesh_tommy, efl_file_set(data->mesh_tommy, gun_path, NULL);
efl_file_set(gun_path, NULL), efl_file_save(data->mesh_tommy, "try.obj", NULL, NULL);
efl_file_save("try.obj", NULL, NULL), evas_canvas3d_mesh_shade_mode_set(data->mesh_tommy, EVAS_CANVAS3D_SHADE_MODE_PHONG);
evas_canvas3d_mesh_shade_mode_set(EVAS_CANVAS3D_SHADE_MODE_PHONG), evas_canvas3d_mesh_frame_material_set(data->mesh_tommy, 0, data->material_tommy);
evas_canvas3d_mesh_frame_material_set(0, data->material_tommy));
eo_do(data->mesh_node_tommy, evas_canvas3d_node_scale_set(data->mesh_node_tommy, 1.5, 1.5, 1.5);
evas_canvas3d_node_scale_set(1.5, 1.5, 1.5), evas_canvas3d_node_position_set(data->mesh_node_tommy, TOMMY_POS_X, TOMMY_POS_Y, TOMMY_POS_Z);
evas_canvas3d_node_position_set(TOMMY_POS_X, TOMMY_POS_Y, TOMMY_POS_Z), evas_canvas3d_node_look_at_set(data->mesh_node_tommy, EVAS_CANVAS3D_SPACE_PARENT, 0.0, -1000.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 2, 0, 1.5);
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 0.0, -1000.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT,
2, 0, 1.5));
/* Setup material and texture for gazebo */ /* Setup material and texture for gazebo */
@ -823,10 +749,9 @@ _mesh_setup_gun_planet(Scene_Data *data)
MATERIAL_TEXTURE_SET(gazebo, gazebo, gazebo_bot_path, gazebo_b_path) MATERIAL_TEXTURE_SET(gazebo, gazebo, gazebo_bot_path, gazebo_b_path)
NORMAL_SET(gazebo, gazebo, gazebo_b_n_path) NORMAL_SET(gazebo, gazebo, gazebo_b_n_path)
eo_do(data->mesh_node_gazebo, evas_canvas3d_node_scale_set(data->mesh_node_gazebo, 0.18, 0.18, 0.18);
evas_canvas3d_node_scale_set(0.18, 0.18, 0.18), evas_canvas3d_node_orientation_angle_axis_set(data->mesh_node_gazebo, 180, 0.0, 1.0, 0.0);
evas_canvas3d_node_orientation_angle_axis_set(180, 0.0, 1.0, 0.0), evas_canvas3d_node_position_set(data->mesh_node_gazebo, -20, -10, -35);
evas_canvas3d_node_position_set(-20, -10, -35));
/* Setup material and texture for carpet */ /* Setup material and texture for carpet */
@ -837,38 +762,32 @@ _mesh_setup_gun_planet(Scene_Data *data)
if (data->blending) if (data->blending)
{ {
eo_do(data->texture_diffuse_carpet, evas_canvas3d_texture_atlas_enable_set(data->texture_diffuse_carpet, EINA_FALSE);
evas_canvas3d_texture_atlas_enable_set(EINA_FALSE), evas_canvas3d_texture_file_set(data->texture_diffuse_carpet, gazebo_t_trans_path, NULL);
evas_canvas3d_texture_file_set(gazebo_t_trans_path, NULL)); evas_canvas3d_mesh_blending_enable_set(data->mesh_carpet, EINA_TRUE);
eo_do(data->mesh_carpet, evas_canvas3d_mesh_blending_func_set(data->mesh_carpet, EVAS_CANVAS3D_BLEND_FUNC_SRC_ALPHA, EVAS_CANVAS3D_BLEND_FUNC_ONE_MINUS_SRC_ALPHA);
evas_canvas3d_mesh_blending_enable_set(EINA_TRUE),
evas_canvas3d_mesh_blending_func_set(EVAS_CANVAS3D_BLEND_FUNC_SRC_ALPHA, EVAS_CANVAS3D_BLEND_FUNC_ONE_MINUS_SRC_ALPHA));
} }
eo_do(data->mesh_node_carpet, evas_canvas3d_node_scale_set(data->mesh_node_carpet, 0.18, 0.18, 0.18);
evas_canvas3d_node_scale_set(0.18, 0.18, 0.18), evas_canvas3d_node_position_set(data->mesh_node_carpet, -20, -10, -35);
evas_canvas3d_node_position_set(-20, -10, -35));
/* Setup material and texture for eagle. */ /* Setup material and texture for eagle. */
ADD_MESH(eagle, eagle, 0.01, 1.0, 1.0) ADD_MESH(eagle, eagle, 0.01, 1.0, 1.0)
SETUP_MESH_NODE(eagle) SETUP_MESH_NODE(eagle)
MATERIAL_TEXTURE_SET(eagle, eagle, eagle_path, eagle_tex_path) MATERIAL_TEXTURE_SET(eagle, eagle, eagle_path, eagle_tex_path)
eo_do(data->mesh_node_eagle, evas_canvas3d_node_scale_set(data->mesh_node_eagle, 0.1, 0.1, 0.1);
evas_canvas3d_node_scale_set(0.1, 0.1, 0.1), evas_canvas3d_node_position_set(data->mesh_node_eagle, -20, 20, 0);
evas_canvas3d_node_position_set(-20, 20, 0));
/* Set material for bounding box */ /* Set material for bounding box */
ADD_MESH(cube, cube, 0.01, 1.0, 1.0) ADD_MESH(cube, cube, 0.01, 1.0, 1.0)
eo_do(data->mesh_cube, evas_canvas3d_mesh_frame_add(0)); evas_canvas3d_mesh_frame_add(data->mesh_cube, 0);
SETUP_DEFAULT_MESH(cube, cube, DIFFUSE); SETUP_DEFAULT_MESH(cube, cube, DIFFUSE);
SETUP_MESH_NODE(cube) SETUP_MESH_NODE(cube)
eo_do(data->mesh_cube, evas_canvas3d_mesh_index_data_set(data->mesh_cube, EVAS_CANVAS3D_INDEX_FORMAT_UNSIGNED_SHORT, 36, &cube_indices[0]);
evas_canvas3d_mesh_index_data_set(EVAS_CANVAS3D_INDEX_FORMAT_UNSIGNED_SHORT, evas_canvas3d_mesh_vertex_count_set(data->mesh_cube, 24);
36, &cube_indices[0]), evas_canvas3d_mesh_vertex_assembly_set(data->mesh_cube, EVAS_CANVAS3D_VERTEX_ASSEMBLY_LINES);
evas_canvas3d_mesh_vertex_count_set(24),
evas_canvas3d_mesh_vertex_assembly_set(EVAS_CANVAS3D_VERTEX_ASSEMBLY_LINES));
/* Setup mesh for column carpet */ /* Setup mesh for column carpet */
@ -878,30 +797,27 @@ _mesh_setup_gun_planet(Scene_Data *data)
CUBE_TEXTURE_SET(column_c, column_c, cube_textcoords, red_brick_path) CUBE_TEXTURE_SET(column_c, column_c, cube_textcoords, red_brick_path)
NORMAL_SET(column_c, column_c, red_brick_n_path) NORMAL_SET(column_c, column_c, red_brick_n_path)
eo_do(data->mesh_node_column_c, evas_canvas3d_node_orientation_angle_axis_set(data->mesh_node_column_c, 90, 0, 1.0, 0.0);
evas_canvas3d_node_orientation_angle_axis_set(90, 0, 1.0, 0.0), evas_canvas3d_node_scale_set(data->mesh_node_column_c, 96.0, 1.6, 4.8);
evas_canvas3d_node_scale_set(96.0, 1.6 , 4.8 ), evas_canvas3d_node_position_set(data->mesh_node_column_c, 10, 9.0, -12);
evas_canvas3d_node_position_set(10 , 9.0, -12));
/* Setup mesh for bounding sphere */ /* Setup mesh for bounding sphere */
data->material_ball = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas); data->material_ball = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas);
eo_do(data->material_ball, evas_canvas3d_material_enable_set(data->material_ball, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE), evas_canvas3d_material_enable_set(data->material_ball, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE), evas_canvas3d_material_enable_set(data->material_ball, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE), evas_canvas3d_material_color_set(data->material_ball, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, 1.0, 1.0, 1.0, 1.0), evas_canvas3d_material_color_set(data->material_ball, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, 0.0, 5.0, 1.0, 1.0);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, 0.0, 5.0, 1.0, 1.0), evas_canvas3d_material_color_set(data->material_ball, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, 1.0, 1.0, 1.0, 1.0), evas_canvas3d_material_shininess_set(data->material_ball, 50.0);
evas_canvas3d_material_shininess_set(50.0));
data->mesh_ball = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas); data->mesh_ball = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas);
_set_ball(data->mesh_ball, 10); _set_ball(data->mesh_ball, 10);
eo_do(data->mesh_ball, evas_canvas3d_mesh_shade_mode_set(data->mesh_ball, EVAS_CANVAS3D_SHADE_MODE_DIFFUSE);
evas_canvas3d_mesh_shade_mode_set(EVAS_CANVAS3D_SHADE_MODE_DIFFUSE), evas_canvas3d_mesh_vertex_assembly_set(data->mesh_ball, EVAS_CANVAS3D_VERTEX_ASSEMBLY_LINES);
evas_canvas3d_mesh_vertex_assembly_set(EVAS_CANVAS3D_VERTEX_ASSEMBLY_LINES), evas_canvas3d_mesh_frame_material_set(data->mesh_ball, 0, data->material_ball);
evas_canvas3d_mesh_frame_material_set(0, data->material_ball));
SETUP_MESH_NODE(ball) SETUP_MESH_NODE(ball)
@ -921,26 +837,26 @@ _mesh_setup_wall(Scene_Data *data, int index)
/* placing of wall carpet on the floor grid */ /* placing of wall carpet on the floor grid */
if (index == 0) if (index == 0)
eo_do(data->mesh_node_wall[index], {
evas_canvas3d_node_scale_set(6.7 * 19.5, 20.0, 2.0), evas_canvas3d_node_scale_set(data->mesh_node_wall[index], 6.7 * 19.5, 20.0, 2.0);
evas_canvas3d_node_position_set(-39.7 + 18.6 * 3, 0.0, -60.3)); evas_canvas3d_node_position_set(data->mesh_node_wall[index], -39.7 + 18.6 * 3, 0.0, -60.3);
}
else if (index == 1) else if (index == 1)
{ {
eo_do(data->mesh_node_wall[index], evas_canvas3d_node_scale_set(data->mesh_node_wall[index], 5 * 19.5, 20.0, 2.0);
evas_canvas3d_node_scale_set(5 * 19.5, 20.0, 2.0), evas_canvas3d_node_position_set(data->mesh_node_wall[index], 81.2, 0.0, -51.5 + 19.5 * 2);
evas_canvas3d_node_position_set(81.2, 0.0, -51.5 + 19.5 * 2), evas_canvas3d_node_orientation_angle_axis_set(data->mesh_node_wall[index], 90, 0, 1.0, 0.0);
evas_canvas3d_node_orientation_angle_axis_set(90, 0, 1.0, 0.0));
} }
else if (index == 2) else if (index == 2)
eo_do(data->mesh_node_wall[index], {
evas_canvas3d_node_scale_set(6.7 * 19.5, 20.0, 2.0), evas_canvas3d_node_scale_set(data->mesh_node_wall[index], 6.7 * 19.5, 20.0, 2.0);
evas_canvas3d_node_position_set(-39.7 + 18.6*3, 0.0, 35.3)); evas_canvas3d_node_position_set(data->mesh_node_wall[index], -39.7 + 18.6*3, 0.0, 35.3);
}
else if (index == 3) else if (index == 3)
{ {
eo_do(data->mesh_node_wall[index], evas_canvas3d_node_scale_set(data->mesh_node_wall[index], 5* 19.5, 20.0, 2.0);
evas_canvas3d_node_scale_set(5* 19.5, 20.0, 2.0), evas_canvas3d_node_position_set(data->mesh_node_wall[index], -48.4, 0.0, -51.5 + 19.5 * 2);
evas_canvas3d_node_position_set(-48.4, 0.0, -51.5 + 19.5 * 2), evas_canvas3d_node_orientation_angle_axis_set(data->mesh_node_wall[index], 90, 0, 1.0, 0.0);
evas_canvas3d_node_orientation_angle_axis_set(90, 0, 1.0, 0.0));
} }
} }
@ -951,48 +867,40 @@ _mesh_setup_column(Scene_Data *data, int index)
data->material_column = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas); data->material_column = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas);
eo_do(data->material_column, evas_canvas3d_material_enable_set(data->material_column, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE), evas_canvas3d_material_enable_set(data->material_column, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE), evas_canvas3d_material_enable_set(data->material_column, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE), evas_canvas3d_material_enable_set(data->material_column, EVAS_CANVAS3D_MATERIAL_ATTRIB_NORMAL, EINA_TRUE);
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_NORMAL, EINA_TRUE), evas_canvas3d_material_color_set(data->material_column, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, 0.4, 0.4, 0.4, 1.0);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, 0.4, 0.4, 0.4, 1.0), evas_canvas3d_material_color_set(data->material_column, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, 0.6, 0.6, 0.6, 1.0);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, 0.6, 0.6, 0.6, 1.0), evas_canvas3d_material_color_set(data->material_column, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, 1.0, 1.0, 1.0, 1.0), evas_canvas3d_material_shininess_set(data->material_column, 50.0);
evas_canvas3d_material_shininess_set(50.0));
data->mesh_column[index] = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas); data->mesh_column[index] = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas);
SETUP_MESH_NODE(column[index]) SETUP_MESH_NODE(column[index])
eo_do(data->mesh_column[index], evas_canvas3d_mesh_from_primitive_set(data->mesh_column[index], 0, data->cylinder_primitive);
evas_canvas3d_mesh_from_primitive_set(0, data->cylinder_primitive), evas_canvas3d_mesh_shade_mode_set(data->mesh_column[index], EVAS_CANVAS3D_SHADE_MODE_DIFFUSE);
evas_canvas3d_mesh_shade_mode_set(EVAS_CANVAS3D_SHADE_MODE_DIFFUSE), evas_canvas3d_mesh_vertex_assembly_set(data->mesh_column[index], EVAS_CANVAS3D_VERTEX_ASSEMBLY_TRIANGLES);
evas_canvas3d_mesh_vertex_assembly_set(EVAS_CANVAS3D_VERTEX_ASSEMBLY_TRIANGLES), evas_canvas3d_mesh_shade_mode_set(data->mesh_column[index], EVAS_CANVAS3D_SHADE_MODE_PHONG);
evas_canvas3d_mesh_shade_mode_set(EVAS_CANVAS3D_SHADE_MODE_PHONG), evas_canvas3d_mesh_frame_material_set(data->mesh_column[index], 0, data->material_column);
evas_canvas3d_mesh_frame_material_set(0, data->material_column));
data->texture_diffuse_column = eo_add(EVAS_CANVAS3D_TEXTURE_CLASS, evas); data->texture_diffuse_column = eo_add(EVAS_CANVAS3D_TEXTURE_CLASS, evas);
eo_do(data->texture_diffuse_column, evas_canvas3d_texture_file_set(data->texture_diffuse_column, red_brick_path, NULL);
evas_canvas3d_texture_file_set(red_brick_path, NULL), evas_canvas3d_texture_atlas_enable_set(data->texture_diffuse_column, EINA_FALSE);
evas_canvas3d_texture_atlas_enable_set(EINA_FALSE), evas_canvas3d_texture_filter_set(data->texture_diffuse_column, EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST, EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST);
evas_canvas3d_texture_filter_set(EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST, evas_canvas3d_texture_wrap_set(data->texture_diffuse_column, EVAS_CANVAS3D_WRAP_MODE_REPEAT, EVAS_CANVAS3D_WRAP_MODE_REPEAT);
EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST),
evas_canvas3d_texture_wrap_set(EVAS_CANVAS3D_WRAP_MODE_REPEAT, EVAS_CANVAS3D_WRAP_MODE_REPEAT));
eo_do(data->material_column, evas_canvas3d_material_texture_set(data->material_column, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, data->texture_diffuse_column);
evas_canvas3d_material_texture_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, evas_canvas3d_material_texture_set(data->material_column, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, data->texture_diffuse_column);
data->texture_diffuse_column),
evas_canvas3d_material_texture_set(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT,
data->texture_diffuse_column));
NORMAL_SET(column, column[index], red_brick_n_path) NORMAL_SET(column, column[index], red_brick_n_path)
eo_do(data->mesh_node_column[index], evas_canvas3d_node_scale_set(data->mesh_node_column[index], 2.2, 2.2, 19.0);
evas_canvas3d_node_scale_set(2.2, 2.2, 19.0), evas_canvas3d_node_position_set(data->mesh_node_column[index], 10, 0, -45 + 21.25 * index);
evas_canvas3d_node_position_set(10 , 0, -45 + 21.25 * index), evas_canvas3d_node_orientation_angle_axis_set(data->mesh_node_column[index], 90, 1.0, 0.0, 0.0);
evas_canvas3d_node_orientation_angle_axis_set(90, 1.0, 0.0, 0.0));
} }
void void
@ -1007,9 +915,8 @@ _mesh_setup_grass(Scene_Data *data)
NORMAL_SET(grass, grass, gray_brick_n_path) NORMAL_SET(grass, grass, gray_brick_n_path)
/* placing of grass carpet on the floor grid */ /* placing of grass carpet on the floor grid */
eo_do(data->mesh_node_grass, evas_canvas3d_node_scale_set(data->mesh_node_grass, 130.0, 1.0, 96.0);
evas_canvas3d_node_scale_set(130.0, 1.0, 96.0), evas_canvas3d_node_position_set(data->mesh_node_grass, 16.5, -10.0, -12);
evas_canvas3d_node_position_set(16.5, -10.0, -12));
} }
void void
@ -1024,9 +931,8 @@ _mesh_setup(Scene_Data *data, float h EINA_UNUSED, float w EINA_UNUSED, float d
CUBE_TEXTURE_SET(level[0], level[index], isource, red_brick_path) CUBE_TEXTURE_SET(level[0], level[index], isource, red_brick_path)
NORMAL_SET(level[0], level[index], red_brick_n_path) NORMAL_SET(level[0], level[index], red_brick_n_path)
eo_do(data->mesh_node_level[index], evas_canvas3d_node_scale_set(data->mesh_node_level[index], 19.5, 20.0, 2.0);
evas_canvas3d_node_scale_set(19.5, 20.0, 2.0), evas_canvas3d_node_position_set(data->mesh_node_level[index], 50, 0, -15);
evas_canvas3d_node_position_set(50, 0, -15));
} }
else else
{ {
@ -1035,9 +941,8 @@ _mesh_setup(Scene_Data *data, float h EINA_UNUSED, float w EINA_UNUSED, float d
CUBE_TEXTURE_SET(level[1], level[index], isource, gray_brick_path) CUBE_TEXTURE_SET(level[1], level[index], isource, gray_brick_path)
NORMAL_SET(level[1], level[index], gray_brick_n_path) NORMAL_SET(level[1], level[index], gray_brick_n_path)
eo_do(data->mesh_node_level[index], evas_canvas3d_node_scale_set(data->mesh_node_level[index], 2.0, 2.0, 8.0);
evas_canvas3d_node_scale_set(2.0, 2.0, 8.0), evas_canvas3d_node_position_set(data->mesh_node_level[index], 40 + (2 * index), -10 + (2 * index), -10);
evas_canvas3d_node_position_set(40 + (2 * index), -10 + (2 * index), -10));
} }
} }
@ -1050,9 +955,8 @@ _mesh_setup_warrior(Scene_Data *data)
SETUP_MESH_NODE(warrior) SETUP_MESH_NODE(warrior)
MATERIAL_TEXTURE_SET(warrior, warrior, warrior_path, warrior_tex_path) MATERIAL_TEXTURE_SET(warrior, warrior, warrior_path, warrior_tex_path)
eo_do(data->mesh_node_warrior, evas_canvas3d_node_position_set(data->mesh_node_warrior, 57, -10, 0);
evas_canvas3d_node_position_set(57, -10, 0), evas_canvas3d_node_scale_set(data->mesh_node_warrior, 0.15, 0.15, 0.15);
evas_canvas3d_node_scale_set(0.15, 0.15, 0.15));
} }
void void
@ -1063,23 +967,20 @@ _mesh_setup_snake(Scene_Data *data)
MATERIAL_TEXTURE_SET(snake, snake, snake_path, snake_tex_path) MATERIAL_TEXTURE_SET(snake, snake, snake_path, snake_tex_path)
NORMAL_SET(snake, snake, snake_tex_n_path) NORMAL_SET(snake, snake, snake_tex_n_path)
eo_do(data->mesh_node_snake, evas_canvas3d_node_position_set(data->mesh_node_snake, 20, -10, 20);
evas_canvas3d_node_position_set(20, -10, 20), evas_canvas3d_node_scale_set(data->mesh_node_snake, 4.0, 4.0, 4.0);
evas_canvas3d_node_scale_set(4.0, 4.0, 4.0));
} }
void void
_mesh_setup_rocket(Scene_Data *data, int index) _mesh_setup_rocket(Scene_Data *data, int index)
{ {
ADD_MESH(rocket[index], rocket[index], 0.8, 0.2, 0.5); ADD_MESH(rocket[index], rocket[index], 0.8, 0.2, 0.5);
eo_do(data->mesh_rocket[index], evas_canvas3d_mesh_from_primitive_set(data->mesh_rocket[index], 0, data->sphere_primitive);
evas_canvas3d_mesh_from_primitive_set(0, data->sphere_primitive));
SETUP_DEFAULT_MESH(rocket[index], rocket[index], DIFFUSE); SETUP_DEFAULT_MESH(rocket[index], rocket[index], DIFFUSE);
SETUP_MESH_NODE(rocket[index]); SETUP_MESH_NODE(rocket[index]);
eo_do(data->mesh_node_rocket[index], evas_canvas3d_node_scale_set(data->mesh_node_rocket[index], 1, 1, 1);
evas_canvas3d_node_scale_set(1, 1, 1), evas_canvas3d_node_position_set(data->mesh_node_rocket[index], ROCKET_POS_X, ROCKET_POS_Y, ROCKET_POS_Z);
evas_canvas3d_node_position_set(ROCKET_POS_X, ROCKET_POS_Y, ROCKET_POS_Z));
} }
void void
@ -1091,23 +992,19 @@ _scene_setup(Scene_Data *data)
motion_vec[i] = 0; motion_vec[i] = 0;
data->cube_primitive = eo_add(EVAS_CANVAS3D_PRIMITIVE_CLASS, evas); data->cube_primitive = eo_add(EVAS_CANVAS3D_PRIMITIVE_CLASS, evas);
eo_do(data->cube_primitive, evas_canvas3d_primitive_form_set(data->cube_primitive, EVAS_CANVAS3D_MESH_PRIMITIVE_CUBE);
evas_canvas3d_primitive_form_set(EVAS_CANVAS3D_MESH_PRIMITIVE_CUBE), evas_canvas3d_primitive_precision_set(data->cube_primitive, 10);
evas_canvas3d_primitive_precision_set(10));
data->sphere_primitive = eo_add(EVAS_CANVAS3D_PRIMITIVE_CLASS, evas); data->sphere_primitive = eo_add(EVAS_CANVAS3D_PRIMITIVE_CLASS, evas);
eo_do(data->sphere_primitive, evas_canvas3d_primitive_form_set(data->sphere_primitive, EVAS_CANVAS3D_MESH_PRIMITIVE_SPHERE);
evas_canvas3d_primitive_form_set(EVAS_CANVAS3D_MESH_PRIMITIVE_SPHERE), evas_canvas3d_primitive_precision_set(data->sphere_primitive, 50);
evas_canvas3d_primitive_precision_set(50));
global_scene = eo_add(EVAS_CANVAS3D_SCENE_CLASS, evas); global_scene = eo_add(EVAS_CANVAS3D_SCENE_CLASS, evas);
eo_do(global_scene, evas_canvas3d_scene_size_set(global_scene, WIDTH, HEIGHT);
evas_canvas3d_scene_size_set(WIDTH, HEIGHT), evas_canvas3d_scene_background_color_set(global_scene, 0.5, 0.5, 0.9, 0.0);
evas_canvas3d_scene_background_color_set(0.5, 0.5, 0.9, 0.0));
data->root_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, data->root_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_NODE));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_NODE));
_camera_setup(data); _camera_setup(data);
_light_setup(data); _light_setup(data);
@ -1118,11 +1015,10 @@ _scene_setup(Scene_Data *data)
_mesh_setup_rocket(data, i); _mesh_setup_rocket(data, i);
data->cylinder_primitive = eo_add(EVAS_CANVAS3D_PRIMITIVE_CLASS, evas); data->cylinder_primitive = eo_add(EVAS_CANVAS3D_PRIMITIVE_CLASS, evas);
eo_do(data->cylinder_primitive, evas_canvas3d_primitive_mode_set(data->cylinder_primitive, EVAS_CANVAS3D_PRIMITIVE_MODE_WITHOUT_BASE);
evas_canvas3d_primitive_mode_set(EVAS_CANVAS3D_PRIMITIVE_MODE_WITHOUT_BASE), evas_canvas3d_primitive_form_set(data->cylinder_primitive, EVAS_CANVAS3D_MESH_PRIMITIVE_CYLINDER);
evas_canvas3d_primitive_form_set(EVAS_CANVAS3D_MESH_PRIMITIVE_CYLINDER), evas_canvas3d_primitive_tex_scale_set(data->cylinder_primitive, 1.0, 1.0);
evas_canvas3d_primitive_tex_scale_set(1.0, 1.0), evas_canvas3d_primitive_precision_set(data->cylinder_primitive, 50);
evas_canvas3d_primitive_precision_set(50));
for ( i = 0; i < 4; i++) for ( i = 0; i < 4; i++)
_mesh_setup_column(data, i); _mesh_setup_column(data, i);
@ -1143,12 +1039,11 @@ _scene_setup(Scene_Data *data)
_mesh_aabb(&data->mesh_cube, data, aabb_index); _mesh_aabb(&data->mesh_cube, data, aabb_index);
eo_do(global_scene, evas_canvas3d_scene_root_node_set(global_scene, data->root_node);
evas_canvas3d_scene_root_node_set(data->root_node), evas_canvas3d_scene_camera_node_set(global_scene, data->camera_node);
evas_canvas3d_scene_camera_node_set(data->camera_node));
if (data->shadow) if (data->shadow)
eo_do(global_scene,evas_canvas3d_scene_shadows_enable_set(EINA_TRUE)); evas_canvas3d_scene_shadows_enable_set(global_scene, EINA_TRUE);
if (data->fog) if (data->fog)
{ {
@ -1174,40 +1069,33 @@ _scene_setup(Scene_Data *data)
} }
} }
data->carp_mediator_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, data->carp_mediator_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_MESH));
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_MESH));
eo_do(data->carp_mediator_node, evas_canvas3d_node_member_add(data->carp_mediator_node, data->mesh_node_carpet);
evas_canvas3d_node_member_add(data->mesh_node_carpet));
eo_do(data->mediator_node, evas_canvas3d_node_member_add(data->mediator_node, data->mesh_node_soldier);
evas_canvas3d_node_member_add(data->mesh_node_soldier), evas_canvas3d_node_member_add(data->mediator_node, data->mesh_node_tommy);
evas_canvas3d_node_member_add(data->mesh_node_tommy));
for (i = 0; i < 10; i++) for (i = 0; i < 10; i++)
eo_do(data->mediator_node, evas_canvas3d_node_member_add(data->mediator_node, data->mesh_node_rocket[i]);
evas_canvas3d_node_member_add(data->mesh_node_rocket[i]));
eo_do(data->root_node, evas_canvas3d_node_member_add(data->root_node, data->carp_mediator_node);
evas_canvas3d_node_member_add(data->carp_mediator_node), evas_canvas3d_node_member_add(data->root_node, data->mesh_node_world);
evas_canvas3d_node_member_add(data->mesh_node_world), evas_canvas3d_node_member_add(data->root_node, data->mesh_node_gazebo);
evas_canvas3d_node_member_add(data->mesh_node_gazebo), evas_canvas3d_node_member_add(data->root_node, data->mesh_node_eagle);
evas_canvas3d_node_member_add(data->mesh_node_eagle), evas_canvas3d_node_member_add(data->root_node, data->mesh_node_cube);
evas_canvas3d_node_member_add(data->mesh_node_cube), evas_canvas3d_node_member_add(data->root_node, data->mesh_node_column_c);
evas_canvas3d_node_member_add(data->mesh_node_column_c), evas_canvas3d_node_member_add(data->root_node, data->mesh_node_ball);
evas_canvas3d_node_member_add(data->mesh_node_ball), evas_canvas3d_node_member_add(data->root_node, data->mesh_node_grass);
evas_canvas3d_node_member_add(data->mesh_node_grass), evas_canvas3d_node_member_add(data->root_node, data->mesh_node_warrior);
evas_canvas3d_node_member_add(data->mesh_node_warrior), evas_canvas3d_node_member_add(data->root_node, data->mesh_node_snake);
evas_canvas3d_node_member_add(data->mesh_node_snake));
for (i = 0; i < 4; i++) for (i = 0; i < 4; i++)
eo_do(data->root_node, evas_canvas3d_node_member_add(data->root_node, data->mesh_node_wall[i]);
evas_canvas3d_node_member_add(data->mesh_node_wall[i]), evas_canvas3d_node_member_add(data->root_node, data->mesh_node_column[i]);
evas_canvas3d_node_member_add(data->mesh_node_column[i]));
for (i = 0; i < 10; i++) for (i = 0; i < 10; i++)
eo_do(data->root_node, evas_canvas3d_node_member_add(data->root_node, data->mesh_node_level[i]);
evas_canvas3d_node_member_add(data->mesh_node_level[i]));
} }
int int
@ -1263,8 +1151,7 @@ main(int argc, char *argv[])
evas_object_show(image); evas_object_show(image);
/* Set the image object as render target for 3D scene. */ /* Set the image object as render target for 3D scene. */
eo_do(image, evas_obj_image_scene_set(image, global_scene);
evas_obj_image_scene_set(global_scene));
evas_object_focus_set(image, EINA_TRUE); evas_object_focus_set(image, EINA_TRUE);

View File

@ -319,7 +319,7 @@ _do_tick(void)
eina_inlist_remove(EINA_INLIST_GET(animators), eina_inlist_remove(EINA_INLIST_GET(animators),
EINA_INLIST_GET(animator)); EINA_INLIST_GET(animator));
eo_do(animator->obj, eo_parent_set(NULL)); eo_parent_set(animator->obj, NULL);
if (eo_destructed_is(animator->obj)) if (eo_destructed_is(animator->obj))
eo_manual_free(animator->obj); eo_manual_free(animator->obj);
else else
@ -372,8 +372,7 @@ ecore_animator_add(Ecore_Task_Cb func,
{ {
Ecore_Animator *animator = NULL; Ecore_Animator *animator = NULL;
animator = eo_add(MY_CLASS, _ecore_parent, animator = eo_add(MY_CLASS, _ecore_parent, ecore_animator_constructor(eoid, func, data));
ecore_animator_constructor(func, data));
return animator; return animator;
} }
@ -389,8 +388,7 @@ ecore_animator_timeline_add(double runtime,
const void *data) const void *data)
{ {
Ecore_Animator *animator; Ecore_Animator *animator;
animator = eo_add(MY_CLASS, _ecore_parent, animator = eo_add(MY_CLASS, _ecore_parent, ecore_animator_timeline_constructor(eoid, runtime, func, data));
ecore_animator_timeline_constructor(runtime, func, data));
return animator; return animator;
} }
@ -682,7 +680,7 @@ _ecore_animator_eo_base_destructor(Eo *obj, Ecore_Animator_Data *pd)
pd->delete_me = EINA_TRUE; pd->delete_me = EINA_TRUE;
animators_delete_me++; animators_delete_me++;
eo_do_super(obj, MY_CLASS, eo_destructor()); eo_destructor(eo_super(obj, MY_CLASS));
} }
EOLIAN static Eo * EOLIAN static Eo *
@ -693,7 +691,7 @@ _ecore_animator_eo_base_finalize(Eo *obj, Ecore_Animator_Data *pd)
return NULL; return NULL;
} }
return eo_do_super_ret(obj, MY_CLASS, obj, eo_finalize()); return eo_finalize(eo_super(obj, MY_CLASS));
} }
EAPI void EAPI void
@ -718,7 +716,7 @@ EAPI void
ecore_animator_freeze(Ecore_Animator *animator) ecore_animator_freeze(Ecore_Animator *animator)
{ {
ECORE_ANIMATOR_CHECK(animator); ECORE_ANIMATOR_CHECK(animator);
eo_do(animator, eo_event_freeze()); eo_event_freeze(animator);
} }
EOLIAN static void EOLIAN static void
@ -738,7 +736,7 @@ EAPI void
ecore_animator_thaw(Ecore_Animator *animator) ecore_animator_thaw(Ecore_Animator *animator)
{ {
ECORE_ANIMATOR_CHECK(animator); ECORE_ANIMATOR_CHECK(animator);
eo_do(animator, eo_event_thaw()); eo_event_thaw(animator);
} }
EOLIAN static void EOLIAN static void
@ -813,7 +811,7 @@ _ecore_animator_shutdown(void)
if (animator->suspended) animators_suspended--; if (animator->suspended) animators_suspended--;
animators = (Ecore_Animator_Data *)eina_inlist_remove(EINA_INLIST_GET(animators), EINA_INLIST_GET(animators)); animators = (Ecore_Animator_Data *)eina_inlist_remove(EINA_INLIST_GET(animators), EINA_INLIST_GET(animators));
eo_do(animator->obj, eo_parent_set(NULL)); eo_parent_set(animator->obj, NULL);
if (eo_destructed_is(animator->obj)) if (eo_destructed_is(animator->obj))
eo_manual_free(animator->obj); eo_manual_free(animator->obj);
else else

View File

@ -67,7 +67,7 @@ ecore_exe_pipe_run(const char *exe_cmd,
Ecore_Exe_Flags flags, Ecore_Exe_Flags flags,
const void *data) const void *data)
{ {
Ecore_Exe *ret = eo_add(MY_CLASS, NULL, ecore_obj_exe_command_set(exe_cmd, flags)); Ecore_Exe *ret = eo_add(MY_CLASS, NULL, ecore_obj_exe_command_set(eoid, exe_cmd, flags));
if (ret) if (ret)
{ {
Ecore_Exe_Data *pd = eo_data_scope_get(ret, MY_CLASS); Ecore_Exe_Data *pd = eo_data_scope_get(ret, MY_CLASS);
@ -95,7 +95,7 @@ EOLIAN static Eo *
_ecore_exe_eo_base_finalize(Eo *obj, Ecore_Exe_Data *exe) _ecore_exe_eo_base_finalize(Eo *obj, Ecore_Exe_Data *exe)
{ {
EINA_MAIN_LOOP_CHECK_RETURN_VAL(NULL); EINA_MAIN_LOOP_CHECK_RETURN_VAL(NULL);
eo_do_super(obj, MY_CLASS, obj = eo_finalize()); obj = eo_finalize(eo_super(obj, MY_CLASS));
if (!obj) if (!obj)
return obj; return obj;
@ -216,7 +216,7 @@ ecore_exe_free(Ecore_Exe *obj)
EOLIAN static void EOLIAN static void
_ecore_exe_eo_base_destructor(Eo *obj, Ecore_Exe_Data *exe) _ecore_exe_eo_base_destructor(Eo *obj, Ecore_Exe_Data *exe)
{ {
eo_do_super(obj, ECORE_EXE_CLASS, eo_destructor()); eo_destructor(eo_super(obj, ECORE_EXE_CLASS));
_impl_ecore_exe_eo_base_destructor(obj, exe); _impl_ecore_exe_eo_base_destructor(obj, exe);
} }
@ -247,7 +247,7 @@ ecore_exe_cmd_get(const Ecore_Exe *obj)
EINA_MAIN_LOOP_CHECK_RETURN_VAL(NULL); EINA_MAIN_LOOP_CHECK_RETURN_VAL(NULL);
const char *ret = NULL; const char *ret = NULL;
eo_do(obj, ecore_obj_exe_command_get(&ret, NULL)); ecore_obj_exe_command_get(obj, &ret, NULL);
return ret; return ret;
} }
@ -292,13 +292,13 @@ ecore_exe_flags_get(const Ecore_Exe *obj)
EAPI void EAPI void
ecore_exe_pause(Ecore_Exe *obj) ecore_exe_pause(Ecore_Exe *obj)
{ {
eo_do(obj, efl_control_suspend_set(EINA_TRUE)); efl_control_suspend_set(obj, EINA_TRUE);
} }
EAPI void EAPI void
ecore_exe_continue(Ecore_Exe *obj) ecore_exe_continue(Ecore_Exe *obj)
{ {
eo_do(obj, efl_control_suspend_set(EINA_FALSE)); efl_control_suspend_set(obj, EINA_FALSE);
} }
EOLIAN static void EOLIAN static void

View File

@ -1171,7 +1171,7 @@ _ecore_exe_data_generic_handler(void *data,
ecore_event_add(event_type, e, ecore_event_add(event_type, e,
_ecore_exe_event_exe_data_free, _ecore_exe_event_exe_data_free,
NULL); NULL);
eo_do(obj, eo_event_callback_call(eo_event, e)); eo_event_callback_call(obj, eo_event, e);
} }
} }
} }

View File

@ -158,7 +158,7 @@ _ecore_exe_pipe_read_thread_cb(void *data)
ecore_event_add(ECORE_EXE_EVENT_DATA, event_data, ecore_event_add(ECORE_EXE_EVENT_DATA, event_data,
_ecore_exe_event_exe_data_free, _ecore_exe_event_exe_data_free,
NULL); NULL);
eo_do(obj, eo_event_callback_call(ECORE_EXE_EVENT_DATA_GET, event_data)); eo_event_callback_call(obj, ECORE_EXE_EVENT_DATA_GET, event_data);
} }
current_buf = NULL; current_buf = NULL;
@ -228,7 +228,7 @@ _ecore_exe_pipe_error_thread_cb(void *data)
ecore_event_add(ECORE_EXE_EVENT_ERROR, event_data, ecore_event_add(ECORE_EXE_EVENT_ERROR, event_data,
_ecore_exe_event_exe_data_free, _ecore_exe_event_exe_data_free,
NULL); NULL);
eo_do(obj, eo_event_callback_call(ECORE_EXE_EVENT_DATA_ERROR, event_data)); eo_event_callback_call(obj, ECORE_EXE_EVENT_DATA_ERROR, event_data);
} }
current_buf = NULL; current_buf = NULL;

View File

@ -61,7 +61,7 @@ ecore_idle_enterer_add(Ecore_Task_Cb func,
const void *data) const void *data)
{ {
Ecore_Idle_Enterer *ie = NULL; Ecore_Idle_Enterer *ie = NULL;
ie = eo_add(MY_CLASS, _ecore_parent, ecore_idle_enterer_after_constructor(func, data)); ie = eo_add(MY_CLASS, _ecore_parent, ecore_idle_enterer_after_constructor(eoid, func, data));
return ie; return ie;
} }
@ -78,7 +78,7 @@ ecore_idle_enterer_before_add(Ecore_Task_Cb func,
const void *data) const void *data)
{ {
Ecore_Idle_Enterer *ie = NULL; Ecore_Idle_Enterer *ie = NULL;
ie = eo_add(MY_CLASS, _ecore_parent, ecore_idle_enterer_before_constructor(func, data)); ie = eo_add(MY_CLASS, _ecore_parent, ecore_idle_enterer_before_constructor(eoid, func, data));
return ie; return ie;
} }
@ -117,7 +117,7 @@ _ecore_idle_enterer_eo_base_destructor(Eo *obj, Ecore_Idle_Enterer_Data *idle_en
idle_enterer->delete_me = 1; idle_enterer->delete_me = 1;
idle_enterers_delete_me = 1; idle_enterers_delete_me = 1;
eo_do_super(obj, MY_CLASS, eo_destructor()); eo_destructor(eo_super(obj, MY_CLASS));
} }
EOLIAN static Eo * EOLIAN static Eo *
@ -128,7 +128,7 @@ _ecore_idle_enterer_eo_base_finalize(Eo *obj, Ecore_Idle_Enterer_Data *idle_ente
return NULL; return NULL;
} }
return eo_do_super_ret(obj, MY_CLASS, obj, eo_finalize()); return eo_finalize(eo_super(obj, MY_CLASS));
} }
void void
@ -139,7 +139,7 @@ _ecore_idle_enterer_shutdown(void)
{ {
idle_enterers = (Ecore_Idle_Enterer_Data *)eina_inlist_remove(EINA_INLIST_GET(idle_enterers), EINA_INLIST_GET(idle_enterers)); idle_enterers = (Ecore_Idle_Enterer_Data *)eina_inlist_remove(EINA_INLIST_GET(idle_enterers), EINA_INLIST_GET(idle_enterers));
eo_do(ie->obj, eo_parent_set(NULL)); eo_parent_set(ie->obj, NULL);
if (eo_destructed_is(ie->obj)) if (eo_destructed_is(ie->obj))
eo_manual_free(ie->obj); eo_manual_free(ie->obj);
else else
@ -201,7 +201,7 @@ _ecore_idle_enterer_call(void)
idle_enterers = (Ecore_Idle_Enterer_Data *)eina_inlist_remove(EINA_INLIST_GET(idle_enterers), EINA_INLIST_GET(ie)); idle_enterers = (Ecore_Idle_Enterer_Data *)eina_inlist_remove(EINA_INLIST_GET(idle_enterers), EINA_INLIST_GET(ie));
eo_do(ie->obj, eo_parent_set(NULL)); eo_parent_set(ie->obj, NULL);
if (eo_destructed_is(ie->obj)) if (eo_destructed_is(ie->obj))
eo_manual_free(ie->obj); eo_manual_free(ie->obj);
else else

View File

@ -37,7 +37,7 @@ ecore_idle_exiter_add(Ecore_Task_Cb func,
const void *data) const void *data)
{ {
Ecore_Idle_Exiter *ie = NULL; Ecore_Idle_Exiter *ie = NULL;
ie = eo_add(MY_CLASS, _ecore_parent, ecore_idle_exiter_constructor(func, data)); ie = eo_add(MY_CLASS, _ecore_parent, ecore_idle_exiter_constructor(eoid, func, data));
return ie; return ie;
} }
@ -88,7 +88,7 @@ _ecore_idle_exiter_eo_base_finalize(Eo *obj, Ecore_Idle_Exiter_Data *idle_exiter
return NULL; return NULL;
} }
return eo_do_super_ret(obj, MY_CLASS, obj, eo_finalize()); return eo_finalize(eo_super(obj, MY_CLASS));
} }
EOLIAN static void EOLIAN static void
@ -98,7 +98,7 @@ _ecore_idle_exiter_eo_base_destructor(Eo *obj, Ecore_Idle_Exiter_Data *idle_exit
idle_exiter->delete_me = 1; idle_exiter->delete_me = 1;
idle_exiters_delete_me = 1; idle_exiters_delete_me = 1;
eo_do_super(obj, MY_CLASS, eo_destructor()); eo_destructor(eo_super(obj, MY_CLASS));
} }
void void
@ -109,7 +109,7 @@ _ecore_idle_exiter_shutdown(void)
{ {
idle_exiters = (Ecore_Idle_Exiter_Data *)eina_inlist_remove(EINA_INLIST_GET(idle_exiters), EINA_INLIST_GET(idle_exiters)); idle_exiters = (Ecore_Idle_Exiter_Data *)eina_inlist_remove(EINA_INLIST_GET(idle_exiters), EINA_INLIST_GET(idle_exiters));
eo_do(ie->obj, eo_parent_set(NULL)); eo_parent_set(ie->obj, NULL);
if (eo_destructed_is(ie->obj)) if (eo_destructed_is(ie->obj))
eo_manual_free(ie->obj); eo_manual_free(ie->obj);
else else
@ -172,7 +172,7 @@ _ecore_idle_exiter_call(void)
idle_exiters = (Ecore_Idle_Exiter_Data *)eina_inlist_remove(EINA_INLIST_GET(idle_exiters), EINA_INLIST_GET(ie)); idle_exiters = (Ecore_Idle_Exiter_Data *)eina_inlist_remove(EINA_INLIST_GET(idle_exiters), EINA_INLIST_GET(ie));
eo_do(ie->obj, eo_parent_set(NULL)); eo_parent_set(ie->obj, NULL);
if (eo_destructed_is(ie->obj)) if (eo_destructed_is(ie->obj))
eo_manual_free(ie->obj); eo_manual_free(ie->obj);
else else

View File

@ -35,7 +35,7 @@ EAPI Ecore_Idler *
ecore_idler_add(Ecore_Task_Cb func, ecore_idler_add(Ecore_Task_Cb func,
const void *data) const void *data)
{ {
return eo_add(MY_CLASS, _ecore_parent, ecore_idler_constructor(func, data)); return eo_add(MY_CLASS, _ecore_parent, ecore_idler_constructor(eoid, func, data));
} }
EOLIAN static void EOLIAN static void
@ -86,7 +86,7 @@ _ecore_idler_eo_base_destructor(Eo *obj, Ecore_Idler_Data *idler)
idler->delete_me = 1; idler->delete_me = 1;
idlers_delete_me = 1; idlers_delete_me = 1;
eo_do_super(obj, MY_CLASS, eo_destructor()); eo_destructor(eo_super(obj, MY_CLASS));
} }
EOLIAN static Eo * EOLIAN static Eo *
@ -97,7 +97,7 @@ _ecore_idler_eo_base_finalize(Eo *obj, Ecore_Idler_Data *idler)
return NULL; return NULL;
} }
return eo_do_super_ret(obj, MY_CLASS, obj, eo_finalize()); return eo_finalize(eo_super(obj, MY_CLASS));
} }
void void
@ -108,7 +108,7 @@ _ecore_idler_shutdown(void)
{ {
idlers = (Ecore_Idler_Data *)eina_inlist_remove(EINA_INLIST_GET(idlers), EINA_INLIST_GET(idlers)); idlers = (Ecore_Idler_Data *)eina_inlist_remove(EINA_INLIST_GET(idlers), EINA_INLIST_GET(idlers));
eo_do(ie->obj, eo_parent_set(NULL)); eo_parent_set(ie->obj, NULL);
if (eo_destructed_is(ie->obj)) if (eo_destructed_is(ie->obj))
eo_manual_free(ie->obj); eo_manual_free(ie->obj);
else else
@ -167,7 +167,7 @@ _ecore_idler_all_call(void)
idlers = (Ecore_Idler_Data *)eina_inlist_remove(EINA_INLIST_GET(idlers), EINA_INLIST_GET(ie)); idlers = (Ecore_Idler_Data *)eina_inlist_remove(EINA_INLIST_GET(idlers), EINA_INLIST_GET(ie));
eo_do(ie->obj, eo_parent_set(NULL)); eo_parent_set(ie->obj, NULL);
if (eo_destructed_is(ie->obj)) if (eo_destructed_is(ie->obj))
eo_manual_free(ie->obj); eo_manual_free(ie->obj);
else else

View File

@ -49,7 +49,7 @@ EAPI Ecore_Job *
ecore_job_add(Ecore_Cb func, ecore_job_add(Ecore_Cb func,
const void *data) const void *data)
{ {
Ecore_Job *job = eo_add(MY_CLASS, _ecore_parent, ecore_job_constructor(func, data)); Ecore_Job *job = eo_add(MY_CLASS, _ecore_parent, ecore_job_constructor(eoid, func, data));
return job; return job;
} }
@ -88,7 +88,7 @@ ecore_job_del(Ecore_Job *obj)
Ecore_Job_Data *job = eo_data_scope_get(obj, MY_CLASS); Ecore_Job_Data *job = eo_data_scope_get(obj, MY_CLASS);
data = job->data; data = job->data;
ecore_event_del(job->event); ecore_event_del(job->event);
eo_do(obj, eo_parent_set(NULL)); eo_parent_set(obj, NULL);
return data; return data;
} }
@ -96,7 +96,7 @@ EOLIAN static void
_ecore_job_eo_base_destructor(Eo *obj, Ecore_Job_Data *_pd EINA_UNUSED) _ecore_job_eo_base_destructor(Eo *obj, Ecore_Job_Data *_pd EINA_UNUSED)
{ {
/*FIXME: check if ecore_event_del should be called from here*/ /*FIXME: check if ecore_event_del should be called from here*/
eo_do_super(obj, MY_CLASS, eo_destructor()); eo_destructor(eo_super(obj, MY_CLASS));
} }
EOLIAN static Eo * EOLIAN static Eo *
@ -107,7 +107,7 @@ _ecore_job_eo_base_finalize(Eo *obj, Ecore_Job_Data *pd)
return NULL; return NULL;
} }
return eo_do_super_ret(obj, MY_CLASS, obj, eo_finalize()); return eo_finalize(eo_super(obj, MY_CLASS));
} }
static Eina_Bool static Eina_Bool
@ -126,7 +126,7 @@ static void
_ecore_job_event_free(void *data, _ecore_job_event_free(void *data,
void *job EINA_UNUSED) void *job EINA_UNUSED)
{ {
eo_do(data, eo_parent_set(NULL)); eo_parent_set(data, NULL);
Ecore_Job *obj = data; Ecore_Job *obj = data;

View File

@ -173,7 +173,7 @@ _ecore_poller_cb_timer(void *data EINA_UNUSED)
{ {
pollers[i] = (Ecore_Poller_Data *)eina_inlist_remove(EINA_INLIST_GET(pollers[i]), EINA_INLIST_GET(poller)); pollers[i] = (Ecore_Poller_Data *)eina_inlist_remove(EINA_INLIST_GET(pollers[i]), EINA_INLIST_GET(poller));
eo_do(poller->obj, eo_parent_set(NULL)); eo_parent_set(poller->obj, NULL);
if (eo_destructed_is(poller->obj)) if (eo_destructed_is(poller->obj))
eo_manual_free(poller->obj); eo_manual_free(poller->obj);
else else
@ -237,8 +237,7 @@ ecore_poller_add(Ecore_Poller_Type type EINA_UNUSED,
const void *data) const void *data)
{ {
Ecore_Poller *poller; Ecore_Poller *poller;
poller = eo_add(MY_CLASS, _ecore_parent, poller = eo_add(MY_CLASS, _ecore_parent, ecore_poller_constructor(eoid, type, interval, func, data));
ecore_poller_constructor(type, interval, func, data));
return poller; return poller;
} }
@ -352,7 +351,7 @@ ecore_poller_del(Ecore_Poller *obj)
data = poller->data; data = poller->data;
pollers[poller->ibit] = (Ecore_Poller_Data *)eina_inlist_remove(EINA_INLIST_GET(pollers[poller->ibit]), EINA_INLIST_GET(poller)); pollers[poller->ibit] = (Ecore_Poller_Data *)eina_inlist_remove(EINA_INLIST_GET(pollers[poller->ibit]), EINA_INLIST_GET(poller));
eo_do(poller->obj, eo_parent_set(NULL)); eo_parent_set(poller->obj, NULL);
if (eo_destructed_is(poller->obj)) if (eo_destructed_is(poller->obj))
eo_manual_free(obj); eo_manual_free(obj);
else else
@ -371,7 +370,7 @@ _ecore_poller_eo_base_destructor(Eo *obj, Ecore_Poller_Data *pd)
poller_delete_count++; poller_delete_count++;
} }
eo_do_super(obj, MY_CLASS, eo_destructor()); eo_destructor(eo_super(obj, MY_CLASS));
} }
EOLIAN static Eo * EOLIAN static Eo *
@ -382,7 +381,7 @@ _ecore_poller_eo_base_finalize(Eo *obj, Ecore_Poller_Data *pd)
return NULL; return NULL;
} }
return eo_do_super_ret(obj, MY_CLASS, obj, eo_finalize()); return eo_finalize(eo_super(obj, MY_CLASS));
} }
void void
@ -396,7 +395,7 @@ _ecore_poller_shutdown(void)
while ((poller = pollers[i])) while ((poller = pollers[i]))
{ {
pollers[i] = (Ecore_Poller_Data *)eina_inlist_remove(EINA_INLIST_GET(pollers[i]), EINA_INLIST_GET(pollers[i])); pollers[i] = (Ecore_Poller_Data *)eina_inlist_remove(EINA_INLIST_GET(pollers[i]), EINA_INLIST_GET(pollers[i]));
eo_do(poller->obj, eo_parent_set(NULL)); eo_parent_set(poller->obj, NULL);
if (eo_destructed_is(poller->obj)) if (eo_destructed_is(poller->obj))
eo_manual_free(poller->obj); eo_manual_free(poller->obj);
else else

View File

@ -93,7 +93,7 @@ ecore_timer_add(double in,
Ecore_Timer *timer = NULL; Ecore_Timer *timer = NULL;
EINA_MAIN_LOOP_CHECK_RETURN_VAL(NULL); EINA_MAIN_LOOP_CHECK_RETURN_VAL(NULL);
timer = eo_add(MY_CLASS, _ecore_parent, ecore_obj_timer_constructor(in, func, data)); timer = eo_add(MY_CLASS, _ecore_parent, ecore_obj_timer_constructor(eoid, in, func, data));
return timer; return timer;
} }
@ -232,7 +232,7 @@ EAPI void
ecore_timer_freeze(Ecore_Timer *timer) ecore_timer_freeze(Ecore_Timer *timer)
{ {
ECORE_TIMER_CHECK(timer); ECORE_TIMER_CHECK(timer);
eo_do(timer, eo_event_freeze()); eo_event_freeze(timer);
} }
EOLIAN static void EOLIAN static void
@ -261,7 +261,7 @@ ecore_timer_freeze_get(Ecore_Timer *timer)
{ {
int r = 0; int r = 0;
eo_do(timer, r = eo_event_freeze_count_get()); r = eo_event_freeze_count_get(timer);
return !!r; return !!r;
} }
@ -277,7 +277,7 @@ EAPI void
ecore_timer_thaw(Ecore_Timer *timer) ecore_timer_thaw(Ecore_Timer *timer)
{ {
ECORE_TIMER_CHECK(timer); ECORE_TIMER_CHECK(timer);
eo_do(timer, eo_event_thaw()); eo_event_thaw(timer);
} }
EOLIAN static void EOLIAN static void
@ -357,7 +357,7 @@ _ecore_timer_loop_add(double in,
const void *data) const void *data)
{ {
Ecore_Timer *timer = NULL; Ecore_Timer *timer = NULL;
timer = eo_add(MY_CLASS, _ecore_parent, ecore_obj_timer_loop_constructor(in, func, data)); timer = eo_add(MY_CLASS, _ecore_parent, ecore_obj_timer_loop_constructor(eoid, in, func, data));
return timer; return timer;
} }
@ -397,7 +397,7 @@ _ecore_timer_del(Ecore_Timer *obj)
if (timer->delete_me) if (timer->delete_me)
timers_delete_me--; timers_delete_me--;
eo_do(obj, eo_parent_set(NULL)); eo_parent_set(obj, NULL);
if (eo_destructed_is(obj)) if (eo_destructed_is(obj))
eo_manual_free(obj); eo_manual_free(obj);
@ -421,7 +421,7 @@ _ecore_timer_eo_base_destructor(Eo *obj, Ecore_Timer_Data *pd)
timers_delete_me++; timers_delete_me++;
} }
eo_do_super(obj, MY_CLASS, eo_destructor()); eo_destructor(eo_super(obj, MY_CLASS));
} }
EOLIAN static Eo * EOLIAN static Eo *
@ -432,7 +432,7 @@ _ecore_timer_eo_base_finalize(Eo *obj, Ecore_Timer_Data *pd)
return NULL; return NULL;
} }
return eo_do_super_ret(obj, MY_CLASS, obj, eo_finalize()); return eo_finalize(eo_super(obj, MY_CLASS));
} }
void void
@ -445,7 +445,7 @@ _ecore_timer_shutdown(void)
timers = (Ecore_Timer_Data *)eina_inlist_remove(EINA_INLIST_GET(timers), EINA_INLIST_GET(timers)); timers = (Ecore_Timer_Data *)eina_inlist_remove(EINA_INLIST_GET(timers), EINA_INLIST_GET(timers));
eo_data_unref(timer->obj, timer); eo_data_unref(timer->obj, timer);
eo_do(timer->obj, eo_parent_set(NULL)); eo_parent_set(timer->obj, NULL);
if (eo_destructed_is(timer->obj)) if (eo_destructed_is(timer->obj))
eo_manual_free(timer->obj); eo_manual_free(timer->obj);
else else
@ -457,7 +457,7 @@ _ecore_timer_shutdown(void)
suspended = (Ecore_Timer_Data *)eina_inlist_remove(EINA_INLIST_GET(suspended), EINA_INLIST_GET(suspended)); suspended = (Ecore_Timer_Data *)eina_inlist_remove(EINA_INLIST_GET(suspended), EINA_INLIST_GET(suspended));
eo_data_unref(timer->obj, timer); eo_data_unref(timer->obj, timer);
eo_do(timer->obj, eo_parent_set(NULL)); eo_parent_set(timer->obj, NULL);
if (eo_destructed_is(timer->obj)) if (eo_destructed_is(timer->obj))
eo_manual_free(timer->obj); eo_manual_free(timer->obj);
else else
@ -489,7 +489,7 @@ _ecore_timer_cleanup(void)
timers = (Ecore_Timer_Data *)eina_inlist_remove(EINA_INLIST_GET(timers), EINA_INLIST_GET(timer)); timers = (Ecore_Timer_Data *)eina_inlist_remove(EINA_INLIST_GET(timers), EINA_INLIST_GET(timer));
eo_data_unref(timer->obj, timer); eo_data_unref(timer->obj, timer);
eo_do(timer->obj, eo_parent_set(NULL)); eo_parent_set(timer->obj, NULL);
if (eo_destructed_is(timer->obj)) if (eo_destructed_is(timer->obj))
eo_manual_free(timer->obj); eo_manual_free(timer->obj);
else else
@ -514,7 +514,7 @@ _ecore_timer_cleanup(void)
suspended = (Ecore_Timer_Data *)eina_inlist_remove(EINA_INLIST_GET(suspended), EINA_INLIST_GET(timer)); suspended = (Ecore_Timer_Data *)eina_inlist_remove(EINA_INLIST_GET(suspended), EINA_INLIST_GET(timer));
eo_data_unref(timer->obj, timer); eo_data_unref(timer->obj, timer);
eo_do(timer->obj, eo_parent_set(NULL)); eo_parent_set(timer->obj, NULL);
if (eo_destructed_is(timer->obj)) if (eo_destructed_is(timer->obj))
eo_manual_free(timer->obj); eo_manual_free(timer->obj);
else else

View File

@ -58,7 +58,7 @@ EOLIAN static Eo *
_ecore_audio_eo_base_constructor(Eo *eo_obj, Ecore_Audio_Object *obj) _ecore_audio_eo_base_constructor(Eo *eo_obj, Ecore_Audio_Object *obj)
{ {
obj->volume = 1.0; obj->volume = 1.0;
return eo_do_super_ret(eo_obj, MY_CLASS, eo_obj, eo_constructor()); return eo_constructor(eo_super(eo_obj, MY_CLASS));
} }
#include "ecore_audio.eo.c" #include "ecore_audio.eo.c"

View File

@ -27,7 +27,7 @@ _ecore_audio_in_speed_set(Eo *eo_obj EINA_UNUSED, Ecore_Audio_Input *obj, double
obj->speed = speed; obj->speed = speed;
eo_do(eo_obj, eo_event_callback_call(ECORE_AUDIO_IN_EVENT_IN_SAMPLERATE_CHANGED, NULL)); eo_event_callback_call(eo_obj, ECORE_AUDIO_IN_EVENT_IN_SAMPLERATE_CHANGED, NULL);
} }
EOLIAN static double EOLIAN static double
@ -41,7 +41,7 @@ _ecore_audio_in_samplerate_set(Eo *eo_obj EINA_UNUSED, Ecore_Audio_Input *obj, i
{ {
obj->samplerate = samplerate; obj->samplerate = samplerate;
eo_do(eo_obj, eo_event_callback_call(ECORE_AUDIO_IN_EVENT_IN_SAMPLERATE_CHANGED, NULL)); eo_event_callback_call(eo_obj, ECORE_AUDIO_IN_EVENT_IN_SAMPLERATE_CHANGED, NULL);
} }
EOLIAN static int EOLIAN static int
@ -89,7 +89,7 @@ _ecore_audio_in_remaining_get(Eo *eo_obj, Ecore_Audio_Input *obj)
if (!obj->seekable) return -1; if (!obj->seekable) return -1;
else { else {
double ret = 0.0; double ret = 0.0;
eo_do(eo_obj, ret = ecore_audio_obj_in_seek(0, SEEK_CUR)); ret = ecore_audio_obj_in_seek(eo_obj, 0, SEEK_CUR);
return obj->length - ret; return obj->length - ret;
} }
} }
@ -104,14 +104,14 @@ _ecore_audio_in_read(Eo *eo_obj, Ecore_Audio_Input *obj, void *buf, size_t len)
memset(buf, 0, len); memset(buf, 0, len);
len_read = len; len_read = len;
} else { } else {
eo_do(eo_obj, len_read = ecore_audio_obj_in_read_internal(buf, len)); len_read = ecore_audio_obj_in_read_internal(eo_obj, buf, len);
if (len_read == 0) { if (len_read == 0) {
if (!obj->looped || !obj->seekable) { if (!obj->looped || !obj->seekable) {
eo_do(eo_obj, eo_event_callback_call(ECORE_AUDIO_IN_EVENT_IN_STOPPED, NULL)); eo_event_callback_call(eo_obj, ECORE_AUDIO_IN_EVENT_IN_STOPPED, NULL);
} else { } else {
eo_do(eo_obj, ecore_audio_obj_in_seek(0, SEEK_SET)); ecore_audio_obj_in_seek(eo_obj, 0, SEEK_SET);
eo_do(eo_obj, len_read = ecore_audio_obj_in_read_internal(buf, len)); len_read = ecore_audio_obj_in_read_internal(eo_obj, buf, len);
eo_do(eo_obj, eo_event_callback_call(ECORE_AUDIO_IN_EVENT_IN_LOOPED, NULL)); eo_event_callback_call(eo_obj, ECORE_AUDIO_IN_EVENT_IN_LOOPED, NULL);
} }
} }
@ -173,7 +173,7 @@ _ecore_audio_in_ecore_audio_vio_set(Eo *eo_obj, Ecore_Audio_Input *obj, Ecore_Au
EOLIAN static Eo * EOLIAN static Eo *
_ecore_audio_in_eo_base_constructor(Eo *eo_obj, Ecore_Audio_Input *obj) _ecore_audio_in_eo_base_constructor(Eo *eo_obj, Ecore_Audio_Input *obj)
{ {
eo_obj = eo_do_super_ret(eo_obj, MY_CLASS, eo_obj, eo_constructor()); eo_obj = eo_constructor(eo_super(eo_obj, MY_CLASS));
obj->speed = 1.0; obj->speed = 1.0;
@ -184,9 +184,9 @@ EOLIAN static void
_ecore_audio_in_eo_base_destructor(Eo *eo_obj, Ecore_Audio_Input *obj) _ecore_audio_in_eo_base_destructor(Eo *eo_obj, Ecore_Audio_Input *obj)
{ {
if(obj->output) if(obj->output)
eo_do(obj->output, ecore_audio_obj_out_input_detach(eo_obj)); ecore_audio_obj_out_input_detach(obj->output, eo_obj);
eo_do_super(eo_obj, MY_CLASS, eo_destructor()); eo_destructor(eo_super(eo_obj, MY_CLASS));
} }
#include "ecore_audio_in.eo.c" #include "ecore_audio_in.eo.c"

View File

@ -205,7 +205,7 @@ _ecore_audio_in_sndfile_eo_base_destructor(Eo *eo_obj, Ecore_Audio_In_Sndfile_Da
if (ea_obj->vio) if (ea_obj->vio)
_free_vio(ea_obj); _free_vio(ea_obj);
eo_do_super(eo_obj, MY_CLASS, eo_destructor()); eo_destructor(eo_super(eo_obj, MY_CLASS));
} }
#include "ecore_audio_in_sndfile.eo.c" #include "ecore_audio_in_sndfile.eo.c"

View File

@ -90,7 +90,7 @@ _ecore_audio_in_tone_eo_base_key_data_set(Eo *eo_obj, Ecore_Audio_In_Tone_Data *
if (!strcmp(key, ECORE_AUDIO_ATTR_TONE_FREQ)) { if (!strcmp(key, ECORE_AUDIO_ATTR_TONE_FREQ)) {
obj->freq = *(int *)val; obj->freq = *(int *)val;
} else { } else {
eo_do_super(eo_obj, MY_CLASS, eo_key_data_set(key, val)); eo_key_data_set(eo_super(eo_obj, MY_CLASS), key, val);
} }
} }
@ -102,7 +102,7 @@ _ecore_audio_in_tone_eo_base_key_data_get(Eo *eo_obj, Ecore_Audio_In_Tone_Data *
return (void *) (intptr_t) obj->freq; return (void *) (intptr_t) obj->freq;
} else { } else {
void *ret = NULL; void *ret = NULL;
eo_do_super(eo_obj, MY_CLASS, ret = eo_key_data_get(key)); ret = eo_key_data_get(eo_super(eo_obj, MY_CLASS), key);
return ret; return ret;
} }
} }
@ -112,7 +112,7 @@ _ecore_audio_in_tone_eo_base_constructor(Eo *eo_obj, Ecore_Audio_In_Tone_Data *o
{ {
Ecore_Audio_Input *in_obj = eo_data_scope_get(eo_obj, ECORE_AUDIO_IN_CLASS); Ecore_Audio_Input *in_obj = eo_data_scope_get(eo_obj, ECORE_AUDIO_IN_CLASS);
eo_obj = eo_do_super_ret(eo_obj, MY_CLASS, eo_obj, eo_constructor()); eo_obj = eo_constructor(eo_super(eo_obj, MY_CLASS));
in_obj->channels = 1; in_obj->channels = 1;
in_obj->samplerate = 44100; in_obj->samplerate = 44100;

View File

@ -34,7 +34,7 @@ static Eina_Bool _write_cb(void *data)
/* FIXME: Multiple inputs */ /* FIXME: Multiple inputs */
in = eina_list_data_get(out_obj->inputs); in = eina_list_data_get(out_obj->inputs);
eo_do(in, bread = ecore_audio_obj_in_read(buf, 4*1024)); bread = ecore_audio_obj_in_read(in, buf, 4*1024);
if (bread == 0) { if (bread == 0) {
ea_obj->paused = EINA_TRUE; ea_obj->paused = EINA_TRUE;
@ -61,7 +61,7 @@ _ecore_audio_out_input_attach(Eo *eo_obj, Ecore_Audio_Output *obj, Eo *input)
if (in->output == eo_obj) if (in->output == eo_obj)
return EINA_FALSE; return EINA_FALSE;
if (in->output) eo_do(in->output, ecore_audio_obj_out_input_detach(input)); if (in->output) ecore_audio_obj_out_input_detach(in->output, input);
in->output = eo_obj; in->output = eo_obj;
/* TODO: Send event */ /* TODO: Send event */
@ -132,7 +132,7 @@ _ecore_audio_out_ecore_audio_vio_set(Eo *eo_obj, Ecore_Audio_Output *_pd EINA_UN
EOLIAN static Eo * EOLIAN static Eo *
_ecore_audio_out_eo_base_constructor(Eo *eo_obj, Ecore_Audio_Output *obj) _ecore_audio_out_eo_base_constructor(Eo *eo_obj, Ecore_Audio_Output *obj)
{ {
eo_obj = eo_do_super_ret(eo_obj, MY_CLASS, eo_obj, eo_constructor()); eo_obj = eo_constructor(eo_super(eo_obj, MY_CLASS));
obj->need_writer = EINA_TRUE; obj->need_writer = EINA_TRUE;
@ -146,10 +146,10 @@ _ecore_audio_out_eo_base_destructor(Eo *eo_obj, Ecore_Audio_Output *obj)
Eo *in; Eo *in;
EINA_LIST_FOREACH_SAFE(obj->inputs, cur, tmp, in) { EINA_LIST_FOREACH_SAFE(obj->inputs, cur, tmp, in) {
eo_do(eo_obj, ecore_audio_obj_out_input_detach(in)); ecore_audio_obj_out_input_detach(eo_obj, in);
} }
eo_do_super(eo_obj, MY_CLASS, eo_destructor()); eo_destructor(eo_super(eo_obj, MY_CLASS));
} }
#include "ecore_audio_out.eo.c" #include "ecore_audio_out.eo.c"

View File

@ -185,7 +185,7 @@ _audio_io_proc_cb(AudioObjectID obj_id EINA_UNUSED,
if (helper->fake_stereo) if (helper->fake_stereo)
{ {
eo_do(helper->input, bread = ecore_audio_obj_in_read(buf, size * 2)); bread = ecore_audio_obj_in_read(helper->input, buf, size * 2);
for (k = bread - 1; k >= 0; --k) for (k = bread - 1; k >= 0; --k)
{ {
@ -196,7 +196,7 @@ _audio_io_proc_cb(AudioObjectID obj_id EINA_UNUSED,
} }
else else
{ {
eo_do(helper->input, bread = ecore_audio_obj_in_read(buf, size * 4)); bread = ecore_audio_obj_in_read(helper->input, buf, size * 4);
bread /= 4; bread /= 4;
} }
@ -219,7 +219,7 @@ EOLIAN static void
_ecore_audio_out_core_audio_ecore_audio_volume_set(Eo *obj, Ecore_Audio_Out_Core_Audio_Data *sd EINA_UNUSED, double volume) _ecore_audio_out_core_audio_ecore_audio_volume_set(Eo *obj, Ecore_Audio_Out_Core_Audio_Data *sd EINA_UNUSED, double volume)
{ {
// TODO Change volume of playing inputs // TODO Change volume of playing inputs
eo_do_super(obj, MY_CLASS, ecore_audio_obj_volume_set(volume)); ecore_audio_obj_volume_set(eo_super(obj, MY_CLASS), volume);
} }
EOLIAN static Eina_Bool EOLIAN static Eina_Bool
@ -230,7 +230,7 @@ _ecore_audio_out_core_audio_ecore_audio_out_input_attach(Eo *obj, Ecore_Audio_Ou
OSStatus err; OSStatus err;
Eina_Bool chk; Eina_Bool chk;
eo_do_super(obj, MY_CLASS, chk = ecore_audio_obj_out_input_attach(input)); chk = ecore_audio_obj_out_input_attach(eo_super(obj, MY_CLASS), input);
if (EINA_UNLIKELY(!chk)) if (EINA_UNLIKELY(!chk))
{ {
ERR("Failed to attach input (eo_do_super)"); ERR("Failed to attach input (eo_do_super)");
@ -266,10 +266,10 @@ _ecore_audio_out_core_audio_ecore_audio_out_input_attach(Eo *obj, Ecore_Audio_Ou
} }
/* Forward samplerate to CoreAudio */ /* Forward samplerate to CoreAudio */
eo_do(input, helper->format.mSampleRate = ecore_audio_obj_in_samplerate_get()); helper->format.mSampleRate = ecore_audio_obj_in_samplerate_get(input);
/* Set channels. If only 1 channel, emulate stereo */ /* Set channels. If only 1 channel, emulate stereo */
eo_do(input, channels = ecore_audio_obj_in_channels_get()); channels = ecore_audio_obj_in_channels_get(input);
if (channels == 1) if (channels == 1)
{ {
DBG("Fake stereo enabled for input %p", input); DBG("Fake stereo enabled for input %p", input);
@ -303,7 +303,7 @@ _ecore_audio_out_core_audio_ecore_audio_out_input_attach(Eo *obj, Ecore_Audio_Ou
} }
/* Keep track of data for deallocation */ /* Keep track of data for deallocation */
eo_do(input, eo_key_data_set("coreaudio_data", helper)); eo_key_data_set(input, "coreaudio_data", helper);
/* Start playing */ /* Start playing */
helper->is_playing = EINA_TRUE; helper->is_playing = EINA_TRUE;
@ -322,7 +322,7 @@ free_proc_id:
free_helper: free_helper:
free(helper); free(helper);
detach: detach:
eo_do_super(obj, MY_CLASS, ecore_audio_obj_out_input_detach(input)); ecore_audio_obj_out_input_detach(eo_super(obj, MY_CLASS), input);
return_failure: return_failure:
return EINA_FALSE; return EINA_FALSE;
} }
@ -335,10 +335,10 @@ _ecore_audio_out_core_audio_ecore_audio_out_input_detach(Eo *obj, Ecore_Audio_Ou
DBG("Detach"); DBG("Detach");
/* Free helper */ /* Free helper */
eo_do(input, data = eo_key_data_get("coreaudio_data")); data = eo_key_data_get(input, "coreaudio_data");
_core_audio_helper_free(data); _core_audio_helper_free(data);
eo_do_super(obj, MY_CLASS, ret = ecore_audio_obj_out_input_detach(input)); ret = ecore_audio_obj_out_input_detach(eo_super(obj, MY_CLASS), input);
return ret; return ret;
} }

View File

@ -61,10 +61,10 @@ _ecore_audio_out_pulse_ecore_audio_volume_set(Eo *eo_obj, Ecore_Audio_Out_Pulse_
pa_cvolume_set(&pa_volume, 2, volume * PA_VOLUME_NORM); pa_cvolume_set(&pa_volume, 2, volume * PA_VOLUME_NORM);
eo_do_super(eo_obj, MY_CLASS, ecore_audio_obj_volume_set(volume)); ecore_audio_obj_volume_set(eo_super(eo_obj, MY_CLASS), volume);
EINA_LIST_FOREACH(out_obj->inputs, input, in) { EINA_LIST_FOREACH(out_obj->inputs, input, in) {
eo_do(in, stream = eo_key_data_get("pulse_data")); stream = eo_key_data_get(in, "pulse_data");
idx = pa_stream_get_index(stream); idx = pa_stream_get_index(stream);
pa_operation_unref(pa_context_set_sink_input_volume(class_vars.context, idx, &pa_volume, NULL, NULL)); pa_operation_unref(pa_context_set_sink_input_volume(class_vars.context, idx, &pa_volume, NULL, NULL));
} }
@ -81,7 +81,7 @@ static void _write_cb(pa_stream *stream, size_t len, void *data)
pa_stream_begin_write(stream, &buf, &wlen); pa_stream_begin_write(stream, &buf, &wlen);
eo_do(in, bread = ecore_audio_obj_in_read(buf, wlen)); bread = ecore_audio_obj_in_read(in, buf, wlen);
pa_stream_write(stream, buf, bread, NULL, 0, PA_SEEK_RELATIVE); pa_stream_write(stream, buf, bread, NULL, 0, PA_SEEK_RELATIVE);
if (bread < (int)len) if (bread < (int)len)
@ -96,10 +96,10 @@ static Eina_Bool _update_samplerate_cb(void *data EINA_UNUSED, const Eo_Event *e
int samplerate = 0; int samplerate = 0;
double speed = 0; double speed = 0;
eo_do(event->obj, samplerate = ecore_audio_obj_in_samplerate_get()); samplerate = ecore_audio_obj_in_samplerate_get(event->obj);
eo_do(event->obj, speed = ecore_audio_obj_in_speed_get()); speed = ecore_audio_obj_in_speed_get(event->obj);
eo_do(event->obj, stream = eo_key_data_get("pulse_data")); stream = eo_key_data_get(event->obj, "pulse_data");
pa_operation_unref(pa_stream_update_sample_rate(stream, samplerate * speed, NULL, NULL)); pa_operation_unref(pa_stream_update_sample_rate(stream, samplerate * speed, NULL, NULL));
@ -115,28 +115,28 @@ static Eina_Bool _input_attach_internal(Eo *eo_obj, Eo *in)
Eina_Bool ret = EINA_FALSE; Eina_Bool ret = EINA_FALSE;
Ecore_Audio_Object *ea_obj = eo_data_scope_get(eo_obj, ECORE_AUDIO_CLASS); Ecore_Audio_Object *ea_obj = eo_data_scope_get(eo_obj, ECORE_AUDIO_CLASS);
eo_do_super(eo_obj, MY_CLASS, ret = ecore_audio_obj_out_input_attach(in)); ret = ecore_audio_obj_out_input_attach(eo_super(eo_obj, MY_CLASS), in);
if (!ret) if (!ret)
return EINA_FALSE; return EINA_FALSE;
ss.format = PA_SAMPLE_FLOAT32LE; ss.format = PA_SAMPLE_FLOAT32LE;
eo_do(in, ss.rate = ecore_audio_obj_in_samplerate_get()); ss.rate = ecore_audio_obj_in_samplerate_get(in);
eo_do(in, speed = ecore_audio_obj_in_speed_get()); speed = ecore_audio_obj_in_speed_get(in);
eo_do(in, ss.channels = ecore_audio_obj_in_channels_get()); ss.channels = ecore_audio_obj_in_channels_get(in);
eo_do(in, name = ecore_audio_obj_name_get()); name = ecore_audio_obj_name_get(in);
ss.rate = ss.rate * speed; ss.rate = ss.rate * speed;
stream = pa_stream_new(class_vars.context, name, &ss, NULL); stream = pa_stream_new(class_vars.context, name, &ss, NULL);
if (!stream) { if (!stream) {
ERR("Could not create stream"); ERR("Could not create stream");
eo_do_super(eo_obj, MY_CLASS, ecore_audio_obj_out_input_detach(in)); ecore_audio_obj_out_input_detach(eo_super(eo_obj, MY_CLASS), in);
return EINA_FALSE; return EINA_FALSE;
} }
eo_do(in, eo_event_callback_add(ECORE_AUDIO_IN_EVENT_IN_SAMPLERATE_CHANGED, _update_samplerate_cb, eo_obj)); eo_event_callback_add(in, ECORE_AUDIO_IN_EVENT_IN_SAMPLERATE_CHANGED, _update_samplerate_cb, eo_obj);
eo_do(in, eo_key_data_set("pulse_data", stream)); eo_key_data_set(in, "pulse_data", stream);
pa_stream_set_write_callback(stream, _write_cb, in); pa_stream_set_write_callback(stream, _write_cb, in);
@ -151,7 +151,7 @@ static Eina_Bool _input_attach_internal(Eo *eo_obj, Eo *in)
static Eina_Bool _delayed_attach_cb(void *data, const Eo_Event *event) static Eina_Bool _delayed_attach_cb(void *data, const Eo_Event *event)
{ {
Eo *in = data; Eo *in = data;
eo_do(event->obj, eo_event_callback_del(ECORE_AUDIO_OUT_PULSE_EVENT_CONTEXT_READY, _delayed_attach_cb, in)); eo_event_callback_del(event->obj, ECORE_AUDIO_OUT_PULSE_EVENT_CONTEXT_READY, _delayed_attach_cb, in);
_input_attach_internal(event->obj, in); _input_attach_internal(event->obj, in);
@ -165,7 +165,7 @@ _ecore_audio_out_pulse_ecore_audio_out_input_attach(Eo *eo_obj, Ecore_Audio_Out_
if (class_vars.state != PA_CONTEXT_READY) { if (class_vars.state != PA_CONTEXT_READY) {
DBG("Delaying input_attach because PA context is not ready."); DBG("Delaying input_attach because PA context is not ready.");
eo_do(eo_obj, eo_event_callback_add(ECORE_AUDIO_OUT_PULSE_EVENT_CONTEXT_READY, _delayed_attach_cb, in)); eo_event_callback_add(eo_obj, ECORE_AUDIO_OUT_PULSE_EVENT_CONTEXT_READY, _delayed_attach_cb, in);
} else { } else {
retval = _input_attach_internal(eo_obj, in); retval = _input_attach_internal(eo_obj, in);
} }
@ -186,11 +186,11 @@ _ecore_audio_out_pulse_ecore_audio_out_input_detach(Eo *eo_obj, Ecore_Audio_Out_
Eina_Bool ret2 = EINA_FALSE; Eina_Bool ret2 = EINA_FALSE;
pa_operation *op; pa_operation *op;
eo_do_super(eo_obj, MY_CLASS, ret2 = ecore_audio_obj_out_input_detach(in)); ret2 = ecore_audio_obj_out_input_detach(eo_super(eo_obj, MY_CLASS), in);
if (!ret2) if (!ret2)
return EINA_FALSE; return EINA_FALSE;
eo_do(in, stream = eo_key_data_get("pulse_data")); stream = eo_key_data_get(in, "pulse_data");
pa_stream_set_write_callback(stream, NULL, NULL); pa_stream_set_write_callback(stream, NULL, NULL);
op = pa_stream_drain(stream, _drain_cb, NULL); op = pa_stream_drain(stream, _drain_cb, NULL);
@ -221,12 +221,12 @@ static void _state_cb(pa_context *context, void *data EINA_UNUSED)
if (state == PA_CONTEXT_READY) { if (state == PA_CONTEXT_READY) {
DBG("PA context ready."); DBG("PA context ready.");
EINA_LIST_FOREACH(class_vars.outputs, out, eo_obj) { EINA_LIST_FOREACH(class_vars.outputs, out, eo_obj) {
eo_do(eo_obj, eo_event_callback_call(ECORE_AUDIO_OUT_PULSE_EVENT_CONTEXT_READY, NULL)); eo_event_callback_call(eo_obj, ECORE_AUDIO_OUT_PULSE_EVENT_CONTEXT_READY, NULL);
} }
} else if ((state == PA_CONTEXT_FAILED) || (state == PA_CONTEXT_TERMINATED)) { } else if ((state == PA_CONTEXT_FAILED) || (state == PA_CONTEXT_TERMINATED)) {
DBG("PA context fail."); DBG("PA context fail.");
EINA_LIST_FOREACH(class_vars.outputs, out, eo_obj) { EINA_LIST_FOREACH(class_vars.outputs, out, eo_obj) {
eo_do(eo_obj, eo_event_callback_call(ECORE_AUDIO_OUT_PULSE_EVENT_CONTEXT_FAIL, NULL)); eo_event_callback_call(eo_obj, ECORE_AUDIO_OUT_PULSE_EVENT_CONTEXT_FAIL, NULL);
} }
} else { } else {
DBG("Connection state %i", state); DBG("Connection state %i", state);
@ -252,7 +252,7 @@ static void _state_job(void *data EINA_UNUSED)
} }
// the callback here can delete things in the list.. // the callback here can delete things in the list..
EINA_LIST_FOREACH(class_vars.outputs, out, eo_obj) { EINA_LIST_FOREACH(class_vars.outputs, out, eo_obj) {
eo_do(eo_obj, eo_event_callback_call(ECORE_AUDIO_OUT_PULSE_EVENT_CONTEXT_FAIL, NULL)); eo_event_callback_call(eo_obj, ECORE_AUDIO_OUT_PULSE_EVENT_CONTEXT_FAIL, NULL);
} }
// now unref everything safely // now unref everything safely
EINA_LIST_FOREACH_SAFE(class_vars.outputs, out, tmp, eo_obj) { EINA_LIST_FOREACH_SAFE(class_vars.outputs, out, tmp, eo_obj) {
@ -269,7 +269,7 @@ _ecore_audio_out_pulse_eo_base_constructor(Eo *eo_obj, Ecore_Audio_Out_Pulse_Dat
char **argv; char **argv;
Ecore_Audio_Output *out_obj = eo_data_scope_get(eo_obj, ECORE_AUDIO_OUT_CLASS); Ecore_Audio_Output *out_obj = eo_data_scope_get(eo_obj, ECORE_AUDIO_OUT_CLASS);
eo_obj = eo_do_super_ret(eo_obj, MY_CLASS, eo_obj, eo_constructor()); eo_obj = eo_constructor(eo_super(eo_obj, MY_CLASS));
out_obj->need_writer = EINA_FALSE; out_obj->need_writer = EINA_FALSE;
@ -296,7 +296,7 @@ EOLIAN static void
_ecore_audio_out_pulse_eo_base_destructor(Eo *eo_obj, Ecore_Audio_Out_Pulse_Data *_pd EINA_UNUSED) _ecore_audio_out_pulse_eo_base_destructor(Eo *eo_obj, Ecore_Audio_Out_Pulse_Data *_pd EINA_UNUSED)
{ {
class_vars.outputs = eina_list_remove(class_vars.outputs, eo_obj); class_vars.outputs = eina_list_remove(class_vars.outputs, eo_obj);
eo_do_super(eo_obj, MY_CLASS, eo_destructor()); eo_destructor(eo_super(eo_obj, MY_CLASS));
} }
#include "ecore_audio_out_pulse.eo.c" #include "ecore_audio_out_pulse.eo.c"

View File

@ -43,7 +43,7 @@ static Eina_Bool _write_cb(void *data)
/* TODO: Support mixing of multiple inputs */ /* TODO: Support mixing of multiple inputs */
in = eina_list_data_get(out_obj->inputs); in = eina_list_data_get(out_obj->inputs);
eo_do(in, bread = ecore_audio_obj_in_read(buf, 4*1024)); bread = ecore_audio_obj_in_read(in, buf, 4*1024);
if (bread == 0) { if (bread == 0) {
sf_write_sync(obj->handle); sf_write_sync(obj->handle);
@ -66,19 +66,19 @@ _ecore_audio_out_sndfile_ecore_audio_out_input_attach(Eo *eo_obj, Ecore_Audio_Ou
Ecore_Audio_Output *out_obj = eo_data_scope_get(eo_obj, ECORE_AUDIO_OUT_CLASS); Ecore_Audio_Output *out_obj = eo_data_scope_get(eo_obj, ECORE_AUDIO_OUT_CLASS);
Eina_Bool ret2 = EINA_FALSE; Eina_Bool ret2 = EINA_FALSE;
eo_do_super(eo_obj, MY_CLASS, ret2 = ecore_audio_obj_out_input_attach(in)); ret2 = ecore_audio_obj_out_input_attach(eo_super(eo_obj, MY_CLASS), in);
if (!ret2) if (!ret2)
return EINA_FALSE; return EINA_FALSE;
eo_do(in, obj->sfinfo.samplerate = ecore_audio_obj_in_samplerate_get()); obj->sfinfo.samplerate = ecore_audio_obj_in_samplerate_get(in);
eo_do(in, obj->sfinfo.channels = ecore_audio_obj_in_channels_get()); obj->sfinfo.channels = ecore_audio_obj_in_channels_get(in);
obj->handle = sf_open(ea_obj->source, SFM_WRITE, &obj->sfinfo); obj->handle = sf_open(ea_obj->source, SFM_WRITE, &obj->sfinfo);
if (!obj->handle) { if (!obj->handle) {
eina_stringshare_del(ea_obj->source); eina_stringshare_del(ea_obj->source);
ea_obj->source = NULL; ea_obj->source = NULL;
eo_do_super(eo_obj, MY_CLASS, ecore_audio_obj_out_input_detach(in)); ecore_audio_obj_out_input_detach(eo_super(eo_obj, MY_CLASS), in);
return EINA_FALSE; return EINA_FALSE;
} }
@ -163,9 +163,9 @@ _ecore_audio_out_sndfile_eo_base_constructor(Eo *eo_obj, Ecore_Audio_Out_Sndfile
{ {
Ecore_Audio_Output *out_obj = eo_data_scope_get(eo_obj, ECORE_AUDIO_OUT_CLASS); Ecore_Audio_Output *out_obj = eo_data_scope_get(eo_obj, ECORE_AUDIO_OUT_CLASS);
eo_obj = eo_do_super_ret(eo_obj, MY_CLASS, eo_obj, eo_constructor()); eo_obj = eo_constructor(eo_super(eo_obj, MY_CLASS));
eo_do(eo_obj, ecore_audio_obj_format_set(ECORE_AUDIO_FORMAT_OGG)); ecore_audio_obj_format_set(eo_obj, ECORE_AUDIO_FORMAT_OGG);
// FIXME: Use writer from output // FIXME: Use writer from output
out_obj->need_writer = EINA_FALSE; out_obj->need_writer = EINA_FALSE;
@ -182,7 +182,7 @@ _ecore_audio_out_sndfile_eo_base_destructor(Eo *eo_obj, Ecore_Audio_Out_Sndfile_
if (out_obj->write_idler) if (out_obj->write_idler)
ecore_idler_del(out_obj->write_idler); ecore_idler_del(out_obj->write_idler);
eo_do_super(eo_obj, MY_CLASS, eo_destructor()); eo_destructor(eo_super(eo_obj, MY_CLASS));
} }
#include "ecore_audio_out_sndfile.eo.c" #include "ecore_audio_out_sndfile.eo.c"

View File

@ -108,8 +108,7 @@ static void _ecore_con_lookup_done(void *data,
static const char *_ecore_con_pretty_ip(struct sockaddr *client_addr); static const char *_ecore_con_pretty_ip(struct sockaddr *client_addr);
#define EO_CONSTRUCTOR_CHECK_RETURN(obj) do { \ #define EO_CONSTRUCTOR_CHECK_RETURN(obj) do { \
Eina_Bool finalized; \ if (eo_finalized_get(obj)) \
if (eo_do_ret(obj, finalized, eo_finalized_get())) \
{ \ { \
ERR("This function is only allowed during construction."); \ ERR("This function is only allowed during construction."); \
return; \ return; \
@ -306,10 +305,7 @@ _efl_network_base_lookup(Eo *kls_obj EINA_UNUSED, void *pd EINA_UNUSED, const ch
if (!name || !done_cb) if (!name || !done_cb)
return EINA_FALSE; return EINA_FALSE;
obj = eo_add(EFL_NETWORK_CONNECTOR_CLASS, NULL, obj = eo_add(EFL_NETWORK_CONNECTOR_CLASS, NULL, efl_network_server_connection_type_set(eoid, ECORE_CON_REMOTE_TCP), efl_network_server_name_set(eoid, name), efl_network_base_port_set(eoid, 1025));
efl_network_server_connection_type_set(ECORE_CON_REMOTE_TCP),
efl_network_server_name_set(name),
efl_network_base_port_set(1025));
lk = malloc(sizeof (Ecore_Con_Lookup)); lk = malloc(sizeof (Ecore_Con_Lookup));
if (!lk) if (!lk)
@ -363,10 +359,7 @@ ecore_con_server_add(Ecore_Con_Type compl_type,
/* local system socket: FILE: /tmp/.ecore_service|[name]|[port] */ /* local system socket: FILE: /tmp/.ecore_service|[name]|[port] */
/* remote system socket: TCP/IP: [name]:[port] */ /* remote system socket: TCP/IP: [name]:[port] */
obj = eo_add(EFL_NETWORK_SERVER_CLASS, NULL, obj = eo_add(EFL_NETWORK_SERVER_CLASS, NULL, efl_network_server_connection_type_set(eoid, compl_type), efl_network_server_name_set(eoid, name), efl_network_base_port_set(eoid, port));
efl_network_server_connection_type_set(compl_type),
efl_network_server_name_set(name),
efl_network_base_port_set(port));
ecore_con_server_data_set(obj, (void *) data); ecore_con_server_data_set(obj, (void *) data);
@ -376,7 +369,7 @@ ecore_con_server_add(Ecore_Con_Type compl_type,
EOLIAN static Eo * EOLIAN static Eo *
_efl_network_server_eo_base_constructor(Ecore_Con_Server *obj, Efl_Network_Server_Data *svr) _efl_network_server_eo_base_constructor(Ecore_Con_Server *obj, Efl_Network_Server_Data *svr)
{ {
obj = eo_do_super_ret(obj, EFL_NETWORK_SERVER_CLASS, obj, eo_constructor()); obj = eo_constructor(eo_super(obj, EFL_NETWORK_SERVER_CLASS));
svr->fd = -1; svr->fd = -1;
svr->reject_excess_clients = EINA_FALSE; svr->reject_excess_clients = EINA_FALSE;
@ -392,7 +385,7 @@ _efl_network_server_eo_base_finalize(Ecore_Con_Server *obj, Efl_Network_Server_D
Ecore_Con_Type compl_type = svr->type; Ecore_Con_Type compl_type = svr->type;
Ecore_Con_Type type; Ecore_Con_Type type;
eo_do_super(obj, EFL_NETWORK_SERVER_CLASS, eo_finalize()); eo_finalize(eo_super(obj, EFL_NETWORK_SERVER_CLASS));
svr->created = EINA_TRUE; svr->created = EINA_TRUE;
svr->ppid = getpid(); svr->ppid = getpid();
@ -462,10 +455,7 @@ ecore_con_server_connect(Ecore_Con_Type compl_type,
/* local user socket: FILE: ~/.ecore/[name]/[port] */ /* local user socket: FILE: ~/.ecore/[name]/[port] */
/* local system socket: FILE: /tmp/.ecore_service|[name]|[port] */ /* local system socket: FILE: /tmp/.ecore_service|[name]|[port] */
/* remote system socket: TCP/IP: [name]:[port] */ /* remote system socket: TCP/IP: [name]:[port] */
obj = eo_add(EFL_NETWORK_CONNECTOR_CLASS, NULL, obj = eo_add(EFL_NETWORK_CONNECTOR_CLASS, NULL, efl_network_server_connection_type_set(eoid, compl_type), efl_network_server_name_set(eoid, name), efl_network_base_port_set(eoid, port));
efl_network_server_connection_type_set(compl_type),
efl_network_server_name_set(name),
efl_network_base_port_set(port));
ecore_con_server_data_set(obj, (void *) data); ecore_con_server_data_set(obj, (void *) data);
@ -481,7 +471,7 @@ _efl_network_connector_eo_base_finalize(Ecore_Con_Server *obj, void *pd EINA_UNU
/* XXX: We intentionally put SERVER class here and not connector, as we'd /* XXX: We intentionally put SERVER class here and not connector, as we'd
* like to skip that one. */ * like to skip that one. */
eo_do_super(obj, EFL_NETWORK_SERVER_CLASS, eo_finalize()); eo_finalize(eo_super(obj, EFL_NETWORK_SERVER_CLASS));
svr->use_cert = (compl_type & ECORE_CON_SSL & ECORE_CON_LOAD_CERT) == ECORE_CON_LOAD_CERT; svr->use_cert = (compl_type & ECORE_CON_SSL & ECORE_CON_LOAD_CERT) == ECORE_CON_LOAD_CERT;
svr->disable_proxy = (compl_type & ECORE_CON_SUPER_SSL & ECORE_CON_NO_PROXY) == ECORE_CON_NO_PROXY; svr->disable_proxy = (compl_type & ECORE_CON_SUPER_SSL & ECORE_CON_NO_PROXY) == ECORE_CON_NO_PROXY;
@ -548,7 +538,7 @@ error:
EAPI void EAPI void
ecore_con_server_timeout_set(Ecore_Con *obj, double timeout) ecore_con_server_timeout_set(Ecore_Con *obj, double timeout)
{ {
eo_do((Ecore_Con *)obj, efl_network_base_timeout_set(timeout)); efl_network_base_timeout_set((Ecore_Con *)obj, timeout);
} }
EOLIAN static void EOLIAN static void
@ -565,8 +555,7 @@ _efl_network_server_efl_network_base_timeout_set(Eo *obj, Efl_Network_Server_Dat
EAPI double EAPI double
ecore_con_server_timeout_get(const Ecore_Con *obj) ecore_con_server_timeout_get(const Ecore_Con *obj)
{ {
double ret; return efl_network_base_timeout_get((Ecore_Con *)obj);
return eo_do_ret((Ecore_Con *)obj, ret, efl_network_base_timeout_get());
} }
EOLIAN static double EOLIAN static double
@ -619,8 +608,7 @@ ecore_con_server_data_set(Ecore_Con_Server *obj,
EAPI Eina_Bool EAPI Eina_Bool
ecore_con_server_connected_get(const Ecore_Con *obj) ecore_con_server_connected_get(const Ecore_Con *obj)
{ {
Eina_Bool ret; return efl_network_base_connected_get((Ecore_Con *)obj);
return eo_do_ret((Ecore_Con *)obj, ret, efl_network_base_connected_get());
} }
EOLIAN static Eina_Bool EOLIAN static Eina_Bool
@ -669,8 +657,7 @@ _efl_network_server_name_get(Eo *obj EINA_UNUSED, Efl_Network_Server_Data *svr)
EAPI int EAPI int
ecore_con_server_port_get(const Ecore_Con *obj) ecore_con_server_port_get(const Ecore_Con *obj)
{ {
int ret; return efl_network_base_port_get((Ecore_Con *)obj);
return eo_do_ret((Ecore_Con *)obj, ret, efl_network_base_port_get());
} }
EOLIAN static void EOLIAN static void
@ -690,8 +677,7 @@ _efl_network_server_efl_network_base_port_get(Eo *obj EINA_UNUSED, Efl_Network_S
EAPI int EAPI int
ecore_con_server_send(Ecore_Con *obj, const void *data, int size) ecore_con_server_send(Ecore_Con *obj, const void *data, int size)
{ {
int ret; return efl_network_base_send((Ecore_Con *)obj, data, size);
return eo_do_ret((Ecore_Con *)obj, ret, efl_network_base_send(data, size));
} }
EOLIAN static int EOLIAN static int
@ -747,8 +733,7 @@ _efl_network_server_client_limit_get(Eo *obj EINA_UNUSED, Efl_Network_Server_Dat
EAPI const char * EAPI const char *
ecore_con_server_ip_get(const Ecore_Con *obj) ecore_con_server_ip_get(const Ecore_Con *obj)
{ {
const char *ret; return efl_network_base_ip_get(obj);
return eo_do_ret(obj, ret, efl_network_base_ip_get());
} }
EOLIAN static const char * EOLIAN static const char *
@ -760,8 +745,7 @@ _efl_network_server_efl_network_base_ip_get(Eo *obj EINA_UNUSED, Efl_Network_Ser
EAPI double EAPI double
ecore_con_server_uptime_get(const Ecore_Con *obj) ecore_con_server_uptime_get(const Ecore_Con *obj)
{ {
double ret; return efl_network_base_uptime_get(obj);
return eo_do_ret(obj, ret, efl_network_base_uptime_get());
} }
EOLIAN static double EOLIAN static double
@ -773,7 +757,7 @@ _efl_network_server_efl_network_base_uptime_get(Eo *obj EINA_UNUSED, Efl_Network
EAPI void EAPI void
ecore_con_server_flush(Ecore_Con *obj) ecore_con_server_flush(Ecore_Con *obj)
{ {
eo_do((Ecore_Con *)obj, efl_network_base_flush()); efl_network_base_flush((Ecore_Con *)obj);
} }
EOLIAN static void EOLIAN static void
@ -802,8 +786,7 @@ _efl_network_server_efl_network_base_flush(Eo *obj, Efl_Network_Server_Data *svr
EAPI int EAPI int
ecore_con_client_send(Ecore_Con *obj, const void *data, int size) ecore_con_client_send(Ecore_Con *obj, const void *data, int size)
{ {
int ret; return efl_network_base_send((Ecore_Con *)obj, data, size);
return eo_do_ret((Ecore_Con *)obj, ret, efl_network_base_send(data, size));
} }
EOLIAN static int EOLIAN static int
@ -870,8 +853,7 @@ _efl_network_client_efl_network_base_connected_get(Eo *obj EINA_UNUSED, Efl_Netw
EAPI Eina_Bool EAPI Eina_Bool
ecore_con_client_connected_get(const Ecore_Con *obj) ecore_con_client_connected_get(const Ecore_Con *obj)
{ {
Eina_Bool ret; return efl_network_base_connected_get((Ecore_Con *)obj);
return eo_do_ret((Ecore_Con *)obj, ret, efl_network_base_connected_get());
} }
EOLIAN static void EOLIAN static void
@ -885,7 +867,7 @@ _efl_network_client_efl_network_base_timeout_set(Eo *obj, Efl_Network_Client_Dat
EAPI void EAPI void
ecore_con_client_timeout_set(Ecore_Con *obj, double timeout) ecore_con_client_timeout_set(Ecore_Con *obj, double timeout)
{ {
eo_do((Ecore_Con *)obj, efl_network_base_timeout_set(timeout)); efl_network_base_timeout_set((Ecore_Con *)obj, timeout);
} }
EOLIAN static double EOLIAN static double
@ -897,8 +879,7 @@ _efl_network_client_efl_network_base_timeout_get(Eo *obj EINA_UNUSED, Efl_Networ
EAPI double EAPI double
ecore_con_client_timeout_get(const Ecore_Con *obj) ecore_con_client_timeout_get(const Ecore_Con *obj)
{ {
double ret; return efl_network_base_timeout_get((Ecore_Con *)obj);
return eo_do_ret((Ecore_Con *)obj, ret, efl_network_base_timeout_get());
} }
EAPI void * EAPI void *
@ -949,8 +930,7 @@ _efl_network_client_efl_network_base_ip_get(Eo *obj EINA_UNUSED, Efl_Network_Cli
EAPI const char * EAPI const char *
ecore_con_client_ip_get(const Ecore_Con *obj) ecore_con_client_ip_get(const Ecore_Con *obj)
{ {
const char *ret; return efl_network_base_ip_get(obj);
return eo_do_ret(obj, ret, efl_network_base_ip_get());
} }
EOLIAN static int EOLIAN static int
@ -977,8 +957,7 @@ _efl_network_client_efl_network_base_port_get(Eo *obj EINA_UNUSED, Efl_Network_C
EAPI int EAPI int
ecore_con_client_port_get(const Ecore_Con *obj) ecore_con_client_port_get(const Ecore_Con *obj)
{ {
int ret; return efl_network_base_port_get((Ecore_Con *)obj);
return eo_do_ret((Ecore_Con *)obj, ret, efl_network_base_port_get());
} }
EOLIAN static double EOLIAN static double
@ -990,8 +969,7 @@ _efl_network_client_efl_network_base_uptime_get(Eo *obj EINA_UNUSED, Efl_Network
EAPI double EAPI double
ecore_con_client_uptime_get(const Ecore_Con *obj) ecore_con_client_uptime_get(const Ecore_Con *obj)
{ {
double ret; return efl_network_base_uptime_get(obj);
return eo_do_ret(obj, ret, efl_network_base_uptime_get());
} }
EOLIAN static void EOLIAN static void
@ -1003,14 +981,13 @@ _efl_network_client_efl_network_base_flush(Eo *obj, Efl_Network_Client_Data *cl
EAPI void EAPI void
ecore_con_client_flush(Ecore_Con *obj) ecore_con_client_flush(Ecore_Con *obj)
{ {
eo_do((Ecore_Con *)obj, efl_network_base_flush()); efl_network_base_flush((Ecore_Con *)obj);
} }
EAPI int EAPI int
ecore_con_server_fd_get(const Ecore_Con *obj) ecore_con_server_fd_get(const Ecore_Con *obj)
{ {
int ret; return efl_network_base_fd_get((Ecore_Con *)obj);
return eo_do_ret((Ecore_Con *)obj, ret, efl_network_base_fd_get());
} }
EOLIAN static int EOLIAN static int
@ -1030,8 +1007,7 @@ _efl_network_client_efl_network_base_fd_get(Eo *obj EINA_UNUSED, Efl_Network_Cli
EAPI int EAPI int
ecore_con_client_fd_get(const Ecore_Con *obj) ecore_con_client_fd_get(const Ecore_Con *obj)
{ {
int ret; return efl_network_base_fd_get((Ecore_Con *)obj);
return eo_do_ret((Ecore_Con *)obj, ret, efl_network_base_fd_get());
} }
/** /**
@ -1077,7 +1053,7 @@ ecore_con_event_server_add(Ecore_Con_Server *obj)
if (svr->upgrade) ev = ECORE_CON_EVENT_SERVER_UPGRADE; if (svr->upgrade) ev = ECORE_CON_EVENT_SERVER_UPGRADE;
ecore_event_add(ev, e, ecore_event_add(ev, e,
_ecore_con_event_server_add_free, NULL); _ecore_con_event_server_add_free, NULL);
eo_do(obj, eo_event_callback_call(EFL_NETWORK_BASE_EVENT_CONNECTION_UPGRADED, NULL)); eo_event_callback_call(obj, EFL_NETWORK_BASE_EVENT_CONNECTION_UPGRADED, NULL);
_ecore_con_event_count++; _ecore_con_event_count++;
} }
@ -1156,7 +1132,7 @@ ecore_con_event_server_data(Ecore_Con_Server *obj, unsigned char *buf, int num,
Ecore_Con_Event_Data_Received event_info = { NULL, 0 }; Ecore_Con_Event_Data_Received event_info = { NULL, 0 };
event_info.data = e->data; event_info.data = e->data;
event_info.size = e->size; event_info.size = e->size;
eo_do(obj, eo_event_callback_call(EFL_NETWORK_BASE_EVENT_DATA_RECEIVED, &event_info)); eo_event_callback_call(obj, EFL_NETWORK_BASE_EVENT_DATA_RECEIVED, &event_info);
} }
_ecore_con_event_count++; _ecore_con_event_count++;
} }
@ -1181,7 +1157,7 @@ ecore_con_event_client_add(Ecore_Con_Client *obj)
if (cl->upgrade) ev = ECORE_CON_EVENT_CLIENT_UPGRADE; if (cl->upgrade) ev = ECORE_CON_EVENT_CLIENT_UPGRADE;
ecore_event_add(ev, e, ecore_event_add(ev, e,
(Ecore_End_Cb)_ecore_con_event_client_add_free, cl->host_server); (Ecore_End_Cb)_ecore_con_event_client_add_free, cl->host_server);
eo_do(obj, eo_event_callback_call(EFL_NETWORK_BASE_EVENT_CONNECTION_UPGRADED, NULL)); eo_event_callback_call(obj, EFL_NETWORK_BASE_EVENT_CONNECTION_UPGRADED, NULL);
_ecore_con_event_count++; _ecore_con_event_count++;
} }
@ -1263,7 +1239,7 @@ ecore_con_event_client_data(Ecore_Con_Client *obj, unsigned char *buf, int num,
Ecore_Con_Event_Data_Received event_info = { NULL, 0 }; Ecore_Con_Event_Data_Received event_info = { NULL, 0 };
event_info.data = e->data; event_info.data = e->data;
event_info.size = e->size; event_info.size = e->size;
eo_do(obj, eo_event_callback_call(EFL_NETWORK_BASE_EVENT_DATA_RECEIVED, &event_info)); eo_event_callback_call(obj, EFL_NETWORK_BASE_EVENT_DATA_RECEIVED, &event_info);
} }
_ecore_con_event_count++; _ecore_con_event_count++;
} }
@ -1289,7 +1265,7 @@ _ecore_con_event_server_error(Ecore_Con_Server *obj, char *error, Eina_Bool dupl
DBG("%s", error); DBG("%s", error);
svr->event_count = eina_list_append(svr->event_count, e); svr->event_count = eina_list_append(svr->event_count, e);
ecore_event_add(ECORE_CON_EVENT_SERVER_ERROR, e, (Ecore_End_Cb)_ecore_con_event_server_error_free, NULL); ecore_event_add(ECORE_CON_EVENT_SERVER_ERROR, e, (Ecore_End_Cb)_ecore_con_event_server_error_free, NULL);
eo_do(obj, eo_event_callback_call(EFL_NETWORK_BASE_EVENT_CONNECTION_ERROR, e->error)); eo_event_callback_call(obj, EFL_NETWORK_BASE_EVENT_CONNECTION_ERROR, e->error);
_ecore_con_event_count++; _ecore_con_event_count++;
} }
@ -1310,7 +1286,7 @@ ecore_con_event_client_error(Ecore_Con_Client *obj, const char *error)
cl->event_count = eina_list_append(cl->event_count, e); cl->event_count = eina_list_append(cl->event_count, e);
host_server->event_count = eina_list_append(host_server->event_count, e); host_server->event_count = eina_list_append(host_server->event_count, e);
ecore_event_add(ECORE_CON_EVENT_CLIENT_ERROR, e, (Ecore_End_Cb)_ecore_con_event_client_error_free, cl->host_server); ecore_event_add(ECORE_CON_EVENT_CLIENT_ERROR, e, (Ecore_End_Cb)_ecore_con_event_client_error_free, cl->host_server);
eo_do(obj, eo_event_callback_call(EFL_NETWORK_BASE_EVENT_CONNECTION_ERROR, e->error)); eo_event_callback_call(obj, EFL_NETWORK_BASE_EVENT_CONNECTION_ERROR, e->error);
_ecore_con_event_count++; _ecore_con_event_count++;
} }
@ -1397,7 +1373,7 @@ _efl_network_server_eo_base_destructor(Eo *obj, Efl_Network_Server_Data *svr)
servers = eina_list_remove(servers, obj); servers = eina_list_remove(servers, obj);
svr->data = NULL; svr->data = NULL;
eo_do_super(obj, EFL_NETWORK_SERVER_CLASS, eo_destructor()); eo_destructor(eo_super(obj, EFL_NETWORK_SERVER_CLASS));
end: end:
return; return;
} }
@ -1460,7 +1436,7 @@ _efl_network_client_eo_base_destructor(Eo *obj, Efl_Network_Client_Data *cl)
eina_stringshare_del(cl->ip); eina_stringshare_del(cl->ip);
cl->data = NULL; cl->data = NULL;
eo_do_super(obj, EFL_NETWORK_CLIENT_CLASS, eo_destructor()); eo_destructor(eo_super(obj, EFL_NETWORK_CLIENT_CLASS));
} }
static Eina_Bool static Eina_Bool

View File

@ -580,7 +580,7 @@ _ecore_con_eet_base_register(Eo *obj EINA_UNUSED, Ecore_Con_Eet_Base_Data *pd, c
EOLIAN static Eo_Base * EOLIAN static Eo_Base *
_ecore_con_eet_server_obj_eo_base_constructor(Eo *obj, Ecore_Con_Eet_Server_Obj_Data *pd EINA_UNUSED) _ecore_con_eet_server_obj_eo_base_constructor(Eo *obj, Ecore_Con_Eet_Server_Obj_Data *pd EINA_UNUSED)
{ {
obj = eo_do_super_ret(obj, ECORE_CON_EET_SERVER_OBJ_CLASS, obj, eo_constructor()); obj = eo_constructor(eo_super(obj, ECORE_CON_EET_SERVER_OBJ_CLASS));
if (!obj) return NULL; if (!obj) return NULL;
@ -615,13 +615,13 @@ _ecore_con_eet_server_obj_eo_base_destructor(Eo *obj, Ecore_Con_Eet_Server_Obj_D
ecore_event_handler_del(pd->handler_del); ecore_event_handler_del(pd->handler_del);
ecore_event_handler_del(pd->handler_data); ecore_event_handler_del(pd->handler_data);
eo_do_super(obj, ECORE_CON_EET_SERVER_OBJ_CLASS, eo_destructor()); eo_destructor(eo_super(obj, ECORE_CON_EET_SERVER_OBJ_CLASS));
} }
EOLIAN static Eo_Base * EOLIAN static Eo_Base *
_ecore_con_eet_client_obj_eo_base_constructor(Eo *obj, Ecore_Con_Eet_Client_Obj_Data *pd EINA_UNUSED) _ecore_con_eet_client_obj_eo_base_constructor(Eo *obj, Ecore_Con_Eet_Client_Obj_Data *pd EINA_UNUSED)
{ {
obj = eo_do_super_ret(obj, ECORE_CON_EET_CLIENT_OBJ_CLASS, obj, eo_constructor()); obj = eo_constructor(eo_super(obj, ECORE_CON_EET_CLIENT_OBJ_CLASS));
if (!obj) return NULL; if (!obj) return NULL;
@ -654,13 +654,13 @@ _ecore_con_eet_client_obj_eo_base_destructor(Eo *obj, Ecore_Con_Eet_Client_Obj_D
ecore_event_handler_del(pd->handler_del); ecore_event_handler_del(pd->handler_del);
ecore_event_handler_del(pd->handler_data); ecore_event_handler_del(pd->handler_data);
eo_do_super(obj, ECORE_CON_EET_CLIENT_OBJ_CLASS, eo_destructor()); eo_destructor(eo_super(obj, ECORE_CON_EET_CLIENT_OBJ_CLASS));
} }
EOLIAN static Eo_Base * EOLIAN static Eo_Base *
_ecore_con_eet_base_eo_base_constructor(Eo *obj, Ecore_Con_Eet_Base_Data *pd) _ecore_con_eet_base_eo_base_constructor(Eo *obj, Ecore_Con_Eet_Base_Data *pd)
{ {
obj = eo_do_super_ret(obj, ECORE_CON_EET_BASE_CLASS, obj, eo_constructor()); obj = eo_constructor(eo_super(obj, ECORE_CON_EET_BASE_CLASS));
if (!obj) return NULL; if (!obj) return NULL;
@ -675,7 +675,7 @@ _ecore_con_eet_base_eo_base_constructor(Eo *obj, Ecore_Con_Eet_Base_Data *pd)
EOLIAN static void EOLIAN static void
_ecore_con_eet_base_eo_base_destructor(Eo *obj, Ecore_Con_Eet_Base_Data *pd) _ecore_con_eet_base_eo_base_destructor(Eo *obj, Ecore_Con_Eet_Base_Data *pd)
{ {
eo_do_super(obj, ECORE_CON_EET_BASE_CLASS, eo_destructor()); eo_destructor(eo_super(obj, ECORE_CON_EET_BASE_CLASS));
eet_data_descriptor_free(pd->edd); eet_data_descriptor_free(pd->edd);
eet_data_descriptor_free(pd->matching); eet_data_descriptor_free(pd->matching);
@ -722,8 +722,7 @@ ecore_con_eet_server_new(Ecore_Con_Server *server)
if (!server) return NULL; if (!server) return NULL;
ece_obj = eo_add(ECORE_CON_EET_SERVER_OBJ_CLASS, NULL, ece_obj = eo_add(ECORE_CON_EET_SERVER_OBJ_CLASS, NULL, ecore_con_eet_base_server_set(eoid, server));
ecore_con_eet_base_server_set(server));
return ece_obj; return ece_obj;
} }
@ -735,8 +734,7 @@ ecore_con_eet_client_new(Ecore_Con_Server *server)
if (!server) return NULL; if (!server) return NULL;
ece_obj = eo_add(ECORE_CON_EET_CLIENT_OBJ_CLASS, NULL, ece_obj = eo_add(ECORE_CON_EET_CLIENT_OBJ_CLASS, NULL, ecore_con_eet_base_server_set(eoid, server));
ecore_con_eet_base_server_set(server));
return ece_obj; return ece_obj;
} }
@ -750,31 +748,31 @@ ecore_con_eet_server_free(Ecore_Con_Eet *r)
EAPI void EAPI void
ecore_con_eet_register(Ecore_Con_Eet *ece, const char *name, Eet_Data_Descriptor *edd) ecore_con_eet_register(Ecore_Con_Eet *ece, const char *name, Eet_Data_Descriptor *edd)
{ {
eo_do(ece, ecore_con_eet_base_register(name, edd)); ecore_con_eet_base_register(ece, name, edd);
} }
EAPI void EAPI void
ecore_con_eet_data_callback_add(Ecore_Con_Eet *ece, const char *name, Ecore_Con_Eet_Data_Cb func, const void *data) ecore_con_eet_data_callback_add(Ecore_Con_Eet *ece, const char *name, Ecore_Con_Eet_Data_Cb func, const void *data)
{ {
eo_do(ece, ecore_con_eet_base_data_callback_set(name, func, data)); ecore_con_eet_base_data_callback_set(ece, name, func, data);
} }
EAPI void EAPI void
ecore_con_eet_data_callback_del(Ecore_Con_Eet *ece, const char *name) ecore_con_eet_data_callback_del(Ecore_Con_Eet *ece, const char *name)
{ {
eo_do(ece, ecore_con_eet_base_data_callback_del(name)); ecore_con_eet_base_data_callback_del(ece, name);
} }
EAPI void EAPI void
ecore_con_eet_raw_data_callback_add(Ecore_Con_Eet *ece, const char *name, Ecore_Con_Eet_Raw_Data_Cb func, const void *data) ecore_con_eet_raw_data_callback_add(Ecore_Con_Eet *ece, const char *name, Ecore_Con_Eet_Raw_Data_Cb func, const void *data)
{ {
eo_do(ece, ecore_con_eet_base_raw_data_callback_set(name, func, data)); ecore_con_eet_base_raw_data_callback_set(ece, name, func, data);
} }
EAPI void EAPI void
ecore_con_eet_raw_data_callback_del(Ecore_Con_Eet *ece, const char *name) ecore_con_eet_raw_data_callback_del(Ecore_Con_Eet *ece, const char *name)
{ {
eo_do(ece, ecore_con_eet_base_raw_data_callback_del(name)); ecore_con_eet_base_raw_data_callback_del(ece, name);
} }
EAPI void EAPI void
@ -920,15 +918,13 @@ ecore_con_eet_server_disconnect_callback_del(Ecore_Con_Eet *ece, Ecore_Con_Eet_S
EAPI void EAPI void
ecore_con_eet_data_set(Ecore_Con_Eet *ece, const void *data) ecore_con_eet_data_set(Ecore_Con_Eet *ece, const void *data)
{ {
eo_do(ece,eo_key_data_set(ECORE_CON_EET_DATA_KEY, data)); eo_key_data_set(ece, ECORE_CON_EET_DATA_KEY, data);
} }
EAPI const void * EAPI const void *
ecore_con_eet_data_get(Ecore_Con_Eet *ece) ecore_con_eet_data_get(Ecore_Con_Eet *ece)
{ {
const void *temp; return eo_key_data_get(ece, ECORE_CON_EET_DATA_KEY);
return eo_do_ret(ece, temp, eo_key_data_get(ECORE_CON_EET_DATA_KEY));
} }
EAPI Ecore_Con_Eet * EAPI Ecore_Con_Eet *
@ -941,15 +937,13 @@ ecore_con_eet_reply(Ecore_Con_Reply *reply)
EAPI void EAPI void
ecore_con_eet_send(Ecore_Con_Reply *reply, const char *name, void *value) ecore_con_eet_send(Ecore_Con_Reply *reply, const char *name, void *value)
{ {
eo_do(reply->ece, ecore_con_eet_base_send(reply, name, value)); ecore_con_eet_base_send(reply->ece, reply, name, value);
} }
EAPI void EAPI void
ecore_con_eet_raw_send(Ecore_Con_Reply *reply, const char *protocol_name, const char *section, void *value, unsigned int length) ecore_con_eet_raw_send(Ecore_Con_Reply *reply, const char *protocol_name, const char *section, void *value, unsigned int length)
{ {
eo_do(reply->ece, ecore_con_eet_base_raw_send(reply->ece, reply, protocol_name, section, value, length);
ecore_con_eet_base_raw_send(reply, protocol_name, section, value,
length));
} }
#include "ecore_con_eet_base.eo.c" #include "ecore_con_eet_base.eo.c"

View File

@ -5,7 +5,7 @@ EAPI Eina_Bool
ecore_con_url_url_set(Ecore_Con_Url *obj, const char *url) ecore_con_url_url_set(Ecore_Con_Url *obj, const char *url)
{ {
Eina_Bool ret; Eina_Bool ret;
eo_do((Ecore_Con_Url *)obj, ret = efl_network_url_set(url)); ret = efl_network_url_set((Ecore_Con_Url *)obj, url);
return ret; return ret;
} }
@ -13,7 +13,7 @@ EAPI const char *
ecore_con_url_url_get(const Ecore_Con_Url *obj) ecore_con_url_url_get(const Ecore_Con_Url *obj)
{ {
const char * ret; const char * ret;
eo_do((Ecore_Con_Url *)obj, ret = efl_network_url_get()); ret = efl_network_url_get((Ecore_Con_Url *)obj);
return ret; return ret;
} }

View File

@ -225,12 +225,9 @@ EAPI Ecore_Con_Url *
ecore_con_url_new(const char *url) ecore_con_url_new(const char *url)
{ {
Ecore_Con_Url *url_obj; Ecore_Con_Url *url_obj;
url_obj = eo_add(EFL_NETWORK_URL_CLASS, NULL, url_obj = eo_add(EFL_NETWORK_URL_CLASS, NULL, efl_network_url_set(eoid, url));
efl_network_url_set(url));
eo_do(url_obj, eo_event_callback_array_add(url_obj, efl_network_url_event_table_callbacks(), NULL);
eo_event_callback_array_add(efl_network_url_event_table_callbacks(),
NULL));
return url_obj; return url_obj;
} }
@ -238,7 +235,7 @@ ecore_con_url_new(const char *url)
EOLIAN static Eo * EOLIAN static Eo *
_efl_network_url_eo_base_constructor(Efl_Network_Url *url_obj, Efl_Network_Url_Data *url_con EINA_UNUSED) _efl_network_url_eo_base_constructor(Efl_Network_Url *url_obj, Efl_Network_Url_Data *url_con EINA_UNUSED)
{ {
url_obj = eo_do_super_ret(url_obj, MY_CLASS, url_obj, eo_constructor()); url_obj = eo_constructor(eo_super(url_obj, MY_CLASS));
if (!_init_count || !_c_init()) if (!_init_count || !_c_init())
{ {
@ -338,7 +335,7 @@ _efl_network_url_eo_base_finalize(Efl_Network_Url *url_obj, Efl_Network_Url_Data
*/ */
_c->curl_easy_setopt(url_con->curl_easy, CURLOPT_CONNECTTIMEOUT, 30); _c->curl_easy_setopt(url_con->curl_easy, CURLOPT_CONNECTTIMEOUT, 30);
_c->curl_easy_setopt(url_con->curl_easy, CURLOPT_FOLLOWLOCATION, 1); _c->curl_easy_setopt(url_con->curl_easy, CURLOPT_FOLLOWLOCATION, 1);
return eo_do_super_ret(url_obj, MY_CLASS, url_obj, eo_finalize()); return eo_finalize(eo_super(url_obj, MY_CLASS));
} }
EAPI Ecore_Con_Url * EAPI Ecore_Con_Url *
@ -375,9 +372,7 @@ ecore_con_url_free(Ecore_Con_Url *url_obj)
if (!eo_isa(url_obj, EFL_NETWORK_URL_CLASS)) if (!eo_isa(url_obj, EFL_NETWORK_URL_CLASS))
return; return;
eo_do(url_obj, eo_event_callback_array_del(url_obj, efl_network_url_event_table_callbacks(), NULL);
eo_event_callback_array_del(efl_network_url_event_table_callbacks(),
NULL));
eo_del(url_obj); eo_del(url_obj);
} }
@ -400,7 +395,7 @@ _ecore_con_url_free_internal(Ecore_Con_Url *url_obj)
EOLIAN static void EOLIAN static void
_efl_network_url_eo_base_destructor(Efl_Network_Url *url_obj, Efl_Network_Url_Data *url_con) _efl_network_url_eo_base_destructor(Efl_Network_Url *url_obj, Efl_Network_Url_Data *url_con)
{ {
eo_do_super(url_obj, MY_CLASS, eo_destructor()); eo_destructor(eo_super(url_obj, MY_CLASS));
if (!_c) return; if (!_c) return;
if (url_con->curl_easy) if (url_con->curl_easy)
@ -1145,7 +1140,7 @@ _ecore_con_url_event_url_complete(Ecore_Con_Url *url_obj, CURLMsg *curlmsg)
e.status = status; e.status = status;
e.url_con = url_obj; e.url_con = url_obj;
url_con->event_count++; url_con->event_count++;
eo_do(url_obj, eo_event_callback_call(EFL_NETWORK_URL_EVENT_COMPLETE, &e)); eo_event_callback_call(url_obj, EFL_NETWORK_URL_EVENT_COMPLETE, &e);
} }
static void static void
@ -1206,7 +1201,7 @@ _ecore_con_url_data_cb(void *buffer, size_t size, size_t nitems, void *userp)
e.size = real_size; e.size = real_size;
e.data = buffer; e.data = buffer;
url_con->event_count++; url_con->event_count++;
eo_do(url_obj, eo_event_callback_call(EFL_NETWORK_URL_EVENT_DATA, &e)); eo_event_callback_call(url_obj, EFL_NETWORK_URL_EVENT_DATA, &e);
} }
else else
{ {
@ -1265,7 +1260,7 @@ _ecore_con_url_progress_cb(void *clientp, double dltotal, double dlnow, double u
e.up.total = ultotal; e.up.total = ultotal;
e.up.now = ulnow; e.up.now = ulnow;
url_con->event_count++; url_con->event_count++;
eo_do(url_obj, eo_event_callback_call(EFL_NETWORK_URL_EVENT_PROGRESS, &e)); eo_event_callback_call(url_obj, EFL_NETWORK_URL_EVENT_PROGRESS, &e);
return 0; return 0;
} }

View File

@ -3087,7 +3087,7 @@ ecore_evas_animator_tick(Ecore_Evas *ee, Eina_Rectangle *viewport)
a.update_area = *viewport; a.update_area = *viewport;
} }
eo_do(ee->evas, eo_event_callback_call(EFL_CORE_ANIMATOR_EVENT_ANIMATOR_TICK, &a)); eo_event_callback_call(ee->evas, EFL_CORE_ANIMATOR_EVENT_ANIMATOR_TICK, &a);
// FIXME: We do not support partial animator in the subcanvas // FIXME: We do not support partial animator in the subcanvas
EINA_LIST_FOREACH(ee->sub_ecore_evas, l, subee) EINA_LIST_FOREACH(ee->sub_ecore_evas, l, subee)
@ -3219,7 +3219,7 @@ _ecore_evas_register(Ecore_Evas *ee)
ecore_evases = (Ecore_Evas *)eina_inlist_prepend ecore_evases = (Ecore_Evas *)eina_inlist_prepend
(EINA_INLIST_GET(ecore_evases), EINA_INLIST_GET(ee)); (EINA_INLIST_GET(ecore_evases), EINA_INLIST_GET(ee));
eo_do(ee->evas, eo_event_callback_array_add(animator_watch(), ee)); eo_event_callback_array_add(ee->evas, animator_watch(), ee);
#ifdef RENDER_SYNC #ifdef RENDER_SYNC
ecore_evas_first = EINA_TRUE; ecore_evas_first = EINA_TRUE;

View File

@ -65,7 +65,7 @@ _ector_cairo_symbol_get(Ector_Renderer_Generic_Base_Data *base,
{ {
void *sym; void *sym;
eo_do(base->surface, sym = ector_cairo_surface_symbol_get(name)); sym = ector_cairo_surface_symbol_get(base->surface, name);
return sym; return sym;
} }

View File

@ -18,8 +18,7 @@ _ector_cairo_symbol_get(Eo *ector_surface, const char *name)
{ {
void *sym; void *sym;
eo_do(ector_surface, sym = ector_cairo_surface_symbol_get(ector_surface, name);
sym = ector_cairo_surface_symbol_get(name));
return sym; return sym;
} }
@ -74,9 +73,7 @@ _ector_cairo_software_surface_ector_generic_buffer_pixels_set(Eo *obj, Ector_Cai
cairo_surface_destroy(pd->surface); cairo_surface_destroy(pd->surface);
pd->surface = NULL; pd->surface = NULL;
eo_do_super(obj, MY_CLASS, ok = ector_buffer_pixels_set(eo_super(obj, MY_CLASS), pixels, width, height, stride, cspace, writable, l, r, t, b);
ok = ector_buffer_pixels_set(pixels, width, height, stride,
cspace, writable, l, r, t, b));
if (ok && pixels) if (ok && pixels)
{ {
@ -90,7 +87,7 @@ _ector_cairo_software_surface_ector_generic_buffer_pixels_set(Eo *obj, Ector_Cai
end: end:
/* evas_common_cpu_end_opt(); // do we need this? */ /* evas_common_cpu_end_opt(); // do we need this? */
eo_do(obj, ector_cairo_surface_context_set(ctx)); ector_cairo_surface_context_set(obj, ctx);
return ok; return ok;
} }
@ -105,7 +102,7 @@ _ector_cairo_software_surface_surface_get(Eo *obj EINA_UNUSED, Ector_Cairo_Softw
static Eo_Base * static Eo_Base *
_ector_cairo_software_surface_eo_base_constructor(Eo *obj, Ector_Cairo_Software_Surface_Data *pd) _ector_cairo_software_surface_eo_base_constructor(Eo *obj, Ector_Cairo_Software_Surface_Data *pd)
{ {
eo_do_super(obj, MY_CLASS, obj = eo_constructor()); obj = eo_constructor(eo_super(obj, MY_CLASS));
if (!obj) return NULL; if (!obj) return NULL;
pd->base = eo_data_ref(obj, ECTOR_SOFTWARE_BUFFER_BASE_MIXIN); pd->base = eo_data_ref(obj, ECTOR_SOFTWARE_BUFFER_BASE_MIXIN);
@ -118,7 +115,7 @@ EOLIAN static void
_ector_cairo_software_surface_eo_base_destructor(Eo *obj, Ector_Cairo_Software_Surface_Data *pd) _ector_cairo_software_surface_eo_base_destructor(Eo *obj, Ector_Cairo_Software_Surface_Data *pd)
{ {
eo_data_unref(obj, pd->base); eo_data_unref(obj, pd->base);
eo_do_super(obj, MY_CLASS, eo_destructor()); eo_destructor(eo_super(obj, MY_CLASS));
} }
#include "ector_cairo_software_surface.eo.c" #include "ector_cairo_software_surface.eo.c"

View File

@ -62,14 +62,11 @@ _ector_cairo_surface_ector_generic_surface_renderer_factory_new(Eo *obj,
const Eo_Class *type) const Eo_Class *type)
{ {
if (type == ECTOR_RENDERER_GENERIC_SHAPE_MIXIN) if (type == ECTOR_RENDERER_GENERIC_SHAPE_MIXIN)
return eo_add(ECTOR_RENDERER_CAIRO_SHAPE_CLASS, NULL, return eo_add(ECTOR_RENDERER_CAIRO_SHAPE_CLASS, NULL, ector_renderer_surface_set(eoid, obj));
ector_renderer_surface_set(obj));
else if (type == ECTOR_RENDERER_GENERIC_GRADIENT_LINEAR_MIXIN) else if (type == ECTOR_RENDERER_GENERIC_GRADIENT_LINEAR_MIXIN)
return eo_add(ECTOR_RENDERER_CAIRO_GRADIENT_LINEAR_CLASS, NULL, return eo_add(ECTOR_RENDERER_CAIRO_GRADIENT_LINEAR_CLASS, NULL, ector_renderer_surface_set(eoid, obj));
ector_renderer_surface_set(obj));
else if (type == ECTOR_RENDERER_GENERIC_GRADIENT_RADIAL_MIXIN) else if (type == ECTOR_RENDERER_GENERIC_GRADIENT_RADIAL_MIXIN)
return eo_add(ECTOR_RENDERER_CAIRO_GRADIENT_RADIAL_CLASS, NULL, return eo_add(ECTOR_RENDERER_CAIRO_GRADIENT_RADIAL_CLASS, NULL, ector_renderer_surface_set(eoid, obj));
ector_renderer_surface_set(obj));
ERR("Couldn't find class for type: %s\n", eo_class_name_get(type)); ERR("Couldn't find class for type: %s\n", eo_class_name_get(type));
return NULL; return NULL;
@ -124,7 +121,7 @@ _ector_cairo_surface_eo_base_constructor(Eo *obj,
USE(obj, cairo_image_surface_create, NULL); USE(obj, cairo_image_surface_create, NULL);
USE(obj, cairo_create, NULL); USE(obj, cairo_create, NULL);
eo_do_super(obj, ECTOR_CAIRO_SURFACE_CLASS, obj = eo_constructor()); obj = eo_constructor(eo_super(obj, ECTOR_CAIRO_SURFACE_CLASS));
if (!obj) return NULL; if (!obj) return NULL;
_cairo_count++; _cairo_count++;
@ -138,7 +135,7 @@ static void
_ector_cairo_surface_eo_base_destructor(Eo *obj EINA_UNUSED, _ector_cairo_surface_eo_base_destructor(Eo *obj EINA_UNUSED,
Ector_Cairo_Surface_Data *pd EINA_UNUSED) Ector_Cairo_Surface_Data *pd EINA_UNUSED)
{ {
eo_do_super(obj, ECTOR_CAIRO_SURFACE_CLASS, eo_destructor()); eo_destructor(eo_super(obj, ECTOR_CAIRO_SURFACE_CLASS));
if (--_cairo_count) return ; if (--_cairo_count) return ;
if (_cairo_so) eina_module_free(_cairo_so); if (_cairo_so) eina_module_free(_cairo_so);

Some files were not shown because too many files have changed in this diff Show More