Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions src/_imaging.c
Original file line number Diff line number Diff line change
Expand Up @@ -565,7 +565,7 @@ getpixel(Imaging im, ImagingAccess access, int x, int y) {
return PyLong_FromLong(pixel.i);
case IMAGING_TYPE_FLOAT32:
return PyFloat_FromDouble(pixel.f);
case IMAGING_TYPE_SPECIAL:
case IMAGING_TYPE_I16:
return PyLong_FromLong(pixel.h);
}

Expand Down Expand Up @@ -594,7 +594,7 @@ getink(PyObject *color, Imaging im, char *ink) {
color = PyTuple_GetItem(color, 0);
}
if (im->type == IMAGING_TYPE_UINT8 || im->type == IMAGING_TYPE_INT32 ||
im->type == IMAGING_TYPE_SPECIAL) {
im->type == IMAGING_TYPE_I16) {
if (PyLong_Check(color)) {
r = PyLong_AsLongLong(color);
if (r == -1 && PyErr_Occurred()) {
Expand Down Expand Up @@ -682,7 +682,7 @@ getink(PyObject *color, Imaging im, char *ink) {
ftmp = f;
memcpy(ink, &ftmp, sizeof(ftmp));
return ink;
case IMAGING_TYPE_SPECIAL:
case IMAGING_TYPE_I16:
ink[0] = (UINT8)r;
ink[1] = (UINT8)(r >> 8);
ink[2] = ink[3] = 0;
Expand Down Expand Up @@ -1671,7 +1671,7 @@ _putdata(ImagingObject *self, PyObject *args) {
}
double value;
int bigendian = 0;
if (image->type == IMAGING_TYPE_SPECIAL) {
if (image->type == IMAGING_TYPE_I16) {
// I;16*
if (
image->mode == IMAGING_MODE_I_16B
Expand All @@ -1687,7 +1687,7 @@ _putdata(ImagingObject *self, PyObject *args) {
if (scale != 1.0 || offset != 0.0) {
value = value * scale + offset;
}
if (image->type == IMAGING_TYPE_SPECIAL) {
if (image->type == IMAGING_TYPE_I16) {
image->image8[y][x * 2 + (bigendian ? 1 : 0)] =
CLIP8((int)value % 256);
image->image8[y][x * 2 + (bigendian ? 0 : 1)] =
Expand Down Expand Up @@ -2358,7 +2358,7 @@ _getextrema(ImagingObject *self, PyObject *args) {
return Py_BuildValue("ii", extrema.i[0], extrema.i[1]);
case IMAGING_TYPE_FLOAT32:
return Py_BuildValue("dd", extrema.f[0], extrema.f[1]);
case IMAGING_TYPE_SPECIAL:
case IMAGING_TYPE_I16:
if (self->image->mode == IMAGING_MODE_I_16) {
return Py_BuildValue("HH", extrema.s[0], extrema.s[1]);
}
Expand Down
2 changes: 1 addition & 1 deletion src/libImaging/Fill.c
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ ImagingFill(Imaging im, const void *colour) {
int xsize = im->xsize;
int ysize = im->ysize;

if (im->type == IMAGING_TYPE_SPECIAL) {
if (im->type == IMAGING_TYPE_I16) {
/* use generic API */
ImagingAccess access = ImagingAccessNew(im);
if (access) {
Expand Down
19 changes: 9 additions & 10 deletions src/libImaging/Filter.c
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,7 @@ ImagingFilter3x3(Imaging imOut, Imaging im, const float *kernel, float offset) {
}
} else {
int bigendian = 0;
if (im->type == IMAGING_TYPE_SPECIAL) {
if (im->type == IMAGING_TYPE_I16) {
if (
im->mode == IMAGING_MODE_I_16B
#ifdef WORDS_BIGENDIAN
Expand All @@ -173,12 +173,12 @@ ImagingFilter3x3(Imaging imOut, Imaging im, const float *kernel, float offset) {
UINT8 *restrict out = (UINT8 *)imOut->image[y];

out[0] = in0[0];
if (im->type == IMAGING_TYPE_SPECIAL) {
if (im->type == IMAGING_TYPE_I16) {
out[1] = in0[1];
}
for (x = 1; x < xsize - 1; x++) {
float ss = offset;
if (im->type == IMAGING_TYPE_SPECIAL) {
if (im->type == IMAGING_TYPE_I16) {
ss += kernel_i16(3, in1, x, &kernel[0], bigendian);
ss += kernel_i16(3, in0, x, &kernel[3], bigendian);
ss += kernel_i16(3, in_1, x, &kernel[6], bigendian);
Expand All @@ -192,7 +192,7 @@ ImagingFilter3x3(Imaging imOut, Imaging im, const float *kernel, float offset) {
out[x] = clip8(ss);
}
}
if (im->type == IMAGING_TYPE_SPECIAL) {
if (im->type == IMAGING_TYPE_I16) {
out[x * 2] = in0[x * 2];
out[x * 2 + 1] = in0[x * 2 + 1];
} else {
Expand Down Expand Up @@ -316,7 +316,7 @@ ImagingFilter5x5(Imaging imOut, Imaging im, const float *kernel, float offset) {
}
} else {
int bigendian = 0;
if (im->type == IMAGING_TYPE_SPECIAL) {
if (im->type == IMAGING_TYPE_I16) {
if (
im->mode == IMAGING_MODE_I_16B
#ifdef WORDS_BIGENDIAN
Expand All @@ -336,13 +336,13 @@ ImagingFilter5x5(Imaging imOut, Imaging im, const float *kernel, float offset) {

out[0] = in0[0];
out[1] = in0[1];
if (im->type == IMAGING_TYPE_SPECIAL) {
if (im->type == IMAGING_TYPE_I16) {
out[2] = in0[2];
out[3] = in0[3];
}
for (x = 2; x < xsize - 2; x++) {
float ss = offset;
if (im->type == IMAGING_TYPE_SPECIAL) {
if (im->type == IMAGING_TYPE_I16) {
ss += kernel_i16(5, in2, x, &kernel[0], bigendian);
ss += kernel_i16(5, in1, x, &kernel[5], bigendian);
ss += kernel_i16(5, in0, x, &kernel[10], bigendian);
Expand All @@ -360,7 +360,7 @@ ImagingFilter5x5(Imaging imOut, Imaging im, const float *kernel, float offset) {
out[x] = clip8(ss);
}
}
if (im->type == IMAGING_TYPE_SPECIAL) {
if (im->type == IMAGING_TYPE_I16) {
out[x * 2 + 0] = in0[x * 2 + 0];
out[x * 2 + 1] = in0[x * 2 + 1];
out[x * 2 + 2] = in0[x * 2 + 2];
Expand Down Expand Up @@ -470,8 +470,7 @@ ImagingFilter(Imaging im, int xsize, int ysize, const FLOAT32 *kernel, FLOAT32 o
Imaging imOut;
ImagingSectionCookie cookie;

if (im->type == IMAGING_TYPE_FLOAT32 ||
(im->type == IMAGING_TYPE_SPECIAL && im->bands != 1)) {
if (im->type == IMAGING_TYPE_FLOAT32) {
return (Imaging)ImagingError_ModeError();
}

Expand Down
4 changes: 2 additions & 2 deletions src/libImaging/Geometry.c
Original file line number Diff line number Diff line change
Expand Up @@ -713,7 +713,7 @@ getfilter(Imaging im, int filterid) {
switch (im->type) {
case IMAGING_TYPE_UINT8:
return nearest_filter8;
case IMAGING_TYPE_SPECIAL:
case IMAGING_TYPE_I16:
return nearest_filter16;
}
} else {
Expand Down Expand Up @@ -1032,7 +1032,7 @@ ImagingTransformAffine(
return (Imaging)ImagingError_ModeError();
}

if (filterid || imIn->type == IMAGING_TYPE_SPECIAL) {
if (filterid || imIn->type == IMAGING_TYPE_I16) {
return ImagingGenericTransform(
imOut, imIn, x0, y0, x1, y1, affine_transform, a, filterid, fill
);
Expand Down
2 changes: 1 addition & 1 deletion src/libImaging/GetBBox.c
Original file line number Diff line number Diff line change
Expand Up @@ -209,7 +209,7 @@ ImagingGetExtrema(Imaging im, void *extrema) {
memcpy(extrema, &fmin, sizeof(fmin));
memcpy(((char *)extrema) + sizeof(fmin), &fmax, sizeof(fmax));
break;
case IMAGING_TYPE_SPECIAL:
case IMAGING_TYPE_I16:
if (im->mode == IMAGING_MODE_I_16) {
UINT16 v;
UINT8 *pixel = *im->image8;
Expand Down
2 changes: 1 addition & 1 deletion src/libImaging/Imaging.h
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ typedef struct ImagingPaletteInstance *ImagingPalette;
#define IMAGING_TYPE_UINT8 0
#define IMAGING_TYPE_INT32 1
#define IMAGING_TYPE_FLOAT32 2
#define IMAGING_TYPE_SPECIAL 3 /* check mode for details */
#define IMAGING_TYPE_I16 3

typedef struct {
char *ptr;
Expand Down
2 changes: 1 addition & 1 deletion src/libImaging/Point.c
Original file line number Diff line number Diff line change
Expand Up @@ -244,7 +244,7 @@ ImagingPointTransform(Imaging imIn, double scale, double offset) {
}
ImagingSectionLeave(&cookie);
break;
case IMAGING_TYPE_SPECIAL:
case IMAGING_TYPE_I16:
if (imIn->mode == IMAGING_MODE_I_16) {
ImagingSectionEnter(&cookie);
for (y = 0; y < imIn->ysize; y++) {
Expand Down
2 changes: 1 addition & 1 deletion src/libImaging/RankFilter.c
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ MakeRankFunction(UINT8) MakeRankFunction(INT32) MakeRankFunction(FLOAT32)
int x, y;
int i, margin, size2;

if (!im || im->bands != 1 || im->type == IMAGING_TYPE_SPECIAL) {
if (!im || im->bands != 1 || im->type == IMAGING_TYPE_I16) {
return (Imaging)ImagingError_ModeError();
}

Expand Down
7 changes: 2 additions & 5 deletions src/libImaging/Reduce.c
Original file line number Diff line number Diff line change
Expand Up @@ -1452,11 +1452,8 @@ ImagingReduce(Imaging imIn, int xscale, int yscale, int box[4]) {
ImagingSectionCookie cookie;
Imaging imOut = NULL;

if (imIn->mode == IMAGING_MODE_P || imIn->mode == IMAGING_MODE_1) {
return (Imaging)ImagingError_ModeError();
}

if (imIn->type == IMAGING_TYPE_SPECIAL) {
if (imIn->mode == IMAGING_MODE_P || imIn->mode == IMAGING_MODE_1 ||
imIn->type == IMAGING_TYPE_I16) {
return (Imaging)ImagingError_ModeError();
}

Expand Down
10 changes: 3 additions & 7 deletions src/libImaging/Resample.c
Original file line number Diff line number Diff line change
Expand Up @@ -717,13 +717,9 @@ ImagingResample(Imaging imIn, int xsize, int ysize, int filter, float box[4]) {
return (Imaging)ImagingError_ModeError();
}

if (imIn->type == IMAGING_TYPE_SPECIAL) {
if (isModeI16(imIn->mode)) {
ResampleHorizontal = _ImagingResampleHorizontal_16bpc;
ResampleVertical = _ImagingResampleVertical_16bpc;
} else {
return (Imaging)ImagingError_ModeError();
}
if (imIn->type == IMAGING_TYPE_I16) {
ResampleHorizontal = _ImagingResampleHorizontal_16bpc;
ResampleVertical = _ImagingResampleVertical_16bpc;
} else if (imIn->image8) {
ResampleHorizontal = _ImagingResampleHorizontal_8bpc;
ResampleVertical = _ImagingResampleVertical_8bpc;
Expand Down
2 changes: 1 addition & 1 deletion src/libImaging/Storage.c
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ ImagingNewPrologueSubtype(const ModeID mode, int xsize, int ysize, int size) {
/* 16-bit raw integer images */
im->bands = 1;
im->pixelsize = 2;
im->type = IMAGING_TYPE_SPECIAL;
im->type = IMAGING_TYPE_I16;
strcpy(im->arrow_band_format, "s");
strcpy(im->band_names[0], "I");

Expand Down
Loading