* src/smooth/ftgrays.c (FT_GRAY_SET): Adjust for better code.

wl/meson-logging
Alexei Podtelezhnikov 4 years ago
parent 8f43d324d1
commit c653b8d2f1
  1. 6
      ChangeLog
  2. 31
      src/smooth/ftgrays.c

@ -1,4 +1,8 @@
2021-05-07 Alexei Podtelezhnikov <apodtele@gmail.com>
2021-05-11 Alexei Podtelezhnikov <apodtele@gmail.com>
* src/smooth/ftgrays.c (FT_GRAY_SET): Adjust for better code.
2021-05-11 Alexei Podtelezhnikov <apodtele@gmail.com>
[smooth] Faster bitmap sweeping.

@ -409,22 +409,21 @@ typedef ptrdiff_t FT_PtrDist;
/* It is faster to write small spans byte-by-byte than calling */
/* `memset'. This is mainly due to the cost of the function call. */
#define FT_GRAY_SET( d, s, count ) \
FT_BEGIN_STMNT \
unsigned char* q = d; \
unsigned char c = (unsigned char)s; \
switch ( count ) \
{ \
case 7: *q++ = c; /* fall through */ \
case 6: *q++ = c; /* fall through */ \
case 5: *q++ = c; /* fall through */ \
case 4: *q++ = c; /* fall through */ \
case 3: *q++ = c; /* fall through */ \
case 2: *q++ = c; /* fall through */ \
case 1: *q = c; /* fall through */ \
case 0: break; \
default: FT_MEM_SET( d, s, count ); \
} \
#define FT_GRAY_SET( d, s, count ) \
FT_BEGIN_STMNT \
unsigned char* q = d; \
switch ( count ) \
{ \
case 7: *q++ = (unsigned char)s; /* fall through */ \
case 6: *q++ = (unsigned char)s; /* fall through */ \
case 5: *q++ = (unsigned char)s; /* fall through */ \
case 4: *q++ = (unsigned char)s; /* fall through */ \
case 3: *q++ = (unsigned char)s; /* fall through */ \
case 2: *q++ = (unsigned char)s; /* fall through */ \
case 1: *q = (unsigned char)s; /* fall through */ \
case 0: break; \
default: FT_MEM_SET( d, s, count ); \
} \
FT_END_STMNT

Loading…
Cancel
Save