gnash-commit
[Top][All Lists]
Advanced

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

[Gnash-commit] gnash ChangeLog backend/render_handler_cairo.cpp


From: Bastiaan Jacques
Subject: [Gnash-commit] gnash ChangeLog backend/render_handler_cairo.cpp
Date: Thu, 01 Nov 2007 10:29:55 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Bastiaan Jacques <bjacques>     07/11/01 10:29:55

Modified files:
        .              : ChangeLog 
        backend        : render_handler_cairo.cpp 

Log message:
        Implement draw_poly.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.4753&r2=1.4754
http://cvs.savannah.gnu.org/viewcvs/gnash/backend/render_handler_cairo.cpp?cvsroot=gnash&r1=1.28&r2=1.29

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.4753
retrieving revision 1.4754
diff -u -b -r1.4753 -r1.4754
--- ChangeLog   1 Nov 2007 09:35:45 -0000       1.4753
+++ ChangeLog   1 Nov 2007 10:29:54 -0000       1.4754
@@ -1,5 +1,9 @@
 2007-11-01 Bastiaan Jacques <address@hidden>
 
+       * backend/render_handler_cairo.cpp: Implement draw_poly.
+       
+2007-11-01 Bastiaan Jacques <address@hidden>
+
        * backend/render_handler.h: Document that renderers should
        ignore subshapes in glyphs, as demonstrated by Agg and
        evidenced in text-test.swf.

Index: backend/render_handler_cairo.cpp
===================================================================
RCS file: /sources/gnash/gnash/backend/render_handler_cairo.cpp,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -b -r1.28 -r1.29
--- backend/render_handler_cairo.cpp    1 Nov 2007 09:35:46 -0000       1.28
+++ backend/render_handler_cairo.cpp    1 Nov 2007 10:29:55 -0000       1.29
@@ -18,6 +18,7 @@
 // Known bugs:
 // - Shape filling problems: renderer skips certain fills. See car_smash.swf.
 // - Rotation problem in gradient-tests.swf.
+// - The current coordinate system 
 //
 // TODOs:
 // - Implement focal gradients.
@@ -340,7 +341,35 @@
   virtual void  draw_poly(const point* corners, size_t corner_count, 
     const rgba& fill, const rgba& outline, bool masked)
   {
-    log_unimpl("draw_poly");
+    if (corner_count < 1) {
+      return;
+    }
+        
+    cairo_move_to(_cr, corners[0].m_x, corners[0].m_y);
+    
+    for (size_t i = 0; i < corner_count; ++i) {
+      cairo_line_to(_cr, corners[i].m_x, corners[i].m_y);
+    }
+    
+    cairo_close_path(_cr);
+    
+    if (fill.m_a) {
+      set_color(fill);
+      cairo_fill_preserve(_cr);    
+    }
+    
+    if (outline.m_a) {
+      set_color(outline);
+      
+      // FIXME: coordinate alignment (for single-pixel lines should be in
+      //        between two pixels for sharp hair line.
+      
+      cairo_set_line_width(_cr, 20.0);
+      cairo_stroke_preserve(_cr);    
+    }
+    
+    // Clear the current path which was _preserve()d.
+    cairo_new_path(_cr);    
   }
   
   virtual void  draw_bitmap(




reply via email to

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