summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexei Podtelezhnikov <apodtele@gmail.com>2018-12-18 22:40:04 -0500
committerAlexei Podtelezhnikov <apodtele@gmail.com>2018-12-18 22:40:04 -0500
commit1728230b6d46da3a8bd208550182dbfacf2b5a7b (patch)
tree0982ee5b4d2b1b123bb7fbfea6f6f3477011e098
parent953b3682b69b438ce7e6827628909788da25c373 (diff)
downloadfreetype2-color.tar.gz
* src/smooth/ftsmooth.c (ft_smooth_render_bgra): Restore contours.color
-rw-r--r--ChangeLog4
-rw-r--r--src/smooth/ftsmooth.c9
2 files changed, 11 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 47bd88705..76f057ac8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2018-12-18 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ * src/smooth/ftsmooth.c (ft_smooth_render_bgra): Restore contours.
+
2018-12-11 Alexei Podtelezhnikov <apodtele@gmail.com>
Color glyph framework and rendering (3/3).
diff --git a/src/smooth/ftsmooth.c b/src/smooth/ftsmooth.c
index 44ceb09ed..4d80bc9e8 100644
--- a/src/smooth/ftsmooth.c
+++ b/src/smooth/ftsmooth.c
@@ -432,7 +432,7 @@
FT_Outline outline = slot->outline; /* hard copy */
FT_Bitmap target;
FT_Vector target_offset, offset;
- short i, c_done, p_done;
+ short i, j, c_done, p_done;
/* check glyph image format */
@@ -471,7 +471,8 @@
slot->outline.n_points = outline.contours[i] - p_done + 1;
slot->outline.contours[i - c_done] = outline.contours[i] - p_done;
- if ( i == outline.n_contours - 1 ||
+ /* layer ends when color changes */
+ if ( i == outline.n_contours - 1 ||
slot->color[i + 1].red != slot->color[c_done].red ||
slot->color[i + 1].green != slot->color[c_done].green ||
slot->color[i + 1].blue != slot->color[c_done].blue ||
@@ -498,6 +499,10 @@
if ( error )
break;
+ /* restore contours */
+ for ( j = 0; j < slot->outline.n_contours; j++ )
+ slot->outline.contours[j] += p_done;
+
c_done += slot->outline.n_contours;
p_done += slot->outline.n_points;