void attempt_four(int dim, pixel *src, pixel *dst) { if (dim < 256) return naive_rotate(dim, src, dst); int tile_num = 256; int tile_size = dim/tile_num; int i, j, x, y; for (x=0; x<tile_num; x++){ int baseI = x*tile_size; for (y=0; y<tile_num; y++){ int baseJ = y*tile_size; for (i = 0; i < tile_size; i++) for (j = 0; j < tile_size; j++) dst[RIDX(dim-1-baseJ-j, baseI+i, dim)] = src[RIDX(baseI+i, baseJ+j, dim)]; } } }
void rotate(int dim, pixel *src, pixel *dst) { naive_rotate(dim, src, dst); }