… | |
… | |
635 | nv rmin[2], rmax[2]; |
635 | nv rmin[2], rmax[2]; |
636 | |
636 | |
637 | for (int i = 0; i < 2; ++i) |
637 | for (int i = 0; i < 2; ++i) |
638 | { |
638 | { |
639 | nv v; |
639 | nv v; |
|
|
640 | |
640 | v = mat_apply (matrix, i, 0+x, 0+y); rmin [i] = rmax [i] = v; |
641 | v = mat_apply (matrix, i, 0+x, 0+y); rmin [i] = rmax [i] = v; |
641 | v = mat_apply (matrix, i, w+x, 0+y); min_it (rmin [i], v); max_it (rmax [i], v); |
642 | v = mat_apply (matrix, i, w+x, 0+y); min_it (rmin [i], v); max_it (rmax [i], v); |
642 | v = mat_apply (matrix, i, 0+x, h+y); min_it (rmin [i], v); max_it (rmax [i], v); |
643 | v = mat_apply (matrix, i, 0+x, h+y); min_it (rmin [i], v); max_it (rmax [i], v); |
643 | v = mat_apply (matrix, i, w+x, h+y); min_it (rmin [i], v); max_it (rmax [i], v); |
644 | v = mat_apply (matrix, i, w+x, h+y); min_it (rmin [i], v); max_it (rmax [i], v); |
644 | } |
645 | } |
645 | |
646 | |
|
|
647 | // TODO: adjust matrix for subpixel accuracy |
646 | int dx = floor (rmin [0]); |
648 | int dx = floor (rmin [0]); |
647 | int dy = floor (rmin [1]); |
649 | int dy = floor (rmin [1]); |
648 | |
650 | |
649 | int new_width = ceil (rmax [0] - dx); |
651 | int new_width = ceil (rmax [0] - dx); |
650 | int new_height = ceil (rmax [1] - dy); |
652 | int new_height = ceil (rmax [1] - dy); |