[pango/line-underline] renderer: Implement overlines



commit 977bbd6a9bd020894814be98df460b3b46347659
Author: Matthias Clasen <mclasen redhat com>
Date:   Tue Aug 20 01:18:51 2019 +0200

    renderer: Implement overlines
    
    This is currently implemented as an underline variant,
    which may not be ideal, but avoids extra plumbing.
    
    Closes: https://gitlab.gnome.org/GNOME/pango/issues/212

 pango/pango-renderer.c | 11 +++++++++++
 1 file changed, 11 insertions(+)
---
diff --git a/pango/pango-renderer.c b/pango/pango-renderer.c
index 51403785..c2917ec7 100644
--- a/pango/pango-renderer.c
+++ b/pango/pango-renderer.c
@@ -228,6 +228,7 @@ draw_underline (PangoRenderer *renderer,
     case PANGO_UNDERLINE_SINGLE:
     case PANGO_UNDERLINE_LOW:
     case PANGO_UNDERLINE_SINGLE_LINE:
+    case PANGO_UNDERLINE_OVER_LINE:
       pango_renderer_draw_rectangle (renderer,
                                     PANGO_RENDER_PART_UNDERLINE,
                                     rect->x,
@@ -331,6 +332,16 @@ add_underline (PangoRenderer    *renderer,
     case PANGO_UNDERLINE_LOW:
       new_rect.y += ink_rect->y + ink_rect->height + underline_thickness;
       break;
+    case PANGO_UNDERLINE_OVER_LINE:
+      new_rect.y += ink_rect->y - underline_thickness + underline_position;
+      if (state->underline == renderer->underline)
+        {
+          new_rect.y = MIN (current_rect->y, new_rect.y);
+          new_rect.height = MAX (current_rect->height, new_rect.height);
+          current_rect->y = new_rect.y;
+          current_rect->height = new_rect.height;
+        }
+      break;
     case PANGO_UNDERLINE_SINGLE_LINE:
     case PANGO_UNDERLINE_DOUBLE_LINE:
     case PANGO_UNDERLINE_ERROR_LINE:


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