void rotate_left(Ewl_Widget *w, void *event, void *data) { unsigned int *im_data, *im_data_new; int index, ind, i, j, ni, nj, ew, eh; im_data = evas_object_image_data_get(EWL_IMAGE(image_view)->image, FALSE); ewl_object_current_size_get(EWL_OBJECT(image_view), &ew, &eh); im_data = malloc(sizeof(unsigned int) * ew * eh); index = 0; for (i = 0; i < eh; i++) { for (j = 0; j < ew; j++) { ni = j; nj = eh - i - 1; ind = ni * ew + nj; im_data_new[index] = im_data[ind]; index++; } } evas_object_image_size_set(EWL_IMAGE(image_view)->image, ew, eh); evas_object_image_data_set(EWL_IMAGE(image_view)->image, im_data_new); evas_object_image_data_update_add(EWL_IMAGE(image_view)->image, 0, 0, ew, eh); }