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.h backen...


From: Bastiaan Jacques
Subject: [Gnash-commit] gnash ChangeLog backend/render_handler.h backen...
Date: Thu, 01 Nov 2007 09:35:47 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Bastiaan Jacques <bjacques>     07/11/01 09:35:47

Modified files:
        .              : ChangeLog 
        backend        : render_handler.h render_handler_cairo.cpp 
                         render_handler_ogl.cpp 

Log message:
                * backend/render_handler.h: Document that renderers should
                ignore subshapes in glyphs, as demonstrated by Agg and
                evidenced in text-test.swf.
                * backend/render_handler_{cairo,ogl}.cpp: draw_glyph: call
                draw_subshape directly with all paths, since subshapes should
                be ignored.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.4752&r2=1.4753
http://cvs.savannah.gnu.org/viewcvs/gnash/backend/render_handler.h?cvsroot=gnash&r1=1.47&r2=1.48
http://cvs.savannah.gnu.org/viewcvs/gnash/backend/render_handler_cairo.cpp?cvsroot=gnash&r1=1.27&r2=1.28
http://cvs.savannah.gnu.org/viewcvs/gnash/backend/render_handler_ogl.cpp?cvsroot=gnash&r1=1.84&r2=1.85

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.4752
retrieving revision 1.4753
diff -u -b -r1.4752 -r1.4753
--- ChangeLog   1 Nov 2007 08:04:08 -0000       1.4752
+++ ChangeLog   1 Nov 2007 09:35:45 -0000       1.4753
@@ -1,3 +1,12 @@
+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.
+       * backend/render_handler_{cairo,ogl}.cpp: draw_glyph: call
+       draw_subshape directly with all paths, since subshapes should
+       be ignored.
+
 2007-10-31 Bastiaan Jacques <address@hidden>
 
        * backend/render_handler_ogl.h: New header file; the beginnings

Index: backend/render_handler.h
===================================================================
RCS file: /sources/gnash/gnash/backend/render_handler.h,v
retrieving revision 1.47
retrieving revision 1.48
diff -u -b -r1.47 -r1.48
--- backend/render_handler.h    30 Oct 2007 18:55:40 -0000      1.47
+++ backend/render_handler.h    1 Nov 2007 09:35:46 -0000       1.48
@@ -18,7 +18,7 @@
 // 
 //
 
-/* $Id: render_handler.h,v 1.47 2007/10/30 18:55:40 strk Exp $ */
+/* $Id: render_handler.h,v 1.48 2007/11/01 09:35:46 bjacques Exp $ */
 
 #ifndef RENDER_HANDLER_H
 #define RENDER_HANDLER_H
@@ -497,6 +497,8 @@
   /// Glyphs are defined just like shape characters with the difference that
   /// they do not have any fill or line styles.
   /// Instead, the shape must be drawn using the given color (solid fill). 
+  /// Please note that although the glyph paths may indicate subshapes,
+  /// the renderer is to ignore that information.
   /// 
   /// @param def
   ///

Index: backend/render_handler_cairo.cpp
===================================================================
RCS file: /sources/gnash/gnash/backend/render_handler_cairo.cpp,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -b -r1.27 -r1.28
--- backend/render_handler_cairo.cpp    18 Oct 2007 23:14:18 -0000      1.27
+++ backend/render_handler_cairo.cpp    1 Nov 2007 09:35:46 -0000       1.28
@@ -17,9 +17,6 @@
 
 // Known bugs:
 // - Shape filling problems: renderer skips certain fills. See car_smash.swf.
-// - Fonts: The "a" is not filled in text-test.swf. If subshapes are ignored
-//          then it works as expected. The Agg renderer would suggest this has
-//          something to do with the fill rule.
 // - Rotation problem in gradient-tests.swf.
 //
 // TODOs:
@@ -627,7 +624,7 @@
 
        
        void
-       draw_subshape(PathVec& path_vec,
+       draw_subshape(const PathVec& path_vec,
          const matrix& mat,
     const cxform& cx,
     float pixel_scale,
@@ -834,7 +831,21 @@
     const PathVec& path_vec = def->get_paths();
     
     std::vector<line_style> dummy_ls;
-    draw_shape_character(def, mat, dummy_cx, pixel_scale, glyph_fs, dummy_ls); 
+    
+    cairo_matrix_t old_matrix;
+    cairo_get_matrix(_cr, &old_matrix);
+
+    apply_matrix(_cr, mat);
+    
+    std::vector<cairo_pattern_t*> fill_styles_cairo
+      = build_cairo_styles(glyph_fs, dummy_cx, mat);
+      
+    
+    draw_subshape(path_vec, mat, dummy_cx, pixel_scale, fill_styles_cairo, 
dummy_ls);
+    
+    destroy_cairo_patterns(fill_styles_cairo);
+    
+    cairo_set_matrix(_cr, &old_matrix);    
   }
 
   virtual bool allow_glyph_textures()
@@ -901,6 +912,8 @@
         return 8;
       case CAIRO_FORMAT_A1:
         return 1;    
+      default:
+        return 0;
     }   
   }
   

Index: backend/render_handler_ogl.cpp
===================================================================
RCS file: /sources/gnash/gnash/backend/render_handler_ogl.cpp,v
retrieving revision 1.84
retrieving revision 1.85
diff -u -b -r1.84 -r1.85
--- backend/render_handler_ogl.cpp      1 Nov 2007 08:04:09 -0000       1.84
+++ backend/render_handler_ogl.cpp      1 Nov 2007 09:35:47 -0000       1.85
@@ -258,7 +258,8 @@
   }
 }
 
-void Tesselator::endContour()
+void
+Tesselator::endContour()
 {
   gluTessEndContour(_tessobj);  
 }
@@ -1414,7 +1415,13 @@
     glyph_fs.push_back(coloring);
     
     std::vector<line_style> dummy_ls;
-    draw_shape_character(def, mat, dummy_cx, pixel_scale, glyph_fs, dummy_ls); 
+    
+    glPushMatrix();
+    apply_matrix(mat);
+    
+    draw_subshape(def->get_paths(), mat, dummy_cx, pixel_scale, glyph_fs, 
dummy_ls);
+    
+    glPopMatrix();
   }
 
   virtual bool allow_glyph_textures()




reply via email to

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