diff --git a/src/lib/visual.cpp b/src/lib/visual.cpp index 9a1db70fe..6284379eb 100644 --- a/src/lib/visual.cpp +++ b/src/lib/visual.cpp @@ -373,18 +373,16 @@ auto ncvisual_rotate(ncvisual* ncv, double rads) -> int { return -1; } memset(data, 0, bbarea * 4); -//fprintf(stderr, "bbarea: %d bby: %d bbx: %d centy: %d centx: %d\n", bbarea, bby, bbx, centy, centx); +//fprintf(stderr, "bbarea: %d bby: %d bbx: %d centy: %d centx: %d bbcenty: %d bbcentx: %d\n", bbarea, bby, bbx, centy, centx, bbcenty, bbcentx); for(int y = 0 ; y < ncv->dstheight ; ++y){ for(int x = 0 ; x < ncv->dstwidth ; ++x){ int targx = x, targy = y; rotate_point(&targy, &targx, stheta, ctheta, centy, centx); - const int deconvx = targx - bboffx/*bbcentx*/; - const int deconvy = targy - bboffy/*bbcenty*/; -if(deconvy < 0 || deconvx < 0 || deconvy >= bby || deconvx >= bbx){ -fprintf(stderr, "NOCOPY %d/%d -> %d/%d -> %d/%d (%dx%d + %dx%d)\n", y, x, targy, targx, deconvy, deconvx, bboffy, bboffx, bby, bbx); -}else{ - data[deconvy * bbx + deconvx] = ncv->data[y * (ncv->rowstride / 4) + x]; -} + const int deconvx = targx - bboffx; + const int deconvy = targy - bboffy; + if(deconvy >= 0 && deconvx >= 0 && deconvy < bby && deconvx < bbx){ + data[deconvy * bbx + deconvx] = ncv->data[y * (ncv->rowstride / 4) + x]; + } // data[deconvy * (ncv->dstwidth) + deconvx] = ncv->data[y * (ncv->rowstride / 4) + x]; //fprintf(stderr, "CW: %d/%d (%08x) -> %d/%d (stride: %d)\n", y, x, ncv->data[y * (ncv->rowstride / 4) + x], targy, targx, ncv->rowstride); //fprintf(stderr, "wrote %08x to %d (%d)\n", data[targy * ncv->dstheight + targx], targy * ncv->dstheight + targx, (targy * ncv->dstheight + targx) * 4);