Some of these functions are internal.
-=over 4
+=over
=cut
*/
{
0, /* channels set */
0, 0, 0, /* xsize, ysize, bytes */
- ~0, /* ch_mask */
+ ~0U, /* ch_mask */
i_8_bits, /* bits */
i_direct_type, /* type */
0, /* virtual */
new_img = i_img_empty_ch(NULL, hsize, vsize, im->channels);
- /* 1.5 is a magic number, setting it to 2 will cause rather blurred images */
+ /* 1.4 is a magic number, setting it to 2 will cause rather blurred images */
LanczosWidthFactor = (Value >= 1) ? 1 : (int) (1.4/Value);
lMax = LanczosWidthFactor << 1;
for (i=0; i<iEnd; i++) {
for (k=0; k<im->channels; k++) PictureValue[k] = 0.0;
- for (l=0; l < lMax; l++) {
- i_gpix(im, T+l+1, i, &val1);
- i_gpix(im, T-lMax+l+1, i, &val2);
+ for (l=0; l<lMax; l++) {
+ int mx = T-lMax+l+1;
+ int Mx = T+l+1;
+ mx = (mx < 0) ? 0 : mx;
+ Mx = (Mx >= im->xsize) ? im->xsize-1 : Mx;
+
+ i_gpix(im, Mx, i, &val1);
+ i_gpix(im, mx, i, &val2);
+
for (k=0; k<im->channels; k++) {
PictureValue[k] += l1[l] * val1.channel[k];
PictureValue[k] += l0[lMax-l-1] * val2.channel[k];
for (i=0; i<iEnd; i++) {
for (k=0; k<im->channels; k++) PictureValue[k] = 0.0;
for (l=0; l < lMax; l++) {
- i_gpix(im, i, T+l+1, &val1);
- i_gpix(im, i, T-lMax+l+1, &val2);
+ int mx = T-lMax+l+1;
+ int Mx = T+l+1;
+ mx = (mx < 0) ? 0 : mx;
+ Mx = (Mx >= im->ysize) ? im->ysize-1 : Mx;
+
+ i_gpix(im, i, Mx, &val1);
+ i_gpix(im, i, mx, &val2);
for (k=0; k<im->channels; k++) {
- PictureValue[k] += l1[l] * val1.channel[k];
+ PictureValue[k] += l1[l] * val1.channel[k];
PictureValue[k] += l0[lMax-l-1] * val2.channel[k];
}
}
for (k=0; k<im->channels; k++) {
- psave = (short)( PictureValue[k] / LanczosWidthFactor);
+ psave = (short)(0.5+(PictureValue[k] / LanczosWidthFactor));
val.channel[k] = minmax(0, 255, psave);
}
i_ppix(new_img, i, j, &val);
=cut
*/
+static
int
i_ppix_d(i_img *im, int x, int y, i_color *val) {
int ch;
=cut
*/
+static
int
i_gpix_d(i_img *im, int x, int y, i_color *val) {
int ch;
val->channel[ch]=im->idata[(x+y*im->xsize)*im->channels+ch];
return 0;
}
+ for(ch=0;ch<im->channels;ch++) val->channel[ch] = 0;
return -1; /* error was cliped */
}
=cut
*/
+static
int
i_glin_d(i_img *im, int l, int r, int y, i_color *vals) {
int ch, count, i;
=cut
*/
+static
int
i_plin_d(i_img *im, int l, int r, int y, i_color *vals) {
int ch, count, i;
=cut
*/
+static
int
i_ppixf_d(i_img *im, int x, int y, i_fcolor *val) {
int ch;
=cut
*/
+static
int
i_gpixf_d(i_img *im, int x, int y, i_fcolor *val) {
int ch;
=cut
*/
+static
int
i_glinf_d(i_img *im, int l, int r, int y, i_fcolor *vals) {
int ch, count, i;
=cut
*/
+static
int
i_plinf_d(i_img *im, int l, int r, int y, i_fcolor *vals) {
int ch, count, i;
=cut
*/
-int i_gsamp_d(i_img *im, int l, int r, int y, i_sample_t *samps,
+static
+int
+i_gsamp_d(i_img *im, int l, int r, int y, i_sample_t *samps,
int *chans, int chan_count) {
int ch, count, i, w;
unsigned char *data;
=cut
*/
-int i_gsampf_d(i_img *im, int l, int r, int y, i_fsample_t *samps,
+static
+int
+i_gsampf_d(i_img *im, int l, int r, int y, i_fsample_t *samps,
int *chans, int chan_count) {
int ch, count, i, w;
unsigned char *data;
/*
=back
+=head1 AUTHOR
+
+Arnar M. Hrafnkelsson <addi@umich.edu>
+
+Tony Cook <tony@develop-help.com>
+
=head1 SEE ALSO
L<Imager>, L<gif.c>