rel1 { relative: 0.5 0.0; offset: 0 0; // vertical offset to: "middle"; } rel2 { relative: 1.0 1.0; offset: 0 0; // horizontal offset to: "middle"; } //relative: 0.0 0.0; // center //relative: 1.0 1.0; //relative: 0.0 1.0; // bottm right //relative: 0.0 1.0; //relative: 1.0 0.0; // center //relative: 0.0 1.0; //relative: 0.0 1.1; // center right //relative: 0.0 0.0; //relative: 0.1 1.0; // center right //relative: 0.0 0.0; //relative: 0.0 1.0; // center right //relative: 0.1 0.1; //relative: 0.0 0.0; // top left //relative: 0.1 0.1; //relative: 0.0 0.0; // top center //relative: 1.0 0.1; //relative: 1.1 1.1; // top right ! bottom left quad //relative: 0.1 0.1; //relative: 1.1 1.1; // bottm right //relative: 1.1 1.1; // plus offset Add the following code to your theme's collection edc code, if it's shaped: data { item, "shaped" "true"; } Then, in your app's code, use the following to shape the Ecore_Evas if the theme is shaped: ecore_evas_shaped_set (blah, !!edje_object_data_get (edje, "shaped")); Dan noted that this might be a bit confusing, so let's explain it some more ;) The code just checks whether there's a key/value pair present where key = "shaped", it doesn't matter what value it's set too, as long as it's there. So 'item, "shaped" "foobarbaz";' would have worked just as well. Of course you could check for "true" or any other value explicitly, but IMHO there's no real benefit ;) You can have a global data hash and you can have a data hash for each group/collection in the Edje. As I've used edje_object_data_get (Evas_Object*, char *key) in the example, we have to put it in the group section: In EDC: collections { group { name, "my_first_edje"; data { item, "key" "value"; } } }