diff options
Diffstat (limited to 'x11/xzoom/files/patch-ab')
-rw-r--r-- | x11/xzoom/files/patch-ab | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/x11/xzoom/files/patch-ab b/x11/xzoom/files/patch-ab new file mode 100644 index 000000000000..46728bbc46f1 --- /dev/null +++ b/x11/xzoom/files/patch-ab @@ -0,0 +1,105 @@ +--- scale.h.orig Sat Jan 15 14:23:58 2000 ++++ scale.h Sat Jan 15 00:00:00 2000 +@@ -0,0 +1,102 @@ ++/* scale image from SRC to DST - parameterized by type T */ ++ ++/* get pixel address of point (x,y) in image t */ ++#define getP(t,x,y) \ ++ (T *) (&ximage[t]->data[(ximage[t]->xoffset+(x))*sizeof(T) + \ ++ (y)*ximage[t]->bytes_per_line]) ++ ++{ ++ int i, j, k; ++ ++ /* copy scaled lines from SRC to DST */ ++ j = flipxy ? width[SRC] - 1 : height[SRC] - 1; ++ do { ++ T *p1; ++ T *p2; ++ int p2step; ++ T *p1_save; ++ ++ /* p1 point to begining of scanline j*magy in DST */ ++ p1 = getP(DST,0,j*magy); ++ p1_save = p1; ++ /* p2 point to begining of scanline j in SRC */ ++ /* if flipy then line height[SRC]-1-j */ ++ p2 = getP(SRC,0,flipy ? (height[SRC]-1-j) : j); ++ ++ if (flipxy) ++ { ++ p2 = getP(SRC,flipy ? j : (width[SRC]-1-j),0); ++ p2step = ximage[SRC]->bytes_per_line / sizeof(T); ++ ++ if (flipx) ++ { ++ p2 += p2step * (height[SRC]-1); ++ p2step = -p2step; ++ } ++ ++ i = height[SRC]; ++ do { ++ T c = *p2; p2 += p2step; ++ k = magx; do *p1++ = c; while (--k > 0); ++ } while (--i > 0); ++ } ++ else if (flipx) ++ { ++ p2 += width[SRC]; ++ i = width[SRC]; ++ do { ++ T c = *--p2; ++ k = magx; do *p1++ = c; while (--k > 0); ++ } while (--i > 0); ++ } ++ else ++ { ++ i = width[SRC]; ++ do { ++ T c = *p2++; ++ k = magx; do *p1++ = c; while (--k > 0); ++ } while (--i > 0); ++ } ++ ++ /* draw vertical grid */ ++ if (gridy && magx >= 2) ++ { ++ p1 = p1_save - 1; ++ i = magx; ++ k = flipxy ? height[SRC] : width[SRC]; ++ do { ++ p1 += i; ++ *p1 ^= ~((T)0); ++ } while (--k > 0); ++ } ++ ++ /* duplicate that line as needed */ ++ if (magy > 1) ++ { ++ /* p1 point to begining of scanline j*magy in DST */ ++ p1 = p1_save; ++ /* p2 points to begining of next line */ ++ p2 = p1; ++ p2step = ximage[DST]->bytes_per_line / sizeof(T); ++ ++ i = width[DST] * sizeof(T); ++ k = magy - 1; ++ do { ++ p2 += p2step; ++ memcpy(p2, p1, i); ++ } while (--k > 0); ++ ++ /* draw horizontal grid */ ++ if (gridx && magy >= 2) ++ { ++ k = width[DST]; ++ do { ++ *p2++ ^= ~((T)0); ++ } while (--k > 0); ++ } ++ } ++ } while (--j >= 0); ++} ++ ++#undef getP ++ |