stb_image: make unpremultiply and de-iPhone flags thread_local.
Follows the change done for vertical flipping in
eb48fbdced
for these two options as well.
This commit is contained in:
parent
b691fc4305
commit
2c8cd33e2e
37
stb_image.h
37
stb_image.h
@ -518,6 +518,8 @@ STBIDEF void stbi_set_flip_vertically_on_load(int flag_true_if_should_flip);
|
|||||||
// as above, but only applies to images loaded on the thread that calls the function
|
// as above, but only applies to images loaded on the thread that calls the function
|
||||||
// this function is only available if your compiler supports thread-local variables;
|
// this function is only available if your compiler supports thread-local variables;
|
||||||
// calling it will fail to link if your compiler doesn't
|
// calling it will fail to link if your compiler doesn't
|
||||||
|
STBIDEF void stbi_set_unpremultiply_on_load_thread(int flag_true_if_should_unpremultiply);
|
||||||
|
STBIDEF void stbi_convert_iphone_png_to_rgb_thread(int flag_true_if_should_convert);
|
||||||
STBIDEF void stbi_set_flip_vertically_on_load_thread(int flag_true_if_should_flip);
|
STBIDEF void stbi_set_flip_vertically_on_load_thread(int flag_true_if_should_flip);
|
||||||
|
|
||||||
// ZLIB client - used by PNG, available for other purposes
|
// ZLIB client - used by PNG, available for other purposes
|
||||||
@ -4927,19 +4929,46 @@ static int stbi__expand_png_palette(stbi__png *a, stbi_uc *palette, int len, int
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int stbi__unpremultiply_on_load = 0;
|
static int stbi__unpremultiply_on_load_global = 0;
|
||||||
static int stbi__de_iphone_flag = 0;
|
static int stbi__de_iphone_flag_global = 0;
|
||||||
|
|
||||||
STBIDEF void stbi_set_unpremultiply_on_load(int flag_true_if_should_unpremultiply)
|
STBIDEF void stbi_set_unpremultiply_on_load(int flag_true_if_should_unpremultiply)
|
||||||
{
|
{
|
||||||
stbi__unpremultiply_on_load = flag_true_if_should_unpremultiply;
|
stbi__unpremultiply_on_load_global = flag_true_if_should_unpremultiply;
|
||||||
}
|
}
|
||||||
|
|
||||||
STBIDEF void stbi_convert_iphone_png_to_rgb(int flag_true_if_should_convert)
|
STBIDEF void stbi_convert_iphone_png_to_rgb(int flag_true_if_should_convert)
|
||||||
{
|
{
|
||||||
stbi__de_iphone_flag = flag_true_if_should_convert;
|
stbi__de_iphone_flag_global = flag_true_if_should_convert;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef STBI_THREAD_LOCAL
|
||||||
|
#define stbi__unpremultiply_on_load stbi__unpremultiply_on_load_global
|
||||||
|
#define stbi__de_iphone_flag stbi__de_iphone_flag_global
|
||||||
|
#else
|
||||||
|
static STBI_THREAD_LOCAL int stbi__unpremultiply_on_load_local, stbi__unpremultiply_on_load_set;
|
||||||
|
static STBI_THREAD_LOCAL int stbi__de_iphone_flag_local, stbi__de_iphone_flag_set;
|
||||||
|
|
||||||
|
STBIDEF void stbi__unpremultiply_on_load_thread(int flag_true_if_should_unpremultiply)
|
||||||
|
{
|
||||||
|
stbi__unpremultiply_on_load_local = flag_true_if_should_unpremultiply;
|
||||||
|
stbi__unpremultiply_on_load_set = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
STBIDEF void stbi_convert_iphone_png_to_rgb_thread(int flag_true_if_should_convert)
|
||||||
|
{
|
||||||
|
stbi__de_iphone_flag_local = flag_true_if_should_convert;
|
||||||
|
stbi__de_iphone_flag_set = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
#define stbi__unpremultiply_on_load (stbi__unpremultiply_on_load_set \
|
||||||
|
? stbi__unpremultiply_on_load_local \
|
||||||
|
: stbi__unpremultiply_on_load_global)
|
||||||
|
#define stbi__de_iphone_flag (stbi__de_iphone_flag_set \
|
||||||
|
? stbi__de_iphone_flag_local \
|
||||||
|
: stbi__de_iphone_flag_global)
|
||||||
|
#endif // STBI_THREAD_LOCAL
|
||||||
|
|
||||||
static void stbi__de_iphone(stbi__png *z)
|
static void stbi__de_iphone(stbi__png *z)
|
||||||
{
|
{
|
||||||
stbi__context *s = z->s;
|
stbi__context *s = z->s;
|
||||||
|
Loading…
Reference in New Issue
Block a user