freetype-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[freetype2] master 753e113 7/9: [cff] Introduce `random-seed' property (


From: Werner LEMBERG
Subject: [freetype2] master 753e113 7/9: [cff] Introduce `random-seed' property (2/2).
Date: Mon, 20 Feb 2017 03:16:25 -0500 (EST)

branch: master
commit 753e1131eeadcfec4bf2c24fdaf67bf9d3005b6e
Author: Werner Lemberg <address@hidden>
Commit: Werner Lemberg <address@hidden>

    [cff] Introduce `random-seed' property (2/2).
    
    * src/base/ftobjs.c: Include `FT_CFF_DRIVER_H'.
    (open_face): Initialize `face->internal->random_seed'.
    (FT_Face_Properties): Handle `FT_PARAM_TAG_RANDOM_SEED'.
    
    * src/cff/cffdrivr.c (cff_property_set): Handle `random-seed'
    property.
---
 ChangeLog          | 11 +++++++++++
 src/base/ftobjs.c  | 17 +++++++++++++++++
 src/cff/cffdrivr.c | 24 ++++++++++++++++++++++++
 3 files changed, 52 insertions(+)

diff --git a/ChangeLog b/ChangeLog
index 9ec0b1f..98f58cc 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,16 @@
 2017-02-20  Werner Lemberg  <address@hidden>
 
+       [cff] Introduce `random-seed' property (2/2).
+
+       * src/base/ftobjs.c: Include `FT_CFF_DRIVER_H'.
+       (open_face): Initialize `face->internal->random_seed'.
+       (FT_Face_Properties): Handle `FT_PARAM_TAG_RANDOM_SEED'.
+
+       * src/cff/cffdrivr.c (cff_property_set): Handle `random-seed'
+       property.
+
+2017-02-20  Werner Lemberg  <address@hidden>
+
        [cff] Introduce `random-seed' property (1/2).
 
        We need this for support of the `random' operator.
diff --git a/src/base/ftobjs.c b/src/base/ftobjs.c
index d9ce466..f86369e 100644
--- a/src/base/ftobjs.c
+++ b/src/base/ftobjs.c
@@ -38,6 +38,7 @@
 #include FT_SERVICE_TRUETYPE_ENGINE_H
 
 #include FT_AUTOHINTER_H
+#include FT_CFF_DRIVER_H
 
 #ifdef FT_CONFIG_OPTION_MAC_FONTS
 #include "ftbase.h"
@@ -1188,6 +1189,8 @@
     }
 #endif
 
+    face->internal->random_seed = -1;
+
     if ( clazz->init_face )
       error = clazz->init_face( *astream,
                                 face,
@@ -3650,6 +3653,20 @@
         goto Exit;
 #endif
       }
+      else if ( properties->tag == FT_PARAM_TAG_RANDOM_SEED )
+      {
+        if ( properties->data )
+        {
+          face->internal->random_seed = *( (FT_Int32*)properties->data );
+          if ( face->internal->random_seed < 0 )
+            face->internal->random_seed = 0;
+        }
+        else
+        {
+          /* use module default */
+          face->internal->random_seed = -1;
+        }
+      }
       else
       {
         error = FT_THROW( Invalid_Argument );
diff --git a/src/cff/cffdrivr.c b/src/cff/cffdrivr.c
index fe28574..38bfc2c 100644
--- a/src/cff/cffdrivr.c
+++ b/src/cff/cffdrivr.c
@@ -871,6 +871,30 @@
 
       return error;
     }
+    else if ( !ft_strcmp( property_name, "random-seed" ) )
+    {
+      FT_Int32  random_seed;
+
+
+#ifdef FT_CONFIG_OPTION_ENVIRONMENT_PROPERTIES
+      if ( value_is_string )
+      {
+        const char*  s = (const char*)value;
+
+
+        random_seed = (FT_Int32)ft_strtol( s, NULL, 10 );
+      }
+      else
+#endif
+        random_seed = *(FT_Int32*)value;
+
+      if ( random_seed < 0 )
+        random_seed = 0;
+
+      driver->random_seed = random_seed;
+
+      return error;
+    }
 
     FT_TRACE0(( "cff_property_set: missing property `%s'\n",
                 property_name ));



reply via email to

[Prev in Thread] Current Thread [Next in Thread]