[dia] libart: fix DiaLibartRenderer::fill_bezier() to use ART_WIND_RULE_ODDEVEN



commit 1e936e66e9ed2e5cc4f92a48fb13989194a2c328
Author: Hans Breuer <hans breuer org>
Date:   Sat Apr 26 16:20:52 2014 +0200

    libart: fix DiaLibartRenderer::fill_bezier() to use ART_WIND_RULE_ODDEVEN
    
    It worked with the default for some bezier (e.g. with render-test.dia),
    but was producing lots of error with e.g. convert-to-path.dia.

 plug-ins/libart/dialibartrenderer.c |   11 ++++++++++-
 1 files changed, 10 insertions(+), 1 deletions(-)
---
diff --git a/plug-ins/libart/dialibartrenderer.c b/plug-ins/libart/dialibartrenderer.c
index 3c4b56d..2cd7e46 100644
--- a/plug-ins/libart/dialibartrenderer.c
+++ b/plug-ins/libart/dialibartrenderer.c
@@ -1005,7 +1005,16 @@ fill_bezier(DiaRenderer *self,
   art_free(bpath);
 
   svp = art_svp_from_vpath (vpath);
-  
+  {
+    /** We always use odd-even wind rule */
+    ArtSvpWriter *swr = art_svp_writer_rewind_new(ART_WIND_RULE_ODDEVEN);
+    ArtSVP *svp_rw;
+
+    art_svp_intersector(svp, swr);
+    svp_rw = art_svp_writer_rewind_reap(swr);
+    art_svp_free(svp);
+    svp = svp_rw;
+  }
   art_free( vpath );
   
   art_rgb_svp_alpha (svp,


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