comparison src/stb_image.c @ 1276:5fc043f1bd44

Fix and silence some (useless) gcc warnings.
author Matti Hamalainen <ccr@tnsp.org>
date Thu, 16 Mar 2017 17:13:46 +0200
parents 737ae4718c8f
children 40797bfd35bf
comparison
equal deleted inserted replaced
1275:42f5680f904d 1276:5fc043f1bd44
1186 #define COMBO(a,b) ((a)*8+(b)) 1186 #define COMBO(a,b) ((a)*8+(b))
1187 #define CASE(a,b) case COMBO(a,b): for(i=x-1; i >= 0; --i, src += a, dest += b) 1187 #define CASE(a,b) case COMBO(a,b): for(i=x-1; i >= 0; --i, src += a, dest += b)
1188 // convert source image with img_n components to one with req_comp components; 1188 // convert source image with img_n components to one with req_comp components;
1189 // avoid switch per pixel, so use switch per scanline and massive macros 1189 // avoid switch per pixel, so use switch per scanline and massive macros
1190 switch (COMBO(img_n, req_comp)) { 1190 switch (COMBO(img_n, req_comp)) {
1191 CASE(1,2) dest[0]=src[0], dest[1]=255; break; 1191 CASE(1,2) { dest[0]=src[0], dest[1]=255; } break;
1192 CASE(1,3) dest[0]=dest[1]=dest[2]=src[0]; break; 1192 CASE(1,3) { dest[0]=dest[1]=dest[2]=src[0]; } break;
1193 CASE(1,4) dest[0]=dest[1]=dest[2]=src[0], dest[3]=255; break; 1193 CASE(1,4) { dest[0]=dest[1]=dest[2]=src[0], dest[3]=255; } break;
1194 CASE(2,1) dest[0]=src[0]; break; 1194 CASE(2,1) { dest[0]=src[0]; } break;
1195 CASE(2,3) dest[0]=dest[1]=dest[2]=src[0]; break; 1195 CASE(2,3) { dest[0]=dest[1]=dest[2]=src[0]; } break;
1196 CASE(2,4) dest[0]=dest[1]=dest[2]=src[0], dest[3]=src[1]; break; 1196 CASE(2,4) { dest[0]=dest[1]=dest[2]=src[0], dest[3]=src[1]; } break;
1197 CASE(3,4) dest[0]=src[0],dest[1]=src[1],dest[2]=src[2],dest[3]=255; break; 1197 CASE(3,4) { dest[0]=src[0],dest[1]=src[1],dest[2]=src[2],dest[3]=255; } break;
1198 CASE(3,1) dest[0]=stbi__compute_y(src[0],src[1],src[2]); break; 1198 CASE(3,1) { dest[0]=stbi__compute_y(src[0],src[1],src[2]); } break;
1199 CASE(3,2) dest[0]=stbi__compute_y(src[0],src[1],src[2]), dest[1] = 255; break; 1199 CASE(3,2) { dest[0]=stbi__compute_y(src[0],src[1],src[2]), dest[1] = 255; } break;
1200 CASE(4,1) dest[0]=stbi__compute_y(src[0],src[1],src[2]); break; 1200 CASE(4,1) { dest[0]=stbi__compute_y(src[0],src[1],src[2]); } break;
1201 CASE(4,2) dest[0]=stbi__compute_y(src[0],src[1],src[2]), dest[1] = src[3]; break; 1201 CASE(4,2) { dest[0]=stbi__compute_y(src[0],src[1],src[2]), dest[1] = src[3]; } break;
1202 CASE(4,3) dest[0]=src[0],dest[1]=src[1],dest[2]=src[2]; break; 1202 CASE(4,3) { dest[0]=src[0],dest[1]=src[1],dest[2]=src[2]; } break;
1203 default: STBI_ASSERT(0); 1203 default: STBI_ASSERT(0);
1204 } 1204 }
1205 #undef CASE 1205 #undef CASE
1206 } 1206 }
1207 1207
3412 if (depth < 8 || img_n == out_n) { 3412 if (depth < 8 || img_n == out_n) {
3413 int nk = (width - 1)*img_n; 3413 int nk = (width - 1)*img_n;
3414 #define CASE(f) \ 3414 #define CASE(f) \
3415 case f: \ 3415 case f: \
3416 for (k=0; k < nk; ++k) 3416 for (k=0; k < nk; ++k)
3417
3417 switch (filter) { 3418 switch (filter) {
3418 // "none" filter turns into a memcpy here; make that explicit. 3419 // "none" filter turns into a memcpy here; make that explicit.
3419 case STBI__F_none: memcpy(cur, raw, nk); break; 3420 case STBI__F_none: { memcpy(cur, raw, nk); } break;
3420 CASE(STBI__F_sub) cur[k] = STBI__BYTECAST(raw[k] + cur[k-filter_bytes]); break; 3421 CASE(STBI__F_sub) { cur[k] = STBI__BYTECAST(raw[k] + cur[k-filter_bytes]); } break;
3421 CASE(STBI__F_up) cur[k] = STBI__BYTECAST(raw[k] + prior[k]); break; 3422 CASE(STBI__F_up) { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } break;
3422 CASE(STBI__F_avg) cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k-filter_bytes])>>1)); break; 3423 CASE(STBI__F_avg) { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k-filter_bytes])>>1)); } break;
3423 CASE(STBI__F_paeth) cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k-filter_bytes],prior[k],prior[k-filter_bytes])); break; 3424 CASE(STBI__F_paeth) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k-filter_bytes],prior[k],prior[k-filter_bytes])); } break;
3424 CASE(STBI__F_avg_first) cur[k] = STBI__BYTECAST(raw[k] + (cur[k-filter_bytes] >> 1)); break; 3425 CASE(STBI__F_avg_first) { cur[k] = STBI__BYTECAST(raw[k] + (cur[k-filter_bytes] >> 1)); } break;
3425 CASE(STBI__F_paeth_first) cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k-filter_bytes],0,0)); break; 3426 CASE(STBI__F_paeth_first) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k-filter_bytes],0,0)); } break;
3426 } 3427 }
3427 #undef CASE 3428 #undef CASE
3428 raw += nk; 3429 raw += nk;
3429 } else { 3430 } else {
3430 STBI_ASSERT(img_n+1 == out_n); 3431 STBI_ASSERT(img_n+1 == out_n);
3431 #define CASE(f) \ 3432 #define CASE(f) \
3432 case f: \ 3433 case f: \
3433 for (i=x-1; i >= 1; --i, cur[img_n]=255,raw+=img_n,cur+=out_n,prior+=out_n) \ 3434 for (i=x-1; i >= 1; --i, cur[img_n]=255,raw+=img_n,cur+=out_n,prior+=out_n) \
3434 for (k=0; k < img_n; ++k) 3435 for (k=0; k < img_n; ++k)
3436
3435 switch (filter) { 3437 switch (filter) {
3436 CASE(STBI__F_none) cur[k] = raw[k]; break; 3438 CASE(STBI__F_none) { cur[k] = raw[k]; } break;
3437 CASE(STBI__F_sub) cur[k] = STBI__BYTECAST(raw[k] + cur[k-out_n]); break; 3439 CASE(STBI__F_sub) { cur[k] = STBI__BYTECAST(raw[k] + cur[k-out_n]); } break;
3438 CASE(STBI__F_up) cur[k] = STBI__BYTECAST(raw[k] + prior[k]); break; 3440 CASE(STBI__F_up) { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } break;
3439 CASE(STBI__F_avg) cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k-out_n])>>1)); break; 3441 CASE(STBI__F_avg) { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k-out_n])>>1)); } break;
3440 CASE(STBI__F_paeth) cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k-out_n],prior[k],prior[k-out_n])); break; 3442 CASE(STBI__F_paeth) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k-out_n],prior[k],prior[k-out_n])); } break;
3441 CASE(STBI__F_avg_first) cur[k] = STBI__BYTECAST(raw[k] + (cur[k-out_n] >> 1)); break; 3443 CASE(STBI__F_avg_first) { cur[k] = STBI__BYTECAST(raw[k] + (cur[k-out_n] >> 1)); } break;
3442 CASE(STBI__F_paeth_first) cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k-out_n],0,0)); break; 3444 CASE(STBI__F_paeth_first) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k-out_n],0,0)); } break;
3443 } 3445 }
3444 #undef CASE 3446 #undef CASE
3445 } 3447 }
3446 } 3448 }
3447 3449