[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[freetype2] gsoc-anurag-2023 c42d8b1bf: Connect prelines to renderer
From: |
Werner Lemberg |
Subject: |
[freetype2] gsoc-anurag-2023 c42d8b1bf: Connect prelines to renderer |
Date: |
Sat, 2 Sep 2023 16:47:52 -0400 (EDT) |
branch: gsoc-anurag-2023
commit c42d8b1bf737e437153d19e1f5c202e39adb18bd
Author: Anurag Thakur <anurag105csec21@bpitindia.edu.in>
Commit: Anurag Thakur <anurag105csec21@bpitindia.edu.in>
Connect prelines to renderer
---
include/freetype/ftimage.h | 1 +
src/base/ftobjs.c | 16 ++++++++++------
src/dense/ftdense.c | 25 +++++++++++++++++++++----
src/dense/ftdenserend.c | 1 +
4 files changed, 33 insertions(+), 10 deletions(-)
diff --git a/include/freetype/ftimage.h b/include/freetype/ftimage.h
index 6baa81256..0c29c76fb 100644
--- a/include/freetype/ftimage.h
+++ b/include/freetype/ftimage.h
@@ -1059,6 +1059,7 @@ FT_BEGIN_HEADER
FT_Raster_BitSet_Func bit_set; /* unused */
void* user;
FT_BBox clip_box;
+ void* prelines;
} FT_Raster_Params;
diff --git a/src/base/ftobjs.c b/src/base/ftobjs.c
index 7acde344e..dac2c24ce 100644
--- a/src/base/ftobjs.c
+++ b/src/base/ftobjs.c
@@ -2570,9 +2570,10 @@
if ( !outline )
return FT_THROW( Invalid_Outline );
- for ( n = 0; n < outline->n_contours; n++ )
+ last = -1;
+ for ( n = 0; n < outline->n_contours; n++ )
{
- FT_TRACE5(( "FT_Outline_Decompose: Contour %d\n", n ));
+ FT_TRACE5(( "ft_decompose_outline: Contour %d\n", n ));
first = last + 1;
last = outline->contours[n];
@@ -2629,6 +2630,7 @@
// if ( error )
// goto Exit;
+ FT_PreLine ptr = (*slot)->prelines;
while ( point < limit )
{
point++;
@@ -2642,8 +2644,8 @@
FT_Vector vec;
- vec.x = SCALED( point->x );
- vec.y = SCALED( point->y );
+ vec.x = point->x;
+ vec.y = point->y;
FT_TRACE5(( " line to (%.2f, %.2f)\n",
(double)vec.x / 64, (double)vec.y / 64 ));
@@ -2654,7 +2656,8 @@
pl->x2 = vec.x;
pl->y2 = vec.y;
pl->next = NULL;
- (*slot)->prelines->next = pl;
+ ptr->next = pl;
+ ptr = ptr->next;
continue;
}
@@ -2954,7 +2957,8 @@
pl->y2 = 3;
pl->next = NULL;
- ft_decompose_outline(face->garray[gindex]);
+
+ ft_decompose_outline(&face->garray[gindex]);
}
diff --git a/src/dense/ftdense.c b/src/dense/ftdense.c
index f0f3e59f9..4e91d439c 100644
--- a/src/dense/ftdense.c
+++ b/src/dense/ftdense.c
@@ -9,6 +9,8 @@
#include <freetype/internal/ftobjs.h>
#include <math.h>
+
+#include <stdio.h>
#include "ftdense.h"
#include "ftdenseerrs.h"
@@ -416,10 +418,23 @@ FT_DEFINE_OUTLINE_FUNCS( dense_decompose_funcs,
)
static int
-dense_render_glyph( dense_worker* worker, const FT_Bitmap* target )
+dense_render_glyph( dense_worker* worker, const FT_Bitmap* target, FT_PreLine
pl )
{
- FT_Error error = FT_Outline_Decompose( &( worker->outline ),
- &dense_decompose_funcs, worker );
+ // FT_Error error = FT_Outline_Decompose( &( worker->outline ),
+ // &dense_decompose_funcs, worker );
+ FT_Vector point = {100, 100};
+ FT_Error error = dense_move_to(&point, worker);
+ while (pl!=NULL)
+ {
+ point.x = pl->x2/64;
+ point.y = pl->y2/64;
+ dense_line_to(&point, worker);
+ pl= pl->next;
+ }
+ point.x = 100;
+ point.y = 100;
+ dense_move_to(&point, worker);
+
// Render into bitmap
const FT20D12* source = worker->m_a;
unsigned char* dest = target->buffer;
@@ -495,6 +510,8 @@ dense_raster_render( FT_Raster raster, const
FT_Raster_Params* params )
{
const FT_Outline* outline = (const FT_Outline*)params->source;
FT_Bitmap* target_map = params->target;
+ FT_PreLine pl = params->prelines;
+ printf("%d\n", pl->next->x1);
dense_worker worker[1];
@@ -536,7 +553,7 @@ dense_raster_render( FT_Raster raster, const
FT_Raster_Params* params )
// Invert the pitch to account for different +ve y-axis direction in dense
array
// (maybe temporary solution)
target_map->pitch *= -1;
- return dense_render_glyph( worker, target_map );
+ return dense_render_glyph( worker, target_map, pl );
}
FT_DEFINE_RASTER_FUNCS(
diff --git a/src/dense/ftdenserend.c b/src/dense/ftdenserend.c
index 3aa98cde6..51d1626a0 100644
--- a/src/dense/ftdenserend.c
+++ b/src/dense/ftdenserend.c
@@ -168,6 +168,7 @@
/* set up parameters */
params.target = bitmap;
params.source = outline;
+ params.prelines = slot->prelines;
/* render the outline */
error =
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [freetype2] gsoc-anurag-2023 c42d8b1bf: Connect prelines to renderer,
Werner Lemberg <=