Ignore:
Timestamp:
Jan 17, 2009, 10:45:05 AM (12 years ago)
Author:
Eugene Romanenko
Message:

PDF plugin: freetype library updated to version 2.3.8

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/poppler/freetype2/include/freetype/config/ftconfig.h

    r251 r262  
    55/*    ANSI-specific configuration file (specification only).               */
    66/*                                                                         */
    7 /*  Copyright 1996-2001, 2002, 2003, 2004, 2006, 2007 by                   */
     7/*  Copyright 1996-2001, 2002, 2003, 2004, 2006, 2007, 2008 by             */
    88/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
    99/*                                                                         */
     
    4444#include FT_CONFIG_STANDARD_LIBRARY_H
    4545
     46
    4647FT_BEGIN_HEADER
    4748
     
    135136#define FT_MACINTOSH 1
    136137#endif
     138
     139#elif defined( __SC__ ) || defined( __MRC__ )
     140  /* Classic MacOS compilers */
     141#include "ConditionalMacros.h"
     142#if TARGET_OS_MAC
     143#define FT_MACINTOSH 1
     144#endif
     145
    137146#endif
    138147
     
    213222#endif
    214223
     224
    215225  /* look up an integer type that is at least 32 bits */
    216226#if FT_SIZEOF_INT >= (32 / FT_CHAR_BIT)
     
    270280
    271281
     282  /*************************************************************************/
     283  /*                                                                       */
     284  /* A 64-bit data type will create compilation problems if you compile    */
     285  /* in strict ANSI mode.  To avoid them, we disable its use if __STDC__   */
     286  /* is defined.  You can however ignore this rule by defining the         */
     287  /* FT_CONFIG_OPTION_FORCE_INT64 configuration macro.                     */
     288  /*                                                                       */
     289#if defined( FT_LONG64 ) && !defined( FT_CONFIG_OPTION_FORCE_INT64 )
     290
     291#ifdef __STDC__
     292
     293  /* undefine the 64-bit macros in strict ANSI compilation mode */
     294#undef FT_LONG64
     295#undef FT_INT64
     296
     297#endif /* __STDC__ */
     298
     299#endif /* FT_LONG64 && !FT_CONFIG_OPTION_FORCE_INT64 */
     300
     301
    272302#define FT_BEGIN_STMNT  do {
    273303#define FT_END_STMNT    } while ( 0 )
     
    275305
    276306
    277   /*************************************************************************/
    278   /*                                                                       */
    279   /* A 64-bit data type will create compilation problems if you compile    */
    280   /* in strict ANSI mode.  To avoid them, we disable their use if          */
    281   /* __STDC__ is defined.  You can however ignore this rule by             */
    282   /* defining the FT_CONFIG_OPTION_FORCE_INT64 configuration macro.        */
    283   /*                                                                       */
    284 #if defined( FT_LONG64 ) && !defined( FT_CONFIG_OPTION_FORCE_INT64 )
    285 
    286 #ifdef __STDC__
    287 
    288   /* undefine the 64-bit macros in strict ANSI compilation mode */
    289 #undef FT_LONG64
    290 #undef FT_INT64
    291 
    292 #endif /* __STDC__ */
    293 
    294 #endif /* FT_LONG64 && !FT_CONFIG_OPTION_FORCE_INT64 */
     307#ifndef  FT_CONFIG_OPTION_NO_ASSEMBLER
     308  /* Provide assembler fragments for performance-critical functions. */
     309  /* These must be defined `static __inline__' with GCC.             */
     310
     311#ifdef __GNUC__
     312
     313#if defined( __arm__ ) && !defined( __thumb__ )
     314#define FT_MULFIX_ASSEMBLER  FT_MulFix_arm
     315
     316  /* documentation is in freetype.h */
     317
     318  static __inline__ FT_Int32
     319  FT_MulFix_arm( FT_Int32  a,
     320                 FT_Int32  b )
     321  {
     322    register FT_Int32  t, t2;
     323
     324
     325    asm __volatile__ (
     326      "smull  %1, %2, %4, %3\n\t"   /* (lo=%1,hi=%2) = a*b */
     327      "mov    %0, %2, asr #31\n\t"  /* %0  = (hi >> 31) */
     328      "add    %0, %0, #0x8000\n\t"  /* %0 += 0x8000 */
     329      "adds   %1, %1, %0\n\t"       /* %1 += %0 */
     330      "adc    %2, %2, #0\n\t"       /* %2 += carry */
     331      "mov    %0, %1, lsr #16\n\t"  /* %0  = %1 >> 16 */
     332      "orr    %0, %2, lsl #16\n\t"  /* %0 |= %2 << 16 */
     333      : "=r"(a), "=&r"(t2), "=&r"(t)
     334      : "r"(a), "r"(b) );
     335    return a;
     336  }
     337
     338#endif /* __arm__ && !__thumb__ */
     339
     340#if defined( i386 )
     341#define FT_MULFIX_ASSEMBLER  FT_MulFix_i386
     342
     343  /* documentation is in freetype.h */
     344
     345  static __inline__ FT_Int32
     346  FT_MulFix_i386( FT_Int32  a,
     347                  FT_Int32  b )
     348  {
     349    register FT_Int32  result;
     350
     351
     352    __asm__ __volatile__ (
     353      "imul  %%edx\n"
     354      "movl  %%edx, %%ecx\n"
     355      "sarl  $31, %%ecx\n"
     356      "addl  $0x8000, %%ecx\n"
     357      "addl  %%ecx, %%eax\n"
     358      "adcl  $0, %%edx\n"
     359      "shrl  $16, %%eax\n"
     360      "shll  $16, %%edx\n"
     361      "addl  %%edx, %%eax\n"
     362      : "=a"(result), "+d"(b)
     363      : "a"(a)
     364      : "%ecx" );
     365    return result;
     366  }
     367
     368#endif /* i386 */
     369
     370#endif /* __GNUC__ */
     371
     372#endif /* !FT_CONFIG_OPTION_NO_ASSEMBLER */
     373
     374
     375#ifdef FT_CONFIG_OPTION_INLINE_MULFIX
     376#ifdef FT_MULFIX_ASSEMBLER
     377#define FT_MULFIX_INLINED  FT_MULFIX_ASSEMBLER
     378#endif
     379#endif
    295380
    296381
Note: See TracChangeset for help on using the changeset viewer.