From 07e224aa3415d29af232f491c7c593470dc7e8f0 Mon Sep 17 00:00:00 2001
From: Ozkan Sezer <[EMAIL REDACTED]>
Date: Wed, 16 Mar 2022 15:51:50 +0300
Subject: [PATCH] applied minor compatibility patches to freetype from
mainstream.
---
.../include/freetype/config/integer-types.h | 5 +++--
.../freetype/internal/compiler-macros.h | 6 ++++--
.../include/freetype/internal/ftcalc.h | 13 +++++++++++++
external/freetype-2.11.1/src/sdf/ftbsdf.c | 18 +++++++++---------
4 files changed, 29 insertions(+), 13 deletions(-)
diff --git a/external/freetype-2.11.1/include/freetype/config/integer-types.h b/external/freetype-2.11.1/include/freetype/config/integer-types.h
index 5ef09f1..3b902fc 100644
--- a/external/freetype-2.11.1/include/freetype/config/integer-types.h
+++ b/external/freetype-2.11.1/include/freetype/config/integer-types.h
@@ -221,9 +221,10 @@
#define FT_INT64 __int64
#define FT_UINT64 unsigned __int64
-#elif defined( __WATCOMC__ ) /* Watcom C++ */
+#elif defined( __WATCOMC__ ) && __WATCOMC__ >= 1100 /* Watcom C++ */
- /* Watcom doesn't provide 64-bit data types */
+#define FT_INT64 long long int
+#define FT_UINT64 unsigned long long int
#elif defined( __MWERKS__ ) /* Metrowerks CodeWarrior */
diff --git a/external/freetype-2.11.1/include/freetype/internal/compiler-macros.h b/external/freetype-2.11.1/include/freetype/internal/compiler-macros.h
index d8b61b3..1768e6e 100644
--- a/external/freetype-2.11.1/include/freetype/internal/compiler-macros.h
+++ b/external/freetype-2.11.1/include/freetype/internal/compiler-macros.h
@@ -299,10 +299,12 @@ FT_BEGIN_HEADER
#define FT_CALLBACK_DEF( x ) static x
#endif
-#if defined( __i386__ )
+#if defined( __GNUC__ ) && defined( __i386__ )
#define FT_COMPARE_DEF( x ) FT_CALLBACK_DEF( x ) __attribute__(( cdecl ))
-#elif defined( _M_IX86 )
+#elif defined( _MSC_VER ) && defined( _M_IX86 )
#define FT_COMPARE_DEF( x ) FT_CALLBACK_DEF( x ) __cdecl
+#elif defined( __WATCOMC__ ) && __WATCOMC__ >= 1240
+#define FT_COMPARE_DEF( x ) FT_CALLBACK_DEF( x ) __watcall
#else
#define FT_COMPARE_DEF( x ) FT_CALLBACK_DEF( x )
#endif
diff --git a/external/freetype-2.11.1/include/freetype/internal/ftcalc.h b/external/freetype-2.11.1/include/freetype/internal/ftcalc.h
index f88e055..ccd0c09 100644
--- a/external/freetype-2.11.1/include/freetype/internal/ftcalc.h
+++ b/external/freetype-2.11.1/include/freetype/internal/ftcalc.h
@@ -408,6 +408,19 @@ FT_BEGIN_HEADER
#endif
+#elif defined( __WATCOMC__ ) && defined( __386__ )
+
+ extern __inline FT_Int32
+ FT_MSB_i386( FT_UInt32 x );
+
+#pragma aux FT_MSB_i386 = \
+ "bsr eax, eax" \
+ parm [eax] nomemory \
+ value [eax] \
+ modify exact [eax] nomemory;
+
+#define FT_MSB( x ) FT_MSB_i386( x )
+
#elif defined( __DECC ) || defined( __DECCXX )
#include <builtins.h>
diff --git a/external/freetype-2.11.1/src/sdf/ftbsdf.c b/external/freetype-2.11.1/src/sdf/ftbsdf.c
index 8da5c9d..0144a15 100644
--- a/external/freetype-2.11.1/src/sdf/ftbsdf.c
+++ b/external/freetype-2.11.1/src/sdf/ftbsdf.c
@@ -177,11 +177,11 @@
*
* @Fields:
* dist ::
- * Vector length of the `near` parameter. Can be squared or absolute
+ * Vector length of the `prox` parameter. Can be squared or absolute
* depending on the `USE_SQUARED_DISTANCES` macro defined in file
* `ftsdfcommon.h`.
*
- * near ::
+ * prox ::
* Vector to the nearest edge. Can also be interpreted as shortest
* distance of a point.
*
@@ -194,7 +194,7 @@
typedef struct ED_
{
FT_16D16 dist;
- FT_16D16_Vec near;
+ FT_16D16_Vec prox;
FT_Byte alpha;
} ED;
@@ -595,18 +595,18 @@
worker->rows ) )
{
/* approximate the edge distance for edge pixels */
- ed[index].near = compute_edge_distance( ed + index,
+ ed[index].prox = compute_edge_distance( ed + index,
i, j,
worker->width,
worker->rows );
- ed[index].dist = VECTOR_LENGTH_16D16( ed[index].near );
+ ed[index].dist = VECTOR_LENGTH_16D16( ed[index].prox );
}
else
{
/* for non-edge pixels assign far away distances */
ed[index].dist = 400 * ONE;
- ed[index].near.x = 200 * ONE;
- ed[index].near.y = 200 * ONE;
+ ed[index].prox.x = 200 * ONE;
+ ed[index].prox.y = 200 * ONE;
}
}
}
@@ -873,7 +873,7 @@
if ( dist < current->dist )
{
- dist_vec = to_check->near;
+ dist_vec = to_check->prox;
dist_vec.x += x_offset * ONE;
dist_vec.y += y_offset * ONE;
@@ -882,7 +882,7 @@
if ( dist < current->dist )
{
current->dist = dist;
- current->near = dist_vec;
+ current->prox = dist_vec;
}
}
}