Sophie

Sophie

distrib > Mandriva > 2009.0 > i586 > by-pkgid > 05789943edb44e4ad255cca7f30d9d4f > files > 1

SDL_ttf-2.0.9-5mdv2009.0.src.rpm

--- SDL_ttf.c	2006-05-01 11:26:17.000000000 +0200
+++ SDL_ttf.c-patched	2006-08-13 14:52:41.000000000 +0200
@@ -524,7 +514,7 @@
 		 * a freetype2 bug because it is inconsistent with the
 		 * freetype2 documentation under FT_Render_Mode section.
 		 * */
-		if ( mono || !FT_IS_SCALABLE(face) ) {
+		if ( mono || !FT_IS_SCALABLE(face) || src->pixel_mode == FT_PIXEL_MODE_MONO ) {
 			dst->pitch *= 8;
 		}
 
@@ -550,27 +540,28 @@
 			for( i = 0; i < src->rows; i++ ) {
 				int soffset = i * src->pitch;
 				int doffset = i * dst->pitch;
-				if ( mono ) {
+				if ( mono || src->pixel_mode == FT_PIXEL_MODE_MONO ) {
 					unsigned char *srcp = src->buffer + soffset;
 					unsigned char *dstp = dst->buffer + doffset;
+                                        unsigned char value = mono ? 1 : 255;
 					int j;
 					for ( j = 0; j < src->width; j += 8 ) {
 						unsigned char ch = *srcp++;
-						*dstp++ = (ch&0x80) >> 7;
+						*dstp++ = ch&0x80 ? value : 0;
 						ch <<= 1;
-						*dstp++ = (ch&0x80) >> 7;
+						*dstp++ = ch&0x80 ? value : 0;
 						ch <<= 1;
-						*dstp++ = (ch&0x80) >> 7;
+						*dstp++ = ch&0x80 ? value : 0;
 						ch <<= 1;
-						*dstp++ = (ch&0x80) >> 7;
+						*dstp++ = ch&0x80 ? value : 0;
 						ch <<= 1;
-						*dstp++ = (ch&0x80) >> 7;
+						*dstp++ = ch&0x80 ? value : 0;
 						ch <<= 1;
-						*dstp++ = (ch&0x80) >> 7;
+						*dstp++ = ch&0x80 ? value : 0;
 						ch <<= 1;
-						*dstp++ = (ch&0x80) >> 7;
+						*dstp++ = ch&0x80 ? value : 0;
 						ch <<= 1;
-						*dstp++ = (ch&0x80) >> 7;
+						*dstp++ = ch&0x80 ? value : 0;
 					}
 				} else if ( !FT_IS_SCALABLE(face) ) {
 					/* This special case wouldn't