|
|
|
@ -4639,9 +4639,8 @@ enum { |
|
|
|
|
STBI__F_up=2, |
|
|
|
|
STBI__F_avg=3, |
|
|
|
|
STBI__F_paeth=4, |
|
|
|
|
// synthetic filters used for first scanline to avoid needing a dummy row of 0s
|
|
|
|
|
STBI__F_avg_first, |
|
|
|
|
STBI__F_paeth_first |
|
|
|
|
// synthetic filter used for first scanline to avoid needing a dummy row of 0s
|
|
|
|
|
STBI__F_avg_first |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
static stbi_uc first_row_filter[5] = |
|
|
|
@ -4650,7 +4649,7 @@ static stbi_uc first_row_filter[5] = |
|
|
|
|
STBI__F_sub, |
|
|
|
|
STBI__F_none, |
|
|
|
|
STBI__F_avg_first, |
|
|
|
|
STBI__F_paeth_first |
|
|
|
|
STBI__F_sub // Paeth with b=c=0 turns out to be equivalent to sub
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
static int stbi__paeth(int a, int b, int c) |
|
|
|
@ -4719,9 +4718,8 @@ static int stbi__create_png_image_raw(stbi__png *a, stbi_uc *raw, stbi__uint32 r |
|
|
|
|
case STBI__F_sub : cur[k] = raw[k]; break; |
|
|
|
|
case STBI__F_up : cur[k] = STBI__BYTECAST(raw[k] + prior[k]); break; |
|
|
|
|
case STBI__F_avg : cur[k] = STBI__BYTECAST(raw[k] + (prior[k]>>1)); break; |
|
|
|
|
case STBI__F_paeth : cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(0,prior[k],0)); break; |
|
|
|
|
case STBI__F_paeth : cur[k] = STBI__BYTECAST(raw[k] + prior[k]); break; // prior[k] == stbi__paeth(0,prior[k],0)
|
|
|
|
|
case STBI__F_avg_first : cur[k] = raw[k]; break; |
|
|
|
|
case STBI__F_paeth_first: cur[k] = raw[k]; break; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -4759,7 +4757,6 @@ static int stbi__create_png_image_raw(stbi__png *a, stbi_uc *raw, stbi__uint32 r |
|
|
|
|
STBI__CASE(STBI__F_avg) { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k-filter_bytes])>>1)); } break; |
|
|
|
|
STBI__CASE(STBI__F_paeth) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k-filter_bytes],prior[k],prior[k-filter_bytes])); } break; |
|
|
|
|
STBI__CASE(STBI__F_avg_first) { cur[k] = STBI__BYTECAST(raw[k] + (cur[k-filter_bytes] >> 1)); } break; |
|
|
|
|
STBI__CASE(STBI__F_paeth_first) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k-filter_bytes],0,0)); } break; |
|
|
|
|
} |
|
|
|
|
#undef STBI__CASE |
|
|
|
|
raw += nk; |
|
|
|
@ -4776,7 +4773,6 @@ static int stbi__create_png_image_raw(stbi__png *a, stbi_uc *raw, stbi__uint32 r |
|
|
|
|
STBI__CASE(STBI__F_avg) { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k- output_bytes])>>1)); } break; |
|
|
|
|
STBI__CASE(STBI__F_paeth) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k- output_bytes],prior[k],prior[k- output_bytes])); } break; |
|
|
|
|
STBI__CASE(STBI__F_avg_first) { cur[k] = STBI__BYTECAST(raw[k] + (cur[k- output_bytes] >> 1)); } break; |
|
|
|
|
STBI__CASE(STBI__F_paeth_first) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k- output_bytes],0,0)); } break; |
|
|
|
|
} |
|
|
|
|
#undef STBI__CASE |
|
|
|
|
|
|
|
|
|