summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSøren Sandmann Pedersen <ssp@redhat.com>2013-01-14 06:13:19 -0500
committerSøren Sandmann Pedersen <ssp@redhat.com>2013-01-14 06:13:19 -0500
commit9aabff83c1cd698f371a9c13b66868ad1228c301 (patch)
treefa38d803fbeb1ef6e465fc8b6a0ddf06245b9ab7
parentdfce703f762f5b1601e18cf6f976be45d7e0333b (diff)
asdf
-rw-r--r--pics.c47
1 files changed, 47 insertions, 0 deletions
diff --git a/pics.c b/pics.c
index 9c344de..794b375 100644
--- a/pics.c
+++ b/pics.c
@@ -536,6 +536,8 @@ clear_to_white (cairo_t *cr)
static void
draw_pixel_box (cairo_t *cr)
{
+ cairo_save (cr);
+ cairo_set_line_width (cr, 1.4142135623730951);
cairo_set_source_rgb (cr, 0, 0, 0);
cairo_rectangle (cr, 1, 1, 178, 178);
cairo_move_to (cr, 1, 1);
@@ -543,6 +545,7 @@ draw_pixel_box (cairo_t *cr)
cairo_move_to (cr, 179, 1);
cairo_line_to (cr, 1, 179);
cairo_stroke (cr);
+ cairo_restore (cr);
}
static void
@@ -563,6 +566,49 @@ general_pixel_diagram (const char *filename)
}
static void
+over_diagram (const char *filename)
+{
+ cairo_t *cr = get_cairo (180, 180);
+
+ cairo_move_to (cr, 1, 1);
+ cairo_line_to (cr, 90, 90);
+ cairo_line_to (cr, 179, 1);
+ cairo_set_source_rgb (cr, SOURCE_COLOR);
+ cairo_fill (cr);
+
+ cairo_set_source_rgb (cr, 1, 1, 1);
+ centered_text (cr, 90, 45, "Both");
+
+ cairo_move_to (cr, 1, 1);
+ cairo_line_to (cr, 90, 90);
+ cairo_line_to (cr, 1, 179);
+ cairo_set_source_rgb (cr, SOURCE_COLOR);
+ cairo_fill (cr);
+
+ cairo_set_source_rgb (cr, 1, 1, 1);
+ centered_text (cr, 35, 90, "Source");
+
+ cairo_move_to (cr, 179, 1);
+ cairo_line_to (cr, 90, 90);
+ cairo_line_to (cr, 179, 179);
+ cairo_set_source_rgb (cr, DEST_COLOR);
+ cairo_fill (cr);
+
+ cairo_set_source_rgb (cr, 1, 1, 1);
+ centered_text (cr, 145, 90, "Dest");
+
+ cairo_set_source_rgb (cr, 0, 0, 0);
+ centered_text (cr, 90, 147, "Neither");
+
+ cairo_new_path (cr);
+
+ cairo_set_operator (cr, CAIRO_OPERATOR_OVER);
+ draw_pixel_box (cr);
+
+ finish (cr, filename);
+}
+
+static void
dest_atop_diagram (const char *filename)
{
cairo_t *cr = get_cairo (180, 180);
@@ -724,6 +770,7 @@ main (int argc, char *argv)
create_op (CAIRO_OPERATOR_OVER, "Over", "over.png");
create_porter_duff_table ();
general_pixel_diagram ("diagram.png");
+ over_diagram ("over-diagram.png");
dest_atop_diagram ("destatop-diagram.png");
color_dodge_diagram ("colordodge-diagram.png");
color_dodge_dest_diagram ("colordodge-dest-diagram.png");