unsigned int *im_data, *im_data2, *start, *finish; int ew, eh, nw, nh, i, j; ewl_object_current_size_get(EWL_OBJECT(image_view), &ew, &eh); im_data = evas_object_image_data_get(EWL_IMAGE(image_view)->image, TRUE); im_data2 = malloc((unsigned int) * ew * eh); start = im_data; nw = eh; eh = ew; ew = nw; nh = nw * eh; end = im_data2 + nh - nw; nw = -nw; nh = nh - 1; start = im_data; for (i = ew; --i >= 0;) { for (j = eh; --j >= 0;) { *end = *start; start++; end += nw; } end += nh; } evas_object_image_size_get(EWL_IMAGE(image_view)->image, ew, eh); evas_object_image_data_set(EWL_IMAGE(image_view)->image, im_data2); evas_object_image_data_update_add(EWL_IMAGE(image_view)->image, 0, 0, ew, eh); }