Changeset 41522 for trunk/psLib/src/imageops/psImageInterpolate.c
- Timestamp:
- Apr 2, 2021, 2:43:17 PM (5 years ago)
- File:
-
- 1 edited
-
trunk/psLib/src/imageops/psImageInterpolate.c (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/src/imageops/psImageInterpolate.c
r35158 r41522 51 51 }; 52 52 53 // code below uses statically allocated kernel arrays that need to know the 54 // maximum possible size of a kernel. 16 is >> 8 above 55 # define MAX_KERNEL_SIZE 16 56 # define USE_MAX_KERNEL 0 57 53 58 # if (IS_BILIN_SEPARABLE) 54 59 /// Generate a linear interpolation kernel … … 190 195 switch (mode) { 191 196 case PS_INTERPOLATE_FLAT: 197 // Nothing to pre-compute 198 break; 192 199 case PS_INTERPOLATE_BILINEAR_SIMPLE: 193 200 // Nothing to pre-compute 201 kernel[0] = 1.0 - frac; 202 kernel[1] = frac; 194 203 break; 195 204 # if (IS_BILIN_SEPARABLE) … … 793 802 794 803 // Get the appropriate kernels 804 # if (USE_MAX_KERNEL) 805 psAssert (size <= MAX_KERNEL_SIZE, "oops"); 806 psF32 kernel[MAX_KERNEL_SIZE][MAX_KERNEL_SIZE]; 807 for (int ix = 0; ix < MAX_KERNEL_SIZE; ix++) { 808 for (int iy = 0; iy < MAX_KERNEL_SIZE; iy++) { 809 kernel[ix][iy] = 1; 810 } 811 } 812 # else 795 813 psF32 kernel[size][size]; 814 for (int ix = 0; ix < size; ix++) { 815 for (int iy = 0; iy < size; iy++) { 816 kernel[ix][iy] = 1; 817 } 818 } 819 # endif 796 820 797 821 # if (IS_BILIN_SEPARABLE) … … 1060 1084 if (xExact && yExact) { /* possible alternative */ } 1061 1085 1086 # if (USE_MAX_KERNEL) 1087 psAssert (size <= MAX_KERNEL_SIZE, "oops"); 1088 psF32 xKernel[MAX_KERNEL_SIZE], yKernel[MAX_KERNEL_SIZE]; // Interpolation kernels 1089 for (int ix = 0; ix < MAX_KERNEL_SIZE; ix++) { xKernel[ix] = 1; yKernel[ix] = 1; } 1090 # else 1091 // init these arrays 1062 1092 psF32 xKernel[size], yKernel[size]; // Interpolation kernels 1093 for (int ix = 0; ix < size; ix++) { xKernel[ix] = 1; yKernel[ix] = 1; } 1094 # endif 1095 1063 1096 interpolationKernel(xKernel, xFrac, mode); 1064 1097 interpolationKernel(yKernel, yFrac, mode); … … 1111 1144 if (xExact && yExact) { /* possible alternative */ } 1112 1145 1146 # if (USE_MAX_KERNEL) 1147 psAssert (size <= MAX_KERNEL_SIZE, "oops"); 1148 psF32 xKernel[MAX_KERNEL_SIZE], yKernel[MAX_KERNEL_SIZE]; // Interpolation kernels 1149 for (int ix = 0; ix < MAX_KERNEL_SIZE; ix++) { xKernel[ix] = 1; yKernel[ix] = 1; } 1150 # else 1113 1151 psF32 xKernel[size], yKernel[size]; // Interpolation kernels 1152 for (int ix = 0; ix < size; ix++) { xKernel[ix] = 1; yKernel[ix] = 1; } 1153 # endif 1154 1114 1155 interpolationKernel(xKernel, xFrac, mode); 1115 1156 interpolationKernel(yKernel, yFrac, mode); … … 1128 1169 int min = -size/2, max = (size - 1) / 2; // Range for kernel 1129 1170 psKernel *kernel = psKernelAlloc(min, max, min, max); // Kernel to return 1171 1172 fprintf (stderr, "kernel: %d x %d == %d\n", kernel->image->numRows, kernel->image->numCols, size); 1173 psAssert (size == kernel->image->numRows, "oops"); 1174 psAssert (size == kernel->image->numCols, "oops"); 1130 1175 1131 1176 for (int y = 0; y < size; y++) {
Note:
See TracChangeset
for help on using the changeset viewer.
