- Remove svn:needs-lock, svn:eol-type, and svn:eol-tyle properties.
[reactos.git] / reactos / lib / 3rdparty / freetype / src / gxvalid / gxvmort4.c
index 2df0257..a04bc1e 100644 (file)
-/***************************************************************************/\r
-/*                                                                         */\r
-/*  gxvmort4.c                                                             */\r
-/*                                                                         */\r
-/*    TrueTypeGX/AAT mort table validation                                 */\r
-/*    body for type4 (Non-Contextual Glyph Substitution) subtable.         */\r
-/*                                                                         */\r
-/*  Copyright 2005 by suzuki toshiya, Masatake YAMATO, Red Hat K.K.,       */\r
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */\r
-/*                                                                         */\r
-/*  This file is part of the FreeType project, and may only be used,       */\r
-/*  modified, and distributed under the terms of the FreeType project      */\r
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */\r
-/*  this file you indicate that you have read the license and              */\r
-/*  understand and accept it fully.                                        */\r
-/*                                                                         */\r
-/***************************************************************************/\r
-\r
-/***************************************************************************/\r
-/*                                                                         */\r
-/* gxvalid is derived from both gxlayout module and otvalid module.        */\r
-/* Development of gxlayout is supported by the Information-technology      */\r
-/* Promotion Agency(IPA), Japan.                                           */\r
-/*                                                                         */\r
-/***************************************************************************/\r
-\r
-\r
-#include "gxvmort.h"\r
-\r
-\r
-  /*************************************************************************/\r
-  /*                                                                       */\r
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */\r
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */\r
-  /* messages during execution.                                            */\r
-  /*                                                                       */\r
-#undef  FT_COMPONENT\r
-#define FT_COMPONENT  trace_gxvmort\r
-\r
-\r
-  static void\r
-  gxv_mort_subtable_type4_lookupval_validate( FT_UShort            glyph,\r
-                                              GXV_LookupValueDesc  value,\r
-                                              GXV_Validator        valid )\r
-  {\r
-    FT_UNUSED( glyph );\r
-\r
-    gxv_glyphid_validate( value.u, valid );\r
-  }\r
-\r
-  /*\r
-    +===============+ --------+\r
-    | lookup header |         |\r
-    +===============+         |\r
-    | BinSrchHeader |         |\r
-    +===============+         |\r
-    | lastGlyph[0]  |         |\r
-    +---------------+         |\r
-    | firstGlyph[0] |         |    head of lookup table\r
-    +---------------+         |             +\r
-    | offset[0]     |    ->   |          offset            [byte]\r
-    +===============+         |             +\r
-    | lastGlyph[1]  |         | (glyphID - firstGlyph) * 2 [byte]\r
-    +---------------+         |\r
-    | firstGlyph[1] |         |\r
-    +---------------+         |\r
-    | offset[1]     |         |\r
-    +===============+         |\r
-                              |\r
-     ....                     |\r
-                              |\r
-    16bit value array         |\r
-    +===============+         |\r
-    |     value     | <-------+\r
-     ....\r
-  */\r
-\r
-  static GXV_LookupValueDesc\r
-  gxv_mort_subtable_type4_lookupfmt4_transit(\r
-    FT_UShort            relative_gindex,\r
-    GXV_LookupValueDesc  base_value,\r
-    FT_Bytes             lookuptbl_limit,\r
-    GXV_Validator        valid )\r
-  {\r
-    FT_Bytes             p;\r
-    FT_Bytes             limit;\r
-    FT_UShort            offset;\r
-    GXV_LookupValueDesc  value;\r
-\r
-    /* XXX: check range? */\r
-    offset = (FT_UShort)( base_value.u +\r
-                          relative_gindex * sizeof ( FT_UShort ) );\r
-\r
-    p     = valid->lookuptbl_head + offset;\r
-    limit = lookuptbl_limit;\r
-\r
-    GXV_LIMIT_CHECK( 2 );\r
-    value.u = FT_NEXT_USHORT( p );\r
-\r
-    return value;\r
-  }\r
-\r
-\r
-  FT_LOCAL_DEF( void )\r
-  gxv_mort_subtable_type4_validate( FT_Bytes       table,\r
-                                    FT_Bytes       limit,\r
-                                    GXV_Validator  valid )\r
-  {\r
-    FT_Bytes  p = table;\r
-\r
-\r
-    GXV_NAME_ENTER( "mort chain subtable type4 "\r
-                    "(Non-Contextual Glyph Substitution)" );\r
-\r
-    valid->lookupval_sign   = GXV_LOOKUPVALUE_UNSIGNED;\r
-    valid->lookupval_func   = gxv_mort_subtable_type4_lookupval_validate;\r
-    valid->lookupfmt4_trans = gxv_mort_subtable_type4_lookupfmt4_transit;\r
-\r
-    gxv_LookupTable_validate( p, limit, valid );\r
-\r
-    GXV_EXIT;\r
-  }\r
-\r
-\r
-/* END */\r
+/***************************************************************************/
+/*                                                                         */
+/*  gxvmort4.c                                                             */
+/*                                                                         */
+/*    TrueTypeGX/AAT mort table validation                                 */
+/*    body for type4 (Non-Contextual Glyph Substitution) subtable.         */
+/*                                                                         */
+/*  Copyright 2005 by suzuki toshiya, Masatake YAMATO, Red Hat K.K.,       */
+/*  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.                                        */
+/*                                                                         */
+/***************************************************************************/
+
+/***************************************************************************/
+/*                                                                         */
+/* gxvalid is derived from both gxlayout module and otvalid module.        */
+/* Development of gxlayout is supported by the Information-technology      */
+/* Promotion Agency(IPA), Japan.                                           */
+/*                                                                         */
+/***************************************************************************/
+
+
+#include "gxvmort.h"
+
+
+  /*************************************************************************/
+  /*                                                                       */
+  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
+  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
+  /* messages during execution.                                            */
+  /*                                                                       */
+#undef  FT_COMPONENT
+#define FT_COMPONENT  trace_gxvmort
+
+
+  static void
+  gxv_mort_subtable_type4_lookupval_validate( FT_UShort            glyph,
+                                              GXV_LookupValueDesc  value,
+                                              GXV_Validator        valid )
+  {
+    FT_UNUSED( glyph );
+
+    gxv_glyphid_validate( value.u, valid );
+  }
+
+  /*
+    +===============+ --------+
+    | lookup header |         |
+    +===============+         |
+    | BinSrchHeader |         |
+    +===============+         |
+    | lastGlyph[0]  |         |
+    +---------------+         |
+    | firstGlyph[0] |         |    head of lookup table
+    +---------------+         |             +
+    | offset[0]     |    ->   |          offset            [byte]
+    +===============+         |             +
+    | lastGlyph[1]  |         | (glyphID - firstGlyph) * 2 [byte]
+    +---------------+         |
+    | firstGlyph[1] |         |
+    +---------------+         |
+    | offset[1]     |         |
+    +===============+         |
+                              |
+     ....                     |
+                              |
+    16bit value array         |
+    +===============+         |
+    |     value     | <-------+
+     ....
+  */
+
+  static GXV_LookupValueDesc
+  gxv_mort_subtable_type4_lookupfmt4_transit(
+    FT_UShort            relative_gindex,
+    GXV_LookupValueDesc  base_value,
+    FT_Bytes             lookuptbl_limit,
+    GXV_Validator        valid )
+  {
+    FT_Bytes             p;
+    FT_Bytes             limit;
+    FT_UShort            offset;
+    GXV_LookupValueDesc  value;
+
+    /* XXX: check range? */
+    offset = (FT_UShort)( base_value.u +
+                          relative_gindex * sizeof ( FT_UShort ) );
+
+    p     = valid->lookuptbl_head + offset;
+    limit = lookuptbl_limit;
+
+    GXV_LIMIT_CHECK( 2 );
+    value.u = FT_NEXT_USHORT( p );
+
+    return value;
+  }
+
+
+  FT_LOCAL_DEF( void )
+  gxv_mort_subtable_type4_validate( FT_Bytes       table,
+                                    FT_Bytes       limit,
+                                    GXV_Validator  valid )
+  {
+    FT_Bytes  p = table;
+
+
+    GXV_NAME_ENTER( "mort chain subtable type4 "
+                    "(Non-Contextual Glyph Substitution)" );
+
+    valid->lookupval_sign   = GXV_LOOKUPVALUE_UNSIGNED;
+    valid->lookupval_func   = gxv_mort_subtable_type4_lookupval_validate;
+    valid->lookupfmt4_trans = gxv_mort_subtable_type4_lookupfmt4_transit;
+
+    gxv_LookupTable_validate( p, limit, valid );
+
+    GXV_EXIT;
+  }
+
+
+/* END */