freetype-commit
[Top][All Lists]
Advanced

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

[freetype2] gsoc-anurag-2022 ca00d34af 2/3: Fixed point: added minmax an


From: Werner Lemberg
Subject: [freetype2] gsoc-anurag-2022 ca00d34af 2/3: Fixed point: added minmax and changed array type
Date: Mon, 3 Oct 2022 17:45:43 -0400 (EDT)

branch: gsoc-anurag-2022
commit ca00d34af974adf561cb2a3109df31e5e7300f3b
Author: Anurag Thakur <anurag105csec21@bpitindia.edu.in>
Commit: Anurag Thakur <anurag105csec21@bpitindia.edu.in>

    Fixed point: added minmax and changed array type
---
 src/dense/ftdense.c | 35 +++++++++++++++++++++--------------
 src/dense/ftdense.h |  4 +++-
 2 files changed, 24 insertions(+), 15 deletions(-)

diff --git a/src/dense/ftdense.c b/src/dense/ftdense.c
index e6492f633..3bf94377e 100644
--- a/src/dense/ftdense.c
+++ b/src/dense/ftdense.c
@@ -58,6 +58,22 @@ dense_line_to( const FT_Vector* to, dense_worker* worker )
   dense_move_to( to, worker );
   return 0;
 }
+
+FT26D6 max(FT26D6 x, FT26D6 y){
+  if(x > y){
+    return x;
+  }
+  
+  return y;
+}
+
+FT26D6 min(FT26D6 x, FT26D6 y){
+  if(x < y){
+    return x;
+  }
+  
+  return y;
+}
 void
 swap( long int* a, long int* b )
 {
@@ -391,16 +407,15 @@ dense_render_glyph( dense_worker* worker, const 
FT_Bitmap* target )
   //   offset = _mm_shuffle_ps(x, x, _MM_SHUFFLE(3, 3, 3, 3));
   // }
 
-  int valnew = 0;
-  float          value    = 0.0f;
+  FT20D12 valnew = 0;
+  //float          value    = 0.0f;
   while ( dest < dest_end )
   {
-    valnew += (int)(*source++ * 1048576.0f);
+    valnew += *source++;
 
-
-    if(valnew > 10){
+    if(valnew > 0){
       int nnew = valnew * 255;
-      nnew >>= 20;
+      nnew >>= 4;
 
       if(nnew>255)nnew=255;
       *dest = (unsigned char)nnew;
@@ -421,14 +436,6 @@ dense_render_glyph( dense_worker* worker, const FT_Bitmap* 
target )
     dest++;
   }
 
-  // 12_20 integer
-  // int          value    = 0;
-  // while ( dest < dest_end )
-  // {
-  //   if(*source != 0.0f){
-  //     printf("%f\n", *source);
-  //   }
-  //   value += (int) (*source++ * 1048576.0f);
 
 
   //   if ( value > 0.0f )
diff --git a/src/dense/ftdense.h b/src/dense/ftdense.h
index 9b74979d8..bc6d16c61 100644
--- a/src/dense/ftdense.h
+++ b/src/dense/ftdense.h
@@ -41,11 +41,13 @@ extern "C"
 #endif
 
   typedef long TPos;
+  typedef unsigned int FT26D6;
+  typedef signed int FT20D12;
 
   typedef struct
   {
     /** The array used to store signed area differences. */
-    float* m_a;
+    FT20D12* m_a;
     /** The number of elements in m_a. */
     int m_a_size;
     /** The width of the current raster in pixels. */



reply via email to

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