expand_float_wrap Tcl_Obj* imageObj int ww int hn int we int hs /* * Border expansion by toroidal wrapping, also called cyclic expansion. */ crimp_image* image; crimp_input (imageObj, image, float); /* * This is the simple definition. Might be better to generate macros * specialized to each quadrant. Except, even they have to perform modulo * arithmetic, as the border may be larger than image's width or height, * causing muliple wrapping. */ #define FILL(xo,yo) { \ int xi = xo - ww; \ int yi = yo - hn; \ while (xi < 0) { xi += image->w; } \ while (yi < 0) { yi += image->h; } \ xi %= image->w; \ yi %= image->h; \ \ FLOATP (result, xo, yo) = FLOATP (image, xi, yi); \ } #define COPY(xo,yo,xi,yi) { \ FLOATP (result, xo, yo) = FLOATP (image, xi, yi); \ } #include /* vim: set sts=4 sw=4 tw=80 et ft=c: */ /* * Local Variables: * mode: c * c-basic-offset: 4 * fill-column: 78 * End: */