misc/libfreetype/src/base/ftgasp.c
changeset 5172 88f2e05288ba
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/misc/libfreetype/src/base/ftgasp.c	Mon Apr 25 01:46:54 2011 +0200
@@ -0,0 +1,61 @@
+/***************************************************************************/
+/*                                                                         */
+/*  ftgasp.c                                                               */
+/*                                                                         */
+/*    Access of TrueType's `gasp' table (body).                            */
+/*                                                                         */
+/*  Copyright 2007 by                                                      */
+/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
+/*                                                                         */
+/*  This file is part of the FreeType project, and may only be used,       */
+/*  modified, and distributed under the terms of the FreeType project      */
+/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
+/*  this file you indicate that you have read the license and              */
+/*  understand and accept it fully.                                        */
+/*                                                                         */
+/***************************************************************************/
+
+
+#include <ft2build.h>
+#include FT_GASP_H
+#include FT_INTERNAL_TRUETYPE_TYPES_H
+
+
+  FT_EXPORT_DEF( FT_Int )
+  FT_Get_Gasp( FT_Face  face,
+               FT_UInt  ppem )
+  {
+    FT_Int  result = FT_GASP_NO_TABLE;
+
+
+    if ( face && FT_IS_SFNT( face ) )
+    {
+      TT_Face  ttface = (TT_Face)face;
+
+
+      if ( ttface->gasp.numRanges > 0 )
+      {
+        TT_GaspRange  range     = ttface->gasp.gaspRanges;
+        TT_GaspRange  range_end = range + ttface->gasp.numRanges;
+
+
+        while ( ppem > range->maxPPEM )
+        {
+          range++;
+          if ( range >= range_end )
+            goto Exit;
+        }
+
+        result = range->gaspFlag;
+
+        /* ensure that we don't have spurious bits */
+        if ( ttface->gasp.version == 0 )
+          result &= 3;
+      }
+    }
+  Exit:
+    return result;
+  }
+
+
+/* END */