* src/bdf/bdflib.c (_bdf_parse_start): Simplify bpp parsing.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
diff --git a/ChangeLog b/ChangeLog
index 619b68e..b9d856a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2015-06-24 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ * src/bdf/bdflib.c (_bdf_parse_start): Simplify bpp parsing.
+
2015-06-23 Werner Lemberg <wl@gnu.org>
s/TYPEOF/FT_TYPEOF/ (#45376).
diff --git a/src/bdf/bdflib.c b/src/bdf/bdflib.c
index 8655d0e..259c207 100644
--- a/src/bdf/bdflib.c
+++ b/src/bdf/bdflib.c
@@ -2346,30 +2346,21 @@
/* Check for the bits per pixel field. */
if ( p->list.used == 5 )
{
- unsigned short bitcount, i, shift;
+ unsigned short bpp;
- p->font->bpp = (unsigned short)_bdf_atos( p->list.field[4], 0, 10 );
+ bpp = (unsigned short)_bdf_atos( p->list.field[4], 0, 10 );
- /* Only values 1, 2, 4, 8 are allowed. */
- shift = p->font->bpp;
- bitcount = 0;
- for ( i = 0; shift > 0; i++ )
- {
- if ( shift & 1 )
- bitcount = i;
- shift >>= 1;
- }
-
- shift = (unsigned short)( ( bitcount > 3 ) ? 8
- : ( 1U << bitcount ) );
+ /* Only values 1, 2, 4, 8 are allowed for greymap fonts. */
+ if ( bpp > 4 )
+ p->font->bpp = 8;
+ else if ( bpp > 2 )
+ p->font->bpp = 4;
+ else
+ p->font->bpp = bpp;
- if ( p->font->bpp > shift || p->font->bpp != shift )
- {
- /* select next higher value */
- p->font->bpp = (unsigned short)( shift << 1 );
+ if ( p->font->bpp != bpp )
FT_TRACE2(( "_bdf_parse_start: " ACMSG11, p->font->bpp ));
- }
}
else
p->font->bpp = 1;