summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKim Woelders <kim@woelders.dk>2021-11-22 20:46:46 +0100
committerKim Woelders <kim@woelders.dk>2021-12-04 06:55:11 +0100
commit8f28d7d7066a7358440553eb30cb5814e9a6c6ef (patch)
treecfee9c16cdbf7e8559a395cf66f31e993fae6bf6
parent152366c87e9cd4b16ab91ed0777846ed35057eb9 (diff)
downloadimlib2-8f28d7d7066a7358440553eb30cb5814e9a6c6ef.tar.gz
blend.c: Tweaks, cleanups
-rw-r--r--src/lib/blend.c21
-rw-r--r--src/lib/blend.h1
2 files changed, 12 insertions, 10 deletions
diff --git a/src/lib/blend.c b/src/lib/blend.c
index 76b6d04..648caea 100644
--- a/src/lib/blend.c
+++ b/src/lib/blend.c
@@ -20,17 +20,18 @@
RESHADE_COLOR(G_VAL(dest), g, G_VAL(dest)); \
RESHADE_COLOR(B_VAL(dest), b, B_VAL(dest));
-int pow_lut_initialized = 0;
DATA8 pow_lut[256][256];
void
__imlib_build_pow_lut(void)
{
+ static char _pow_lut_initialized = 0;
int i, j;
- if (pow_lut_initialized)
+ if (_pow_lut_initialized)
return;
- pow_lut_initialized = 1;
+ _pow_lut_initialized = 1;
+
for (i = 0; i < 256; i++)
{
for (j = 0; j < 256; j++)
@@ -1515,7 +1516,7 @@ __imlib_GetBlendFunction(ImlibOp op, char blend, char merge_alpha, char rgb_src,
ImlibColorModifier * cm)
{
/*\ [ mmx ][ operation ][ cmod ][ merge_alpha ][ rgb_src ][ blend ] \ */
- static ImlibBlendFunction ibfuncs[][4][2][2][2][2] = {
+ static const ImlibBlendFunction ibfuncs[][4][2][2][2][2] = {
/*\ OP_COPY \ */
{{{{{__imlib_CopyRGBAToRGB, __imlib_BlendRGBAToRGB},
{__imlib_CopyRGBToRGB, __imlib_BlendRGBToRGB}},
@@ -1714,12 +1715,10 @@ __imlib_GetBlendFunction(ImlibOp op, char blend, char merge_alpha, char rgb_src,
#endif
};
- int opi = (op == OP_COPY) ? 0
- : (op == OP_ADD) ? 1
- : (op == OP_SUBTRACT) ? 2 : (op == OP_RESHADE) ? 3 : -1;
+ ImlibBlendFunction bfun;
int do_mmx = 0;
- if (opi == -1)
+ if (op < OP_COPY || op > OP_RESHADE)
return NULL;
#ifdef DO_MMX_ASM
@@ -1727,11 +1726,15 @@ __imlib_GetBlendFunction(ImlibOp op, char blend, char merge_alpha, char rgb_src,
#elif DO_AMD64_ASM
do_mmx = 1; // instruction set is always present
#endif
+
if (cm && rgb_src && (A_CMOD(cm, 0xff) == 0xff))
blend = 0;
if (blend && cm && rgb_src && (A_CMOD(cm, 0xff) == 0))
return NULL;
- return ibfuncs[!!do_mmx][opi][!!cm][!!merge_alpha][!!rgb_src][!!blend];
+
+ bfun = ibfuncs[!!do_mmx][op][!!cm][!!merge_alpha][!!rgb_src][!!blend];
+
+ return bfun;
}
void
diff --git a/src/lib/blend.h b/src/lib/blend.h
index d589833..ecc57fa 100644
--- a/src/lib/blend.h
+++ b/src/lib/blend.h
@@ -315,7 +315,6 @@ nc = (tmp | (-(tmp >> 8))) & (~(tmp >> 9));
tmp = (cc) + (((c) - 127) << 1); \
nc = (tmp | (-(tmp >> 8))) & (~(tmp >> 9));
-extern int pow_lut_initialized;
extern DATA8 pow_lut[256][256];
#define BLEND_DST_ALPHA(r1, g1, b1, a1, dest) \