Commit b624868b8e9355ad5a4ff07d67aa6188499e3334

Ewald Hew 2017-09-24T22:32:40

Move `cff_random' into `psaux' service. NOTE: Does not compile! Minor fix to allow both `cff' and `psaux' to use `cff_random'. * src/cff/cffload.c (cff_random): Move to... * src/psaux/psobjs.c: Here. * src/cff/cffload.h: Move corresponding declaration to `src/psaux/psobjs.h'. * include/freetype/internal/psaux.h (PSAux_ServiceRec): Register the function here... * src/psaux/psauxmod.c: And here. * src/cff/cffload.c, src/psaux/cf2intrp.c: Update code.

diff --git a/ChangeLog b/ChangeLog
index 386b6c9..45fba7d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,24 @@
 2017-09-24  Ewald Hew  <ewaldhew@gmail.com>
 
+	[psaux, cff] Move `cff_random' into `psaux' service.
+
+	NOTE: Does not compile!
+
+	Minor fix to allow both `cff' and `psaux' to use `cff_random'.
+
+	* src/cff/cffload.c (cff_random): Move to...
+	* src/psaux/psobjs.c: Here.
+	* src/cff/cffload.h: Move corresponding declaration to
+	`src/psaux/psobjs.h'.
+
+	* include/freetype/internal/psaux.h (PSAux_ServiceRec): Register the
+	function here...
+	* src/psaux/psauxmod.c: And here.
+
+	* src/cff/cffload.c, src/psaux/cf2intrp.c: Update code.
+
+2017-09-24  Ewald Hew  <ewaldhew@gmail.com>
+
 	[cff] Move struct declarations to `freetype/internal'.
 
 	NOTE: Does not compile!
diff --git a/include/freetype/internal/psaux.h b/include/freetype/internal/psaux.h
index f127a44..258009b 100644
--- a/include/freetype/internal/psaux.h
+++ b/include/freetype/internal/psaux.h
@@ -1067,6 +1067,10 @@ FT_BEGIN_HEADER
                    FT_Offset  length,
                    FT_UShort  seed );
 
+    FT_UInt32
+    (*cff_random)( FT_UInt32  r );
+
+
     T1_CMap_Classes  t1_cmap_classes;
 
     /* fields after this comment line were added after version 2.1.10 */
diff --git a/src/cff/cffload.c b/src/cff/cffload.c
index 1242038..5e6839d 100644
--- a/src/cff/cffload.c
+++ b/src/cff/cffload.c
@@ -1945,18 +1945,6 @@
   }
 
 
-  FT_LOCAL_DEF( FT_UInt32 )
-  cff_random( FT_UInt32  r )
-  {
-    /* a 32bit version of the `xorshift' algorithm */
-    r ^= r << 13;
-    r ^= r >> 17;
-    r ^= r << 5;
-
-    return r;
-  }
-
-
   /* There are 3 ways to call this function, distinguished by code.  */
   /*                                                                 */
   /* . CFF_CODE_TOPDICT for either a CFF Top DICT or a CFF Font DICT */
@@ -1980,6 +1968,8 @@
     CFF_FontRecDict  top  = &subfont->font_dict;
     CFF_Private      priv = &subfont->private_dict;
 
+    PSAux_Service  psaux = (PSAux_Service)face->psaux;
+
     FT_Bool  cff2      = FT_BOOL( code == CFF2_CODE_TOPDICT  ||
                                   code == CFF2_CODE_FONTDICT );
     FT_UInt  stackSize = cff2 ? CFF2_DEFAULT_STACK
@@ -2094,7 +2084,7 @@
           do
           {
             driver->random_seed =
-              (FT_Int32)cff_random( (FT_UInt32)driver->random_seed );
+              (FT_Int32)psaux->cff_random( (FT_UInt32)driver->random_seed );
 
           } while ( driver->random_seed < 0 );
         }
@@ -2107,7 +2097,7 @@
           do
           {
             face->root.internal->random_seed =
-              (FT_Int32)cff_random( (FT_UInt32)face->root.internal->random_seed );
+              (FT_Int32)psaux->cff_random( (FT_UInt32)face->root.internal->random_seed );
 
           } while ( face->root.internal->random_seed < 0 );
         }
diff --git a/src/cff/cffload.h b/src/cff/cffload.h
index 82a0417..ef3c1bd 100644
--- a/src/cff/cffload.h
+++ b/src/cff/cffload.h
@@ -61,9 +61,6 @@ FT_BEGIN_HEADER
                              FT_UInt      cid );
 
 
-  FT_LOCAL( FT_UInt32 )
-  cff_random( FT_UInt32  r );
-
   FT_LOCAL( FT_Error )
   cff_font_load( FT_Library  library,
                  FT_Stream   stream,
diff --git a/src/psaux/cf2intrp.c b/src/psaux/cf2intrp.c
index 3e7ad57..605b468 100644
--- a/src/psaux/cf2intrp.c
+++ b/src/psaux/cf2intrp.c
@@ -47,6 +47,7 @@
 #include "cf2intrp.h"
 
 #include "cf2error.h"
+#include "psobjs.h"  /* for cff_random */
 
 
   /*************************************************************************/
diff --git a/src/psaux/psauxmod.c b/src/psaux/psauxmod.c
index cd9f525..a880881 100644
--- a/src/psaux/psauxmod.c
+++ b/src/psaux/psauxmod.c
@@ -143,6 +143,7 @@
     &t1_builder_funcs,
     &t1_decoder_funcs,
     t1_decrypt,
+    cff_random,
 
     (const T1_CMap_ClassesRec*) &t1_cmap_classes,
 
diff --git a/src/psaux/psobjs.c b/src/psaux/psobjs.c
index db268fc..92691db 100644
--- a/src/psaux/psobjs.c
+++ b/src/psaux/psobjs.c
@@ -2044,4 +2044,16 @@
   }
 
 
+  FT_LOCAL_DEF( FT_UInt32 )
+  cff_random( FT_UInt32  r )
+  {
+    /* a 32bit version of the `xorshift' algorithm */
+    r ^= r << 13;
+    r ^= r >> 17;
+    r ^= r << 5;
+
+    return r;
+  }
+
+
 /* END */
diff --git a/src/psaux/psobjs.h b/src/psaux/psobjs.h
index c06bb28..c163794 100644
--- a/src/psaux/psobjs.h
+++ b/src/psaux/psobjs.h
@@ -247,6 +247,10 @@ FT_BEGIN_HEADER
               FT_UShort  seed );
 
 
+  FT_LOCAL( FT_UInt32 )
+  cff_random( FT_UInt32  r );
+
+
 FT_END_HEADER
 
 #endif /* PSOBJS_H_ */