mirror of https://github.com/nothings/stb.git
Merge branch 'msvc_runtime_cast_fixes' of https://github.com/karjonas/stb into working
This commit is contained in:
commit
099cd5a279
|
@ -193,6 +193,8 @@ STBIWDEF int stbi_write_hdr_to_func(stbi_write_func *func, void *context, int w,
|
||||||
#define STBIW_ASSERT(x) assert(x)
|
#define STBIW_ASSERT(x) assert(x)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define STBIW_UCHAR(x) (unsigned char) ((x) & 0xff)
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
stbi_write_func *func;
|
stbi_write_func *func;
|
||||||
|
@ -241,21 +243,21 @@ static void stbiw__writefv(stbi__write_context *s, const char *fmt, va_list v)
|
||||||
while (*fmt) {
|
while (*fmt) {
|
||||||
switch (*fmt++) {
|
switch (*fmt++) {
|
||||||
case ' ': break;
|
case ' ': break;
|
||||||
case '1': { unsigned char x = (unsigned char) va_arg(v, int);
|
case '1': { unsigned char x = STBIW_UCHAR(va_arg(v, int));
|
||||||
s->func(s->context,&x,1);
|
s->func(s->context,&x,1);
|
||||||
break; }
|
break; }
|
||||||
case '2': { int x = va_arg(v,int);
|
case '2': { int x = va_arg(v,int);
|
||||||
unsigned char b[2];
|
unsigned char b[2];
|
||||||
b[0] = (unsigned char) x;
|
b[0] = STBIW_UCHAR(x);
|
||||||
b[1] = (unsigned char) (x>>8);
|
b[1] = STBIW_UCHAR(x>>8);
|
||||||
s->func(s->context,b,2);
|
s->func(s->context,b,2);
|
||||||
break; }
|
break; }
|
||||||
case '4': { stbiw_uint32 x = va_arg(v,int);
|
case '4': { stbiw_uint32 x = va_arg(v,int);
|
||||||
unsigned char b[4];
|
unsigned char b[4];
|
||||||
b[0]=(unsigned char)x;
|
b[0]=STBIW_UCHAR(x);
|
||||||
b[1]=(unsigned char)(x>>8);
|
b[1]=STBIW_UCHAR(x>>8);
|
||||||
b[2]=(unsigned char)(x>>16);
|
b[2]=STBIW_UCHAR(x>>16);
|
||||||
b[3]=(unsigned char)(x>>24);
|
b[3]=STBIW_UCHAR(x>>24);
|
||||||
s->func(s->context,b,4);
|
s->func(s->context,b,4);
|
||||||
break; }
|
break; }
|
||||||
default:
|
default:
|
||||||
|
@ -432,13 +434,13 @@ static int stbi_write_tga_core(stbi__write_context *s, int x, int y, int comp, v
|
||||||
}
|
}
|
||||||
|
|
||||||
if (diff) {
|
if (diff) {
|
||||||
unsigned char header = (unsigned char) (len - 1);
|
unsigned char header = STBIW_UCHAR(len - 1);
|
||||||
s->func(s->context, &header, 1);
|
s->func(s->context, &header, 1);
|
||||||
for (k = 0; k < len; ++k) {
|
for (k = 0; k < len; ++k) {
|
||||||
stbiw__write_pixel(s, -1, comp, has_alpha, 0, begin + k * comp);
|
stbiw__write_pixel(s, -1, comp, has_alpha, 0, begin + k * comp);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
unsigned char header = (unsigned char) (len - 129);
|
unsigned char header = STBIW_UCHAR(len - 129);
|
||||||
s->func(s->context, &header, 1);
|
s->func(s->context, &header, 1);
|
||||||
stbiw__write_pixel(s, -1, comp, has_alpha, 0, begin);
|
stbiw__write_pixel(s, -1, comp, has_alpha, 0, begin);
|
||||||
}
|
}
|
||||||
|
@ -494,7 +496,7 @@ void stbiw__linear_to_rgbe(unsigned char *rgbe, float *linear)
|
||||||
|
|
||||||
void stbiw__write_run_data(stbi__write_context *s, int length, unsigned char databyte)
|
void stbiw__write_run_data(stbi__write_context *s, int length, unsigned char databyte)
|
||||||
{
|
{
|
||||||
unsigned char lengthbyte = (unsigned char) (length+128);
|
unsigned char lengthbyte = STBIW_UCHAR(length+128);
|
||||||
STBIW_ASSERT(length+128 <= 255);
|
STBIW_ASSERT(length+128 <= 255);
|
||||||
s->func(s->context, &lengthbyte, 1);
|
s->func(s->context, &lengthbyte, 1);
|
||||||
s->func(s->context, &databyte, 1);
|
s->func(s->context, &databyte, 1);
|
||||||
|
@ -502,7 +504,7 @@ void stbiw__write_run_data(stbi__write_context *s, int length, unsigned char dat
|
||||||
|
|
||||||
void stbiw__write_dump_data(stbi__write_context *s, int length, unsigned char *data)
|
void stbiw__write_dump_data(stbi__write_context *s, int length, unsigned char *data)
|
||||||
{
|
{
|
||||||
unsigned char lengthbyte = (unsigned char )(length & 0xff);
|
unsigned char lengthbyte = STBIW_UCHAR(length);
|
||||||
STBIW_ASSERT(length <= 128); // inconsistent with spec but consistent with official code
|
STBIW_ASSERT(length <= 128); // inconsistent with spec but consistent with official code
|
||||||
s->func(s->context, &lengthbyte, 1);
|
s->func(s->context, &lengthbyte, 1);
|
||||||
s->func(s->context, data, length);
|
s->func(s->context, data, length);
|
||||||
|
@ -673,7 +675,7 @@ static void *stbiw__sbgrowf(void **arr, int increment, int itemsize)
|
||||||
static unsigned char *stbiw__zlib_flushf(unsigned char *data, unsigned int *bitbuffer, int *bitcount)
|
static unsigned char *stbiw__zlib_flushf(unsigned char *data, unsigned int *bitbuffer, int *bitcount)
|
||||||
{
|
{
|
||||||
while (*bitcount >= 8) {
|
while (*bitcount >= 8) {
|
||||||
stbiw__sbpush(data, (unsigned char) *bitbuffer);
|
stbiw__sbpush(data, STBIW_UCHAR(*bitbuffer));
|
||||||
*bitbuffer >>= 8;
|
*bitbuffer >>= 8;
|
||||||
*bitcount -= 8;
|
*bitcount -= 8;
|
||||||
}
|
}
|
||||||
|
@ -817,10 +819,10 @@ unsigned char * stbi_zlib_compress(unsigned char *data, int data_len, int *out_l
|
||||||
j += blocklen;
|
j += blocklen;
|
||||||
blocklen = 5552;
|
blocklen = 5552;
|
||||||
}
|
}
|
||||||
stbiw__sbpush(out, (unsigned char) (s2 >> 8));
|
stbiw__sbpush(out, STBIW_UCHAR(s2 >> 8));
|
||||||
stbiw__sbpush(out, (unsigned char) s2);
|
stbiw__sbpush(out, STBIW_UCHAR(s2));
|
||||||
stbiw__sbpush(out, (unsigned char) (s1 >> 8));
|
stbiw__sbpush(out, STBIW_UCHAR(s1 >> 8));
|
||||||
stbiw__sbpush(out, (unsigned char) s1);
|
stbiw__sbpush(out, STBIW_UCHAR(s1));
|
||||||
}
|
}
|
||||||
*out_len = stbiw__sbn(out);
|
*out_len = stbiw__sbn(out);
|
||||||
// make returned pointer freeable
|
// make returned pointer freeable
|
||||||
|
@ -873,7 +875,7 @@ static unsigned int stbiw__crc32(unsigned char *buffer, int len)
|
||||||
return ~crc;
|
return ~crc;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define stbiw__wpng4(o,a,b,c,d) ((o)[0]=(unsigned char)(a),(o)[1]=(unsigned char)(b),(o)[2]=(unsigned char)(c),(o)[3]=(unsigned char)(d),(o)+=4)
|
#define stbiw__wpng4(o,a,b,c,d) ((o)[0]=STBIW_UCHAR(a),(o)[1]=STBIW_UCHAR(b),(o)[2]=STBIW_UCHAR(c),(o)[3]=STBIW_UCHAR(d),(o)+=4)
|
||||||
#define stbiw__wp32(data,v) stbiw__wpng4(data, (v)>>24,(v)>>16,(v)>>8,(v));
|
#define stbiw__wp32(data,v) stbiw__wpng4(data, (v)>>24,(v)>>16,(v)>>8,(v));
|
||||||
#define stbiw__wptag(data,s) stbiw__wpng4(data, s[0],s[1],s[2],s[3])
|
#define stbiw__wptag(data,s) stbiw__wpng4(data, s[0],s[1],s[2],s[3])
|
||||||
|
|
||||||
|
@ -886,9 +888,9 @@ static void stbiw__wpcrc(unsigned char **data, int len)
|
||||||
static unsigned char stbiw__paeth(int a, int b, int c)
|
static unsigned char stbiw__paeth(int a, int b, int c)
|
||||||
{
|
{
|
||||||
int p = a + b - c, pa = abs(p-a), pb = abs(p-b), pc = abs(p-c);
|
int p = a + b - c, pa = abs(p-a), pb = abs(p-b), pc = abs(p-c);
|
||||||
if (pa <= pb && pa <= pc) return (unsigned char) a;
|
if (pa <= pb && pa <= pc) return STBIW_UCHAR(a);
|
||||||
if (pb <= pc) return (unsigned char) b;
|
if (pb <= pc) return STBIW_UCHAR(b);
|
||||||
return (unsigned char) c;
|
return STBIW_UCHAR(c);
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned char *stbi_write_png_to_mem(unsigned char *pixels, int stride_bytes, int x, int y, int n, int *out_len)
|
unsigned char *stbi_write_png_to_mem(unsigned char *pixels, int stride_bytes, int x, int y, int n, int *out_len)
|
||||||
|
@ -961,7 +963,7 @@ unsigned char *stbi_write_png_to_mem(unsigned char *pixels, int stride_bytes, in
|
||||||
stbiw__wp32(o, x);
|
stbiw__wp32(o, x);
|
||||||
stbiw__wp32(o, y);
|
stbiw__wp32(o, y);
|
||||||
*o++ = 8;
|
*o++ = 8;
|
||||||
*o++ = (unsigned char) ctype[n];
|
*o++ = STBIW_UCHAR(ctype[n]);
|
||||||
*o++ = 0;
|
*o++ = 0;
|
||||||
*o++ = 0;
|
*o++ = 0;
|
||||||
*o++ = 0;
|
*o++ = 0;
|
||||||
|
|
Loading…
Reference in New Issue