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, nw, nh; im_data = evas_object_image_data_get(EWL_IMAGE(image_view)->image, FALSE); evas_object_image_size_get(EWL_IMAGE(image_view)->image, &ew, &eh); index = 0; im_data_new = malloc(sizeof(unsigned int) * ew * eh); nw = eh; nh = ew; for (i = 0; i < nh; i++) { for (j = 0; j < nw; j++) { ni = j; nj = nw - i - 1; ind = ni * nh + nj; im_data_new[index] = im_data[ind]; index++; } } evas_object_image_size_set(EWL_IMAGE(image_view)->image, nw, nh); 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, nw, nh); ewl_image_size_set(EWL_IMAGE(image_view), nw, nh); ewl_widget_configure(ibox);