[Top][All Lists]
[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(
- [Gnash-commit] gnash ChangeLog backend/render_handler_cairo.cpp,
Bastiaan Jacques <=