[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[ft-cvs] freetype2/src/base ftmac.c
From: |
suzuki toshiya |
Subject: |
[ft-cvs] freetype2/src/base ftmac.c |
Date: |
Thu, 22 Jun 2006 02:34:13 +0000 |
CVSROOT: /cvsroot/freetype
Module name: freetype2
Changes by: suzuki toshiya <mpsuzuki> 06/06/22 02:34:13
Modified files:
src/base : ftmac.c
Log message:
* src/base/ftmac.c: Add byteorder workaround for Intel Mac
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/freetype2/src/base/ftmac.c?cvsroot=freetype&r1=1.44&r2=1.45
Patches:
Index: ftmac.c
===================================================================
RCS file: /cvsroot/freetype/freetype2/src/base/ftmac.c,v
retrieving revision 1.44
retrieving revision 1.45
diff -u -b -r1.44 -r1.45
--- ftmac.c 19 May 2006 10:48:42 -0000 1.44
+++ ftmac.c 22 Jun 2006 02:34:12 -0000 1.45
@@ -64,11 +64,13 @@
/* This is for Mac OS X. Without redefinition, OS_INLINE */
/* expands to `static inline' which doesn't survive the */
/* -ansi compilation flag of GCC. */
+#undef OS_INLINE
#define OS_INLINE static __inline__
#include <Carbon/Carbon.h>
#else
#include <Resources.h>
#include <Fonts.h>
+#include <Endian.h>
#include <Errors.h>
#include <Files.h>
#include <TextUtils.h>
@@ -536,7 +538,7 @@
/* The count is 1 greater than the value in the FOND. */
/* Isn't that cute? :-) */
- return 1 + *( (short*)( fond_data + sizeof ( FamRec ) ) );
+ return EndianS16_BtoN( *( (short*)( fond_data + sizeof ( FamRec ) ) ) ) +
1;
}
@@ -549,13 +551,13 @@
fond = (FamRec*)fond_data;
- face_all = *( (short *)( fond_data + sizeof ( FamRec ) ) ) + 1;
+ face_all = EndianS16_BtoN( *( (short *)( fond_data + sizeof ( FamRec ) ) )
) + 1;
assoc = (AsscEntry*)( fond_data + sizeof ( FamRec ) + 2 );
face = 0;
for ( i = 0; i < face_all; i++ )
{
- if ( 0 == assoc[i].fontSize )
+ if ( 0 == EndianS16_BtoN( assoc[i].fontSize ) )
face++;
}
return face;
@@ -597,19 +599,19 @@
/* if the face at this index is not scalable,
fall back to the first one (old behavior) */
- if ( assoc->fontSize == 0 )
+ if ( EndianS16_BtoN( assoc->fontSize ) == 0 )
{
*have_sfnt = 1;
- *sfnt_id = assoc->fontID;
+ *sfnt_id = EndianS16_BtoN( assoc->fontID );
}
else if ( base_assoc->fontSize == 0 )
{
*have_sfnt = 1;
- *sfnt_id = base_assoc->fontID;
+ *sfnt_id = EndianS16_BtoN( base_assoc->fontID );
}
}
- if ( fond->ffStylOff )
+ if ( EndianS32_BtoN( fond->ffStylOff ) )
{
unsigned char* p = (unsigned char*)fond_data;
StyleTable* style;
@@ -619,10 +621,10 @@
int i;
- p += fond->ffStylOff;
+ p += EndianS32_BtoN( fond->ffStylOff );
style = (StyleTable*)p;
p += sizeof ( StyleTable );
- string_count = *(unsigned short*)(p);
+ string_count = EndianS16_BtoN( *(short*)(p) );
p += sizeof ( short );
for ( i = 0; i < string_count && i < 64; i++ )
@@ -770,13 +772,13 @@
Str255 lwfn_file_name;
UInt8 buff[HFS_MAXPATHLEN];
FT_Error err;
+ short num_faces;
have_sfnt = have_lwfn = 0;
HLock( fond );
parse_fond( *fond, &have_sfnt, &sfnt_id, lwfn_file_name, 0 );
- HUnlock( fond );
if ( lwfn_file_name[0] )
{
@@ -787,9 +789,12 @@
}
if ( have_lwfn && ( !have_sfnt || PREFER_LWFN ) )
- return 1;
+ num_faces = 1;
else
- return count_faces_scalable( *fond );
+ num_faces = count_faces_scalable( *fond );
+
+ HUnlock( fond );
+ return num_faces;
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [ft-cvs] freetype2/src/base ftmac.c,
suzuki toshiya <=