From: suyambu.rm Date: Mon, 16 Feb 2015 06:19:08 +0000 (+0900) Subject: Opensource Compliance Issue. X-Git-Tag: accepted/tizen/ivi/20160218.023439^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f658ee1c764eb624d271be64c5a1c8ee519c364e;p=platform%2Fcore%2Fgraphics%2Fcairo.git Opensource Compliance Issue. - Remove the files and directories regarding GPL2.0 license : doc/tutorial/*, test/* Change-Id: Id8866aef23f80f89859b66aa56fc4e98036e6c7b Signed-off-by: suyambu.rm --- diff --git a/Makefile.am b/Makefile.am index a797f2b..5fc8e3d 100644 --- a/Makefile.am +++ b/Makefile.am @@ -18,27 +18,26 @@ ACLOCAL_AMFLAGS = -I build ${ACLOCAL_FLAGS} #DIST_SUBDIRS = src doc util boilerplate test perf #SUBDIRS = src doc util -DIST_SUBDIRS = src doc util boilerplate test -SUBDIRS = src doc util - +DIST_SUBDIRS = src util boilerplate +SUBDIRS = src util # libpng is required for our test programs if CAIRO_HAS_PNG_FUNCTIONS #SUBDIRS += boilerplate test perf -SUBDIRS += boilerplate test +SUBDIRS += boilerplate endif configure: cairo-version.h -doc: - cd doc && $(MAKE) $(AM_MAKEFLAGS) $@ -test retest recheck: all - cd test && $(MAKE) $(AM_MAKEFLAGS) $@ -perf: all - cd perf && $(MAKE) $(AM_MAKEFLAGS) $@ -check-valgrind: all - cd test && $(MAKE) $(AM_MAKEFLAGS) check-valgrind - cd perf && $(MAKE) $(AM_MAKEFLAGS) check-valgrind -.PHONY: doc test retest recheck perf check-valgrind +#doc: +# cd doc && $(MAKE) $(AM_MAKEFLAGS) $@ +#test retest recheck: all +# cd test && $(MAKE) $(AM_MAKEFLAGS) $@ +#perf: all +# cd perf && $(MAKE) $(AM_MAKEFLAGS) $@ +#check-valgrind: all +# cd test && $(MAKE) $(AM_MAKEFLAGS) check-valgrind +# cd perf && $(MAKE) $(AM_MAKEFLAGS) check-valgrind +#.PHONY: doc test retest recheck perf check-valgrind EXTRA_DIST += \ diff --git a/configure.ac b/configure.ac index 1ace52b..0d85c2f 100644 --- a/configure.ac +++ b/configure.ac @@ -918,15 +918,11 @@ AC_CONFIG_FILES([ Makefile boilerplate/Makefile src/Makefile -test/Makefile -test/pdiff/Makefile util/Makefile util/cairo-gobject/Makefile util/cairo-missing/Makefile util/cairo-script/Makefile util/cairo-script/examples/Makefile -doc/Makefile -doc/public/Makefile ]) AC_CONFIG_COMMANDS([cairo-trace], [chmod a+x util/cairo-trace/cairo-trace]) diff --git a/doc/tutorial/slides/.gitignore b/doc/tutorial/slides/.gitignore deleted file mode 100644 index 72a67a0..0000000 --- a/doc/tutorial/slides/.gitignore +++ /dev/null @@ -1,7 +0,0 @@ -tutorial-???.html -tutorial-???.png -tutorial-???.svg -tutorial-index.xml -tutorial.pdf -index.html -*~ diff --git a/doc/tutorial/slides/cairo-blank.svg b/doc/tutorial/slides/cairo-blank.svg deleted file mode 100644 index ac91186..0000000 --- a/doc/tutorial/slides/cairo-blank.svg +++ /dev/null @@ -1,477 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - g> - - - - - - - - - Slide Title - - - - - - Slide content - - - - http://cairographics.org - - - diff --git a/doc/tutorial/slides/cairo-code.svg b/doc/tutorial/slides/cairo-code.svg deleted file mode 100644 index 09e26bf..0000000 --- a/doc/tutorial/slides/cairo-code.svg +++ /dev/null @@ -1,913 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - g> - - > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Presentation Sub-title - - - - - - - - Slide Title - - - - - - Slide content - - - - http://cairographics.org - - - diff --git a/doc/tutorial/slides/cairo-large-content.svg b/doc/tutorial/slides/cairo-large-content.svg deleted file mode 100644 index 5acf4c9..0000000 --- a/doc/tutorial/slides/cairo-large-content.svg +++ /dev/null @@ -1,899 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - g> - - > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Slide Title - - - - - - Slide content - - - - - diff --git a/doc/tutorial/slides/cairo-separator.svg b/doc/tutorial/slides/cairo-separator.svg deleted file mode 100644 index 8d2c840..0000000 --- a/doc/tutorial/slides/cairo-separator.svg +++ /dev/null @@ -1,909 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - g> - - > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Presentation Sub-title - - - - - - Slide Title - - - - - Slide content - - - - http://cairographics.org - - - diff --git a/doc/tutorial/slides/cairo-title.svg b/doc/tutorial/slides/cairo-title.svg deleted file mode 100644 index 31b14f8..0000000 --- a/doc/tutorial/slides/cairo-title.svg +++ /dev/null @@ -1,898 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - g> - - > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Presentation Title - - - - - Slide content - - - - - - diff --git a/doc/tutorial/slides/cairo.svg b/doc/tutorial/slides/cairo.svg deleted file mode 100644 index 3d96abc..0000000 --- a/doc/tutorial/slides/cairo.svg +++ /dev/null @@ -1,898 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - g> - - > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Presentation Sub-title - - - - - - - - Really long slide title so you can see - - - - - - Slide content - - - - http://cairographics.org - - - diff --git a/doc/tutorial/slides/circle-cairo-large.png b/doc/tutorial/slides/circle-cairo-large.png deleted file mode 100644 index a08e119..0000000 Binary files a/doc/tutorial/slides/circle-cairo-large.png and /dev/null differ diff --git a/doc/tutorial/slides/circle-cairo.png b/doc/tutorial/slides/circle-cairo.png deleted file mode 100644 index f5d8cd4..0000000 Binary files a/doc/tutorial/slides/circle-cairo.png and /dev/null differ diff --git a/doc/tutorial/slides/circle-ooo-large.png b/doc/tutorial/slides/circle-ooo-large.png deleted file mode 100644 index dfa4099..0000000 Binary files a/doc/tutorial/slides/circle-ooo-large.png and /dev/null differ diff --git a/doc/tutorial/slides/circle-ooo.png b/doc/tutorial/slides/circle-ooo.png deleted file mode 100644 index eb90666..0000000 Binary files a/doc/tutorial/slides/circle-ooo.png and /dev/null differ diff --git a/doc/tutorial/slides/expander-fuzzy-large.png b/doc/tutorial/slides/expander-fuzzy-large.png deleted file mode 100644 index 3a485da..0000000 Binary files a/doc/tutorial/slides/expander-fuzzy-large.png and /dev/null differ diff --git a/doc/tutorial/slides/expander-fuzzy.png b/doc/tutorial/slides/expander-fuzzy.png deleted file mode 100644 index b01fd63..0000000 Binary files a/doc/tutorial/slides/expander-fuzzy.png and /dev/null differ diff --git a/doc/tutorial/slides/expander-sharp-large.png b/doc/tutorial/slides/expander-sharp-large.png deleted file mode 100644 index f97fa06..0000000 Binary files a/doc/tutorial/slides/expander-sharp-large.png and /dev/null differ diff --git a/doc/tutorial/slides/expander-sharp.png b/doc/tutorial/slides/expander-sharp.png deleted file mode 100644 index 40759ae..0000000 Binary files a/doc/tutorial/slides/expander-sharp.png and /dev/null differ diff --git a/doc/tutorial/slides/fuzzies.svg b/doc/tutorial/slides/fuzzies.svg deleted file mode 100644 index df12b8a..0000000 --- a/doc/tutorial/slides/fuzzies.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - diff --git a/doc/tutorial/slides/jaggies.svg b/doc/tutorial/slides/jaggies.svg deleted file mode 100644 index e99d07b..0000000 --- a/doc/tutorial/slides/jaggies.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - diff --git a/doc/tutorial/slides/rendering-model.png b/doc/tutorial/slides/rendering-model.png deleted file mode 100644 index 9008984..0000000 Binary files a/doc/tutorial/slides/rendering-model.png and /dev/null differ diff --git a/doc/tutorial/slides/tutorial.xml b/doc/tutorial/slides/tutorial.xml deleted file mode 100644 index 3224bea..0000000 --- a/doc/tutorial/slides/tutorial.xml +++ /dev/null @@ -1,535 +0,0 @@ - - - - - - - - http://cairographics.org/tutorial - -
  • wget http://cairographics.org/cairo-tutorial.tar.gz
  • -
  • tar xzf cairo-tutorial.tar.gz
  • -
  • cd cairo-tutorial
  • -
  • make
  • -
  • cat README
  • - - IRC: irc.freenode.net #cairo -
    - - - Carl Worth - Red Hat, Inc. - - linux.conf.au - 2006-01-26 - http://cairographics.org - - - - Jaggies - Fuzzies - Fireworks - - - - - - - - - - - - - - -
  • Let application authors know there are options
  • -
  • Learn to use cairo—patch the applications
  • -
  • Write your own cairo-using applications
  • -
    - - - Various shell cairo programs - - - - #include <cairo.h> - #include <cairo-xlib.h> - int main (void) { - Display *dpy = XOpenDisplay (0); - Window w = XCreateSimpleWindow (dpy,RootWindow (dpy, 0), - 0, 0, WIDTH, HEIGHT, 0, 0, WhitePixel (dpy, 0)); - cairo_surface_t *surface = cairo_xlib_surface_create (dpy, w, - DefaultVisual (dpy, DefaultScreen (dpy)), - WIDTH, HEIGHT); - XEvent ev; - XSelectInput (dpy, w, ExposureMask); - XMapWindow (dpy, w); - while (XNextEvent (dpy, &ev) == 0) - if (ev.type == Expose && !ev.xexpose.count) { - cairo_t *cr = cairo_create (surface); - draw (cr); - cairo_destroy (cr); - } - } - - - - #include <gtk/gtk.h> - static gboolean - handle_expose (GtkWidget *widget, GdkEventExpose *event, gpointer data) { - cairo_t *cr = gdk_cairo_create (widget->window); - draw (cr); - cairo_destroy (cr); - return FALSE; - } - int main (int argc, char **argv) { - GtkWidget *window, *drawing_area; - gtk_init (&argc, &argv); - window = gtk_window_new (GTK_WINDOW_TOPLEVEL); - gtk_window_set_default_size (GTK_WINDOW (window), WIDTH, HEIGHT); - drawing_area = gtk_drawing_area_new (); - gtk_container_add (GTK_CONTAINER (window), drawing_area); - g_signal_connect (drawing_area, "expose-event", - G_CALLBACK (handle_expose), NULL); - gtk_widget_show_all (window); gtk_main (); - } - - - - #include <cairo.h> - - int main (void) - { - cairo_surface_t *surface; - cairo_t *cr; - - surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, - WIDTH, HEIGHT); - cr = cairo_create (surface); - draw (cr); - cairo_surface_write_to_png (surface, "foo.png"); - - cairo_surface_destroy (surface); - cairo_destroy (cr); - - return 0; - } - - - - #include <cairo.h> - #include <cairo-pdf.h> - int main (void) - { - cairo_surface_t *surface; - cairo_t *cr; - - surface = cairo_pdf_surface_create ("foo.pdf", WIDTH, HEIGHT); - - cr = cairo_create (surface); - draw (cr); - cairo_show_page (cr); - - cairo_surface_destroy (surface); - cairo_destroy (cr); - - return 0; - } - - - - #!/usr/bin/env python - import gtk - import cairo - - def expose (widget, event): - cr = widget.window.cairo_create () - draw (cr) - - win = gtk.Window () - win.connect ('destroy', gtk.main_quit) - win.set_default_size(WIDTH, HEIGHT) - drawingarea = gtk.DrawingArea () - win.add (drawingarea) - drawingarea.connect ('expose_event', expose) - win.show_all () - gtk.main () - - - - #!/usr/bin/env python - import cairo - - surface = cairo.ImageSurface (cairo.FORMAT_ARGB32, WIDTH, HEIGHT) - cr = cairo.Context (surface) - - draw (cr) - - surface.write_to_png ('foo.png') - - - - autoimport Cairo; - - cairo_t cr = new (WIDTH, HEIGHT); - draw (cr); - - - -
  • C++ (cairomm)
  • -
  • Haskell (hscairo)
  • -
  • Java (CairoJava, cairo-java)
  • -
  • Common Lisp (cl-cairo)
  • -
  • Nickle (cairo-5c)
  • -
  • Objective Caml (cairo-ocaml)
  • -
  • perl (cairo-perl)
  • -
  • python (pycairo)
  • -
  • ruby (rcairo)
  • -
  • squeak (cairo-squeak)
  • -
    - - - - http://cairographics.org/tutorial - http://cairographics.org/cairo-tutorial.tar.gz -
  • tar xzf cairo-tutorial.tar.gz
  • -
  • cd cairo-tutorial
  • -
  • make
  • -
  • cat README
  • - IRC: irc.freenode.net #cairo -
    - - - - - - - - - Here comes the fun part - - - -
      -
    • Paths
    • -
        -
      • construction
      • -
      • filling, stroking
      • -
      -
    • Images
    • -
        -
      • loading from disk
      • -
      • using as source
      • -
      • transforming/filtering
      • -
      -
    • Text
    • -
        -
      • “Toy” API
      • -
      • “Full” API
      • -
      -
    -
    - - -
      -
    • Paths
    • -
        -
      • cairo_stroke
      • -
      • cairo_fill
      • -
      -
    • Images
    • -
        -
      • cairo_paint
      • -
      • cairo_mask
      • -
      • cairo_paint_with_alpha
      • -
      -
    • Text
    • -
        -
      • cairo_show_text (“toy”)
      • -
      • cairo_show_glyphs (“full”)
      • -
      -
    -
    - - -
      -
    • Paths consist of lines and splines:
    • -
        -
      • cairo_move_to
      • - start new sub path, set current point -
      • cairo_line_to
      • - add line segment to path -
      • cairo_curve_to
      • - add Bézier spline to path -
      • cairo_close_path
      • - add line segment to last move_to point -
      -
    -
    - - -
      -
    • cairo_stroke
    • -
        -
      • Paints the path itself as stroked by a pen
      • -
      • Controlled by various stroke parameters:
      • -
          -
        • cairo_set_line_width
        • -
        • cairo_set_line_cap
        • -
        • cairo_set_line_join
        • -
        • cairo_set_miter_limit
        • -
        • cairo_set_dash
        • -
        -
      -
    -
    - - - - - - - - -
      -
    • CAIRO_LINE_CAP_BUTT
    • -
    • CAIRO_LINE_CAP_ROUND
    • -
    • CAIRO_LINE_CAP_SQUARE
    • -
    -
    - - -
      -
    • CAIRO_LINE_JOIN_BEVEL
    • -
    • CAIRO_LINE_JOIN_ROUND
    • -
    • CAIRO_LINE_JOIN_MITER
    • -
    -
    - - -
  • Adds a line segment (if necessary) to the
  • - start of the path -
  • Draws a join from that line to the first
  • - element of the path -
    - - - - - -
      -
    • Paints the “inside” of the path
    • -
    • Two different ways to determine inside-ness
    • -
        -
      • cairo_set_fill_rule:
      • - CAIRO_FILL_RULE_WINDING - CAIRO_FILL_RULE_EVEN_ODD -
      -
    -
    - - - - - -
  • To test a point for inside-ness, imagine a ray
  • - from the point and extending to infinity - (any direction) and examine path crossings -
  • EVEN_ODD counts crossings and fills when odd
  • -
  • WINDING counts up/down for left/right crossings
  • - and fills when the final number is not zero -
    - - - - - -
  • All drawing occurs with the source pattern
  • -
  • Uniform-color sources can be set
  • - with or without alpha: -
      -
    • cairo_set_source_rgb
    • -
    • cairo_set_source_rgba
    • -
    -
    - - - - - -
  • cairo_stroke and cairo_fill consume the path
  • -
  • Variants are available to preserve the path:
  • -
      -
    • cairo_stroke_preserve
    • -
    • cairo_fill_preserve
    • -
    -
  • This is a variation from PostScript and PDF
  • -
      -
    • The cairo approach differs in different ways
    • -
    • We think this way is better (of course)
    • -
    -
    - - - - - -
      -
    • cairo_rectangle
    • -
    • cairo_arc
    • -
    • cairo_text_path
    • -
    • cairo_glyph_path
    • -
    • Relative-coordinate variants:
    • -
        -
      • cairo_rel_move_to
      • -
      • cairo_rel_line_to
      • -
      • cairo_rel_curve_to
      • -
      -
    -
    - - - - - - - - -
      -
    • Single matrix combines rotation, translation,
    • - scale and shear -
    • Non-projective transformations
    • -
        -
      • Pen doesn't change shape along the stroke
      • -
      -
    • Transformations are cumulative
    • -
        -
      • translate, scale != scale, translate
      • -
      -
    -
    - - - - - -
      -
    • cairo_save and cairo_restore
    • -
    • Very useful for bracketing function bodies
    • -
    • Eliminates graphics state side effects
    • - -
    • NOTE: Path is not part of graphics state
    • -
        -
      • Path is not affected by cairo_save/restore
      • -
      • Useful for path-generating functions
      • -
      -
    -
    - - -
  • cairo_clip
  • -
  • Intersects path with current clip to further
  • - restrict drawing -
  • Pixel-aligned clipping is much faster
  • -
  • cairo_clip_preserve is available as well
  • -
    - - -
      -
    • Surface patterns
    • -
        -
      • Image from disk
      • -
      • Results of cairo drawing
      • -
      -
    • Gradient patterns
    • -
        -
      • linear gradients
      • -
      • radial gradients
      • -
      -
    -
    - - - - - - - - - - - - - - - - - - - - -
      -
    • “Toy” API:
    • -
        -
      • Useful for demos like we are writing today
      • -
      • No real layout—not useful for the majority
      • - of writing systems in the world -
      -
    • “Full” API:
    • -
        -
      • User must do OS-dependent font selection
      • -
      • User must access font glyph IDs directly
      • -
      • User must do all text layout
      • -
      -
    -
    - - -
      -
    • Simple font selection
    • -
        -
      • family, weight, slant
      • -
      • OS independent
      • -
      • No font listing support
      • -
      -
    • UTF-8 text drawing and extents functions
    • -
    • Still supports full font transformations
    • -
    - - - - - -
  • Just use pango
  • -
    - - -
  • C has no exceptions
  • -
  • Checking each return is tedious
  • -
  • C programmers rarely bother
  • -
  • Lots of broken programs result
  • -
    - - -
  • Cairo stores status value when error occurs
  • -
  • API “shuts down” when an error occurs
  • -
  • All cairo functions are benign
  • - (and well defined) after any error. -
  • cairo_status can be called when convenient
  • -
  • Error status values propagate across objects
  • -
    - - - - -
    -
    diff --git a/doc/tutorial/src/.gitignore b/doc/tutorial/src/.gitignore deleted file mode 100644 index 68af59e..0000000 --- a/doc/tutorial/src/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -*-gtk -*-pdf -*-png -*-xlib -*.pdf -*.png -*.o -*~ diff --git a/doc/tutorial/src/README b/doc/tutorial/src/README deleted file mode 100644 index a2738da..0000000 --- a/doc/tutorial/src/README +++ /dev/null @@ -1,66 +0,0 @@ -Welcome to the cairo tutorial: - -+--------------------------------+ -| How to Recognize Ugly Graphics | -|(and what you can do about them)| -+--------------------------------+ - -This directory is your personal playground for following along with -the examples. In order for you to make use of these files you will -need to have cairo and its header files installed. You can find -instructions for doing this at: - - http://cairographics.org/tutorial - -Notice that there are a few .c files in this directory. - -You should start out by just typing "make" which will turn each .c -file into several different programs. Go ahead and run each of the -programs and see what they do. Some of them will open up new X windows -while others will simply write their output to files (such .png or -.pdf). - -After you play with those a bit, go ahead and take a look at the -contents of the .c files. You'll see that each file contains a draw() -function that does all of the drawing. - -You might be surprised to notice that there is no main() function in -any of the files. Instead, main is hidden away by means of -cairo-tutorial.h. This rather non-conventional style is used to allow -you to focus on the actual drawing code involved in using cairo, while -not having to worry about the setup semantics. We don't recommend that -you follow this style for real projects. - -As you follow along during the tutorial and get some ideas for things -to draw, you'll want to start making your own .c files. You can copy -an existing file or make your own by following this simple minimal -template: - - #include "cairo-tutorial.h" - - static void - draw (cairo_t *cr, int width, int height) - { - /* Put your drawing code here. */ - } - -Any new file you create will automatically get picked up by the -Makefile so that "make" will compile your file into several different -programs, just like the existing examples. - -If you'd like to control the initial size of the output, you may -define WIDTH and HEIGHT before including cairo-tutorial.h like so: - - #define WIDTH 100 - #define HEIGHT 100 - - #include "cairo-tutorial.h" - -If you would like to change the set of cairo-backend target programs -that are compiled, you may edit the "all" target in the Makefile. - -Have fun! - --Carl Worth - -cworth@redhat.com diff --git a/doc/tutorial/src/circle.c b/doc/tutorial/src/circle.c deleted file mode 100644 index 6bd02e8..0000000 --- a/doc/tutorial/src/circle.c +++ /dev/null @@ -1,22 +0,0 @@ -#include "cairo-tutorial.h" - -static void -draw (cairo_t *cr, int width, int height) -{ - int radius; - - if (width < height) - radius = width/2 - 4; - else - radius = height/2 - 4; - - cairo_move_to (cr, width/2 + radius, height/2); - cairo_arc (cr, width/2, height/2, radius, - 0.0, 2 * M_PI); - - cairo_set_source_rgb (cr, 0.6, 0.8, 1.0); - cairo_fill_preserve (cr); - - cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); - cairo_stroke (cr); -} diff --git a/doc/tutorial/src/include/cairo-tutorial-gtk.h b/doc/tutorial/src/include/cairo-tutorial-gtk.h deleted file mode 100644 index 60516a3..0000000 --- a/doc/tutorial/src/include/cairo-tutorial-gtk.h +++ /dev/null @@ -1,133 +0,0 @@ -/* cairo-tutorial-gtk.h - a tutorial framework for cairo with gtk+ - * - * Copyright © 2005, Carl Worth - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA. - */ - -#include -#include - -#include - -#ifndef WIDTH -#define WIDTH 400 -#endif - -#ifndef HEIGHT -#define HEIGHT 400 -#endif - -static void -draw (cairo_t *cr, int width, int height); - -#if ! GTK_CHECK_VERSION(2,7,0) -/* copied from gtk+/gdk/gdkcairo.c and gtk+/gdk/x11/gdkdrawable-x11.c - * gdk_cairo_create() which is available in 2.7.0 and later. - */ -static cairo_t * -gdk_cairo_create (GdkDrawable *drawable) -{ - int width, height; - cairo_t *cr = NULL; - cairo_surface_t *surface = NULL; - GdkVisual *visual = gdk_drawable_get_visual (drawable); - - gdk_drawable_get_size (drawable, &width, &height); - if (visual) - surface = cairo_xlib_surface_create (GDK_DRAWABLE_XDISPLAY (drawable), - GDK_DRAWABLE_XID (drawable), - GDK_VISUAL_XVISUAL (visual), - width, height); - else if (gdk_drawable_get_depth (drawable) == 1) - surface = cairo_xlib_surface_create_for_bitmap - (GDK_PIXMAP_XDISPLAY (drawable), - GDK_PIXMAP_XID (drawable), - GDK_SCREEN_XSCREEN (gdk_drawable_get_screen (drawable)), - width, height); - else { - g_warning ("Using Cairo rendering requires the drawable argument to\n" - "have a specified colormap. All windows have a colormap,\n" - "however, pixmaps only have colormap by default if they\n" - "were created with a non-NULL window argument. Otherwise\n" - "a colormap must be set on them with " - "gdk_drawable_set_colormap"); - return NULL; - } - if (surface) { - cr = cairo_create (surface); - cairo_surface_destroy (surface); - } - return cr; -} -#endif - -static gboolean -handle_expose (GtkWidget *widget, - GdkEventExpose *event, - gpointer data) -{ - cairo_t *cr; - - cr = gdk_cairo_create (widget->window); - - draw (cr, widget->allocation.width, widget->allocation.height); - - cairo_destroy (cr); - - return FALSE; -} - -static gboolean -handle_key_press (GtkWidget *widget, - GdkEventKey *event, - gpointer data) -{ - if ((event->keyval == GDK_Q || - event->keyval == GDK_q) && (event->state & GDK_CONTROL_MASK)) - gtk_main_quit (); - - return FALSE; -} - -int -main (int argc, char **argv) -{ - GtkWidget *window, *drawing_area; - - gtk_init (&argc, &argv); - - window = gtk_window_new (GTK_WINDOW_TOPLEVEL); - - gtk_window_set_default_size (GTK_WINDOW (window), WIDTH, HEIGHT); - gtk_window_set_title (GTK_WINDOW (window), "cairo demo"); - - g_signal_connect (window, "destroy", - G_CALLBACK (gtk_main_quit), NULL); - - drawing_area = gtk_drawing_area_new (); - gtk_container_add (GTK_CONTAINER (window), drawing_area); - - g_signal_connect (drawing_area, "expose-event", - G_CALLBACK (handle_expose), NULL); - - g_signal_connect (window, "key-press-event", - G_CALLBACK (handle_key_press), NULL); - - gtk_widget_show_all (window); - - gtk_main (); - - return 0; -} diff --git a/doc/tutorial/src/include/cairo-tutorial-pdf.h b/doc/tutorial/src/include/cairo-tutorial-pdf.h deleted file mode 100644 index 00d0f18..0000000 --- a/doc/tutorial/src/include/cairo-tutorial-pdf.h +++ /dev/null @@ -1,74 +0,0 @@ -/* cairo-tutorial-png.h - a tutorial framework for cairo to write a PNG image - * - * Copyright © 2005, Carl Worth - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA. - */ - -#include -#include - -#include -#include -#include -#include - -#ifndef WIDTH -#define WIDTH 400 -#endif - -#ifndef HEIGHT -#define HEIGHT 400 -#endif - -static void -draw (cairo_t *cr, int width, int height); - -int -main (int argc, char **argv) -{ - cairo_surface_t *surface; - cairo_t *cr; - char *filename, *dash; - - filename = strdup (argv[0]); - assert (filename != NULL); - - dash = strrchr (filename, '-'); - - if (strcmp (dash, "-pdf") == 0) { - *dash = '.'; - } else { - char *new_filename; - new_filename = malloc (strlen (filename) + 5); - sprintf (new_filename, "%s.pdf", filename); - free (filename); - filename = new_filename; - } - - surface = cairo_pdf_surface_create (filename, WIDTH, HEIGHT); - - cr = cairo_create (surface); - - draw (cr, WIDTH, HEIGHT); - - cairo_show_page (cr); - - cairo_surface_destroy (surface); - cairo_destroy (cr); - - free (filename); - - return 0; -} diff --git a/doc/tutorial/src/include/cairo-tutorial-png.h b/doc/tutorial/src/include/cairo-tutorial-png.h deleted file mode 100644 index 428baf2..0000000 --- a/doc/tutorial/src/include/cairo-tutorial-png.h +++ /dev/null @@ -1,74 +0,0 @@ -/* cairo-tutorial-png.h - a tutorial framework for cairo to write a PNG image - * - * Copyright © 2005, Carl Worth - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA. - */ - -#include - -#include -#include -#include -#include - -#ifndef WIDTH -#define WIDTH 400 -#endif - -#ifndef HEIGHT -#define HEIGHT 400 -#endif - -static void -draw (cairo_t *cr, int width, int height); - -int -main (int argc, char **argv) -{ - cairo_surface_t *surface; - cairo_t *cr; - char *filename, *dash; - - surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, - WIDTH, HEIGHT); - - cr = cairo_create (surface); - - draw (cr, WIDTH, HEIGHT); - - filename = strdup (argv[0]); - assert (filename != NULL); - - dash = strrchr (filename, '-'); - - if (strcmp (dash, "-png") == 0) { - *dash = '.'; - } else { - char *new_filename; - new_filename = malloc (strlen (filename) + 5); - sprintf (new_filename, "%s.png", filename); - free (filename); - filename = new_filename; - } - - cairo_surface_write_to_png (surface, filename); - - free (filename); - - cairo_surface_destroy (surface); - cairo_destroy (cr); - - return 0; -} diff --git a/doc/tutorial/src/include/cairo-tutorial-xlib.h b/doc/tutorial/src/include/cairo-tutorial-xlib.h deleted file mode 100644 index 5e78d03..0000000 --- a/doc/tutorial/src/include/cairo-tutorial-xlib.h +++ /dev/null @@ -1,251 +0,0 @@ -/* cairo-tutorial-xlib.h - a tutorial framework for cairo with xlib - * - * Copyright © 2005, Keith Packard - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifndef WIDTH -#define WIDTH 400 -#endif - -#ifndef HEIGHT -#define HEIGHT 400 -#endif - -#ifndef DEFAULT_VISUAL -#define DEFAULT_VISUAL 0 -#endif - -static void -Usage (char *program) -{ - fprintf (stderr, "Usage: %s\n", program); - fprintf (stderr, "\t-display \n"); - fprintf (stderr, "\t-geometry \n"); - exit (1); -} - -char *dpy_name; -VisualID vid = DEFAULT_VISUAL; -Colormap colormap; -Visual *visual; -int depth; -unsigned int width = WIDTH, height = HEIGHT; -Window win; -Pixmap pix; -GC gc; - -static void -draw (cairo_t *cr, int width, int height); - -static void -draw_to_pixmap (Display *dpy, Pixmap pix) -{ - cairo_surface_t *surface; - cairo_t *cr; - - surface = cairo_xlib_surface_create (dpy, pix, visual, - width, height); - cr = cairo_create (surface); - - draw (cr, width, height); - - cairo_destroy (cr); - cairo_surface_destroy (surface); -} - -static void -handle_configure (Display *dpy, XConfigureEvent *cev) -{ - width = cev->width; - height = cev->height; - - XFreePixmap(dpy, pix); - pix = XCreatePixmap(dpy, win, width, height, depth); - XFillRectangle(dpy, pix, gc, 0, 0, width, height); - draw_to_pixmap (dpy, pix); -} - -static void -handle_expose (Display *dpy, XExposeEvent *eev) -{ - XCopyArea (dpy, pix, win, gc, - eev->x, eev->y, - eev->width, eev->height, - eev->x, eev->y); -} - -int -main (argc, argv) - int argc; - char **argv; -{ - Display *dpy; - Window root = 0; - char **init_argv = argv; - XSetWindowAttributes attr; - int scr; - int x = 0, y = 0; - int geometryMask; - int border_width = 1; - XSizeHints sizeHints; - XWMHints wmHints; - XClassHint classHints; - XEvent ev; - XEvent eev; - int HasExpose = 0; - int sync = 0; - XTextProperty wm_name, icon_name; - Atom wm_delete_window; - unsigned long gc_mask; - XGCValues gcv; - char quit_string[10]; - unsigned long window_mask; - int has_colormap = 0; - - wm_name.value = (unsigned char *) argv[0]; - wm_name.encoding = XA_STRING; - wm_name.format = 8; - wm_name.nitems = strlen (argv[0]) + 1; - icon_name = wm_name; - gc_mask = 0; - while (*++argv) { - if (!strcmp (*argv, "-display")) - dpy_name = *++argv; - else if (!strcmp (*argv, "-visual")) - vid = strtol(*++argv, NULL, 0); - else if (!strcmp (*argv, "-geometry")) - geometryMask = XParseGeometry (*++argv, &x, &y, &width, &height); - else if (!strcmp (*argv, "-sync")) - sync = 1; - else if (!strcmp (*argv, "-bw")) - border_width = strtol(*++argv, NULL, 0); - else if (!strcmp (*argv, "-root")) - root = strtol (*++argv, NULL, 0); - else - Usage (*init_argv); - } - sizeHints.flags = 0; - wmHints.flags = InputHint; - wmHints.input = True; - classHints.res_name = init_argv[0]; - classHints.res_class = init_argv[0]; - dpy = XOpenDisplay (dpy_name); - if (!dpy) { - fprintf (stderr, "Error: failed to open display: %s\n", - XDisplayName (dpy_name)); - exit (1); - } - if (sync) - XSynchronize (dpy, sync); - scr = DefaultScreen (dpy); - if (!root) - root = RootWindow (dpy, scr); - window_mask = CWBackPixel|CWBorderPixel|CWEventMask; - if (!has_colormap) - colormap = DefaultColormap (dpy, scr); - else - { - window_mask |= CWColormap; - attr.colormap = colormap; - } - visual = DefaultVisual (dpy, scr); - depth = DefaultDepth (dpy, scr); - if (vid) - { - XVisualInfo vi, *vi_ret; - int n; - - vi.visualid = vid; - vi.screen = scr; - vi_ret = XGetVisualInfo (dpy, VisualIDMask|VisualScreenMask, - &vi, &n); - if (vi_ret) - { - visual = vi_ret->visual; - if (!has_colormap) - { - colormap = XCreateColormap (dpy, root, visual, AllocNone); - window_mask |= CWColormap; - attr.colormap = colormap; - } - depth = vi_ret->depth; - } - } - attr.background_pixel = WhitePixel (dpy, scr); - attr.border_pixel = 0; - attr.event_mask = ExposureMask|KeyPressMask|KeyReleaseMask|StructureNotifyMask; - wm_delete_window = XInternAtom(dpy, "WM_DELETE_WINDOW", False); - win = XCreateWindow (dpy, root, x, y, width, height, border_width, - depth, InputOutput, - visual, - window_mask, - &attr); - pix = XCreatePixmap (dpy, win, width, height, depth); - gcv.foreground = WhitePixel (dpy, scr); - gc = XCreateGC (dpy, pix, GCForeground, &gcv); - XFillRectangle(dpy, pix, gc, 0, 0, width, height); - draw_to_pixmap (dpy, pix); - XSetWMProperties (dpy, win, - &wm_name, &icon_name, - init_argv, argc, - &sizeHints, &wmHints, 0); - XSetWMProtocols (dpy, win, &wm_delete_window, 1); - XMapWindow (dpy, win); - for (;;) { - XNextEvent (dpy, &ev); - if (HasExpose && ev.type != Expose) { - HasExpose = 0; - handle_expose (dpy, &eev.xexpose); - } - switch (ev.type) { - case ConfigureNotify: - handle_configure (dpy, &ev.xconfigure); - break; - case Expose: - if (QLength(dpy)) { - eev = ev; - HasExpose = 1; - } else if (ev.xexpose.count == 0) { - handle_expose (dpy, &ev.xexpose); - } - break; - case KeyPress: - if (XLookupString ((XKeyEvent *) &ev, quit_string, sizeof (quit_string), 0, 0) == 1) { - switch (quit_string[0]) { - case 'q': - exit (0); - case 'c': - XClearArea (dpy, ev.xkey.window, 0, 0, 0, 0, True); - break; - } - } - break; - case ClientMessage: - exit (0); - } - } -} diff --git a/doc/tutorial/src/include/cairo-tutorial.h b/doc/tutorial/src/include/cairo-tutorial.h deleted file mode 100644 index ec738e9..0000000 --- a/doc/tutorial/src/include/cairo-tutorial.h +++ /dev/null @@ -1,40 +0,0 @@ -/* cairo-tutorial-gtk.h - a tutorial framework for cairo - * - * Copyright © 2005, Carl Worth - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA. - */ - -#include -#include - -/* The application program may override these before including - * cairo-tutorial.h in order to get a window of a different size. */ -#ifndef WIDTH -#define WIDTH 400 -#endif - -#ifndef HEIGHT -#define HEIGHT 400 -#endif - -#ifdef CAIRO_TUTORIAL_GTK -#include "cairo-tutorial-gtk.h" -#elif CAIRO_TUTORIAL_XLIB -#include "cairo-tutorial-xlib.h" -#elif CAIRO_TUTORIAL_PDF -#include "cairo-tutorial-pdf.h" -#elif CAIRO_TUTORIAL_PNG -#include "cairo-tutorial-png.h" -#endif diff --git a/doc/tutorial/src/lca.c b/doc/tutorial/src/lca.c deleted file mode 100644 index 0b131af..0000000 --- a/doc/tutorial/src/lca.c +++ /dev/null @@ -1,32 +0,0 @@ -#define WIDTH 750 -#define HEIGHT 360 - -#include "cairo-tutorial.h" - -static void -draw (cairo_t *cr, int width, int height) -{ - cairo_save (cr); - - cairo_translate (cr, 60, 60); - cairo_scale (cr, 3, 3); - - cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND); - cairo_set_line_join (cr, CAIRO_LINE_JOIN_ROUND); - cairo_set_line_width (cr, 20); - - /* L */ - cairo_move_to (cr, 0, 0); - cairo_line_to (cr, 0, 80); - cairo_line_to (cr, 50, 80); - - /* C */ - cairo_move_to (cr, 110 + 40 * cos (M_PI / 3), 40 + 40 * sin(M_PI / 3)); - cairo_arc (cr, 110, 40, 40, M_PI / 3, -M_PI / 3); - - /* A */ - cairo_move_to (cr, 160, 80); - cairo_curve_to (cr, 160, -30, 210, -30, 210, 80); - - cairo_stroke (cr); -} diff --git a/doc/tutorial/src/singular.c b/doc/tutorial/src/singular.c deleted file mode 100644 index 958b2b0..0000000 --- a/doc/tutorial/src/singular.c +++ /dev/null @@ -1,162 +0,0 @@ -/** - * Uses Singular values of transformation matrix to find the length of the - * major and minor axes of the scaled pen. - * - * Put this file in cairo/doc/tutorial/src and type "make" - */ - -#define WIDTH 300 -#define HEIGHT 300 - -#include "cairo-tutorial.h" - -#include - -/* - * Finds the singular values of the non-translation part of matrix. - * - * Let M be the cairo transformation matrix in question: - * - * ⌈xx xy⌉ - * M = |yx yy| - * ⌊x0 y0⌋ - * - * The non-translation part is: - * - * A = ⌈xx xy⌉ - * ⌊yx yy⌋ - * - * The non-zero singular values of A are the square roots of the non-zero - * eigenvalues of A⁺ A, where A⁺ is A-transpose. - * - * A⁺ A = ⌈xx yx⌉⌈xx xy⌉ = ⌈xx²+yx² xx*xy+yx*yy⌉ - * ⌊xy yy⌋⌊yx yy⌋ ⌊xx*xy+yx*yy xy²+yy²⌋ - * - * Name those: - * - * B = A⁺ A = ⌈a k⌉ - * ⌊k b⌋ - * - * The eigenvalues of B satisfy: - * - * λ² - (a+b).λ + a.b - k² = 0 - * - * The eigenvalues are: - * __________________ - * (a+b) ± √(a+b)² - 4(a.b-k²) - * λ = --------------------------- - * 2 - * that simplifies to: - * _______________ - * λ = (a+b)/2 ± √((a-b)/2)² + k² - * - * And the Singular values are the root of λs. - * - */ -static void -get_singular_values (const cairo_matrix_t *matrix, - double *major, - double *minor) -{ - double xx = matrix->xx, xy = matrix->xy; - double yx = matrix->yx, yy = matrix->yy; - - double a = xx*xx+yx*yx; - double b = xy*xy+yy*yy; - double k = xx*xy+yx*yy; - - double f = (a+b) * .5; - double g = (a-b) * .5; - double delta = sqrt (g*g + k*k); - - if (major) - *major = sqrt (f + delta); - if (minor) - *minor = sqrt (f - delta); -} - -/* - * Finds the length of the major and minor axes of the pen for a cairo_t, - * identified by the current transformation matrix and line width. - * - * Returned values are in device units. - */ -static void -get_pen_axes (cairo_t *cr, - double *major, - double *minor) -{ - double width; - cairo_matrix_t matrix; - - width = cairo_get_line_width (cr); - cairo_get_matrix (cr, &matrix); - - get_singular_values (&matrix, major, minor); - - if (major) - *major *= width; - if (minor) - *minor *= width; -} - -static void -draw (cairo_t *cr, int width, int height) -{ - double major_width, minor_width; - - /* clear background */ - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); /* white */ - cairo_paint (cr); - -#define W width -#define H height -#define B ((width+height)/16) - - /* the spline we want to stroke */ - cairo_move_to (cr, W-B, B); - cairo_curve_to (cr, -W, B, - 2*W, H-B, - B, H-B); - - /* the effect is show better with round caps */ - cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND); - - /* set the skewed pen */ - cairo_rotate (cr, +.7); - cairo_scale (cr, .5, 2.); - cairo_rotate (cr, -.7); - cairo_set_line_width (cr, B); - - get_pen_axes (cr, &major_width, &minor_width); - - /* stroke with "major" pen in translucent red */ - cairo_save (cr); - cairo_identity_matrix (cr); - cairo_set_line_width (cr, major_width); - cairo_set_source_rgba (cr, 1.0, 0.0, 0.0, .9); - cairo_stroke_preserve (cr); - cairo_restore (cr); - - /* stroke with skewed pen in translucent black */ - cairo_set_source_rgba (cr, 0.0, 0.0, 0.0, .9); - cairo_stroke_preserve (cr); - - /* stroke with "minor" pen in translucent yellow */ - cairo_save (cr); - cairo_identity_matrix (cr); - cairo_set_line_width (cr, minor_width); - cairo_set_source_rgba (cr, 1.0, 1.0, 0.0, .9); - cairo_stroke_preserve (cr); - cairo_restore (cr); - - /* stroke with hairline in black */ - cairo_save (cr); - cairo_identity_matrix (cr); - cairo_set_line_width (cr, 1); - cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); - cairo_stroke_preserve (cr); - cairo_restore (cr); - - cairo_new_path (cr); -} diff --git a/doc/tutorial/src/twin.c b/doc/tutorial/src/twin.c deleted file mode 100644 index 14347ba..0000000 --- a/doc/tutorial/src/twin.c +++ /dev/null @@ -1,39 +0,0 @@ -/** - * Put this file in cairo/doc/tutorial/src and type "make" - */ - -#define WIDTH 1350 -#define HEIGHT 900 - -#include "cairo-tutorial.h" - - -static void -draw (cairo_t *cr, int width, int height) -{ - int i, j, h; - unsigned char s[2] = {0, 0}; - - /* clear background */ - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); /* white */ - cairo_paint (cr); - - cairo_set_source_rgb (cr, 0, 0, 0); - cairo_select_font_face (cr, - "@cairo:", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - - h = 2; - for (i = 8; i < 48; i >= 24 ? i+=3 : i++) { - cairo_set_font_size (cr, i); - for (j = 33; j < 128; j++) { - if (j == 33 || (j == 80 && i > 24)) { - h += i + 2; - cairo_move_to (cr, 10, h); - } - s[0] = j; - cairo_show_text (cr, (const char *) s); - } - } -} diff --git a/test/.gitignore b/test/.gitignore deleted file mode 100644 index bc78ef3..0000000 --- a/test/.gitignore +++ /dev/null @@ -1,37 +0,0 @@ -TAGS -tags -.deps -.libs -output -Makefile -Makefile.in -ref.hash -ref.list -any2ppm -.any2ppm -.any2ppm.pid -.any2ppm.errors -cairo-test-constructors.c -cairo-test-trace -cairo-test-suite -pdf2png -ps2png -svg2png -callgrind.out.* -valgrind-log -*.manifest -*.gcda -*.gcno -*.exe -*.exe.so -*.obj -*.ilk -*.pdb -*.la -*.lo -*.log -*.suo -*.o -*~ -.*.sw? -make-cairo-test-constructors diff --git a/test/.valgrind-suppressions b/test/.valgrind-suppressions deleted file mode 100644 index f481a2f..0000000 --- a/test/.valgrind-suppressions +++ /dev/null @@ -1,577 +0,0 @@ -{ - in dl.so - Memcheck:Cond - fun:_dl_relocate_object - } -{ - bugs in libpng/libz - Memcheck:Cond - obj:/usr/lib/libz.so.1.2.2.2 - obj:/usr/lib/libz.so.1.2.2.2 - fun:deflate - } -{ - bugs in libpng/libz - Memcheck:Cond - obj:/usr/lib/libz.so.1.2.3 - obj:/usr/lib/libz.so.1.2.3 - fun:deflate - } -{ - bugs in libpng/libz - Memcheck:Cond - obj:/usr/lib/libz.so.1.2.3.3 - } -{ - bugs in libpng/libz - Memcheck:Value8 - obj:/usr/lib/libz.so.1.2.3.3 - } -{ - cairo's write_png triggers apparent bugs in libpng/libz - Memcheck:Cond - obj:/usr/lib/libz.so.1.2.2.2 - obj:/usr/lib/libz.so.1.2.2.2 - fun:deflate - fun:png_write_finish_row - fun:png_write_filtered_row - fun:png_write_find_filter - fun:png_write_row - fun:png_write_image - fun:write_png - } -{ - cairo's write_png_argb32 triggers apparent bugs in libpng/libz - Memcheck:Cond - obj:/usr/lib/libz.so.1.2.3 - obj:/usr/lib/libz.so.1.2.3 - fun:deflate - obj:/usr/lib/libpng12.so.0.1.2.8 - obj:/usr/lib/libpng12.so.0.1.2.8 - obj:/usr/lib/libpng12.so.0.1.2.8 - fun:png_write_row - fun:png_write_image - fun:write_png -} -{ - cairo's write_png_argb32 triggers apparent bugs in libpng/libz - Memcheck:Cond - obj:/usr/lib/libz.so.1.2.2.2 - obj:/usr/lib/libz.so.1.2.2.2 - fun:deflate - fun:png_write_finish_row - fun:png_write_filtered_row - fun:png_write_find_filter - fun:png_write_row - fun:png_write_image - fun:write_png_argb32 - } -{ - cairo's _cairo_pdf_surface_paint triggers apparent bugs in libz - Memcheck:Cond - obj:/usr/lib/libz.so.1.2.3 - obj:/usr/lib/libz.so.1.2.3 - fun:deflate - fun:compress2 - fun:compress - fun:compress_dup - fun:emit_image - fun:emit_surface_pattern - fun:emit_pattern - fun:_cairo_pdf_surface_paint -} -{ - cairo's _cairo_pdf_surface_paint triggers apparent bugs in libz - Memcheck:Cond - obj:/usr/lib/libz.so.1.2.3 - obj:/usr/lib/libz.so.1.2.3 - fun:deflate - fun:compress2 - fun:compress - fun:compress_dup - fun:emit_pattern - fun:_cairo_pdf_surface_paint -} -{ - cairo's _cairo_pdf_surface_paint triggers apparent bugs in libz - Memcheck:Cond - fun:deflate_slow - fun:deflate -} -{ - cairo's _cairo_pdf_surface_paint triggers apparent bugs in libz - Memcheck:Value4 - fun:deflate_slow - fun:deflate -} -{ - cairo's _cairo_pdf_surface_paint triggers apparent bugs in libz - Memcheck:Value4 - fun:compress_block - fun:_tr_flush_block - fun:deflate_slow - fun:deflate -} -{ - cairo's _cairo_pdf_surface_paint triggers apparent bugs in libz - Memcheck:Value4 - fun:crc32 - obj:/usr/lib/libpng12.so.0.15.0 - fun:png_write_chunk_data - fun:png_write_chunk -} -{ - cairo's _cairo_pdf_surface_paint triggers apparent bugs in libz - Memcheck:Value4 - fun:base64_write_func - fun:stream_write_func - obj:/usr/lib/libpng12.so.0.15.0 - fun:png_write_chunk_data - fun:png_write_chunk -} -{ - pthread initialization strstr bug - Memcheck:Cond - fun:strstr - fun:__pthread_initialize_minimal - obj:/lib/libpthread-2.3.5.so - obj:/lib/libpthread-2.3.5.so - fun:call_init - fun:_dl_init - obj:/lib/ld-2.3.5.so -} -{ - Pixman reads padding bytes that are never initialized - Memcheck:Cond - fun:fbBltOne - fun:fbCompositeSolidMask_nx1xn - fun:_cairo_pixman_composite - fun:_cairo_image_surface_composite - fun:_cairo_surface_composite - fun:_cairo_ft_scaled_font_show_glyphs - fun:_cairo_scaled_font_show_glyphs - fun:_cairo_gstate_show_glyphs_draw_func - fun:_cairo_gstate_clip_and_composite - fun:_cairo_gstate_show_glyphs - fun:cairo_show_text - fun:draw -} -{ - XXX: I have no idea what might be causing this - Memcheck:Free - fun:free - fun:free_mem - fun:__libc_freeres - fun:_vgw_freeres - fun:exit - fun:__libc_start_main -} -{ - XrmGetStringDatabase is fairly obnoxious about leaving reachable memory around - Memcheck:Leak - fun:malloc - fun:_XlcAddCT - fun:_XlcInitCTInfo - fun:initialize - fun:initialize - fun:_XlcCreateLC - fun:_XlcUtf8Loader - fun:_XOpenLC - fun:_XrmInitParseInfo - fun:NewDatabase - fun:XrmGetStringDatabase -} -{ - XrmGetStringDatabase is fairly obnoxious about leaving reachable memory around - Memcheck:Leak - fun:malloc - fun:PutEntry - fun:GetDatabase - fun:XrmGetStringDatabase -} -{ - XrmGetStringDatabase is fairly obnoxious about leaving reachable memory around - Memcheck:Leak - fun:malloc - fun:initialize - fun:_XlcCreateLC - fun:_XlcDefaultLoader - fun:_XOpenLC - fun:_XrmInitParseInfo - fun:NewDatabase - fun:XrmGetStringDatabase -} -{ - XrmGetStringDatabase is fairly obnoxious about leaving reachable memory around - Memcheck:Leak - fun:malloc - fun:add_codeset - fun:initialize - fun:_XlcCreateLC - fun:_XlcDefaultLoader - fun:_XOpenLC - fun:_XrmInitParseInfo - fun:NewDatabase - fun:XrmGetStringDatabase -} -{ - XrmInitialize is fairly obnoxious about leaving reachable memory around - Memcheck:Leak - fun:malloc - fun:_XrmInternalStringToQuark -} -{ - XrmInitialize is fairly obnoxious about leaving reachable memory around - Memcheck:Leak - fun:malloc - obj:/usr/lib/libX11.so.6.2.0 - fun:_XrmInternalStringToQuark - fun:XrmInitialize -} -{ - XrmInitialize is fairly obnoxious about leaving reachable memory around - Memcheck:Leak - fun:malloc - fun:permalloc - fun:_XrmInternalStringToQuark -} -{ - XrmGetStringDatabase is fairly obnoxious about leaving reachable memory around - Memcheck:Leak - fun:malloc - fun:_XlcSetConverter - fun:_XlcDefaultLoader - fun:_XOpenLC - fun:_XrmInitParseInfo - fun:NewDatabase - fun:XrmGetStringDatabase -} -{ - XrmGetStringDatabase is fairly obnoxious about leaving reachable memory around - Memcheck:Leak - fun:malloc - fun:_XlcCreateDefaultCharSet - fun:_XlcAddCT - fun:_XlcInitCTInfo - fun:initialize - fun:initialize - fun:_XlcCreateLC - fun:_XlcUtf8Loader - fun:_XOpenLC - fun:_XrmInitParseInfo - fun:NewDatabase - fun:XrmGetStringDatabase -} -{ - XrmGetStringDatabase is fairly obnoxious about leaving reachable memory around - Memcheck:Leak - fun:realloc - fun:add_codeset - fun:initialize - fun:_XlcCreateLC - fun:_XlcDefaultLoader - fun:_XOpenLC - fun:_XrmInitParseInfo - fun:NewDatabase - fun:XrmGetStringDatabase -} -{ - XrmGetStringDatabase is fairly obnoxious about leaving reachable memory around - Memcheck:Leak - fun:realloc - fun:add_codeset - fun:load_generic - fun:initialize - fun:_XlcCreateLC - fun:_XlcDefaultLoader - fun:_XOpenLC -} -{ - XrmGetStringDatabase is fairly obnoxious about leaving reachable memory around - Memcheck:Leak - fun:malloc - fun:add_codeset - fun:load_generic - fun:initialize - fun:_XlcCreateLC - fun:_XlcDefaultLoader - fun:_XOpenLC -} -{ - XrmGetStringDatabase is fairly obnoxious about leaving reachable memory around - Memcheck:Leak - fun:malloc - fun:load_generic - fun:initialize - fun:_XlcCreateLC - fun:_XlcDefaultLoader - fun:_XOpenLC -} -{ - XrmGetStringDatabase is fairly obnoxious about leaving reachable memory around - Memcheck:Leak - fun:malloc - fun:_XlcAddCharSet - fun:_XlcAddCT - fun:_XlcInitCTInfo - fun:initialize - fun:initialize - fun:_XlcCreateLC - fun:_XlcUtf8Loader - fun:_XOpenLC - fun:_XrmInitParseInfo - fun:NewDatabase - fun:XrmGetStringDatabase -} -{ - XrmGetStringDatabase is fairly obnoxious about leaving reachable memory around - Memcheck:Leak - fun:malloc - fun:_XlcCreateLocaleDataBase - fun:initialize - fun:initialize - fun:_XlcCreateLC - fun:_XlcUtf8Loader - fun:_XOpenLC - fun:_XrmInitParseInfo - fun:NewDatabase - fun:XrmGetStringDatabase -} -{ - XrmGetStringDatabase is fairly obnoxious about leaving reachable memory around - Memcheck:Leak - fun:malloc - fun:_XlcSetConverter - fun:_XlcInitCTInfo - fun:initialize - fun:initialize - fun:_XlcCreateLC - fun:_XlcUtf8Loader - fun:_XOpenLC - fun:_XrmInitParseInfo - fun:NewDatabase - fun:XrmGetStringDatabase -} -{ - pthread initialization seems to leave some memory possibly lost - Memcheck:Leak - fun:calloc - obj:/lib/ld-2.3.6.so - obj:/lib/ld-2.3.6.so - fun:_dl_allocate_tls - fun:__pthread_initialize_minimal - obj:/usr/lib/debug/libpthread-0.10.so - obj:/usr/lib/debug/libpthread-0.10.so - obj:/lib/ld-2.3.6.so - obj:/lib/ld-2.3.6.so - obj:/lib/ld-2.3.6.so -} -{ - pthread initialization seems to leave some memory still reachable - Memcheck:Leak - fun:calloc - fun:_dl_tls_setup - fun:__pthread_initialize_minimal - obj:/usr/lib/debug/libpthread-0.10.so - obj:/usr/lib/debug/libpthread-0.10.so - obj:/lib/ld-2.3.6.so - obj:/lib/ld-2.3.6.so - obj:/lib/ld-2.3.6.so -} -{ - pthread initialization seems to leave some memory possibly lost - Memcheck:Leak - fun:memalign - obj:/lib/ld-2.3.6.so - fun:_dl_allocate_tls - fun:__pthread_initialize_minimal - obj:/usr/lib/debug/libpthread-0.10.so - obj:/usr/lib/debug/libpthread-0.10.so - obj:/lib/ld-2.3.6.so - obj:/lib/ld-2.3.6.so - obj:/lib/ld-2.3.6.so -} -{ - XrmGet*Database is fairly obnoxious about leaving reachable memory around - Memcheck:Leak - fun:malloc - fun:_XlcAddCT - fun:_XlcInitCTInfo - fun:initialize - fun:initialize - fun:_XlcCreateLC - fun:_XlcUtf8Loader - fun:_XOpenLC - fun:_XrmInitParseInfo - fun:NewDatabase -} -{ - XrmGet*Database is fairly obnoxious about leaving reachable memory around - Memcheck:Leak - fun:malloc - fun:PutEntry - fun:GetDatabase -} -{ - XrmGet*Database is fairly obnoxious about leaving reachable memory around - Memcheck:Leak - fun:malloc - fun:initialize - fun:_XlcCreateLC - fun:_XlcDefaultLoader - fun:_XOpenLC - fun:_XrmInitParseInfo - fun:NewDatabase -} -{ - XrmGet*Database is fairly obnoxious about leaving reachable memory around - Memcheck:Leak - fun:malloc - fun:add_codeset - fun:initialize - fun:_XlcCreateLC - fun:_XlcDefaultLoader - fun:_XOpenLC - fun:_XrmInitParseInfo - fun:NewDatabase -} -{ - XrmGet*Database is fairly obnoxious about leaving reachable memory around - Memcheck:Leak - fun:malloc - fun:_XlcAddCharSet - fun:_XlcAddCT - fun:_XlcInitCTInfo - fun:initialize - fun:initialize - fun:_XlcCreateLC - fun:_XlcUtf8Loader - fun:_XOpenLC - fun:_XrmInitParseInfo - fun:NewDatabase -} -{ - XrmGet*Database is fairly obnoxious about leaving reachable memory around - Memcheck:Leak - fun:realloc - fun:add_codeset - fun:initialize - fun:_XlcCreateLC - fun:_XlcDefaultLoader - fun:_XOpenLC - fun:_XrmInitParseInfo - fun:NewDatabase -} -{ - XrmGet*Database is fairly obnoxious about leaving reachable memory around - Memcheck:Leak - fun:malloc - fun:_XlcCreateDefaultCharSet - fun:_XlcAddCT - fun:_XlcInitCTInfo - fun:initialize - fun:initialize - fun:_XlcCreateLC - fun:_XlcUtf8Loader - fun:_XOpenLC - fun:_XrmInitParseInfo - fun:NewDatabase -} -{ - XrmGet*Database is fairly obnoxious about leaving reachable memory around - Memcheck:Leak - fun:malloc - fun:_XlcCreateDefaultCharSet - fun:_XlcAddCT - fun:_XlcInitCTInfo - fun:initialize - fun:initialize - fun:_XlcCreateLC - fun:_XlcUtf8Loader - fun:_XOpenLC - fun:_XrmInitParseInfo - fun:NewDatabase -} -{ - XrmGet*Database is fairly obnoxious about leaving reachable memory around - Memcheck:Leak - fun:malloc - fun:_XlcAddCT - fun:_XlcInitCTInfo - fun:initialize - fun:initialize - fun:_XlcCreateLC - fun:_XlcUtf8Loader - fun:_XOpenLC - fun:_XrmInitParseInfo - fun:NewDatabase -} -{ - XrmGet*Database is fairly obnoxious about leaving reachable memory around - Memcheck:Leak - fun:malloc - fun:_XlcCreateLocaleDataBase - fun:initialize - fun:initialize - fun:_XlcCreateLC - fun:_XlcUtf8Loader - fun:_XOpenLC - fun:_XrmInitParseInfo - fun:NewDatabase -} -{ - XrmGet*Database is fairly obnoxious about leaving reachable memory around - Memcheck:Leak - fun:malloc - fun:_XlcCreateDefaultCharSet - fun:_XlcAddCT - fun:_XlcInitCTInfo - fun:initialize - fun:initialize - fun:_XlcCreateLC - fun:_XlcUtf8Loader - fun:_XOpenLC - fun:_XrmInitParseInfo - fun:NewDatabase -} -{ - XrmGet*Database is fairly obnoxious about leaving reachable memory around - Memcheck:Leak - fun:malloc - fun:_XlcSetConverter - fun:_XlcInitCTInfo - fun:initialize - fun:initialize - fun:_XlcCreateLC - fun:_XlcUtf8Loader - fun:_XOpenLC - fun:_XrmInitParseInfo - fun:NewDatabase -} -{ - XrmGet*Database is fairly obnoxious about leaving reachable memory around - Memcheck:Leak - fun:malloc - fun:_XlcSetConverter - fun:_XlcDefaultLoader - fun:_XOpenLC - fun:_XrmInitParseInfo - fun:NewDatabase -} -{ - XrmGet*Database is fairly obnoxious about leaving reachable memory around - Memcheck:Leak - fun:malloc - fun:_XlcSetConverter - fun:_XlcAddUtf8Converters - fun:_XlcDefaultLoader - fun:_XOpenLC - fun:_XrmInitParseInfo - fun:NewDatabase -} -{ - Xau chooses not to free its static data... - Memcheck:Leak - fun:malloc - fun:XauFileName -} diff --git a/test/6x13.pcf b/test/6x13.pcf deleted file mode 100644 index 1325ae6..0000000 Binary files a/test/6x13.pcf and /dev/null differ diff --git a/test/COPYING b/test/COPYING deleted file mode 100644 index 3db71fb..0000000 --- a/test/COPYING +++ /dev/null @@ -1,26 +0,0 @@ -Cairo is free software. - -These tests are mainly available under a liberal MIT license to simplify -any use of the code for reference purposes. Please check the opening comment -of each file for copyright and licensing information. - -The test suite also bundles some fonts for use by the test suite. The -fonts included, their licenses, and why we use them in the test suite -are as follows: - - Font License Distinguishing feature - -------- ------------- ---------------------- - 6x13.pcf Public Domain Bitmap font - - -The test suite also bundles some images for use by the test suite. The -images included, their licenses, and why we use them in the test suite -are as follows: - - Image License Distinguishing feature - ------------- ------------- ------------------------- - romedalen.jpg Public Domain Bitmap image (image/jpeg) - romedalen.png Public Domain Bitmap image (image/png) - -The kind contributors of the bundled files are (in alphabetical order): -Øyvind KolÃ¥s Author of the original romedalen shot. diff --git a/test/Makefile.am b/test/Makefile.am deleted file mode 100644 index be5741a..0000000 --- a/test/Makefile.am +++ /dev/null @@ -1,403 +0,0 @@ -include $(top_srcdir)/build/Makefile.am.common - -include $(top_srcdir)/test/Makefile.sources - -SUBDIRS=pdiff . - -# Then we have a collection of tests that are only run if certain -# features are compiled into cairo -if HAVE_REAL_PTHREAD -test_sources += $(pthread_test_sources) -endif - -if CAIRO_HAS_FT_FONT -if CAIRO_HAS_FC_FONT -test_sources += $(ft_font_test_sources) -endif -endif - -if CAIRO_HAS_EGL_FUNCTIONS -test_sources += $(egl_surface_test_sources) -endif - -# Need to add quartz-surface-source -if CAIRO_HAS_QUARTZ_SURFACE -test_sources += $(quartz_surface_test_sources) -endif - -if CAIRO_HAS_PDF_SURFACE -test_sources += $(pdf_surface_test_sources) -endif - -if CAIRO_HAS_PS_SURFACE -test_sources += $(ps_surface_test_sources) -endif - -if CAIRO_HAS_SVG_SURFACE -test_sources += $(svg_surface_test_sources) -endif - -if CAIRO_HAS_TEST_SURFACES -test_sources += $(test_fallback16_surface_test_sources) -endif - -if CAIRO_HAS_XCB_SURFACE -test_sources += $(xcb_surface_test_sources) -endif - -if CAIRO_HAS_XLIB_SURFACE -test_sources += $(xlib_surface_test_sources) -endif - -if CAIRO_HAS_XLIB_XRENDER_SURFACE -test_sources += $(xlib_xrender_surface_test_sources) -endif - -if CAIRO_HAS_MULTI_PAGE_SURFACES -test_sources += $(multi_page_surface_test_sources) -endif - -# Include fallback-resolution (once!) if we have any of the vector surfaces -if BUILD_ANY2PPM -if CAIRO_HAS_SVG_SURFACE -test = $(fallback_resolution_test_sources) -endif -if CAIRO_HAS_PDF_SURFACE -test = $(fallback_resolution_test_sources) -endif -if CAIRO_HAS_PS_SURFACE -test = $(fallback_resolution_test_sources) -endif -endif -test_sources += $(test) - -noinst_PROGRAMS = cairo-test-suite$(EXEEXT) # always build -noinst_SCRIPTS = check-refs.sh - -TESTS += cairo-test-suite$(EXEEXT) - -cairo-test-constructors.c: Makefile $(test_sources) make-cairo-test-constructors.sh - (cd $(srcdir) && sh ./make-cairo-test-constructors.sh $(test_sources)) > $@ - -cairo_test_suite_SOURCES = \ - $(cairo_test_suite_sources) \ - $(cairo_test_suite_headers) \ - $(test_sources) \ - cairo-test-constructors.c -cairo_test_suite_CFLAGS = $(AM_CFLAGS) $(real_pthread_CFLAGS) -cairo_test_suite_LDADD = \ - $(real_pthread_LIBS) \ - $(top_builddir)/test/pdiff/libpdiff.la \ - $(top_builddir)/boilerplate/libcairoboilerplate.la \ - $(top_builddir)/src/libcairo.la \ - $(CAIRO_LDADD) -cairo_test_suite_DEPENDENCIES = \ - $(top_builddir)/test/pdiff/libpdiff.la \ - $(top_builddir)/boilerplate/libcairoboilerplate.la \ - $(top_builddir)/src/libcairo.la -if BUILD_ANY2PPM -cairo_test_suite_DEPENDENCIES += \ - any2ppm$(EXEEXT) -endif - -if HAVE_SHM -EXTRA_PROGRAMS += cairo-test-trace -cairo_test_trace_SOURCES = \ - cairo-test-trace.c \ - buffer-diff.c \ - buffer-diff.h -cairo_test_trace_CFLAGS = $(AM_CFLAGS) $(real_pthread_CFLAGS) -cairo_test_trace_LDADD = \ - $(real_pthread_LIBS) \ - $(top_builddir)/test/pdiff/libpdiff.la \ - $(top_builddir)/util/cairo-script/libcairo-script-interpreter.la \ - $(top_builddir)/boilerplate/libcairoboilerplate.la \ - $(top_builddir)/src/libcairo.la \ - $(top_builddir)/util/cairo-missing/libcairo-missing.la \ - $(CAIRO_LDADD) \ - $(SHM_LIBS) -cairo_test_trace_DEPENDENCIES = \ - $(top_builddir)/test/pdiff/libpdiff.la \ - $(top_builddir)/util/cairo-script/libcairo-script-interpreter.la \ - $(top_builddir)/boilerplate/libcairoboilerplate.la \ - $(top_builddir)/src/libcairo.la \ - $(top_builddir)/util/cairo-missing/libcairo-missing.la \ - $(NULL) -endif - -BUILT_SOURCES += cairo-test-constructors.c -EXTRA_DIST += $(BUILT_SOURCES) $(noinst_SCRIPTS) COPYING make-cairo-test-constructors.sh run-cairo-test-suite.sh generate_refs.sh tiger.inc -CLEANFILES += $(BUILT_SOURCES) - -EXTRA_DIST += \ -6x13.pcf \ -index.html \ -jp2.jp2 \ -jpeg.jpg \ -png.png \ -romedalen.jpg \ -romedalen.png \ -scarab.jpg \ -surface-source.c \ -testtable.js \ -reference - -# Any test that doesn't generate a log file goes here -NOLOG_TESTS = \ -fallback-resolution \ -font-options \ -multi-page \ -pdf-features \ -png \ -ps-eps \ -ps-features \ -svg-clip \ -svg-surface \ -toy-font-face \ -user-data - -# A target to summarise the failures -check-summary: - @FAILED_TESTS=""; \ - for t in output/*.log; do \ - if grep -e '\' $$t >/dev/null 2>&1; then \ - FAILED_TESTS="$$FAILED_TESTS $$t"; \ - fi; \ - done; \ - if test -n "$$FAILED_TESTS"; then \ - echo "Failed tests:"; \ - surfaces=""; \ - for t in $$FAILED_TESTS; do \ - name="$${t##output/}"; name="$${name%.log}"; \ - echo -n " $$name: "; \ - grep -e '\' $$t | sed -e 's/.*TARGET: \([^ ]*\).*/\1/' | sort | uniq | tr '\n' ' '; \ - echo; \ - for s in `grep -e '\' $$t | sed -e 's/.*TARGET: \([^ ]*\).*/\1/' | sort | uniq`; do \ - ss=`echo $$s | tr '-' '_'`; \ - tt=`echo $$name | tr '-' '_'`; \ - eval $$ss=\""$${!ss} $$tt"\"; \ - echo $$surfaces | grep $$ss >/dev/null || surfaces="$$surfaces $$ss"; \ - done; \ - done; \ - echo -n "Failures per surface - "; \ - first=""; \ - for s in $$surfaces; do \ - ss=`echo $$s | tr '_' '-'`; \ - test -n "$$first" && echo -n ", "; \ - cnt=`echo $${!s} | wc -w`; \ - echo -n "$$ss: $$cnt"; \ - first="false"; \ - done; \ - echo "."; \ - for s in $$surfaces; do \ - ss=`echo $$s | tr '_' '-'`; \ - cnt=`echo $${!s} | wc -w`; \ - echo -n " $$ss [$$cnt]: "; \ - echo $${!s} | tr '_' '-'; \ - done; \ - fi - -AM_CPPFLAGS = \ - -I$(srcdir) \ - -I$(srcdir)/pdiff \ - -I$(top_srcdir)/boilerplate \ - -I$(top_srcdir)/util/cairo-missing \ - -I$(top_srcdir)/util/cairo-script \ - -I$(top_srcdir)/src \ - -I$(top_builddir)/src \ - $(CAIRO_CFLAGS) -AM_LDFLAGS = $(CAIRO_LDFLAGS) - -$(top_builddir)/boilerplate/libcairoboilerplate.la: $(top_builddir)/src/libcairo.la - cd $(top_builddir)/boilerplate && $(MAKE) $(AM_MAKEFLAGS) libcairoboilerplate.la - -$(top_builddir)/src/libcairo.la: - cd $(top_builddir)/src && $(MAKE) $(AM_MAKEFLAGS) libcairo.la - -$(top_builddir)/test/pdiff/libpdiff.la: - cd $(top_builddir)/test/pdiff && $(MAKE) $(AM_MAKEFLAGS) libpdiff.la - -$(top_builddir)/test/pdiff/perceptualdiff: - cd $(top_builddir)/test/pdiff && $(MAKE) $(AM_MAKEFLAGS) perceptualdiff - -$(top_builddir)/util/cairo-script/libcairo-script-interpreter.la: $(top_builddir)/src/libcairo.la - cd $(top_builddir)/util/cairo-script && $(MAKE) $(AM_MAKEFLAGS) libcairo-script-interpreter.la - -EXTRA_PROGRAMS += imagediff png-flatten - -imagediff_SOURCES = \ - imagediff.c \ - buffer-diff.c \ - buffer-diff.h -imagediff_LDADD = \ - $(top_builddir)/test/pdiff/libpdiff.la \ - $(top_builddir)/src/libcairo.la - -png_flatten_SOURCES = png-flatten.c -png_flatten_LDADD = $(top_builddir)/src/libcairo.la \ - $(CAIRO_LDADD) - -if BUILD_ANY2PPM -check_PROGRAMS += any2ppm -any2ppm_CFLAGS = $(AM_CFLAGS) $(POPPLER_CFLAGS) $(LIBRSVG_CFLAGS) $(LIBSPECTRE_CFLAGS) -# add LDADD, so poppler/librsvg uses "our" cairo -any2ppm_LDFLAGS = $(AM_LDFLAGS) $(CAIRO_TEST_UNDEFINED_LDFLAGS) -any2ppm_LDADD = \ - $(top_builddir)/util/cairo-script/libcairo-script-interpreter.la \ - $(top_builddir)/src/libcairo.la \ - $(CAIRO_LDADD) \ - $(CAIROBOILERPLATE_LIBS) \ - $(POPPLER_LIBS) \ - $(LIBRSVG_LIBS) \ - $(LIBSPECTRE_LIBS) -endif - -if CAIRO_CAN_TEST_PDF_SURFACE -check_PROGRAMS += pdf2png -pdf2png_CFLAGS = $(AM_CFLAGS) $(POPPLER_CFLAGS) -# add LDADD, so poppler uses "our" cairo -pdf2png_LDFLAGS = $(AM_LDFLAGS) $(CAIRO_TEST_UNDEFINED_LDFLAGS) -pdf2png_LDADD = $(top_builddir)/src/libcairo.la \ - $(CAIRO_LDADD) \ - $(POPPLER_LIBS) -endif - -if CAIRO_CAN_TEST_SVG_SURFACE -check_PROGRAMS += svg2png -svg2png_CFLAGS = $(AM_CFLAGS) $(LIBRSVG_CFLAGS) -# add LDADD, so librsvg uses "our" cairo -svg2png_LDFLAGS = $(AM_LDFLAGS) $(CAIRO_TEST_UNDEFINED_LDFLAGS) -svg2png_LDADD = $(top_builddir)/src/libcairo.la \ - $(CAIRO_LDADD) \ - $(LIBRSVG_LIBS) -endif - -if CAIRO_HAS_SPECTRE -check_PROGRAMS += ps2png -ps2png_CFLAGS = $(AM_CFLAGS) $(LIBSPECTRE_CFLAGS) -# add LDADD, so ps2png uses "our" cairo -ps2png_LDFLAGS = $(AM_LDFLAGS) $(CAIRO_TEST_UNDEFINED_LDFLAGS) -ps2png_LDADD = $(top_builddir)/src/libcairo.la \ - $(CAIRO_LDADD) \ - $(LIBSPECTRE_LIBS) -endif - -EXTRA_PROGRAMS += $(TESTS) - -# Do a funny transition of CAIRO_TEST_TARGET through TARGETS such that -# one can limit tested targets both through CAIRO_TEST_TARGET env var -# and TARGETS make var on the command line. Same for the rest. -TARGETS = $(CAIRO_TEST_TARGET) -TARGETS_EXCLUDE = $(CAIRO_TEST_TARGET_EXCLUDE) -FORMAT = $(CAIRO_TEST_TARGET_FORMAT) -NUM_THREADS = $(CAIRO_TEST_NUM_THREADS) -MODE = $(CAIRO_TEST_MODE) - -# Same about ENV vs CAIRO_TEST_ENV. ENV is used with "make run" only -ENV = $(CAIRO_TEST_ENV) - -TESTS_ENVIRONMENT = CAIRO_TEST_MODE="$(MODE)" CAIRO_TEST_TARGET="$(TARGETS)" CAIRO_TEST_TARGET_FORMAT="$(FORMAT)" CAIRO_TEST_TARGET_EXCLUDE="$(TARGETS_EXCLUDE)" CAIRO_TEST_NUM_THREADS="$(NUM_THREADS)" $(ENV) - -EXTRA_VALGRIND_FLAGS = $(CAIRO_EXTRA_VALGRIND_FLAGS) -VALGRIND_FLAGS = \ - --tool=memcheck --suppressions=$(srcdir)/.valgrind-suppressions \ - --track-origins=yes \ - --leak-check=yes --show-reachable=yes \ - $(EXTRA_VALGRIND_FLAGS) - -CLEANFILES += \ - valgrind-log \ - ref.hash \ - ref.list \ - png-test.png \ - png.out.png \ - create-for-stream.pdf \ - create-for-stream.ps \ - create-for-stream.svg \ - svg-surface-source.out.svg \ - pdf-surface-source.out.pdf \ - ps-surface-source.out.ps \ - pdf-features.pdf \ - pdf-mime-data.out* \ - ps-features.ps \ - svg-clip.svg \ - svg-surface.svg \ - multi-page.pdf \ - multi-page.ps \ - $(NULL) - -# This used to be a simple 'echo ${RM} *.ps *.pdf *.svg *.etc', but -# most systems cannot handle all of our clean files together. -# Then it became a fancy find using many GNU extensions, but then the ugly -# reality of portability was raised and it became.... -clean-local: - rm -rf output - -${FIND} . -name '*.log' -print | ${XARGS} ${RM} - -${FIND} . -name '*.[is]' -print | ${XARGS} ${RM} -clean-caches: - -${FIND} output -name '*.fail.*' -print | ${XARGS} ${RM} - -${FIND} output -name '*.pass.*' -print | ${XARGS} ${RM} - -# The following definitions both should work. -#FAILED_TESTS = `grep -l '\' $(test_sources:.c=.log) 2>/dev/null | sed -e 's/[.]log$$//' | xargs echo` -FAILED_TESTS = `grep -l '\' $(test_sources:.c=.log) 2>/dev/null | tr '\n' ' ' | sed -e 's/[.]log */ /g; s/^ //; s/ $$//'` - -recheck = check CAIRO_TESTS="$(FAILED_TESTS)" - -# Re-checks all failed tests, i.e. tests with a log file that has a failure -recheck: - @echo Re-checking failed tests - @$(MAKE) $(AM_MAKEFLAGS) $(recheck) - -# Checks tests. -# Target doesn't fail if tests fail. -test: - @$(MAKE) $(AM_MAKEFLAGS) check - -# Re-checks tests. -# Target doesn't fail if tests fail. -retest: - @CAIRO_TESTS="$(FAILED_TESTS)"; \ - $(MAKE) $(AM_MAKEFLAGS) check - -# Run tests under a tool specified by TOOL. For example, make run TOOL=gdb -run: - $(MAKE) $(AM_MAKEFLAGS) check TESTS_ENVIRONMENT='$(TESTS_ENVIRONMENT) $(top_builddir)/libtool --mode=execute env $(TOOL)' - -# Check tests under valgrind. Saves log to valgrind-log -check-valgrind: - $(MAKE) $(AM_MAKEFLAGS) check TESTS_ENVIRONMENT='$(TESTS_ENVIRONMENT) CAIRO_TEST_MODE="$(MODE),foreground CAIRO_TEST_TIMEOUT=0" $(top_builddir)/libtool --mode=execute valgrind $(VALGRIND_FLAGS)' 2>&1 | tee valgrind-log - -#%.log: %.c cairo-test-suite -#-./cairo-test-suite $(<:.c=) - -NOLOG_TESTS_LOG = $(NOLOG_TESTS:=.log) - -$(NOLOG_TESTS_LOG): - @echo dummy > $@ - -# Identify identical reference images -check-ref-dups: check-refs.sh $(top_builddir)/test/pdiff/perceptualdiff - sh $(srcdir)/check-refs.sh $(top_builddir)/test/pdiff/perceptualdiff - -# Remove identical reference images (DANGEROUS) -clean-ref-dups: check-refs.sh $(top_builddir)/test/pdiff/perceptualdiff - sh $(srcdir)/check-refs.sh | cut -d' ' -f2 | while read f; do git rm "reference/$$f"; done - -results.tar: - @tar cf $@ index.html testtable.js *.log output/*.log; \ - for i in output/*.fail.png ; do \ - testname=$${i#output/} ; \ - testname=$${testname%%.*} ; \ - echo tar uf $@ reference/$${testname}*.ref.png $${i%fail.png}out.png $${i%fail.png}diff.png ; \ - tar uf $@ reference/$${testname}*.ref.png $${i%fail.png}out.png $${i%fail.png}diff.png ; \ - done - -results.tar.gz: results.tar - gzip -c $< > $@ - -release-verify-sane-tests: - -.PHONY: check-valgrind test recheck retest check-ref-dups release-verify-sane-tests - -EXTRA_DIST += Makefile.win32 diff --git a/test/Makefile.sources b/test/Makefile.sources deleted file mode 100644 index ccf1a84..0000000 --- a/test/Makefile.sources +++ /dev/null @@ -1,446 +0,0 @@ -test_sources = \ - a1-bug.c \ - a1-clip.c \ - a1-fill.c \ - a1-image-sample.c \ - a1-mask.c \ - a1-mask-sample.c \ - a1-sample.c \ - a1-traps-sample.c \ - a1-rasterisation.c \ - a8-clear.c \ - a8-mask.c \ - aliasing.c \ - alpha-similar.c \ - arc-direction.c \ - arc-infinite-loop.c \ - arc-looping-dash.c \ - api-special-cases.c \ - big-line.c \ - big-empty-box.c \ - big-empty-triangle.c \ - big-little-box.c \ - big-little-triangle.c \ - bug-spline.c \ - big-trap.c \ - bilevel-image.c \ - blur.c \ - bug-40410.c \ - bug-51910.c \ - bug-84115.c \ - bug-bo-rectangular.c \ - bug-bo-collins.c \ - bug-bo-ricotz.c \ - bug-source-cu.c \ - bug-extents.c \ - bug-seams.c \ - caps.c \ - checkerboard.c \ - caps-joins.c \ - caps-joins-alpha.c \ - caps-joins-curve.c \ - caps-tails-curve.c \ - caps-sub-paths.c \ - clear.c \ - clear-source.c \ - clip-all.c \ - clip-complex-bug61592.c \ - clip-complex-shape.c \ - clip-contexts.c \ - clip-disjoint.c \ - clip-disjoint-hatching.c \ - clip-disjoint-quad.c \ - clip-device-offset.c \ - clip-double-free.c \ - clip-draw-unbounded.c \ - clip-empty.c \ - clip-empty-group.c \ - clip-empty-save.c \ - clip-fill.c \ - clip-fill-no-op.c \ - clip-fill-rule.c \ - clip-fill-rule-pixel-aligned.c \ - clip-group-shapes.c \ - clip-image.c \ - clip-intersect.c \ - clip-mixed-antialias.c \ - clip-nesting.c \ - clip-operator.c \ - clip-push-group.c \ - clip-polygons.c \ - clip-rectilinear.c \ - clip-shape.c \ - clip-stroke.c \ - clip-stroke-no-op.c \ - clip-text.c \ - clip-twice.c \ - clip-twice-rectangle.c \ - clip-unbounded.c \ - clip-zero.c \ - clipped-group.c \ - clipped-surface.c \ - close-path.c \ - close-path-current-point.c \ - composite-integer-translate-source.c \ - composite-integer-translate-over.c \ - composite-integer-translate-over-repeat.c \ - copy-disjoint.c \ - copy-path.c \ - coverage.c \ - create-for-stream.c \ - create-from-png.c \ - create-from-png-stream.c \ - culled-glyphs.c \ - curve-to-as-line-to.c \ - dash-caps-joins.c \ - dash-curve.c \ - dash-infinite-loop.c \ - dash-no-dash.c \ - dash-offset.c \ - dash-offset-negative.c \ - dash-scale.c \ - dash-state.c \ - dash-zero-length.c \ - degenerate-arc.c \ - degenerate-arcs.c \ - degenerate-curve-to.c \ - degenerate-dash.c \ - degenerate-linear-gradient.c \ - degenerate-path.c \ - degenerate-pen.c \ - degenerate-radial-gradient.c \ - degenerate-rel-curve-to.c \ - degenerate-solid-dash.c \ - drunkard-tails.c \ - device-offset.c \ - device-offset-fractional.c \ - device-offset-positive.c \ - device-offset-scale.c \ - error-setters.c \ - extend-pad.c \ - extend-pad-border.c \ - extend-pad-similar.c \ - extend-reflect.c \ - extend-reflect-similar.c \ - extend-repeat.c \ - extend-repeat-similar.c \ - extended-blend.c \ - fallback.c \ - fill-alpha.c \ - fill-alpha-pattern.c \ - fill-and-stroke.c \ - fill-and-stroke-alpha.c \ - fill-and-stroke-alpha-add.c \ - fill-degenerate-sort-order.c \ - fill-disjoint.c \ - fill-empty.c \ - fill-image.c \ - fill-missed-stop.c \ - fill-rule.c \ - filter-bilinear-extents.c \ - filter-nearest-offset.c \ - filter-nearest-transformed.c \ - finer-grained-fallbacks.c \ - font-face-get-type.c \ - font-matrix-translation.c \ - font-options.c \ - glyph-cache-pressure.c \ - get-and-set.c \ - get-clip.c \ - get-group-target.c \ - get-path-extents.c \ - gradient-alpha.c \ - gradient-constant-alpha.c \ - gradient-zero-stops.c \ - gradient-zero-stops-mask.c \ - group-clip.c \ - group-paint.c \ - group-state.c \ - group-unaligned.c \ - half-coverage.c \ - halo.c \ - hatchings.c \ - horizontal-clip.c \ - huge-linear.c \ - huge-radial.c \ - image-surface-source.c \ - image-bug-710072.c \ - implicit-close.c \ - infinite-join.c \ - in-fill-empty-trapezoid.c \ - in-fill-trapezoid.c \ - invalid-matrix.c \ - inverse-text.c \ - inverted-clip.c \ - joins.c \ - joins-loop.c \ - joins-star.c \ - joins-retrace.c \ - large-clip.c \ - large-font.c \ - large-source.c \ - large-source-roi.c \ - large-twin-antialias-mixed.c \ - leaky-dash.c \ - leaky-dashed-rectangle.c \ - leaky-dashed-stroke.c \ - leaky-polygon.c \ - line-width.c \ - line-width-large-overlap.c \ - line-width-overlap.c \ - line-width-scale.c \ - line-width-tolerance.c \ - line-width-zero.c \ - linear-gradient.c \ - linear-gradient-extend.c \ - linear-gradient-large.c \ - linear-gradient-one-stop.c \ - linear-gradient-reflect.c \ - linear-gradient-subset.c \ - linear-step-function.c \ - linear-uniform.c \ - long-dashed-lines.c \ - long-lines.c \ - map-to-image.c \ - mask.c \ - mask-alpha.c \ - mask-ctm.c \ - mask-glyphs.c \ - mask-surface-ctm.c \ - mask-transformed-image.c \ - mask-transformed-similar.c \ - mesh-pattern.c \ - mesh-pattern-accuracy.c \ - mesh-pattern-conical.c \ - mesh-pattern-control-points.c \ - mesh-pattern-fold.c \ - mesh-pattern-overlap.c \ - mesh-pattern-transformed.c \ - mime-data.c \ - mime-surface-api.c \ - miter-precision.c \ - move-to-show-surface.c \ - negative-stride-image.c \ - new-sub-path.c \ - nil-surface.c \ - operator.c \ - operator-alpha.c \ - operator-alpha-alpha.c \ - operator-clear.c \ - operator-source.c \ - outline-tolerance.c \ - over-above-source.c \ - over-around-source.c \ - over-below-source.c \ - over-between-source.c \ - overlapping-boxes.c \ - overlapping-glyphs.c \ - overlapping-dash-caps.c \ - paint.c \ - paint-clip-fill.c \ - paint-repeat.c \ - paint-source-alpha.c \ - paint-with-alpha.c \ - paint-with-alpha-group-clip.c \ - partial-clip-text.c \ - partial-coverage.c \ - pass-through.c \ - path-append.c \ - path-currentpoint.c \ - path-stroke-twice.c \ - path-precision.c \ - pattern-get-type.c \ - pattern-getters.c \ - pdf-isolated-group.c \ - pixman-downscale.c \ - pixman-rotate.c \ - png.c \ - push-group.c \ - push-group-color.c \ - push-group-path-offset.c \ - radial-gradient.c \ - radial-gradient-extend.c \ - radial-outer-focus.c \ - random-clips.c \ - random-intersections-eo.c \ - random-intersections-nonzero.c \ - random-intersections-curves-eo.c \ - random-intersections-curves-nz.c \ - raster-source.c \ - record.c \ - record1414x.c \ - record2x.c \ - record90.c \ - recordflip.c \ - record-extend.c \ - record-mesh.c \ - recording-surface-pattern.c \ - recording-surface-extend.c \ - rectangle-rounding-error.c \ - rectilinear-fill.c \ - rectilinear-grid.c \ - rectilinear-miter-limit.c \ - rectilinear-dash.c \ - rectilinear-dash-scale.c \ - rectilinear-stroke.c \ - reflected-stroke.c \ - rel-path.c \ - rgb24-ignore-alpha.c \ - rotate-image-surface-paint.c \ - rotate-stroke-box.c \ - rotated-clip.c \ - rounded-rectangle-fill.c \ - rounded-rectangle-stroke.c \ - sample.c \ - scale-down-source-surface-paint.c \ - scale-offset-image.c \ - scale-offset-similar.c \ - scale-source-surface-paint.c \ - scaled-font-zero-matrix.c \ - stroke-ctm-caps.c \ - stroke-clipped.c \ - stroke-image.c \ - stroke-open-box.c \ - select-font-face.c \ - select-font-no-show-text.c \ - self-copy.c \ - self-copy-overlap.c \ - self-intersecting.c \ - set-source.c \ - show-glyphs-advance.c \ - show-glyphs-many.c \ - show-text-current-point.c \ - shape-general-convex.c \ - shape-sierpinski.c \ - simple.c \ - skew-extreme.c \ - smask.c \ - smask-fill.c \ - smask-image-mask.c \ - smask-mask.c \ - smask-paint.c \ - smask-stroke.c \ - smask-text.c \ - solid-pattern-cache-stress.c \ - source-clip.c \ - source-clip-scale.c \ - source-surface-scale-paint.c \ - spline-decomposition.c \ - stride-12-image.c \ - stroke-pattern.c \ - subsurface.c \ - subsurface-image-repeat.c \ - subsurface-repeat.c \ - subsurface-reflect.c \ - subsurface-pad.c \ - subsurface-modify-child.c \ - subsurface-modify-parent.c \ - subsurface-outside-target.c \ - subsurface-scale.c \ - subsurface-similar-repeat.c \ - surface-finish-twice.c \ - surface-pattern.c \ - surface-pattern-big-scale-down.c \ - surface-pattern-operator.c \ - surface-pattern-scale-down.c \ - surface-pattern-scale-down-extend.c \ - surface-pattern-scale-up.c \ - text-antialias.c \ - text-antialias-subpixel.c \ - text-cache-crash.c \ - text-glyph-range.c \ - text-pattern.c \ - text-rotate.c \ - text-transform.c \ - text-zero-len.c \ - tighten-bounds.c \ - tiger.c \ - toy-font-face.c \ - transforms.c \ - translate-show-surface.c \ - trap-clip.c \ - twin.c \ - twin-antialias-gray.c \ - twin-antialias-mixed.c \ - twin-antialias-none.c \ - twin-antialias-subpixel.c \ - unaligned-box.c \ - unantialiased-shapes.c \ - unbounded-operator.c \ - unclosed-strokes.c \ - user-data.c \ - user-font.c \ - user-font-mask.c \ - user-font-proxy.c \ - user-font-rescale.c \ - world-map.c \ - white-in-noop.c \ - xcb-huge-image-shm.c \ - xcb-huge-subimage.c \ - xcb-stress-cache.c \ - xcb-snapshot-assert.c \ - xcomposite-projection.c \ - xlib-expose-event.c \ - zero-alpha.c \ - zero-mask.c - -pthread_test_sources = \ - pthread-same-source.c \ - pthread-show-text.c \ - pthread-similar.c \ - $(NULL) - -ft_font_test_sources = \ - bitmap-font.c \ - ft-font-create-for-ft-face.c \ - ft-show-glyphs-positioning.c \ - ft-show-glyphs-table.c \ - ft-text-vertical-layout-type1.c \ - ft-text-vertical-layout-type3.c \ - ft-text-antialias-none.c - -egl_surface_test_sources = \ - egl-oversized-surface.c \ - egl-surface-source.c - -quartz_surface_test_sources = quartz-surface-source.c - -pdf_surface_test_sources = \ - pdf-features.c \ - pdf-mime-data.c \ - pdf-surface-source.c - -ps_surface_test_sources = \ - ps-eps.c \ - ps-features.c \ - ps-surface-source.c - -svg_surface_test_sources = \ - svg-surface.c \ - svg-clip.c \ - svg-surface-source.c - -xcb_surface_test_sources = \ - xcb-surface-source.c - -xlib_surface_test_sources = \ - xlib-surface.c \ - xlib-surface-source.c - -xlib_xrender_surface_test_sources = get-xrender-format.c - -multi_page_surface_test_sources = multi-page.c - -fallback_resolution_test_sources = fallback-resolution.c - -cairo_test_suite_headers = \ - buffer-diff.h \ - cairo-test.h \ - cairo-test-private.h \ - world-map.h \ - $(NULL) - -cairo_test_suite_sources = \ - buffer-diff.c \ - cairo-test.c \ - cairo-test-runner.c diff --git a/test/Makefile.win32 b/test/Makefile.win32 deleted file mode 100644 index ba8ea5b..0000000 --- a/test/Makefile.win32 +++ /dev/null @@ -1,55 +0,0 @@ -top_srcdir = .. -include $(top_srcdir)/build/Makefile.win32.common -include $(top_srcdir)/test/Makefile.sources - -CFLAGS += \ - -I$(top_srcdir)/boilerplate \ - -I$(top_srcdir)/util/cairo-script/ \ - -I./pdiff \ - $(NULL) - -TEST_LIBS = \ - ./pdiff/$(CFG)/pdiff.lib \ - $(top_builddir)/boilerplate/$(CFG)/boiler.lib \ - $(top_builddir)/src/$(CFG)/cairo-static.lib \ - $(NULL) - -all: inform $(CFG)/cairo-test-suite.exe - -cairo-test-constructors.c: Makefile.sources Makefile.win32 $(test_sources) make-cairo-test-constructors.sh - sh ./make-cairo-test-constructors.sh $(test_sources) > $@ - -SOURCES = $(cairo_test_suite_sources) $(test_sources) cairo-test-constructors.c - -OBJECTS = $(patsubst %.c, $(CFG)/%-static.obj, $(SOURCES)) - -ANY2PPM_OBJS = \ - $(CFG)/any2ppm-static.obj \ - $(top_builddir)/util/cairo-script/$(CFG)/libcairo-script-interpreter.lib \ - $(top_builddir)/src/$(CFG)/cairo-static.lib \ - $(NULL) - -$(CFG)/cairo-test-suite.exe: $(OBJECTS) $(TEST_LIBS) - @$(LD) $(CAIRO_LDFLAGS) -OUT:$@ $(OBJECTS) $(TEST_LIBS) $(CAIRO_LIBS) - -$(CFG)/any2ppm.exe: $(ANY2PPM_OBJS) - $(LD) $(CAIRO_LDFLAGS) -OUT:$@ $^ $(CAIRO_LIBS) - -./pdiff/$(CFG)/pdiff.lib: - $(MAKE) -C pdiff -f Makefile.win32 - -$(top_builddir)/src/$(CFG)/cairo-static.lib: - $(MAKE) -C $(top_srcdir)/src -f Makefile.win32 - -$(top_builddir)/boilerplate/$(CFG)/boiler.lib: - $(MAKE) -C $(top_srcdir)/boilerplate -f Makefile.win32 - -$(top_builddir)/util/cairo-script/$(CFG)/libcairo-script-interpreter.lib: - $(MAKE) -C $(top_srcdir)/util/cairo-script -f Makefile.win32 - -.PHONY: check test - -check: inform $(CFG)/any2ppm.exe $(CFG)/cairo-test-suite.exe - @ANY2PPM=$(CFG)\\any2ppm.exe $(CFG)/cairo-test-suite.exe - -test: inform check diff --git a/test/README b/test/README deleted file mode 100644 index f143394..0000000 --- a/test/README +++ /dev/null @@ -1,319 +0,0 @@ -Regression test suite for cairo. - -How to use cairo's test suite -============================= -Using this test should be as simple as running: - - make test - -assuming that the cairo distribution in the directory above has been -configured and built. The test suite here goes through some effort to -run against the locally compiled library rather than any installed -version, but those efforts may fall short depending on the level of your -libtool madness. - -The results of the test suite run are summarized in an index.html -file, which, when viewed in a web browser makes it quite easy to -visually see any failed renderings alongside the corresponding -reference image, (and a diff image as well). - -The test suite needs to be run before any code is committed and before -any release. See below for hints and rules governing the use of the suite. - -The test suite is built as a single binary, which allows you to choose -individual or categories of tests to run. For example, if you want to -run all text related tests you can use: - ./cairo-test-suite text -Or if you want to check the current status of known failures: - ./cairo-test-suite XFAIL -Or to run a subset of tests, use the -k option to run only the tests -that include the given keyword: - ./cairo-test-suite -k downscale -The binary also permits controlling which backend is used via the -CAIRO_TEST_TARGET environment variable, so for instance: - CAIRO_TEST_TARGET=gl ./cairo-test-suite -k blur -This binary should be backwards-compatible with all library versions, -allowing you to compare current versus past behaviour for any test. - -Tailoring tests running ------------------------ -There are some mechanisms to limit the tests run during "make test". -These come very handy when doing development, but should not be used -to circumvent the "pass" requirements listed below. - -make's TARGETS environment variable can be used to limit the backends when -running the tests. It should contain a (space-, comma-separated) list of -backends. CAIRO_TESTS environment variable, which is a comma-, space-seperated -lists, can be used to limit the tests run. -For example: - - CAIRO_TESTS="zero-alpha" make test TARGETS=image,ps - -make's FORMAT variable can also be used to limit the content formats when -running the tests. It should contain a (space-, comma-separated) list of -content formats to test. -For example: - - CAIRO_TESTS="zero-alpha" make test TARGETS=image,ps FORMAT="rgb,rgba" - -Another very handy mechanism when trying to fix bugs is: - - make retest - -This will re-run the test suite, but only on tests that failed on the -last run. So this is a much faster way of checking if changes actually -fix bugs rather than running the entire test suite again. - -The test suite first compares the output from the current run against the -previous in order to skip more expensive image comparisons . If you think -this is interfering with the results, you can clear the cached results using: - - make clean-caches - -Running tests under modified environments or tools -------------------------------------------------- -To run tests under a tool like gdb, one can use the run target and -the TOOL variable. For example: - - CAIRO_TESTS=user-font make run TOOL=gdb TARGETS=pdf - -If you want to run under valgrind, there is a specific target for that -that also sets a bunch of useful valgrind options. Try: - - CAIRO_TESTS=user-font make check-valgrind - -You can run tests under a modified environment you can use the ENV -make variable. However, that environment will also affect the libtool -wrapper of the tests. To only affect the actual test binaries, pass -such environment as TOOL: - - CAIRO_TESTS=user-font make run TOOL="LD_PRELOAD=/path/to/something.so" - -Getting the elusive zero failures ---------------------------------- -It's generally been very difficult to achieve a test run with zero -failures. The difficulties stem from the various versions of the many -libraries that the test suite depends on, (it depends on a lot more -than cairo itself), as well as fonts and other system-specific -settings. If your system differs significantly from the system on -which the reference images were generated, then you will likely see -the test suite reporting "failures", (even if cairo is working just -fine). - -We are constantly working to reduce the number of variables that need -to be tweaked to get a clean run, (for example, by bundling fonts with -the test suite itself), and also working to more carefully document -the software configuration used to generate the reference images. - -Here are some of the relevant details: - - * Your system must have a copy of the DejaVu font, the sha1sum of - the version used are listed in [...]. These are - "DejaVu Sans" (DejaVuSans.ttf) [1cd336329f45f241002ded61893d91e3acd04436]; - "DejaVu Sans Mono" (DejaVuSansMono.ttf) [0458c0f0fb57f3eb8ced62f26fe7c5ed4e6a9a68]; - "DejaVu Serif" (DejaVuSerif.ttf) [93502d0d0445d1fe1c9f51e51b3e0169266346ce]; - [the DejaVu fonts can be installed from the ttf-dejavu 2.33-2 Debian package] - and also - "Nimbus Sans L" (n019003l.pfb) - [which can be found in the gsfonts Debian package]. - - * Currently, you must be using a build of cairo using freetype - (cairo-ft) as the default font backend. Otherwise all tests - involving text are likely to fail. - - * To test the pdf backend, you will want the very latest version of - poppler as made available via git: - - git clone git://anongit.freedesktop.org/git/poppler/poppler - - As of this writing, no released version of poppler contains all - the fixes you will need to avoid false negatives from the test - suite. - - * To test the ps backend, you will need ghostscript version 9.04. - - * Testing the xlib backend is problematic since many X server - drivers have bugs that are exercised by the test suite. (Or, if - not actual bugs, differ slightly in their output in such a way - that the test suite will report errors.) This can be quite handy - if you want to debug an X server driver, but since most people - don't want to do that, another option is to run against a headless - X server that uses only software for all rendering. One such X - server is Xvfb which can be started like this: - - Xvfb -screen 0 1680x1024x24 -ac -nolisten tcp :2 - - after which the test suite can be run against it like so: - - DISPLAY=:2 make test - - We have been using Xvfb for testing cairo releases and ensuring - that all tests behave as expected with this X server. - -What if I can't make my system match? -------------------------------------- -For one reason or another, you may be unable to get a clean run of the -test suite even if cairo is working properly, (for example, you might -be on a system without freetype). In this case, it's still useful to -be able to determine if code changes you make to cairo result in any -regressions to the test suite. But it's hard to notice regressions if -there are many failures both before and after your changes. - -For this scenario, you can capture the output of a run of the test -suite before your changes, and then use the CAIRO_REF_DIR environment -variable to use that output as the reference images for a run after -your changes. The process looks like this: - - # Before code change there may be failures we don't care about - make test - - # Let's save those output images - mkdir /some/directory/ - cp -r test/output /some/directory/ - - # hack, hack, hack - - # Now to see if nothing changed: - CAIRO_REF_DIR=/some/directory/ make test - -Best practices for cairo developers -=================================== -If we all follow the guidelines below, then both the test suite and -cairo itself will stay much healthier, and we'll all have a lot more -fun hacking on cairo. - -Before committing ------------------ -All tests should return a result of PASS or XFAIL. The XFAIL results -indicate known bugs. The final message should be one of the following: - - All XX tests behaved as expected (YY expected failures) - All XX tests passed - -If any tests have a status of FAIL, then the new code has caused a -regression error which should be fixed before the code is committed. - -When a new bug is found ------------------------ -A new test case should be added by imitating the style of an existing -test. This means adding the following files: - - new-bug.c - reference/new-bug.ref.png - reference/new-bug.xfail.png - -Where new-bug.c is a minimal program to demonstrate the bug, following -the style of existing tests. The new-bug.ref.png image should contain -the desired result of new-bug.c if the bug were fixed while -new-bug.xfail.png contains the current results of the test. - -Makefile.sources should be edited by adding new-bug.c to test_sources. -And last but not least, don't forget to "git add" the new files. - -When a new feature is added ---------------------------- -It's important for the regression suite to keep pace with development -of the library. So a new test should be added for each new feature. -The work involved is similar the work described above for new bugs. -The only distinction is that the test is expected to pass so it -should not need a new-bug.xfail.png file. - -While working on a test ------------------------ -Before a bugfix or feature is ready, it may be useful to compare -output from different builds. For convenience, you can set -CAIRO_REF_DIR to point at a previous test directory, relative -to the current test directory, and any previous output will be -used by preference as reference images. - -When a bug is fixed -------------------- -The fix should be verified by running the test suite which should -result in an "unexpected pass" for the test of interest. Rejoice as -appropriate, then remove the relevant xfail.png file from git. - -Before releasing ----------------- -All tests should return a result of PASS for all supported (those enabled by -default) backends, meaning all known bugs are fixed, resulting in the happy -message: - - All XX tests passed - -Some notes on limitations in poppler -==================================== -One of the difficulties of our current test infrastructure is that we -rely on external tools to convert cairo's vector output (PDF, -PostScript, and SVG), into an image that can be used for the image -comparison. This means that any bugs in that conversion tool will -result in false negatives in the test suite. - -We've identified several such bugs in the poppler library which is -used to convert PDF to an image. This is particularly discouraging -because 1) poppler is free software that will be used by *many* cairo -users, and 2) poppler calls into cairo for its rendering so it should -be able to do a 100% faithful conversion. - -So we have an interest in ensuring that these poppler bugs get fixed -sooner rather than later. As such, we're trying to be good citizens by -reporting all such poppler bugs that we identify to the poppler -bugzilla. Here's a tracking bug explaining the situation: - - Poppler does not yet handle everything in the cairo test suite - https://bugs.freedesktop.org/show_bug.cgi?id=12143 - -Here's the rule: If a cairo-pdf test reports a failure, but viewing -the resulting PDF file with acroread suggests that the PDF itself is -correct, then there's likely a bug in poppler. In this case, we can -simply report the poppler bug, (making it block 12143 above), post the -PDF result from the test suite, and list the bug in this file. Once -we've done this, we can capture poppler's buggy output as a -pdf-specific reference image (as reference/*.xfail.png) so that the -test suite will regard the test as passing, (and we'll ensure there -is no regression). - -Once the poppler bug gets fixed, the test suite will start reporting a -false negative again, and this will be easy to fix by simply removing -the pdf-specific reference image. - -Here are the reported poppler bugs and the tests they affect: - -Poppler doesn't correctly handle gradients with transparency -https://bugs.freedesktop.org/show_bug.cgi?id=12144 --------------------------------------------------- -fill-alpha-pattern -gradient-alpha -gradient-constant-alpha -linear-gradient -linear-gradient-reflect -radial-gradient -trap-clip - -Poppler should paint images with CAIRO_EXTEND_PAD -https://bugs.freedesktop.org/show_bug.cgi?id=14578 --------------------------------------------------- -paint-source-alpha -paint-with-alpha -rotate-image-surface-paint -scale-source-surface-paint - -Incorrect clipping of group object (regression?) -https://bugs.freedesktop.org/show_bug.cgi?id=14580 --------------------------------------------------- -push-group - -spurious horizontal stripes in color gradients -https://bugs.freedesktop.org/show_bug.cgi?id=10942 --------------------------------------------------- -smask -smask-fill -smask-image-mask -smask-mask -smask-paint -smask-stroke -smask-text - -Ghostscript does not correctly render small miters -http://bugs.ghostscript.com/show_bug.cgi?id=690098 --------------------------------------------------- -miter-precision diff --git a/test/a1-bug.c b/test/a1-bug.c deleted file mode 100644 index 8e00d40..0000000 --- a/test/a1-bug.c +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - static const struct point { - double x; - double y; - } xy[] = { - { 627.016212, 221.749777 }, - { 756.120787, 221.749777 }, - { 756.120787, 557.602766 }, - { 626.952721, 557.602766 }, - { 626.548456, 493.315729 }, - }; - unsigned int i; - - cairo_set_source_rgb (cr, 0, 0, 0); - cairo_paint (cr); - - for (i = 0; i < ARRAY_LENGTH (xy); i++) - cairo_line_to (cr, xy[i].x, xy[i].y); - - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_fill_preserve (cr); - - cairo_set_antialias (cr, CAIRO_ANTIALIAS_NONE); - cairo_set_source_rgb (cr, 0, 1, 0); - cairo_fill (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (a1_bug, - "Check the fidelity of the rasterisation.", - "a1, raster", /* keywords */ - "target=raster", /* requirements */ - 1000, 800, - NULL, draw) diff --git a/test/a1-clip.c b/test/a1-clip.c deleted file mode 100644 index 0e84cd3..0000000 --- a/test/a1-clip.c +++ /dev/null @@ -1,175 +0,0 @@ -/* - * Copyright © 2008 Red Hat, Inc. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" - -#define POINTS 10 -#define STEP (1.0 / POINTS) -#define PAD 1 -#define WIDTH (PAD + POINTS * 2 + PAD) -#define HEIGHT (WIDTH) - -static cairo_test_status_t -paint (cairo_t *cr, int width, int height) -{ - int i, j; - - /* Fill background white */ - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - /* Draw in black */ - cairo_set_source_rgb (cr, 0, 0, 0); - - cairo_translate (cr, PAD, PAD); - cairo_set_antialias (cr, CAIRO_ANTIALIAS_NONE); - - for (i = 0; i < POINTS; i++) - for (j = 0; j < POINTS; j++) { - cairo_save (cr); - cairo_rectangle (cr, 2 * i + i * STEP, 2 * j + j * STEP, 1, 1); - cairo_clip (cr); - cairo_paint (cr); - cairo_restore (cr); - } - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -fill_equal (cairo_t *cr, int width, int height) -{ - int i, j; - - /* Fill background white */ - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - /* Draw in black */ - cairo_set_source_rgb (cr, 0, 0, 0); - - cairo_translate (cr, PAD, PAD); - cairo_set_antialias (cr, CAIRO_ANTIALIAS_NONE); - - for (i = 0; i < POINTS; i++) - for (j = 0; j < POINTS; j++) { - cairo_save (cr); - cairo_rectangle (cr, 2 * i + i * STEP, 2 * j + j * STEP, 1, 1); - cairo_clip_preserve (cr); - cairo_fill (cr); - cairo_restore (cr); - } - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -fill (cairo_t *cr, int width, int height) -{ - int i, j; - - /* Fill background white */ - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - /* Draw in black */ - cairo_set_source_rgb (cr, 0, 0, 0); - - cairo_translate (cr, PAD, PAD); - cairo_set_antialias (cr, CAIRO_ANTIALIAS_NONE); - - for (i = 0; i < POINTS; i++) - for (j = 0; j < POINTS; j++) { - cairo_save (cr); - cairo_rectangle (cr, 2 * i + i * STEP, 2 * j + j * STEP, 1, 1); - cairo_clip (cr); - cairo_rectangle (cr, 2 * i, 2 * j, 2, 2); - cairo_fill (cr); - cairo_restore (cr); - } - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -stroke (cairo_t *cr, int width, int height) -{ - int i, j; - - /* Fill background white */ - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - /* Draw in black */ - cairo_set_source_rgb (cr, 0, 0, 0); - - cairo_translate (cr, PAD, PAD); - cairo_set_antialias (cr, CAIRO_ANTIALIAS_NONE); - - cairo_set_line_width (cr, 2); - cairo_set_line_cap (cr, CAIRO_LINE_CAP_BUTT); - - for (i = 0; i < POINTS; i++) - for (j = 0; j < POINTS; j++) { - cairo_save (cr); - cairo_rectangle (cr, 2 * i + i * STEP, 2 * j + j * STEP, 1, 1); - cairo_clip (cr); - cairo_move_to (cr, 2 * i, 2 * j + 1); - cairo_line_to (cr, 2 * i + 2, 2 * j + 1); - cairo_stroke (cr); - cairo_restore (cr); - } - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (a1_clip_paint, - "Test sample position when drawing trapezoids with ANTIALIAS_NONE", - "alpha, clip", /* keywords */ - "target=raster", /* requirements */ - WIDTH, HEIGHT, - NULL, paint) - -CAIRO_TEST (a1_clip_fill, - "Test sample position when drawing trapezoids with ANTIALIAS_NONE", - "alpha, clip", /* keywords */ - "target=raster", /* requirements */ - WIDTH, HEIGHT, - NULL, fill) - -CAIRO_TEST (a1_clip_fill_equal, - "Test sample position when drawing trapezoids with ANTIALIAS_NONE", - "alpha, clip", /* keywords */ - "target=raster", /* requirements */ - WIDTH, HEIGHT, - NULL, fill_equal) - -CAIRO_TEST (a1_clip_stroke, - "Test sample position when drawing trapezoids with ANTIALIAS_NONE", - "alpha, clip", /* keywords */ - "target=raster", /* requirements */ - WIDTH, HEIGHT, - NULL, stroke) diff --git a/test/a1-fill.c b/test/a1-fill.c deleted file mode 100644 index 8c8b8c8..0000000 --- a/test/a1-fill.c +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright © 2011 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Chris Wilson - */ - -/* Exercise https://bugs.freedesktop.org/show_bug.cgi?id=31604 */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_t *a1; - cairo_t *cr2; - - a1 = cairo_image_surface_create (CAIRO_FORMAT_A1, 100, 100); - cr2 = cairo_create (a1); - cairo_surface_destroy (a1); - - cairo_set_operator (cr2, CAIRO_OPERATOR_SOURCE); - cairo_rectangle (cr2, 10, 10, 80, 80); - cairo_set_source_rgb (cr2, 1, 1, 1); - cairo_fill (cr2); - cairo_rectangle (cr2, 20, 20, 60, 60); - cairo_set_source_rgb (cr2, 0, 0, 0); - cairo_fill (cr2); - - a1 = cairo_surface_reference (cairo_get_target (cr2)); - cairo_destroy (cr2); - - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_mask_surface (cr, a1, 0, 0); - cairo_surface_destroy (a1); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (a1_fill, - "Test filling of an a1-surface and use as mask", - "a1, alpha, fill, mask", /* keywords */ - "target=raster", /* requirements */ - 100, 100, - NULL, draw) diff --git a/test/a1-image-sample.c b/test/a1-image-sample.c deleted file mode 100644 index 3c349af..0000000 --- a/test/a1-image-sample.c +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright © 2008 Red Hat, Inc. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" - -#define POINTS 10 -#define STEP (1.0 / POINTS) -#define PAD 1 -#define WIDTH (PAD + POINTS * 2 + PAD) -#define HEIGHT (WIDTH) - -/* A single, black pixel */ -static const uint32_t black_pixel = 0xff000000; - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - int i, j; - cairo_surface_t *surface; - - surface = cairo_image_surface_create_for_data ((unsigned char *) &black_pixel, - CAIRO_FORMAT_ARGB32, - 1, 1, 4); - - /* Fill background white */ - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - cairo_translate (cr, PAD, PAD); - - for (i = 0; i < POINTS; i++) - for (j = 0; j < POINTS; j++) { - cairo_set_source_surface (cr, surface, - 2 * i + i * STEP, 2 * j + j * STEP); - cairo_pattern_set_filter (cairo_get_source (cr), - CAIRO_FILTER_NEAREST); - cairo_paint (cr); - } - - cairo_surface_destroy (surface); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (a1_image_sample, - "Test sample position when drawing images with FILTER_NEAREST", - "image, alpha", /* keywords */ - "target=raster", /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/a1-mask-sample.c b/test/a1-mask-sample.c deleted file mode 100644 index 4214e8f..0000000 --- a/test/a1-mask-sample.c +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright © 2008 Red Hat, Inc. - * Copyright © 2010 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Carl D. Worth - * Chris Wilson - */ - -#include "cairo-test.h" - -#define POINTS 10 -#define STEP (1.0 / POINTS) -#define PAD 1 -#define WIDTH (PAD + POINTS * 2 + PAD) -#define HEIGHT (WIDTH) - -/* A single, opaque pixel */ -static const uint32_t black_pixel = 0xffffffff; - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_t *surface; - cairo_pattern_t *mask; - int i, j; - - surface = cairo_image_surface_create_for_data ((unsigned char *) &black_pixel, - CAIRO_FORMAT_A8, - 1, 1, 4); - mask = cairo_pattern_create_for_surface (surface); - cairo_pattern_set_filter (mask, CAIRO_FILTER_NEAREST); - cairo_surface_destroy (surface); - - /* Fill background white */ - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - cairo_translate (cr, PAD, PAD); - - cairo_set_source_rgb (cr, 0, 0, 0); - for (i = 0; i < POINTS; i++) { - for (j = 0; j < POINTS; j++) { - cairo_matrix_t m; - - cairo_matrix_init_translate (&m, - -(2 * i + i * STEP), - -(2 * j + j * STEP)); - cairo_pattern_set_matrix (mask, &m); - cairo_mask (cr, mask); - } - } - - cairo_pattern_destroy (mask); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (a1_mask_sample, - "Test sample position when masking with FILTER_NEAREST", - "image, alpha", /* keywords */ - "target=raster", /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/a1-mask.c b/test/a1-mask.c deleted file mode 100644 index c52aa9d..0000000 --- a/test/a1-mask.c +++ /dev/null @@ -1,202 +0,0 @@ -/* - * Copyright © Jeff Muizelaar - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * JEFF MUIZELAAR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Authors: Jeff Muizelaar - * Carl Worth - * Chris Wilson - */ - -#include "cairo-test.h" - -#define MASK_WIDTH 10 -#define MASK_HEIGHT 8 - -#ifdef WORDS_BIGENDIAN -#define MASK 0x28, 0x55 -#else -#define MASK 0x14, 0xAA -#endif -static unsigned char mask[(MASK_WIDTH + 7) / 8 * MASK_HEIGHT] = { - MASK, - MASK, - MASK, - MASK, - MASK, - MASK, - MASK, - MASK, -}; - -static cairo_test_status_t -check_status (const cairo_test_context_t *ctx, - cairo_status_t status, - cairo_status_t expected) -{ - if (status == expected) - return CAIRO_TEST_SUCCESS; - - cairo_test_log (ctx, - "Error: Expected status value %d (%s), received %d (%s)\n", - expected, - cairo_status_to_string (expected), - status, - cairo_status_to_string (status)); - return CAIRO_TEST_FAILURE; -} - -static cairo_test_status_t -test_surface_with_width_and_stride (const cairo_test_context_t *ctx, - int width, int stride, - cairo_status_t expected) -{ - cairo_test_status_t status; - cairo_surface_t *surface; - cairo_t *cr; - int len; - unsigned char *data; - - cairo_test_log (ctx, - "Creating surface with width %d and stride %d\n", - width, stride); - - len = stride; - if (len < 0) - len = -len; - data = xmalloc (len); - - surface = cairo_image_surface_create_for_data (data, CAIRO_FORMAT_A1, - width, 1, stride); - cr = cairo_create (surface); - - cairo_paint (cr); - - status = check_status (ctx, cairo_surface_status (surface), expected); - if (status) - goto BAIL; - - status = check_status (ctx, cairo_status (cr), expected); - if (status) - goto BAIL; - - BAIL: - cairo_destroy (cr); - cairo_surface_destroy (surface); - free (data); - return status; -} - -static cairo_test_status_t -draw (cairo_t *cr, int dst_width, int dst_height) -{ - unsigned char *mask_aligned; - cairo_surface_t *surface; - - surface = cairo_image_surface_create (CAIRO_FORMAT_A1, - MASK_WIDTH, - MASK_HEIGHT); - - mask_aligned = cairo_image_surface_get_data (surface); - if (mask_aligned != NULL) { - int stride = cairo_image_surface_get_stride (surface), row; - const unsigned char *src = mask; - unsigned char *dst = mask_aligned; - for (row = 0; row < MASK_HEIGHT; row++) { - memcpy (dst, src, (MASK_WIDTH + 7) / 8); - src += (MASK_WIDTH + 7) / 8; - dst += stride; - } - } - cairo_surface_mark_dirty (surface); - - /* Paint background blue */ - cairo_set_source_rgb (cr, 0, 0, 1); /* blue */ - cairo_paint (cr); - - /* Then paint red through our mask */ - cairo_set_source_rgb (cr, 1, 0, 0); /* red */ - cairo_mask_surface (cr, surface, 0, 0); - cairo_surface_destroy (surface); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -preamble (cairo_test_context_t *ctx) -{ - cairo_test_status_t status = CAIRO_TEST_SUCCESS; - int test_width; - - /* first check the API strictness */ - for (test_width = 0; test_width < 40; test_width++) { - int test_stride = (test_width + 7) / 8; - int stride = cairo_format_stride_for_width (CAIRO_FORMAT_A1, - test_width); - cairo_status_t expected; - - /* First create a surface using the width as the stride, - * (most of these should fail). - */ - expected = (stride == test_stride) ? - CAIRO_STATUS_SUCCESS : CAIRO_STATUS_INVALID_STRIDE; - - status = test_surface_with_width_and_stride (ctx, - test_width, - test_stride, - expected); - if (status) - return status; - - status = test_surface_with_width_and_stride (ctx, - test_width, - -test_stride, - expected); - if (status) - return status; - - - /* Then create a surface using the correct stride, - * (should always succeed). - */ - status = test_surface_with_width_and_stride (ctx, - test_width, - stride, - CAIRO_STATUS_SUCCESS); - if (status) - return status; - - status = test_surface_with_width_and_stride (ctx, - test_width, - -stride, - CAIRO_STATUS_SUCCESS); - if (status) - return status; - } - - return status; -} - -CAIRO_TEST (a1_mask, - "test masks of CAIRO_FORMAT_A1", - "alpha, mask", /* keywords */ - NULL, /* requirements */ - MASK_WIDTH, MASK_HEIGHT, - preamble, draw) diff --git a/test/a1-rasterisation.c b/test/a1-rasterisation.c deleted file mode 100644 index b59090a..0000000 --- a/test/a1-rasterisation.c +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright 2010 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -/* - * Test the fidelity of the rasterisation, paying careful attention to rounding. - */ - -#include "../src/cairo-fixed-type-private.h" -#define PRECISION (int)(1 << CAIRO_FIXED_FRAC_BITS) - -#define WIDTH ((PRECISION/2+1)*3) -#define HEIGHT ((PRECISION/2+1)*3) - -#define SUBPIXEL(v) ((v)/(double)(PRECISION/2)) - -static cairo_test_status_t -rectangles (cairo_t *cr, int width, int height) -{ - int x, y; - - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); - cairo_paint (cr); - - cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); - cairo_set_antialias (cr, CAIRO_ANTIALIAS_NONE); - - for (x = 0; x < WIDTH; x += 3) { - for (y = 0; y < HEIGHT; y += 3) { - cairo_rectangle (cr, x + SUBPIXEL (y/3) - .5, y + SUBPIXEL (x/3) - .5, .5, .5); - } - } - cairo_fill (cr); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -triangles (cairo_t *cr, int width, int height) -{ - int x, y; - - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); - cairo_paint (cr); - - cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); - cairo_set_antialias (cr, CAIRO_ANTIALIAS_NONE); - - for (x = 0; x < WIDTH; x += 3) { - for (y = 0; y < HEIGHT; y += 3) { - /* a rectangle with a diagonal to force tessellation */ - cairo_move_to (cr, x + SUBPIXEL (y/3) - .5, y + SUBPIXEL (x/3) - .5); - cairo_rel_line_to (cr, .5, .5); - cairo_rel_line_to (cr, 0, -.5); - cairo_rel_line_to (cr, -.5, 0); - cairo_rel_line_to (cr, 0, .5); - cairo_rel_line_to (cr, .5, 0); - } - } - cairo_fill (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (a1_rasterisation_rectangles, - "Check the fidelity of the rasterisation.", - "rasterisation", /* keywords */ - "target=raster", /* requirements */ - WIDTH, HEIGHT, - NULL, rectangles) - -CAIRO_TEST (a1_rasterisation_triangles, - "Check the fidelity of the rasterisation.", - "rasterisation", /* keywords */ - "target=raster", /* requirements */ - WIDTH, HEIGHT, - NULL, triangles) diff --git a/test/a1-sample.c b/test/a1-sample.c deleted file mode 100644 index 977dfc8..0000000 --- a/test/a1-sample.c +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright © 2011 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -#define WIDTH (256) //CAIRO_FIXED_ONE -#define HEIGHT (WIDTH) - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - int i, j; - - /* Fill background white */ - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - cairo_set_antialias (cr, CAIRO_ANTIALIAS_NONE); - cairo_set_source_rgb (cr, 0, 0, 0); - - /* Only the single rectangle that covers the centre pixel should be filled*/ - for (i = 0; i < 256; i++) - for (j = 0; j < 256; j++) { - cairo_rectangle (cr, i + i/256., j + j/256., 1/256., 1/256.); - cairo_fill (cr); - } - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (a1_sample, - "Tests unantialiased rendering of a quantum box", - " alpha", /* keywords */ - "target=raster", /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/a1-traps-sample.c b/test/a1-traps-sample.c deleted file mode 100644 index 5bb97bb..0000000 --- a/test/a1-traps-sample.c +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright © 2008 Red Hat, Inc. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" - -#define POINTS 10 -#define STEP (1.0 / POINTS) -#define PAD 1 -#define WIDTH (PAD + POINTS * 2 + PAD) -#define HEIGHT (WIDTH) - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - int i, j; - - /* Fill background white */ - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - /* Draw in black */ - cairo_set_source_rgb (cr, 0, 0, 0); - - cairo_translate (cr, PAD, PAD); - cairo_set_antialias (cr, CAIRO_ANTIALIAS_NONE); - - for (i = 0; i < POINTS; i++) - for (j = 0; j < POINTS; j++) { - cairo_rectangle (cr, 2 * i + i * STEP, 2 * j + j * STEP, 1, 1); - cairo_fill (cr); - } - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (a1_traps_sample, - "Test sample position when drawing trapezoids with ANTIALIAS_NONE", - "alpha, traps", /* keywords */ - "target=raster", /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/a8-clear.c b/test/a8-clear.c deleted file mode 100644 index 1459f83..0000000 --- a/test/a8-clear.c +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright © 2010 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Chris Wilson - * - * Based on a bug snippet by Jeremy Moles - */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_pattern_t *mask; - - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_paint (cr); - - cairo_push_group_with_content (cr, CAIRO_CONTENT_ALPHA); - { - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - cairo_move_to (cr, 0, 0); - cairo_line_to (cr, width, height); - cairo_set_operator (cr, CAIRO_OPERATOR_CLEAR); - cairo_set_line_width (cr, 10); - cairo_stroke (cr); - } - mask = cairo_pop_group (cr); - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_mask (cr, mask); - cairo_pattern_destroy (mask); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (a8_clear, - "Test clear on an a8 surface", - "a8, clear", /* keywords */ - NULL, /* requirements */ - 40, 40, - NULL, draw) - diff --git a/test/a8-mask.c b/test/a8-mask.c deleted file mode 100644 index ec70812..0000000 --- a/test/a8-mask.c +++ /dev/null @@ -1,201 +0,0 @@ -/* - * Copyright © Jeff Muizelaar - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * JEFF MUIZELAAR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Authors: Jeff Muizelaar - * Carl Worth - */ - -#include "cairo-test.h" - -#define MASK_WIDTH 8 -#define MASK_HEIGHT 8 - -static unsigned char mask[MASK_WIDTH * MASK_HEIGHT] = { - 0x0, 0x0, 0xff, 0x0, 0xff, 0x0, 0x0, 0x0, - 0x0, 0x0, 0xff, 0x0, 0xff, 0x0, 0x0, 0x0, - 0x0, 0x0, 0xff, 0x0, 0xff, 0x0, 0x0, 0x0, - 0x0, 0x0, 0xff, 0x0, 0xff, 0x0, 0x0, 0x0, - 0x0, 0x0, 0xff, 0x0, 0xff, 0x0, 0x0, 0x0, - 0x0, 0x0, 0xff, 0x0, 0xff, 0x0, 0x0, 0x0, - 0x0, 0x0, 0xff, 0x0, 0xff, 0x0, 0x0, 0x0, - 0x0, 0x0, 0xff, 0x0, 0xff, 0x0, 0x0, 0x0, -}; - -static cairo_test_status_t -check_status (const cairo_test_context_t *ctx, - cairo_status_t status, - cairo_status_t expected) -{ - if (status == expected) - return CAIRO_TEST_SUCCESS; - - cairo_test_log (ctx, - "Error: Expected status value %d (%s), received %d (%s)\n", - expected, - cairo_status_to_string (expected), - status, - cairo_status_to_string (status)); - return CAIRO_TEST_FAILURE; -} - -static cairo_test_status_t -test_surface_with_width_and_stride (const cairo_test_context_t *ctx, - int width, int stride, - cairo_status_t expected) -{ - cairo_test_status_t status; - cairo_surface_t *surface; - cairo_t *cr; - int len; - unsigned char *data; - - cairo_test_log (ctx, - "Creating surface with width %d and stride %d\n", - width, stride); - - len = stride; - if (len < 0) - len = -len; - data = xmalloc (len); - - surface = cairo_image_surface_create_for_data (data, CAIRO_FORMAT_A8, - width, 1, stride); - cr = cairo_create (surface); - - cairo_paint (cr); - - status = check_status (ctx, cairo_surface_status (surface), expected); - if (status) - goto BAIL; - - status = check_status (ctx, cairo_status (cr), expected); - if (status) - goto BAIL; - - BAIL: - cairo_destroy (cr); - cairo_surface_destroy (surface); - free (data); - return status; -} - -static cairo_test_status_t -draw (cairo_t *cr, int dst_width, int dst_height) -{ - int stride, row; - unsigned char *src, *dst, *mask_aligned; - cairo_surface_t *surface; - - /* Now test actually drawing through our mask data, allocating and - * copying with the proper stride. */ - stride = cairo_format_stride_for_width (CAIRO_FORMAT_A8, - MASK_WIDTH); - - mask_aligned = xmalloc (stride * MASK_HEIGHT); - - src = mask; - dst = mask_aligned; - for (row = 0; row < MASK_HEIGHT; row++) { - memcpy (dst, src, MASK_WIDTH); - src += MASK_WIDTH; - dst += stride; - } - - surface = cairo_image_surface_create_for_data (mask_aligned, - CAIRO_FORMAT_A8, - MASK_WIDTH, - MASK_HEIGHT, - stride); - - /* Paint background blue */ - cairo_set_source_rgb (cr, 0, 0, 1); /* blue */ - cairo_paint (cr); - - /* Then paint red through our mask */ - cairo_set_source_rgb (cr, 1, 0, 0); /* red */ - cairo_mask_surface (cr, surface, 0, 0); - cairo_surface_destroy (surface); - - free (mask_aligned); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -preamble (cairo_test_context_t *ctx) -{ - cairo_test_status_t status = CAIRO_TEST_SUCCESS; - int test_width; - - for (test_width = 0; test_width < 40; test_width++) { - int stride = cairo_format_stride_for_width (CAIRO_FORMAT_A8, - test_width); - cairo_status_t expected; - - /* First create a surface using the width as the stride, - * (most of these should fail). - */ - expected = (stride == test_width) ? - CAIRO_STATUS_SUCCESS : CAIRO_STATUS_INVALID_STRIDE; - - status = test_surface_with_width_and_stride (ctx, - test_width, - test_width, - expected); - if (status) - return status; - - status = test_surface_with_width_and_stride (ctx, - test_width, - -test_width, - expected); - if (status) - return status; - - - /* Then create a surface using the correct stride, - * (should always succeed). - */ - status = test_surface_with_width_and_stride (ctx, - test_width, - stride, - CAIRO_STATUS_SUCCESS); - if (status) - return status; - - status = test_surface_with_width_and_stride (ctx, - test_width, - -stride, - CAIRO_STATUS_SUCCESS); - if (status) - return status; - } - - return status; -} - -CAIRO_TEST (a8_mask, - "test masks of CAIRO_FORMAT_A8", - "alpha, mask", /* keywords */ - NULL, /* requirements */ - 8, 8, - preamble, draw) diff --git a/test/aliasing.c b/test/aliasing.c deleted file mode 100644 index 73c1f1a..0000000 --- a/test/aliasing.c +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright 2010 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -/* A fun little test to explore color fringing in various experimental - * subpixel rasterisation techniques. - */ - -#define WIDTH 60 -#define HEIGHT 40 - -static const struct color { - double red, green, blue; -} color[] = { - { 1, 1, 1 }, - { 0, 0, 0 }, - { 1, 0, 0 }, - { 0, 1, 0 }, - { 0, 0, 1 }, - { 1, 1, 0 }, - { 0, 1, 1 }, - { 1, 0, 1 }, - { .5, .5, .5 }, -}; - -#define NUM_COLORS ARRAY_LENGTH (color) - -static void -object (cairo_t *cr, const struct color *fg, const struct color *bg) -{ - cairo_set_source_rgb (cr, bg->red, bg->green, bg->blue); - cairo_rectangle (cr, 0, 0, WIDTH, HEIGHT); - cairo_fill (cr); - - cairo_set_source_rgb (cr, fg->red, fg->green, fg->blue); - cairo_save (cr); - cairo_scale (cr, WIDTH, HEIGHT); - cairo_arc (cr, .5, .5, .5 - 4. / MAX (WIDTH, HEIGHT), 0, 2 * M_PI); - cairo_fill (cr); - cairo_arc (cr, .5, .5, .5 - 2. / MAX (WIDTH, HEIGHT), 0, 2 * M_PI); - cairo_restore (cr); - cairo_set_line_width (cr, 1.); - cairo_stroke (cr); - - cairo_set_source_rgb (cr, bg->red, bg->green, bg->blue); - cairo_set_line_width (cr, 4.); - cairo_move_to (cr, 4, HEIGHT-4); - cairo_line_to (cr, WIDTH-12, 4); - cairo_move_to (cr, 12, HEIGHT-4); - cairo_line_to (cr, WIDTH-4, 4); - cairo_stroke (cr); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - unsigned int i, j; - - for (i = 0; i < NUM_COLORS; i++) { - for (j = 0; j < NUM_COLORS; j++) { - cairo_save (cr); - cairo_translate (cr, i * WIDTH, j * HEIGHT); - object (cr, &color[i], &color[j]); - cairo_restore (cr); - } - } - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (aliasing, - "Check for subpixel aliasing and color fringing", - "rasterisation", /* keywords */ - "target=raster", /* requirements */ - NUM_COLORS * WIDTH, NUM_COLORS * HEIGHT, - NULL, draw) diff --git a/test/alpha-similar.c b/test/alpha-similar.c deleted file mode 100644 index 86c6ae3..0000000 --- a/test/alpha-similar.c +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright 2008 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -static cairo_surface_t * -create_source (cairo_surface_t *target, int width, int height) -{ - cairo_surface_t *similar; - cairo_t *cr; - - similar = cairo_surface_create_similar (target, - CAIRO_CONTENT_ALPHA, - width, height); - cr = cairo_create (similar); - cairo_surface_destroy (similar); - - cairo_set_source_rgba (cr, 1, 0, 0, .5); - cairo_paint (cr); - - similar = cairo_surface_reference (cairo_get_target (cr)); - cairo_destroy (cr); - - return similar; -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_t *source; - - source = create_source (cairo_get_target (cr), width, height); - cairo_set_source_surface (cr, source, 0, 0); - cairo_surface_destroy (source); - - cairo_paint (cr); - - return CAIRO_TEST_SUCCESS; -} - -/* - * XFAIL: discrepancy between backends in applying color components of a pure - * alpha surface - */ -CAIRO_TEST (alpha_similar, - "Tests creation of similar alpha surfaces" - "\nApplication of a pure-alpha similar source is inconsistent across backends.", - "alpha, similar", /* keywords */ - NULL, /* requirements */ - 10, 10, - NULL, draw) - diff --git a/test/any2ppm.c b/test/any2ppm.c deleted file mode 100644 index b60b4d9..0000000 --- a/test/any2ppm.c +++ /dev/null @@ -1,894 +0,0 @@ -/* - * Copyright © 2008 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - * - * Contributor(s): - * Carlos Garcia Campos - * - * Adapted from pdf2png.c: - * Copyright © 2005 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Kristian Høgsberg - */ - -#if HAVE_CONFIG_H -#include "config.h" -#endif - -#if HAVE_UNISTD_H -#include -#endif -#include -#include -#include - -#include -#include - -#if CAIRO_CAN_TEST_PDF_SURFACE -#include -#endif - -#if CAIRO_CAN_TEST_SVG_SURFACE -#include -#ifndef RSVG_CAIRO_H -#include -#endif -#endif - -#if CAIRO_HAS_SPECTRE -#include -#endif - -#include - -#if HAVE_FCNTL_H -#include -#endif - -#if HAVE_UNISTD_H && HAVE_SIGNAL_H && HAVE_SYS_STAT_H && HAVE_SYS_SOCKET_H && HAVE_SYS_POLL_H && HAVE_SYS_UN_H -#include -#include -#include -#include -#include - -#define SOCKET_PATH "./.any2ppm" -#define TIMEOUT 60000 /* 60 seconds */ - -#if HAVE_FORK -#define CAN_RUN_AS_DAEMON 1 -#endif -#endif - -#define ARRAY_LENGTH(__array) ((int) (sizeof (__array) / sizeof (__array[0]))) - -static int -_cairo_writen (int fd, char *buf, int len) -{ - while (len) { - int ret; - - ret = write (fd, buf, len); - if (ret == -1) { - int err = errno; - switch (err) { - case EINTR: - case EAGAIN: - continue; - default: - return 0; - } - } - len -= ret; - buf += ret; - } - - return 1; -} - -static int -_cairo_write (int fd, - char *buf, int maxlen, int buflen, - const unsigned char *src, int srclen) -{ - if (buflen < 0) - return buflen; - - while (srclen) { - int len; - - len = buflen + srclen; - if (len > maxlen) - len = maxlen; - len -= buflen; - - memcpy (buf + buflen, src, len); - buflen += len; - srclen -= len; - src += len; - - if (buflen == maxlen) { - if (! _cairo_writen (fd, buf, buflen)) - return -1; - - buflen = 0; - } - } - - return buflen; -} - -static const char * -write_ppm (cairo_surface_t *surface, int fd) -{ - char buf[4096]; - cairo_format_t format; - const char *format_str; - const unsigned char *data; - int len; - int width, height, stride; - int i, j; - - data = cairo_image_surface_get_data (surface); - height = cairo_image_surface_get_height (surface); - width = cairo_image_surface_get_width (surface); - stride = cairo_image_surface_get_stride (surface); - format = cairo_image_surface_get_format (surface); - if (format == CAIRO_FORMAT_ARGB32) { - /* see if we can convert to a standard ppm type and trim a few bytes */ - const unsigned char *alpha = data; - for (j = height; j--; alpha += stride) { - for (i = 0; i < width; i++) { - if ((*(unsigned int *) (alpha+4*i) & 0xff000000) != 0xff000000) - goto done; - } - } - format = CAIRO_FORMAT_RGB24; - done: ; - } - - switch (format) { - case CAIRO_FORMAT_ARGB32: - /* XXX need true alpha for svg */ - format_str = "P7"; - break; - case CAIRO_FORMAT_RGB24: - format_str = "P6"; - break; - case CAIRO_FORMAT_A8: - format_str = "P5"; - break; - case CAIRO_FORMAT_A1: - case CAIRO_FORMAT_RGB16_565: - case CAIRO_FORMAT_RGB30: - case CAIRO_FORMAT_INVALID: - default: - return "unhandled image format"; - } - - len = sprintf (buf, "%s %d %d 255\n", format_str, width, height); - for (j = 0; j < height; j++) { - const unsigned int *row = (unsigned int *) (data + stride * j); - - switch ((int) format) { - case CAIRO_FORMAT_ARGB32: - len = _cairo_write (fd, - buf, sizeof (buf), len, - (unsigned char *) row, 4 * width); - break; - case CAIRO_FORMAT_RGB24: - for (i = 0; i < width; i++) { - unsigned char rgb[3]; - unsigned int p = *row++; - rgb[0] = (p & 0xff0000) >> 16; - rgb[1] = (p & 0x00ff00) >> 8; - rgb[2] = (p & 0x0000ff) >> 0; - len = _cairo_write (fd, - buf, sizeof (buf), len, - rgb, 3); - } - break; - case CAIRO_FORMAT_A8: - len = _cairo_write (fd, - buf, sizeof (buf), len, - (unsigned char *) row, width); - break; - } - if (len < 0) - return "write failed"; - } - - if (len && ! _cairo_writen (fd, buf, len)) - return "write failed"; - - return NULL; -} - -static cairo_surface_t * -_create_image (void *closure, - cairo_content_t content, - double width, double height, - long uid) -{ - cairo_surface_t **out = closure; - cairo_format_t format; - switch (content) { - case CAIRO_CONTENT_ALPHA: - format = CAIRO_FORMAT_A8; - break; - case CAIRO_CONTENT_COLOR: - format = CAIRO_FORMAT_RGB24; - break; - default: - case CAIRO_CONTENT_COLOR_ALPHA: - format = CAIRO_FORMAT_ARGB32; - break; - } - *out = cairo_image_surface_create (format, width, height); - return cairo_surface_reference (*out); -} - -#if CAIRO_HAS_INTERPRETER -static const char * -_cairo_script_render_page (const char *filename, - cairo_surface_t **surface_out) -{ - cairo_script_interpreter_t *csi; - cairo_surface_t *surface = NULL; - cairo_status_t status; - const cairo_script_interpreter_hooks_t hooks = { - &surface, - _create_image, - NULL, /* surface_destroy */ - NULL, /* context_create */ - NULL, /* context_destroy */ - NULL, /* show_page */ - NULL /* copy_page */ - }; - - csi = cairo_script_interpreter_create (); - cairo_script_interpreter_install_hooks (csi, &hooks); - status = cairo_script_interpreter_run (csi, filename); - if (status) { - cairo_surface_destroy (surface); - surface = NULL; - } - status = cairo_script_interpreter_destroy (csi); - if (surface == NULL) - return "cairo-script interpreter failed"; - - if (status == CAIRO_STATUS_SUCCESS) - status = cairo_surface_status (surface); - if (status) { - cairo_surface_destroy (surface); - return cairo_status_to_string (status); - } - - *surface_out = surface; - return NULL; -} - -static const char * -cs_convert (char **argv, int fd) -{ - const char *err; - cairo_surface_t *surface = NULL; /* silence compiler warning */ - - err = _cairo_script_render_page (argv[0], &surface); - if (err != NULL) - return err; - - err = write_ppm (surface, fd); - cairo_surface_destroy (surface); - - return err; -} -#else -static const char * -cs_convert (char **argv, int fd) -{ - return "compiled without CairoScript support."; -} -#endif - -#if CAIRO_CAN_TEST_PDF_SURFACE -/* adapted from pdf2png.c */ -static const char * -_poppler_render_page (const char *filename, - const char *page_label, - cairo_surface_t **surface_out) -{ - PopplerDocument *document; - PopplerPage *page; - double width, height; - GError *error = NULL; - gchar *absolute, *uri; - cairo_surface_t *surface; - cairo_t *cr; - cairo_status_t status; - - if (g_path_is_absolute (filename)) { - absolute = g_strdup (filename); - } else { - gchar *dir = g_get_current_dir (); - absolute = g_build_filename (dir, filename, (gchar *) 0); - g_free (dir); - } - - uri = g_filename_to_uri (absolute, NULL, &error); - g_free (absolute); - if (uri == NULL) - return error->message; /* XXX g_error_free (error) */ - - document = poppler_document_new_from_file (uri, NULL, &error); - g_free (uri); - if (document == NULL) - return error->message; /* XXX g_error_free (error) */ - - page = poppler_document_get_page_by_label (document, page_label); - g_object_unref (document); - if (page == NULL) - return "page not found"; - - poppler_page_get_size (page, &width, &height); - - surface = cairo_image_surface_create (CAIRO_FORMAT_RGB24, width, height); - cr = cairo_create (surface); - - cairo_set_source_rgb (cr, 1., 1., 1.); - cairo_paint (cr); - cairo_push_group_with_content (cr, CAIRO_CONTENT_COLOR_ALPHA); - - poppler_page_render (page, cr); - g_object_unref (page); - - cairo_pop_group_to_source (cr); - cairo_paint (cr); - - status = cairo_status (cr); - cairo_destroy (cr); - - if (status) { - cairo_surface_destroy (surface); - return cairo_status_to_string (status); - } - - *surface_out = surface; - return NULL; -} - -static const char * -pdf_convert (char **argv, int fd) -{ - const char *err; - cairo_surface_t *surface = NULL; /* silence compiler warning */ - - err = _poppler_render_page (argv[0], argv[1], &surface); - if (err != NULL) - return err; - - err = write_ppm (surface, fd); - cairo_surface_destroy (surface); - - return err; -} -#else -static const char * -pdf_convert (char **argv, int fd) -{ - return "compiled without PDF support."; -} -#endif - -#if CAIRO_CAN_TEST_SVG_SURFACE -static const char * -_rsvg_render_page (const char *filename, - cairo_surface_t **surface_out) -{ - RsvgHandle *handle; - RsvgDimensionData dimensions; - GError *error = NULL; - cairo_surface_t *surface; - cairo_t *cr; - cairo_status_t status; - - handle = rsvg_handle_new_from_file (filename, &error); - if (handle == NULL) - return error->message; /* XXX g_error_free */ - - rsvg_handle_get_dimensions (handle, &dimensions); - surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, - dimensions.width, - dimensions.height); - cr = cairo_create (surface); - - rsvg_handle_render_cairo (handle, cr); - g_object_unref (handle); - - status = cairo_status (cr); - cairo_destroy (cr); - - if (status) { - cairo_surface_destroy (surface); - return cairo_status_to_string (status); - } - - *surface_out = surface; - return NULL; -} - -static const char * -svg_convert (char **argv, int fd) -{ - const char *err; - cairo_surface_t *surface = NULL; /* silence compiler warning */ - - err = _rsvg_render_page (argv[0], &surface); - if (err != NULL) - return err; - - err = write_ppm (surface, fd); - cairo_surface_destroy (surface); - - return err; -} -#else -static const char * -svg_convert (char **argv, int fd) -{ - return "compiled without SVG support."; -} -#endif - -#if CAIRO_HAS_SPECTRE -static const char * -_spectre_render_page (const char *filename, - const char *page_label, - cairo_surface_t **surface_out) -{ - static const cairo_user_data_key_t key; - - SpectreDocument *document; - SpectreStatus status; - int width, height, stride; - unsigned char *pixels; - cairo_surface_t *surface; - - document = spectre_document_new (); - spectre_document_load (document, filename); - status = spectre_document_status (document); - if (status) { - spectre_document_free (document); - return spectre_status_to_string (status); - } - - if (page_label) { - SpectrePage *page; - SpectreRenderContext *rc; - - page = spectre_document_get_page_by_label (document, page_label); - spectre_document_free (document); - if (page == NULL) - return "page not found"; - - spectre_page_get_size (page, &width, &height); - rc = spectre_render_context_new (); - spectre_render_context_set_page_size (rc, width, height); - spectre_page_render (page, rc, &pixels, &stride); - spectre_render_context_free (rc); - status = spectre_page_status (page); - spectre_page_free (page); - if (status) { - free (pixels); - return spectre_status_to_string (status); - } - } else { - spectre_document_get_page_size (document, &width, &height); - spectre_document_render (document, &pixels, &stride); - spectre_document_free (document); - } - - surface = cairo_image_surface_create_for_data (pixels, - CAIRO_FORMAT_RGB24, - width, height, - stride); - cairo_surface_set_user_data (surface, &key, - pixels, (cairo_destroy_func_t) free); - *surface_out = surface; - return NULL; -} - -static const char * -ps_convert (char **argv, int fd) -{ - const char *err; - cairo_surface_t *surface = NULL; /* silence compiler warning */ - - err = _spectre_render_page (argv[0], argv[1], &surface); - if (err != NULL) - return err; - - err = write_ppm (surface, fd); - cairo_surface_destroy (surface); - - return err; -} -#else -static const char * -ps_convert (char **argv, int fd) -{ - return "compiled without PostScript support."; -} -#endif - -static const char * -convert (char **argv, int fd) -{ - static const struct converter { - const char *type; - const char *(*func) (char **, int); - } converters[] = { - { "cs", cs_convert }, - { "pdf", pdf_convert }, - { "ps", ps_convert }, - { "svg", svg_convert }, - { NULL, NULL } - }; - const struct converter *converter = converters; - char *type; - - type = strrchr (argv[0], '.'); - if (type == NULL) - return "no file extension"; - type++; - - while (converter->type) { - if (strcmp (type, converter->type) == 0) - return converter->func (argv, fd); - converter++; - } - return "no converter"; -} - -#if CAN_RUN_AS_DAEMON -static int -_getline (int fd, char **linep, size_t *lenp) -{ - char *line; - size_t len, i; - ssize_t ret; - - line = *linep; - if (line == NULL) { - line = malloc (1024); - if (line == NULL) - return -1; - line[0] = '\0'; - len = 1024; - } else - len = *lenp; - - /* XXX simple, but ugly! */ - i = 0; - do { - if (i == len - 1) { - char *nline; - - nline = realloc (line, len + 1024); - if (nline == NULL) - goto out; - - line = nline; - len += 1024; - } - - ret = read (fd, line + i, 1); - if (ret == -1 || ret == 0) - goto out; - } while (line[i++] != '\n'); - -out: - line[i] = '\0'; - *linep = line; - *lenp = len; - return i-1; -} - -static int -split_line (char *line, char *argv[], int max_argc) -{ - int i = 0; - - max_argc--; /* leave one spare for the trailing NULL */ - - argv[i++] = line; - while (i < max_argc && (line = strchr (line, ' ')) != NULL) { - *line++ = '\0'; - argv[i++] = line; - } - - /* chomp the newline */ - line = strchr (argv[i-1], '\n'); - if (line != NULL) - *line = '\0'; - - argv[i] = NULL; - - return i; -} - -static int -any2ppm_daemon_exists (void) -{ - struct stat st; - int fd; - char buf[80]; - int pid; - int ret; - - if (stat (SOCKET_PATH, &st) < 0) - return 0; - - fd = open (SOCKET_PATH ".pid", O_RDONLY); - if (fd < 0) - return 0; - - pid = 0; - ret = read (fd, buf, sizeof (buf) - 1); - if (ret > 0) { - buf[ret] = '\0'; - pid = atoi (buf); - } - close (fd); - - return pid > 0 && kill (pid, 0) == 0; -} - -static int -write_pid_file (void) -{ - int fd; - char buf[80]; - int ret; - - fd = open (SOCKET_PATH ".pid", O_CREAT | O_TRUNC | O_WRONLY, 0666); - if (fd < 0) - return 0; - - ret = sprintf (buf, "%d\n", getpid ()); - ret = write (fd, buf, ret) == ret; - close (fd); - - return ret; -} - -static int -open_devnull_to_fd (int want_fd, int flags) -{ - int error; - int got_fd; - - close (want_fd); - - got_fd = open("/dev/null", flags | O_CREAT, 0700); - if (got_fd == -1) - return -1; - - error = dup2 (got_fd, want_fd); - close (got_fd); - - return error; -} - -static int -daemonize (void) -{ - void (*oldhup) (int); - - /* Let the parent go. */ - switch (fork ()) { - case -1: return -1; - case 0: break; - default: _exit (0); - } - - /* Become session leader. */ - if (setsid () == -1) - return -1; - - /* Refork to yield session leadership. */ - oldhup = signal (SIGHUP, SIG_IGN); - - switch (fork ()) { /* refork to yield session leadership. */ - case -1: return -1; - case 0: break; - default: _exit (0); - } - - signal (SIGHUP, oldhup); - - /* Establish stdio. */ - if (open_devnull_to_fd (0, O_RDONLY) == -1) - return -1; - if (open_devnull_to_fd (1, O_WRONLY | O_APPEND) == -1) - return -1; - if (dup2 (1, 2) == -1) - return -1; - - return 0; -} - -static const char * -any2ppm_daemon (void) -{ - int timeout = TIMEOUT; - struct pollfd pfd; - int sk, fd; - long flags; - struct sockaddr_un addr; - char *line = NULL; - size_t len = 0; - -#ifdef SIGPIPE - signal (SIGPIPE, SIG_IGN); -#endif - - /* XXX racy! */ - if (getenv ("ANY2PPM_FORCE") == NULL && any2ppm_daemon_exists ()) - return "any2ppm daemon already running"; - - unlink (SOCKET_PATH); - - sk = socket (PF_UNIX, SOCK_STREAM, 0); - if (sk == -1) - return "unable to create socket"; - - memset (&addr, 0, sizeof (addr)); - addr.sun_family = AF_UNIX; - strcpy (addr.sun_path, SOCKET_PATH); - if (bind (sk, (struct sockaddr *) &addr, sizeof (addr)) == -1) { - close (sk); - return "unable to bind socket"; - } - - flags = fcntl (sk, F_GETFL); - if (flags == -1 || fcntl (sk, F_SETFL, flags | O_NONBLOCK) == -1) { - close (sk); - return "unable to set socket to non-blocking"; - } - - if (listen (sk, 5) == -1) { - close (sk); - return "unable to listen on socket"; - } - - /* ready for client connection - detach from parent/terminal */ - if (getenv ("ANY2PPM_NODAEMON") == NULL && daemonize () == -1) { - close (sk); - return "unable to detach from parent"; - } - - if (! write_pid_file ()) { - close (sk); - return "unable to write pid file"; - } - - if (getenv ("ANY2PPM_TIMEOUT") != NULL) { - timeout = atoi (getenv ("ANY2PPM_TIMEOUT")); - if (timeout == 0) - timeout = -1; - if (timeout > 0) - timeout *= 1000; /* convert env (in seconds) to milliseconds */ - } - - pfd.fd = sk; - pfd.events = POLLIN; - pfd.revents = 0; /* valgrind */ - while (poll (&pfd, 1, timeout) > 0) { - while ((fd = accept (sk, NULL, NULL)) != -1) { - if (_getline (fd, &line, &len) != -1) { - char *argv[10]; - - if (split_line (line, argv, ARRAY_LENGTH (argv)) > 0) { - const char *err; - - err = convert (argv, fd); - if (err != NULL) { - FILE *file = fopen (".any2ppm.errors", "a"); - if (file != NULL) { - fprintf (file, - "Failed to convert '%s': %s\n", - argv[0], err); - fclose (file); - } - } - } - } - close (fd); - } - } - close (sk); - unlink (SOCKET_PATH); - unlink (SOCKET_PATH ".pid"); - - free (line); - return NULL; -} -#else -static const char * -any2ppm_daemon (void) -{ - return "daemon not compiled in."; -} -#endif - -int -main (int argc, char **argv) -{ - const char *err; - -#if CAIRO_CAN_TEST_PDF_SURFACE || CAIRO_CAN_TEST_SVG_SURFACE -#if GLIB_MAJOR_VERSION <= 2 && GLIB_MINOR_VERSION <= 34 - g_type_init (); -#endif -#endif - -#if CAIRO_CAN_TEST_SVG_SURFACE - rsvg_set_default_dpi (72.0); -#endif - -#if defined(_WIN32) && !defined (__CYGWIN__) - _setmode (1, _O_BINARY); -#endif - - if (argc == 1) - err = any2ppm_daemon (); - else - err = convert (argv + 1, 1); - if (err != NULL) { - fprintf (stderr, "Failed to run converter: %s\n", err); - return EXIT_FAILURE; - } - - return EXIT_SUCCESS; -} diff --git a/test/api-special-cases.c b/test/api-special-cases.c deleted file mode 100644 index c4a754d..0000000 --- a/test/api-special-cases.c +++ /dev/null @@ -1,1989 +0,0 @@ -/* - * Copyright © 2010 Red Hat Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Benjamin Otte - */ - -/* - * WHAT THIS TEST DOES - * - * This test tests that for all public APIs Cairo behaves correct, consistent - * and most of all doesn't crash. It does this by calling all APIs that take - * surfaces or contexts and calling them on specially prepared arguments that - * should fail when called on this function. - * - * ADDING NEW FUNCTIONS - * - * You need (for adding the function cairo_surface_foo): - * 1) A surface_test_func_t named test_cairo_surface_foo that gets passed the - * prepared surface and has the job of calling the function and checking - * the return value (if one exists) for correctness. The top of this file - * contains all these shim functions. - * 2) Knowledge if the function behaves like a setter or like a getter. A - * setter should set an error status on the surface, a getter does not - * modify the function. - * 3) Knowledge if the function only works for a specific surface type and for - * which one. - * 4) An entry in the tests array using the TEST() macro. It takes as arguments: - * - The function name - * - TRUE if the function modifies the surface, FALSE otherwise - * - the surface type for which the function is valid or -1 if it is valid - * for all surface types. - * - * FIXING FAILURES - * - * The test will dump failures notices into the api-special-cases.log file (when - * it doesn't crash). These should be pretty self-explanatory. Usually it is - * enough to just add a new check to the function it complained about. - */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include -#include - -#include "cairo-test.h" - -#if CAIRO_HAS_GL_SURFACE -#include -#endif -#if CAIRO_HAS_OS2_SURFACE -#include -#endif -#if CAIRO_HAS_PDF_SURFACE -#include -#endif -#if CAIRO_HAS_PS_SURFACE -#include -#endif -#if CAIRO_HAS_QUARTZ_SURFACE -#define Cursor QuartzCursor -#include -#undef Cursor -#endif -#if CAIRO_HAS_SVG_SURFACE -#include -#endif -#if CAIRO_HAS_TEE_SURFACE -#include -#endif -#if CAIRO_HAS_XCB_SURFACE -#include -#endif -#if CAIRO_HAS_XLIB_SURFACE -#define Cursor XCursor -#include -#undef Cursor -#endif - -#define surface_has_type(surface,type) (cairo_surface_get_type (surface) == (type)) - -typedef cairo_test_status_t (* surface_test_func_t) (cairo_surface_t *surface); -typedef cairo_test_status_t (* context_test_func_t) (cairo_t *cr); - -static cairo_test_status_t -test_cairo_reference (cairo_t *cr) -{ - cairo_destroy (cairo_reference (cr)); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_get_reference_count (cairo_t *cr) -{ - unsigned int refcount = cairo_get_reference_count (cr); - if (refcount > 0) - return CAIRO_TEST_SUCCESS; - /* inert error context have a refcount of 0 */ - return cairo_status (cr) ? CAIRO_TEST_SUCCESS : CAIRO_TEST_ERROR; -} - -static cairo_test_status_t -test_cairo_set_user_data (cairo_t *cr) -{ - static cairo_user_data_key_t key; - cairo_status_t status; - - status = cairo_set_user_data (cr, &key, &key, NULL); - if (status == CAIRO_STATUS_NO_MEMORY) - return CAIRO_TEST_NO_MEMORY; - else if (status) - return CAIRO_TEST_SUCCESS; - - if (cairo_get_user_data (cr, &key) != &key) - return CAIRO_TEST_ERROR; - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_save (cairo_t *cr) -{ - cairo_save (cr); - cairo_restore (cr); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_push_group (cairo_t *cr) -{ - cairo_pattern_t *pattern; - cairo_status_t status; - - cairo_push_group (cr); - pattern = cairo_pop_group (cr); - status = cairo_pattern_status (pattern); - cairo_pattern_destroy (pattern); - - return status == CAIRO_STATUS_SUCCESS || status == cairo_status (cr) ? CAIRO_TEST_SUCCESS : CAIRO_TEST_ERROR; -} - -static cairo_test_status_t -test_cairo_push_group_with_content (cairo_t *cr) -{ - cairo_push_group_with_content (cr, CAIRO_CONTENT_COLOR_ALPHA); - cairo_pop_group_to_source (cr); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_set_operator (cairo_t *cr) -{ - cairo_set_operator (cr, CAIRO_OPERATOR_OVER); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_set_source (cairo_t *cr) -{ - cairo_pattern_t *source = cairo_pattern_create_rgb (0, 0, 0); - cairo_set_source (cr, source); - cairo_pattern_destroy (source); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_set_source_rgb (cairo_t *cr) -{ - cairo_set_source_rgb (cr, 0, 0, 0); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_set_source_rgba (cairo_t *cr) -{ - cairo_set_source_rgba (cr, 0, 0, 0, 1); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_set_source_surface (cairo_t *cr) -{ - cairo_surface_t *surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 1, 1); - cairo_set_source_surface (cr, surface, 0, 0); - cairo_surface_destroy (surface); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_set_tolerance (cairo_t *cr) -{ - cairo_set_tolerance (cr, 42); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_set_antialias (cairo_t *cr) -{ - cairo_set_antialias (cr, CAIRO_ANTIALIAS_BEST); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_set_fill_rule (cairo_t *cr) -{ - cairo_set_fill_rule (cr, CAIRO_FILL_RULE_EVEN_ODD); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_set_line_width (cairo_t *cr) -{ - cairo_set_line_width (cr, 42); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_set_line_cap (cairo_t *cr) -{ - cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_set_line_join (cairo_t *cr) -{ - cairo_set_line_join (cr, CAIRO_LINE_JOIN_BEVEL); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_set_dash (cairo_t *cr) -{ - cairo_set_dash (cr, NULL, 0, 0); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_set_miter_limit (cairo_t *cr) -{ - cairo_set_miter_limit (cr, 2); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_translate (cairo_t *cr) -{ - cairo_translate (cr, 2, 2); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_scale (cairo_t *cr) -{ - cairo_scale (cr, 2, 2); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_rotate (cairo_t *cr) -{ - cairo_rotate (cr, 2); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_transform (cairo_t *cr) -{ - cairo_matrix_t matrix; - - cairo_matrix_init_translate (&matrix, 1, 1); - cairo_transform (cr, &matrix); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_set_matrix (cairo_t *cr) -{ - cairo_matrix_t matrix; - - cairo_matrix_init_translate (&matrix, 1, 1); - cairo_set_matrix (cr, &matrix); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_identity_matrix (cairo_t *cr) -{ - cairo_identity_matrix (cr); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_user_to_device (cairo_t *cr) -{ - double x = 42, y = 42; - - cairo_user_to_device (cr, &x, &y); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_user_to_device_distance (cairo_t *cr) -{ - double x = 42, y = 42; - - cairo_user_to_device_distance (cr, &x, &y); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_device_to_user (cairo_t *cr) -{ - double x = 42, y = 42; - - cairo_device_to_user (cr, &x, &y); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_device_to_user_distance (cairo_t *cr) -{ - double x = 42, y = 42; - - cairo_device_to_user_distance (cr, &x, &y); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_new_path (cairo_t *cr) -{ - cairo_new_path (cr); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_move_to (cairo_t *cr) -{ - cairo_move_to (cr, 2, 2); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_new_sub_path (cairo_t *cr) -{ - cairo_new_sub_path (cr); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_line_to (cairo_t *cr) -{ - cairo_line_to (cr, 2, 2); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_curve_to (cairo_t *cr) -{ - cairo_curve_to (cr, 2, 2, 3, 3, 4, 4); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_arc (cairo_t *cr) -{ - cairo_arc (cr, 2, 2, 3, 0, 2 * M_PI); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_arc_negative (cairo_t *cr) -{ - cairo_arc_negative (cr, 2, 2, 3, 0, 2 * M_PI); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_rel_move_to (cairo_t *cr) -{ - cairo_rel_move_to (cr, 2, 2); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_rel_line_to (cairo_t *cr) -{ - cairo_rel_line_to (cr, 2, 2); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_rel_curve_to (cairo_t *cr) -{ - cairo_rel_curve_to (cr, 2, 2, 3, 3, 4, 4); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_rectangle (cairo_t *cr) -{ - cairo_rectangle (cr, 2, 2, 3, 3); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_close_path (cairo_t *cr) -{ - cairo_close_path (cr); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_path_extents (cairo_t *cr) -{ - double x1, y1, x2, y2; - cairo_path_extents (cr, &x1, &y1, &x2, &y2); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_paint (cairo_t *cr) -{ - cairo_paint (cr); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_paint_with_alpha (cairo_t *cr) -{ - cairo_paint_with_alpha (cr, 0.5); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_mask (cairo_t *cr) -{ - cairo_pattern_t *pattern; - - pattern = cairo_pattern_create_rgb (0.5, 0.5, 0.5); - cairo_mask (cr, pattern); - - cairo_pattern_destroy (pattern); - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_mask_surface (cairo_t *cr) -{ - cairo_surface_t *surface; - - surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 1, 1); - cairo_mask_surface (cr, surface, 0, 0); - - cairo_surface_destroy (surface); - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_stroke (cairo_t *cr) -{ - cairo_stroke (cr); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_stroke_preserve (cairo_t *cr) -{ - cairo_stroke_preserve (cr); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_fill (cairo_t *cr) -{ - cairo_fill (cr); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_fill_preserve (cairo_t *cr) -{ - cairo_fill_preserve (cr); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_copy_page (cairo_t *cr) -{ - cairo_copy_page (cr); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_show_page (cairo_t *cr) -{ - cairo_show_page (cr); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_in_stroke (cairo_t *cr) -{ - cairo_in_stroke (cr, 1, 1); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_in_fill (cairo_t *cr) -{ - cairo_in_fill (cr, 1, 1); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_in_clip (cairo_t *cr) -{ - cairo_in_clip (cr, 1, 1); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_stroke_extents (cairo_t *cr) -{ - double x1, y1, x2, y2; - cairo_stroke_extents (cr, &x1, &y1, &x2, &y2); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_fill_extents (cairo_t *cr) -{ - double x1, y1, x2, y2; - cairo_fill_extents (cr, &x1, &y1, &x2, &y2); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_reset_clip (cairo_t *cr) -{ - cairo_reset_clip (cr); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_clip (cairo_t *cr) -{ - cairo_clip (cr); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_clip_preserve (cairo_t *cr) -{ - cairo_clip_preserve (cr); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_clip_extents (cairo_t *cr) -{ - double x1, y1, x2, y2; - cairo_clip_extents (cr, &x1, &y1, &x2, &y2); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_copy_clip_rectangle_list (cairo_t *cr) -{ - cairo_rectangle_list_destroy (cairo_copy_clip_rectangle_list (cr)); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_select_font_face (cairo_t *cr) -{ - cairo_select_font_face (cr, "Arial", CAIRO_FONT_SLANT_ITALIC, CAIRO_FONT_WEIGHT_BOLD); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_set_font_size (cairo_t *cr) -{ - cairo_set_font_size (cr, 42); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_set_font_matrix (cairo_t *cr) -{ - cairo_matrix_t matrix; - - cairo_matrix_init_translate (&matrix, 1, 1); - cairo_set_font_matrix (cr, &matrix); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_get_font_matrix (cairo_t *cr) -{ - cairo_matrix_t matrix; - - cairo_get_font_matrix (cr, &matrix); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_set_font_options (cairo_t *cr) -{ - cairo_font_options_t *opt = cairo_font_options_create (); - cairo_set_font_options (cr, opt); - cairo_font_options_destroy (opt); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_get_font_options (cairo_t *cr) -{ - cairo_font_options_t *opt = cairo_font_options_create (); - cairo_get_font_options (cr, opt); - cairo_font_options_destroy (opt); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_set_font_face (cairo_t *cr) -{ - cairo_set_font_face (cr, cairo_get_font_face (cr)); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_set_scaled_font (cairo_t *cr) -{ - cairo_set_scaled_font (cr, cairo_get_scaled_font (cr)); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_show_text (cairo_t *cr) -{ - cairo_show_text (cr, "Cairo"); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_show_glyphs (cairo_t *cr) -{ - cairo_glyph_t glyph; - - glyph.index = 65; - glyph.x = 0; - glyph.y = 0; - - cairo_show_glyphs (cr, &glyph, 1); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_show_text_glyphs (cairo_t *cr) -{ - cairo_glyph_t glyph; - cairo_text_cluster_t cluster; - - glyph.index = 65; - glyph.x = 0; - glyph.y = 0; - - cluster.num_bytes = 1; - cluster.num_glyphs = 1; - - cairo_show_text_glyphs (cr, "a", -1, &glyph, 1, &cluster, 1, 0); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_text_path (cairo_t *cr) -{ - cairo_text_path (cr, "Cairo"); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_glyph_path (cairo_t *cr) -{ - cairo_glyph_t glyph; - - glyph.index = 65; - glyph.x = 0; - glyph.y = 0; - - cairo_glyph_path (cr, &glyph, 1); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_text_extents (cairo_t *cr) -{ - cairo_text_extents_t extents; - - cairo_text_extents (cr, "Cairo", &extents); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_glyph_extents (cairo_t *cr) -{ - cairo_glyph_t glyph; - cairo_text_extents_t extents; - - glyph.index = 65; - glyph.x = 0; - glyph.y = 0; - - cairo_glyph_extents (cr, &glyph, 1, &extents); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_font_extents (cairo_t *cr) -{ - cairo_font_extents_t extents; - - cairo_font_extents (cr, &extents); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_get_operator (cairo_t *cr) -{ - cairo_get_operator (cr); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_get_source (cairo_t *cr) -{ - cairo_get_source (cr); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_get_tolerance (cairo_t *cr) -{ - cairo_get_tolerance (cr); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_get_antialias (cairo_t *cr) -{ - cairo_get_antialias (cr); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_has_current_point (cairo_t *cr) -{ - cairo_has_current_point (cr); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_get_current_point (cairo_t *cr) -{ - double x, y; - - cairo_get_current_point (cr, &x, &y); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_get_fill_rule (cairo_t *cr) -{ - cairo_get_fill_rule (cr); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_get_line_width (cairo_t *cr) -{ - cairo_get_line_width (cr); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_get_line_cap (cairo_t *cr) -{ - cairo_get_line_cap (cr); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_get_line_join (cairo_t *cr) -{ - cairo_get_line_join (cr); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_get_miter_limit (cairo_t *cr) -{ - cairo_get_miter_limit (cr); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_get_dash_count (cairo_t *cr) -{ - cairo_get_dash_count (cr); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_get_dash (cairo_t *cr) -{ - double dashes[42]; - double offset; - - cairo_get_dash (cr, &dashes[0], &offset); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_get_matrix (cairo_t *cr) -{ - cairo_matrix_t matrix; - - cairo_get_matrix (cr, &matrix); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_get_target (cairo_t *cr) -{ - cairo_get_target (cr); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_get_group_target (cairo_t *cr) -{ - cairo_get_group_target (cr); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_copy_path (cairo_t *cr) -{ - cairo_path_destroy (cairo_copy_path (cr)); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_copy_path_flat (cairo_t *cr) -{ - cairo_path_destroy (cairo_copy_path_flat (cr)); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_append_path (cairo_t *cr) -{ - cairo_path_data_t data[3]; - cairo_path_t path; - - path.status = CAIRO_STATUS_SUCCESS; - path.data = &data[0]; - path.num_data = ARRAY_LENGTH(data); - - data[0].header.type = CAIRO_PATH_MOVE_TO; - data[0].header.length = 2; - data[1].point.x = 1; - data[1].point.y = 2; - data[2].header.type = CAIRO_PATH_CLOSE_PATH; - data[2].header.length = 1; - - cairo_append_path (cr, &path); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_surface_create_similar (cairo_surface_t *surface) -{ - cairo_surface_t *similar; - - similar = cairo_surface_create_similar (surface, CAIRO_CONTENT_ALPHA, 100, 100); - - cairo_surface_destroy (similar); - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_surface_create_for_rectangle (cairo_surface_t *surface) -{ - cairo_surface_t *similar; - - similar = cairo_surface_create_for_rectangle (surface, 1, 1, 8, 8); - - cairo_surface_destroy (similar); - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_surface_reference (cairo_surface_t *surface) -{ - cairo_surface_destroy (cairo_surface_reference (surface)); - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_surface_finish (cairo_surface_t *surface) -{ - cairo_surface_finish (surface); - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_surface_get_device (cairo_surface_t *surface) -{ - /* cairo_device_t *device = */cairo_surface_get_device (surface); - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_surface_get_reference_count (cairo_surface_t *surface) -{ - unsigned int refcount = cairo_surface_get_reference_count (surface); - if (refcount > 0) - return CAIRO_TEST_SUCCESS; - /* inert error surfaces have a refcount of 0 */ - return cairo_surface_status (surface) ? CAIRO_TEST_SUCCESS : CAIRO_TEST_ERROR; -} - -static cairo_test_status_t -test_cairo_surface_status (cairo_surface_t *surface) -{ - cairo_status_t status = cairo_surface_status (surface); - return status < CAIRO_STATUS_LAST_STATUS ? CAIRO_TEST_SUCCESS : CAIRO_TEST_ERROR; -} - -static cairo_test_status_t -test_cairo_surface_get_type (cairo_surface_t *surface) -{ - /* cairo_surface_type_t type = */cairo_surface_get_type (surface); - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_surface_get_content (cairo_surface_t *surface) -{ - cairo_content_t content = cairo_surface_get_content (surface); - - switch (content) { - case CAIRO_CONTENT_COLOR: - case CAIRO_CONTENT_ALPHA: - case CAIRO_CONTENT_COLOR_ALPHA: - return CAIRO_TEST_SUCCESS; - default: - return CAIRO_TEST_ERROR; - } -} - -static cairo_test_status_t -test_cairo_surface_set_user_data (cairo_surface_t *surface) -{ - static cairo_user_data_key_t key; - cairo_status_t status; - - status = cairo_surface_set_user_data (surface, &key, &key, NULL); - if (status == CAIRO_STATUS_NO_MEMORY) - return CAIRO_TEST_NO_MEMORY; - else if (status) - return CAIRO_TEST_SUCCESS; - - if (cairo_surface_get_user_data (surface, &key) != &key) - return CAIRO_TEST_ERROR; - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_surface_set_mime_data (cairo_surface_t *surface) -{ - const char *mimetype = "text/x-uri"; - const char *data = "http://www.cairographics.org"; - cairo_status_t status; - - status = cairo_surface_set_mime_data (surface, - mimetype, - (const unsigned char *) data, - strlen (data), - NULL, NULL); - return status ? CAIRO_TEST_SUCCESS : CAIRO_TEST_ERROR; -} - -static cairo_test_status_t -test_cairo_surface_get_mime_data (cairo_surface_t *surface) -{ - const char *mimetype = "text/x-uri"; - const unsigned char *data; - unsigned long length; - - cairo_surface_get_mime_data (surface, mimetype, &data, &length); - return data == NULL && length == 0 ? CAIRO_TEST_SUCCESS : CAIRO_TEST_ERROR; -} - -static cairo_test_status_t -test_cairo_surface_get_font_options (cairo_surface_t *surface) -{ - cairo_font_options_t *options; - cairo_status_t status; - - options = cairo_font_options_create (); - if (likely (!cairo_font_options_status (options))) - cairo_surface_get_font_options (surface, options); - status = cairo_font_options_status (options); - cairo_font_options_destroy (options); - return status ? CAIRO_TEST_ERROR : CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_surface_flush (cairo_surface_t *surface) -{ - cairo_surface_flush (surface); - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_surface_mark_dirty (cairo_surface_t *surface) -{ - cairo_surface_mark_dirty (surface); - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_surface_mark_dirty_rectangle (cairo_surface_t *surface) -{ - cairo_surface_mark_dirty_rectangle (surface, 1, 1, 8, 8); - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_surface_set_device_offset (cairo_surface_t *surface) -{ - cairo_surface_set_device_offset (surface, 5, 5); - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_surface_get_device_offset (cairo_surface_t *surface) -{ - double x, y; - - cairo_surface_get_device_offset (surface, &x, &y); - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_surface_set_fallback_resolution (cairo_surface_t *surface) -{ - cairo_surface_set_fallback_resolution (surface, 42, 42); - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_surface_get_fallback_resolution (cairo_surface_t *surface) -{ - double x, y; - - cairo_surface_get_fallback_resolution (surface, &x, &y); - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_surface_copy_page (cairo_surface_t *surface) -{ - cairo_surface_copy_page (surface); - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_surface_show_page (cairo_surface_t *surface) -{ - cairo_surface_show_page (surface); - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_surface_has_show_text_glyphs (cairo_surface_t *surface) -{ - cairo_surface_has_show_text_glyphs (surface); - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_image_surface_get_data (cairo_surface_t *surface) -{ - unsigned char *data = cairo_image_surface_get_data (surface); - return data == NULL || surface_has_type (surface, CAIRO_SURFACE_TYPE_IMAGE) ? CAIRO_TEST_SUCCESS : CAIRO_TEST_ERROR; -} - -static cairo_test_status_t -test_cairo_image_surface_get_format (cairo_surface_t *surface) -{ - cairo_format_t format = cairo_image_surface_get_format (surface); - return format == CAIRO_FORMAT_INVALID || surface_has_type (surface, CAIRO_SURFACE_TYPE_IMAGE) ? CAIRO_TEST_SUCCESS : CAIRO_TEST_ERROR; -} - -static cairo_test_status_t -test_cairo_image_surface_get_width (cairo_surface_t *surface) -{ - unsigned int width = cairo_image_surface_get_width (surface); - return width == 0 || surface_has_type (surface, CAIRO_SURFACE_TYPE_IMAGE) ? CAIRO_TEST_SUCCESS : CAIRO_TEST_ERROR; -} - -static cairo_test_status_t -test_cairo_image_surface_get_height (cairo_surface_t *surface) -{ - unsigned int height = cairo_image_surface_get_height (surface); - return height == 0 || surface_has_type (surface, CAIRO_SURFACE_TYPE_IMAGE) ? CAIRO_TEST_SUCCESS : CAIRO_TEST_ERROR; -} - -static cairo_test_status_t -test_cairo_image_surface_get_stride (cairo_surface_t *surface) -{ - unsigned int stride = cairo_image_surface_get_stride (surface); - return stride == 0 || surface_has_type (surface, CAIRO_SURFACE_TYPE_IMAGE) ? CAIRO_TEST_SUCCESS : CAIRO_TEST_ERROR; -} - -#if CAIRO_HAS_PNG_FUNCTIONS - -static cairo_test_status_t -test_cairo_surface_write_to_png (cairo_surface_t *surface) -{ - cairo_status_t status; - - status = cairo_surface_write_to_png (surface, "/this/file/will/definitely/not/exist.png"); - - return status ? CAIRO_TEST_SUCCESS : CAIRO_TEST_ERROR; -} - -static cairo_status_t -write_func_that_always_fails (void *closure, const unsigned char *data, unsigned int length) -{ - return CAIRO_STATUS_WRITE_ERROR; -} - -static cairo_test_status_t -test_cairo_surface_write_to_png_stream (cairo_surface_t *surface) -{ - cairo_status_t status; - - status = cairo_surface_write_to_png_stream (surface, - write_func_that_always_fails, - NULL); - - return status && status != CAIRO_STATUS_WRITE_ERROR ? CAIRO_TEST_SUCCESS : CAIRO_TEST_ERROR; -} - -#endif /* CAIRO_HAS_PNG_FUNCTIONS */ - -static cairo_test_status_t -test_cairo_recording_surface_ink_extents (cairo_surface_t *surface) -{ - double x, y, w, h; - - cairo_recording_surface_ink_extents (surface, &x, &y, &w, &h); - return x == 0 && y == 0 && w == 0 && h == 0 ? CAIRO_TEST_SUCCESS : CAIRO_TEST_ERROR; -} - -#if CAIRO_HAS_TEE_SURFACE - -static cairo_test_status_t -test_cairo_tee_surface_add (cairo_surface_t *surface) -{ - cairo_surface_t *image = cairo_image_surface_create (CAIRO_FORMAT_A8, 10, 10); - - cairo_tee_surface_add (surface, image); - cairo_surface_destroy (image); - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_tee_surface_remove (cairo_surface_t *surface) -{ - cairo_surface_t *image = cairo_image_surface_create (CAIRO_FORMAT_A8, 10, 10); - - cairo_tee_surface_remove (surface, image); - cairo_surface_destroy (image); - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_tee_surface_index (cairo_surface_t *surface) -{ - cairo_surface_t *master; - cairo_status_t status; - - master = cairo_tee_surface_index (surface, 0); - status = cairo_surface_status (master); - cairo_surface_destroy (master); - return status ? CAIRO_TEST_SUCCESS : CAIRO_TEST_ERROR; -} - -#endif /* CAIRO_HAS_TEE_SURFACE */ - -#if CAIRO_HAS_GL_SURFACE - -static cairo_test_status_t -test_cairo_gl_surface_set_size (cairo_surface_t *surface) -{ - cairo_gl_surface_set_size (surface, 5, 5); - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_gl_surface_get_width (cairo_surface_t *surface) -{ - unsigned int width = cairo_gl_surface_get_width (surface); - return width == 0 || surface_has_type (surface, CAIRO_SURFACE_TYPE_GL) ? CAIRO_TEST_SUCCESS : CAIRO_TEST_ERROR; -} - -static cairo_test_status_t -test_cairo_gl_surface_get_height (cairo_surface_t *surface) -{ - unsigned int height = cairo_gl_surface_get_height (surface); - return height == 0 || surface_has_type (surface, CAIRO_SURFACE_TYPE_GL) ? CAIRO_TEST_SUCCESS : CAIRO_TEST_ERROR; -} - -static cairo_test_status_t -test_cairo_gl_surface_swapbuffers (cairo_surface_t *surface) -{ - cairo_gl_surface_swapbuffers (surface); - return CAIRO_TEST_SUCCESS; -} - -#endif /* CAIRO_HAS_GL_SURFACE */ - -#if CAIRO_HAS_PDF_SURFACE - -static cairo_test_status_t -test_cairo_pdf_surface_restrict_to_version (cairo_surface_t *surface) -{ - cairo_pdf_surface_restrict_to_version (surface, CAIRO_PDF_VERSION_1_4); - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_pdf_surface_set_size (cairo_surface_t *surface) -{ - cairo_pdf_surface_set_size (surface, 5, 5); - return CAIRO_TEST_SUCCESS; -} - -#endif /* CAIRO_HAS_PDF_SURFACE */ - -#if CAIRO_HAS_PS_SURFACE - -static cairo_test_status_t -test_cairo_ps_surface_restrict_to_level (cairo_surface_t *surface) -{ - cairo_ps_surface_restrict_to_level (surface, CAIRO_PS_LEVEL_2); - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_ps_surface_set_eps (cairo_surface_t *surface) -{ - cairo_ps_surface_set_eps (surface, TRUE); - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_ps_surface_get_eps (cairo_surface_t *surface) -{ - cairo_bool_t eps = cairo_ps_surface_get_eps (surface); - return eps ? CAIRO_TEST_ERROR : CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_ps_surface_set_size (cairo_surface_t *surface) -{ - cairo_ps_surface_set_size (surface, 5, 5); - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_ps_surface_dsc_comment (cairo_surface_t *surface) -{ - cairo_ps_surface_dsc_comment (surface, "54, 74, 90, 2010"); - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_ps_surface_dsc_begin_setup (cairo_surface_t *surface) -{ - cairo_ps_surface_dsc_begin_setup (surface); - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_ps_surface_dsc_begin_page_setup (cairo_surface_t *surface) -{ - cairo_ps_surface_dsc_begin_page_setup (surface); - return CAIRO_TEST_SUCCESS; -} - -#endif /* CAIRO_HAS_PS_SURFACE */ - -#if CAIRO_HAS_QUARTZ_SURFACE - -static cairo_test_status_t -test_cairo_quartz_surface_get_cg_context (cairo_surface_t *surface) -{ - CGContextRef context = cairo_quartz_surface_get_cg_context (surface); - return context == NULL || surface_has_type (surface, CAIRO_SURFACE_TYPE_QUARTZ) ? CAIRO_TEST_SUCCESS : CAIRO_TEST_ERROR; -} - -#endif /* CAIRO_HAS_QUARTZ_SURFACE */ - -#if CAIRO_HAS_SVG_SURFACE - -static cairo_test_status_t -test_cairo_svg_surface_restrict_to_version (cairo_surface_t *surface) -{ - cairo_svg_surface_restrict_to_version (surface, CAIRO_SVG_VERSION_1_1); - return CAIRO_TEST_SUCCESS; -} - -#endif /* CAIRO_HAS_SVG_SURFACE */ - -#if CAIRO_HAS_XCB_SURFACE - -static cairo_test_status_t -test_cairo_xcb_surface_set_size (cairo_surface_t *surface) -{ - cairo_xcb_surface_set_size (surface, 5, 5); - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_xcb_surface_set_drawable (cairo_surface_t *surface) -{ - cairo_xcb_surface_set_drawable (surface, 0, 5, 5); - return CAIRO_TEST_SUCCESS; -} - -#endif - -#if CAIRO_HAS_XLIB_SURFACE - -static cairo_test_status_t -test_cairo_xlib_surface_set_size (cairo_surface_t *surface) -{ - cairo_xlib_surface_set_size (surface, 5, 5); - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_xlib_surface_set_drawable (cairo_surface_t *surface) -{ - cairo_xlib_surface_set_drawable (surface, 0, 5, 5); - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_cairo_xlib_surface_get_display (cairo_surface_t *surface) -{ - Display *display = cairo_xlib_surface_get_display (surface); - return display == NULL || surface_has_type (surface, CAIRO_SURFACE_TYPE_XLIB) ? CAIRO_TEST_SUCCESS : CAIRO_TEST_ERROR; -} - -static cairo_test_status_t -test_cairo_xlib_surface_get_screen (cairo_surface_t *surface) -{ - Screen *screen = cairo_xlib_surface_get_screen (surface); - return screen == NULL || surface_has_type (surface, CAIRO_SURFACE_TYPE_XLIB) ? CAIRO_TEST_SUCCESS : CAIRO_TEST_ERROR; -} - -static cairo_test_status_t -test_cairo_xlib_surface_get_visual (cairo_surface_t *surface) -{ - Visual *visual = cairo_xlib_surface_get_visual (surface); - return visual == NULL || surface_has_type (surface, CAIRO_SURFACE_TYPE_XLIB) ? CAIRO_TEST_SUCCESS : CAIRO_TEST_ERROR; -} - -static cairo_test_status_t -test_cairo_xlib_surface_get_drawable (cairo_surface_t *surface) -{ - Drawable drawable = cairo_xlib_surface_get_drawable (surface); - return drawable == 0 || surface_has_type (surface, CAIRO_SURFACE_TYPE_XLIB) ? CAIRO_TEST_SUCCESS : CAIRO_TEST_ERROR; -} - -static cairo_test_status_t -test_cairo_xlib_surface_get_depth (cairo_surface_t *surface) -{ - int depth = cairo_xlib_surface_get_depth (surface); - return depth == 0 || surface_has_type (surface, CAIRO_SURFACE_TYPE_XLIB) ? CAIRO_TEST_SUCCESS : CAIRO_TEST_ERROR; -} - -static cairo_test_status_t -test_cairo_xlib_surface_get_width (cairo_surface_t *surface) -{ - int width = cairo_xlib_surface_get_width (surface); - return width == 0 || surface_has_type (surface, CAIRO_SURFACE_TYPE_XLIB) ? CAIRO_TEST_SUCCESS : CAIRO_TEST_ERROR; -} - -static cairo_test_status_t -test_cairo_xlib_surface_get_height (cairo_surface_t *surface) -{ - int height = cairo_xlib_surface_get_height (surface); - return height == 0 || surface_has_type (surface, CAIRO_SURFACE_TYPE_XLIB) ? CAIRO_TEST_SUCCESS : CAIRO_TEST_ERROR; -} - -#endif - -#define TEST(name) { #name, test_ ## name } - -struct { - const char *name; - context_test_func_t func; -} context_tests[] = { - TEST (cairo_reference), - TEST (cairo_get_reference_count), - TEST (cairo_set_user_data), - TEST (cairo_save), - TEST (cairo_push_group), - TEST (cairo_push_group_with_content), - TEST (cairo_set_operator), - TEST (cairo_set_source), - TEST (cairo_set_source_rgb), - TEST (cairo_set_source_rgba), - TEST (cairo_set_source_surface), - TEST (cairo_set_tolerance), - TEST (cairo_set_antialias), - TEST (cairo_set_fill_rule), - TEST (cairo_set_line_width), - TEST (cairo_set_line_cap), - TEST (cairo_set_line_join), - TEST (cairo_set_dash), - TEST (cairo_set_miter_limit), - TEST (cairo_translate), - TEST (cairo_scale), - TEST (cairo_rotate), - TEST (cairo_transform), - TEST (cairo_set_matrix), - TEST (cairo_identity_matrix), - TEST (cairo_user_to_device), - TEST (cairo_user_to_device_distance), - TEST (cairo_device_to_user), - TEST (cairo_device_to_user_distance), - TEST (cairo_new_path), - TEST (cairo_move_to), - TEST (cairo_new_sub_path), - TEST (cairo_line_to), - TEST (cairo_curve_to), - TEST (cairo_arc), - TEST (cairo_arc_negative), - TEST (cairo_rel_move_to), - TEST (cairo_rel_line_to), - TEST (cairo_rel_curve_to), - TEST (cairo_rectangle), - TEST (cairo_close_path), - TEST (cairo_path_extents), - TEST (cairo_paint), - TEST (cairo_paint_with_alpha), - TEST (cairo_mask), - TEST (cairo_mask_surface), - TEST (cairo_stroke), - TEST (cairo_stroke_preserve), - TEST (cairo_fill), - TEST (cairo_fill_preserve), - TEST (cairo_copy_page), - TEST (cairo_show_page), - TEST (cairo_in_stroke), - TEST (cairo_in_fill), - TEST (cairo_in_clip), - TEST (cairo_stroke_extents), - TEST (cairo_fill_extents), - TEST (cairo_reset_clip), - TEST (cairo_clip), - TEST (cairo_clip_preserve), - TEST (cairo_clip_extents), - TEST (cairo_copy_clip_rectangle_list), - TEST (cairo_select_font_face), - TEST (cairo_set_font_size), - TEST (cairo_set_font_matrix), - TEST (cairo_get_font_matrix), - TEST (cairo_set_font_options), - TEST (cairo_get_font_options), - TEST (cairo_set_font_face), - TEST (cairo_set_scaled_font), - TEST (cairo_show_text), - TEST (cairo_show_glyphs), - TEST (cairo_show_text_glyphs), - TEST (cairo_text_path), - TEST (cairo_glyph_path), - TEST (cairo_text_extents), - TEST (cairo_glyph_extents), - TEST (cairo_font_extents), - TEST (cairo_get_operator), - TEST (cairo_get_source), - TEST (cairo_get_tolerance), - TEST (cairo_get_antialias), - TEST (cairo_has_current_point), - TEST (cairo_get_current_point), - TEST (cairo_get_fill_rule), - TEST (cairo_get_line_width), - TEST (cairo_get_line_cap), - TEST (cairo_get_line_join), - TEST (cairo_get_miter_limit), - TEST (cairo_get_dash_count), - TEST (cairo_get_dash), - TEST (cairo_get_matrix), - TEST (cairo_get_target), - TEST (cairo_get_group_target), - TEST (cairo_copy_path), - TEST (cairo_copy_path_flat), - TEST (cairo_append_path), -}; - -#undef TEST - -#define TEST(name, surface_type, sets_status) { #name, test_ ## name, surface_type, sets_status } - -struct { - const char *name; - surface_test_func_t func; - int surface_type; /* cairo_surface_type_t or -1 */ - cairo_bool_t modifies_surface; -} surface_tests[] = { - TEST (cairo_surface_create_similar, -1, FALSE), - TEST (cairo_surface_create_for_rectangle, -1, FALSE), - TEST (cairo_surface_reference, -1, FALSE), - TEST (cairo_surface_finish, -1, TRUE), - TEST (cairo_surface_get_device, -1, FALSE), - TEST (cairo_surface_get_reference_count, -1, FALSE), - TEST (cairo_surface_status, -1, FALSE), - TEST (cairo_surface_get_type, -1, FALSE), - TEST (cairo_surface_get_content, -1, FALSE), - TEST (cairo_surface_set_user_data, -1, FALSE), - TEST (cairo_surface_set_mime_data, -1, TRUE), - TEST (cairo_surface_get_mime_data, -1, FALSE), - TEST (cairo_surface_get_font_options, -1, FALSE), - TEST (cairo_surface_flush, -1, TRUE), - TEST (cairo_surface_mark_dirty, -1, TRUE), - TEST (cairo_surface_mark_dirty_rectangle, -1, TRUE), - TEST (cairo_surface_set_device_offset, -1, TRUE), - TEST (cairo_surface_get_device_offset, -1, FALSE), - TEST (cairo_surface_set_fallback_resolution, -1, TRUE), - TEST (cairo_surface_get_fallback_resolution, -1, FALSE), - TEST (cairo_surface_copy_page, -1, TRUE), - TEST (cairo_surface_show_page, -1, TRUE), - TEST (cairo_surface_has_show_text_glyphs, -1, FALSE), - TEST (cairo_image_surface_get_data, CAIRO_SURFACE_TYPE_IMAGE, FALSE), - TEST (cairo_image_surface_get_format, CAIRO_SURFACE_TYPE_IMAGE, FALSE), - TEST (cairo_image_surface_get_width, CAIRO_SURFACE_TYPE_IMAGE, FALSE), - TEST (cairo_image_surface_get_height, CAIRO_SURFACE_TYPE_IMAGE, FALSE), - TEST (cairo_image_surface_get_stride, CAIRO_SURFACE_TYPE_IMAGE, FALSE), -#if CAIRO_HAS_PNG_FUNCTIONS - TEST (cairo_surface_write_to_png, -1, FALSE), - TEST (cairo_surface_write_to_png_stream, -1, FALSE), -#endif - TEST (cairo_recording_surface_ink_extents, CAIRO_SURFACE_TYPE_RECORDING, FALSE), -#if CAIRO_HAS_TEE_SURFACE - TEST (cairo_tee_surface_add, CAIRO_SURFACE_TYPE_TEE, TRUE), - TEST (cairo_tee_surface_remove, CAIRO_SURFACE_TYPE_TEE, TRUE), - TEST (cairo_tee_surface_index, CAIRO_SURFACE_TYPE_TEE, FALSE), -#endif -#if CAIRO_HAS_GL_SURFACE - TEST (cairo_gl_surface_set_size, CAIRO_SURFACE_TYPE_GL, TRUE), - TEST (cairo_gl_surface_get_width, CAIRO_SURFACE_TYPE_GL, FALSE), - TEST (cairo_gl_surface_get_height, CAIRO_SURFACE_TYPE_GL, FALSE), - TEST (cairo_gl_surface_swapbuffers, CAIRO_SURFACE_TYPE_GL, TRUE), -#endif -#if CAIRO_HAS_PDF_SURFACE - TEST (cairo_pdf_surface_restrict_to_version, CAIRO_SURFACE_TYPE_PDF, TRUE), - TEST (cairo_pdf_surface_set_size, CAIRO_SURFACE_TYPE_PDF, TRUE), -#endif -#if CAIRO_HAS_PS_SURFACE - TEST (cairo_ps_surface_restrict_to_level, CAIRO_SURFACE_TYPE_PS, TRUE), - TEST (cairo_ps_surface_set_eps, CAIRO_SURFACE_TYPE_PS, TRUE), - TEST (cairo_ps_surface_get_eps, CAIRO_SURFACE_TYPE_PS, FALSE), - TEST (cairo_ps_surface_set_size, CAIRO_SURFACE_TYPE_PS, TRUE), - TEST (cairo_ps_surface_dsc_comment, CAIRO_SURFACE_TYPE_PS, TRUE), - TEST (cairo_ps_surface_dsc_begin_setup, CAIRO_SURFACE_TYPE_PS, TRUE), - TEST (cairo_ps_surface_dsc_begin_page_setup, CAIRO_SURFACE_TYPE_PS, TRUE), -#endif -#if CAIRO_HAS_QUARTZ_SURFACE - TEST (cairo_quartz_surface_get_cg_context, CAIRO_SURFACE_TYPE_QUARTZ, FALSE), -#endif -#if CAIRO_HAS_SVG_SURFACE - TEST (cairo_svg_surface_restrict_to_version, CAIRO_SURFACE_TYPE_SVG, TRUE), -#endif -#if CAIRO_HAS_XCB_SURFACE - TEST (cairo_xcb_surface_set_size, CAIRO_SURFACE_TYPE_XCB, TRUE), - TEST (cairo_xcb_surface_set_drawable, CAIRO_SURFACE_TYPE_XCB, TRUE), -#endif -#if CAIRO_HAS_XLIB_SURFACE - TEST (cairo_xlib_surface_set_size, CAIRO_SURFACE_TYPE_XLIB, TRUE), - TEST (cairo_xlib_surface_set_drawable, CAIRO_SURFACE_TYPE_XLIB, TRUE), - TEST (cairo_xlib_surface_get_display, CAIRO_SURFACE_TYPE_XLIB, FALSE), - TEST (cairo_xlib_surface_get_drawable, CAIRO_SURFACE_TYPE_XLIB, FALSE), - TEST (cairo_xlib_surface_get_screen, CAIRO_SURFACE_TYPE_XLIB, FALSE), - TEST (cairo_xlib_surface_get_visual, CAIRO_SURFACE_TYPE_XLIB, FALSE), - TEST (cairo_xlib_surface_get_depth, CAIRO_SURFACE_TYPE_XLIB, FALSE), - TEST (cairo_xlib_surface_get_width, CAIRO_SURFACE_TYPE_XLIB, FALSE), - TEST (cairo_xlib_surface_get_height, CAIRO_SURFACE_TYPE_XLIB, FALSE), -#endif -}; - -static cairo_test_status_t -preamble (cairo_test_context_t *ctx) -{ - cairo_surface_t *surface; - cairo_t *cr; - cairo_test_status_t test_status; - cairo_status_t status_before, status_after; - unsigned int i; - - /* Test an error surface */ - for (i = 0; i < ARRAY_LENGTH (surface_tests); i++) { - surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, INT_MAX, INT_MAX); - status_before = cairo_surface_status (surface); - assert (status_before); - - test_status = surface_tests[i].func (surface); - - status_after = cairo_surface_status (surface); - cairo_surface_destroy (surface); - - if (test_status != CAIRO_TEST_SUCCESS) { - cairo_test_log (ctx, - "Failed test %s with %d\n", - surface_tests[i].name, (int) test_status); - return test_status; - } - - if (status_before != status_after) { - cairo_test_log (ctx, - "Failed test %s: Modified surface status from %u (%s) to %u (%s)\n", - surface_tests[i].name, - status_before, cairo_status_to_string (status_before), - status_after, cairo_status_to_string (status_after)); - return CAIRO_TEST_ERROR; - } - } - - /* Test an error context */ - for (i = 0; i < ARRAY_LENGTH (context_tests); i++) { - cr = cairo_create (NULL); - status_before = cairo_status (cr); - assert (status_before); - - test_status = context_tests[i].func (cr); - - status_after = cairo_status (cr); - cairo_destroy (cr); - - if (test_status != CAIRO_TEST_SUCCESS) { - cairo_test_log (ctx, - "Failed test %s with %d\n", - context_tests[i].name, (int) test_status); - return test_status; - } - - if (status_before != status_after) { - cairo_test_log (ctx, - "Failed test %s: Modified context status from %u (%s) to %u (%s)\n", - context_tests[i].name, - status_before, cairo_status_to_string (status_before), - status_after, cairo_status_to_string (status_after)); - return CAIRO_TEST_ERROR; - } - } - - /* Test a context for an error surface */ - for (i = 0; i < ARRAY_LENGTH (context_tests); i++) { - surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, INT_MAX, INT_MAX); - cr = cairo_create (surface); - cairo_surface_destroy (surface); - status_before = cairo_status (cr); - assert (status_before); - - test_status = context_tests[i].func (cr); - - status_after = cairo_status (cr); - cairo_destroy (cr); - - if (test_status != CAIRO_TEST_SUCCESS) { - cairo_test_log (ctx, - "Failed test %s with %d\n", - context_tests[i].name, (int) test_status); - return test_status; - } - - if (status_before != status_after) { - cairo_test_log (ctx, - "Failed test %s: Modified context status from %u (%s) to %u (%s)\n", - context_tests[i].name, - status_before, cairo_status_to_string (status_before), - status_after, cairo_status_to_string (status_after)); - return CAIRO_TEST_ERROR; - } - } - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -test_context (const cairo_test_context_t *ctx, cairo_t *cr, const char *name, unsigned int i) -{ - cairo_test_status_t test_status; - cairo_status_t status_before, status_after; - - /* Make sure that there is a current point */ - cairo_move_to (cr, 0, 0); - - status_before = cairo_status (cr); - test_status = context_tests[i].func (cr); - status_after = cairo_status (cr); - - if (test_status != CAIRO_TEST_SUCCESS) { - cairo_test_log (ctx, - "Failed test %s on %s with %d\n", - context_tests[i].name, name, (int) test_status); - return test_status; - } - - if (status_after != CAIRO_STATUS_SURFACE_FINISHED && status_before != status_after) { - cairo_test_log (ctx, - "Failed test %s on %s: Modified context status from %u (%s) to %u (%s)\n", - context_tests[i].name, name, - status_before, cairo_status_to_string (status_before), - status_after, cairo_status_to_string (status_after)); - return CAIRO_TEST_ERROR; - } - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - const cairo_test_context_t *ctx = cairo_test_get_context (cr); - cairo_surface_t *similar, *target; - cairo_test_status_t test_status; - cairo_status_t status; - cairo_t *cr2; - unsigned int i; - - target = cairo_get_target (cr); - - /* Test a finished similar surface */ - for (i = 0; i < ARRAY_LENGTH (surface_tests); i++) { - similar = cairo_surface_create_similar (target, - cairo_surface_get_content (target), - 10, 10); - cairo_surface_finish (similar); - test_status = surface_tests[i].func (similar); - status = cairo_surface_status (similar); - cairo_surface_destroy (similar); - - if (test_status != CAIRO_TEST_SUCCESS) { - cairo_test_log (ctx, - "Failed test %s with %d\n", - surface_tests[i].name, (int) test_status); - return test_status; - } - - if (surface_tests[i].modifies_surface && - strcmp (surface_tests[i].name, "cairo_surface_finish") && - strcmp (surface_tests[i].name, "cairo_surface_flush") && - status != CAIRO_STATUS_SURFACE_FINISHED) { - cairo_test_log (ctx, - "Failed test %s: Finished surface not set into error state\n", - surface_tests[i].name); - return CAIRO_TEST_ERROR; - } - } - - /* Test a context for a finished similar surface */ - for (i = 0; i < ARRAY_LENGTH (context_tests); i++) { - similar = cairo_surface_create_similar (target, - cairo_surface_get_content (target), - 10, 10); - cairo_surface_finish (similar); - cr2 = cairo_create (similar); - test_status = test_context (ctx, cr2, "finished surface", i); - cairo_surface_destroy (similar); - cairo_destroy (cr2); - - if (test_status != CAIRO_TEST_SUCCESS) - return test_status; - } - - /* Test a context for a similar surface finished later */ - for (i = 0; i < ARRAY_LENGTH (context_tests); i++) { - similar = cairo_surface_create_similar (target, - cairo_surface_get_content (target), - 10, 10); - cr2 = cairo_create (similar); - cairo_surface_finish (similar); - test_status = test_context (ctx, cr2, "finished surface after create", i); - cairo_surface_destroy (similar); - cairo_destroy (cr2); - - if (test_status != CAIRO_TEST_SUCCESS) - return test_status; - } - - /* Test a context for a similar surface finished later with a path */ - for (i = 0; i < ARRAY_LENGTH (context_tests); i++) { - similar = cairo_surface_create_similar (target, - cairo_surface_get_content (target), - 10, 10); - cr2 = cairo_create (similar); - cairo_rectangle (cr2, 2, 2, 4, 4); - cairo_surface_finish (similar); - test_status = test_context (ctx, cr2, "finished surface with path", i); - cairo_surface_destroy (similar); - cairo_destroy (cr2); - - if (test_status != CAIRO_TEST_SUCCESS) - return test_status; - } - - /* Test a normal surface for functions that have the wrong type */ - for (i = 0; i < ARRAY_LENGTH (surface_tests); i++) { - cairo_status_t desired_status; - - if (surface_tests[i].surface_type == -1) - continue; - similar = cairo_surface_create_similar (target, - cairo_surface_get_content (target), - 10, 10); - if (cairo_surface_get_type (similar) == (cairo_surface_type_t) surface_tests[i].surface_type) { - cairo_surface_destroy (similar); - continue; - } - - test_status = surface_tests[i].func (similar); - status = cairo_surface_status (similar); - cairo_surface_destroy (similar); - - if (test_status != CAIRO_TEST_SUCCESS) { - cairo_test_log (ctx, - "Failed test %s with %d\n", - surface_tests[i].name, (int) test_status); - return test_status; - } - - desired_status = surface_tests[i].modifies_surface ? CAIRO_STATUS_SURFACE_TYPE_MISMATCH : CAIRO_STATUS_SUCCESS; - if (status != desired_status) { - cairo_test_log (ctx, - "Failed test %s: Surface status should be %u (%s), but is %u (%s)\n", - surface_tests[i].name, - desired_status, cairo_status_to_string (desired_status), - status, cairo_status_to_string (status)); - return CAIRO_TEST_ERROR; - } - } - - /* 565-compatible gray background */ - cairo_set_source_rgb (cr, 0.51613, 0.55555, 0.51613); - cairo_paint (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (api_special_cases, - "Check surface functions properly handle wrong surface arguments", - "api", /* keywords */ - NULL, /* requirements */ - 10, 10, - preamble, draw) diff --git a/test/arc-direction.c b/test/arc-direction.c deleted file mode 100644 index 92c1a8d..0000000 --- a/test/arc-direction.c +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Copyright © 2012 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -#define SIZE (2 * 20) -#define PAD (2) - -static cairo_test_status_t -draw_arcs (cairo_t *cr) -{ - double start = M_PI/12, stop = 2*start; - - cairo_move_to (cr, SIZE/2, SIZE/2); - cairo_arc (cr, SIZE/2, SIZE/2, SIZE/2, start, stop); - cairo_fill (cr); - - cairo_translate (cr, SIZE+PAD, 0); - cairo_move_to (cr, SIZE/2, SIZE/2); - cairo_arc (cr, SIZE/2, SIZE/2, SIZE/2, 2*M_PI-stop, 2*M_PI-start); - cairo_fill (cr); - - cairo_translate (cr, 0, SIZE+PAD); - cairo_move_to (cr, SIZE/2, SIZE/2); - cairo_arc_negative (cr, SIZE/2, SIZE/2, SIZE/2, 2*M_PI-stop, 2*M_PI-start); - cairo_fill (cr); - - cairo_translate (cr, -SIZE-PAD, 0); - cairo_move_to (cr, SIZE/2, SIZE/2); - cairo_arc_negative (cr, SIZE/2, SIZE/2, SIZE/2, start, stop); - cairo_fill (cr); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_save (cr); - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); /* white */ - cairo_paint (cr); - cairo_restore (cr); - - cairo_save (cr); - cairo_translate (cr, PAD, PAD); - draw_arcs(cr); - cairo_restore (cr); - - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_translate (cr, 2*SIZE+3*PAD, 0); - cairo_save (cr); - cairo_translate (cr, 2*SIZE+2*PAD, PAD); - cairo_scale (cr, -1, 1); - draw_arcs(cr); - cairo_restore (cr); - - cairo_set_source_rgb (cr, 1, 0, 1); - cairo_translate (cr, 0, 2*SIZE+3*PAD); - cairo_save (cr); - cairo_translate (cr, 2*SIZE+2*PAD, 2*SIZE+2*PAD); - cairo_scale (cr, -1, -1); - draw_arcs(cr); - cairo_restore (cr); - - cairo_set_source_rgb (cr, 0, 0, 1); - cairo_translate (cr, -(2*SIZE+3*PAD), 0); - cairo_save (cr); - cairo_translate (cr, PAD, 2*SIZE+2*PAD); - cairo_scale (cr, 1, -1); - draw_arcs(cr); - cairo_restore (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (arc_direction, - "Test drawing positive/negative arcs", - "arc, fill", /* keywords */ - NULL, /* requirements */ - 2*(3*PAD + 2*SIZE), 2*(3*PAD + 2*SIZE), - NULL, draw) - diff --git a/test/arc-infinite-loop.c b/test/arc-infinite-loop.c deleted file mode 100644 index 8b469ea..0000000 --- a/test/arc-infinite-loop.c +++ /dev/null @@ -1,61 +0,0 @@ -/* -*- Mode: c; c-basic-offset: 4; indent-tabs-mode: t; tab-width: 8; -*- */ -/* - * Copyright 2010 Andrea Canciani - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Andrea Canciani - */ - -#include "cairo-test.h" -#include - -#define SIZE 8 - -/* - cairo_arc can hang in an infinite loop if given huge (so big that - adding/subtracting 4*M_PI to them doesn't change the value because - of floating point rounding). - - The purpose of this test is to check that cairo doesn't hang or crash. -*/ - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - /* Check if the code that guarantees start <= end hangs */ - cairo_arc (cr, 0, 0, 1, 1024 / DBL_EPSILON * M_PI, 0); - - /* Check if the code that handles huge angles hangs */ - cairo_arc (cr, 0, 0, 1, 0, 1024 / DBL_EPSILON * M_PI); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (arc_infinite_loop, - "Test cairo_arc with huge angles", - "arc", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, draw) diff --git a/test/arc-looping-dash.c b/test/arc-looping-dash.c deleted file mode 100644 index ff5556a..0000000 --- a/test/arc-looping-dash.c +++ /dev/null @@ -1,79 +0,0 @@ -/* -*- Mode: c; c-basic-offset: 4; indent-tabs-mode: t; tab-width: 8; -*- */ -/* - * Copyright 2010 Andrea Canciani - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Andrea Canciani - */ - -#include "cairo-test.h" - -#define SIZE 32 - -/* - When cairo_arc is used to draw an arc of more than 2pi radians - (i.e. a circle "looping over itself"), various different behaviors - are possible: - - - draw exactly a circle (an arc of 2pi radians) - - - draw an arc such that the current point is the expected one and - that does at least a complete circle (an arc of [2pi, 4pi) - radians) - - - draw an arc with the original number of loops - - This test produces different results for each of these three cases. -*/ - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - double dashes[] = { 0.3, 7 }; - - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - cairo_save (cr); - - cairo_translate (cr, SIZE * .5, SIZE * .5); - cairo_scale (cr, SIZE * 3 / 8., SIZE * 3 / 8.); - - cairo_arc (cr, 0, 0, 1, 0, 11 * M_PI); - - cairo_set_line_width (cr, 8. / SIZE); - - cairo_set_source_rgb (cr, 0, 0, 0); - cairo_set_dash (cr, dashes, 2, 0); - cairo_stroke (cr); - - cairo_restore (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (arc_looping_dash, - "Test cairo_arc for angles describing more than a complete circle", - "arc", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, draw) diff --git a/test/big-empty-box.c b/test/big-empty-box.c deleted file mode 100644 index 4ea91a1..0000000 --- a/test/big-empty-box.c +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright © 2011 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Chris Wilson - */ - -/* - * The mystery of the disappearing box, similar to big-little-box. - * - * The issue is that we failed to tighten the initial approximated bounds - * after tessellating the path. - */ - -#include "cairo-test.h" - -#define SIZE 60 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_set_source_rgb (cr, 1, 0, 1); - cairo_paint (cr); - - /* Set an unbounded operator so that we can see how accurate the bounded - * extents were. - */ - cairo_set_operator (cr, CAIRO_OPERATOR_IN); - cairo_set_source_rgb (cr, 1, 1, 1); - - /* Wind several boxes together that reduce to nothing */ - cairo_set_fill_rule (cr, CAIRO_FILL_RULE_EVEN_ODD); - cairo_rectangle (cr, 0, 0, SIZE, SIZE); - cairo_rectangle (cr, 0, 0, SIZE, SIZE); - cairo_fill (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (big_empty_box, - "Tests that we tighten the bounds after tessellation.", - "fill", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, draw) diff --git a/test/big-empty-triangle.c b/test/big-empty-triangle.c deleted file mode 100644 index 4c02c87..0000000 --- a/test/big-empty-triangle.c +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright © 2011 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Chris Wilson - */ - -/* - * A variation on - * - * https://bugzilla.mozilla.org/show_bug.cgi?id=668921 - * - * The issue is that we failed to tighten the initial approximated bounds - * after tessellating the path. - */ - -#include "cairo-test.h" - -#define SIZE 60 - -static void -triangle (cairo_t *cr, double x, double y, double h) -{ - cairo_move_to (cr, x, y); - cairo_line_to (cr, x+h/2, y+h); - cairo_line_to (cr, x+h, y); - cairo_close_path (cr); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_set_source_rgb (cr, 1, 0, 1); - cairo_paint (cr); - - /* Set an unbounded operator so that we can see how accurate the bounded - * extents were. - */ - cairo_set_operator (cr, CAIRO_OPERATOR_IN); - cairo_set_source_rgb (cr, 1, 1, 1); - - /* Wind several triangles together that reduce to nothing */ - cairo_set_fill_rule (cr, CAIRO_FILL_RULE_EVEN_ODD); - triangle (cr, 0, 0, SIZE); - triangle (cr, 0, 0, SIZE); - cairo_fill (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (big_empty_triangle, - "Tests that we tighten the bounds after tessellation.", - "fill", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, draw) diff --git a/test/big-line.c b/test/big-line.c deleted file mode 100644 index 6260fba..0000000 --- a/test/big-line.c +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright © 2008 Novell, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Novell, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Novell, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * NOVELL, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL NOVELL, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Larry Ewing - */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - cairo_set_source_rgb (cr, 1, 1, 0); - cairo_move_to (cr, 50, 50); - cairo_rel_line_to (cr, 50000, 50000); - cairo_stroke (cr); - - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_move_to (cr, 50, 50); - cairo_rel_line_to (cr, -50000, 50000); - cairo_stroke (cr); - - cairo_set_source_rgb (cr, 0, 1, 0); - cairo_move_to (cr, 50, 50); - cairo_rel_line_to (cr, 50000, -50000); - cairo_stroke (cr); - - cairo_set_source_rgb (cr, 0, 0, 1); - cairo_move_to (cr, 50, 50); - cairo_rel_line_to (cr, -50000, -50000); - cairo_stroke (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (big_line, - "Test drawing of simple lines with positive and negative coordinates > 2^16", - "stroke, line", /* keywords */ - NULL, /* requirements */ - 100, 100, - NULL, draw) diff --git a/test/big-little-box.c b/test/big-little-box.c deleted file mode 100644 index 1787ee5..0000000 --- a/test/big-little-box.c +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright © 2011 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Chris Wilson - */ - -/* - * This attempts to exercise the bug found in - * - * https://bugzilla.mozilla.org/show_bug.cgi?id=668921 - * - * and also identified by Taekyun Kim. - * - * The issue is that we failed to tighten the initial approximated bounds - * after tessellating the path. - */ - -#include "cairo-test.h" - -#define SIZE 60 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_set_source_rgb (cr, 1, 0, 1); - cairo_paint (cr); - - /* Set an unbounded operator so that we can see how accurate the bounded - * extents were. - */ - cairo_set_operator (cr, CAIRO_OPERATOR_IN); - cairo_set_source_rgb (cr, 1, 1, 1); - - /* Wind several boxes together that reduce to just one */ - cairo_set_fill_rule (cr, CAIRO_FILL_RULE_EVEN_ODD); - cairo_rectangle (cr, 0, 0, SIZE, SIZE); - cairo_rectangle (cr, 0, 0, SIZE, SIZE); - cairo_rectangle (cr, SIZE/2 - 20, SIZE/2 - 20, 40, 40); - cairo_fill (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (big_little_box, - "Tests that we tighten the bounds after tessellation.", - "fill", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, draw) diff --git a/test/big-little-triangle.c b/test/big-little-triangle.c deleted file mode 100644 index 27eb232..0000000 --- a/test/big-little-triangle.c +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright © 2011 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Chris Wilson - */ - -/* - * A variation on - * - * https://bugzilla.mozilla.org/show_bug.cgi?id=668921 - * - * The issue is that we failed to tighten the initial approximated bounds - * after tessellating the path. - */ - -#include "cairo-test.h" - -#define SIZE 60 - -static void -triangle (cairo_t *cr, double x, double y, double h) -{ - cairo_move_to (cr, x, y); - cairo_line_to (cr, x+h/2, y+h); - cairo_line_to (cr, x+h, y); - cairo_close_path (cr); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_set_source_rgb (cr, 1, 0, 1); - cairo_paint (cr); - - /* Set an unbounded operator so that we can see how accurate the bounded - * extents were. - */ - cairo_set_operator (cr, CAIRO_OPERATOR_IN); - cairo_set_source_rgb (cr, 1, 1, 1); - - /* Wind several triangles together that reduce to just one */ - cairo_set_fill_rule (cr, CAIRO_FILL_RULE_EVEN_ODD); - triangle (cr, 0, 0, SIZE); - triangle (cr, 0, 0, SIZE); - triangle (cr, SIZE/2-20, SIZE/2 - 20, 40); - cairo_fill (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (big_little_triangle, - "Tests that we tighten the bounds after tessellation.", - "fill", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, draw) diff --git a/test/big-trap.c b/test/big-trap.c deleted file mode 100644 index 5e11237..0000000 --- a/test/big-trap.c +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright © 2006 Mozilla Corporation - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Mozilla Corporation not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Mozilla Corporation makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * MOZILLA CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL MOZILLA CORPORATION BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Vladimir Vukicevic - */ - -#include "cairo-test.h" - -/* This test was originally written to exercise a bug in pixman in - * which it would scribble all over memory when given a particular - * (and bogus) trapezoid. However, a recent change to - * _cairo_fixed_from_double changed the details of the bogus trapezoid - * (it overflows in a different way now), so the bug is being masked. - * - * According to Vladimir, (http://lists.freedesktop.org/archives/cairo/2006-November/008482.html): - * - * Before the change, the two trapezoids that were generated were: - * - * Trap[0]: T: 0x80000000 B: 0x80000003 - * L: [(0x000a0000, 0x80000000) (0x00080000, 0x00080000)] - * R: [(0x01360000, 0x80000000) (0x01380000, 0x00080000)] - * Trap[1]: T: 0x80000003 B: 0x00080000 - * L: [(0x000a0000, 0x80000000) (0x00080000, 0x00080000)] - * R: [(0x01360000, 0x80000000) (0x01380000, 0x00080000)] - * - * After the change, the L/R coordinates are identical for both traps, but - * the top and bottom change: - * - * Trap[0]: t: 0x80000000 b: 0xfda80003 - * l: [(0x000a0000, 0x80000000) (0x00080000, 0x00080000)] - * r: [(0x01360000, 0x80000000) (0x01380000, 0x00080000)] - * Trap[1]: t: 0xfda80003 b: 0x00080000 - * l: [(0x000a0000, 0x80000000) (0x00080000, 0x00080000)] - * r: [(0x01360000, 0x80000000) (0x01380000, 0x00080000)] - * - * I think the fix we want here is to rewrite this test to call - * directly into pixman with the trapezoid of interest, (which will - * require adding a new way to configure cairo for "testing" which - * will prevent the hiding of internal library symbols. - */ - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_set_source_rgb (cr, 1,1,1); - cairo_paint (cr); - - cairo_set_source_rgb (cr, 0,0,0); - - /* Note that without the clip, this doesn't crash... */ - cairo_new_path (cr); - cairo_rectangle (cr, 0, 0, width, height); - cairo_clip (cr); - - cairo_new_path (cr); - cairo_line_to (cr, 8.0, 8.0); - cairo_line_to (cr, 312.0, 8.0); - cairo_line_to (cr, 310.0, 31378756.2666666666); - cairo_line_to (cr, 10.0, 31378756.2666666666); - cairo_line_to (cr, 8.0, 8.0); - cairo_fill (cr); - - return CAIRO_TEST_SUCCESS; -} - -/* XFAIL: range overflow of fixed-point */ -CAIRO_TEST (big_trap, - "Test oversize trapezoid with a clip region" - "\nTest needs to be adjusted to trigger the original bug", - "trap", /* keywords */ - NULL, /* requirements */ - 100, 100, - NULL, draw) diff --git a/test/bilevel-image.c b/test/bilevel-image.c deleted file mode 100644 index 4feff0e..0000000 --- a/test/bilevel-image.c +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright © 2008 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -#define RGBx 0xffff0000, 0xff00ff00, 0xff0000ff, 0x00000000 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - uint32_t data[] = { - RGBx, RGBx, RGBx, - RGBx, RGBx, RGBx, - RGBx, RGBx, RGBx, - RGBx, RGBx, RGBx, - }; - cairo_surface_t *mask; - - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - mask = cairo_image_surface_create_for_data ((unsigned char *) data, - CAIRO_FORMAT_ARGB32, 12, 4, 48); - - cairo_set_source_surface (cr, mask, 0, 0); - cairo_pattern_set_filter (cairo_get_source (cr), CAIRO_FILTER_NEAREST); - - cairo_paint (cr); - - cairo_surface_finish (mask); /* data goes out of scope */ - cairo_surface_destroy (mask); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (bilevel_image, - "Test that PS can embed an RGB image with a bilevel alpha channel.", - "alpha, ps", /* keywords */ - NULL, /* requirements */ - 12, 4, - NULL, draw) diff --git a/test/bitmap-font.c b/test/bitmap-font.c deleted file mode 100644 index 0ec9b3d..0000000 --- a/test/bitmap-font.c +++ /dev/null @@ -1,218 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" - -#include -#include -#include - -#include -#include -#include - -#define FONT "6x13.pcf" -#define TEXT_SIZE 13 - -static cairo_bool_t -font_extents_equal (const cairo_font_extents_t *A, - const cairo_font_extents_t *B) -{ - return - CAIRO_TEST_DOUBLE_EQUALS (A->ascent, B->ascent) && - CAIRO_TEST_DOUBLE_EQUALS (A->descent, B->descent) && - CAIRO_TEST_DOUBLE_EQUALS (A->height, B->height) && - CAIRO_TEST_DOUBLE_EQUALS (A->max_x_advance, B->max_x_advance) && - CAIRO_TEST_DOUBLE_EQUALS (A->max_y_advance, B->max_y_advance); -} - -static cairo_test_status_t -check_font_extents (const cairo_test_context_t *ctx, cairo_t *cr, const char *comment) -{ - cairo_font_extents_t font_extents, ref_font_extents = {11, 2, 13, 6, 0}; - cairo_status_t status; - - memset (&font_extents, 0xff, sizeof (cairo_font_extents_t)); - cairo_font_extents (cr, &font_extents); - - status = cairo_status (cr); - if (status) - return cairo_test_status_from_status (ctx, status); - - if (! font_extents_equal (&font_extents, &ref_font_extents)) { - cairo_test_log (ctx, "Error: %s: cairo_font_extents(); extents (%g, %g, %g, %g, %g)\n", - comment, - font_extents.ascent, font_extents.descent, - font_extents.height, - font_extents.max_x_advance, font_extents.max_y_advance); - return CAIRO_TEST_FAILURE; - } - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - const cairo_test_context_t *ctx = cairo_test_get_context (cr); - FcPattern *pattern; - cairo_font_face_t *font_face; - cairo_font_extents_t font_extents; - cairo_font_options_t *font_options; - cairo_status_t status; - char *filename; - int face_count; - struct stat stat_buf; - - xasprintf (&filename, "%s/%s", ctx->srcdir, FONT); - - if (stat (filename, &stat_buf) || ! S_ISREG (stat_buf.st_mode)) { - cairo_test_log (ctx, "Error finding font: %s: file not found?\n", filename); - return CAIRO_TEST_FAILURE; - } - - pattern = FcFreeTypeQuery ((unsigned char *)filename, 0, NULL, &face_count); - free (filename); - if (! pattern) { - cairo_test_log (ctx, "FcFreeTypeQuery failed.\n"); - return cairo_test_status_from_status (ctx, CAIRO_STATUS_NO_MEMORY); - } - - font_face = cairo_ft_font_face_create_for_pattern (pattern); - FcPatternDestroy (pattern); - - status = cairo_font_face_status (font_face); - if (status) { - cairo_test_log (ctx, "Error creating font face for %s: %s\n", - filename, - cairo_status_to_string (status)); - return cairo_test_status_from_status (ctx, status); - } - - if (cairo_font_face_get_type (font_face) != CAIRO_FONT_TYPE_FT) { - cairo_test_log (ctx, "Unexpected value from cairo_font_face_get_type: %d (expected %d)\n", - cairo_font_face_get_type (font_face), CAIRO_FONT_TYPE_FT); - cairo_font_face_destroy (font_face); - return CAIRO_TEST_FAILURE; - } - - cairo_set_font_face (cr, font_face); - cairo_font_face_destroy (font_face); - cairo_set_font_size (cr, 13); - - font_options = cairo_font_options_create (); - -#define CHECK_FONT_EXTENTS(comment) do {\ - cairo_test_status_t test_status; \ - test_status = check_font_extents (ctx, cr, (comment)); \ - if (test_status != CAIRO_TEST_SUCCESS) { \ - cairo_font_options_destroy (font_options); \ - return test_status; \ - } \ -} while (0) - - cairo_font_extents (cr, &font_extents); - CHECK_FONT_EXTENTS ("default"); - - cairo_font_options_set_hint_metrics (font_options, CAIRO_HINT_METRICS_ON); - cairo_set_font_options (cr, font_options); - - CHECK_FONT_EXTENTS ("HINT_METRICS_ON"); - - cairo_move_to (cr, 1, font_extents.ascent - 1); - cairo_set_source_rgb (cr, 0.0, 0.0, 1.0); /* blue */ - - cairo_font_options_set_hint_style (font_options, CAIRO_HINT_STYLE_NONE); - cairo_set_font_options (cr, font_options); - CHECK_FONT_EXTENTS ("HINT_METRICS_ON HINT_STYLE_NONE"); - cairo_show_text (cr, "the "); - - cairo_font_options_set_hint_style (font_options, CAIRO_HINT_STYLE_SLIGHT); - cairo_set_font_options (cr, font_options); - CHECK_FONT_EXTENTS ("HINT_METRICS_ON HINT_STYLE_SLIGHT"); - cairo_show_text (cr, "quick "); - - cairo_font_options_set_hint_style (font_options, CAIRO_HINT_STYLE_MEDIUM); - cairo_set_font_options (cr, font_options); - CHECK_FONT_EXTENTS ("HINT_METRICS_ON HINT_STYLE_MEDIUM"); - cairo_show_text (cr, "brown"); - - cairo_font_options_set_hint_style (font_options, CAIRO_HINT_STYLE_FULL); - cairo_set_font_options (cr, font_options); - CHECK_FONT_EXTENTS ("HINT_METRICS_ON HINT_STYLE_FULL"); - cairo_show_text (cr, " fox"); - - /* Switch from show_text to text_path/fill to exercise bug #7889 */ - cairo_text_path (cr, " jumps over a lazy dog"); - cairo_fill (cr); - - /* And test it rotated as well for the sake of bug #7888 */ - - cairo_translate (cr, width, height); - cairo_rotate (cr, M_PI); - - cairo_font_options_set_hint_style (font_options, CAIRO_HINT_STYLE_DEFAULT); - cairo_font_options_set_hint_metrics (font_options, CAIRO_HINT_METRICS_OFF); - cairo_set_font_options (cr, font_options); - CHECK_FONT_EXTENTS ("HINT_METRICS_OFF"); - - cairo_move_to (cr, 1, font_extents.height - font_extents.descent - 1); - - cairo_font_options_set_hint_style (font_options, CAIRO_HINT_STYLE_NONE); - cairo_set_font_options (cr, font_options); - CHECK_FONT_EXTENTS ("HINT_METRICS_OFF HINT_STYLE_NONE"); - cairo_show_text (cr, "the "); - - cairo_font_options_set_hint_style (font_options, CAIRO_HINT_STYLE_SLIGHT); - cairo_set_font_options (cr, font_options); - CHECK_FONT_EXTENTS ("HINT_METRICS_OFF HINT_STYLE_SLIGHT"); - cairo_show_text (cr, "quick"); - - cairo_font_options_set_hint_style (font_options, CAIRO_HINT_STYLE_MEDIUM); - cairo_set_font_options (cr, font_options); - CHECK_FONT_EXTENTS ("HINT_METRICS_OFF HINT_STYLE_MEDIUM"); - cairo_show_text (cr, " brown"); - - cairo_font_options_set_hint_style (font_options, CAIRO_HINT_STYLE_FULL); - cairo_set_font_options (cr, font_options); - CHECK_FONT_EXTENTS ("HINT_METRICS_OFF HINT_STYLE_FULL"); - cairo_show_text (cr, " fox"); - - cairo_text_path (cr, " jumps over"); - cairo_text_path (cr, " a lazy dog"); - cairo_fill (cr); - - cairo_font_options_destroy (font_options); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (bitmap_font, - "Test drawing with a font consisting only of bitmaps" - "\nThe PDF and PS backends embed a slightly distorted font for the rotated case.", - "text", /* keywords */ - "ft", /* requirements */ - 246 + 1, 2 * TEXT_SIZE, - NULL, draw) diff --git a/test/blur.c b/test/blur.c deleted file mode 100644 index 92b5367..0000000 --- a/test/blur.c +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Copyright © 2013 Samsung Electronics - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Authors: - * Bryce Harrington - * Henry Song - */ - -/* This test exercises gaussian blur rendering - */ - -/* When we build only for backends other than gl, - include in blur.c will give errors. -*/ -#if 0 -#include -#include -#include - -#include -#include -#endif - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - const cairo_test_context_t *ctx = cairo_test_get_context (cr); - - int line_width = 20; - int x = width / 2; - int y = height / 2; - int radius = width / 4; - - cairo_save (cr); - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - cairo_restore (cr); - - cairo_save (cr); - - /* drop shadow */ - cairo_arc (cr, x, y, radius, 0, 2 * M_PI); - cairo_set_line_width (cr, line_width); - cairo_set_draw_shadow_only (cr, 1); - cairo_set_shadow (cr, CAIRO_SHADOW_DROP); - cairo_set_shadow_rgba (cr, 0, 0, 0, 0.8); - cairo_set_shadow_blur (cr, 10, 10); - cairo_set_shadow_offset (cr, -42, -7); - cairo_stroke (cr); - - /* ring with inset shadow */ - cairo_arc (cr, x, y, radius, 0, 2 * M_PI); - cairo_set_line_width (cr, line_width); - cairo_set_source_rgb (cr, 0, 0.5, 0); - cairo_set_draw_shadow_only (cr, 0); - cairo_set_shadow (cr, CAIRO_SHADOW_INSET); - cairo_set_shadow_rgba (cr, 0, 0, 0, 1); - cairo_set_shadow_blur (cr, 5, 2); - cairo_set_shadow_offset (cr, 6, 1); - cairo_stroke (cr); - - /* draw spread */ - cairo_set_draw_shadow_only (cr, 1); - cairo_set_shadow (cr, CAIRO_SHADOW_DROP); - cairo_set_shadow_rgba (cr, 1, 1, 1, 1); - cairo_set_shadow_blur (cr, 5, 2); - cairo_set_line_width (cr, line_width/5); - cairo_set_source_rgb (cr, 0, 0.5, 0); - cairo_set_shadow_offset (cr, 6, 1); - cairo_arc (cr, x, y, radius, 0, 2 * M_PI); - cairo_stroke (cr); - - cairo_restore (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (blur, - "Tests gaussian blur of a drawn image", - "gl, blur, operator", /* keywords */ - NULL, /* requirements */ - 256, 256, - NULL, draw) diff --git a/test/buffer-diff.c b/test/buffer-diff.c deleted file mode 100644 index f3d90ca..0000000 --- a/test/buffer-diff.c +++ /dev/null @@ -1,268 +0,0 @@ -/* imagediff - Compare two images - * - * Copyright © 2004 Richard D. Worth - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of Richard Worth - * not be used in advertising or publicity pertaining to distribution - * of the software without specific, written prior permission. - * Richard Worth makes no representations about the suitability of this - * software for any purpose. It is provided "as is" without express - * or implied warranty. - * - * RICHARD WORTH DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN - * NO EVENT SHALL RICHARD WORTH BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS - * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, - * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Richard D. Worth */ - -#if HAVE_CONFIG_H -#include "config.h" -#endif - -#include -#include -#ifdef HAVE_UNISTD_H -#include -#endif -#include -#include -#include - -#include "cairo-test.h" - -#include "pdiff.h" -#include "buffer-diff.h" - -/* Don't allow any differences greater than this value, even if pdiff - * claims that the images are identical */ -#define PERCEPTUAL_DIFF_THRESHOLD 256 - -/* Compare two buffers, returning the number of pixels that are - * different and the maximum difference of any single color channel in - * result_ret. - * - * This function should be rewritten to compare all formats supported by - * cairo_format_t instead of taking a mask as a parameter. - */ -static void -buffer_diff_core (const unsigned char *_buf_a, int stride_a, - const unsigned char *_buf_b, int stride_b, - unsigned char *_buf_diff, int stride_diff, - int width, - int height, - uint32_t mask, - buffer_diff_result_t *result_ret) -{ - const uint32_t *buf_a = (const uint32_t*) _buf_a; - const uint32_t *buf_b = (const uint32_t*) _buf_b; - uint32_t *buf_diff = (uint32_t*) _buf_diff; - int x, y; - buffer_diff_result_t result = {0, 0}; - - stride_a /= sizeof (uint32_t); - stride_b /= sizeof (uint32_t); - stride_diff /= sizeof (uint32_t); - for (y = 0; y < height; y++) { - const uint32_t *row_a = buf_a + y * stride_a; - const uint32_t *row_b = buf_b + y * stride_b; - uint32_t *row = buf_diff + y * stride_diff; - - for (x = 0; x < width; x++) { - /* check if the pixels are the same */ - if ((row_a[x] & mask) != (row_b[x] & mask)) { - int channel; - uint32_t diff_pixel = 0; - - /* calculate a difference value for all 4 channels */ - for (channel = 0; channel < 4; channel++) { - int value_a = (row_a[x] >> (channel*8)) & 0xff; - int value_b = (row_b[x] >> (channel*8)) & 0xff; - unsigned int diff; - diff = abs (value_a - value_b); - if (diff > result.max_diff) - result.max_diff = diff; - diff *= 4; /* emphasize */ - if (diff) - diff += 128; /* make sure it's visible */ - if (diff > 255) - diff = 255; - diff_pixel |= diff << (channel*8); - } - - result.pixels_changed++; - if ((diff_pixel & 0x00ffffff) == 0) { - /* alpha only difference, convert to luminance */ - uint8_t alpha = diff_pixel >> 24; - diff_pixel = alpha * 0x010101; - } - row[x] = diff_pixel; - } else { - row[x] = 0; - } - row[x] |= 0xff000000; /* Set ALPHA to 100% (opaque) */ - } - } - - *result_ret = result; -} - -/* Compares two image surfaces - * - * Provides number of pixels changed and maximum single-channel - * difference in result. - * - * Also fills in a "diff" surface intended to visually show where the - * images differ. - */ -static void -compare_surfaces (const cairo_test_context_t *ctx, - cairo_surface_t *surface_a, - cairo_surface_t *surface_b, - cairo_surface_t *surface_diff, - buffer_diff_result_t *result) -{ - /* These default values were taken straight from the - * perceptualdiff program. We'll probably want to tune these as - * necessary. */ - double gamma = 2.2; - double luminance = 100.0; - double field_of_view = 45.0; - float pixels_changed_percentage = 0.05; - int discernible_pixels_changed; - int pixels_tolerance; - int width, height; - - /* First, we run cairo's old buffer_diff algorithm which looks for - * pixel-perfect images, (we do this first since the test suite - * runs about 3x slower if we run pdiff_compare first). - */ - buffer_diff_core (cairo_image_surface_get_data (surface_a), - cairo_image_surface_get_stride (surface_a), - cairo_image_surface_get_data (surface_b), - cairo_image_surface_get_stride (surface_b), - cairo_image_surface_get_data (surface_diff), - cairo_image_surface_get_stride (surface_diff), - cairo_image_surface_get_width (surface_a), - cairo_image_surface_get_height (surface_a), - cairo_surface_get_content (surface_a) & CAIRO_CONTENT_ALPHA ? 0xffffffff : 0x00ffffff, - result); - if (result->pixels_changed == 0) - return; - - cairo_test_log (ctx, - "%d pixels differ (with maximum difference of %d) from reference image\n", - result->pixels_changed, result->max_diff); - - /* Then, if there are any different pixels, we give the pdiff code - * a crack at the images. If it decides that there are no visually - * discernible differences in any pixels, then we accept this - * result as good enough. - * - * Only let pdiff have a crack at the comparison if the max difference - * is lower than a threshold, otherwise some problems could be masked. - */ - if (result->max_diff < PERCEPTUAL_DIFF_THRESHOLD) { - width = cairo_image_surface_get_width (surface_a); - height = cairo_image_surface_get_height (surface_a); - pixels_tolerance = width * height * pixels_changed_percentage; - discernible_pixels_changed = pdiff_compare (surface_a, surface_b, - gamma, luminance, field_of_view); - if (discernible_pixels_changed <= pixels_tolerance) { - result->pixels_changed = 0; - cairo_test_log (ctx, - "But perceptual diff finds no visually discernible difference.\n" - "Accepting result.\n"); - } - } -} - -void -buffer_diff_noalpha (const unsigned char *buf_a, - const unsigned char *buf_b, - unsigned char *buf_diff, - int width, - int height, - int stride, - buffer_diff_result_t *result) -{ - buffer_diff_core(buf_a, stride, - buf_b, stride, - buf_diff, stride, - width, height, - 0x00ffffff, - result); -} - -static cairo_bool_t -same_size (cairo_surface_t *a, cairo_surface_t *b) -{ - unsigned int width_a, height_a; - unsigned int width_b, height_b; - - width_a = cairo_image_surface_get_width (a); - height_a = cairo_image_surface_get_height (a); - - width_b = cairo_image_surface_get_width (b); - height_b = cairo_image_surface_get_height (b); - - return width_a == width_b && height_a == height_b; -} - -/* Image comparison code courtesy of Richard Worth - * Returns number of pixels changed, (or -1 on error). - * Also saves a "diff" image intended to visually show where the - * images differ. - * - * The return value simply indicates whether a check was successfully - * made, (as opposed to a file-not-found condition or similar). It - * does not indicate anything about how much the images differ. For - * that, see result. - * - * One failure mode is if the two images provided do not have the same - * dimensions. In this case, this function will return - * CAIRO_STATUS_SURFACE_TYPE_MISMATCH (which is a bit of an abuse, but - * oh well). - */ -cairo_status_t -image_diff (const cairo_test_context_t *ctx, - cairo_surface_t *surface_a, - cairo_surface_t *surface_b, - cairo_surface_t *surface_diff, - buffer_diff_result_t *result) -{ - if (cairo_surface_status (surface_a)) - return cairo_surface_status (surface_a); - - if (cairo_surface_status (surface_b)) - return cairo_surface_status (surface_b); - - if (cairo_surface_status (surface_diff)) - return cairo_surface_status (surface_diff); - - if (! same_size (surface_a, surface_b) || - ! same_size (surface_a, surface_diff)) - { - cairo_test_log (ctx, "Error: Image size mismatch\n"); - return CAIRO_STATUS_SURFACE_TYPE_MISMATCH; - } - - compare_surfaces (ctx, surface_a, surface_b, surface_diff, result); - - return CAIRO_STATUS_SUCCESS; -} - -cairo_bool_t -image_diff_is_failure (const buffer_diff_result_t *result, - unsigned int tolerance) -{ - return result->pixels_changed && - result->max_diff > tolerance; -} diff --git a/test/buffer-diff.h b/test/buffer-diff.h deleted file mode 100644 index 2cbb895..0000000 --- a/test/buffer-diff.h +++ /dev/null @@ -1,73 +0,0 @@ -/* imagediff - Compare two images - * - * Copyright © 2004 Richard D. Worth - * Copyright © 2006 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of the authors - * not be used in advertising or publicity pertaining to distribution - * of the software without specific, written prior permission. - * The authors make no representations about the suitability of this - * software for any purpose. It is provided "as is" without express - * or implied warranty. - * - * THE AUTHORS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN - * NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS - * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, - * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Authors: Richard D. Worth - * Carl Worth - */ - -#ifndef BUFFER_DIFF_H -#define BUFFER_DIFF_H - -#include "cairo-test.h" - -typedef struct _buffer_diff_result { - unsigned int pixels_changed; - unsigned int max_diff; -} buffer_diff_result_t; - -/* Compares two image buffers ignoring the alpha channel. - * - * Provides number of pixels changed and maximum single-channel - * difference in result. - * - * Also fills in a "diff" buffer intended to visually show where the - * images differ. - */ -void -buffer_diff_noalpha (const unsigned char *buf_a, - const unsigned char *buf_b, - unsigned char *buf_diff, - int width, - int height, - int stride, - buffer_diff_result_t *result); - -/* The central algorithm to compare two images, and return the differences - * in the surface_diff. - * - * Provides number of pixels changed and maximum single-channel - * difference in result. - */ -cairo_status_t -image_diff (const cairo_test_context_t *ctx, - cairo_surface_t *surface_a, - cairo_surface_t *surface_b, - cairo_surface_t *surface_diff, - buffer_diff_result_t *result); - -cairo_bool_t -image_diff_is_failure (const buffer_diff_result_t *result, - unsigned int tolerance); - -#endif diff --git a/test/bug-40410.c b/test/bug-40410.c deleted file mode 100644 index 2d6e512..0000000 --- a/test/bug-40410.c +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright © 2011 Krzysztof Kosiński - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Krzysztof Kosiński - */ - -#include "cairo-test.h" - -#define WIDTH 300 -#define HEIGHT 100 - -/* - * The bug appears to be triggered if: - * 1. There is more than one subpath - * 2. All subpaths are axis-aligned rectangles - * 3. Only one of the subpaths is within surface bounds - * - * Tweaking any of the coordinates so that there is at least one - * non-axis-aligned segment or removing the second subpath (the one that is - * outside the surface bounds) causes the bug to disappear. - */ - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_set_source_rgb (cr, 1,1,1); - cairo_paint (cr); - - cairo_move_to (cr, 10.3, 10.6); - cairo_line_to (cr, 10.3, 150.2); - cairo_line_to (cr, 290.1, 150.2); - cairo_line_to (cr, 290.1, 10.6); - cairo_close_path (cr); - - cairo_move_to (cr, 10.3, 180.7); - cairo_line_to (cr, 10.3, 230.2); - cairo_line_to (cr, 290.1, 230.2); - cairo_line_to (cr, 290.1, 180.7); - cairo_close_path (cr); - - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_fill (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (bug_40410, - "Exercises a bug found in 1.10.2 (and never again!)", - "fill", /* keywords */ - "target=raster", /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/bug-51910.c b/test/bug-51910.c deleted file mode 100644 index 37881de..0000000 --- a/test/bug-51910.c +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright © 2012 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -#include "cairo-test.h" - -/* An error in xlib pattern transformation discovered by Albertas VyÅ¡niauskas */ - -static cairo_pattern_t * -source(void) -{ - cairo_surface_t *surface; - cairo_pattern_t *pattern; - cairo_matrix_t matrix; - cairo_t *cr; - int i; - - surface = cairo_image_surface_create (CAIRO_FORMAT_RGB24, 32, 32); - cr = cairo_create (surface); - cairo_surface_destroy (surface); - - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - cairo_set_source_rgb (cr, .5, .5, .5); - cairo_set_line_width (cr, 2); - - for (i = -1; i <= 8; i++) { - cairo_move_to (cr, -34 + 8*i, 34); - cairo_rel_line_to (cr, 36, -36); - cairo_stroke (cr); - } - - pattern = cairo_pattern_create_for_surface (cairo_get_target (cr)); - cairo_destroy (cr); - - cairo_pattern_set_extend (pattern, CAIRO_EXTEND_REPEAT); - - cairo_matrix_init_translate(&matrix, 14.1, 0); - cairo_pattern_set_matrix(pattern, &matrix); - - return pattern; -} - - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_pattern_t *pattern; - int i; - - cairo_paint (cr); - - pattern = source (); - cairo_set_source (cr, pattern); - cairo_pattern_destroy (pattern); - - for (i = 0; i < 8; i++) { - cairo_rectangle (cr, 3.5*i, 32*i, 256, 32); - cairo_fill (cr); - } - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (bug_51910, - "A bug in the xlib pattern transformation", - " paint", /* keywords */ - NULL, /* requirements */ - 256, 256, - NULL, draw) diff --git a/test/bug-84115.c b/test/bug-84115.c deleted file mode 100644 index 4db113c..0000000 --- a/test/bug-84115.c +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright © 2011 Krzysztof Kosiński - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Krzysztof Kosiński - */ - -#include "cairo-test.h" - -#define WIDTH 800 -#define HEIGHT 800 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - double lw = 800; - int n = 0; - - cairo_set_source_rgb (cr, 1,1,1); - cairo_paint (cr); - - cairo_set_source_rgba (cr, 0, 0, 0, .4); - cairo_set_line_cap (cr, CAIRO_LINE_CAP_BUTT); - do { - cairo_set_line_width(cr, lw); - cairo_arc(cr, WIDTH/2, HEIGHT/2, lw/2, - 2*M_PI*(13*n + 1) / 130, 2*M_PI*(13*n + 12) / 130); - cairo_stroke(cr); - - n++; - lw /= 1.1; - } while (lw > 0.5); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (bug_84115, - "Exercises a bug found in stroke generation using trapezoids", - "stroke", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/bug-bo-collins.c b/test/bug-bo-collins.c deleted file mode 100644 index cf6d688..0000000 --- a/test/bug-bo-collins.c +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright © 2012 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - cairo_set_source_rgb (cr, 0, 0, 0); - - cairo_translate (cr, 0, 0); - cairo_save (cr); - cairo_rectangle (cr, 10, 10, 20, 20); - cairo_rectangle (cr, 20, 10, -10, 10); - cairo_clip (cr); - cairo_paint (cr); - cairo_restore (cr); - - cairo_translate (cr, 40, 0); - cairo_save (cr); - cairo_rectangle (cr, 10, 10, 20, 20); - cairo_rectangle (cr, 30, 10, -10, 10); - cairo_clip (cr); - cairo_paint (cr); - cairo_restore (cr); - - cairo_translate (cr, 0, 40); - cairo_save (cr); - cairo_rectangle (cr, 10, 10, 20, 20); - cairo_rectangle (cr, 30, 20, -10, 10); - cairo_clip (cr); - cairo_paint (cr); - cairo_restore (cr); - - cairo_translate (cr, -40, 0); - cairo_save (cr); - cairo_rectangle (cr, 10, 10, 20, 20); - cairo_rectangle (cr, 20, 20, -10, 10); - cairo_clip (cr); - cairo_paint (cr); - cairo_restore (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (bug_bo_collins, - "Exercises a bug discovered by S. Christian Collins", - "clip, rectangular", /* keywords */ - NULL, /* requirements */ - 80, 80, - NULL, draw) diff --git a/test/bug-bo-rectangular.c b/test/bug-bo-rectangular.c deleted file mode 100644 index 08e2e49..0000000 --- a/test/bug-bo-rectangular.c +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright 2010 Red Hat - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Intel not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Intel makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Benjamin Otte - */ - -#include "cairo-test.h" - -static void -rect (cairo_t *cr, int x1, int y1, int x2, int y2) -{ - cairo_rectangle (cr, x1, y1, x2 - x1, y2 - y1); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - cairo_set_fill_rule (cr, CAIRO_FILL_RULE_EVEN_ODD); - - cairo_scale (cr, 1./256, 1./256); - - rect (cr, 0, 0, 29696, 7680); - rect (cr, 0, 0, -15360, 15360); - cairo_clip (cr); - - cairo_set_source_rgb (cr, 1, 0.5, 0); - cairo_paint (cr); - - rect (cr, 9984, 0, 2969, 3840); - rect (cr, 0, 3840, 9472, 7680); - cairo_clip (cr); - - rect (cr, 0, 3840, 3584, 7680); - cairo_set_source_rgb (cr, 1, 0, 0.5); - cairo_fill (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (bug_bo_rectangular, - "Tests a bug found by Benjamin Otte in the rectangular tessellator", - "tessellator", /* keywords */ - NULL, /* requirements */ - 300, 300, - NULL, draw) diff --git a/test/bug-bo-ricotz.c b/test/bug-bo-ricotz.c deleted file mode 100644 index 9524d20..0000000 --- a/test/bug-bo-ricotz.c +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright © 2011 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -/* An assertion failure found by Rico Tzschichholz */ - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - cairo_set_source_rgb (cr, 0, 0, 0); - - cairo_rectangle (cr, 10, 55,165, 1); - cairo_rectangle (cr, 174, 55,1, 413); - cairo_rectangle (cr, 10, 56, 1, 413); - cairo_rectangle (cr, 10, 469, 165, 1); - cairo_clip (cr); - - cairo_set_fill_rule (cr, CAIRO_FILL_RULE_EVEN_ODD); - - cairo_move_to (cr, 10, 57); - cairo_curve_to (cr, 10, 55.894531, 10.894531, 55, 12, 55); - cairo_line_to (cr, 173, 55); - cairo_curve_to (cr, 174.105469, 55, 175, 55.894531, 175, 57); - cairo_line_to (cr, 175, 468); - cairo_curve_to (cr, 175, 469.105469, 174.105469, 470, 173, 470); - cairo_line_to (cr, 12, 470); - cairo_curve_to (cr, 10.894531, 470, 10, 469.105469, 10, 468); - - cairo_move_to (cr, 11, 57); - cairo_curve_to (cr, 11, 56.449219, 11.449219, 56, 12, 56); - cairo_line_to (cr, 173, 56); - cairo_curve_to (cr, 173.550781, 56, 174, 56.449219, 174, 57); - cairo_line_to (cr, 174, 468); - cairo_curve_to (cr, 174, 468.550781, 173.550781, 469, 173, 469); - cairo_line_to (cr, 12, 469); - cairo_curve_to (cr, 11.449219, 469, 11, 468.550781, 11, 468); - - cairo_fill (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (bug_bo_ricotz, - "Exercises a bug discovered by Rico Tzschichholz", - "clip, fill", /* keywords */ - NULL, /* requirements */ - 649, 480, - NULL, draw) diff --git a/test/bug-extents.c b/test/bug-extents.c deleted file mode 100644 index 4edb4a5..0000000 --- a/test/bug-extents.c +++ /dev/null @@ -1,59 +0,0 @@ -/* -*- Mode: c; c-basic-offset: 4; indent-tabs-mode: t; tab-width: 8; -*- */ -/* - * Copyright 2010 Andrea Canciani - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Andrea Canciani - */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - cairo_translate (cr, 0, -25); - - cairo_move_to (cr, 50, 200); - cairo_curve_to (cr, 50, 150, 100, 50, 150, 50); - cairo_curve_to (cr, 200, 50, 250, 250, 200, 250); - cairo_curve_to (cr, 150, 250, 200, 50, 50, 100); - cairo_curve_to (cr, -100, 150, 200, 150, 200, 200); - cairo_curve_to (cr, 200, 250, 50, 250, 50, 200); - - cairo_set_source_rgb (cr, 0, 0, 0); - cairo_fill_preserve (cr); - - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_stroke (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (bug_extents, - "Tests a bug in the computation of approximate extents", - "extents", /* keywords */ - NULL, /* requirements */ - 250, 250, - NULL, draw) diff --git a/test/bug-seams.c b/test/bug-seams.c deleted file mode 100644 index 01e84ff..0000000 --- a/test/bug-seams.c +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Copyright 2010 Soeren Sandmann Pedersen - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Soeren Sandmann - */ - -/* Exercises a case of seam appearing between two polygons in the image - * backend but not in xlib [using pixman]. - * - * The test case draws two abutting quads both individually on the - * leftm combining them with operator ADD, and in one go on the right. - * Both methods should show no signs of seaming at the common edge - * between the two quads, but the individually drawn ones have a - * slight seam. - * - * The cause of the seam is that there are slight differences in the - * output of the analytical coverage rasterization and the - * supersampling rasterization methods, both employed by - * cairo-tor-scan-converter. When drawn individually, the scan - * converter gets a partial view of the geometry at a time, so it ends - * up making different decisions about which scanlines it rasterizes - * with which method, compared to when the geometry is draw all at - * once. Though both methods produce seamless results individually - * (where applicable), they don't produce bit-exact identical results, - * and hence we get seaming where they meet. - */ - -#include "cairo-test.h" - -static void -draw_quad (cairo_t *cr, - double x1, double y1, double x2, double y2, - double x3, double y3, double x4, double y4) -{ - cairo_move_to (cr, x1, y1); - cairo_line_to (cr, x2, y2); - cairo_line_to (cr, x3, y3); - cairo_line_to (cr, x4, y4); - cairo_close_path (cr); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_set_source_rgb (cr, 0, 0, 0); - cairo_paint (cr); - - cairo_scale (cr, 20, 20); - cairo_translate (cr, 5, 1); - - /* On the left side, we have two quads drawn one at a time and - * combined with OPERATOR_ADD. This should be seamless, but - * isn't. */ - cairo_push_group (cr); - cairo_set_operator (cr, CAIRO_OPERATOR_ADD); - - cairo_set_source_rgb (cr, 0, 0.6, 0); - draw_quad (cr, - 1.50, 1.50, - 2.64, 1.63, - 1.75, 2.75, - 0.55, 2.63); - cairo_fill (cr); - draw_quad (cr, - 0.55, 2.63, - 1.75, 2.75, - 0.98, 4.11, - -0.35, 4.05); - cairo_fill (cr); - - cairo_pop_group_to_source (cr); - cairo_set_operator (cr, CAIRO_OPERATOR_OVER); - cairo_paint (cr); - - /* On the right side, we have the same two quads drawn both at the - * same time. This is seamless. */ - cairo_translate (cr, 10, 0); - - cairo_set_source_rgb (cr, 0, 0.6, 0); - draw_quad (cr, - 1.50, 1.50, - 2.64, 1.63, - 1.75, 2.75, - 0.55, 2.63); - draw_quad (cr, - 0.55, 2.63, - 1.75, 2.75, - 0.98, 4.11, - -0.35, 4.05); - cairo_fill (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (bug_seams, - "Check the fidelity of the rasterisation.", - "raster", /* keywords */ - "target=raster", /* requirements */ - 500, 300, - NULL, draw) diff --git a/test/bug-source-cu.c b/test/bug-source-cu.c deleted file mode 100644 index 4c1e2bc..0000000 --- a/test/bug-source-cu.c +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -#include "cairo-test.h" - -static cairo_pattern_t * -create_pattern (cairo_surface_t *target) -{ - cairo_surface_t *surface; - cairo_pattern_t *pattern; - cairo_t *cr; - cairo_matrix_t m; - - surface = cairo_surface_create_similar(target, - cairo_surface_get_content (target), - 1000, 600); - cr = cairo_create (surface); - cairo_surface_destroy (surface); - - cairo_set_source_rgb (cr, 0, 1, 0); - cairo_paint(cr); - - pattern = cairo_pattern_create_for_surface (cairo_get_target (cr)); - cairo_destroy(cr); - - cairo_matrix_init_translate (&m, 0, 0.1); // y offset must be non-integer - cairo_pattern_set_matrix (pattern, &m); - return pattern; -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_pattern_t *pattern; - - cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); - - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_paint (cr); - - cairo_new_path (cr); - cairo_move_to (cr, 10, 400.1); - cairo_line_to (cr, 990, 400.1); - cairo_line_to (cr, 990, 600); - cairo_line_to (cr, 10, 600); - cairo_close_path (cr); - - pattern = create_pattern (cairo_get_target (cr)); - cairo_set_source (cr, pattern); - cairo_pattern_destroy (pattern); - - cairo_fill(cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (bug_source_cu, - "Exercises a bug discovered in the tracking of unbounded source extents", - "fill", /* keywords */ - NULL, /* requirements */ - 1000, 600, - NULL, draw) diff --git a/test/bug-spline.c b/test/bug-spline.c deleted file mode 100644 index 9a54a7c..0000000 --- a/test/bug-spline.c +++ /dev/null @@ -1,95 +0,0 @@ -/* cc `pkg-config --cflags --libs cairo` cairo-spline-image.c -o cairo-spline-image */ - -/* Copyright © 2005 Carl Worth - * Copyright © 2012 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -#include "cairo-test.h" - -#define WIDE_LINE_WIDTH 160 -#define NARROW_LINE_WIDTH 2 - -/* A spline showing bugs in the "contour-based stroking" in cairo 1.12 */ -static const struct spline { - struct { double x, y; } pt[5]; - double line_width; - double rgba[4]; -} splines[] = { - { - { - { 172.25, 156.185 }, - { 177.225, 164.06 }, - { 176.5, 157.5 }, - { 175.5, 159.5 }, - }, - WIDE_LINE_WIDTH, - { 1, 1, 1, 1 }, - }, - { - { - { 571.25, 247.185 }, - { 78.225, 224.06 }, - { 129.5, 312.5 }, - { 210.5, 224.5 }, - }, - NARROW_LINE_WIDTH, - { 1, 0, 0, 1 }, - } -}; - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - unsigned n; - - cairo_set_source_rgb (cr, 0, 0, 0); - cairo_paint (cr); - - cairo_set_line_cap(cr, CAIRO_LINE_CAP_SQUARE); - - for (n = 0; n < ARRAY_LENGTH(splines); n++) { - cairo_set_line_width (cr, splines[n].line_width); - cairo_set_source_rgba (cr, - splines[n].rgba[0], - splines[n].rgba[1], - splines[n].rgba[2], - splines[n].rgba[3]); - - cairo_move_to (cr, splines[n].pt[0].x, splines[n].pt[0].y); - cairo_curve_to (cr, - splines[n].pt[1].x, splines[n].pt[1].y, - splines[n].pt[2].x, splines[n].pt[2].y, - splines[n].pt[3].x, splines[n].pt[3].y); - - cairo_stroke (cr); - } - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (bug_spline, - "Exercises a bug in the stroking of splines", - "spline, stroke", /* keywords */ - NULL, /* requirements */ - 300, 300, - NULL, draw) diff --git a/test/cairo-test-private.h b/test/cairo-test-private.h deleted file mode 100644 index cfd22de..0000000 --- a/test/cairo-test-private.h +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright © 2004 Red Hat, Inc. - * Copyright © 2008 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - * Chris Wilson - */ - -#ifndef _CAIRO_TEST_PRIVATE_H_ -#define _CAIRO_TEST_PRIVATE_H_ - -#include "cairo-test.h" - -/* For communication between the core components of cairo-test and not - * for the tests themselves. - */ - -CAIRO_BEGIN_DECLS - -typedef enum { - DIRECT, - SIMILAR -} cairo_test_similar_t; - -cairo_test_similar_t -cairo_test_target_has_similar (const cairo_test_context_t *ctx, - const cairo_boilerplate_target_t *target); - -cairo_test_status_t -_cairo_test_context_run_for_target (cairo_test_context_t *ctx, - const cairo_boilerplate_target_t *target, - cairo_bool_t similar, - int dev_offset, int dev_scale); - -void -_cairo_test_context_init_for_test (cairo_test_context_t *ctx, - const cairo_test_context_t *parent, - const cairo_test_t *test); - -void -cairo_test_init (cairo_test_context_t *ctx, - const char *test_name, - const char *output); - -void -cairo_test_fini (cairo_test_context_t *ctx); - -void -_cairo_test_runner_register_tests (void); - -CAIRO_END_DECLS - -#endif /* _CAIRO_TEST_PRIVATE_H_ */ diff --git a/test/cairo-test-runner.c b/test/cairo-test-runner.c deleted file mode 100644 index f9e7d47..0000000 --- a/test/cairo-test-runner.c +++ /dev/null @@ -1,1108 +0,0 @@ -/* - * Copyright © 2008 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test-private.h" -#include "cairo-boilerplate-getopt.h" - -/* get the "real" version info instead of dummy cairo-version.h */ -#undef CAIRO_VERSION_H -#undef CAIRO_VERSION_MAJOR -#undef CAIRO_VERSION_MINOR -#undef CAIRO_VERSION_MICRO -#include "../cairo-version.h" - -#include /* for version information */ - -#define SHOULD_FORK HAVE_FORK && HAVE_WAITPID -#if SHOULD_FORK -#if HAVE_UNISTD_H -#include -#endif -#if HAVE_SIGNAL_H -#include -#endif -#include -#include -#endif -#if HAVE_LIBGEN_H -#include -#endif - -#if HAVE_VALGRIND -#include -#else -#define RUNNING_ON_VALGRIND 0 -#endif - -#ifdef _MSC_VER -#include -#endif - -typedef struct _cairo_test_list { - const cairo_test_t *test; - struct _cairo_test_list *next; -} cairo_test_list_t; - -typedef struct _cairo_test_runner { - cairo_test_context_t base; - - unsigned int num_device_offsets; - unsigned int num_device_scales; - - cairo_bool_t passed; - int num_passed; - int num_skipped; - int num_failed; - int num_xfailed; - int num_error; - int num_crashed; - - cairo_test_list_t *crashes_preamble; - cairo_test_list_t *errors_preamble; - cairo_test_list_t *fails_preamble; - - cairo_test_list_t **crashes_per_target; - cairo_test_list_t **errors_per_target; - cairo_test_list_t **fails_per_target; - - int *num_failed_per_target; - int *num_error_per_target; - int *num_crashed_per_target; - - cairo_bool_t foreground; - cairo_bool_t exit_on_failure; - cairo_bool_t list_only; - cairo_bool_t full_test; - cairo_bool_t keyword_match; - cairo_bool_t slow; - cairo_bool_t force_pass; -} cairo_test_runner_t; - -typedef enum { - GE, - GT -} cairo_test_compare_op_t; - -static cairo_test_list_t *tests; - -static void CAIRO_BOILERPLATE_PRINTF_FORMAT(2,3) -_log (cairo_test_context_t *ctx, - const char *fmt, - ...) -{ - va_list ap; - - va_start (ap, fmt); - vprintf (fmt, ap); - va_end (ap); - - va_start (ap, fmt); - cairo_test_logv (ctx, fmt, ap); - va_end (ap); -} - -static cairo_test_list_t * -_list_prepend (cairo_test_list_t *head, const cairo_test_t *test) -{ - cairo_test_list_t *list; - - list = xmalloc (sizeof (cairo_test_list_t)); - list->test = test; - list->next = head; - head = list; - - return head; -} - -static cairo_test_list_t * -_list_reverse (cairo_test_list_t *head) -{ - cairo_test_list_t *list, *next; - - for (list = head, head = NULL; list != NULL; list = next) { - next = list->next; - list->next = head; - head = list; - } - - return head; -} - -static void -_list_free (cairo_test_list_t *list) -{ - while (list != NULL) { - cairo_test_list_t *next = list->next; - free (list); - list = next; - } -} - -static cairo_bool_t -is_running_under_debugger (void) -{ -#if HAVE_UNISTD_H && HAVE_LIBGEN_H && __linux__ - char buf[1024]; - - sprintf (buf, "/proc/%d/exe", getppid ()); - if (readlink (buf, buf, sizeof (buf)) != -1 && - strncmp (basename (buf), "gdb", 3) == 0) - { - return TRUE; - } -#endif - - if (RUNNING_ON_VALGRIND) - return TRUE; - - return FALSE; -} - -#if SHOULD_FORK -static cairo_test_status_t -_cairo_test_wait (pid_t pid) -{ - int exitcode; - - if (waitpid (pid, &exitcode, 0) != pid) - return CAIRO_TEST_CRASHED; - - if (WIFSIGNALED (exitcode)) { - switch (WTERMSIG (exitcode)) { - case SIGINT: -#if HAVE_RAISE - raise (SIGINT); -#endif - return CAIRO_TEST_UNTESTED; - default: - return CAIRO_TEST_CRASHED; - } - } - - return WEXITSTATUS (exitcode); -} -#endif - -static cairo_test_status_t -_cairo_test_runner_preamble (cairo_test_runner_t *runner, - cairo_test_context_t *ctx) -{ -#if SHOULD_FORK - if (! runner->foreground) { - pid_t pid; - - switch ((pid = fork ())) { - case -1: /* error */ - return CAIRO_TEST_UNTESTED; - - case 0: /* child */ - exit (ctx->test->preamble (ctx)); - - default: - return _cairo_test_wait (pid); - } - } -#endif - return ctx->test->preamble (ctx); -} - -static cairo_test_status_t -_cairo_test_runner_draw (cairo_test_runner_t *runner, - cairo_test_context_t *ctx, - const cairo_boilerplate_target_t *target, - cairo_bool_t similar, - int device_offset, int device_scale) -{ -#if SHOULD_FORK - if (! runner->foreground) { - pid_t pid; - - switch ((pid = fork ())) { - case -1: /* error */ - return CAIRO_TEST_UNTESTED; - - case 0: /* child */ - exit (_cairo_test_context_run_for_target (ctx, target, - similar, device_offset, device_scale)); - - default: - return _cairo_test_wait (pid); - } - } -#endif - return _cairo_test_context_run_for_target (ctx, target, - similar, device_offset, device_scale); -} - -static void -append_argv (int *argc, char ***argv, const char *str) -{ - int old_argc; - char **old_argv; - cairo_bool_t doit; - const char *s, *t; - int olen; - int len; - int i; - int args_to_add = 0; - - if (str == NULL) - return; - - old_argc = *argc; - old_argv = *argv; - - doit = FALSE; - do { - if (doit) - *argv = xmalloc (olen); - - olen = sizeof (char *) * (args_to_add + *argc); - for (i = 0; i < old_argc; i++) { - len = strlen (old_argv[i]) + 1; - if (doit) { - (*argv)[i] = (char *) *argv + olen; - memcpy ((*argv)[i], old_argv[i], len); - } - olen += len; - } - - s = str; - while ((t = strpbrk (s, " \t,:;")) != NULL) { - if (t - s) { - len = t - s; - if (doit) { - (*argv)[i] = (char *) *argv + olen; - memcpy ((*argv)[i], s, len); - (*argv)[i][len] = '\0'; - } else { - olen += sizeof (char *); - } - args_to_add++; - olen += len + 1; - i++; - } - s = t + 1; - } - if (*s != '\0') { - len = strlen (s) + 1; - if (doit) { - (*argv)[i] = (char *) *argv + olen; - memcpy ((*argv)[i], s, len); - } else { - olen += sizeof (char *); - } - args_to_add++; - olen += len; - i++; - } - } while (doit++ == FALSE); - *argc = i; -} - -static void -usage (const char *argv0) -{ - fprintf (stderr, - "Usage: %s [-afkxsl] [test-names|keywords ...]\n" - "\n" - "Run the cairo conformance test suite over the given tests (all by default)\n" - "The command-line arguments are interpreted as follows:\n" - "\n" - " -a all; run the full set of tests. By default the test suite\n" - " skips similar surface and device offset testing.\n" - " -f foreground; do not fork\n" - " -k match tests by keyword\n" - " -l list only; just list selected test case names without executing\n" - " -s include slow, long running tests\n" - " -x exit on first failure\n" - "\n" - "If test names are given they are used as matches either to a specific\n" - "test case or to a keyword, so a command such as\n" - "\"%s -k text\" can be used to run all text test cases, and\n" - "\"%s text-transform\" to run the individual case.\n", - argv0, argv0, argv0); -} - -static void -_parse_cmdline (cairo_test_runner_t *runner, int *argc, char **argv[]) -{ - int c; - - while (1) { - c = _cairo_getopt (*argc, *argv, ":afklsx"); - if (c == -1) - break; - - switch (c) { - case 'a': - runner->full_test = ~0; - break; - case 'f': - runner->foreground = TRUE; - break; - case 'k': - runner->keyword_match = TRUE; - break; - case 'l': - runner->list_only = TRUE; - break; - case 's': - runner->slow = TRUE; - break; - case 'x': - runner->exit_on_failure = TRUE; - break; - default: - fprintf (stderr, "Internal error: unhandled option: %c\n", c); - /* fall-through */ - case '?': - usage ((*argv)[0]); - exit (1); - } - } - - *argc -= optind; - *argv += optind; -} - -static void -_runner_init (cairo_test_runner_t *runner) -{ - cairo_test_init (&runner->base, "cairo-test-suite", "."); - - runner->passed = TRUE; - - runner->fails_preamble = NULL; - runner->crashes_preamble = NULL; - runner->errors_preamble = NULL; - - runner->fails_per_target = xcalloc (sizeof (cairo_test_list_t *), - runner->base.num_targets); - runner->crashes_per_target = xcalloc (sizeof (cairo_test_list_t *), - runner->base.num_targets); - runner->errors_per_target = xcalloc (sizeof (cairo_test_list_t *), - runner->base.num_targets); - runner->num_failed_per_target = xcalloc (sizeof (int), - runner->base.num_targets); - runner->num_error_per_target = xcalloc (sizeof (int), - runner->base.num_targets); - runner->num_crashed_per_target = xcalloc (sizeof (int), - runner->base.num_targets); -} - -static void -_runner_print_versions (cairo_test_runner_t *runner) -{ - _log (&runner->base, - "Compiled against cairo %s, running on %s.\n", - CAIRO_VERSION_STRING, cairo_version_string ()); - _log (&runner->base, - "Compiled against pixman %s, running on %s.\n", - PIXMAN_VERSION_STRING, pixman_version_string ()); - - fflush (runner->base.log_file); -} - -static void -_runner_print_summary (cairo_test_runner_t *runner) -{ - _log (&runner->base, - "%d Passed, %d Failed [%d crashed, %d expected], %d Skipped\n", - runner->num_passed, - - runner->num_failed + runner->num_crashed + runner->num_xfailed, - runner->num_crashed, - runner->num_xfailed, - - runner->num_skipped); -} - -static void -_runner_print_details (cairo_test_runner_t *runner) -{ - cairo_test_list_t *list; - unsigned int n; - - if (runner->crashes_preamble) { - int count = 0; - - for (list = runner->crashes_preamble; list != NULL; list = list->next) - count++; - - _log (&runner->base, "Preamble: %d crashed! -", count); - - for (list = runner->crashes_preamble; list != NULL; list = list->next) { - char *name = cairo_test_get_name (list->test); - _log (&runner->base, " %s", name); - free (name); - } - _log (&runner->base, "\n"); - } - if (runner->errors_preamble) { - int count = 0; - - for (list = runner->errors_preamble; list != NULL; list = list->next) - count++; - - _log (&runner->base, "Preamble: %d error -", count); - - for (list = runner->errors_preamble; list != NULL; list = list->next) { - char *name = cairo_test_get_name (list->test); - _log (&runner->base, " %s", name); - free (name); - } - _log (&runner->base, "\n"); - } - if (runner->fails_preamble) { - int count = 0; - - for (list = runner->fails_preamble; list != NULL; list = list->next) - count++; - - _log (&runner->base, "Preamble: %d failed -", count); - - for (list = runner->fails_preamble; list != NULL; list = list->next) { - char *name = cairo_test_get_name (list->test); - _log (&runner->base, " %s", name); - free (name); - } - _log (&runner->base, "\n"); - } - - for (n = 0; n < runner->base.num_targets; n++) { - const cairo_boilerplate_target_t *target; - - target = runner->base.targets_to_test[n]; - if (runner->num_crashed_per_target[n]) { - _log (&runner->base, "%s (%s): %d crashed! -", - target->name, - cairo_boilerplate_content_name (target->content), - runner->num_crashed_per_target[n]); - - for (list = runner->crashes_per_target[n]; - list != NULL; - list = list->next) - { - char *name = cairo_test_get_name (list->test); - _log (&runner->base, " %s", name); - free (name); - } - _log (&runner->base, "\n"); - } - if (runner->num_error_per_target[n]) { - _log (&runner->base, "%s (%s): %d error -", - target->name, - cairo_boilerplate_content_name (target->content), - runner->num_error_per_target[n]); - - for (list = runner->errors_per_target[n]; - list != NULL; - list = list->next) - { - char *name = cairo_test_get_name (list->test); - _log (&runner->base, " %s", name); - free (name); - } - _log (&runner->base, "\n"); - } - - if (runner->num_failed_per_target[n]) { - _log (&runner->base, "%s (%s): %d failed -", - target->name, - cairo_boilerplate_content_name (target->content), - runner->num_failed_per_target[n]); - - for (list = runner->fails_per_target[n]; - list != NULL; - list = list->next) - { - char *name = cairo_test_get_name (list->test); - _log (&runner->base, " %s", name); - free (name); - } - _log (&runner->base, "\n"); - } - } -} - -static void -_runner_print_results (cairo_test_runner_t *runner) -{ - _runner_print_summary (runner); - _runner_print_details (runner); - - if (! runner->passed && ! runner->num_crashed) { - _log (&runner->base, -"\n" -"Note: These failures may be due to external factors.\n" -"Please read test/README -- \"Getting the elusive zero failures\".\n"); - } -} - -static cairo_test_status_t -_runner_fini (cairo_test_runner_t *runner) -{ - unsigned int n; - - _list_free (runner->crashes_preamble); - _list_free (runner->errors_preamble); - _list_free (runner->fails_preamble); - - for (n = 0; n < runner->base.num_targets; n++) { - _list_free (runner->crashes_per_target[n]); - _list_free (runner->errors_per_target[n]); - _list_free (runner->fails_per_target[n]); - } - free (runner->crashes_per_target); - free (runner->errors_per_target); - free (runner->fails_per_target); - - free (runner->num_crashed_per_target); - free (runner->num_error_per_target); - free (runner->num_failed_per_target); - - cairo_test_fini (&runner->base); - - if (runner->force_pass) - return CAIRO_TEST_SUCCESS; - - return runner->num_failed + runner->num_crashed ? - CAIRO_TEST_FAILURE : - runner->num_passed + runner->num_xfailed ? - CAIRO_TEST_SUCCESS : CAIRO_TEST_UNTESTED; -} - -static cairo_bool_t -_version_compare (int a, cairo_test_compare_op_t op, int b) -{ - switch (op) { - case GT: return a > b; - case GE: return a >= b; - default: return FALSE; - } -} - - -static cairo_bool_t -_get_required_version (const char *str, - cairo_test_compare_op_t *op, - int *major, - int *minor, - int *micro) -{ - while (*str == ' ') - str++; - - if (strncmp (str, ">=", 2) == 0) { - *op = GE; - str += 2; - } else if (strncmp (str, ">", 1) == 0) { - *op = GT; - str += 1; - } else - return FALSE; - - while (*str == ' ') - str++; - - if (sscanf (str, "%d.%d.%d", major, minor, micro) != 3) { - *micro = 0; - if (sscanf (str, "%d.%d", major, minor) != 2) - return FALSE; - } - - return TRUE; -} - -static cairo_bool_t -_has_required_cairo_version (const char *str) -{ - cairo_test_compare_op_t op; - int major, minor, micro; - - if (! _get_required_version (str + 5 /* advance over "cairo" */, - &op, &major, &minor, µ)) - { - fprintf (stderr, "unrecognised cairo version requirement '%s'\n", str); - return FALSE; - } - - return _version_compare (cairo_version (), - op, - CAIRO_VERSION_ENCODE (major, minor, micro)); -} - -static cairo_bool_t -_has_required_ghostscript_version (const char *str) -{ -#if ! CAIRO_CAN_TEST_PS_SURFACE - return TRUE; -#endif - - str += 2; /* advance over "gs" */ - - return TRUE; -} - -static cairo_bool_t -_has_required_poppler_version (const char *str) -{ -#if ! CAIRO_CAN_TEST_PDF_SURFACE - return TRUE; -#endif - - str += 7; /* advance over "poppler" */ - - return TRUE; -} - -static cairo_bool_t -_has_required_rsvg_version (const char *str) -{ -#if ! CAIRO_CAN_TEST_SVG_SURFACE - return TRUE; -#endif - - str += 4; /* advance over "rsvg" */ - - return TRUE; -} - -#define TEST_SIMILAR 0x1 -#define TEST_OFFSET 0x2 -#define TEST_SCALE 0x4 -int -main (int argc, char **argv) -{ - cairo_test_runner_t runner; - cairo_test_list_t *test_list; - cairo_test_status_t *target_status; - unsigned int n, m, k; - char targets[4096]; - int len; - char *cairo_tests_env; - -#ifdef _MSC_VER - /* We don't want an assert dialog, we want stderr */ - _CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_FILE); - _CrtSetReportFile(_CRT_ERROR, _CRTDBG_FILE_STDERR); -#endif - - _cairo_test_runner_register_tests (); - tests = _list_reverse (tests); - - memset (&runner, 0, sizeof (runner)); - runner.num_device_offsets = 1; - runner.num_device_scales = 1; - - if (is_running_under_debugger ()) - runner.foreground = TRUE; - - if (getenv ("CAIRO_TEST_MODE")) { - const char *env = getenv ("CAIRO_TEST_MODE"); - - if (strstr (env, "full")) { - runner.full_test = ~0; - } - if (strstr (env, "similar")) { - runner.full_test |= TEST_SIMILAR; - } - if (strstr (env, "offset")) { - runner.full_test |= TEST_OFFSET; - } - if (strstr (env, "scale")) { - runner.full_test |= TEST_SCALE; - } - if (strstr (env, "foreground")) { - runner.foreground = TRUE; - } - if (strstr (env, "exit-on-failure")) { - runner.exit_on_failure = TRUE; - } - } - - if (getenv ("CAIRO_TEST_FORCE_PASS")) { - const char *env = getenv ("CAIRO_TEST_FORCE_PASS"); - - runner.force_pass = atoi (env); - } - - _parse_cmdline (&runner, &argc, &argv); - - cairo_tests_env = getenv("CAIRO_TESTS"); - append_argv (&argc, &argv, cairo_tests_env); - - if (runner.full_test & TEST_OFFSET) { - runner.num_device_offsets = 2; - } - if (runner.full_test & TEST_SCALE) { - runner.num_device_scales = 2; - } - - target_status = NULL; /* silence the compiler */ - if (! runner.list_only) { - _runner_init (&runner); - _runner_print_versions (&runner); - target_status = xmalloc (sizeof (cairo_test_status_t) * - runner.base.num_targets); - } - - for (test_list = tests; test_list != NULL; test_list = test_list->next) { - const cairo_test_t *test = test_list->test; - cairo_test_context_t ctx; - cairo_test_status_t status; - cairo_bool_t failed = FALSE, xfailed = FALSE, error = FALSE, crashed = FALSE, skipped = TRUE; - cairo_bool_t in_preamble = FALSE; - char *name = cairo_test_get_name (test); - int i; - - /* check for restricted runs */ - if (argc) { - cairo_bool_t found = FALSE; - const char *keywords = test->keywords; - - for (i = 0; i < argc; i++) { - const char *match = argv[i]; - cairo_bool_t invert = match[0] == '!'; - if (invert) - match++; - - if (runner.keyword_match) { - if (keywords != NULL && strstr (keywords, match) != NULL) { - found = ! invert; - break; - } else if (invert) { - found = TRUE; - } - } else { - /* exact match on test name */ - if (strcmp (name, match) == 0) { - found = ! invert; - break; - } else if (invert) { - found = TRUE; - } - } - } - - if (! found) { - free (name); - continue; - } - } - - /* check to see if external requirements match */ - if (test->requirements != NULL) { - const char *requirements = test->requirements; - const char *str; - - str = strstr (requirements, "slow"); - if (str != NULL && ! runner.slow) { - if (runner.list_only) - goto TEST_NEXT; - else - goto TEST_SKIPPED; - } - - str = strstr (requirements, "cairo"); - if (str != NULL && ! _has_required_cairo_version (str)) { - if (runner.list_only) - goto TEST_NEXT; - else - goto TEST_SKIPPED; - } - - str = strstr (requirements, "gs"); - if (str != NULL && ! _has_required_ghostscript_version (str)) { - if (runner.list_only) - goto TEST_NEXT; - else - goto TEST_SKIPPED; - } - - str = strstr (requirements, "poppler"); - if (str != NULL && ! _has_required_poppler_version (str)) { - if (runner.list_only) - goto TEST_NEXT; - else - goto TEST_SKIPPED; - } - - str = strstr (requirements, "rsvg"); - if (str != NULL && ! _has_required_rsvg_version (str)) { - if (runner.list_only) - goto TEST_NEXT; - else - goto TEST_SKIPPED; - } - } - - if (runner.list_only) { - printf ("%s ", name); - goto TEST_NEXT; - } - - _cairo_test_context_init_for_test (&ctx, &runner.base, test); - memset (target_status, 0, - sizeof (cairo_test_status_t) * ctx.num_targets); - - if (ctx.test->preamble != NULL) { - status = _cairo_test_runner_preamble (&runner, &ctx); - switch (status) { - case CAIRO_TEST_SUCCESS: - in_preamble = TRUE; - skipped = FALSE; - break; - - case CAIRO_TEST_XFAILURE: - in_preamble = TRUE; - xfailed = TRUE; - goto TEST_DONE; - - case CAIRO_TEST_NEW: - case CAIRO_TEST_FAILURE: - runner.fails_preamble = _list_prepend (runner.fails_preamble, - test); - in_preamble = TRUE; - failed = TRUE; - goto TEST_DONE; - - case CAIRO_TEST_ERROR: - runner.errors_preamble = _list_prepend (runner.errors_preamble, - test); - in_preamble = TRUE; - failed = TRUE; - goto TEST_DONE; - - case CAIRO_TEST_NO_MEMORY: - case CAIRO_TEST_CRASHED: - runner.crashes_preamble = _list_prepend (runner.crashes_preamble, - test); - in_preamble = TRUE; - failed = TRUE; - goto TEST_DONE; - - case CAIRO_TEST_UNTESTED: - goto TEST_DONE; - } - } - - if (ctx.test->draw == NULL) - goto TEST_DONE; - - for (n = 0; n < ctx.num_targets; n++) { - const cairo_boilerplate_target_t *target; - cairo_bool_t target_failed = FALSE, - target_xfailed = FALSE, - target_error = FALSE, - target_crashed = FALSE, - target_skipped = TRUE; - cairo_test_similar_t has_similar; - - target = ctx.targets_to_test[n]; - - has_similar = runner.full_test & TEST_SIMILAR ? - cairo_test_target_has_similar (&ctx, target) : - DIRECT; - for (m = 0; m < runner.num_device_offsets; m++) { - for (k = 0; k < runner.num_device_scales; k++) { - int dev_offset = m * 25; - int dev_scale = k + 1; - cairo_test_similar_t similar; - - for (similar = DIRECT; similar <= has_similar; similar++) { - status = _cairo_test_runner_draw (&runner, &ctx, target, - similar, dev_offset, dev_scale); - switch (status) { - case CAIRO_TEST_SUCCESS: - target_skipped = FALSE; - break; - case CAIRO_TEST_XFAILURE: - target_xfailed = TRUE; - break; - case CAIRO_TEST_NEW: - case CAIRO_TEST_FAILURE: - target_failed = TRUE; - break; - case CAIRO_TEST_ERROR: - target_error = TRUE; - break; - case CAIRO_TEST_NO_MEMORY: - case CAIRO_TEST_CRASHED: - target_crashed = TRUE; - break; - case CAIRO_TEST_UNTESTED: - break; - } - } - } - } - - if (target_crashed) { - target_status[n] = CAIRO_TEST_CRASHED; - runner.num_crashed_per_target[n]++; - runner.crashes_per_target[n] = _list_prepend (runner.crashes_per_target[n], - test); - crashed = TRUE; - } else if (target_error) { - target_status[n] = CAIRO_TEST_ERROR; - runner.num_error_per_target[n]++; - runner.errors_per_target[n] = _list_prepend (runner.errors_per_target[n], - test); - - error = TRUE; - } else if (target_failed) { - target_status[n] = CAIRO_TEST_FAILURE; - runner.num_failed_per_target[n]++; - runner.fails_per_target[n] = _list_prepend (runner.fails_per_target[n], - test); - - failed = TRUE; - } else if (target_xfailed) { - target_status[n] = CAIRO_TEST_XFAILURE; - xfailed = TRUE; - } else if (target_skipped) { - target_status[n] = CAIRO_TEST_UNTESTED; - } else { - target_status[n] = CAIRO_TEST_SUCCESS; - skipped = FALSE; - } - } - - TEST_DONE: - cairo_test_fini (&ctx); - TEST_SKIPPED: - targets[0] = '\0'; - if (crashed) { - if (! in_preamble) { - len = 0; - for (n = 0 ; n < runner.base.num_targets; n++) { - if (target_status[n] == CAIRO_TEST_CRASHED) { - if (strstr (targets, - runner.base.targets_to_test[n]->name) == NULL) - { - len += snprintf (targets + len, sizeof (targets) - len, - "%s, ", - runner.base.targets_to_test[n]->name); - } - } - } - targets[len-2] = '\0'; - _log (&runner.base, "\n%s: CRASH! (%s)\n", name, targets); - } else { - _log (&runner.base, "\n%s: CRASH!\n", name); - } - runner.num_crashed++; - runner.passed = FALSE; - } else if (error) { - if (! in_preamble) { - len = 0; - for (n = 0 ; n < runner.base.num_targets; n++) { - if (target_status[n] == CAIRO_TEST_ERROR) { - if (strstr (targets, - runner.base.targets_to_test[n]->name) == NULL) - { - len += snprintf (targets + len, - sizeof (targets) - len, - "%s, ", - runner.base.targets_to_test[n]->name); - } - } - } - targets[len-2] = '\0'; - _log (&runner.base, "%s: ERROR (%s)\n", name, targets); - } else { - _log (&runner.base, "%s: ERROR\n", name); - } - runner.num_error++; - runner.passed = FALSE; - } else if (failed) { - if (! in_preamble) { - len = 0; - for (n = 0 ; n < runner.base.num_targets; n++) { - if (target_status[n] == CAIRO_TEST_FAILURE) { - if (strstr (targets, - runner.base.targets_to_test[n]->name) == NULL) - { - len += snprintf (targets + len, - sizeof (targets) - len, - "%s, ", - runner.base.targets_to_test[n]->name); - } - } - } - targets[len-2] = '\0'; - _log (&runner.base, "%s: FAIL (%s)\n", name, targets); - } else { - _log (&runner.base, "%s: FAIL\n", name); - } - runner.num_failed++; - runner.passed = FALSE; - } else if (xfailed) { - _log (&runner.base, "%s: XFAIL\n", name); - runner.num_xfailed++; - } else if (skipped) { - _log (&runner.base, "%s: UNTESTED\n", name); - runner.num_skipped++; - } else { - _log (&runner.base, "%s: PASS\n", name); - runner.num_passed++; - } - fflush (runner.base.log_file); - - TEST_NEXT: - free (name); - if (runner.exit_on_failure && ! runner.passed) - break; - - } - - if (cairo_tests_env) - free(argv); - - if (runner.list_only) { - printf ("\n"); - return CAIRO_TEST_SUCCESS; - } - - for (n = 0 ; n < runner.base.num_targets; n++) { - runner.crashes_per_target[n] = _list_reverse (runner.crashes_per_target[n]); - runner.errors_per_target[n] = _list_reverse (runner.errors_per_target[n]); - runner.fails_per_target[n] = _list_reverse (runner.fails_per_target[n]); - } - - _runner_print_results (&runner); - - _list_free (tests); - free (target_status); - return _runner_fini (&runner); -} - -void -cairo_test_register (cairo_test_t *test) -{ - tests = _list_prepend (tests, test); -} diff --git a/test/cairo-test-trace.c b/test/cairo-test-trace.c deleted file mode 100644 index 5badc43..0000000 --- a/test/cairo-test-trace.c +++ /dev/null @@ -1,1780 +0,0 @@ -/* - * Copyright © 2009 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * the authors not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. The authors make no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * THE AUTHORS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Authors: Chris Wilson - */ - -/* - * The basic idea is that we feed the trace to multiple backends in parallel - * and compare the output at the end of each context (based on the premise - * that contexts demarcate expose events, or their logical equivalents) with - * that of the image[1] backend. Each backend is executed in a separate - * process, for robustness and to isolate the global cairo state, with the - * image data residing in shared memory and synchronising over a socket. - * - * [1] Should be reference implementation, currently the image backend is - * considered to be the reference for all other backends. - */ - -/* XXX Can't directly compare fills using spans versus trapezoidation, - * i.e. xlib vs image. Gah, kinda renders this whole scheme moot. - * How about reference platforms? - * E.g. accelerated xlib driver vs Xvfb? - * - * boilerplate->create_reference_surface()? - * boilerplate->reference->create_surface()? - * So for each backend spawn two processes, a reference and xlib - * (obviously minimising the number of reference processes when possible) - */ - -/* - * XXX Handle show-page as well as cairo_destroy()? Though arguably that is - * only relevant for paginated backends which is currently outside the - * scope of this test. - */ - -#define _GNU_SOURCE 1 /* getline() */ - -#include "cairo-test.h" -#include "buffer-diff.h" - -#include "cairo-boilerplate-getopt.h" -#include -#include "cairo-missing.h" - -#if CAIRO_HAS_SCRIPT_SURFACE -#include -#endif - -/* For basename */ -#ifdef HAVE_LIBGEN_H -#include -#endif -#include /* isspace() */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#if CAIRO_HAS_REAL_PTHREAD -#include -#endif - -#if HAVE_FCFINI -#include -#endif - -#ifndef MAP_NORESERVE -#define MAP_NORESERVE 0 -#endif - -#define DEBUG 0 - -#define ignore_image_differences 0 /* XXX make me a cmdline option! */ -#define write_results 1 -#define write_traces 1 - -#define DATA_SIZE (256 << 20) -#define SHM_PATH_XXX "/.shmem-cairo-trace" - -typedef struct _test_trace { - /* Options from command-line */ - cairo_bool_t list_only; - char **names; - unsigned int num_names; - char **exclude_names; - unsigned int num_exclude_names; - - /* Stuff used internally */ - const cairo_boilerplate_target_t **targets; - int num_targets; -} test_trace_t; - -typedef struct _test_runner { - const char *name; - cairo_surface_t *surface; - void *closure; - uint8_t *base; - const char *trace; - pid_t pid; - int sk; - cairo_bool_t is_recording; - - cairo_script_interpreter_t *csi; - struct context_closure { - struct context_closure *next; - unsigned long id; - unsigned long start_line; - unsigned long end_line; - cairo_t *context; - cairo_surface_t *surface; - } *contexts; - - unsigned long context_id; -} test_runner_t; - -struct slave { - pid_t pid; - int fd; - unsigned long image_serial; - unsigned long image_ready; - unsigned long start_line; - unsigned long end_line; - cairo_surface_t *image; - long width, height; - cairo_surface_t *difference; - buffer_diff_result_t result; - const cairo_boilerplate_target_t *target; - const struct slave *reference; - cairo_bool_t is_recording; -}; - -struct request_image { - unsigned long id; - unsigned long start_line; - unsigned long end_line; - cairo_format_t format; - long width; - long height; - long stride; -}; - -struct surface_tag { - long width, height; -}; -static const cairo_user_data_key_t surface_tag; - -#define TARGET_NAME(T) ((T) ? (T)->name : "recording") - -#if CAIRO_HAS_REAL_PTHREAD -#define tr_die(t) t->is_recording ? pthread_exit(NULL) : exit(1) -#else -#define tr_die(t) exit(1) -#endif - -static cairo_bool_t -writen (int fd, const void *ptr, int len) -{ -#if 0 - const uint8_t *data = ptr; - while (len) { - int ret = write (fd, data, len); - if (ret < 0) { - switch (errno) { - case EAGAIN: - case EINTR: - continue; - default: - return FALSE; - } - } else if (ret == 0) { - return FALSE; - } else { - data += ret; - len -= ret; - } - } - return TRUE; -#else - int ret = send (fd, ptr, len, 0); - return ret == len; -#endif -} - -static cairo_bool_t -readn (int fd, void *ptr, int len) -{ -#if 0 - uint8_t *data = ptr; - while (len) { - int ret = read (fd, data, len); - if (ret < 0) { - switch (errno) { - case EAGAIN: - case EINTR: - continue; - default: - return FALSE; - } - } else if (ret == 0) { - return FALSE; - } else { - data += ret; - len -= ret; - } - } - return TRUE; -#else - int ret = recv (fd, ptr, len, MSG_WAITALL); - return ret == len; -#endif -} - -static cairo_format_t -format_for_content (cairo_content_t content) -{ - switch (content) { - case CAIRO_CONTENT_ALPHA: - return CAIRO_FORMAT_A8; - case CAIRO_CONTENT_COLOR: - return CAIRO_FORMAT_RGB24; - default: - case CAIRO_CONTENT_COLOR_ALPHA: - return CAIRO_FORMAT_ARGB32; - } -} - -static void -send_recording_surface (test_runner_t *tr, - int width, int height, - struct context_closure *closure) -{ -#if CAIRO_HAS_REAL_PTHREAD - const struct request_image rq = { - closure->id, - closure->start_line, - closure->end_line, - -1, - width, height, - (long) closure->surface, - }; - unsigned long offset; - unsigned long serial; - - if (DEBUG > 1) { - printf ("send-recording-surface: %lu [%lu, %lu]\n", - closure->id, - closure->start_line, - closure->end_line); - } - writen (tr->sk, &rq, sizeof (rq)); - readn (tr->sk, &offset, sizeof (offset)); - - /* signal completion */ - writen (tr->sk, &closure->id, sizeof (closure->id)); - - /* wait for image check */ - serial = 0; - readn (tr->sk, &serial, sizeof (serial)); - if (DEBUG > 1) { - printf ("send-recording-surface: serial: %lu\n", serial); - } - if (serial != closure->id) - pthread_exit (NULL); -#else - exit (1); -#endif -} - -static void * -request_image (test_runner_t *tr, - struct context_closure *closure, - cairo_format_t format, - int width, int height, int stride) -{ - const struct request_image rq = { - closure->id, - closure->start_line, - closure->end_line, - format, width, height, stride - }; - unsigned long offset = -1; - - assert (format != (cairo_format_t) -1); - - writen (tr->sk, &rq, sizeof (rq)); - readn (tr->sk, &offset, sizeof (offset)); - if (offset == (unsigned long) -1) - return NULL; - - return tr->base + offset; -} - -static void -send_surface (test_runner_t *tr, - struct context_closure *closure) -{ - cairo_surface_t *source = closure->surface; - cairo_surface_t *image; - cairo_format_t format = (cairo_format_t) -1; - cairo_t *cr; - int width, height, stride; - void *data; - unsigned long serial; - - if (DEBUG > 1) { - printf ("send-surface: '%s', is-recording? %d\n", - tr->name, tr->is_recording); - } - - if (cairo_surface_get_type (source) == CAIRO_SURFACE_TYPE_IMAGE) { - width = cairo_image_surface_get_width (source); - height = cairo_image_surface_get_height (source); - format = cairo_image_surface_get_format (source); - } else { - struct surface_tag *tag; - - tag = cairo_surface_get_user_data (source, &surface_tag); - if (tag != NULL) { - width = tag->width; - height = tag->height; - } else { - double x0, x1, y0, y1; - - /* presumably created using cairo_surface_create_similar() */ - cr = cairo_create (source); - cairo_clip_extents (cr, &x0, &y0, &x1, &y1); - cairo_destroy (cr); - - tag = xmalloc (sizeof (*tag)); - width = tag->width = x1 - x0; - height = tag->height = y1 - y0; - - if (cairo_surface_set_user_data (source, &surface_tag, tag, free)) - tr_die (tr); - } - } - - if (tr->is_recording) { - send_recording_surface (tr, width, height, closure); - return; - } - - if (format == (cairo_format_t) -1) - format = format_for_content (cairo_surface_get_content (source)); - - stride = cairo_format_stride_for_width (format, width); - - data = request_image (tr, closure, format, width, height, stride); - if (data == NULL) - tr_die (tr); - - image = cairo_image_surface_create_for_data (data, - format, - width, height, - stride); - cr = cairo_create (image); - cairo_surface_destroy (image); - - cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); - cairo_set_source_surface (cr, source, 0, 0); - cairo_paint (cr); - cairo_destroy (cr); - - /* signal completion */ - writen (tr->sk, &closure->id, sizeof (closure->id)); - - /* wait for image check */ - serial = 0; - readn (tr->sk, &serial, sizeof (serial)); - if (serial != closure->id) - tr_die (tr); -} - -static cairo_surface_t * -_surface_create (void *closure, - cairo_content_t content, - double width, double height, - long uid) -{ - test_runner_t *tr = closure; - cairo_surface_t *surface; - - surface = cairo_surface_create_similar (tr->surface, - content, width, height); - if (cairo_surface_get_type (surface) != CAIRO_SURFACE_TYPE_IMAGE) { - struct surface_tag *tag; - - tag = xmalloc (sizeof (*tag)); - tag->width = width; - tag->height = height; - if (cairo_surface_set_user_data (surface, &surface_tag, tag, free)) - tr_die (tr); - } - - return surface; -} - -static cairo_t * -_context_create (void *closure, cairo_surface_t *surface) -{ - test_runner_t *tr = closure; - struct context_closure *l; - - if (DEBUG) { - fprintf (stderr, "%s: starting context %lu on line %d\n", - tr->name ? tr->name : "recording" , - tr->context_id + 1, - cairo_script_interpreter_get_line_number (tr->csi)); - } - - l = xmalloc (sizeof (*l)); - l->next = tr->contexts; - l->start_line = cairo_script_interpreter_get_line_number (tr->csi); - l->end_line = l->start_line; - l->context = cairo_create (surface); - l->surface = cairo_surface_reference (surface); - l->id = ++tr->context_id; - if (l->id == 0) - l->id = ++tr->context_id; - tr->contexts = l; - - return l->context; -} - -static void -_context_destroy (void *closure, void *ptr) -{ - test_runner_t *tr = closure; - struct context_closure *l, **prev = &tr->contexts; - - while ((l = *prev) != NULL) { - if (l->context == ptr) { - if (DEBUG) { - fprintf (stderr, "%s: context %lu complete on line %d\n", - tr->name ? tr->name : "recording" , - tr->context_id, - cairo_script_interpreter_get_line_number (tr->csi)); - } - l->end_line = - cairo_script_interpreter_get_line_number (tr->csi); - if (cairo_surface_status (l->surface) == CAIRO_STATUS_SUCCESS) { - send_surface (tr, l); - } else { - fprintf (stderr, "%s: error during replay, line %lu: %s!\n", - tr->name, - l->end_line, - cairo_status_to_string (cairo_surface_status (l->surface))); - tr_die (tr); - } - - cairo_surface_destroy (l->surface); - *prev = l->next; - free (l); - return; - } - prev = &l->next; - } -} - -static void -execute (test_runner_t *tr) -{ - const cairo_script_interpreter_hooks_t hooks = { - .closure = tr, - .surface_create = _surface_create, - .context_create = _context_create, - .context_destroy = _context_destroy, - }; - pid_t ack; - - tr->csi = cairo_script_interpreter_create (); - cairo_script_interpreter_install_hooks (tr->csi, &hooks); - - ack = -1; - readn (tr->sk, &ack, sizeof (ack)); - if (ack != tr->pid) - tr_die (tr); - - cairo_script_interpreter_run (tr->csi, tr->trace); - - cairo_script_interpreter_finish (tr->csi); - if (cairo_script_interpreter_destroy (tr->csi)) - tr_die (tr); -} - -static int -spawn_socket (const char *socket_path, pid_t pid) -{ - struct sockaddr_un addr; - int sk; - - sk = socket (PF_UNIX, SOCK_STREAM, 0); - if (sk == -1) - return -1; - - memset (&addr, 0, sizeof (addr)); - addr.sun_family = AF_UNIX; - strcpy (addr.sun_path, socket_path); - - if (connect (sk, (struct sockaddr *) &addr, sizeof (addr)) == -1) - return -1; - - if (! writen (sk, &pid, sizeof (pid))) - return -1; - - return sk; -} - -static void * -spawn_shm (const char *shm_path) -{ - void *base; - int fd; - - fd = shm_open (shm_path, O_RDWR, 0); - if (fd == -1) - return MAP_FAILED; - - base = mmap (NULL, DATA_SIZE, - PROT_READ | PROT_WRITE, - MAP_SHARED | MAP_NORESERVE, - fd, 0); - close (fd); - - return base; -} - -static int -spawn_target (const char *socket_path, - const char *shm_path, - const cairo_boilerplate_target_t *target, - const char *trace) -{ - test_runner_t tr; - pid_t pid; - - if (DEBUG) - printf ("Spawning slave '%s' for %s\n", target->name, trace); - - pid = fork (); - if (pid != 0) - return pid; - - tr.is_recording = FALSE; - tr.pid = getpid (); - - tr.sk = spawn_socket (socket_path, tr.pid); - if (tr.sk == -1) { - fprintf (stderr, "%s: Failed to open socket.\n", - target->name); - exit (-1); - } - - tr.base = spawn_shm (shm_path); - if (tr.base == MAP_FAILED) { - fprintf (stderr, "%s: Failed to map shared memory segment.\n", - target->name); - exit (-1); - } - - tr.name = target->name; - tr.contexts = NULL; - tr.context_id = 0; - tr.trace = trace; - - tr.surface = target->create_surface (NULL, - target->content, - 1, 1, - 1, 1, - CAIRO_BOILERPLATE_MODE_TEST, - &tr.closure); - if (tr.surface == NULL) { - fprintf (stderr, - "%s: Failed to create target surface.\n", - target->name); - exit (-1); - } - - execute (&tr); - - cairo_surface_destroy (tr.surface); - - if (target->cleanup) - target->cleanup (tr.closure); - - close (tr.sk); - munmap (tr.base, DATA_SIZE); - - exit (0); -} - -#if CAIRO_HAS_REAL_PTHREAD -static void -cleanup_recorder (void *arg) -{ - test_runner_t *tr = arg; - - cairo_surface_finish (tr->surface); - cairo_surface_destroy (tr->surface); - - close (tr->sk); - free (tr); -} - -static void * -record (void *arg) -{ - test_runner_t *tr = arg; - - pthread_cleanup_push (cleanup_recorder, tr); - execute (tr); - pthread_cleanup_pop (TRUE); - - return NULL; -} - -/* The recorder is special: - * 1. It doesn't generate an image, but keeps an in-memory trace to - * reconstruct any surface. - * 2. Runs in the same process, but separate thread. - */ -static pid_t -spawn_recorder (const char *socket_path, const char *trace, test_runner_t **out) -{ - test_runner_t *tr; - pthread_t id; - pthread_attr_t attr; - pid_t pid = getpid (); - - if (DEBUG) - printf ("Spawning recorder for %s\n", trace); - - tr = malloc (sizeof (*tr)); - if (tr == NULL) - return -1; - - tr->is_recording = TRUE; - tr->pid = pid; - tr->sk = spawn_socket (socket_path, tr->pid); - if (tr->sk == -1) { - free (tr); - return -1; - } - - tr->base = NULL; - tr->name = NULL; - tr->contexts = NULL; - tr->context_id = 0; - tr->trace = trace; - - tr->surface = cairo_recording_surface_create (CAIRO_CONTENT_COLOR_ALPHA, - NULL); - if (tr->surface == NULL) { - cleanup_recorder (tr); - return -1; - } - - pthread_attr_init (&attr); - pthread_attr_setdetachstate (&attr, TRUE); - if (pthread_create (&id, &attr, record, tr) < 0) { - pthread_attr_destroy (&attr); - cleanup_recorder (tr); - return -1; - } - pthread_attr_destroy (&attr); - - - *out = tr; - return pid; -} -#endif - -/* XXX imagediff - is the extra expense worth it? */ -static cairo_bool_t -matches_reference (struct slave *slave) -{ - cairo_surface_t *a, *b; - - a = slave->image; - b = slave->reference->image; - - if (a == b) - return TRUE; - - if (a == NULL || b == NULL) - return FALSE; - - if (cairo_surface_status (a) || cairo_surface_status (b)) - return FALSE; - - if (cairo_surface_get_type (a) != cairo_surface_get_type (b)) - return FALSE; - - if (cairo_image_surface_get_format (a) != cairo_image_surface_get_format (b)) - return FALSE; - - if (cairo_image_surface_get_width (a) != cairo_image_surface_get_width (b)) - return FALSE; - - if (cairo_image_surface_get_height (a) != cairo_image_surface_get_height (b)) - return FALSE; - - if (cairo_image_surface_get_stride (a) != cairo_image_surface_get_stride (b)) - return FALSE; - - if (FALSE && cairo_surface_get_content (a) & CAIRO_CONTENT_COLOR) { - cairo_surface_t *diff; - int width, height, stride, size; - unsigned char *data; - cairo_status_t status; - - width = cairo_image_surface_get_width (a); - height = cairo_image_surface_get_height (a); - stride = cairo_image_surface_get_stride (a); - size = height * stride * 4; - data = malloc (size); - if (data == NULL) - return FALSE; - - diff = cairo_image_surface_create_for_data (data, - cairo_image_surface_get_format (a), - width, height, stride); - cairo_surface_set_user_data (diff, (cairo_user_data_key_t *) diff, - data, free); - - status = image_diff (NULL, a, b, diff, &slave->result); - if (status) { - cairo_surface_destroy (diff); - return FALSE; - } - - if (image_diff_is_failure (&slave->result, slave->target->error_tolerance)) { - slave->difference = diff; - return FALSE; - } else { - cairo_surface_destroy (diff); - return TRUE; - } - } else { - int width, height, stride; - const uint8_t *aa, *bb; - int x, y; - - width = cairo_image_surface_get_width (a); - height = cairo_image_surface_get_height (a); - stride = cairo_image_surface_get_stride (a); - - aa = cairo_image_surface_get_data (a); - bb = cairo_image_surface_get_data (b); - switch (cairo_image_surface_get_format (a)) { - case CAIRO_FORMAT_ARGB32: - for (y = 0; y < height; y++) { - const uint32_t *ua = (uint32_t *) aa; - const uint32_t *ub = (uint32_t *) bb; - for (x = 0; x < width; x++) { - if (ua[x] != ub[x]) { - int channel; - - for (channel = 0; channel < 4; channel++) { - unsigned va, vb, diff; - - va = (ua[x] >> (channel*8)) & 0xff; - vb = (ub[x] >> (channel*8)) & 0xff; - diff = abs (va - vb); - if (diff > slave->target->error_tolerance) - return FALSE; - } - } - } - aa += stride; - bb += stride; - } - break; - - case CAIRO_FORMAT_RGB24: - for (y = 0; y < height; y++) { - const uint32_t *ua = (uint32_t *) aa; - const uint32_t *ub = (uint32_t *) bb; - for (x = 0; x < width; x++) { - if ((ua[x] & 0x00ffffff) != (ub[x] & 0x00ffffff)) { - int channel; - - for (channel = 0; channel < 3; channel++) { - unsigned va, vb, diff; - - va = (ua[x] >> (channel*8)) & 0xff; - vb = (ub[x] >> (channel*8)) & 0xff; - diff = abs (va - vb); - if (diff > slave->target->error_tolerance) - return FALSE; - } - } - } - aa += stride; - bb += stride; - } - break; - - case CAIRO_FORMAT_A8: - for (y = 0; y < height; y++) { - for (x = 0; x < width; x++) { - if (aa[x] != bb[x]) { - unsigned diff = abs (aa[x] - bb[x]); - if (diff > slave->target->error_tolerance) - return FALSE; - } - } - aa += stride; - bb += stride; - } - break; - - case CAIRO_FORMAT_A1: - width /= 8; - for (y = 0; y < height; y++) { - if (memcmp (aa, bb, width)) - return FALSE; - aa += stride; - bb += stride; - } - break; - - case CAIRO_FORMAT_RGB30: - case CAIRO_FORMAT_RGB16_565: - case CAIRO_FORMAT_INVALID: - assert (0); - } - - return TRUE; - } -} - -static cairo_bool_t -check_images (struct slave *slaves, int num_slaves) -{ - int n; - - if (ignore_image_differences) - return TRUE; - - for (n = 0; n < num_slaves; n++) { - if (slaves[n].reference == NULL) - continue; - - if (! matches_reference (&slaves[n])) - return FALSE; - } - - return TRUE; -} - -static void -write_images (const char *trace, struct slave *slave, int num_slaves) -{ - while (num_slaves--) { - if (slave->image != NULL && ! slave->is_recording) { - char *filename; - - xasprintf (&filename, "%s-%s-fail.png", - trace, slave->target->name); - cairo_surface_write_to_png (slave->image, filename); - free (filename); - - if (slave->difference) { - xasprintf (&filename, "%s-%s-diff.png", - trace, slave->target->name); - cairo_surface_write_to_png (slave->difference, filename); - free (filename); - } - } - - slave++; - } -} - -static void -write_result (const char *trace, struct slave *slave) -{ - static int index; - char *filename; - - xasprintf (&filename, "%s-%s-pass-%d-%d-%d.png", - trace, slave->target->name, ++index, - slave->start_line, slave->end_line); - cairo_surface_write_to_png (slave->image, filename); - free (filename); -} - -static void -write_trace (const char *trace, const char *id, struct slave *slave) -{ -#if CAIRO_HAS_SCRIPT_SURFACE - cairo_device_t *script; - char *filename; - - assert (slave->is_recording); - - xasprintf (&filename, "%s-%s.trace", trace, id); - - script = cairo_script_create (filename); - cairo_script_from_recording_surface (script, slave->image); - cairo_device_destroy (script); - - free (filename); -#endif -} - -static void -dump_traces (test_runner_t *tr, - const char *trace, - const char *target, - const char *fail) -{ -#if CAIRO_HAS_SCRIPT_SURFACE - struct context_closure *c; - - for (c = tr->contexts; c; c = c->next) { - cairo_device_t *script; - char *filename; - - xasprintf (&filename, "%s-%s-%s.%lu.trace", - trace, target, fail, c->start_line); - - script = cairo_script_create (filename); - cairo_script_from_recording_surface (script, c->surface); - cairo_device_destroy (script); - - free (filename); - } -#endif -} - -static unsigned long -allocate_image_for_slave (uint8_t *base, - unsigned long offset, - struct slave *slave) -{ - struct request_image rq; - int size; - uint8_t *data; - - assert (slave->image == NULL); - - readn (slave->fd, &rq, sizeof (rq)); - slave->image_serial = rq.id; - slave->start_line = rq.start_line; - slave->end_line = rq.end_line; - - slave->width = rq.width; - slave->height = rq.height; - - if (DEBUG > 1) { - printf ("allocate-image-for-slave: %s %lu [%lu, %lu] %ldx%ld stride=%lu => %lu, is-recording? %d\n", - TARGET_NAME (slave->target), - slave->image_serial, - slave->start_line, - slave->end_line, - slave->width, - slave->height, - rq.stride, - offset, - slave->is_recording); - } - - if (slave->is_recording) { - /* special communication with recording-surface thread */ - slave->image = cairo_surface_reference ((cairo_surface_t *) rq.stride); - } else { - size = rq.height * rq.stride; - size = (size + 4095) & -4096; - data = base + offset; - offset += size; - assert (offset <= DATA_SIZE); - - slave->image = cairo_image_surface_create_for_data (data, rq.format, - rq.width, rq.height, - rq.stride); - } - - return offset; -} - -struct error_info { - unsigned long context_id; - unsigned long start_line; - unsigned long end_line; -}; - -static cairo_bool_t -test_run (void *base, - int sk, - const char *trace, - struct slave *slaves, - int num_slaves, - struct error_info *error) -{ - struct pollfd *pfd; - int npfd, cnt, n, i; - int completion, err = 0; - cairo_bool_t ret = FALSE; - unsigned long image; - - if (DEBUG) { - printf ("Running trace '%s' over %d slaves\n", - trace, num_slaves); - } - - pfd = xcalloc (num_slaves+1, sizeof (*pfd)); - - pfd[0].fd = sk; - pfd[0].events = POLLIN; - npfd = 1; - - completion = 0; - image = 0; - while ((cnt = poll (pfd, npfd, -1)) > 0) { - if (pfd[0].revents) { - int fd; - - while ((fd = accept (sk, NULL, NULL)) != -1) { - pid_t pid; - - readn (fd, &pid, sizeof (pid)); - for (n = 0; n < num_slaves; n++) { - if (slaves[n].pid == pid) { - slaves[n].fd = fd; - break; - } - } - if (n == num_slaves) { - if (DEBUG) - printf ("unknown slave pid\n"); - goto out; - } - - pfd[npfd].fd = fd; - pfd[npfd].events = POLLIN; - npfd++; - - if (! writen (fd, &pid, sizeof (pid))) - goto out; - } - cnt--; - } - - for (n = 1; n < npfd && cnt; n++) { - if (! pfd[n].revents) - continue; - - if (pfd[n].revents & POLLHUP) { - pfd[n].events = pfd[n].revents = 0; - completion++; - continue; - } - - for (i = 0; i < num_slaves; i++) { - if (slaves[i].fd == pfd[n].fd) { - /* Communication with the slave is done in three phases, - * and we do each pass synchronously. - * - * 1. The slave requests an image buffer, which we - * allocate and then return to the slave the offset into - * the shared memory segment. - * - * 2. The slave indicates that it has finished writing - * into the shared image buffer. The slave now waits - * for the server to collate all the image data - thereby - * throttling the slaves. - * - * 3. After all slaves have finished writing their images, - * we compare them all against the reference image and, - * if satisfied, send an acknowledgement to all slaves. - */ - if (slaves[i].image_serial == 0) { - unsigned long offset; - - image = - allocate_image_for_slave (base, - offset = image, - &slaves[i]); - if (! writen (pfd[n].fd, &offset, sizeof (offset))) { - pfd[n].events = pfd[n].revents = 0; - err = 1; - completion++; - continue; - } - } else { - readn (pfd[n].fd, - &slaves[i].image_ready, - sizeof (slaves[i].image_ready)); - if (DEBUG) { - printf ("slave '%s' reports completion on %lu (expecting %lu)\n", - TARGET_NAME (slaves[i].target), - slaves[i].image_ready, - slaves[i].image_serial); - } - if (slaves[i].image_ready != slaves[i].image_serial) { - pfd[n].events = pfd[n].revents = 0; - err = 1; - completion++; - continue; - } - - /* Can anyone spell 'P·E·D·A·N·T'? */ - if (! slaves[i].is_recording) - cairo_surface_mark_dirty (slaves[i].image); - completion++; - } - - break; - } - } - - cnt--; - } - - if (completion >= num_slaves) { - if (err) { - if (DEBUG > 1) - printf ("error detected\n"); - goto out; - } - - if (DEBUG > 1) { - printf ("all saves report completion\n"); - } - if (slaves[0].end_line >= slaves[0].start_line && - ! check_images (slaves, num_slaves)) { - error->context_id = slaves[0].image_serial; - error->start_line = slaves[0].start_line; - error->end_line = slaves[0].end_line; - - if (DEBUG) { - printf ("check_images failed: %lu, [%lu, %lu]\n", - slaves[0].image_serial, - slaves[0].start_line, - slaves[0].end_line); - } - - write_images (trace, slaves, num_slaves); - - if (slaves[0].is_recording) - write_trace (trace, "fail", &slaves[0]); - - goto out; - } - - if (write_results) write_result (trace, &slaves[1]); - if (write_traces && slaves[0].is_recording) { - char buf[80]; - snprintf (buf, sizeof (buf), "%d", slaves[0].image_serial); - write_trace (trace, buf, &slaves[0]); - } - - /* ack */ - for (i = 0; i < num_slaves; i++) { - cairo_surface_destroy (slaves[i].image); - slaves[i].image = NULL; - - if (DEBUG > 1) { - printf ("sending continuation to '%s'\n", - TARGET_NAME (slaves[i].target)); - } - if (! writen (slaves[i].fd, - &slaves[i].image_serial, - sizeof (slaves[i].image_serial))) - { - goto out; - } - - slaves[i].image_serial = 0; - slaves[i].image_ready = 0; - } - - completion = 0; - image = 0; - } - } -done: - ret = TRUE; - -out: - if (DEBUG) { - printf ("run complete: %d\n", ret); - } - - for (n = 0; n < num_slaves; n++) { - if (slaves[n].fd != -1) - close (slaves[n].fd); - - if (slaves[n].image == NULL) - continue; - - cairo_surface_destroy (slaves[n].image); - slaves[n].image = NULL; - - cairo_surface_destroy (slaves[n].difference); - slaves[n].difference = NULL; - - slaves[n].image_serial = 0; - slaves[n].image_ready = 0; - } - - free (pfd); - - return ret; -} - -static int -server_socket (const char *socket_path) -{ - long flags; - struct sockaddr_un addr; - int sk; - - sk = socket (PF_UNIX, SOCK_STREAM, 0); - if (sk == -1) - return -1; - - memset (&addr, 0, sizeof (addr)); - addr.sun_family = AF_UNIX; - strcpy (addr.sun_path, socket_path); - if (bind (sk, (struct sockaddr *) &addr, sizeof (addr)) == -1) { - close (sk); - return -1; - } - - flags = fcntl (sk, F_GETFL); - if (flags == -1 || fcntl (sk, F_SETFL, flags | O_NONBLOCK) == -1) { - close (sk); - return -1; - } - - if (listen (sk, 5) == -1) { - close (sk); - return -1; - } - - return sk; -} - -static int -server_shm (const char *shm_path) -{ - int fd; - - fd = shm_open (shm_path, O_RDWR | O_EXCL | O_CREAT, 0777); - if (fd == -1) - return -1; - - if (ftruncate (fd, DATA_SIZE) == -1) { - close (fd); - return -1; - } - - return fd; -} - -static cairo_bool_t -_test_trace (test_trace_t *test, - const char *trace, - const char *name, - struct error_info *error) -{ - const char *shm_path = SHM_PATH_XXX; - const cairo_boilerplate_target_t *target, *image; - struct slave *slaves, *s; - test_runner_t *recorder = NULL; - pid_t slave; - char socket_dir[] = "/tmp/cairo-test-trace.XXXXXX"; - char *socket_path; - int sk, fd; - int i, num_slaves; - void *base; - cairo_bool_t ret = FALSE; - - if (DEBUG) - printf ("setting up trace '%s'\n", trace); - - /* create a socket to control the test runners */ - if (mkdtemp (socket_dir) == NULL) { - fprintf (stderr, "Unable to create temporary name for socket\n"); - return FALSE; - } - - xasprintf (&socket_path, "%s/socket", socket_dir); - sk = server_socket (socket_path); - if (sk == -1) { - fprintf (stderr, "Unable to create socket for server\n"); - goto cleanup_paths; - } - - /* allocate some shared memory */ - fd = server_shm (shm_path); - if (fd == -1) { - fprintf (stderr, "Unable to create shared memory '%s': %s\n", - shm_path, strerror (errno)); - goto cleanup_sk; - } - - image = cairo_boilerplate_get_image_target (CAIRO_CONTENT_COLOR_ALPHA); - assert (image != NULL); - - s = slaves = xcalloc (2*test->num_targets + 1, sizeof (struct slave)); - -#if CAIRO_HAS_REAL_PTHREAD - /* set-up a recording-surface to reconstruct errors */ - slave = spawn_recorder (socket_path, trace, &recorder); - if (slave < 0) { - fprintf (stderr, "Unable to create recording surface\n"); - goto cleanup_sk; - } - - s->pid = slave; - s->is_recording = TRUE; - s->target = NULL; - s->fd = -1; - s->reference = NULL; - s++; -#endif - - /* spawn slave processes to run the trace */ - for (i = 0; i < test->num_targets; i++) { - const cairo_boilerplate_target_t *reference; - struct slave *master; - - target = test->targets[i]; - - if (DEBUG) - printf ("setting up target[%d]? '%s' (image? %d, measurable? %d)\n", - i, target->name, target == image, target->is_measurable); - - if (target == image || ! target->is_measurable) - continue; - - /* find a matching slave to use as a reference for this target */ - if (target->reference_target != NULL) { - reference = - cairo_boilerplate_get_target_by_name (target->reference_target, - target->content); - assert (reference != NULL); - } else { - reference = image; - } - for (master = slaves; master < s; master++) { - if (master->target == reference) - break; - } - - if (master == s) { - /* no match found, spawn a slave to render the reference image */ - slave = spawn_target (socket_path, shm_path, reference, trace); - if (slave < 0) - continue; - - s->pid = slave; - s->target = reference; - s->fd = -1; - s->reference = NULL; - s++; - } - - slave = spawn_target (socket_path, shm_path, target, trace); - if (slave < 0) - continue; - - s->pid = slave; - s->target = target; - s->fd = -1; - s->reference = master; - s++; - } - num_slaves = s - slaves; - if (num_slaves == 1) { - fprintf (stderr, "No targets to test\n"); - goto cleanup; - } - - base = mmap (NULL, DATA_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); - if (base == MAP_FAILED) { - fprintf (stderr, "Unable to mmap shared memory\n"); - goto cleanup; - } - ret = test_run (base, sk, name, slaves, num_slaves, error); - munmap (base, DATA_SIZE); - -cleanup: - close (fd); - while (s-- > slaves) { - int status; - - if (s->fd != -1) - close (s->fd); - - cairo_surface_destroy (s->image); - cairo_surface_destroy (s->difference); - - if (s->is_recording) /* in-process */ - continue; - - kill (s->pid, SIGKILL); - waitpid (s->pid, &status, 0); - if (WIFSIGNALED (status) && WTERMSIG(status) != SIGKILL) { - fprintf (stderr, "%s crashed\n", s->target->name); - if (recorder) - dump_traces (recorder, trace, s->target->name, "crash"); - } - } - free (slaves); - shm_unlink (shm_path); -cleanup_sk: - close (sk); - -cleanup_paths: - remove (socket_path); - remove (socket_dir); - - free (socket_path); - return ret; -} - -static void -test_trace (test_trace_t *test, const char *trace) -{ - char *trace_cpy, *name, *dot; - - trace_cpy = xstrdup (trace); - name = basename (trace_cpy); - dot = strchr (name, '.'); - if (dot) - *dot = '\0'; - - if (test->list_only) { - printf ("%s\n", name); - } else { - struct error_info error = {0}; - cairo_bool_t ret; - - printf ("%s: ", name); - fflush (stdout); - - ret = _test_trace (test, trace, name, &error); - if (ret) { - printf ("PASS\n"); - } else { - if (error.context_id) { - printf ("FAIL (context %lu, lines [%lu, %lu])\n", - error.context_id, - error.start_line, - error.end_line); - } else { - printf ("FAIL\n"); - } - } - } - - free (trace_cpy); -} - -static cairo_bool_t -read_excludes (test_trace_t *test, const char *filename) -{ - FILE *file; - char *line = NULL; - size_t line_size = 0; - char *s, *t; - - file = fopen (filename, "r"); - if (file == NULL) - return FALSE; - - while (getline (&line, &line_size, file) != -1) { - /* terminate the line at a comment marker '#' */ - s = strchr (line, '#'); - if (s) - *s = '\0'; - - /* whitespace delimits */ - s = line; - while (*s != '\0' && isspace (*s)) - s++; - - t = s; - while (*t != '\0' && ! isspace (*t)) - t++; - - if (s != t) { - int i = test->num_exclude_names; - test->exclude_names = xrealloc (test->exclude_names, - sizeof (char *) * (i+1)); - test->exclude_names[i] = strndup (s, t-s); - test->num_exclude_names++; - } - } - free (line); - - fclose (file); - - return TRUE; -} - -static void -usage (const char *argv0) -{ - fprintf (stderr, -"Usage: %s [-l] [-x exclude-file] [test-names ... | traces ...]\n" -"\n" -"Run the cairo test suite over the given traces (all by default).\n" -"The command-line arguments are interpreted as follows:\n" -"\n" -" -l list only; just list selected test case names without executing\n" -" -x exclude; specify a file to read a list of traces to exclude\n" -"\n" -"If test names are given they are used as sub-string matches so a command\n" -"such as \"%s firefox\" can be used to run all firefox traces.\n" -"Alternatively, you can specify a list of filenames to execute.\n", - argv0, argv0); -} - -static void -parse_options (test_trace_t *test, int argc, char *argv[]) -{ - int c; - - test->list_only = FALSE; - test->names = NULL; - test->num_names = 0; - test->exclude_names = NULL; - test->num_exclude_names = 0; - - while (1) { - c = _cairo_getopt (argc, argv, "lx:"); - if (c == -1) - break; - - switch (c) { - case 'l': - test->list_only = TRUE; - break; - case 'x': - if (! read_excludes (test, optarg)) { - fprintf (stderr, "Invalid argument for -x (not readable file): %s\n", - optarg); - exit (1); - } - break; - default: - fprintf (stderr, "Internal error: unhandled option: %c\n", c); - /* fall-through */ - case '?': - usage (argv[0]); - exit (1); - } - } - - if (optind < argc) { - test->names = &argv[optind]; - test->num_names = argc - optind; - } -} - -static void -test_reset (test_trace_t *test) -{ - /* XXX leaking fonts again via recording-surface? */ -#if 0 - cairo_debug_reset_static_data (); -#if HAVE_FCFINI - FcFini (); -#endif -#endif -} - -static void -test_fini (test_trace_t *test) -{ - test_reset (test); - - cairo_boilerplate_free_targets (test->targets); - free (test->exclude_names); -} - -static cairo_bool_t -test_has_filenames (test_trace_t *test) -{ - unsigned int i; - - if (test->num_names == 0) - return FALSE; - - for (i = 0; i < test->num_names; i++) - if (access (test->names[i], R_OK) == 0) - return TRUE; - - return FALSE; -} - -static cairo_bool_t -test_can_run (test_trace_t *test, const char *name) -{ - unsigned int i; - char *copy, *dot; - cairo_bool_t ret; - - if (test->num_names == 0 && test->num_exclude_names == 0) - return TRUE; - - copy = xstrdup (name); - dot = strrchr (copy, '.'); - if (dot != NULL) - *dot = '\0'; - - if (test->num_names) { - ret = TRUE; - for (i = 0; i < test->num_names; i++) - if (strstr (copy, test->names[i])) - goto check_exclude; - - ret = FALSE; - goto done; - } - -check_exclude: - if (test->num_exclude_names) { - ret = FALSE; - for (i = 0; i < test->num_exclude_names; i++) - if (strstr (copy, test->exclude_names[i])) - goto done; - - ret = TRUE; - goto done; - } - -done: - free (copy); - - return ret; -} - -static void -warn_no_traces (const char *message, const char *trace_dir) -{ - fprintf (stderr, -"Error: %s '%s'.\n" -"Have you cloned the cairo-traces repository and uncompressed the traces?\n" -" git clone git://anongit.freedesktop.org/cairo-traces\n" -" cd cairo-traces && make\n" -"Or set the env.var CAIRO_TRACE_DIR to point to your traces?\n", - message, trace_dir); -} - -static void -interrupt (int sig) -{ - shm_unlink (SHM_PATH_XXX); - - signal (sig, SIG_DFL); - raise (sig); -} - -int -main (int argc, char *argv[]) -{ - test_trace_t test; - const char *trace_dir = "cairo-traces"; - unsigned int n; - - signal (SIGPIPE, SIG_IGN); - signal (SIGINT, interrupt); - - parse_options (&test, argc, argv); - - shm_unlink (SHM_PATH_XXX); - - if (getenv ("CAIRO_TRACE_DIR") != NULL) - trace_dir = getenv ("CAIRO_TRACE_DIR"); - - test.targets = cairo_boilerplate_get_targets (&test.num_targets, NULL); - - if (test_has_filenames (&test)) { - for (n = 0; n < test.num_names; n++) { - if (access (test.names[n], R_OK) == 0) { - test_trace (&test, test.names[n]); - test_reset (&test); - } - } - } else { - DIR *dir; - struct dirent *de; - int num_traces = 0; - - dir = opendir (trace_dir); - if (dir == NULL) { - warn_no_traces ("Failed to open directory", trace_dir); - test_fini (&test); - return 1; - } - - while ((de = readdir (dir)) != NULL) { - char *trace; - const char *dot; - - dot = strrchr (de->d_name, '.'); - if (dot == NULL) - continue; - if (strcmp (dot, ".trace")) - continue; - - num_traces++; - if (! test_can_run (&test, de->d_name)) - continue; - - xasprintf (&trace, "%s/%s", trace_dir, de->d_name); - test_trace (&test, trace); - test_reset (&test); - - free (trace); - - } - closedir (dir); - - if (num_traces == 0) { - warn_no_traces ("Found no traces in", trace_dir); - test_fini (&test); - return 1; - } - } - - test_fini (&test); - - return 0; -} - -void -cairo_test_logv (const cairo_test_context_t *ctx, - const char *fmt, va_list va) -{ -#if 0 - vfprintf (stderr, fmt, va); -#endif -} - -void -cairo_test_log (const cairo_test_context_t *ctx, const char *fmt, ...) -{ -#if 0 - va_list va; - - va_start (va, fmt); - vfprintf (stderr, fmt, va); - va_end (va); -#endif -} diff --git a/test/cairo-test.c b/test/cairo-test.c deleted file mode 100644 index a351b01..0000000 --- a/test/cairo-test.c +++ /dev/null @@ -1,1803 +0,0 @@ -/* - * Copyright © 2004 Red Hat, Inc. - * Copyright © 2008 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - * Chris Wilson - */ - -#define _GNU_SOURCE 1 /* for feenableexcept() et al */ - -#if HAVE_CONFIG_H -#include "config.h" -#endif - -#include -#include -#include -#include -#include -#if HAVE_UNISTD_H -#include -#endif -#include -#include -#if HAVE_FCFINI -#include -#endif -#if CAIRO_HAS_REAL_PTHREAD -#include -#endif -#if HAVE_SYS_STAT_H -#include -#endif - -#if HAVE_VALGRIND -#include -#else -#define RUNNING_ON_VALGRIND 0 -#endif - -#if HAVE_MEMFAULT -#include -#define MF(x) x -#else -#define MF(x) -#endif - -#include "cairo-test-private.h" - -#include "buffer-diff.h" - -#ifdef _MSC_VER -#include -#include -#define F_OK 0 -#define HAVE_MKDIR 1 -#define mkdir _mkdir -#endif - -#ifndef FALSE -#define FALSE 0 -#endif -#ifndef TRUE -#define TRUE !FALSE -#endif - -#if ! HAVE_ALARM || ! defined(SIGALRM) -#define alarm(X); -#endif - -static const cairo_user_data_key_t _cairo_test_context_key; - -static void -_xunlink (const cairo_test_context_t *ctx, const char *pathname); - -static const char *fail_face = "", *xfail_face="", *normal_face = ""; -static cairo_bool_t print_fail_on_stdout; -static int cairo_test_timeout = 60; - -#define NUM_DEVICE_OFFSETS 2 -#define NUM_DEVICE_SCALE 2 - -cairo_bool_t -cairo_test_mkdir (const char *path) -{ -#if ! HAVE_MKDIR - return FALSE; -#elif HAVE_MKDIR == 1 - if (mkdir (path) == 0) - return TRUE; -#elif HAVE_MKDIR == 2 - if (mkdir (path, 0770) == 0) - return TRUE; -#else -#error Bad value for HAVE_MKDIR -#endif - - return errno == EEXIST; -} - -static char * -_cairo_test_fixup_name (const char *original) -{ - char *name, *s; - - s = name = xstrdup (original); - while ((s = strchr (s, '_')) != NULL) - *s++ = '-'; - - return name; -} - -char * -cairo_test_get_name (const cairo_test_t *test) -{ - return _cairo_test_fixup_name (test->name); -} - -static void -_cairo_test_init (cairo_test_context_t *ctx, - const cairo_test_context_t *parent, - const cairo_test_t *test, - const char *test_name, - const char *output) -{ - char *log_name; - - MF (MEMFAULT_DISABLE_FAULTS ()); - -#if HAVE_FEENABLEEXCEPT - feenableexcept (FE_DIVBYZERO | FE_INVALID | FE_OVERFLOW); -#endif - - ctx->test = test; - ctx->test_name = _cairo_test_fixup_name (test_name); - ctx->output = output; - - cairo_test_mkdir (ctx->output); - - ctx->malloc_failure = 0; -#if HAVE_MEMFAULT - if (getenv ("CAIRO_TEST_MALLOC_FAILURE")) - ctx->malloc_failure = atoi (getenv ("CAIRO_TEST_MALLOC_FAILURE")); - if (ctx->malloc_failure && ! RUNNING_ON_MEMFAULT ()) - ctx->malloc_failure = 0; -#endif - - ctx->timeout = cairo_test_timeout; - if (getenv ("CAIRO_TEST_TIMEOUT")) - ctx->timeout = atoi (getenv ("CAIRO_TEST_TIMEOUT")); - - xasprintf (&log_name, "%s/%s%s", ctx->output, ctx->test_name, CAIRO_TEST_LOG_SUFFIX); - _xunlink (NULL, log_name); - - ctx->log_file = fopen (log_name, "a"); - if (ctx->log_file == NULL) { - fprintf (stderr, "Error opening log file: %s\n", log_name); - ctx->log_file = stderr; - } - free (log_name); - - ctx->ref_name = NULL; - ctx->ref_image = NULL; - ctx->ref_image_flattened = NULL; - - if (parent != NULL) { - ctx->targets_to_test = parent->targets_to_test; - ctx->num_targets = parent->num_targets; - ctx->limited_targets = parent->limited_targets; - ctx->own_targets = FALSE; - - ctx->srcdir = parent->srcdir; - ctx->refdir = parent->refdir; - } else { - int tmp_num_targets; - cairo_bool_t tmp_limited_targets; - - ctx->targets_to_test = cairo_boilerplate_get_targets (&tmp_num_targets, &tmp_limited_targets); - ctx->num_targets = tmp_num_targets; - ctx->limited_targets = tmp_limited_targets; - ctx->own_targets = TRUE; - - ctx->srcdir = getenv ("srcdir"); - if (ctx->srcdir == NULL) - ctx->srcdir = "."; - - ctx->refdir = getenv ("CAIRO_REF_DIR"); - } - -#ifdef HAVE_UNISTD_H - if (*fail_face == '\0' && isatty (2)) { - fail_face = "\033[41;37;1m"; - xfail_face = "\033[43;37;1m"; - normal_face = "\033[m"; - if (isatty (1)) - print_fail_on_stdout = FALSE; - } -#endif - - printf ("\nTESTING %s\n", ctx->test_name); -} - -void -_cairo_test_context_init_for_test (cairo_test_context_t *ctx, - const cairo_test_context_t *parent, - const cairo_test_t *test) -{ - _cairo_test_init (ctx, parent, test, test->name, CAIRO_TEST_OUTPUT_DIR); -} - -void -cairo_test_init (cairo_test_context_t *ctx, - const char *test_name, - const char *output) -{ - _cairo_test_init (ctx, NULL, NULL, test_name, output); -} - -void -cairo_test_fini (cairo_test_context_t *ctx) -{ - if (ctx->log_file == NULL) - return; - - if (ctx->log_file != stderr) - fclose (ctx->log_file); - ctx->log_file = NULL; - - free (ctx->ref_name); - cairo_surface_destroy (ctx->ref_image); - cairo_surface_destroy (ctx->ref_image_flattened); - - if (ctx->test_name != NULL) - free ((char *) ctx->test_name); - - if (ctx->own_targets) - cairo_boilerplate_free_targets (ctx->targets_to_test); - - cairo_boilerplate_fini (); - - cairo_debug_reset_static_data (); -#if HAVE_FCFINI - FcFini (); -#endif -} - -void -cairo_test_logv (const cairo_test_context_t *ctx, - const char *fmt, va_list va) -{ - FILE *file = ctx && ctx->log_file ? ctx->log_file : stderr; - vfprintf (file, fmt, va); -} - -void -cairo_test_log (const cairo_test_context_t *ctx, const char *fmt, ...) -{ - va_list va; - - va_start (va, fmt); - cairo_test_logv (ctx, fmt, va); - va_end (va); -} - -static void -_xunlink (const cairo_test_context_t *ctx, const char *pathname) -{ - if (unlink (pathname) < 0 && errno != ENOENT) { - cairo_test_log (ctx, "Error: Cannot remove %s: %s\n", - pathname, strerror (errno)); - exit (1); - } -} - -char * -cairo_test_reference_filename (const cairo_test_context_t *ctx, - const char *base_name, - const char *test_name, - const char *target_name, - const char *base_target_name, - const char *format, - const char *suffix, - const char *extension) -{ - char *ref_name = NULL; - - /* First look for a previous build for comparison. */ - if (ctx->refdir != NULL && strcmp(suffix, CAIRO_TEST_REF_SUFFIX) == 0) { - xasprintf (&ref_name, "%s/%s" CAIRO_TEST_OUT_SUFFIX "%s", - ctx->refdir, - base_name, - extension); - if (access (ref_name, F_OK) != 0) - free (ref_name); - else - goto done; - } - - if (target_name != NULL) { - /* Next look for a target/format-specific reference image. */ - xasprintf (&ref_name, "%s/reference/%s.%s.%s%s%s", - ctx->srcdir, - test_name, - target_name, - format, - suffix, - extension); - if (access (ref_name, F_OK) != 0) - free (ref_name); - else - goto done; - - /* Next, look for target-specific reference image. */ - xasprintf (&ref_name, "%s/reference/%s.%s%s%s", - ctx->srcdir, - test_name, - target_name, - suffix, - extension); - if (access (ref_name, F_OK) != 0) - free (ref_name); - else - goto done; - } - - if (base_target_name != NULL) { - /* Next look for a base/format-specific reference image. */ - xasprintf (&ref_name, "%s/reference/%s.%s.%s%s%s", - ctx->srcdir, - test_name, - base_target_name, - format, - suffix, - extension); - if (access (ref_name, F_OK) != 0) - free (ref_name); - else - goto done; - - /* Next, look for base-specific reference image. */ - xasprintf (&ref_name, "%s/reference/%s.%s%s%s", - ctx->srcdir, - test_name, - base_target_name, - suffix, - extension); - if (access (ref_name, F_OK) != 0) - free (ref_name); - else - goto done; - } - - /* Next, look for format-specific reference image. */ - xasprintf (&ref_name, "%s/reference/%s.%s%s%s", - ctx->srcdir, - test_name, - format, - suffix, - extension); - if (access (ref_name, F_OK) != 0) - free (ref_name); - else - goto done; - - /* Finally, look for the standard reference image. */ - xasprintf (&ref_name, "%s/reference/%s%s%s", ctx->srcdir, - test_name, - suffix, - extension); - if (access (ref_name, F_OK) != 0) - free (ref_name); - else - goto done; - - ref_name = NULL; - -done: - return ref_name; -} - -cairo_test_similar_t -cairo_test_target_has_similar (const cairo_test_context_t *ctx, - const cairo_boilerplate_target_t *target) -{ - cairo_surface_t *surface; - cairo_test_similar_t has_similar; - cairo_t * cr; - cairo_surface_t *similar; - cairo_status_t status; - void *closure; - char *path; - - /* ignore image intermediate targets */ - if (target->expected_type == CAIRO_SURFACE_TYPE_IMAGE) - return DIRECT; - - if (getenv ("CAIRO_TEST_IGNORE_SIMILAR")) - return DIRECT; - - xasprintf (&path, "%s/%s", - cairo_test_mkdir (ctx->output) ? ctx->output : ".", - ctx->test_name); - - has_similar = DIRECT; - do { - do { - surface = (target->create_surface) (path, - target->content, - ctx->test->width, - ctx->test->height, - ctx->test->width* NUM_DEVICE_SCALE + 25 * NUM_DEVICE_OFFSETS, - ctx->test->height* NUM_DEVICE_SCALE + 25 * NUM_DEVICE_OFFSETS, - CAIRO_BOILERPLATE_MODE_TEST, - &closure); - if (surface == NULL) - goto out; - } while (cairo_test_malloc_failure (ctx, cairo_surface_status (surface))); - - if (cairo_surface_status (surface)) - goto out; - - cr = cairo_create (surface); - cairo_push_group_with_content (cr, - cairo_boilerplate_content (target->content)); - similar = cairo_get_group_target (cr); - status = cairo_surface_status (similar); - - if (cairo_surface_get_type (similar) == cairo_surface_get_type (surface)) - has_similar = SIMILAR; - else - has_similar = DIRECT; - - cairo_destroy (cr); - cairo_surface_destroy (surface); - - if (target->cleanup) - target->cleanup (closure); - } while (! has_similar && cairo_test_malloc_failure (ctx, status)); -out: - free (path); - - return has_similar; -} - -static cairo_surface_t * -_cairo_test_flatten_reference_image (cairo_test_context_t *ctx, - cairo_bool_t flatten) -{ - cairo_surface_t *surface; - cairo_t *cr; - - if (! flatten) - return ctx->ref_image; - - if (ctx->ref_image_flattened != NULL) - return ctx->ref_image_flattened; - - surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, - cairo_image_surface_get_width (ctx->ref_image), - cairo_image_surface_get_height (ctx->ref_image)); - cr = cairo_create (surface); - cairo_surface_destroy (surface); - - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - cairo_set_source_surface (cr, ctx->ref_image, 0, 0); - cairo_paint (cr); - - surface = cairo_surface_reference (cairo_get_target (cr)); - cairo_destroy (cr); - - if (cairo_surface_status (surface) == CAIRO_STATUS_SUCCESS) - ctx->ref_image_flattened = surface; - return surface; -} - -cairo_surface_t * -cairo_test_get_reference_image (cairo_test_context_t *ctx, - const char *filename, - cairo_bool_t flatten) -{ - cairo_surface_t *surface; - - if (ctx->ref_name != NULL) { - if (strcmp (ctx->ref_name, filename) == 0) - return _cairo_test_flatten_reference_image (ctx, flatten); - - cairo_surface_destroy (ctx->ref_image); - ctx->ref_image = NULL; - - cairo_surface_destroy (ctx->ref_image_flattened); - ctx->ref_image_flattened = NULL; - - free (ctx->ref_name); - ctx->ref_name = NULL; - } - - surface = cairo_image_surface_create_from_png (filename); - if (cairo_surface_status (surface)) - return surface; - - ctx->ref_name = xstrdup (filename); - ctx->ref_image = surface; - return _cairo_test_flatten_reference_image (ctx, flatten); -} - -static cairo_bool_t -cairo_test_file_is_older (const char *filename, - char **ref_filenames, - int num_ref_filenames) -{ -#if HAVE_SYS_STAT_H - struct stat st; - - if (stat (filename, &st) < 0) - return FALSE; - - while (num_ref_filenames--) { - struct stat ref; - char *ref_filename = *ref_filenames++; - - if (ref_filename == NULL) - continue; - - if (stat (ref_filename++, &ref) < 0) - continue; - - if (st.st_mtime <= ref.st_mtime) - return TRUE; - } -#endif - - return FALSE; -} - -static cairo_bool_t -cairo_test_files_equal (const char *test_filename, - const char *pass_filename) -{ - FILE *test, *pass; - int t, p; - - if (test_filename == NULL || pass_filename == NULL) - return FALSE; - - test = fopen (test_filename, "rb"); - if (test == NULL) - return FALSE; - - pass = fopen (pass_filename, "rb"); - if (pass == NULL) { - fclose (test); - return FALSE; - } - - /* as simple as it gets */ - do { - t = getc (test); - p = getc (pass); - if (t != p) - break; - } while (t != EOF && p != EOF); - - fclose (pass); - fclose (test); - - return t == p; /* both EOF */ -} - -static cairo_bool_t -cairo_test_copy_file (const char *src_filename, - const char *dst_filename) -{ - FILE *src, *dst; - int c; - -#if HAVE_LINK - if (link (src_filename, dst_filename) == 0) - return TRUE; - - unlink (dst_filename); -#endif - - src = fopen (src_filename, "rb"); - if (src == NULL) - return FALSE; - - dst = fopen (dst_filename, "wb"); - if (dst == NULL) { - fclose (src); - return FALSE; - } - - /* as simple as it gets */ - while ((c = getc (src)) != EOF) - putc (c, dst); - - fclose (src); - fclose (dst); - - return TRUE; -} - -static cairo_test_status_t -cairo_test_for_target (cairo_test_context_t *ctx, - const cairo_boilerplate_target_t *target, - int dev_offset, - int dev_scale, - cairo_bool_t similar) -{ - cairo_test_status_t status; - cairo_surface_t *surface = NULL; - cairo_t *cr; - const char *empty_str = ""; - char *offset_str; - char *scale_str; - char *base_name, *base_path; - char *out_png_path; - char *ref_path = NULL, *ref_png_path, *cmp_png_path = NULL; - char *new_path = NULL, *new_png_path; - char *xfail_path = NULL, *xfail_png_path; - char *base_ref_png_path; - char *base_new_png_path; - char *base_xfail_png_path; - char *diff_png_path; - char *test_filename = NULL, *pass_filename = NULL, *fail_filename = NULL; - cairo_test_status_t ret; - cairo_content_t expected_content; - cairo_font_options_t *font_options; - const char *format; - cairo_bool_t have_output = FALSE; - cairo_bool_t have_result = FALSE; - void *closure; - double width, height; - cairo_bool_t have_output_dir; -#if HAVE_MEMFAULT - int malloc_failure_iterations = ctx->malloc_failure; - int last_fault_count = 0; -#endif - - /* Get the strings ready that we'll need. */ - format = cairo_boilerplate_content_name (target->content); - if (dev_offset) - xasprintf (&offset_str, ".%d", dev_offset); - else - offset_str = (char *) empty_str; - - if (dev_scale != 1) - xasprintf (&scale_str, ".x%d", dev_scale); - else - scale_str = (char *) empty_str; - - xasprintf (&base_name, "%s.%s.%s%s%s%s", - ctx->test_name, - target->name, - format, - similar ? ".similar" : "", - offset_str, - scale_str); - - if (offset_str != empty_str) - free (offset_str); - if (scale_str != empty_str) - free (scale_str); - - ref_png_path = cairo_test_reference_filename (ctx, - base_name, - ctx->test_name, - target->name, - target->basename, - format, - CAIRO_TEST_REF_SUFFIX, - CAIRO_TEST_PNG_EXTENSION); - new_png_path = cairo_test_reference_filename (ctx, - base_name, - ctx->test_name, - target->name, - target->basename, - format, - CAIRO_TEST_NEW_SUFFIX, - CAIRO_TEST_PNG_EXTENSION); - xfail_png_path = cairo_test_reference_filename (ctx, - base_name, - ctx->test_name, - target->name, - target->basename, - format, - CAIRO_TEST_XFAIL_SUFFIX, - CAIRO_TEST_PNG_EXTENSION); - - base_ref_png_path = cairo_test_reference_filename (ctx, - base_name, - ctx->test_name, - NULL, NULL, - format, - CAIRO_TEST_REF_SUFFIX, - CAIRO_TEST_PNG_EXTENSION); - base_new_png_path = cairo_test_reference_filename (ctx, - base_name, - ctx->test_name, - NULL, NULL, - format, - CAIRO_TEST_NEW_SUFFIX, - CAIRO_TEST_PNG_EXTENSION); - base_xfail_png_path = cairo_test_reference_filename (ctx, - base_name, - ctx->test_name, - NULL, NULL, - format, - CAIRO_TEST_XFAIL_SUFFIX, - CAIRO_TEST_PNG_EXTENSION); - - if (target->file_extension != NULL) { - ref_path = cairo_test_reference_filename (ctx, - base_name, - ctx->test_name, - target->name, - target->basename, - format, - CAIRO_TEST_REF_SUFFIX, - target->file_extension); - new_path = cairo_test_reference_filename (ctx, - base_name, - ctx->test_name, - target->name, - target->basename, - format, - CAIRO_TEST_NEW_SUFFIX, - target->file_extension); - xfail_path = cairo_test_reference_filename (ctx, - base_name, - ctx->test_name, - target->name, - target->basename, - format, - CAIRO_TEST_XFAIL_SUFFIX, - target->file_extension); - } - - have_output_dir = cairo_test_mkdir (ctx->output); - xasprintf (&base_path, "%s/%s", - have_output_dir ? ctx->output : ".", - base_name); - xasprintf (&out_png_path, "%s" CAIRO_TEST_OUT_PNG, base_path); - xasprintf (&diff_png_path, "%s" CAIRO_TEST_DIFF_PNG, base_path); - - if (ctx->test->requirements != NULL) { - const char *required; - - required = target->is_vector ? "target=raster" : "target=vector"; - if (strstr (ctx->test->requirements, required) != NULL) { - cairo_test_log (ctx, "Error: Skipping for %s target %s\n", - target->is_vector ? "vector" : "raster", - target->name); - ret = CAIRO_TEST_UNTESTED; - goto UNWIND_STRINGS; - } - - required = target->is_recording ? "target=!recording" : "target=recording"; - if (strstr (ctx->test->requirements, required) != NULL) { - cairo_test_log (ctx, "Error: Skipping for %s target %s\n", - target->is_recording ? "recording" : "non-recording", - target->name); - ret = CAIRO_TEST_UNTESTED; - goto UNWIND_STRINGS; - } - } - - width = ctx->test->width; - height = ctx->test->height; - if (width && height) { - width *= dev_scale; - height *= dev_scale; - width += dev_offset; - height += dev_offset; - } - -#if HAVE_MEMFAULT -REPEAT: - MEMFAULT_CLEAR_FAULTS (); - MEMFAULT_RESET_LEAKS (); - ctx->last_fault_count = 0; - last_fault_count = MEMFAULT_COUNT_FAULTS (); - - /* Pre-initialise fontconfig so that the configuration is loaded without - * malloc failures (our primary goal is to test cairo fault tolerance). - */ -#if HAVE_FCINIT - FcInit (); -#endif - - MEMFAULT_ENABLE_FAULTS (); -#endif - have_output = FALSE; - have_result = FALSE; - - /* Run the actual drawing code. */ - ret = CAIRO_TEST_SUCCESS; - surface = (target->create_surface) (base_path, - target->content, - width, height, - ctx->test->width * NUM_DEVICE_SCALE + 25 * NUM_DEVICE_OFFSETS, - ctx->test->height * NUM_DEVICE_SCALE + 25 * NUM_DEVICE_OFFSETS, - CAIRO_BOILERPLATE_MODE_TEST, - &closure); - if (surface == NULL) { - cairo_test_log (ctx, "Error: Failed to set %s target\n", target->name); - ret = CAIRO_TEST_UNTESTED; - goto UNWIND_STRINGS; - } - -#if HAVE_MEMFAULT - if (ctx->malloc_failure && - MEMFAULT_COUNT_FAULTS () - last_fault_count > 0 && - cairo_surface_status (surface) == CAIRO_STATUS_NO_MEMORY) - { - goto REPEAT; - } -#endif - - if (cairo_surface_status (surface)) { - MF (MEMFAULT_PRINT_FAULTS ()); - cairo_test_log (ctx, "Error: Created an error surface: %s\n", - cairo_status_to_string (cairo_surface_status (surface))); - ret = CAIRO_TEST_FAILURE; - goto UNWIND_STRINGS; - } - - /* Check that we created a surface of the expected type. */ - if (cairo_surface_get_type (surface) != target->expected_type) { - MF (MEMFAULT_PRINT_FAULTS ()); - cairo_test_log (ctx, "Error: Created surface is of type %d (expected %d)\n", - cairo_surface_get_type (surface), target->expected_type); - ret = CAIRO_TEST_UNTESTED; - goto UNWIND_SURFACE; - } - - /* Check that we created a surface of the expected content, - * (ignore the artificial CAIRO_TEST_CONTENT_COLOR_ALPHA_FLATTENED value). - */ - expected_content = cairo_boilerplate_content (target->content); - - if (cairo_surface_get_content (surface) != expected_content) { - MF (MEMFAULT_PRINT_FAULTS ()); - cairo_test_log (ctx, "Error: Created surface has content %d (expected %d)\n", - cairo_surface_get_content (surface), expected_content); - ret = CAIRO_TEST_FAILURE; - goto UNWIND_SURFACE; - } - - if (cairo_surface_set_user_data (surface, - &cairo_boilerplate_output_basename_key, - base_path, - NULL)) - { -#if HAVE_MEMFAULT - cairo_surface_destroy (surface); - - if (target->cleanup) - target->cleanup (closure); - - goto REPEAT; -#else - ret = CAIRO_TEST_FAILURE; - goto UNWIND_SURFACE; -#endif - } - - cairo_surface_set_device_offset (surface, dev_offset, dev_offset); - cairo_surface_set_device_scale (surface, dev_scale, dev_scale); - - cr = cairo_create (surface); - if (cairo_set_user_data (cr, &_cairo_test_context_key, (void*) ctx, NULL)) { -#if HAVE_MEMFAULT - cairo_destroy (cr); - cairo_surface_destroy (surface); - - if (target->cleanup) - target->cleanup (closure); - - goto REPEAT; -#else - ret = CAIRO_TEST_FAILURE; - goto UNWIND_CAIRO; -#endif - } - - if (similar) - cairo_push_group_with_content (cr, expected_content); - - /* Clear to transparent (or black) depending on whether the target - * surface supports alpha. */ - cairo_save (cr); - cairo_set_operator (cr, CAIRO_OPERATOR_CLEAR); - cairo_paint (cr); - cairo_restore (cr); - - /* Set all components of font_options to avoid backend differences - * and reduce number of needed reference images. */ - font_options = cairo_font_options_create (); - cairo_font_options_set_hint_style (font_options, CAIRO_HINT_STYLE_NONE); - cairo_font_options_set_hint_metrics (font_options, CAIRO_HINT_METRICS_ON); - cairo_font_options_set_antialias (font_options, CAIRO_ANTIALIAS_GRAY); - cairo_set_font_options (cr, font_options); - cairo_font_options_destroy (font_options); - - cairo_save (cr); - alarm (ctx->timeout); - status = (ctx->test->draw) (cr, ctx->test->width, ctx->test->height); - alarm (0); - cairo_restore (cr); - - if (similar) { - cairo_pop_group_to_source (cr); - cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); - cairo_paint (cr); - } - -#if HAVE_MEMFAULT - MEMFAULT_DISABLE_FAULTS (); - - /* repeat test after malloc failure injection */ - if (ctx->malloc_failure && - MEMFAULT_COUNT_FAULTS () - last_fault_count > 0 && - (status == CAIRO_TEST_NO_MEMORY || - cairo_status (cr) == CAIRO_STATUS_NO_MEMORY || - cairo_surface_status (surface) == CAIRO_STATUS_NO_MEMORY)) - { - cairo_destroy (cr); - cairo_surface_destroy (surface); - if (target->cleanup) - target->cleanup (closure); - cairo_debug_reset_static_data (); -#if HAVE_FCFINI - FcFini (); -#endif - if (MEMFAULT_COUNT_LEAKS () > 0) { - MEMFAULT_PRINT_FAULTS (); - MEMFAULT_PRINT_LEAKS (); - } - - goto REPEAT; - } -#endif - - /* Then, check all the different ways it could fail. */ - if (status) { - cairo_test_log (ctx, "Error: Function under test failed\n"); - ret = status; - goto UNWIND_CAIRO; - } - -#if HAVE_MEMFAULT - if (MEMFAULT_COUNT_FAULTS () - last_fault_count > 0 && - MEMFAULT_HAS_FAULTS ()) - { - VALGRIND_PRINTF ("Unreported memfaults..."); - MEMFAULT_PRINT_FAULTS (); - } -#endif - - if (target->finish_surface != NULL) { -#if HAVE_MEMFAULT - /* We need to re-enable faults as most recording-surface processing - * is done during cairo_surface_finish(). - */ - MEMFAULT_CLEAR_FAULTS (); - last_fault_count = MEMFAULT_COUNT_FAULTS (); - MEMFAULT_ENABLE_FAULTS (); -#endif - - /* also check for infinite loops whilst replaying */ - alarm (ctx->timeout); - status = target->finish_surface (surface); - alarm (0); - -#if HAVE_MEMFAULT - MEMFAULT_DISABLE_FAULTS (); - - if (ctx->malloc_failure && - MEMFAULT_COUNT_FAULTS () - last_fault_count > 0 && - status == CAIRO_STATUS_NO_MEMORY) - { - cairo_destroy (cr); - cairo_surface_destroy (surface); - if (target->cleanup) - target->cleanup (closure); - cairo_debug_reset_static_data (); -#if HAVE_FCFINI - FcFini (); -#endif - if (MEMFAULT_COUNT_LEAKS () > 0) { - MEMFAULT_PRINT_FAULTS (); - MEMFAULT_PRINT_LEAKS (); - } - - goto REPEAT; - } -#endif - if (status) { - cairo_test_log (ctx, "Error: Failed to finish surface: %s\n", - cairo_status_to_string (status)); - ret = CAIRO_TEST_FAILURE; - goto UNWIND_CAIRO; - } - } - - /* Skip image check for tests with no image (width,height == 0,0) */ - if (ctx->test->width != 0 && ctx->test->height != 0) { - cairo_surface_t *ref_image; - cairo_surface_t *test_image; - cairo_surface_t *diff_image; - buffer_diff_result_t result; - cairo_status_t diff_status; - - if (ref_png_path == NULL) { - cairo_test_log (ctx, "Error: Cannot find reference image for %s\n", - base_name); - - /* we may be running this test to generate reference images */ - _xunlink (ctx, out_png_path); - /* be more generous as we may need to use external renderers */ - alarm (4 * ctx->timeout); - test_image = target->get_image_surface (surface, 0, - ctx->test->width, - ctx->test->height); - alarm (0); - diff_status = cairo_surface_write_to_png (test_image, out_png_path); - cairo_surface_destroy (test_image); - if (diff_status) { - if (cairo_surface_status (test_image) == CAIRO_STATUS_INVALID_STATUS) - ret = CAIRO_TEST_CRASHED; - else - ret = CAIRO_TEST_FAILURE; - cairo_test_log (ctx, - "Error: Failed to write output image: %s\n", - cairo_status_to_string (diff_status)); - } - have_output = TRUE; - - ret = CAIRO_TEST_XFAILURE; - goto UNWIND_CAIRO; - } - - if (target->file_extension != NULL) { /* compare vector surfaces */ - char *filenames[] = { - ref_png_path, - ref_path, - new_png_path, - new_path, - xfail_png_path, - xfail_path, - base_ref_png_path, - base_new_png_path, - base_xfail_png_path, - }; - - xasprintf (&test_filename, "%s.out%s", - base_path, target->file_extension); - xasprintf (&pass_filename, "%s.pass%s", - base_path, target->file_extension); - xasprintf (&fail_filename, "%s.fail%s", - base_path, target->file_extension); - - if (cairo_test_file_is_older (pass_filename, - filenames, - ARRAY_LENGTH (filenames))) - { - _xunlink (ctx, pass_filename); - } - if (cairo_test_file_is_older (fail_filename, - filenames, - ARRAY_LENGTH (filenames))) - { - _xunlink (ctx, fail_filename); - } - - if (cairo_test_files_equal (out_png_path, ref_path)) { - cairo_test_log (ctx, "Vector surface matches reference.\n"); - have_output = FALSE; - ret = CAIRO_TEST_SUCCESS; - goto UNWIND_CAIRO; - } - if (cairo_test_files_equal (out_png_path, new_path)) { - cairo_test_log (ctx, "Vector surface matches current failure.\n"); - have_output = FALSE; - ret = CAIRO_TEST_NEW; - goto UNWIND_CAIRO; - } - if (cairo_test_files_equal (out_png_path, xfail_path)) { - cairo_test_log (ctx, "Vector surface matches known failure.\n"); - have_output = FALSE; - ret = CAIRO_TEST_XFAILURE; - goto UNWIND_CAIRO; - } - - if (cairo_test_files_equal (test_filename, pass_filename)) { - /* identical output as last known PASS */ - cairo_test_log (ctx, "Vector surface matches last pass.\n"); - have_output = TRUE; - ret = CAIRO_TEST_SUCCESS; - goto UNWIND_CAIRO; - } - if (cairo_test_files_equal (test_filename, fail_filename)) { - /* identical output as last known FAIL, fail */ - cairo_test_log (ctx, "Vector surface matches last fail.\n"); - have_result = TRUE; /* presume these were kept around as well */ - have_output = TRUE; - ret = CAIRO_TEST_FAILURE; - goto UNWIND_CAIRO; - } - } - - /* be more generous as we may need to use external renderers */ - alarm (4 * ctx->timeout); - test_image = target->get_image_surface (surface, 0, - ctx->test->width, - ctx->test->height); - alarm (0); - if (cairo_surface_status (test_image)) { - cairo_test_log (ctx, "Error: Failed to extract image: %s\n", - cairo_status_to_string (cairo_surface_status (test_image))); - if (cairo_surface_status (test_image) == CAIRO_STATUS_INVALID_STATUS) - ret = CAIRO_TEST_CRASHED; - else - ret = CAIRO_TEST_FAILURE; - cairo_surface_destroy (test_image); - goto UNWIND_CAIRO; - } - - _xunlink (ctx, out_png_path); - diff_status = cairo_surface_write_to_png (test_image, out_png_path); - if (diff_status) { - cairo_test_log (ctx, "Error: Failed to write output image: %s\n", - cairo_status_to_string (diff_status)); - cairo_surface_destroy (test_image); - ret = CAIRO_TEST_FAILURE; - goto UNWIND_CAIRO; - } - have_output = TRUE; - - /* binary compare png files (no decompression) */ - if (target->file_extension == NULL) { - char *filenames[] = { - ref_png_path, - new_png_path, - xfail_png_path, - base_ref_png_path, - base_new_png_path, - base_xfail_png_path, - }; - - xasprintf (&test_filename, "%s", out_png_path); - xasprintf (&pass_filename, "%s.pass.png", base_path); - xasprintf (&fail_filename, "%s.fail.png", base_path); - - if (cairo_test_file_is_older (pass_filename, - filenames, - ARRAY_LENGTH (filenames))) - { - _xunlink (ctx, pass_filename); - } - if (cairo_test_file_is_older (fail_filename, - filenames, - ARRAY_LENGTH (filenames))) - { - _xunlink (ctx, fail_filename); - } - - if (cairo_test_files_equal (test_filename, pass_filename)) { - cairo_test_log (ctx, "PNG file exactly matches last pass.\n"); - have_result = TRUE; - cairo_surface_destroy (test_image); - ret = CAIRO_TEST_SUCCESS; - goto UNWIND_CAIRO; - } - if (cairo_test_files_equal (out_png_path, ref_png_path)) { - cairo_test_log (ctx, "PNG file exactly matches reference image.\n"); - have_result = TRUE; - cairo_surface_destroy (test_image); - ret = CAIRO_TEST_SUCCESS; - goto UNWIND_CAIRO; - } - if (cairo_test_files_equal (out_png_path, new_png_path)) { - cairo_test_log (ctx, "PNG file exactly matches current failure image.\n"); - have_result = TRUE; - cairo_surface_destroy (test_image); - ret = CAIRO_TEST_NEW; - goto UNWIND_CAIRO; - } - if (cairo_test_files_equal (out_png_path, xfail_png_path)) { - cairo_test_log (ctx, "PNG file exactly matches known failure image.\n"); - have_result = TRUE; - cairo_surface_destroy (test_image); - ret = CAIRO_TEST_XFAILURE; - goto UNWIND_CAIRO; - } - if (cairo_test_files_equal (test_filename, fail_filename)) { - cairo_test_log (ctx, "PNG file exactly matches last fail.\n"); - have_result = TRUE; /* presume these were kept around as well */ - cairo_surface_destroy (test_image); - ret = CAIRO_TEST_FAILURE; - goto UNWIND_CAIRO; - } - } else { - if (cairo_test_files_equal (out_png_path, ref_png_path)) { - cairo_test_log (ctx, "PNG file exactly matches reference image.\n"); - have_result = TRUE; - cairo_surface_destroy (test_image); - ret = CAIRO_TEST_SUCCESS; - goto UNWIND_CAIRO; - } - if (cairo_test_files_equal (out_png_path, new_png_path)) { - cairo_test_log (ctx, "PNG file exactly matches current failure image.\n"); - have_result = TRUE; - cairo_surface_destroy (test_image); - ret = CAIRO_TEST_NEW; - goto UNWIND_CAIRO; - } - if (cairo_test_files_equal (out_png_path, xfail_png_path)) { - cairo_test_log (ctx, "PNG file exactly matches known failure image.\n"); - have_result = TRUE; - cairo_surface_destroy (test_image); - ret = CAIRO_TEST_XFAILURE; - goto UNWIND_CAIRO; - } - } - - if (cairo_test_files_equal (out_png_path, base_ref_png_path)) { - cairo_test_log (ctx, "PNG file exactly reference image.\n"); - have_result = TRUE; - cairo_surface_destroy (test_image); - ret = CAIRO_TEST_SUCCESS; - goto UNWIND_CAIRO; - } - if (cairo_test_files_equal (out_png_path, base_new_png_path)) { - cairo_test_log (ctx, "PNG file exactly current failure image.\n"); - have_result = TRUE; - cairo_surface_destroy (test_image); - ret = CAIRO_TEST_NEW; - goto UNWIND_CAIRO; - } - if (cairo_test_files_equal (out_png_path, base_xfail_png_path)) { - cairo_test_log (ctx, "PNG file exactly known failure image.\n"); - have_result = TRUE; - cairo_surface_destroy (test_image); - ret = CAIRO_TEST_XFAILURE; - goto UNWIND_CAIRO; - } - - /* first compare against the ideal reference */ - ref_image = cairo_test_get_reference_image (ctx, base_ref_png_path, - target->content == CAIRO_TEST_CONTENT_COLOR_ALPHA_FLATTENED); - if (cairo_surface_status (ref_image)) { - cairo_test_log (ctx, "Error: Cannot open reference image for %s: %s\n", - base_ref_png_path, - cairo_status_to_string (cairo_surface_status (ref_image))); - cairo_surface_destroy (test_image); - ret = CAIRO_TEST_FAILURE; - goto UNWIND_CAIRO; - } - - diff_image = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, - ctx->test->width, - ctx->test->height); - - cmp_png_path = base_ref_png_path; - diff_status = image_diff (ctx, - test_image, ref_image, diff_image, - &result); - _xunlink (ctx, diff_png_path); - if (diff_status || - image_diff_is_failure (&result, target->error_tolerance)) - { - /* that failed, so check against the specific backend */ - ref_image = cairo_test_get_reference_image (ctx, ref_png_path, - target->content == CAIRO_TEST_CONTENT_COLOR_ALPHA_FLATTENED); - if (cairo_surface_status (ref_image)) { - cairo_test_log (ctx, "Error: Cannot open reference image for %s: %s\n", - ref_png_path, - cairo_status_to_string (cairo_surface_status (ref_image))); - cairo_surface_destroy (test_image); - ret = CAIRO_TEST_FAILURE; - goto UNWIND_CAIRO; - } - - cmp_png_path = ref_png_path; - diff_status = image_diff (ctx, - test_image, ref_image, - diff_image, - &result); - if (diff_status) - { - cairo_test_log (ctx, "Error: Failed to compare images: %s\n", - cairo_status_to_string (diff_status)); - ret = CAIRO_TEST_FAILURE; - } - else if (image_diff_is_failure (&result, target->error_tolerance)) - { - ret = CAIRO_TEST_FAILURE; - - diff_status = cairo_surface_write_to_png (diff_image, - diff_png_path); - if (diff_status) { - cairo_test_log (ctx, "Error: Failed to write differences image: %s\n", - cairo_status_to_string (diff_status)); - } else { - have_result = TRUE; - } - - cairo_test_copy_file (test_filename, fail_filename); - } - else - { /* success */ - cairo_test_copy_file (test_filename, pass_filename); - } - } - else - { /* success */ - cairo_test_copy_file (test_filename, pass_filename); - } - - /* If failed, compare against the current image output, - * and attempt to detect systematic failures. - */ - if (ret == CAIRO_TEST_FAILURE) { - char *image_out_path; - - image_out_path = - cairo_test_reference_filename (ctx, - base_name, - ctx->test_name, - "image", - "image", - format, - CAIRO_TEST_OUT_SUFFIX, - CAIRO_TEST_PNG_EXTENSION); - if (image_out_path != NULL) { - if (cairo_test_files_equal (out_png_path, - image_out_path)) - { - ret = CAIRO_TEST_XFAILURE; - } - else - { - ref_image = - cairo_image_surface_create_from_png (image_out_path); - if (cairo_surface_status (ref_image) == CAIRO_STATUS_SUCCESS) - { - diff_status = image_diff (ctx, - test_image, ref_image, - diff_image, - &result); - if (diff_status == CAIRO_STATUS_SUCCESS && - !image_diff_is_failure (&result, target->error_tolerance)) - { - ret = CAIRO_TEST_XFAILURE; - } - - cairo_surface_destroy (ref_image); - } - } - - free (image_out_path); - } - } - - cairo_surface_destroy (test_image); - cairo_surface_destroy (diff_image); - } - - if (cairo_status (cr) != CAIRO_STATUS_SUCCESS) { - cairo_test_log (ctx, "Error: Function under test left cairo status in an error state: %s\n", - cairo_status_to_string (cairo_status (cr))); - ret = CAIRO_TEST_ERROR; - goto UNWIND_CAIRO; - } - -UNWIND_CAIRO: - free (test_filename); - free (fail_filename); - free (pass_filename); - - test_filename = fail_filename = pass_filename = NULL; - -#if HAVE_MEMFAULT - if (ret == CAIRO_TEST_FAILURE) - MEMFAULT_PRINT_FAULTS (); -#endif - cairo_destroy (cr); -UNWIND_SURFACE: - cairo_surface_destroy (surface); - - if (target->cleanup) - target->cleanup (closure); - -#if HAVE_MEMFAULT - cairo_debug_reset_static_data (); - -#if HAVE_FCFINI - FcFini (); -#endif - - if (MEMFAULT_COUNT_LEAKS () > 0) { - if (ret != CAIRO_TEST_FAILURE) - MEMFAULT_PRINT_FAULTS (); - MEMFAULT_PRINT_LEAKS (); - } - - if (ret == CAIRO_TEST_SUCCESS && --malloc_failure_iterations > 0) - goto REPEAT; -#endif - - if (have_output) - cairo_test_log (ctx, "OUTPUT: %s\n", out_png_path); - - if (have_result) { - if (cmp_png_path == NULL) { - /* XXX presume we matched the normal ref last time */ - cmp_png_path = ref_png_path; - } - cairo_test_log (ctx, - "REFERENCE: %s\nDIFFERENCE: %s\n", - cmp_png_path, diff_png_path); - } - -UNWIND_STRINGS: - free (out_png_path); - free (ref_png_path); - free (base_ref_png_path); - free (ref_path); - free (new_png_path); - free (base_new_png_path); - free (new_path); - free (xfail_png_path); - free (base_xfail_png_path); - free (xfail_path); - free (diff_png_path); - free (base_path); - free (base_name); - - return ret; -} - -#if defined(HAVE_SIGNAL_H) && defined(HAVE_SETJMP_H) -#include -#include -/* Used to catch crashes in a test, so that we report it as such and - * continue testing, although one crasher may already have corrupted memory in - * an nonrecoverable fashion. */ -static jmp_buf jmpbuf; - -static void -segfault_handler (int signal) -{ - longjmp (jmpbuf, signal); -} -#endif - -cairo_test_status_t -_cairo_test_context_run_for_target (cairo_test_context_t *ctx, - const cairo_boilerplate_target_t *target, - cairo_bool_t similar, - int dev_offset, int dev_scale) -{ - cairo_test_status_t status; - - if (target->get_image_surface == NULL) - return CAIRO_TEST_UNTESTED; - - if (similar && ! cairo_test_target_has_similar (ctx, target)) - return CAIRO_TEST_UNTESTED; - - cairo_test_log (ctx, - "Testing %s with %s%s target (dev offset %d scale: %d)\n", - ctx->test_name, - similar ? " (similar) " : "", - target->name, - dev_offset, dev_scale); - - printf ("%s.%s.%s [%dx%d]%s:\t", ctx->test_name, target->name, - cairo_boilerplate_content_name (target->content), - dev_offset, dev_scale, - similar ? " (similar)": ""); - fflush (stdout); - -#if defined(HAVE_SIGNAL_H) && defined(HAVE_SETJMP_H) - if (! RUNNING_ON_VALGRIND) { - void (* volatile old_segfault_handler)(int); - void (* volatile old_segfpe_handler)(int); - void (* volatile old_sigpipe_handler)(int); - void (* volatile old_sigabrt_handler)(int); - void (* volatile old_sigalrm_handler)(int); - - /* Set up a checkpoint to get back to in case of segfaults. */ -#ifdef SIGSEGV - old_segfault_handler = signal (SIGSEGV, segfault_handler); -#endif -#ifdef SIGFPE - old_segfpe_handler = signal (SIGFPE, segfault_handler); -#endif -#ifdef SIGPIPE - old_sigpipe_handler = signal (SIGPIPE, segfault_handler); -#endif -#ifdef SIGABRT - old_sigabrt_handler = signal (SIGABRT, segfault_handler); -#endif -#ifdef SIGALRM - old_sigalrm_handler = signal (SIGALRM, segfault_handler); -#endif - if (0 == setjmp (jmpbuf)) - status = cairo_test_for_target (ctx, target, dev_offset, dev_scale, similar); - else - status = CAIRO_TEST_CRASHED; -#ifdef SIGSEGV - signal (SIGSEGV, old_segfault_handler); -#endif -#ifdef SIGFPE - signal (SIGFPE, old_segfpe_handler); -#endif -#ifdef SIGPIPE - signal (SIGPIPE, old_sigpipe_handler); -#endif -#ifdef SIGABRT - signal (SIGABRT, old_sigabrt_handler); -#endif -#ifdef SIGALRM - signal (SIGALRM, old_sigalrm_handler); -#endif - } else { - status = cairo_test_for_target (ctx, target, dev_offset, dev_scale, similar); - } -#else - status = cairo_test_for_target (ctx, target, dev_offset, dev_scale, similar); -#endif - - cairo_test_log (ctx, - "TEST: %s TARGET: %s FORMAT: %s OFFSET: %d SCALE: %d SIMILAR: %d RESULT: ", - ctx->test_name, target->name, - cairo_boilerplate_content_name (target->content), - dev_offset, dev_scale, similar); - switch (status) { - case CAIRO_TEST_SUCCESS: - printf ("PASS\n"); - cairo_test_log (ctx, "PASS\n"); - break; - - case CAIRO_TEST_UNTESTED: - printf ("UNTESTED\n"); - cairo_test_log (ctx, "UNTESTED\n"); - break; - - default: - case CAIRO_TEST_CRASHED: - if (print_fail_on_stdout) { - printf ("!!!CRASHED!!!\n"); - } else { - /* eat the test name */ - printf ("\r"); - fflush (stdout); - } - cairo_test_log (ctx, "CRASHED\n"); - fprintf (stderr, "%s.%s.%s [%dx%d]%s:\t%s!!!CRASHED!!!%s\n", - ctx->test_name, target->name, - cairo_boilerplate_content_name (target->content), dev_offset, dev_scale, similar ? " (similar)" : "", - fail_face, normal_face); - break; - - case CAIRO_TEST_ERROR: - if (print_fail_on_stdout) { - printf ("!!!ERROR!!!\n"); - } else { - /* eat the test name */ - printf ("\r"); - fflush (stdout); - } - cairo_test_log (ctx, "ERROR\n"); - fprintf (stderr, "%s.%s.%s [%dx%d]%s:\t%s!!!ERROR!!!%s\n", - ctx->test_name, target->name, - cairo_boilerplate_content_name (target->content), dev_offset, dev_scale, similar ? " (similar)" : "", - fail_face, normal_face); - break; - - case CAIRO_TEST_XFAILURE: - if (print_fail_on_stdout) { - printf ("XFAIL\n"); - } else { - /* eat the test name */ - printf ("\r"); - fflush (stdout); - } - fprintf (stderr, "%s.%s.%s [%dx%d]%s:\t%sXFAIL%s\n", - ctx->test_name, target->name, - cairo_boilerplate_content_name (target->content), dev_offset, dev_scale, similar ? " (similar)" : "", - xfail_face, normal_face); - cairo_test_log (ctx, "XFAIL\n"); - break; - - case CAIRO_TEST_NEW: - if (print_fail_on_stdout) { - printf ("NEW\n"); - } else { - /* eat the test name */ - printf ("\r"); - fflush (stdout); - } - fprintf (stderr, "%s.%s.%s [%dx%d]%s:\t%sNEW%s\n", - ctx->test_name, target->name, - cairo_boilerplate_content_name (target->content), dev_offset, dev_scale, similar ? " (similar)" : "", - fail_face, normal_face); - cairo_test_log (ctx, "NEW\n"); - break; - - case CAIRO_TEST_NO_MEMORY: - case CAIRO_TEST_FAILURE: - if (print_fail_on_stdout) { - printf ("FAIL\n"); - } else { - /* eat the test name */ - printf ("\r"); - fflush (stdout); - } - fprintf (stderr, "%s.%s.%s [%dx%d]%s:\t%sFAIL%s\n", - ctx->test_name, target->name, - cairo_boilerplate_content_name (target->content), dev_offset, dev_scale, similar ? " (similar)" : "", - fail_face, normal_face); - cairo_test_log (ctx, "FAIL\n"); - break; - } - fflush (stdout); - - return status; -} - -const cairo_test_context_t * -cairo_test_get_context (cairo_t *cr) -{ - return cairo_get_user_data (cr, &_cairo_test_context_key); -} - -cairo_surface_t * -cairo_test_create_surface_from_png (const cairo_test_context_t *ctx, - const char *filename) -{ - cairo_surface_t *image; - cairo_status_t status; - - image = cairo_image_surface_create_from_png (filename); - status = cairo_surface_status (image); - if (status == CAIRO_STATUS_FILE_NOT_FOUND) { - /* expect not found when running with srcdir != builddir - * such as when 'make distcheck' is run - */ - if (ctx->srcdir) { - char *srcdir_filename; - xasprintf (&srcdir_filename, "%s/%s", ctx->srcdir, filename); - cairo_surface_destroy (image); - image = cairo_image_surface_create_from_png (srcdir_filename); - free (srcdir_filename); - } - } - - return image; -} - -cairo_pattern_t * -cairo_test_create_pattern_from_png (const cairo_test_context_t *ctx, - const char *filename) -{ - cairo_surface_t *image; - cairo_pattern_t *pattern; - - image = cairo_test_create_surface_from_png (ctx, filename); - - pattern = cairo_pattern_create_for_surface (image); - - cairo_pattern_set_extend (pattern, CAIRO_EXTEND_REPEAT); - - cairo_surface_destroy (image); - - return pattern; -} - -static cairo_surface_t * -_draw_check (int width, int height) -{ - cairo_surface_t *surface; - cairo_t *cr; - - surface = cairo_image_surface_create (CAIRO_FORMAT_RGB24, 12, 12); - cr = cairo_create (surface); - cairo_surface_destroy (surface); - - cairo_set_source_rgb (cr, 0.75, 0.75, 0.75); /* light gray */ - cairo_paint (cr); - - cairo_set_source_rgb (cr, 0.25, 0.25, 0.25); /* dark gray */ - cairo_rectangle (cr, width / 2, 0, width / 2, height / 2); - cairo_rectangle (cr, 0, height / 2, width / 2, height / 2); - cairo_fill (cr); - - surface = cairo_surface_reference (cairo_get_target (cr)); - cairo_destroy (cr); - - return surface; -} - -void -cairo_test_paint_checkered (cairo_t *cr) -{ - cairo_surface_t *check; - - check = _draw_check (12, 12); - - cairo_save (cr); - cairo_set_source_surface (cr, check, 0, 0); - cairo_surface_destroy (check); - - cairo_pattern_set_filter (cairo_get_source (cr), CAIRO_FILTER_NEAREST); - cairo_pattern_set_extend (cairo_get_source (cr), CAIRO_EXTEND_REPEAT); - cairo_paint (cr); - - cairo_restore (cr); -} - -cairo_bool_t -cairo_test_is_target_enabled (const cairo_test_context_t *ctx, - const char *target) -{ - size_t i; - - for (i = 0; i < ctx->num_targets; i++) { - const cairo_boilerplate_target_t *t = ctx->targets_to_test[i]; - if (strcmp (t->name, target) == 0) { - /* XXX ask the target whether is it possible to run? - * e.g. the xlib backend could check whether it is able to connect - * to the Display. - */ - return t->get_image_surface != NULL; - } - } - - return FALSE; -} - -cairo_bool_t -cairo_test_malloc_failure (const cairo_test_context_t *ctx, - cairo_status_t status) -{ - if (! ctx->malloc_failure) - return FALSE; - - if (status != CAIRO_STATUS_NO_MEMORY) - return FALSE; - -#if HAVE_MEMFAULT - { - int n_faults; - - /* prevent infinite loops... */ - n_faults = MEMFAULT_COUNT_FAULTS (); - if (n_faults == ctx->last_fault_count) - return FALSE; - - ((cairo_test_context_t *) ctx)->last_fault_count = n_faults; - } -#endif - - return TRUE; -} - -cairo_test_status_t -cairo_test_status_from_status (const cairo_test_context_t *ctx, - cairo_status_t status) -{ - if (status == CAIRO_STATUS_SUCCESS) - return CAIRO_TEST_SUCCESS; - - if (cairo_test_malloc_failure (ctx, status)) - return CAIRO_TEST_NO_MEMORY; - - return CAIRO_TEST_FAILURE; -} diff --git a/test/cairo-test.h b/test/cairo-test.h deleted file mode 100644 index 7e9605f..0000000 --- a/test/cairo-test.h +++ /dev/null @@ -1,322 +0,0 @@ -/* - * Copyright © 2004 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - */ - -#ifndef _CAIRO_TEST_H_ -#define _CAIRO_TEST_H_ - -#include "cairo-boilerplate.h" - -#include - -CAIRO_BEGIN_DECLS - -#if HAVE_STDINT_H -# include -#elif HAVE_INTTYPES_H -# include -#elif HAVE_SYS_INT_TYPES_H -# include -#elif defined(_MSC_VER) -typedef __int8 int8_t; -typedef unsigned __int8 uint8_t; -typedef __int16 int16_t; -typedef unsigned __int16 uint16_t; -typedef __int32 int32_t; -typedef unsigned __int32 uint32_t; -typedef __int64 int64_t; -typedef unsigned __int64 uint64_t; -# ifndef HAVE_UINT64_T -# define HAVE_UINT64_T 1 -# endif -#else -#error Cannot find definitions for fixed-width integral types (uint8_t, uint32_t, \etc.) -#endif - -#ifdef _MSC_VER -#define _USE_MATH_DEFINES - -#include -#define isnan(x) _isnan(x) - -#endif - -#if HAVE_FENV_H -# include -#endif -/* The following are optional in C99, so define them if they aren't yet */ -#ifndef FE_DIVBYZERO -#define FE_DIVBYZERO 0 -#endif -#ifndef FE_INEXACT -#define FE_INEXACT 0 -#endif -#ifndef FE_INVALID -#define FE_INVALID 0 -#endif -#ifndef FE_OVERFLOW -#define FE_OVERFLOW 0 -#endif -#ifndef FE_UNDERFLOW -#define FE_UNDERFLOW 0 -#endif - -#include - -static inline double -cairo_test_NaN (void) -{ -#ifdef _MSC_VER - /* MSVC strtod("NaN", NULL) returns 0.0 */ - union { - uint32_t i[2]; - double d; - } nan = {{0xffffffff, 0x7fffffff}}; - return nan.d; -#else - return strtod("NaN", NULL); -#endif -} - -#ifndef MIN -#define MIN(a, b) ((a) < (b) ? (a) : (b)) -#endif - -#ifndef MAX -#define MAX(a, b) ((a) > (b) ? (a) : (b)) -#endif - -#define CAIRO_TEST_OUTPUT_DIR "output" - -#define CAIRO_TEST_LOG_SUFFIX ".log" - -#define CAIRO_TEST_FONT_FAMILY "DejaVu" - -/* What is a fail and what isn't? - * When running the test suite we want to detect unexpected output. This - * can be caused by a change we have made to cairo itself, or a change - * in our environment. To capture this we classify the expected output into 3 - * classes: - * - * REF -- Perfect output. - * Might be different for each backend, due to slight implementation - * differences. - * - * NEW -- A new failure. We have uncovered a bug within cairo and have - * recorded the current failure (along with the expected output - * if possible!) so we can detect any changes in our attempt to - * fix the bug. - * - * XFAIL -- An external failure. We believe the cairo output is perfect, - * but an external renderer is causing gross failure. - * (We also use this to capture current WONTFIX issues within cairo, - * such as overflow in internal coordinates, so as not to distract - * us when regression testing.) - * - * If no REF is given for a test, then it is assumed to be XFAIL. - */ -#define CAIRO_TEST_REF_SUFFIX ".ref" -#define CAIRO_TEST_XFAIL_SUFFIX ".xfail" -#define CAIRO_TEST_NEW_SUFFIX ".new" - -#define CAIRO_TEST_OUT_SUFFIX ".out" -#define CAIRO_TEST_DIFF_SUFFIX ".diff" - -#define CAIRO_TEST_PNG_EXTENSION ".png" -#define CAIRO_TEST_OUT_PNG CAIRO_TEST_OUT_SUFFIX CAIRO_TEST_PNG_EXTENSION -#define CAIRO_TEST_REF_PNG CAIRO_TEST_REF_SUFFIX CAIRO_TEST_PNG_EXTENSION -#define CAIRO_TEST_DIFF_PNG CAIRO_TEST_DIFF_SUFFIX CAIRO_TEST_PNG_EXTENSION - -typedef enum cairo_test_status { - CAIRO_TEST_SUCCESS = 0, - CAIRO_TEST_NO_MEMORY, - CAIRO_TEST_FAILURE, - CAIRO_TEST_NEW, - CAIRO_TEST_XFAILURE, - CAIRO_TEST_ERROR, - CAIRO_TEST_CRASHED, - CAIRO_TEST_UNTESTED = 77 /* match automake's skipped exit status */ -} cairo_test_status_t; - -typedef struct _cairo_test_context cairo_test_context_t; -typedef struct _cairo_test cairo_test_t; - -typedef cairo_test_status_t -(cairo_test_preamble_function_t) (cairo_test_context_t *ctx); - -typedef cairo_test_status_t -(cairo_test_draw_function_t) (cairo_t *cr, int width, int height); - -struct _cairo_test { - const char *name; - const char *description; - const char *keywords; - const char *requirements; - double width; - double height; - cairo_test_preamble_function_t *preamble; - cairo_test_draw_function_t *draw; -}; - -/* The standard test interface which works by examining result image. - * - * CAIRO_TEST() constructs a test which will be called once before (the - * preamble callback), and then once for each testable backend (the draw - * callback). The following checks will be performed for each backend: - * - * 1) If preamble() returns CAIRO_TEST_UNTESTED, the test is skipped. - * - * 2) If preamble() does not return CAIRO_TEST_SUCCESS, the test fails. - * - * 3) If draw() does not return CAIRO_TEST_SUCCESS then this backend - * fails. - * - * 4) Otherwise, if cairo_status(cr) indicates an error then this - * backend fails. - * - * 5) Otherwise, if the image size is 0, then this backend passes. - * - * 6) Otherwise, if every channel of every pixel exactly matches the - * reference image then this backend passes. If not, this backend - * fails. - * - * The overall test result is PASS if and only if there is at least - * one backend that is tested and if all tested backend pass according - * to the four criteria above. - */ -#define CAIRO_TEST(name, description, keywords, requirements, width, height, preamble, draw) \ -void _register_##name (void); \ -void _register_##name (void) { \ - static cairo_test_t test = { \ - #name, description, \ - keywords, requirements, \ - width, height, \ - preamble, draw \ - }; \ - cairo_test_register (&test); \ -} - -void -cairo_test_register (cairo_test_t *test); - -/* The full context for the test. - * For ordinary tests (using the CAIRO_TEST()->draw interface) the context - * is passed to the draw routine via user_data on the cairo_t. - * The reason why the context is not passed as an explicit parameter is that - * it is rarely required by the test itself and by removing the parameter - * we can keep the draw routines simple and serve as example code. - * - * In contrast, for the preamble phase the context is passed as the only - * parameter. - */ -struct _cairo_test_context { - const cairo_test_t *test; - const char *test_name; - - FILE *log_file; - const char *output; - const char *srcdir; /* directory containing sources and input data */ - const char *refdir; /* directory containing reference images */ - - char *ref_name; /* cache of the current reference image */ - cairo_surface_t *ref_image; - cairo_surface_t *ref_image_flattened; - - size_t num_targets; - cairo_bool_t limited_targets; - const cairo_boilerplate_target_t **targets_to_test; - cairo_bool_t own_targets; - - int malloc_failure; - int last_fault_count; - - int timeout; -}; - -/* Retrieve the test context from the cairo_t, used for logging, paths etc */ -const cairo_test_context_t * -cairo_test_get_context (cairo_t *cr); - - -/* Print a message to the log file, ala printf. */ -void -cairo_test_log (const cairo_test_context_t *ctx, - const char *fmt, ...) CAIRO_BOILERPLATE_PRINTF_FORMAT(2, 3); -void -cairo_test_logv (const cairo_test_context_t *ctx, - const char *fmt, va_list ap) CAIRO_BOILERPLATE_PRINTF_FORMAT(2, 0); - -/* Helper functions that take care of finding source images even when - * building in a non-srcdir manner, (i.e. the tests will be run in a - * directory that is different from the one where the source image - * exists). */ -cairo_surface_t * -cairo_test_create_surface_from_png (const cairo_test_context_t *ctx, - const char *filename); - -cairo_pattern_t * -cairo_test_create_pattern_from_png (const cairo_test_context_t *ctx, - const char *filename); - -void -cairo_test_paint_checkered (cairo_t *cr); - -#define CAIRO_TEST_DOUBLE_EQUALS(a,b) (fabs((a)-(b)) < 0.00001) - -cairo_bool_t -cairo_test_is_target_enabled (const cairo_test_context_t *ctx, - const char *target); - -char * -cairo_test_get_name (const cairo_test_t *test); - -cairo_bool_t -cairo_test_malloc_failure (const cairo_test_context_t *ctx, - cairo_status_t status); - -cairo_test_status_t -cairo_test_status_from_status (const cairo_test_context_t *ctx, - cairo_status_t status); - -char * -cairo_test_reference_filename (const cairo_test_context_t *ctx, - const char *base_name, - const char *test_name, - const char *target_name, - const char *base_target_name, - const char *format, - const char *suffix, - const char *extension); - -cairo_surface_t * -cairo_test_get_reference_image (cairo_test_context_t *ctx, - const char *filename, - cairo_bool_t flatten); - -cairo_bool_t -cairo_test_mkdir (const char *path); - -CAIRO_END_DECLS - -#endif diff --git a/test/caps-joins-alpha.c b/test/caps-joins-alpha.c deleted file mode 100644 index bbff44e..0000000 --- a/test/caps-joins-alpha.c +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * Copyright © 2006 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" - -#define LINE_WIDTH 10. -#define SIZE (5 * LINE_WIDTH) -#define PAD (2 * LINE_WIDTH) - -static void -make_path (cairo_t *cr) -{ - cairo_move_to (cr, 0., 0.); - cairo_rel_line_to (cr, 0., SIZE); - cairo_rel_line_to (cr, SIZE, 0.); - cairo_close_path (cr); - - cairo_move_to (cr, 2 * LINE_WIDTH, 0.); - cairo_rel_line_to (cr, 3 * LINE_WIDTH, 0.); - cairo_rel_line_to (cr, 0., 3 * LINE_WIDTH); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - /* First draw a checkered background */ - cairo_test_paint_checkered (cr); - - /* Then draw the original caps-joins test but with a bit of alphs thrown in. */ - cairo_set_line_width (cr, LINE_WIDTH); - - cairo_set_source_rgba (cr, 1.0, 0.0, 0.0, 0.5); /* 50% red */ - cairo_translate (cr, PAD, PAD); - - make_path (cr); - cairo_set_line_cap (cr, CAIRO_LINE_CAP_BUTT); - cairo_set_line_join (cr, CAIRO_LINE_JOIN_BEVEL); - cairo_stroke (cr); - - cairo_set_source_rgba (cr, 0.0, 1.0, 0.0, 0.5); /* 50% green */ - cairo_translate (cr, SIZE + PAD, 0.); - - make_path (cr); - cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND); - cairo_set_line_join (cr, CAIRO_LINE_JOIN_ROUND); - cairo_stroke (cr); - - cairo_set_source_rgba (cr, 0.0, 0.0, 1.0, 0.5); /* 50% blue */ - - cairo_translate (cr, SIZE + PAD, 0.); - - make_path (cr); - cairo_set_line_cap (cr, CAIRO_LINE_CAP_SQUARE); - cairo_set_line_join (cr, CAIRO_LINE_JOIN_MITER); - cairo_stroke (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (caps_joins_alpha, - "Test caps and joins with some source alpha", - "stroke", /* keywords */ - NULL, /* requirements */ - 3 * (PAD + SIZE) + PAD, - PAD + SIZE + PAD, - NULL, draw) diff --git a/test/caps-joins-curve.c b/test/caps-joins-curve.c deleted file mode 100644 index cf19754..0000000 --- a/test/caps-joins-curve.c +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright © 2008 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -#define LINE_WIDTH 10. -#define SIZE (5 * LINE_WIDTH) -#define PAD (3 * LINE_WIDTH) - -static void -make_path (cairo_t *cr) -{ - cairo_move_to (cr, 0, 0); - cairo_rel_curve_to (cr, - -SIZE/4, SIZE/3, - -SIZE/4, SIZE/3, - 0, SIZE); - cairo_rel_curve_to (cr, - SIZE/3, -SIZE/4, - SIZE/3, -SIZE/4, - SIZE, 0); - cairo_close_path (cr); - - cairo_move_to (cr, 5 * LINE_WIDTH, 3 * LINE_WIDTH); - cairo_rel_curve_to (cr, - 0, -3 * LINE_WIDTH, - 0, -3 * LINE_WIDTH, - -3 * LINE_WIDTH, -3 * LINE_WIDTH); -} - -static void -draw_caps_joins (cairo_t *cr) -{ - cairo_save (cr); - - cairo_translate (cr, PAD, PAD); - - make_path (cr); - cairo_set_line_cap (cr, CAIRO_LINE_CAP_BUTT); - cairo_set_line_join (cr, CAIRO_LINE_JOIN_BEVEL); - cairo_stroke (cr); - - cairo_translate (cr, SIZE + PAD, 0.); - - make_path (cr); - cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND); - cairo_set_line_join (cr, CAIRO_LINE_JOIN_ROUND); - cairo_stroke (cr); - - cairo_translate (cr, SIZE + PAD, 0.); - - make_path (cr); - cairo_set_line_cap (cr, CAIRO_LINE_CAP_SQUARE); - cairo_set_line_join (cr, CAIRO_LINE_JOIN_MITER); - cairo_stroke (cr); - - cairo_restore (cr); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - /* We draw in the default black, so paint white first. */ - cairo_save (cr); - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); /* white */ - cairo_paint (cr); - cairo_restore (cr); - - cairo_set_line_width (cr, LINE_WIDTH); - - draw_caps_joins (cr); - - /* and reflect to generate the opposite vertex ordering */ - cairo_translate (cr, 0, height); - cairo_scale (cr, 1, -1); - - draw_caps_joins (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (caps_joins_curve, - "Test caps and joins on curves", - "stroke, cap, join", /* keywords */ - NULL, /* requirements */ - 3 * (PAD + SIZE) + PAD, - 2 * (PAD + SIZE) + PAD, - NULL, draw) - diff --git a/test/caps-joins.c b/test/caps-joins.c deleted file mode 100644 index de22d03..0000000 --- a/test/caps-joins.c +++ /dev/null @@ -1,150 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" - -#define LINE_WIDTH 10. -#define SIZE (5 * LINE_WIDTH) -#define PAD (2 * LINE_WIDTH) - -static void -make_path (cairo_t *cr) -{ - cairo_move_to (cr, 0., 0.); - cairo_rel_line_to (cr, 0., SIZE); - cairo_rel_line_to (cr, SIZE, 0.); - cairo_close_path (cr); - - cairo_move_to (cr, 5 * LINE_WIDTH, 3 * LINE_WIDTH); - cairo_rel_line_to (cr, 0., -3 * LINE_WIDTH); - cairo_rel_line_to (cr, -3 * LINE_WIDTH, 0.); -} - -static void -draw_caps_joins (cairo_t *cr) -{ - cairo_save (cr); - - cairo_translate (cr, PAD, PAD); - - make_path (cr); - cairo_set_line_cap (cr, CAIRO_LINE_CAP_BUTT); - cairo_set_line_join (cr, CAIRO_LINE_JOIN_BEVEL); - cairo_stroke (cr); - - cairo_translate (cr, SIZE + PAD, 0.); - - make_path (cr); - cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND); - cairo_set_line_join (cr, CAIRO_LINE_JOIN_ROUND); - cairo_stroke (cr); - - cairo_translate (cr, SIZE + PAD, 0.); - - make_path (cr); - cairo_set_line_cap (cr, CAIRO_LINE_CAP_SQUARE); - cairo_set_line_join (cr, CAIRO_LINE_JOIN_MITER); - cairo_stroke (cr); - - cairo_restore (cr); -} - -static cairo_test_status_t -draw (cairo_t *cr, float line_width) -{ - /* We draw in the default black, so paint white first. */ - cairo_save (cr); - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); /* white */ - cairo_paint (cr); - cairo_restore (cr); - - cairo_set_line_width (cr, line_width); - - draw_caps_joins (cr); - - /* and reflect to generate the opposite vertex ordering */ - cairo_translate (cr, 0, 2 * (PAD + SIZE) + PAD); - cairo_scale (cr, 1, -1); - - draw_caps_joins (cr); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -draw_10 (cairo_t *cr, int width, int height) -{ - return draw (cr, LINE_WIDTH); -} - -static cairo_test_status_t -draw_2 (cairo_t *cr, int width, int height) -{ - return draw (cr, 2.0); -} - -static cairo_test_status_t -draw_1 (cairo_t *cr, int width, int height) -{ - return draw (cr, 1.0); -} - -static cairo_test_status_t -draw_05 (cairo_t *cr, int width, int height) -{ - return draw (cr, 0.5); -} - -CAIRO_TEST (caps_joins, - "Test caps and joins", - "stroke", /* keywords */ - NULL, /* requirements */ - 3 * (PAD + SIZE) + PAD, - 2 * (PAD + SIZE) + PAD, - NULL, draw_10) - -CAIRO_TEST (caps_joins_2, - "Test caps and joins with default line width", - "stroke", /* keywords */ - NULL, /* requirements */ - 3 * (PAD + SIZE) + PAD, - 2 * (PAD + SIZE) + PAD, - NULL, draw_2) - -CAIRO_TEST (caps_joins_1, - "Test caps and joins with hairlines", - "stroke", /* keywords */ - NULL, /* requirements */ - 3 * (PAD + SIZE) + PAD, - 2 * (PAD + SIZE) + PAD, - NULL, draw_1) - -CAIRO_TEST (caps_joins_05, - "Test caps and joins with fine lines", - "stroke", /* keywords */ - NULL, /* requirements */ - 3 * (PAD + SIZE) + PAD, - 2 * (PAD + SIZE) + PAD, - NULL, draw_05) diff --git a/test/caps-sub-paths.c b/test/caps-sub-paths.c deleted file mode 100644 index 2310eb7..0000000 --- a/test/caps-sub-paths.c +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" - -/* Test case for bug #4205: - - https://bugs.freedesktop.org/show_bug.cgi?id=4205 -*/ - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - /* We draw in the default black, so paint white first. */ - cairo_save (cr); - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); /* white */ - cairo_paint (cr); - cairo_restore (cr); - - cairo_set_line_width (cr, 4); - cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND); - - cairo_move_to (cr, 4, 4); - cairo_line_to (cr, 4, 16); - - cairo_move_to (cr, 10, 4); - cairo_line_to (cr, 10, 16); - - cairo_move_to (cr, 16, 4); - cairo_line_to (cr, 16, 16); - - cairo_stroke (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (caps_sub_paths, - "Test that sub-paths receive caps.", - "stroke", /* keywords */ - NULL, /* requirements */ - 20, 20, - NULL, draw) - diff --git a/test/caps-tails-curve.c b/test/caps-tails-curve.c deleted file mode 100644 index fa6aded..0000000 --- a/test/caps-tails-curve.c +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Copyright © 2011 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -#define LINE_WIDTH 30. -#define SIZE (2 * LINE_WIDTH) -#define PAD (2 * LINE_WIDTH) - -static void -make_path (cairo_t *cr, double theta) -{ - double line_width = cairo_get_line_width (cr) / 4; - - cairo_move_to (cr, 0, 0); - cairo_rel_curve_to (cr, - SIZE/3, -SIZE/4, - SIZE/3, -SIZE/4, - SIZE, 0); - - cairo_rel_line_to (cr, - cos (theta) * line_width, - sin (theta) * line_width); -} - -static void -draw_joins (cairo_t *cr, double theta) -{ - make_path (cr, theta); - cairo_set_line_join (cr, CAIRO_LINE_JOIN_BEVEL); - cairo_stroke (cr); - - cairo_translate (cr, SIZE + PAD, 0.); - - make_path (cr, theta); - cairo_set_line_join (cr, CAIRO_LINE_JOIN_ROUND); - cairo_stroke (cr); - - cairo_translate (cr, SIZE + PAD, 0.); - - make_path (cr, theta); - cairo_set_line_join (cr, CAIRO_LINE_JOIN_MITER); - cairo_stroke (cr); - - cairo_translate (cr, SIZE + PAD, 0.); -} - -static void -draw_caps_joins (cairo_t *cr, double theta) -{ - cairo_translate (cr, PAD, 0); - cairo_set_line_cap (cr, CAIRO_LINE_CAP_BUTT); - draw_joins (cr, theta); - - cairo_translate (cr, PAD, 0); - cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND); - draw_joins (cr, theta); - - cairo_translate (cr, PAD, 0); - cairo_set_line_cap (cr, CAIRO_LINE_CAP_SQUARE); - draw_joins (cr, theta); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - const double theta[] = { - -M_PI/2, -M_PI/4, 0, M_PI/8, M_PI/3, M_PI - }; - unsigned int t; - - /* We draw in the default black, so paint white first. */ - cairo_save (cr); - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); /* white */ - cairo_paint (cr); - cairo_restore (cr); - - cairo_set_line_width (cr, LINE_WIDTH); - - for (t = 0; t < ARRAY_LENGTH(theta); t++) { - cairo_save (cr); - cairo_translate (cr, 0, t * (SIZE + PAD) + PAD); - draw_caps_joins (cr, theta[t]); - cairo_restore (cr); - - cairo_save (cr); - /* and reflect to generate the opposite vertex ordering */ - cairo_translate (cr, 0, height - t * (SIZE + PAD) - PAD); - cairo_scale (cr, 1, -1); - draw_caps_joins (cr, theta[t]); - cairo_restore (cr); - } - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (caps_tails_curve, - "Test caps and joins on short tail segments", - "stroke, cap, join", /* keywords */ - NULL, /* requirements */ - 9 * (PAD + SIZE) + 4*PAD, - 12 * (PAD + SIZE) + PAD, - NULL, draw) - diff --git a/test/caps.c b/test/caps.c deleted file mode 100644 index 87f008a..0000000 --- a/test/caps.c +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Copyright © 2008 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -#define LINE_WIDTH 10. -#define SIZE (5 * LINE_WIDTH) -#define PAD (2 * LINE_WIDTH) - -static void -make_path (cairo_t *cr) -{ - int i; - - cairo_save (cr); - for (i = 0; i <= 3; i++) { - cairo_new_sub_path (cr); - cairo_move_to (cr, -SIZE / 2, 0.); - cairo_line_to (cr, SIZE / 2, 0.); - cairo_rotate (cr, M_PI / 4.); - } - cairo_restore (cr); -} - -static cairo_test_status_t -draw (cairo_t *cr) -{ - cairo_save (cr); - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); /* white */ - cairo_paint (cr); - cairo_restore (cr); - - cairo_translate (cr, PAD + SIZE / 2., PAD + SIZE / 2.); - - cairo_set_line_cap (cr, CAIRO_LINE_CAP_BUTT); - cairo_set_line_join (cr, CAIRO_LINE_JOIN_BEVEL); - make_path (cr); - cairo_stroke (cr); - - cairo_translate (cr, 0, SIZE + PAD); - - cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND); - cairo_set_line_join (cr, CAIRO_LINE_JOIN_ROUND); - make_path (cr); - cairo_stroke (cr); - - cairo_translate (cr, 0, SIZE + PAD); - - cairo_set_line_cap (cr, CAIRO_LINE_CAP_SQUARE); - cairo_set_line_join (cr, CAIRO_LINE_JOIN_MITER); - make_path (cr); - cairo_stroke (cr); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -draw_10 (cairo_t *cr, int width, int height) -{ - cairo_set_line_width (cr, LINE_WIDTH); - return draw (cr); -} - -static cairo_test_status_t -draw_2 (cairo_t *cr, int width, int height) -{ - cairo_set_line_width (cr, 2); - return draw (cr); -} - -static cairo_test_status_t -draw_1 (cairo_t *cr, int width, int height) -{ - cairo_set_line_width (cr, 1); - return draw (cr); -} - -static cairo_test_status_t -draw_05 (cairo_t *cr, int width, int height) -{ - cairo_set_line_width (cr, 0.5); - return draw (cr); -} - -CAIRO_TEST (caps, - "Test caps", - "stroke, caps", /* keywords */ - NULL, /* requirements */ - PAD + SIZE + PAD, - 3 * (PAD + SIZE) + PAD, - NULL, draw_10) - -CAIRO_TEST (caps_2, - "Test normal caps", - "stroke, caps", /* keywords */ - NULL, /* requirements */ - PAD + SIZE + PAD, - 3 * (PAD + SIZE) + PAD, - NULL, draw_2) - -CAIRO_TEST (caps_1, - "Test hairline caps", - "stroke, caps", /* keywords */ - NULL, /* requirements */ - PAD + SIZE + PAD, - 3 * (PAD + SIZE) + PAD, - NULL, draw_1) - -CAIRO_TEST (caps_05, - "Test fine caps", - "stroke, caps", /* keywords */ - NULL, /* requirements */ - PAD + SIZE + PAD, - 3 * (PAD + SIZE) + PAD, - NULL, draw_05) - diff --git a/test/check-refs.sh b/test/check-refs.sh deleted file mode 100755 index 81ef81b..0000000 --- a/test/check-refs.sh +++ /dev/null @@ -1,63 +0,0 @@ -#!/bin/bash - -cd $(dirname $0)/reference || exit - -pdiff=$1 -[ -n "$pdiff" ] || pdiff=../pdiff/perceptualdiff -if [ ! -e "${pdiff}" ]; then - echo "Error: requires pdiff executable" - exit 128 -fi - -for file in *.ref.png; do - test=$(echo $file | cut -d'.' -f1) - target=$(echo $file | cut -d'.' -f2) - format=$(echo $file | cut -d'.' -f3) - notes="" - ref="" - result="" - - if [ $target = 'base' ]; then - # Ignore the base images for this script's purposes - continue - elif [ $target = 'ref' ]; then - # This is actually the baseline reference image - continue - elif [ $format = 'ref' ]; then - # This is either a format-specific reference, or a target-specific/format-generic image - # In either case, compare it against the generic reference image - ref="$test.ref.png" - else - # Prefer the target-specific/format-generic reference image, if available - ref="$test.$target.ref.png" - if [ ! -e $ref ]; then - ref="$test.$format.ref.png" - fi - fi - - # Special cases - if [ $test = "create-from-png" ]; then - # The create-from-png test utilizes multiple reference images directly - continue - elif [ $test = "fallback-resolution" ]; then - # The fallback-resolution test generates a set of reference images; - # These won't be redundant with one another, but just ignore them all. - continue - fi - - if [ -e $ref ]; then - if cmp --silent "$ref" "$file" ; then - printf "redundant: %s and %s are byte-by-byte identical files\n" $file $ref - else - # Run perceptualdiff with minimum threshold - pdiff_output=$($pdiff $ref $file -threshold 1) - result=${pdiff_output%:*} - notes=$(echo "${pdiff_output#*: }" | tail -n 1) - if [ "$result" = "PASS" ] && [ "$notes" = "Images are binary identical" ]; then - printf "redundant: %s and %s are pixel equivalent images\n" $file $ref - notes="" - fi - fi - fi - -done diff --git a/test/checkerboard.c b/test/checkerboard.c deleted file mode 100644 index aeb2efe..0000000 --- a/test/checkerboard.c +++ /dev/null @@ -1,48 +0,0 @@ -/* -*- Mode: c; c-basic-offset: 4; indent-tabs-mode: t; tab-width: 8; -*- */ -/* - * Copyright 2011 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Chris Wilson - */ - -/* Test the basic background used extensively in the test suite. */ - -#include "cairo-test.h" - -#define HEIGHT 32 -#define WIDTH 32 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_test_paint_checkered (cr); - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (checkerboard, - "Tests the checkerboard background", - "paint", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) - diff --git a/test/clear-source.c b/test/clear-source.c deleted file mode 100644 index 5410932..0000000 --- a/test/clear-source.c +++ /dev/null @@ -1,169 +0,0 @@ -/* - * Copyright 2009 Benjamin Otte - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Benjamin Otte - */ - -#include "cairo-test.h" - -typedef enum { - CLEAR, - CLEARED, - PAINTED -} surface_type_t; - -#define SIZE 10 -#define SPACE 5 - -static cairo_surface_t * -create_surface (cairo_t *target, cairo_content_t content, surface_type_t type) -{ - cairo_surface_t *surface; - cairo_t *cr; - - surface = cairo_surface_create_similar (cairo_get_target (target), - content, - SIZE, SIZE); - - if (type == CLEAR) - return surface; - - cr = cairo_create (surface); - cairo_surface_destroy (surface); - - cairo_set_source_rgb (cr, 0.75, 0, 0); - cairo_paint (cr); - - if (type == PAINTED) - goto DONE; - - cairo_set_operator (cr, CAIRO_OPERATOR_CLEAR); - cairo_paint (cr); - -DONE: - surface = cairo_surface_reference (cairo_get_target (cr)); - cairo_destroy (cr); - - return surface; -} - -static void -paint (cairo_t *cr, cairo_surface_t *surface) -{ - cairo_set_source_surface (cr, surface, 0, 0); - cairo_paint (cr); -} - -static void -fill (cairo_t *cr, cairo_surface_t *surface) -{ - cairo_set_source_surface (cr, surface, 0, 0); - cairo_rectangle (cr, -SPACE, -SPACE, SIZE + 2 * SPACE, SIZE + 2 * SPACE); - cairo_fill (cr); -} - -static void -stroke (cairo_t *cr, cairo_surface_t *surface) -{ - cairo_set_source_surface (cr, surface, 0, 0); - cairo_set_line_width (cr, 2.0); - cairo_rectangle (cr, 1, 1, SIZE - 2, SIZE - 2); - cairo_stroke (cr); -} - -static void -mask (cairo_t *cr, cairo_surface_t *surface) -{ - cairo_set_source_rgb (cr, 0, 0, 0.75); - cairo_mask_surface (cr, surface, 0, 0); -} - -static void -mask_self (cairo_t *cr, cairo_surface_t *surface) -{ - cairo_set_source_surface (cr, surface, 0, 0); - cairo_mask_surface (cr, surface, 0, 0); -} - -static void -glyphs (cairo_t *cr, cairo_surface_t *surface) -{ - cairo_set_source_surface (cr, surface, 0, 0); - cairo_select_font_face (cr, - "@cairo:", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - cairo_set_font_size (cr, 16); - cairo_translate (cr, 0, SIZE); - cairo_show_text (cr, "C"); -} - -typedef void (* operation_t) (cairo_t *cr, cairo_surface_t *surface); -static operation_t operations[] = { - paint, - fill, - stroke, - mask, - mask_self, - glyphs -}; - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_content_t contents[] = { CAIRO_CONTENT_COLOR_ALPHA, CAIRO_CONTENT_COLOR, CAIRO_CONTENT_ALPHA }; - unsigned int content, type, ops; - - cairo_set_source_rgb (cr, 0.5, 0.5, 0.5); - cairo_paint (cr); - cairo_translate (cr, SPACE, SPACE); - - for (type = 0; type <= PAINTED; type++) { - for (content = 0; content < ARRAY_LENGTH (contents); content++) { - cairo_surface_t *surface; - - surface = create_surface (cr, contents[content], type); - - cairo_save (cr); - for (ops = 0; ops < ARRAY_LENGTH (operations); ops++) { - cairo_save (cr); - operations[ops] (cr, surface); - cairo_restore (cr); - cairo_translate (cr, 0, SIZE + SPACE); - } - cairo_restore (cr); - cairo_translate (cr, SIZE + SPACE, 0); - - cairo_surface_destroy (surface); - } - } - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (clear_source, - "Check painting with cleared surfaces works as expected", - NULL, /* keywords */ - NULL, /* requirements */ - (SIZE + SPACE) * 9 + SPACE, ARRAY_LENGTH (operations) * (SIZE + SPACE) + SPACE, - NULL, draw) diff --git a/test/clear.c b/test/clear.c deleted file mode 100644 index 696993d..0000000 --- a/test/clear.c +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright © 2009 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_text_extents_t extents; - - cairo_set_source_rgb (cr, 0, 0, 1); - cairo_paint (cr); - - cairo_set_operator (cr, CAIRO_OPERATOR_CLEAR); - - cairo_translate (cr, 2, 2); - cairo_save (cr); - cairo_rectangle (cr, 0, 0, 20, 20); - cairo_clip (cr); - cairo_rectangle (cr, 5, 5, 10, 10); - cairo_fill (cr); - cairo_restore (cr); - - cairo_translate (cr, 20, 0); - cairo_save (cr); - cairo_rectangle (cr, 0, 0, 20, 20); - cairo_clip (cr); - cairo_arc (cr, 10, 10, 8, 0, 2*M_PI); - cairo_fill (cr); - cairo_restore (cr); - - cairo_translate (cr, 0, 20); - cairo_save (cr); - cairo_rectangle (cr, 0, 0, 20, 20); - cairo_clip (cr); - cairo_text_extents (cr, "Cairo", &extents); - cairo_move_to (cr, - 10 - (extents.width/2. + extents.x_bearing), - 10 - (extents.height/2. + extents.y_bearing)); - cairo_text_path (cr, "Cairo"); - cairo_fill (cr); - cairo_restore (cr); - - cairo_translate (cr, -20, 0); - cairo_save (cr); - cairo_rectangle (cr, 0, 0, 20, 20); - cairo_clip (cr); - cairo_move_to (cr, 10, 2); - cairo_line_to (cr, 18, 18); - cairo_line_to (cr, 2, 18); - cairo_close_path (cr); - cairo_fill (cr); - cairo_restore (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (clear, - "Test masked clears", - "paint, clear", /* keywords */ - NULL, /* requirements */ - 44, 44, - NULL, draw) - diff --git a/test/clip-all.c b/test/clip-all.c deleted file mode 100644 index dc216c9..0000000 --- a/test/clip-all.c +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright © 2005 Novell, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Novell, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Novell, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * NOVELL, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL NOVELL, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Radek Doulík - */ - -#include "cairo-test.h" - -#define SIZE 10 -#define CLIP_SIZE 2 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_rectangle (cr, 0, 0, SIZE, SIZE); - cairo_set_source_rgb (cr, 0, 0, 1); - cairo_fill (cr); - - cairo_reset_clip (cr); - cairo_rectangle (cr, CLIP_SIZE, CLIP_SIZE, CLIP_SIZE, CLIP_SIZE); - cairo_clip (cr); - cairo_rectangle (cr, 3*CLIP_SIZE, 3*CLIP_SIZE, CLIP_SIZE, CLIP_SIZE); - cairo_clip (cr); - - cairo_translate (cr, .5, .5); - - cairo_reset_clip (cr); - cairo_rectangle (cr, CLIP_SIZE, CLIP_SIZE, CLIP_SIZE, CLIP_SIZE); - cairo_clip (cr); - cairo_rectangle (cr, 3*CLIP_SIZE, 3*CLIP_SIZE, CLIP_SIZE, CLIP_SIZE); - cairo_clip (cr); - - cairo_rectangle (cr, 0, 0, SIZE, SIZE); - cairo_set_source_rgb (cr, 1, 1, 0); - cairo_fill (cr); - - /* https://bugs.freedesktop.org/show_bug.cgi?id=13084 */ - cairo_select_font_face (cr, - CAIRO_TEST_FONT_FAMILY " Sans", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - - cairo_move_to (cr, 0., SIZE); - cairo_show_text (cr, "cairo"); - - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (clip_all, - "Test clipping with everything clipped out", - "clip", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, draw) - diff --git a/test/clip-complex-bug61592.c b/test/clip-complex-bug61592.c deleted file mode 100644 index 998b7aa..0000000 --- a/test/clip-complex-bug61592.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright © 2013 Uli Schlachter - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Uli Schlachter - */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_set_source_rgb (cr, 0, 0, 0); - cairo_paint (cr); - - cairo_set_antialias(cr, CAIRO_ANTIALIAS_NONE); - cairo_move_to(cr, 85, -465); - cairo_line_to(cr, 3, 4.1); - cairo_line_to(cr, -145, -25); - cairo_close_path(cr); - cairo_clip(cr); - - cairo_set_antialias(cr, CAIRO_ANTIALIAS_DEFAULT); - cairo_move_to(cr, -139, -524); - cairo_line_to(cr, 78, 44); - cairo_line_to(cr, -229, -10); - cairo_close_path(cr); - cairo_clip(cr); - - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (clip_complex_bug61492, - "Exercise a bug found in 1.12", - "clip", /* keywords */ - NULL, /* requirements */ - 8, 5, - NULL, draw) diff --git a/test/clip-complex-shape.c b/test/clip-complex-shape.c deleted file mode 100644 index d7d5301..0000000 --- a/test/clip-complex-shape.c +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright 2011 SCore Corporation - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Taekyun Kim - */ - -#include "cairo-test.h" - -static void -rounded_rectangle(cairo_t *cr, - double x, double y, - double width, double height, - double radius) -{ - cairo_move_to (cr, x, y + radius); - cairo_line_to (cr, x, y + height - radius); - cairo_curve_to (cr, x, y + height - radius/2.0, - x + radius/2.0, y + height, - x + radius, y + height); - cairo_line_to (cr, x + width - radius, y + height); - cairo_curve_to (cr, x + width - radius/2.0, y + height, - x + width, y + height - radius/2.0, - x + width, y + height - radius); - cairo_line_to (cr, x + width, y + radius); - cairo_curve_to (cr, x + width, y + radius/2.0, - x + width - radius/2.0, y, - x + width - radius, y); - cairo_line_to (cr, x + radius, y); - cairo_curve_to (cr, x + radius/2.0, y, x, y + radius/2.0, x, y + radius); - cairo_close_path(cr); -} - -static void -background (cairo_t *cr) -{ - cairo_set_operator(cr, CAIRO_OPERATOR_SOURCE); - cairo_set_source_rgba(cr, 1.0, 1.0, 1.0, 1.0); - cairo_paint(cr); -} - -static void -foreground (cairo_t *cr) -{ - cairo_set_source_rgba(cr, 1.0, 0.0, 0.0, 1.0); - cairo_set_operator(cr, CAIRO_OPERATOR_OVER); - cairo_rectangle(cr, 20, 20, 60, 60); - cairo_fill(cr); -} - -static cairo_test_status_t -clip_eo_mono (cairo_t *cr, int width, int height) -{ - - background (cr); - - cairo_set_antialias(cr, CAIRO_ANTIALIAS_NONE); - cairo_set_fill_rule(cr, CAIRO_FILL_RULE_EVEN_ODD); - rounded_rectangle(cr, 0, 0, 40, 100, 10); - rounded_rectangle(cr, 60, 0, 40, 100, 10); - cairo_clip(cr); - - foreground (cr); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -clip_eo_aa (cairo_t *cr, int width, int height) -{ - background (cr); - - cairo_set_antialias(cr, CAIRO_ANTIALIAS_DEFAULT); - cairo_set_fill_rule(cr, CAIRO_FILL_RULE_EVEN_ODD); - rounded_rectangle(cr, 0, 0, 40, 100, 10); - rounded_rectangle(cr, 60, 0, 40, 100, 10); - cairo_clip(cr); - - foreground (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (clip_complex_shape_eo_mono, - "Test clipping against a complex shape", - "clip", /* keywords */ - NULL, /* requirements */ - 100, 100, - NULL, clip_eo_mono) -CAIRO_TEST (clip_complex_shape_eo_aa, - "Test clipping against a complex shape", - "clip", /* keywords */ - NULL, /* requirements */ - 100, 100, - NULL, clip_eo_aa) diff --git a/test/clip-contexts.c b/test/clip-contexts.c deleted file mode 100644 index 39d2004..0000000 --- a/test/clip-contexts.c +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright © 2010 Intel Corporation - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Intel Corporation not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Intel Corporation makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * INTEL CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL INTEL CORPORATION BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -/* - * Jeff Muizelaar found a bug on Quartz with cairo-surface-clipper, which was - * the topmost clip path from two different contexts and finding them equally - * incorrectly concluding that the operation was a no-op. - */ - -#define SIZE 10 -#define CLIP_SIZE 2 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_t *cr2; - - /* opaque background */ - cairo_set_source_rgb (cr, 0, 0, 0); - cairo_paint (cr); - - /* first create an empty, non-overlappiny clip */ - cr2 = cairo_create (cairo_get_target (cr)); - cairo_rectangle (cr2, 0, 0, SIZE/2-2, SIZE/2-2); - cairo_clip (cr2); - - cairo_rectangle (cr2, SIZE/2+2, SIZE/2+2, SIZE/2-2, SIZE/2-2); - cairo_clip (cr2); - - /* and apply the clip onto the surface, empty nothing should be painted */ - cairo_set_source_rgba (cr2, 1, 0, 0, .5); - cairo_paint (cr2); - - /* switch back to the original, and set only the last clip */ - cairo_rectangle (cr, SIZE/2+2, SIZE/2+2, SIZE/2-2, SIZE/2-2); - cairo_clip (cr); - - cairo_set_source_rgba (cr, 0, 0, 1, .5); - cairo_paint (cr); - - cairo_destroy (cr2); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (clip_contexts, - "Test clipping with 2 separate contexts", - "clip", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, draw) diff --git a/test/clip-device-offset.c b/test/clip-device-offset.c deleted file mode 100644 index f725b8e..0000000 --- a/test/clip-device-offset.c +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright © 2009 Benjamin Otte - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Authors: Benjamin Otte - */ - -#include "cairo-test.h" - -#define WIDTH 50 -#define HEIGHT 50 - -static cairo_pattern_t * -create_green_source (void) -{ - cairo_surface_t *image; - cairo_pattern_t *pattern; - cairo_t *cr; - - image = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, WIDTH, HEIGHT); - cr = cairo_create (image); - cairo_surface_destroy (image); - - cairo_set_source_rgb (cr, 0, 1, 0); - cairo_paint (cr); - - pattern = cairo_pattern_create_for_surface (cairo_get_target (cr)); - cairo_destroy (cr); - - return pattern; -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_pattern_t *source; - double old_x, old_y; - - cairo_surface_get_device_offset (cairo_get_group_target (cr), &old_x, &old_y); - cairo_surface_set_device_offset (cairo_get_group_target (cr), old_x+5, old_y+5); - - source = create_green_source (); - cairo_set_source (cr, source); - cairo_pattern_destroy (source); - - cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); - cairo_rectangle (cr, 0, 0, WIDTH, HEIGHT); - cairo_clip (cr); - cairo_paint (cr); - - cairo_surface_set_device_offset (cairo_get_group_target (cr), old_x, old_y); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (clip_device_offset, - "Test clipping on surfaces with device offsets", - "clip", /* keywords */ - NULL, /* requirements */ - WIDTH+10, HEIGHT+10, - NULL, draw) diff --git a/test/clip-disjoint-hatching.c b/test/clip-disjoint-hatching.c deleted file mode 100644 index 8626e80..0000000 --- a/test/clip-disjoint-hatching.c +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Copyright © 2011 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -#define STEP 5 -#define WIDTH 100 -#define HEIGHT 100 - -static void hatching (cairo_t *cr) -{ - int i; - - cairo_rectangle (cr, 0, 0, WIDTH, HEIGHT); - cairo_clip (cr); - - cairo_translate (cr, WIDTH/2, HEIGHT/2); - cairo_rotate (cr, M_PI/4); - cairo_translate (cr, -WIDTH/2, -HEIGHT/2); - - for (i = 0; i < WIDTH; i += STEP) { - cairo_rectangle (cr, i, -2, 1, HEIGHT+4); - cairo_rectangle (cr, -2, i, WIDTH+4, 1); - } -} - -static void background (cairo_t *cr) -{ - cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); - cairo_set_source_rgb (cr, 1,1,1); - cairo_paint (cr); -} - -static void clip_to_grid (cairo_t *cr) -{ - int i, j; - - for (j = 0; j < HEIGHT; j += 2*STEP) { - for (i = 0; i < WIDTH; i += 2*STEP) - cairo_rectangle (cr, i, j, STEP, STEP); - - j += 2*STEP; - for (i = 0; i < WIDTH; i += 2*STEP) - cairo_rectangle (cr, i+STEP/2, j, STEP, STEP); - } - - cairo_clip (cr); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - background (cr); - - cairo_set_operator (cr, CAIRO_OPERATOR_OVER); - - cairo_save (cr); { - clip_to_grid (cr); - hatching (cr); - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_fill (cr); - } cairo_restore (cr); - - cairo_translate (cr, 0.25, HEIGHT+.25); - - cairo_save (cr); { - clip_to_grid (cr); - hatching (cr); - cairo_set_source_rgb (cr, 0, 0, 1); - cairo_fill (cr); - } cairo_restore (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (clip_disjoint_hatching, - "Test drawing through through an array of clips", - "clip", /* keywords */ - "target=raster", /* requirements */ - WIDTH, 2*HEIGHT, - NULL, draw) diff --git a/test/clip-disjoint-quad.c b/test/clip-disjoint-quad.c deleted file mode 100644 index fe20381..0000000 --- a/test/clip-disjoint-quad.c +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright © 2012 Red Hat, Inc. - * Copyright © 2012 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Soren Sandmann - * Chris Wilson - */ - -#include "cairo-test.h" - -#define WIDTH 100 -#define HEIGHT 200 - -static void -draw_quad (cairo_t *cr, - double x1, double y1, - double x2, double y2, - double x3, double y3, - double x4, double y4) -{ - cairo_move_to (cr, x1, y1); - cairo_line_to (cr, x2, y2); - cairo_line_to (cr, x3, y3); - cairo_line_to (cr, x4, y4); - cairo_close_path (cr); - - cairo_set_source_rgb (cr, 0, 0.6, 0); - cairo_fill (cr); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - int position[5] = {0, HEIGHT/2-10, HEIGHT/2-5, HEIGHT/2, HEIGHT-10 }; - int i; - - cairo_set_source_rgb (cr, 0, 0, 0); - cairo_paint (cr); - - for (i = 0; i < 5; i++) { - cairo_reset_clip (cr); - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_rectangle (cr, 0, 0, WIDTH/2, HEIGHT/2); - cairo_rectangle (cr, WIDTH/2, position[i], WIDTH/2, 10); - cairo_fill_preserve (cr); - cairo_clip (cr); - - cairo_set_source_rgb (cr, 1, 0, 1); - draw_quad (cr, 50, 50, 75, 75, 50, 150, 25, 75); - cairo_fill (cr); - - cairo_translate(cr, WIDTH, 0); - } - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (clip_disjoint_quad, - "Tests a simple fill through two disjoint clips.", - "clip, fill", /* keywords */ - NULL, /* requirements */ - 5*WIDTH, HEIGHT, - NULL, draw) diff --git a/test/clip-disjoint.c b/test/clip-disjoint.c deleted file mode 100644 index 28bb963..0000000 --- a/test/clip-disjoint.c +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright © 2008 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Soren Sandmann - */ - -#include "cairo-test.h" - -#define WIDTH 300 -#define HEIGHT 300 - -typedef struct { - double x, y; -} point_t; - -static void -paint_curve (cairo_t *cr) -{ - const point_t points[] = { - { 100, 320 }, { 110, -80 }, - { 180, 60 }, { 300, 170 }, - { 300, -40 } - }; - unsigned i; - - cairo_set_line_width (cr, 2); - cairo_move_to (cr, points[0].x, points[0].y); - - for (i = 1; i < ARRAY_LENGTH (points) - 2; i += 3) { - cairo_curve_to (cr, - points[i].x, points[i].y, - points[i + 1].x, points[i + 1].y, - points[i + 2].x, points[i + 2].y); - } - cairo_set_line_width (cr, 5); - cairo_stroke (cr); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - /* Fill window with light blue */ - cairo_set_source_rgba (cr, 0.8, 0.8, 1.9, 1.0); - cairo_paint (cr); - - /* Paint curve in green */ - cairo_set_source_rgba (cr, 0.6, 0.8, 0.6, 1.0); - paint_curve (cr); - - /* Make clip region */ - cairo_rectangle (cr, 228, 131, 50, 13); - cairo_rectangle (cr, 20, 99, 200, 75); - cairo_clip_preserve (cr); - - /* Fill clip region with red */ - cairo_set_source_rgba (cr, 1.0, 0.5, 0.5, 0.8); - cairo_fill (cr); - - /* Paint curve again, this time in blue */ - cairo_set_source_rgba (cr, 0, 0, 1.0, 1.0); - paint_curve (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (clip_disjoint, - "Tests stroking through two disjoint clips.", - "clip, stroke", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/clip-double-free.c b/test/clip-double-free.c deleted file mode 100644 index 74b9a6e..0000000 --- a/test/clip-double-free.c +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright © 2011 Uli Schlachter - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Uli Schlachter - */ - -/* - * This test wants to hit the following double free: - * - * ==10517== Invalid free() / delete / delete[] - * ==10517== at 0x4C268FE: free (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) - * ==10517== by 0x87FBE80: _cairo_clip_destroy (cairo-clip.c:136) - * ==10517== by 0x87FE520: _cairo_clip_intersect_boxes.part.1 (cairo-clip-private.h:92) - * ==10517== by 0x87FE79F: _cairo_clip_intersect_rectilinear_path (cairo-clip-boxes.c:266) - * ==10517== by 0x87FC29B: _cairo_clip_intersect_path.part.3 (cairo-clip.c:242) - * ==10517== by 0x8809C3A: _cairo_gstate_clip (cairo-gstate.c:1518) - * ==10517== by 0x8802E40: _cairo_default_context_clip (cairo-default-context.c:1048) - * ==10517== by 0x87FA2C6: cairo_clip (cairo.c:2380) - * ==10517== Address 0x18d44cb0 is 0 bytes inside a block of size 32 free'd - * ==10517== at 0x4C268FE: free (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) - * ==10517== by 0x87FE506: _cairo_clip_intersect_boxes.part.1 (cairo-clip-boxes.c:295) - * ==10517== by 0x87FE79F: _cairo_clip_intersect_rectilinear_path (cairo-clip-boxes.c:266) - * ==10517== by 0x87FC29B: _cairo_clip_intersect_path.part.3 (cairo-clip.c:242) - * ==10517== by 0x8809C3A: _cairo_gstate_clip (cairo-gstate.c:1518) - * ==10517== by 0x8802E40: _cairo_default_context_clip (cairo-default-context.c:1048) - * ==10517== by 0x87FA2C6: cairo_clip (cairo.c:2380) - * - * _cairo_clip_intersect_boxes() is called with clip->num_boxes != 0. It then - * calls _cairo_boxes_init_for_array (&clip_boxes, clip->boxes, clip->num_boxes) - * and free (clip->boxes), stealing the clip's boxes, but leaving a dangling - * pointer behind. - * Because this code already intersected the existing boxes and the new ones, we - * now have num_boxes == 0. This means that _cairo_clip_set_all_clipped() gets - * called and tries to free the clip's boxes again. - */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_set_fill_rule (cr, CAIRO_FILL_RULE_EVEN_ODD); - - /* To hit this bug, we first need a clip with - * clip->boxes != clip->embedded_boxes. - */ - cairo_rectangle (cr, 0, 0, 2, 2); - cairo_rectangle (cr, 0, 0, 1, 1); - cairo_clip (cr); - - /* Then we have to intersect this with a rectilinear path which results in - * all clipped. This path must consist of at least two boxes or we will hit - * a different code path. - */ - cairo_rectangle (cr, 10, 10, 2, 2); - cairo_rectangle (cr, 10, 10, 1, 1); - cairo_clip (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (clip_double_free, - "Test a double free bug in the clipping code", - "clip", /* keywords */ - NULL, /* requirements */ - 0, 0, - NULL, draw) diff --git a/test/clip-draw-unbounded.c b/test/clip-draw-unbounded.c deleted file mode 100644 index 6b9263b..0000000 --- a/test/clip-draw-unbounded.c +++ /dev/null @@ -1,184 +0,0 @@ -/* -*- Mode: c; c-basic-offset: 4; indent-tabs-mode: t; tab-width: 8; -*- */ -/* - * Copyright 2009 Chris Wilson - * Copyright 2010 Andrea Canciani - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -#define WIDTH 60 -#define HEIGHT 60 - -static void -stroke (cairo_t *cr) -{ - cairo_set_operator (cr, CAIRO_OPERATOR_OVER); - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_paint (cr); - - cairo_set_operator (cr, CAIRO_OPERATOR_IN); - cairo_set_source_rgb (cr, 0, 0.7, 0); - cairo_arc (cr, 10, 10, 7.5, 0, 2 * M_PI); - cairo_move_to (cr, 0, 20); - cairo_line_to (cr, 20, 0); - cairo_stroke (cr); -} - -static void -fill (cairo_t *cr) -{ - cairo_set_operator (cr, CAIRO_OPERATOR_OVER); - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_paint (cr); - - cairo_set_operator (cr, CAIRO_OPERATOR_IN); - cairo_set_source_rgb (cr, 0, 0.7, 0); - cairo_new_sub_path (cr); - cairo_arc (cr, 10, 10, 8.5, 0, 2 * M_PI); - cairo_new_sub_path (cr); - cairo_arc_negative (cr, 10, 10, 6.5, 2 * M_PI, 0); - - cairo_move_to (cr, -1, 19); - cairo_line_to (cr, 1, 21); - cairo_line_to (cr, 21, 1); - cairo_line_to (cr, 19, -1); - cairo_line_to (cr, -1, 19); - - cairo_fill (cr); -} - -static void -clip_simple (cairo_t *cr) -{ - cairo_rectangle (cr, 0, 0, 20, 20); - cairo_clip (cr); -} - -static void -clip_unaligned (cairo_t *cr) -{ - cairo_rectangle (cr, 0.5, 0.5, 20, 20); - cairo_clip (cr); -} - -static void -clip_aligned (cairo_t *cr) -{ - cairo_fill_rule_t orig_rule; - - orig_rule = cairo_get_fill_rule (cr); - cairo_set_fill_rule (cr, CAIRO_FILL_RULE_EVEN_ODD); - cairo_rectangle (cr, 0, 0, 20, 20); - cairo_rectangle (cr, 3, 3, 10, 10); - cairo_rectangle (cr, 7, 7, 10, 10); - cairo_clip (cr); - cairo_set_fill_rule (cr, orig_rule); -} - -static void -clip_mask (cairo_t *cr) -{ - cairo_arc (cr, 10, 10, 10, 0, 2 * M_PI); - cairo_new_sub_path (cr); - cairo_arc_negative (cr, 10, 10, 5, 2 * M_PI, 0); - cairo_new_sub_path (cr); - cairo_arc (cr, 10, 10, 2, 0, 2 * M_PI); - cairo_clip (cr); -} - -static void (* const clip_funcs[])(cairo_t *cr) = { - clip_simple, - clip_unaligned, - clip_aligned, - clip_mask -}; - -static double translations[][2] = { - { 10, 10 }, - { WIDTH, 0 }, - { -WIDTH, HEIGHT }, - { WIDTH, 0 } -}; - -static cairo_test_status_t -draw (cairo_t *cr, void (*shapes)(cairo_t *)) -{ - unsigned int i; - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - for (i = 0; i < ARRAY_LENGTH (clip_funcs); i++) { - cairo_translate (cr, translations[i][0], translations[i][1]); - - cairo_save (cr); - cairo_scale (cr, 2, 2); - clip_funcs[i] (cr); - shapes (cr); - cairo_restore (cr); - } - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -draw_stroke (cairo_t *cr, int width, int height) -{ - return draw (cr, stroke); -} - -static cairo_test_status_t -draw_fill_nz (cairo_t *cr, int width, int height) -{ - cairo_set_fill_rule (cr, CAIRO_FILL_RULE_WINDING); - return draw (cr, fill); -} - -static cairo_test_status_t -draw_fill_eo (cairo_t *cr, int width, int height) -{ - cairo_set_fill_rule (cr, CAIRO_FILL_RULE_EVEN_ODD); - return draw (cr, fill); -} - -CAIRO_TEST (clip_stroke_unbounded, - "Tests unbounded stroke through complex clips.", - "clip, stroke, unbounded", /* keywords */ - NULL, /* requirements */ - 2 * WIDTH, 2 * HEIGHT, - NULL, draw_stroke) - -CAIRO_TEST (clip_fill_nz_unbounded, - "Tests unbounded fill through complex clips (with winding fill rule).", - "clip, fill, unbounded", /* keywords */ - NULL, /* requirements */ - 2 * WIDTH, 2 * HEIGHT, - NULL, draw_fill_nz) - -CAIRO_TEST (clip_fill_eo_unbounded, - "Tests unbounded fill through complex clips (with even-odd fill rule).", - "clip, fill, unbounded", /* keywords */ - NULL, /* requirements */ - 2 * WIDTH, 2 * HEIGHT, - NULL, draw_fill_eo) diff --git a/test/clip-empty-group.c b/test/clip-empty-group.c deleted file mode 100644 index 3829c88..0000000 --- a/test/clip-empty-group.c +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright (c) 2010 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -/* Test the handling of cairo_push_group() with everything clipped. */ -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_paint (cr); /* opaque background */ - - cairo_rectangle (cr, 20, 20, 0, 0); - cairo_clip (cr); - - cairo_push_group (cr); /* => 0x0 group */ - cairo_reset_clip (cr); - - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_paint (cr); - - cairo_rectangle (cr, 0, 0, width, height); - cairo_set_source_rgba (cr, 0, 1, 0, .5); - cairo_fill (cr); - - cairo_move_to (cr, 0, 20); - cairo_line_to (cr, width, 20); - cairo_set_source_rgb (cr, 0, 0, 1); - cairo_stroke (cr); - - cairo_pop_group_to_source (cr); - cairo_reset_clip (cr); - cairo_paint (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (clip_empty_group, - "Test handling of groups with everything clipped", - "clip, group", /* keywords */ - NULL, /* requirements */ - 40, 40, - NULL, draw) diff --git a/test/clip-empty-save.c b/test/clip-empty-save.c deleted file mode 100644 index 35de3cb..0000000 --- a/test/clip-empty-save.c +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright © 2007 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -#define SIZE 10 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_set_source_rgb (cr, 0, 0, 1); - cairo_paint (cr); - - cairo_reset_clip (cr); - cairo_clip (cr); - - cairo_save (cr); - - cairo_translate (cr, .5, .5); - - cairo_set_source_rgb (cr, 0, 1, 0); - cairo_rectangle (cr, 0, 0, SIZE, SIZE); - cairo_fill_preserve (cr); - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_stroke (cr); - - /* https://bugs.freedesktop.org/show_bug.cgi?id=13084 */ - cairo_select_font_face (cr, - CAIRO_TEST_FONT_FAMILY " Sans", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - - cairo_move_to (cr, 0., SIZE); - cairo_show_text (cr, "cairo"); - - cairo_restore (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (clip_empty_save, - "Test clipping with an empty clip path", - "clip", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, draw) diff --git a/test/clip-empty.c b/test/clip-empty.c deleted file mode 100644 index 858b69a..0000000 --- a/test/clip-empty.c +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright © 2007 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -#define SIZE 10 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_set_source_rgb (cr, 0, 0, 1); - cairo_paint (cr); - - cairo_reset_clip (cr); - cairo_clip (cr); - - cairo_translate (cr, .5, .5); - - cairo_set_source_rgb (cr, 0, 1, 0); - cairo_rectangle (cr, 0, 0, SIZE, SIZE); - cairo_fill_preserve (cr); - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_stroke (cr); - - /* https://bugs.freedesktop.org/show_bug.cgi?id=13084 */ - cairo_select_font_face (cr, - CAIRO_TEST_FONT_FAMILY " Sans", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - - cairo_move_to (cr, 0., SIZE); - cairo_show_text (cr, "cairo"); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (clip_empty, - "Test clipping with an empty clip path", - "clip", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, draw) diff --git a/test/clip-fill-no-op.c b/test/clip-fill-no-op.c deleted file mode 100644 index b686b6e..0000000 --- a/test/clip-fill-no-op.c +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright 2009 Benjamin Otte - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Benjamin Otte - */ - -#include "cairo-test.h" - -#define WIDTH 50 -#define HEIGHT 50 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - /* Neutral gray background */ - cairo_set_source_rgb (cr, 0.5, 0.5, 0.5); - cairo_paint (cr); - - /* remove this clip operation and everything works */ - cairo_rectangle (cr, 10, 10, 30, 30); - cairo_clip (cr); - - /* remove this no-op and everything works */ - cairo_fill (cr); - - /* make the y coordinates integers and everything works */ - cairo_move_to (cr, 20, 20.101562); - cairo_line_to (cr, 30, 20.101562); - - /* This clip operation should fail to work. But with cairo 1.9, if all the - * 3 cases above happen, the clip will not work and the paint will happen. - */ - cairo_save (cr); { - cairo_set_source_rgba (cr, 1, 0.5, 0.5, 1); - cairo_clip_preserve (cr); - cairo_paint (cr); - } cairo_restore (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (clip_fill_no_op, - "Exercises a bug found by Benjamin Otte whereby a no-op clip is nullified by a stroke", - "clip, fill", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/clip-fill-rule-pixel-aligned.c b/test/clip-fill-rule-pixel-aligned.c deleted file mode 100644 index 210afcb..0000000 --- a/test/clip-fill-rule-pixel-aligned.c +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright © 2004 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" - -#define PAD 1 -#define SIZE 5 - -static void -pixel_aligned_path (cairo_t *cr) -{ - cairo_save (cr); - { - cairo_scale (cr, SIZE, SIZE); - cairo_move_to (cr, 1, 0); - cairo_rel_line_to (cr, 1, 0); - cairo_rel_line_to (cr, 0, 3); - cairo_rel_line_to (cr, 1, 0); - cairo_rel_line_to (cr, 0, -1); - cairo_rel_line_to (cr, -3, 0); - cairo_rel_line_to (cr, 0, -1); - cairo_rel_line_to (cr, 4, 0); - cairo_rel_line_to (cr, 0, 3); - cairo_rel_line_to (cr, -3, 0); - cairo_rel_line_to (cr, 0, -4); - cairo_close_path (cr); - } - cairo_restore (cr); -} - -/* Use clipping to draw the same path twice, once with each fill rule */ -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_set_source_rgb (cr, 1, 0, 0); /* red */ - - cairo_translate (cr, PAD, PAD); - - cairo_save (cr); - { - pixel_aligned_path (cr); - cairo_set_fill_rule (cr, CAIRO_FILL_RULE_EVEN_ODD); - cairo_clip (cr); - cairo_paint (cr); - } - cairo_restore (cr); - - cairo_translate (cr, SIZE*4 + PAD, 0); - - cairo_save (cr); - { - pixel_aligned_path (cr); - cairo_set_fill_rule (cr, CAIRO_FILL_RULE_WINDING); - cairo_clip (cr); - cairo_paint (cr); - } - cairo_restore (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (clip_fill_rule_pixel_aligned, - "Tests interaction of clipping and cairo_set_fill_rule with a pixel-aligned path", - "clip", /* keywords */ - NULL, /* requirements */ - PAD + (SIZE*4) + PAD + (SIZE*4) + PAD, - PAD + (SIZE*4) + PAD, - NULL, draw) diff --git a/test/clip-fill-rule.c b/test/clip-fill-rule.c deleted file mode 100644 index 31c3ab7..0000000 --- a/test/clip-fill-rule.c +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright © 2004 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" - -#define STAR_SIZE 20 - -static void -star_path (cairo_t *cr) -{ - cairo_move_to (cr, 10, 0); - cairo_rel_line_to (cr, 6, 20); - cairo_rel_line_to (cr, -16, -12); - cairo_rel_line_to (cr, 20, 0); - cairo_rel_line_to (cr, -16, 12); -} - -/* Use clipping to draw the same path twice, once with each fill rule */ -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_set_source_rgb (cr, 1, 0, 0); - - cairo_translate (cr, 1, 1); - cairo_save (cr); - { - star_path (cr); - cairo_set_fill_rule (cr, CAIRO_FILL_RULE_WINDING); - cairo_clip (cr); - cairo_paint (cr); - } - cairo_restore (cr); - - cairo_translate (cr, STAR_SIZE + 1, 0); - cairo_save (cr); - { - star_path (cr); - cairo_set_fill_rule (cr, CAIRO_FILL_RULE_EVEN_ODD); - cairo_clip (cr); - cairo_paint (cr); - } - cairo_restore (cr); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -a1_draw (cairo_t *cr, int width, int height) -{ - cairo_set_antialias (cr, CAIRO_ANTIALIAS_NONE); - return draw (cr, width, height); -} - -CAIRO_TEST (clip_fill_rule, - "Tests interaction of clipping with cairo_set_fill_rule", - "clip", /* keywords */ - NULL, /* requirements */ - STAR_SIZE * 2 + 2, STAR_SIZE + 2, - NULL, draw) -CAIRO_TEST (a1_clip_fill_rule, - "Tests interaction of clipping with cairo_set_fill_rule", - "clip", /* keywords */ - "target=raster", /* requirements */ - STAR_SIZE * 2 + 2, STAR_SIZE + 2, - NULL, a1_draw) diff --git a/test/clip-fill.c b/test/clip-fill.c deleted file mode 100644 index 331af79..0000000 --- a/test/clip-fill.c +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright 2009 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -#define WIDTH 20 -#define HEIGHT 20 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - /* aligned-clip */ - cairo_save (cr); - cairo_set_fill_rule (cr, CAIRO_FILL_RULE_EVEN_ODD); - cairo_rectangle (cr, 0, 0, 20, 20); - cairo_rectangle (cr, 3, 3, 10, 10); - cairo_rectangle (cr, 7, 7, 10, 10); - cairo_clip (cr); - - cairo_set_source_rgb (cr, 0.7, 0, 0); - cairo_paint (cr); - cairo_set_source_rgb (cr, 0, 0.7, 0); - cairo_arc (cr, 10, 10, 8, 0, 2 * M_PI); - cairo_fill (cr); - cairo_restore (cr); - - cairo_translate (cr, WIDTH, 0); - - /* force a clip-mask */ - cairo_save (cr); - cairo_arc (cr, 10, 10, 10, 0, 2 * M_PI); - cairo_new_sub_path (cr); - cairo_arc_negative (cr, 10, 10, 5, 2 * M_PI, 0); - cairo_new_sub_path (cr); - cairo_arc (cr, 10, 10, 2, 0, 2 * M_PI); - cairo_clip (cr); - - cairo_set_source_rgb (cr, 0, 0, 0.7); - cairo_paint (cr); - cairo_set_source_rgb (cr, 0, 0.7, 0); - cairo_arc (cr, 10, 10, 7.5, 0, 2 * M_PI); - cairo_fill (cr); - cairo_restore (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (clip_fill, - "Tests filling through complex clips.", - "clip, fill", /* keywords */ - NULL, /* requirements */ - 2 * WIDTH, HEIGHT, - NULL, draw) diff --git a/test/clip-group-shapes.c b/test/clip-group-shapes.c deleted file mode 100644 index 88bb9b3..0000000 --- a/test/clip-group-shapes.c +++ /dev/null @@ -1,188 +0,0 @@ -/* - * Copyright (c) 2010 M Joonas Pihlaja - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: M Joonas Pihlaja - */ -#include "cairo-test.h" - -/* Tests specific clipping fast paths and their interaction with - * groups: It shouldn't matter if the clip is set before or after - * pushing a group. - * - * There's some overlap with the following tests, but they test for - * different things: - * - * group-clip.c (tests preserving paths), clipped-group.c (tests - * clipping the same thing different ways), clip-push-group (tests - * for a specific bug). - */ - -#define GENERATE_REF 0 - -/* For determining whether we establish the clip path before or after - * pushing a group. */ -enum { - CLIP_OUTSIDE_GROUP, - CLIP_INSIDE_GROUP -}; - -typedef void (*clipper_t)(cairo_t *cr, int w, int h); - -static cairo_test_status_t -clip_and_paint (cairo_t *cr, - int w, int h, - clipper_t do_clip, - int clip_where) -{ - cairo_save (cr); { - if (GENERATE_REF) { - do_clip (cr, w, h); - cairo_paint (cr); - } else { - if (clip_where == CLIP_OUTSIDE_GROUP) - do_clip (cr, w, h); - cairo_push_group (cr); { - if (clip_where == CLIP_INSIDE_GROUP) - do_clip (cr, w, h); - cairo_paint (cr); - } - cairo_pop_group_to_source (cr); - if (clip_where == CLIP_OUTSIDE_GROUP) - cairo_reset_clip (cr); - cairo_paint (cr); - } - } - cairo_restore (cr); - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -run_clip_test (cairo_t *cr, int w, int h, clipper_t do_clip) -{ - cairo_set_source_rgb (cr, 1,1,1); - cairo_paint (cr); - cairo_set_source_rgb (cr, 1,0,0); - - /* Left. */ - clip_and_paint (cr, w/2, h, do_clip, CLIP_OUTSIDE_GROUP); - - /* Right */ - cairo_translate(cr, w/2, 0); - clip_and_paint (cr, w/2, h, do_clip, CLIP_INSIDE_GROUP); - - return CAIRO_TEST_SUCCESS; -} - -static void -clip_aligned_rectangles (cairo_t *cr, int w, int h) -{ - int x1 = 0.2 * w; - int y1 = 0.2 * h; - int x2 = 0.8 * w; - int y2 = 0.8 * h; - - cairo_rectangle (cr, x1, y1, w, h); - cairo_clip (cr); - - cairo_rectangle (cr, x2, y2, -w, -h); - cairo_clip (cr); -} - -static void -clip_unaligned_rectangles (cairo_t *cr, int w, int h) -{ - /* This clip stresses the antialiased edges produced by an - * unaligned rectangular clip. The edges should be produced by - * compositing red on white with alpha = 0.5 on the sides, and with - * alpha = 0.25 in the corners. */ - int x1 = 0.2 * w; - int y1 = 0.2 * h; - int x2 = 0.8 * w; - int y2 = 0.8 * h; - - cairo_rectangle (cr, x1+0.5, y1+0.5, w, h); - cairo_clip (cr); - - cairo_rectangle (cr, x2+0.5, y2+0.5, -w, -h); - w = x2 - x1; - h = y2 - y1; - cairo_rectangle (cr, x2, y1+1, -w+1, h-1); - cairo_clip (cr); -} - -static void -clip_circles (cairo_t *cr, int w, int h) -{ - int x1 = 0.5 * w; - int y1 = 0.5 * h; - int x2 = 0.75 * w; - int y2 = 0.75 * h; - int r = 0.4*MIN(w,h); - - cairo_arc (cr, x1, y1, r, 0, 6.28); - cairo_close_path (cr); - cairo_clip (cr); - - cairo_arc (cr, x2, y2, r, 0, 6.28); - cairo_close_path (cr); - cairo_clip (cr); -} - -static cairo_test_status_t -draw_aligned_rectangles (cairo_t *cr, int width, int height) -{ - return run_clip_test (cr, width, height, clip_aligned_rectangles); -} - -static cairo_test_status_t -draw_unaligned_rectangles (cairo_t *cr, int width, int height) -{ - return run_clip_test (cr, width, height, clip_unaligned_rectangles); -} - -static cairo_test_status_t -draw_circles (cairo_t *cr, int width, int height) -{ - return run_clip_test (cr, width, height, clip_circles); -} - -CAIRO_TEST (clip_group_shapes_aligned_rectangles, - "Test clip and group interaction with aligned rectangle clips", - "clip", /* keywords */ - NULL, /* requirements */ - 200, 100, - NULL, draw_aligned_rectangles) - -CAIRO_TEST (clip_group_shapes_unaligned_rectangles, - "Test clip and group interaction with unaligned rectangle clips", - "clip", /* keywords */ - "target=raster", /* requirements */ - 200, 100, - NULL, draw_unaligned_rectangles) - -CAIRO_TEST (clip_group_shapes_circles, - "Test clip and group interaction with circular clips", - "clip", /* keywords */ - NULL, /* requirements */ - 200, 100, - NULL, draw_circles) diff --git a/test/clip-image.c b/test/clip-image.c deleted file mode 100644 index 68ed142..0000000 --- a/test/clip-image.c +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright 2009 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -#define WIDTH 20 -#define HEIGHT 20 - -static const char *png_filename = "romedalen.png"; - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - const cairo_test_context_t *ctx = cairo_test_get_context (cr); - cairo_surface_t *image; - - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - image = cairo_test_create_surface_from_png (ctx, png_filename); - cairo_set_source_surface (cr, image, 0, 0); - cairo_surface_destroy (image); - - /* simple clip */ - cairo_save (cr); - cairo_rectangle (cr, 2, 2, 16, 16); - cairo_clip (cr); - cairo_paint (cr); - cairo_restore (cr); - - cairo_translate (cr, WIDTH, 0); - - /* unaligned clip */ - cairo_save (cr); - cairo_rectangle (cr, 2.5, 2.5, 15, 15); - cairo_clip (cr); - cairo_paint (cr); - cairo_restore (cr); - - cairo_translate (cr, -WIDTH, HEIGHT); - - /* aligned-clip */ - cairo_save (cr); - cairo_set_fill_rule (cr, CAIRO_FILL_RULE_EVEN_ODD); - cairo_rectangle (cr, 0, 0, 20, 20); - cairo_rectangle (cr, 3, 3, 10, 10); - cairo_rectangle (cr, 7, 7, 10, 10); - cairo_clip (cr); - cairo_paint (cr); - cairo_restore (cr); - - cairo_translate (cr, WIDTH, 0); - - /* force a clip-mask */ - cairo_save (cr); - cairo_arc (cr, 10, 10, 10, 0, 2 * M_PI); - cairo_new_sub_path (cr); - cairo_arc_negative (cr, 10, 10, 5, 2 * M_PI, 0); - cairo_new_sub_path (cr); - cairo_arc (cr, 10, 10, 2, 0, 2 * M_PI); - cairo_clip (cr); - cairo_paint (cr); - cairo_restore (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (clip_image, - "Tests painting an image through complex clips.", - "clip, paint", /* keywords */ - NULL, /* requirements */ - 2 * WIDTH, 2 * HEIGHT, - NULL, draw) diff --git a/test/clip-intersect.c b/test/clip-intersect.c deleted file mode 100644 index 295fbc9..0000000 --- a/test/clip-intersect.c +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Copyright 2009 Chris Wilson - * Copyright 2011 Intel Corporation - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -#define WIDTH 20 -#define HEIGHT 20 - -static void clip_mask (cairo_t *cr) -{ - cairo_move_to (cr, 10, 0); - cairo_line_to (cr, 0, 10); - cairo_line_to (cr, 10, 20); - cairo_line_to (cr, 20, 10); - cairo_clip (cr); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - clip_mask (cr); - cairo_set_source_rgb (cr, 0, 1, 0); - cairo_paint (cr); - cairo_reset_clip (cr); - - cairo_set_source_rgb (cr, 1, 0, 0); - - cairo_rectangle (cr, 0, 0, 4, 4); - cairo_clip (cr); - clip_mask (cr); - cairo_paint (cr); - cairo_reset_clip (cr); - - cairo_rectangle (cr, 20, 0, -4, 4); - cairo_clip (cr); - clip_mask (cr); - cairo_paint (cr); - cairo_reset_clip (cr); - - cairo_rectangle (cr, 20, 20, -4, -4); - cairo_clip (cr); - clip_mask (cr); - cairo_paint (cr); - cairo_reset_clip (cr); - - cairo_rectangle (cr, 0, 20, 4, -4); - cairo_clip (cr); - clip_mask (cr); - cairo_paint (cr); - cairo_reset_clip (cr); - - cairo_set_source_rgb (cr, 0, 0, 1); - - cairo_rectangle (cr, 8, 8, 4, 4); - cairo_clip (cr); - clip_mask (cr); - cairo_paint (cr); - cairo_reset_clip (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (clip_intersect, - "Tests intersection of a simple clip with a clip-mask", - "clip, paint", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/clip-mixed-antialias.c b/test/clip-mixed-antialias.c deleted file mode 100644 index 23a55ff..0000000 --- a/test/clip-mixed-antialias.c +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Copyright © 2011 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -#define WIDTH 200 -#define HEIGHT 200 - -/* This is an example from the wild, as silly as it is -n 52 0 429 709 rectangle -clip+ -//ANTIALIAS_NONE set-antialias -n 8 0 m 952 0 l 956.417969 0 960 3.582031 960 8 c 960 1807 l 960 1811.417969 956.417969 1815 952 1815 c 8 1815 l 3.582031 1815 0 1811.417969 0 1807 c 0 8 l 0 3.582031 3.582031 0 8 0 c h -clip+ -//EVEN_ODD set-fill-rule -n 0 0 m 480 0 l 480 708 l 0 708 l h 8 1 m 952 1 l 955.867188 1 959 4.132812 959 8 c 959 1807 l 959 1810.867188 955.867188 1814 952 1814 c 8 1814 l 4.132812 1814 1 1810.867188 1 1807 c 1 8 l 1 4.132812 4.132812 1 8 1 c h -clip+ -//WINDING set-fill-rule -//ANTIALIAS_DEFAULT set-antialias -n 960 0 m 52.5 907.5 l 52.5 1815 l 960 1815 l h -clip+ -//ANTIALIAS_NONE set-antialias -n 960 0 m 52.5 0 l 52.5 907.5 l 960 1815 l h -clip+ -*/ - -static void background (cairo_t *cr) -{ - cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); - cairo_set_source_rgb (cr, 1,1,1); - cairo_paint (cr); - cairo_set_operator (cr, CAIRO_OPERATOR_OVER); -} - -static void clip_0 (cairo_t *cr) -{ - cairo_rectangle (cr, 5, 5, 190, 190); - cairo_clip (cr); -} - -static void clip_1 (cairo_t *cr) -{ - cairo_set_antialias (cr, CAIRO_ANTIALIAS_NONE); - - cairo_arc (cr, 100, 100, 125, 0, 2*M_PI); - cairo_clip (cr); - - cairo_set_antialias (cr, CAIRO_ANTIALIAS_DEFAULT); -} - -static void -rounded_rectangle (cairo_t *cr, int x, int y, int w, int h, int r) -{ - cairo_new_sub_path (cr); - cairo_arc (cr, x + r, y + r, r, M_PI, 3 * M_PI / 2); - cairo_arc (cr, x + w - r, y + r, r, 3 *M_PI / 2, 2 * M_PI); - cairo_arc (cr, x + w - r, y + h - r, r, 0, M_PI / 2); - cairo_arc (cr, x + r, y + h - r, r, M_PI / 2, M_PI); - cairo_close_path (cr); -} - -static void clip_2 (cairo_t *cr) -{ - cairo_set_fill_rule (cr, CAIRO_FILL_RULE_EVEN_ODD); - - rounded_rectangle (cr, 50, 50, 100, 100, 15); - rounded_rectangle (cr, 60, 60, 80, 80, 5); - cairo_clip (cr); - - cairo_set_fill_rule (cr, CAIRO_FILL_RULE_WINDING); -} - -static void clip_3 (cairo_t *cr) -{ - cairo_set_antialias (cr, CAIRO_ANTIALIAS_NONE); - - cairo_rectangle (cr, 40.25, 60.25, 120, 80); - cairo_rectangle (cr, 60.25, 40.25, 80, 120); - cairo_clip (cr); - - cairo_set_antialias (cr, CAIRO_ANTIALIAS_DEFAULT); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - background (cr); - - clip_0 (cr); - clip_1 (cr); - clip_2 (cr); - clip_3 (cr); - - cairo_set_source_rgb (cr, 0, 0, 0); - cairo_paint (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (clip_mixed_antialias, - "Test drawing through through an mixture of clips", - "clip", /* keywords */ - "target=raster", /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/clip-nesting.c b/test/clip-nesting.c deleted file mode 100644 index a9227ec..0000000 --- a/test/clip-nesting.c +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Owen Taylor - */ - -#include "cairo-test.h" -#include -#include - -#define SIZE 100 -#define BORDER 10 -#define LINE_WIDTH 20 - -static void -_propagate_status (cairo_t *dst, cairo_t *src) -{ - cairo_path_t path; - - path.status = cairo_status (src); - if (path.status) { - path.num_data = 0; - path.data = NULL; - cairo_append_path (dst, &path); - } -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_t *target_surface; - cairo_t *cr2, *cr3; - - target_surface = cairo_get_group_target (cr); - - cr2 = cairo_create (target_surface); - - /* Draw a diagonal line and clip to it */ - - cairo_move_to (cr2, BORDER, BORDER); - cairo_line_to (cr2, BORDER + LINE_WIDTH, BORDER); - cairo_line_to (cr2, SIZE - BORDER, SIZE - BORDER); - cairo_line_to (cr2, SIZE - BORDER - LINE_WIDTH, SIZE - BORDER); - - cairo_clip (cr2); - cairo_set_source_rgb (cr2, 0, 0, 1); /* Blue */ - cairo_paint (cr2); - - /* Clipping affects this cairo_t */ - - cairo_set_source_rgb (cr2, 1, 1, 1); /* White */ - cairo_rectangle (cr2, - SIZE / 2 - LINE_WIDTH / 2, BORDER, - LINE_WIDTH, SIZE - 2 * BORDER); - cairo_fill (cr2); - - /* But doesn't affect another cairo_t that we create temporarily for - * the same surface - */ - cr3 = cairo_create (target_surface); - cairo_set_source_rgb (cr3, 1, 1, 1); /* White */ - cairo_rectangle (cr3, - SIZE - BORDER - LINE_WIDTH, BORDER, - LINE_WIDTH, SIZE - 2 * BORDER); - cairo_fill (cr3); - - _propagate_status (cr, cr3); - cairo_destroy (cr3); - - _propagate_status (cr, cr2); - cairo_destroy (cr2); - - /* And doesn't affect anything after this cairo_t is destroyed */ - - cairo_set_source_rgb (cr, 1, 1, 1); /* White */ - cairo_rectangle (cr, - BORDER, BORDER, - LINE_WIDTH, SIZE - 2 * BORDER); - cairo_fill (cr); - - return CAIRO_TEST_SUCCESS; - -} - -CAIRO_TEST (clip_nesting, - "Test clipping with multiple contexts for the same surface", - "clip", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, draw) diff --git a/test/clip-operator.c b/test/clip-operator.c deleted file mode 100644 index ac0a5e9..0000000 --- a/test/clip-operator.c +++ /dev/null @@ -1,188 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Kristian Høgsberg - */ - -#include "cairo-test.h" -#include -#include - -#define WIDTH 16 -#define HEIGHT 16 -#define PAD 2 - -static void -draw_mask (cairo_t *cr, int x, int y) -{ - cairo_surface_t *mask_surface; - cairo_t *cr2; - - double width = (int)(0.9 * WIDTH); - double height = (int)(0.9 * HEIGHT); - x += 0.05 * WIDTH; - y += 0.05 * HEIGHT; - - mask_surface = cairo_surface_create_similar (cairo_get_group_target (cr), - CAIRO_CONTENT_ALPHA, - width, height); - cr2 = cairo_create (mask_surface); - cairo_surface_destroy (mask_surface); - - cairo_save (cr2); - cairo_set_source_rgba (cr2, 0, 0, 0, 0); /* transparent */ - cairo_set_operator (cr2, CAIRO_OPERATOR_SOURCE); - cairo_paint (cr2); - cairo_restore (cr2); - - cairo_set_source_rgb (cr2, 1, 1, 1); /* white */ - - cairo_arc (cr2, 0.5 * width, 0.5 * height, 0.45 * height, 0, 2 * M_PI); - cairo_fill (cr2); - - cairo_mask_surface (cr, cairo_get_target (cr2), x, y); - cairo_destroy (cr2); -} - -static void -draw_glyphs (cairo_t *cr, int x, int y) -{ - cairo_text_extents_t extents; - - cairo_set_font_size (cr, 0.8 * HEIGHT); - - cairo_text_extents (cr, "FG", &extents); - cairo_move_to (cr, - x + floor ((WIDTH - extents.width) / 2 + 0.5) - extents.x_bearing, - y + floor ((HEIGHT - extents.height) / 2 + 0.5) - extents.y_bearing); - cairo_show_text (cr, "FG"); -} - -static void -draw_polygon (cairo_t *cr, int x, int y) -{ - double width = (int)(0.9 * WIDTH); - double height = (int)(0.9 * HEIGHT); - x += 0.05 * WIDTH; - y += 0.05 * HEIGHT; - - cairo_new_path (cr); - cairo_move_to (cr, x, y); - cairo_line_to (cr, x, y + height); - cairo_line_to (cr, x + width / 2, y + 3 * height / 4); - cairo_line_to (cr, x + width, y + height); - cairo_line_to (cr, x + width, y); - cairo_line_to (cr, x + width / 2, y + height / 4); - cairo_close_path (cr); - cairo_fill (cr); -} - -static void -draw_rects (cairo_t *cr, int x, int y) -{ - double block_width = (int)(0.33 * WIDTH + 0.5); - double block_height = (int)(0.33 * HEIGHT + 0.5); - int i, j; - - for (i = 0; i < 3; i++) - for (j = 0; j < 3; j++) - if ((i + j) % 2 == 0) - cairo_rectangle (cr, - x + block_width * i, y + block_height * j, - block_width, block_height); - - cairo_fill (cr); -} - -static void (* const draw_funcs[])(cairo_t *cr, int x, int y) = { - draw_mask, - draw_glyphs, - draw_polygon, - draw_rects -}; - -#define N_OPERATORS (1 + CAIRO_OPERATOR_SATURATE - CAIRO_OPERATOR_CLEAR) - -#define IMAGE_WIDTH (N_OPERATORS * (WIDTH + PAD) + PAD) -#define IMAGE_HEIGHT (ARRAY_LENGTH (draw_funcs) * (HEIGHT + PAD) + PAD) - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - const cairo_test_context_t *ctx = cairo_test_get_context (cr); - size_t j, x, y; - cairo_operator_t op; - cairo_pattern_t *pattern; - - cairo_select_font_face (cr, CAIRO_TEST_FONT_FAMILY " Sans", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - cairo_set_font_size (cr, 0.9 * HEIGHT); - - for (j = 0; j < ARRAY_LENGTH (draw_funcs); j++) { - for (op = CAIRO_OPERATOR_CLEAR; op < N_OPERATORS; op++) { - x = op * (WIDTH + PAD) + PAD; - y = j * (HEIGHT + PAD) + PAD; - - cairo_save (cr); - - pattern = cairo_pattern_create_linear (x + WIDTH, y, - x, y + HEIGHT); - cairo_pattern_add_color_stop_rgba (pattern, 0.2, - 0.0, 0.0, 1.0, 1.0); /* Solid blue */ - cairo_pattern_add_color_stop_rgba (pattern, 0.8, - 0.0, 0.0, 1.0, 0.0); /* Transparent blue */ - cairo_set_source (cr, pattern); - cairo_pattern_destroy (pattern); - - cairo_rectangle (cr, x, y, WIDTH, HEIGHT); - cairo_fill (cr); - - cairo_set_operator (cr, op); - cairo_set_source_rgb (cr, 1.0, 0.0, 0.0); - - cairo_move_to (cr, x, y); - cairo_line_to (cr, x + WIDTH, y); - cairo_line_to (cr, x, y + HEIGHT); - cairo_clip (cr); - - draw_funcs[j] (cr, x, y); - if (cairo_status (cr)) - cairo_test_log (ctx, "%d %d HERE!\n", op, (int)j); - - cairo_restore (cr); - } - } - - if (cairo_status (cr) != CAIRO_STATUS_SUCCESS) - cairo_test_log (ctx, "%d %d .HERE!\n", op, (int)j); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (clip_operator, - "Surface clipping with different operators", - "clip", /* keywords */ - NULL, /* requirements */ - IMAGE_WIDTH, IMAGE_HEIGHT, - NULL, draw) - diff --git a/test/clip-polygons.c b/test/clip-polygons.c deleted file mode 100644 index 83eb4df..0000000 --- a/test/clip-polygons.c +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright © 2011 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -#define STEP 5 -#define WIDTH 100 -#define HEIGHT 100 - -static void diamond (cairo_t *cr) -{ - cairo_move_to (cr, WIDTH/2, 0); - cairo_line_to (cr, WIDTH, HEIGHT/2); - cairo_line_to (cr, WIDTH/2, HEIGHT); - cairo_line_to (cr, 0, HEIGHT/2); - cairo_close_path (cr); -} - -static void background (cairo_t *cr) -{ - cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); - cairo_set_source_rgb (cr, 1,1,1); - cairo_paint (cr); - cairo_set_operator (cr, CAIRO_OPERATOR_OVER); - cairo_set_source_rgb (cr, 0,0,0); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - background (cr); - - /* completely overlapping diamonds */ - cairo_save (cr); - diamond (cr); - cairo_clip (cr); - diamond (cr); - cairo_clip (cr); - cairo_paint (cr); - cairo_restore (cr); - - cairo_translate (cr, WIDTH, 0); - - /* partial overlap */ - cairo_save (cr); - cairo_translate (cr, -WIDTH/4, 0); - diamond (cr); - cairo_clip (cr); - cairo_translate (cr, WIDTH/2, 0); - diamond (cr); - cairo_clip (cr); - cairo_paint (cr); - cairo_restore (cr); - - cairo_translate (cr, WIDTH, 0); - - /* no overlap, but the bounding boxes must */ - cairo_save (cr); - cairo_translate (cr, -WIDTH/2 + 2, -2); - diamond (cr); - cairo_clip (cr); - cairo_translate (cr, WIDTH - 4, 4); - diamond (cr); - cairo_clip (cr); - cairo_paint (cr); - cairo_restore (cr); - - cairo_translate (cr, WIDTH, 0); - - /* completely disjoint */ - cairo_save (cr); - cairo_translate (cr, -WIDTH/2 - 1, 0); - diamond (cr); - cairo_clip (cr); - cairo_translate (cr, WIDTH + 2, 0); - diamond (cr); - cairo_clip (cr); - cairo_paint (cr); - cairo_restore (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (clip_polygons, - "Test drawing through through an intersection of polygons", - "clip", /* keywords */ - "target=raster", /* requirements */ - 4*WIDTH, HEIGHT, - NULL, draw) diff --git a/test/clip-push-group.c b/test/clip-push-group.c deleted file mode 100644 index 4effb0a..0000000 --- a/test/clip-push-group.c +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright © 2006 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - */ - -/* A test for the crash described here: - * - * http://lists.freedesktop.org/archives/cairo/2006-August/007698.html - * - * The triggering condition for this bug should be setting a - * surface-based clip and then calling cairo_push_group. - */ - -#include "cairo-test.h" - -#define SIZE 10 -#define PAD 2 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - /* An overly complex way of drawing a blue circle onto a red - * background, to trigger the bug. */ - cairo_set_source_rgb (cr, 1, 0, 0); /* red */ - cairo_paint (cr); - - cairo_arc (cr, - SIZE / 2, SIZE / 2, - SIZE / 2 - PAD, - 0, 2 * M_PI); - cairo_clip (cr); - - cairo_push_group (cr); - cairo_set_source_rgb (cr, 0, 0, 1); /* blue */ - cairo_paint (cr); - cairo_pop_group_to_source (cr); - cairo_paint (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (clip_push_group, - "Test that push_group doesn't crash after setting a surface-based clip", - "clip", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, draw) diff --git a/test/clip-rectilinear.c b/test/clip-rectilinear.c deleted file mode 100644 index 98db4a2..0000000 --- a/test/clip-rectilinear.c +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright (c) 2011 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -#define SIZE 120 - -static void L(cairo_t *cr, int w, int h) -{ - cairo_move_to (cr, 0, 0); - cairo_line_to (cr, 0, h); - cairo_line_to (cr, w, h); - cairo_line_to (cr, w, h/2); - cairo_line_to (cr, w/2, h/2); - cairo_line_to (cr, w/2, 0); - cairo_close_path (cr); -} - -static void LL(cairo_t *cr, int w, int h) -{ - cairo_save (cr); - - /* aligned */ - cairo_rectangle (cr, 0, 0, w, h); - cairo_clip (cr); - L (cr, w, h); - cairo_clip (cr); - cairo_paint (cr); - cairo_reset_clip (cr); - - /* unaligned */ - cairo_translate (cr, w+.25, .25); - cairo_rectangle (cr, 0, 0, w, h); - cairo_clip (cr); - L (cr, w, h); - cairo_clip (cr); - cairo_paint (cr); - cairo_reset_clip (cr); - - cairo_restore (cr); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - int w = SIZE/2, h = SIZE/2; - - cairo_paint (cr); /* opaque background */ - - cairo_set_source_rgb (cr, 1, 0, 0); - LL (cr, w, h); - - cairo_translate (cr, 0, h); - cairo_set_antialias (cr, CAIRO_ANTIALIAS_NONE); - - cairo_set_source_rgb (cr, 0, 0, 1); - LL (cr, w, h); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (clip_rectilinear, - "Test handling of rectilinear clipping", - "clip", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, draw) diff --git a/test/clip-shape.c b/test/clip-shape.c deleted file mode 100644 index 6a74a6e..0000000 --- a/test/clip-shape.c +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright (c) 2010 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Chris Wilson - */ - -/* Adapted from a bug report by */ - -#include "cairo-test.h" - -static const struct xy { - double x; - double y; -} gp[] = { - { 100, 250 }, - { 100, 100 }, - { 150, 230 }, - { 239, 100 }, - { 239, 250 }, -}; - -static const double vp[3] = { 100, 144, 238.5 }; - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - int i; - - cairo_paint (cr); /* opaque background */ - - for (i = 0; i < 5; ++i) - cairo_line_to (cr, gp[i].x, gp[i].y); - cairo_close_path (cr); - - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_set_line_width (cr, 1.5); - cairo_stroke_preserve (cr); - cairo_clip (cr); - - for (i = 1; i < 3; ++i) { - double x1 = vp[i - 1]; - double x2 = vp[i]; - - cairo_move_to (cr, x1, 0); - cairo_line_to (cr, x1, height); - cairo_line_to (cr, x2, height); - cairo_line_to (cr, x2, 0); - cairo_close_path (cr); - - if (i & 1) - cairo_set_source_rgb (cr, 0, 1, 0); - else - cairo_set_source_rgb (cr, 1, 1, 0); - - cairo_fill (cr); - } - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (clip_shape, - "Test handling of clipping with a non-aligned shape", - "clip", /* keywords */ - NULL, /* requirements */ - 400, 300, - NULL, draw) diff --git a/test/clip-stroke-no-op.c b/test/clip-stroke-no-op.c deleted file mode 100644 index 8eb9171..0000000 --- a/test/clip-stroke-no-op.c +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright 2009 Benjamin Otte - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Benjamin Otte - */ - -#include "cairo-test.h" - -#define WIDTH 50 -#define HEIGHT 50 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - /* Neutral gray background */ - cairo_set_source_rgb (cr, 0.5, 0.5, 0.5); - cairo_paint (cr); - - /* remove this clip operation and everything works */ - cairo_rectangle (cr, 10, 10, 30, 30); - cairo_clip (cr); - - /* remove this no-op and everything works */ - cairo_stroke (cr); - - /* make the y coordinates integers and everything works */ - cairo_move_to (cr, 20, 20.101562); - cairo_line_to (cr, 30, 20.101562); - - /* This clip operation should fail to work. But with cairo 1.9, if all the - * 3 cases above happen, the clip will not work and the paint will happen. - */ - cairo_save (cr); { - cairo_set_source_rgba (cr, 1, 0.5, 0.5, 1); - cairo_clip_preserve (cr); - cairo_paint (cr); - } cairo_restore (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (clip_stroke_no_op, - "Exercises a bug found by Benjamin Otte whereby a no-op clip is nullified by a stroke", - "clip, stroke", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/clip-stroke.c b/test/clip-stroke.c deleted file mode 100644 index 9714dd0..0000000 --- a/test/clip-stroke.c +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Copyright 2009 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -#define WIDTH 40 -#define HEIGHT 40 - -static void -shapes (cairo_t *cr) -{ - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_paint (cr); - - cairo_set_source_rgb (cr, 0, 0.7, 0); - cairo_arc (cr, 10, 10, 7.5, 0, 2 * M_PI); - cairo_stroke (cr); - - cairo_set_source_rgb (cr, 0, 0.7, 0.7); - cairo_arc (cr, 10, 10, 25, 0, 2 * M_PI); - cairo_stroke (cr); - cairo_rectangle (cr, -5, -5, 30, 30); - cairo_stroke (cr); - - cairo_set_source_rgb (cr, 0.7, 0.7, 0); - cairo_save (cr); - cairo_translate (cr, 10, 10); - cairo_rotate (cr, M_PI/4); - cairo_translate (cr, -10, -10); - cairo_rectangle (cr, -5, -5, 30, 30); - cairo_stroke (cr); - cairo_restore (cr); - - cairo_set_source_rgb (cr, 0.7, 0.0, 0.7); - cairo_move_to (cr, 15, -10); - cairo_line_to (cr, 30, 10); - cairo_line_to (cr, 15, 30); - cairo_stroke (cr); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - cairo_translate (cr, 10, 10); - - /* simple clip */ - cairo_save (cr); - cairo_rectangle (cr, 0, 0, 20, 20); - cairo_clip (cr); - shapes (cr); - cairo_restore (cr); - - cairo_translate (cr, WIDTH, 0); - - /* unaligned clip */ - cairo_save (cr); - cairo_rectangle (cr, 0.5, 0.5, 20, 20); - cairo_clip (cr); - shapes (cr); - cairo_restore (cr); - - cairo_translate (cr, -WIDTH, HEIGHT); - - /* aligned-clip */ - cairo_save (cr); - cairo_set_fill_rule (cr, CAIRO_FILL_RULE_EVEN_ODD); - cairo_rectangle (cr, 0, 0, 20, 20); - cairo_rectangle (cr, 3, 3, 10, 10); - cairo_rectangle (cr, 7, 7, 10, 10); - cairo_clip (cr); - shapes (cr); - cairo_restore (cr); - - cairo_translate (cr, WIDTH, 0); - - /* force a clip-mask */ - cairo_save (cr); - cairo_arc (cr, 10, 10, 10, 0, 2 * M_PI); - cairo_new_sub_path (cr); - cairo_arc_negative (cr, 10, 10, 5, 2 * M_PI, 0); - cairo_new_sub_path (cr); - cairo_arc (cr, 10, 10, 2, 0, 2 * M_PI); - cairo_clip (cr); - shapes (cr); - cairo_restore (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (clip_stroke, - "Tests stroke through complex clips.", - "clip, stroke", /* keywords */ - NULL, /* requirements */ - 2 * WIDTH, 2* HEIGHT, - NULL, draw) - diff --git a/test/clip-text.c b/test/clip-text.c deleted file mode 100644 index ed8e107..0000000 --- a/test/clip-text.c +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright 2009 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -#define WIDTH 20 -#define HEIGHT 20 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - const char *cairo = "Cairo"; - cairo_text_extents_t extents; - double x0, y0; - - cairo_text_extents (cr, cairo, &extents); - x0 = WIDTH/2. - (extents.width/2. + extents.x_bearing); - y0 = HEIGHT/2. - (extents.height/2. + extents.y_bearing); - - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - /* aligned-clip */ - cairo_save (cr); - cairo_set_fill_rule (cr, CAIRO_FILL_RULE_EVEN_ODD); - cairo_rectangle (cr, 0, 0, 20, 20); - cairo_rectangle (cr, 3, 3, 10, 10); - cairo_rectangle (cr, 7, 7, 10, 10); - cairo_clip (cr); - - cairo_set_source_rgb (cr, 0.7, 0, 0); - cairo_paint (cr); - cairo_set_source_rgb (cr, 0, 0, 0); - - cairo_move_to (cr, x0, y0); - cairo_show_text (cr, cairo); - cairo_restore (cr); - - cairo_translate (cr, WIDTH, 0); - - /* force a clip-mask */ - cairo_save (cr); - cairo_arc (cr, 10, 10, 10, 0, 2 * M_PI); - cairo_new_sub_path (cr); - cairo_arc_negative (cr, 10, 10, 5, 2 * M_PI, 0); - cairo_new_sub_path (cr); - cairo_arc (cr, 10, 10, 2, 0, 2 * M_PI); - cairo_clip (cr); - - cairo_set_source_rgb (cr, 0, 0, 0.7); - cairo_paint (cr); - cairo_set_source_rgb (cr, 0, 0, 0); - - cairo_move_to (cr, x0, y0); - cairo_show_text (cr, cairo); - cairo_restore (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (clip_text, - "Tests drawing text through complex clips.", - "clip, text", /* keywords */ - NULL, /* requirements */ - 2 * WIDTH, HEIGHT, - NULL, draw) diff --git a/test/clip-twice-rectangle.c b/test/clip-twice-rectangle.c deleted file mode 100644 index 28f16ec..0000000 --- a/test/clip-twice-rectangle.c +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright © 2010 Mozilla Corporation - * Copyright © 2010 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_t *mask; - cairo_t *cr2; - - cairo_set_source_rgb (cr, 0, 1, 0); - cairo_paint (cr); - - /* clip twice, note that the intersection is smaller then the extents */ - cairo_set_fill_rule (cr, CAIRO_FILL_RULE_EVEN_ODD); - cairo_rectangle (cr, 10, 10, 80, 80); - cairo_rectangle (cr, 20, 20, 60, 60); - cairo_clip (cr); - - cairo_rectangle (cr, 0, 40, 40, 30); - cairo_clip (cr); - - /* and exercise the bug found by Jeff Muizelaar */ - mask = cairo_surface_create_similar (cairo_get_target (cr), - CAIRO_CONTENT_ALPHA, - width-20, height-20); - cr2 = cairo_create (mask); - cairo_surface_destroy (mask); - - cairo_set_source_rgba (cr2, 1, 1, 1, 1); - cairo_paint (cr2); - - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_mask_surface (cr, cairo_get_target (cr2), 0, 0); - cairo_destroy (cr2); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (clip_twice_rectangle, - "Tests clipping twice using rectangles", - "clip", /* keywords */ - NULL, /* requirements */ - 100, 100, - NULL, draw) diff --git a/test/clip-twice.c b/test/clip-twice.c deleted file mode 100644 index 641b551..0000000 --- a/test/clip-twice.c +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Kristian Høgsberg - */ - -#include "cairo-test.h" - -#define WIDTH 64 -#define HEIGHT 64 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_new_path (cr); - cairo_arc (cr, WIDTH / 2, HEIGHT / 2, WIDTH / 3, 0, 2 * M_PI); - cairo_clip (cr); - - cairo_new_path (cr); - cairo_move_to (cr, 0, 0); - cairo_line_to (cr, WIDTH / 4, HEIGHT / 2); - cairo_line_to (cr, 0, HEIGHT); - cairo_line_to (cr, WIDTH, HEIGHT); - cairo_line_to (cr, 3 * WIDTH / 4, HEIGHT / 2); - cairo_line_to (cr, WIDTH, 0); - cairo_close_path (cr); - cairo_clip (cr); - - cairo_set_source_rgb (cr, 0, 0, 0.6); - - cairo_new_path (cr); - cairo_move_to (cr, 0, 0); - cairo_line_to (cr, 0, HEIGHT); - cairo_line_to (cr, WIDTH / 2, 3 * HEIGHT / 4); - cairo_line_to (cr, WIDTH, HEIGHT); - cairo_line_to (cr, WIDTH, 0); - cairo_line_to (cr, WIDTH / 2, HEIGHT / 4); - cairo_close_path (cr); - cairo_fill (cr); - - cairo_new_path (cr); - cairo_arc (cr, WIDTH / 2, HEIGHT / 2, WIDTH / 5, 0, 2 * M_PI); - cairo_clip (cr); - cairo_set_source_rgb (cr, 1, 1, 0); - cairo_paint (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (clip_twice, - "Verifies that the clip mask is updated correctly when it constructed by setting the clip path twice.", - "clip", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/clip-unbounded.c b/test/clip-unbounded.c deleted file mode 100644 index cd1c602..0000000 --- a/test/clip-unbounded.c +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright © 2009 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -#define SIZE 10 - -static cairo_surface_t * -create_source (cairo_surface_t *target) -{ - cairo_surface_t *similar; - cairo_t *cr; - - similar = cairo_surface_create_similar (target, - CAIRO_CONTENT_COLOR, SIZE/2, SIZE); - cr = cairo_create (similar); - cairo_surface_destroy (similar); - - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_paint (cr); - - similar = cairo_surface_reference (cairo_get_target (cr)); - cairo_destroy (cr); - - return similar; -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_t *source; - - cairo_set_source_rgb (cr, 0, 0, 1); - cairo_paint (cr); - - cairo_rectangle (cr, 0, 0, SIZE/2, SIZE); - cairo_clip (cr); - - /* Draw a source rectangle outside the image, the effect should be to - * clear only within the clip region. - */ - source = create_source (cairo_get_target (cr)); - cairo_set_source_surface (cr, source, SIZE/2, 0); - cairo_surface_destroy (source); - - cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); - cairo_paint (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (clip_unbounded, - "Test handling of an unbounded fill outside the clip region", - "clip", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, draw) - diff --git a/test/clip-zero.c b/test/clip-zero.c deleted file mode 100644 index 5afd1b5..0000000 --- a/test/clip-zero.c +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright © 2007 Mozilla Corporation - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Vladimir Vukicevic - */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_pattern_t *pat; - cairo_surface_t *surf; - - cairo_new_path (cr); - cairo_rectangle (cr, 0, 0, 0, 0); - cairo_clip (cr); - - cairo_push_group (cr); - - cairo_set_source_rgb (cr, 1, 0, 0); - - cairo_new_path (cr); - cairo_rectangle (cr, -10, 10, 20, 20); - cairo_fill_preserve (cr); - cairo_stroke_preserve (cr); - cairo_paint (cr); - - cairo_select_font_face (cr, "sans", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL); - cairo_show_text (cr, "ABC"); - - cairo_mask (cr, cairo_get_source (cr)); - - surf = cairo_surface_create_similar (cairo_get_group_target (cr), CAIRO_CONTENT_COLOR_ALPHA, 0, 0); - pat = cairo_pattern_create_for_surface (surf); - cairo_surface_destroy (surf); - - cairo_mask (cr, pat); - cairo_pattern_destroy (pat); - - cairo_pop_group_to_source (cr); - cairo_paint (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (clip_zero, - "Verifies that 0x0 surfaces or clips don't cause problems.", - "clip", /* keywords */ - NULL, /* requirements */ - 0, 0, - NULL, draw) diff --git a/test/clipped-group.c b/test/clipped-group.c deleted file mode 100644 index a66f357..0000000 --- a/test/clipped-group.c +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright © 2008 Mozilla Corporation - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Mozilla Corporation not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Mozilla Corporation makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * MOZILLA CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL MOZILLA CORPORATION BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Jeff Muizelaar - */ - -#include "cairo-test.h" - -#define WIDTH 60 -#define HEIGHT 70 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - /* fill with black so we don't need an rgb test case */ - cairo_set_source_rgb (cr, 0, 0, 0); - cairo_paint (cr); - - /* setting a scale will ensure that the device offset is transformed */ - cairo_scale (cr, 2.1, 2.8); - cairo_set_source_rgb (cr, 1, .5,.4); - - /* all rectangles should look the same */ - - /* plain rectangle */ - cairo_rectangle (cr, 4, 4, 8, 8); - cairo_fill (cr); - - cairo_translate (cr, 10, 0); - - /* clipped rectangle */ - cairo_save (cr); - cairo_rectangle (cr, 3, 3, 9, 9); - cairo_clip (cr); - cairo_rectangle (cr, 4, 4, 8, 8); - cairo_fill (cr); - cairo_restore (cr); - - cairo_translate (cr, 0, 10); - - /* clipped and grouped rectangle */ - cairo_save (cr); - cairo_rectangle (cr, 3, 3, 9, 9); - cairo_clip (cr); - cairo_push_group (cr); - cairo_rectangle (cr, 4, 4, 8, 8); - cairo_fill (cr); - cairo_pop_group_to_source (cr); - cairo_paint (cr); - cairo_restore (cr); - - cairo_translate (cr, -10, 0); - - /* grouped rectangle */ - cairo_push_group (cr); - cairo_rectangle (cr, 4, 4, 8, 8); - cairo_fill (cr); - cairo_pop_group_to_source (cr); - cairo_paint (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (clipped_group, - "Test that a clipped group ends up in the right place", - "clip", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/clipped-surface.c b/test/clipped-surface.c deleted file mode 100644 index a10652d..0000000 --- a/test/clipped-surface.c +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright 2008 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -/* - * Michael Natterer (mitch) reported a bad regression with post-1.8 trunk - * with artifacts drawn whilst repainting exposed areas. - */ - -#include "cairo-test.h" - -static const char png_filename[] = "romedalen.png"; - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - const cairo_test_context_t *ctx = cairo_test_get_context (cr); - cairo_surface_t *image; - - image = cairo_test_create_surface_from_png (ctx, png_filename); - - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_paint (cr); - - cairo_rectangle (cr, 20, 20, 10, 10); - cairo_clip (cr); - - cairo_set_source_surface (cr, image, 10, 10); - cairo_surface_destroy (image); - - cairo_rectangle (cr, 10, 10, 20, 20); - cairo_fill (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (clipped_surface, - "Tests application of a clip to a source surface", - "clip", /* keywords */ - NULL, /* requirements */ - 40, 40, - NULL, draw) diff --git a/test/clipped-trapezoids-ref.png b/test/clipped-trapezoids-ref.png deleted file mode 100644 index 3fd300c..0000000 Binary files a/test/clipped-trapezoids-ref.png and /dev/null differ diff --git a/test/clipped-trapezoids.c b/test/clipped-trapezoids.c deleted file mode 100644 index 1f96daa..0000000 --- a/test/clipped-trapezoids.c +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright 2008 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - double dash[2] = { 8, 4 }; - double radius; - - radius = width; - if (height > radius) - radius = height; - - /* fill the background using a big circle */ - cairo_arc (cr, 0, 0, 4 * radius, 0, 2 * M_PI); - cairo_fill (cr); - - /* a rotated square - overlapping the corners */ - cairo_save (cr); - cairo_save (cr); - cairo_translate (cr, width/2, height/2); - cairo_rotate (cr, M_PI/4); - cairo_scale (cr, M_SQRT2, M_SQRT2); - cairo_rectangle (cr, -width/2, -height/2, width, height); - cairo_restore (cr); - cairo_set_source_rgba (cr, 0, 1, 0, .5); - cairo_set_line_width (cr, radius/2); - cairo_stroke (cr); - cairo_restore (cr); - - /* and put some circles in the corners */ - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_new_sub_path (cr); - cairo_arc (cr, 0, 0, radius/4, 0, 2 * M_PI); - cairo_new_sub_path (cr); - cairo_arc (cr, width, 0, radius/4, 0, 2 * M_PI); - cairo_new_sub_path (cr); - cairo_arc (cr, width, height, radius/4, 0, 2 * M_PI); - cairo_new_sub_path (cr); - cairo_arc (cr, 0, height, radius/4, 0, 2 * M_PI); - cairo_fill (cr); - - /* a couple of pixel-aligned lines */ - cairo_set_source_rgb (cr, 0, 0, 1); - cairo_move_to (cr, width/2, -height); - cairo_rel_line_to (cr, 0, 3*height); - cairo_move_to (cr, -width, height/2); - cairo_rel_line_to (cr, 3*width, 0); - cairo_stroke (cr); - - /* a couple of dashed diagonals */ - cairo_save (cr); - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_set_dash (cr, dash, 2, 0); - cairo_set_line_width (cr, 4.); - cairo_move_to (cr, -width, -height); - cairo_line_to (cr, width+width, height+height); - cairo_move_to (cr, width+width, -height); - cairo_line_to (cr, -width, height+height); - cairo_stroke (cr); - cairo_restore (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (clipped_trapezoids, - "Tests clipping of trapezoids larger than the surface", - "clip", /* keywords */ - NULL, /* requirements */ - 40, 40, - NULL, draw) diff --git a/test/close-path-current-point.c b/test/close-path-current-point.c deleted file mode 100644 index 35f8d42..0000000 --- a/test/close-path-current-point.c +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright © 2009 Nis Martensen - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear in - * supporting documentation, and that the name of the copyright holder - * not be used in advertising or publicity pertaining to distribution of - * the software without specific, written prior permission. The - * copyright holder makes no representations about the suitability of - * this software for any purpose. It is provided "as is" without - * express or implied warranty. - * - * THE COPYRIGHT HOLDER DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY - * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF - * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Nis Martensen - */ - -#include "cairo-test.h" - -#define SIZE 20 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - /* We draw in the default black, so paint white first. */ - cairo_save (cr); - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); /* white */ - cairo_paint (cr); - cairo_restore (cr); - - /* subpath starts with cairo_move_to */ - cairo_new_sub_path (cr); - cairo_move_to (cr, SIZE, SIZE); - cairo_rel_line_to (cr, SIZE, 0); - cairo_rel_line_to (cr, 0, SIZE); - cairo_close_path (cr); - cairo_rel_line_to (cr, 0.5 * SIZE, SIZE); - - /* subpath starts with cairo_line_to */ - cairo_new_sub_path (cr); - cairo_line_to (cr, SIZE, 3 * SIZE); - cairo_rel_line_to (cr, SIZE, 0); - cairo_rel_line_to (cr, 0, SIZE); - cairo_close_path (cr); - cairo_rel_line_to (cr, 0, SIZE); - - /* subpath starts with cairo_curve_to */ - cairo_new_sub_path (cr); - cairo_curve_to (cr, - SIZE, 5 * SIZE, - 1.5 * SIZE, 6 * SIZE, - 2 * SIZE, 5 * SIZE); - cairo_rel_line_to (cr, 0, SIZE); - cairo_close_path (cr); - cairo_rel_line_to (cr, -0.5 * SIZE, SIZE); - - /* subpath starts with cairo_arc */ - cairo_new_sub_path (cr); - cairo_arc (cr, - 1.5 * SIZE, 7 * SIZE, - 0.5 * SIZE, - M_PI, 2 * M_PI); - cairo_rel_line_to (cr, 0, SIZE); - cairo_close_path (cr); - cairo_rel_line_to (cr, -0.7 * SIZE, 0.7 * SIZE); - - /* subpath starts with cairo_arc_negative */ - cairo_new_sub_path (cr); - cairo_arc_negative (cr, - 1.5 * SIZE, 9 * SIZE, - 0.5 * SIZE, - M_PI, 2 * M_PI); - cairo_rel_line_to (cr, 0, SIZE); - cairo_close_path (cr); - cairo_rel_line_to (cr, -0.8 * SIZE, 0.3 * SIZE); - - cairo_stroke (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (close_path_current_point, - "Test some corner cases related to cairo path operations and the current point", - "path", /* keywords */ - NULL, /* requirements */ - 3 * SIZE, 11 * SIZE, - NULL, draw) diff --git a/test/close-path.c b/test/close-path.c deleted file mode 100644 index f1f1230..0000000 --- a/test/close-path.c +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright © 2006 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" -#include - -static cairo_test_draw_function_t draw; - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_path_t *path; - - /* We draw in the default black, so paint white first. */ - cairo_save (cr); - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); /* white */ - cairo_paint (cr); - cairo_restore (cr); - - /* This curious approach for drawing a circle (starting with a - * closed arc) exercises a bug in which the "last move point" was - * not being set so the close_path closes to (0,0). */ - cairo_arc (cr, 8, 8, 4, 0, M_PI); - cairo_close_path (cr); - cairo_arc (cr, 8, 8, 4, M_PI, 2 * M_PI); - - cairo_fill (cr); - - cairo_translate (cr, 16, 0); - - /* Here a curve immediately after a close_to will begin from (0,0) - * when the path is obtained with cairo_copy_path_flat. */ - cairo_move_to (cr, 8, 4); - cairo_arc_negative (cr, 8, 8, 4, 3 * M_PI / 2.0, M_PI / 2.0); - cairo_close_path (cr); - cairo_curve_to (cr, - 12, 4, - 12, 12, - 8, 12); - - path = cairo_copy_path_flat (cr); - cairo_new_path (cr); - cairo_append_path (cr, path); - cairo_path_destroy (path); - - cairo_fill (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (close_path, - "Test some corner cases related to cairo_close_path", - "path", /* keywords */ - NULL, /* requirements */ - 32, 16, - NULL, draw) diff --git a/test/composite-integer-translate-over-repeat.c b/test/composite-integer-translate-over-repeat.c deleted file mode 100644 index d9e0005..0000000 --- a/test/composite-integer-translate-over-repeat.c +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright © 2007 Mozilla Corporation - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Vladimir Vukicevic - */ - -#include "cairo-test.h" -#include -#include - -#define SIZE 100 -#define SIZE2 20 -#define OFFSET 10 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_t *image; - cairo_pattern_t *pat; - cairo_t *cr2; - - image = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, SIZE2, SIZE2); - cr2 = cairo_create (image); - cairo_surface_destroy (image); - - cairo_set_source_rgba (cr2, 1, 0, 0, 1); - cairo_rectangle (cr2, 0, 0, SIZE2/2, SIZE2/2); - cairo_fill (cr2); - cairo_set_source_rgba (cr2, 0, 1, 0, 1); - cairo_rectangle (cr2, SIZE2/2, 0, SIZE2/2, SIZE2/2); - cairo_fill (cr2); - cairo_set_source_rgba (cr2, 0, 0, 1, 1); - cairo_rectangle (cr2, 0, SIZE2/2, SIZE2/2, SIZE2/2); - cairo_fill (cr2); - cairo_set_source_rgba (cr2, 1, 1, 0, 1); - cairo_rectangle (cr2, SIZE2/2, SIZE2/2, SIZE2/2, SIZE2/2); - cairo_fill (cr2); - - pat = cairo_pattern_create_for_surface (cairo_get_target (cr2)); - cairo_destroy (cr2); - - cairo_pattern_set_extend (pat, CAIRO_EXTEND_REPEAT); - - cairo_set_source_rgba (cr, 0, 0, 0, 1); - cairo_rectangle (cr, 0, 0, SIZE, SIZE); - cairo_fill (cr); - - cairo_translate (cr, OFFSET, OFFSET); - cairo_set_operator (cr, CAIRO_OPERATOR_OVER); - cairo_set_source (cr, pat); - cairo_rectangle (cr, 0, 0, SIZE - OFFSET, SIZE - OFFSET); - cairo_fill (cr); - - cairo_pattern_destroy (pat); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (composite_integer_translate_over_repeat, - "Test simple compositing: integer-translation 32->32 OVER, with repeat", - "composite", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, draw) diff --git a/test/composite-integer-translate-over.c b/test/composite-integer-translate-over.c deleted file mode 100644 index 1b82a33..0000000 --- a/test/composite-integer-translate-over.c +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright © 2006 Mozilla Corporation - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Mozilla Corporation not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Mozilla Corporation makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * MOZILLA CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL MOZILLA CORPORATION BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Vladimir Vukicevic - */ -#include "cairo-test.h" -#include -#include - -#define SIZE 100 -#define OFFSET 10 -static const char *png_filename = "romedalen.png"; - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - const cairo_test_context_t *ctx = cairo_test_get_context (cr); - cairo_surface_t *image; - - image = cairo_test_create_surface_from_png (ctx, png_filename); - - cairo_set_source_rgba (cr, 0, 0, 0, 1); - cairo_rectangle (cr, 0, 0, SIZE, SIZE); - cairo_fill (cr); - - cairo_translate (cr, OFFSET, OFFSET); - cairo_set_operator (cr, CAIRO_OPERATOR_OVER); - cairo_set_source_surface (cr, image, 0, 0); - cairo_rectangle (cr, 0, 0, (SIZE-OFFSET), (SIZE-OFFSET)); - cairo_fill (cr); - - cairo_surface_destroy (image); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (composite_integer_translate_over, - "Test simple compositing: integer-translation 32->32 OVER", - "composite", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, draw) diff --git a/test/composite-integer-translate-source.c b/test/composite-integer-translate-source.c deleted file mode 100644 index e6fd933..0000000 --- a/test/composite-integer-translate-source.c +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright © 2007 Mozilla Corporation - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Vladimir Vukicevic - */ - -#include "cairo-test.h" -#include -#include - -#define SIZE 100 -#define OFFSET 10 - -static const char *png_filename = "romedalen.png"; - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - const cairo_test_context_t *ctx = cairo_test_get_context (cr); - cairo_surface_t *image; - - image = cairo_test_create_surface_from_png (ctx, png_filename); - - cairo_set_source_rgba (cr, 0, 0, 0, 1); - cairo_rectangle (cr, 0, 0, SIZE, SIZE); - cairo_fill (cr); - - cairo_translate (cr, OFFSET, OFFSET); - cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); - cairo_set_source_surface (cr, image, 0, 0); - cairo_rectangle (cr, 0, 0, SIZE - OFFSET, SIZE - OFFSET); - cairo_fill (cr); - - cairo_surface_destroy (image); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (composite_integer_translate_source, - "Test simple compositing: integer-translation 32->32 SOURCE", - "composite", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, draw) diff --git a/test/copy-disjoint.c b/test/copy-disjoint.c deleted file mode 100644 index 1ddfd5a..0000000 --- a/test/copy-disjoint.c +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright © 2011 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -/* The goal is exercise a bug that existed in the xlib backend, where - * it assumed the rectangles generated by rectangular tessallator had - * any sorting guarantees. - */ - -#define WIDTH 300 -#define HEIGHT 300 - -static cairo_surface_t * -create_source (cairo_surface_t *target) -{ - cairo_surface_t *surface; - cairo_t *cr; - - surface = cairo_surface_create_similar (target, - CAIRO_CONTENT_COLOR, - WIDTH, HEIGHT); - cr = cairo_create (surface); - cairo_surface_destroy (surface); - - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - surface = cairo_surface_reference (cairo_get_target (cr)); - cairo_destroy (cr); - - return surface; -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_t *white; - int x; - - /* black background */ - cairo_set_source_rgb (cr, 0, 0, 0); - cairo_paint (cr); - - /* white rectangles */ - white = create_source (cairo_get_target (cr)); - cairo_set_source_surface (cr, white, 0, 0); - cairo_surface_destroy (white); - - /* blit a set of rectangles that the rectangular tessellator - * will not emit sorted. */ - for (x = 0; x < WIDTH - 10; x += 15) - cairo_rectangle (cr, x, x, 10, HEIGHT - 2*x); - cairo_fill (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (copy_disjoint, - "Tests copying unsorted rectangles.", - "fill", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/copy-path.c b/test/copy-path.c deleted file mode 100644 index 25823b6..0000000 --- a/test/copy-path.c +++ /dev/null @@ -1,314 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" -#include - -static void -scale_by_two (double *x, double *y) -{ - *x = *x * 2.0; - *y = *y * 2.0; -} - -typedef void (*munge_func_t) (double *x, double *y); - -static void -munge_and_set_path (cairo_t *cr, - cairo_path_t *path, - munge_func_t munge) -{ - int i; - cairo_path_data_t *p; - double x1, y1, x2, y2, x3, y3; - - if (path->status) { - cairo_append_path (cr, path); - return; - } - - for (i=0; i < path->num_data; i += path->data[i].header.length) { - p = &path->data[i]; - switch (p->header.type) { - case CAIRO_PATH_MOVE_TO: - x1 = p[1].point.x; y1 = p[1].point.y; - (munge) (&x1, &y1); - cairo_move_to (cr, x1, y1); - break; - case CAIRO_PATH_LINE_TO: - x1 = p[1].point.x; y1 = p[1].point.y; - (munge) (&x1, &y1); - cairo_line_to (cr, x1, y1); - break; - case CAIRO_PATH_CURVE_TO: - x1 = p[1].point.x; y1 = p[1].point.y; - x2 = p[2].point.x; y2 = p[2].point.y; - x3 = p[3].point.x; y3 = p[3].point.y; - (munge) (&x1, &y1); - (munge) (&x2, &y2); - (munge) (&x3, &y3); - cairo_curve_to (cr, - x1, y1, - x2, y2, - x3, y3); - break; - case CAIRO_PATH_CLOSE_PATH: - cairo_close_path (cr); - break; - } - } -} - -static void -make_path (cairo_t *cr) -{ - cairo_rectangle (cr, 0, 0, 5, 5); - cairo_move_to (cr, 15, 2.5); - cairo_arc (cr, 12.5, 2.5, 2.5, 0, 2 * M_PI); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - const cairo_test_context_t *ctx = cairo_test_get_context (cr); - cairo_path_t *path; - cairo_t *cr_error; - - /* Ensure that calling cairo_copy_path on an in-error cairo_t will - * propagate the error. */ - cr_error = cairo_create (NULL); - path = cairo_copy_path (cr_error); - if (path->status != CAIRO_STATUS_NULL_POINTER) { - cairo_test_log (ctx, - "Error: cairo_copy_path returned status of %s rather than propagating %s\n", - cairo_status_to_string (path->status), - cairo_status_to_string (CAIRO_STATUS_NULL_POINTER)); - cairo_path_destroy (path); - cairo_destroy (cr_error); - return CAIRO_TEST_FAILURE; - } - cairo_path_destroy (path); - - path = cairo_copy_path_flat (cr_error); - if (path->status != CAIRO_STATUS_NULL_POINTER) { - cairo_test_log (ctx, - "Error: cairo_copy_path_flat returned status of %s rather than propagating %s\n", - cairo_status_to_string (path->status), - cairo_status_to_string (CAIRO_STATUS_NULL_POINTER)); - cairo_path_destroy (path); - cairo_destroy (cr_error); - return CAIRO_TEST_FAILURE; - } - cairo_path_destroy (path); - - cairo_destroy (cr_error); - - /* first check that we can copy an empty path */ - cairo_new_path (cr); - path = cairo_copy_path (cr); - if (path->status != CAIRO_STATUS_SUCCESS) { - cairo_status_t status = path->status; - cairo_test_log (ctx, - "Error: cairo_copy_path returned status of %s\n", - cairo_status_to_string (status)); - cairo_path_destroy (path); - return cairo_test_status_from_status (ctx, status); - } - if (path->num_data != 0) { - cairo_test_log (ctx, - "Error: cairo_copy_path did not copy an empty path, returned path contains %d elements\n", - path->num_data); - cairo_path_destroy (path); - return CAIRO_TEST_FAILURE; - } - cairo_append_path (cr, path); - cairo_path_destroy (path); - if (cairo_status (cr) != CAIRO_STATUS_SUCCESS) { - cairo_test_log (ctx, - "Error: cairo_append_path failed with a copy of an empty path, returned status of %s\n", - cairo_status_to_string (cairo_status (cr))); - return cairo_test_status_from_status (ctx, cairo_status (cr)); - } - - /* We draw in the default black, so paint white first. */ - cairo_save (cr); - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); /* white */ - cairo_paint (cr); - cairo_restore (cr); - - /* copy path, munge, and fill */ - cairo_translate (cr, 5, 5); - make_path (cr); - path = cairo_copy_path (cr); - - cairo_new_path (cr); - munge_and_set_path (cr, path, scale_by_two); - cairo_path_destroy (path); - cairo_fill (cr); - - /* copy flattened path, munge, and fill */ - cairo_translate (cr, 0, 15); - make_path (cr); - path = cairo_copy_path_flat (cr); - - cairo_new_path (cr); - munge_and_set_path (cr, path, scale_by_two); - cairo_path_destroy (path); - cairo_fill (cr); - - /* append two copies of path, and fill */ - cairo_translate (cr, 0, 15); - cairo_scale (cr, 2.0, 2.0); - make_path (cr); - path = cairo_copy_path (cr); - - cairo_new_path (cr); - cairo_append_path (cr, path); - cairo_translate (cr, 2.5, 2.5); - cairo_append_path (cr, path); - - cairo_set_fill_rule (cr, CAIRO_FILL_RULE_EVEN_ODD); - cairo_fill (cr); - - cairo_path_destroy (path); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -preamble (cairo_test_context_t *ctx) -{ - cairo_t *cr; - cairo_path_data_t data; - cairo_path_t path; - cairo_surface_t *surface; - cairo_status_t status; - - surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 1, 1); - status = cairo_surface_status (surface); - if (status) { - cairo_surface_destroy (surface); - return cairo_test_status_from_status (ctx, status); - } - - /* Test a few error cases for cairo_append_path_data */ -#define CAIRO_CREATE() do {\ - cr = cairo_create (surface); \ - status = cairo_status (cr); \ - if (status) { \ - cairo_destroy (cr); \ - cairo_surface_destroy (surface); \ - return cairo_test_status_from_status (ctx, status); \ - } \ -} while (0) - CAIRO_CREATE (); - cairo_append_path (cr, NULL); - status = cairo_status (cr); - cairo_destroy (cr); - if (status != CAIRO_STATUS_NULL_POINTER) { - cairo_surface_destroy (surface); - return cairo_test_status_from_status (ctx, status); - } - - CAIRO_CREATE (); - path.status = -1; - cairo_append_path (cr, &path); - status = cairo_status (cr); - cairo_destroy (cr); - if (status != CAIRO_STATUS_INVALID_STATUS) { - cairo_surface_destroy (surface); - return cairo_test_status_from_status (ctx, status); - } - - CAIRO_CREATE (); - path.status = CAIRO_STATUS_NO_MEMORY; - cairo_append_path (cr, &path); - status = cairo_status (cr); - cairo_destroy (cr); - if (status != CAIRO_STATUS_NO_MEMORY) { - cairo_surface_destroy (surface); - return cairo_test_status_from_status (ctx, status); - } - - CAIRO_CREATE (); - path.data = NULL; - path.num_data = 0; - path.status = CAIRO_STATUS_SUCCESS; - cairo_append_path (cr, &path); - status = cairo_status (cr); - cairo_destroy (cr); - if (status != CAIRO_STATUS_SUCCESS) { - cairo_surface_destroy (surface); - return cairo_test_status_from_status (ctx, status); - } - - CAIRO_CREATE (); - path.data = NULL; - path.num_data = 1; - path.status = CAIRO_STATUS_SUCCESS; - cairo_append_path (cr, &path); - status = cairo_status (cr); - cairo_destroy (cr); - if (status != CAIRO_STATUS_NULL_POINTER) { - cairo_surface_destroy (surface); - return cairo_test_status_from_status (ctx, status); - } - - CAIRO_CREATE (); - /* Intentionally insert bogus header.length value (otherwise would be 2) */ - data.header.type = CAIRO_PATH_MOVE_TO; - data.header.length = 1; - path.data = &data; - path.num_data = 1; - cairo_append_path (cr, &path); - status = cairo_status (cr); - cairo_destroy (cr); - if (status != CAIRO_STATUS_INVALID_PATH_DATA) { - cairo_surface_destroy (surface); - return cairo_test_status_from_status (ctx, status); - } - - /* And test the degnerate case */ - CAIRO_CREATE (); - path.num_data = 0; - cairo_append_path (cr, &path); - status = cairo_status (cr); - cairo_destroy (cr); - if (status != CAIRO_STATUS_SUCCESS) { - cairo_surface_destroy (surface); - return cairo_test_status_from_status (ctx, status); - } - - cairo_surface_destroy (surface); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (copy_path, - "Tests calls to path_data functions: cairo_copy_path, cairo_copy_path_flat, and cairo_append_path", - "path", /* keywords */ - NULL, /* requirements */ - 45, 53, - preamble, draw) diff --git a/test/coverage.c b/test/coverage.c deleted file mode 100644 index 12225c3..0000000 --- a/test/coverage.c +++ /dev/null @@ -1,506 +0,0 @@ -/* - * Copyright 2010 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -/* Test the fidelity of the rasterisation, because Cairo is my favourite - * driver test suite. - */ - -#define GENERATE_REFERENCE 0 - -#define WIDTH 256 -#define HEIGHT 40 - -#include "../src/cairo-fixed-type-private.h" -#define PRECISION (1 << CAIRO_FIXED_FRAC_BITS) - -/* XXX beware multithreading! */ -static uint32_t state; - -static uint32_t -hars_petruska_f54_1_random (void) -{ -#define rol(x,k) ((x << k) | (x >> (32-k))) - return state = (state ^ rol (state, 5) ^ rol (state, 24)) + 0x37798849; -#undef rol -} - -static double -random_offset (int range, int precise) -{ - double x = hars_petruska_f54_1_random() / (double) UINT32_MAX * range / WIDTH; - if (precise) - x = floor (x * PRECISION) / PRECISION; - return x; -} - -static cairo_test_status_t -rectangles (cairo_t *cr, int width, int height) -{ - int x, y, channel; - - state = 0x12345678; - - cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); - cairo_paint (cr); - -#if GENERATE_REFERENCE - for (x = 0; x < WIDTH; x++) { - cairo_set_source_rgba (cr, 1, 1, 1, x * x * 1.0 / (WIDTH * WIDTH)); - cairo_rectangle (cr, x, 0, 1, HEIGHT); - cairo_fill (cr); - } -#else - cairo_set_operator (cr, CAIRO_OPERATOR_ADD); - for (channel = 0; channel < 3; channel++) { - switch (channel) { - default: - case 0: cairo_set_source_rgb (cr, 1.0, 0.0, 0.0); break; - case 1: cairo_set_source_rgb (cr, 0.0, 1.0, 0.0); break; - case 2: cairo_set_source_rgb (cr, 0.0, 0.0, 1.0); break; - } - - for (x = 0; x < WIDTH; x++) { - for (y = 0; y < HEIGHT; y++) { - double dx = random_offset (WIDTH - x, TRUE); - double dy = random_offset (WIDTH - x, TRUE); - cairo_rectangle (cr, x + dx, y + dy, x / (double) WIDTH, x / (double) WIDTH); - } - } - cairo_fill (cr); - } -#endif - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -rhombus (cairo_t *cr, int width, int height) -{ - int x, y; - - cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); - cairo_paint (cr); - -#if GENERATE_REFERENCE - for (y = 0; y < WIDTH; y++) { - for (x = 0; x < WIDTH; x++) { - cairo_set_source_rgba (cr, 1, 1, 1, - x * y / (2. * WIDTH * WIDTH)); - cairo_rectangle (cr, 2*x, 2*y, 2, 2); - cairo_fill (cr); - } - } -#else - cairo_set_operator (cr, CAIRO_OPERATOR_OVER); - cairo_set_source_rgb (cr, 1, 1, 1); - - for (y = 0; y < WIDTH; y++) { - double yf = y / (double) WIDTH; - for (x = 0; x < WIDTH; x++) { - double xf = x / (double) WIDTH; - - cairo_move_to (cr, - 2*x + 1 - xf, - 2*y + 1); - cairo_line_to (cr, - 2*x + 1, - 2*y + 1 - yf); - cairo_line_to (cr, - 2*x + 1 + xf, - 2*y + 1); - cairo_line_to (cr, - 2*x + 1, - 2*y + 1 + yf); - cairo_close_path (cr); - } - } - - cairo_fill (cr); -#endif - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -intersecting_quads (cairo_t *cr, int width, int height) -{ - int x, y, channel; - - state = 0x12345678; - - cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); - cairo_paint (cr); - -#if GENERATE_REFERENCE - for (x = 0; x < WIDTH; x++) { - cairo_set_source_rgba (cr, 1, 1, 1, x * x * 0.5 / (WIDTH * WIDTH)); - cairo_rectangle (cr, x, 0, 1, HEIGHT); - cairo_fill (cr); - } -#else - cairo_set_operator (cr, CAIRO_OPERATOR_ADD); - for (channel = 0; channel < 3; channel++) { - switch (channel) { - default: - case 0: cairo_set_source_rgb (cr, 1.0, 0.0, 0.0); break; - case 1: cairo_set_source_rgb (cr, 0.0, 1.0, 0.0); break; - case 2: cairo_set_source_rgb (cr, 0.0, 0.0, 1.0); break; - } - - for (x = 0; x < WIDTH; x++) { - double step = x / (double) WIDTH; - for (y = 0; y < HEIGHT; y++) { - double dx = random_offset (WIDTH - x, TRUE); - double dy = random_offset (WIDTH - x, TRUE); - cairo_move_to (cr, x + dx, y + dy); - cairo_rel_line_to (cr, step, step); - cairo_rel_line_to (cr, 0, -step); - cairo_rel_line_to (cr, -step, step); - cairo_close_path (cr); - } - } - cairo_fill (cr); - } -#endif - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -intersecting_triangles (cairo_t *cr, int width, int height) -{ - int x, y, channel; - - state = 0x12345678; - - cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); - cairo_paint (cr); - -#if GENERATE_REFERENCE - for (x = 0; x < WIDTH; x++) { - cairo_set_source_rgba (cr, 1, 1, 1, x * 0.75 / WIDTH); - cairo_rectangle (cr, x, 0, 1, HEIGHT); - cairo_fill (cr); - } -#else - cairo_set_operator (cr, CAIRO_OPERATOR_ADD); - for (channel = 0; channel < 3; channel++) { - switch (channel) { - default: - case 0: cairo_set_source_rgb (cr, 1.0, 0.0, 0.0); break; - case 1: cairo_set_source_rgb (cr, 0.0, 1.0, 0.0); break; - case 2: cairo_set_source_rgb (cr, 0.0, 0.0, 1.0); break; - } - - for (x = 0; x < WIDTH; x++) { - double step = x / (double) WIDTH; - for (y = 0; y < HEIGHT; y++) { - double dx = random_offset (WIDTH - x, TRUE); - double dy = random_offset (WIDTH - x, TRUE); - - /* left */ - cairo_move_to (cr, x + dx, y + dy); - cairo_rel_line_to (cr, 0, step); - cairo_rel_line_to (cr, step, 0); - cairo_close_path (cr); - - /* right, mirrored */ - cairo_move_to (cr, x + dx + step, y + dy + step); - cairo_rel_line_to (cr, 0, -step); - cairo_rel_line_to (cr, -step, step); - cairo_close_path (cr); - } - } - cairo_fill (cr); - } -#endif - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -triangles (cairo_t *cr, int width, int height) -{ - int x, y, channel; - - state = 0x12345678; - - cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); - cairo_paint (cr); - -#if GENERATE_REFERENCE - for (x = 0; x < WIDTH; x++) { - cairo_set_source_rgba (cr, 1, 1, 1, x * x * 0.5 / (WIDTH * WIDTH)); - cairo_rectangle (cr, x, 0, 1, HEIGHT); - cairo_fill (cr); - } -#else - cairo_set_operator (cr, CAIRO_OPERATOR_ADD); - for (channel = 0; channel < 3; channel++) { - switch (channel) { - default: - case 0: cairo_set_source_rgb (cr, 1.0, 0.0, 0.0); break; - case 1: cairo_set_source_rgb (cr, 0.0, 1.0, 0.0); break; - case 2: cairo_set_source_rgb (cr, 0.0, 0.0, 1.0); break; - } - - for (x = 0; x < WIDTH; x++) { - for (y = 0; y < HEIGHT; y++) { - double dx = random_offset (WIDTH - x, TRUE); - double dy = random_offset (WIDTH - x, TRUE); - cairo_move_to (cr, x + dx, y + dy); - cairo_rel_line_to (cr, x / (double) WIDTH, 0); - cairo_rel_line_to (cr, 0, x / (double) WIDTH); - cairo_close_path (cr); - } - } - cairo_fill (cr); - } -#endif - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -abutting (cairo_t *cr, int width, int height) -{ - int x, y; - - cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); - cairo_paint (cr); - - cairo_set_source_rgba (cr, 1.0, 1.0, 1.0, 0.75); - -#if GENERATE_REFERENCE - cairo_paint (cr); -#else - cairo_set_operator (cr, CAIRO_OPERATOR_ADD); - - for (y = 0; y < 16; y++) { - for (x = 0; x < 16; x++) { - double theta = (y * 16 + x) * M_PI / 512; - double cx = 16 * cos (theta) + x * 16; - double cy = 16 * sin (theta) + y * 16; - - cairo_move_to (cr, x * 16, y * 16); - cairo_line_to (cr, cx, cy); - cairo_line_to (cr, (x + 1) * 16, y * 16); - cairo_fill (cr); - - cairo_move_to (cr, (x + 1) * 16, y * 16); - cairo_line_to (cr, cx, cy); - cairo_line_to (cr, (x + 1) * 16, (y + 1) * 16); - cairo_fill (cr); - - cairo_move_to (cr, (x + 1) * 16, (y + 1) * 16); - cairo_line_to (cr, cx, cy); - cairo_line_to (cr, x * 16, (y + 1) * 16); - cairo_fill (cr); - - cairo_move_to (cr, x * 16, (y + 1) * 16); - cairo_line_to (cr, cx, cy); - cairo_line_to (cr, x * 16, y * 16); - cairo_fill (cr); - } - } -#endif - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -column_triangles (cairo_t *cr, int width, int height) -{ - int x, y, i, channel; - - state = 0x12345678; - - cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); - cairo_paint (cr); - -#if GENERATE_REFERENCE - for (x = 0; x < WIDTH; x++) { - cairo_set_source_rgba (cr, 1, 1, 1, x * 0.5 / WIDTH); - cairo_rectangle (cr, x, 0, 1, HEIGHT); - cairo_fill (cr); - } -#else - cairo_set_operator (cr, CAIRO_OPERATOR_ADD); - for (channel = 0; channel < 3; channel++) { - switch (channel) { - default: - case 0: cairo_set_source_rgb (cr, 1.0, 0.0, 0.0); break; - case 1: cairo_set_source_rgb (cr, 0.0, 1.0, 0.0); break; - case 2: cairo_set_source_rgb (cr, 0.0, 0.0, 1.0); break; - } - - for (x = 0; x < WIDTH; x++) { - double step = x / (double) (2 * WIDTH); - for (y = 0; y < HEIGHT; y++) { - for (i = 0; i < PRECISION; i++) { - double dy = random_offset (WIDTH - x, FALSE); - - /* - * We want to test some sharing of edges to further - * stress the rasterisers, so instead of using one - * tall triangle, it is split into two, with vertical - * edges on either side that may co-align with their - * neighbours: - * - * s --- . --- - * t | |\ | - * e | | \ | - * p --- .... | 2 * step = x / WIDTH - * \ | | - * \| | - * . --- - * |---| - * 1 / PRECISION - * - * Each column contains two triangles of width one quantum and - * total height of (x / WIDTH), thus the total area covered by all - * columns in each pixel is .5 * (x / WIDTH). - */ - - cairo_move_to (cr, x + i / (double) PRECISION, y + dy); - cairo_rel_line_to (cr, 0, step); - cairo_rel_line_to (cr, 1 / (double) PRECISION, step); - cairo_rel_line_to (cr, 0, -step); - cairo_close_path (cr); - } - cairo_fill (cr); /* do these per-pixel due to the extra volume of edges */ - } - } - } -#endif - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -row_triangles (cairo_t *cr, int width, int height) -{ - int x, y, i, channel; - - state = 0x12345678; - - cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); - cairo_paint (cr); - -#if GENERATE_REFERENCE - for (x = 0; x < WIDTH; x++) { - cairo_set_source_rgba (cr, 1, 1, 1, x * 0.5 / WIDTH); - cairo_rectangle (cr, x, 0, 1, HEIGHT); - cairo_fill (cr); - } -#else - cairo_set_operator (cr, CAIRO_OPERATOR_ADD); - for (channel = 0; channel < 3; channel++) { - switch (channel) { - default: - case 0: cairo_set_source_rgb (cr, 1.0, 0.0, 0.0); break; - case 1: cairo_set_source_rgb (cr, 0.0, 1.0, 0.0); break; - case 2: cairo_set_source_rgb (cr, 0.0, 0.0, 1.0); break; - } - - for (x = 0; x < WIDTH; x++) { - double step = x / (double) (2 * WIDTH); - for (y = 0; y < HEIGHT; y++) { - for (i = 0; i < PRECISION; i++) { - double dx = random_offset (WIDTH - x, FALSE); - - /* See column_triangles() for a transposed description - * of this geometry. - */ - - cairo_move_to (cr, x + dx, y + i / (double) PRECISION); - cairo_rel_line_to (cr, step, 0); - cairo_rel_line_to (cr, step, 1 / (double) PRECISION); - cairo_rel_line_to (cr, -step, 0); - cairo_close_path (cr); - } - cairo_fill (cr); /* do these per-pixel due to the extra volume of edges */ - } - } - } -#endif - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (coverage_rectangles, - "Check the fidelity of the rasterisation.", - NULL, /* keywords */ - "target=raster", /* requirements */ - WIDTH, HEIGHT, - NULL, rectangles) - -CAIRO_TEST (coverage_rhombus, - "Check the fidelity of the rasterisation.", - NULL, /* keywords */ - "target=raster", /* requirements */ - 2*WIDTH, 2*WIDTH, - NULL, rhombus) - -CAIRO_TEST (coverage_intersecting_quads, - "Check the fidelity of the rasterisation.", - NULL, /* keywords */ - "target=raster", /* requirements */ - WIDTH, HEIGHT, - NULL, intersecting_quads) - -CAIRO_TEST (coverage_intersecting_triangles, - "Check the fidelity of the rasterisation.", - NULL, /* keywords */ - "target=raster", /* requirements */ - WIDTH, HEIGHT, - NULL, intersecting_triangles) -CAIRO_TEST (coverage_row_triangles, - "Check the fidelity of the rasterisation.", - NULL, /* keywords */ - "target=raster", /* requirements */ - WIDTH, HEIGHT, - NULL, row_triangles) -CAIRO_TEST (coverage_column_triangles, - "Check the fidelity of the rasterisation.", - NULL, /* keywords */ - "target=raster", /* requirements */ - WIDTH, HEIGHT, - NULL, column_triangles) -CAIRO_TEST (coverage_triangles, - "Check the fidelity of the rasterisation.", - NULL, /* keywords */ - "target=raster", /* requirements */ - WIDTH, HEIGHT, - NULL, triangles) -CAIRO_TEST (coverage_abutting, - "Check the fidelity of the rasterisation.", - NULL, /* keywords */ - "target=raster", /* requirements */ - 16*16, 16*16, - NULL, abutting) diff --git a/test/create-for-stream.c b/test/create-for-stream.c deleted file mode 100644 index af1632f..0000000 --- a/test/create-for-stream.c +++ /dev/null @@ -1,311 +0,0 @@ -/* - * Copyright © 2006 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Kristian Høgsberg - */ - -#include "cairo-test.h" - -#include -#include -#include - -#if CAIRO_HAS_PS_SURFACE -#include -#endif - -#if CAIRO_HAS_PDF_SURFACE -#include -#endif - -#if CAIRO_HAS_SVG_SURFACE -#include -#endif - -#include "cairo-test.h" - -/* The main test suite doesn't test the *_create_for_stream - * constructors for the PDF, PS and SVG surface, so we do that here. - * We draw to an in-memory buffer using the stream constructor and - * compare the output to the contents of a file written using the - * file constructor. - */ - -#define MAX_OUTPUT_SIZE 4096 - -#define WIDTH_IN_INCHES 3 -#define HEIGHT_IN_INCHES 3 -#define WIDTH_IN_POINTS (WIDTH_IN_INCHES * 72.0) -#define HEIGHT_IN_POINTS (HEIGHT_IN_INCHES * 72.0) - -#define BASENAME "create-for-stream.out" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - /* Just draw a rectangle. */ - - cairo_rectangle (cr, width / 10., height /10., - width - 2 * width / 10., - height - 2 * height /10.); - cairo_fill (cr); - - cairo_show_page (cr); - - return CAIRO_TEST_SUCCESS; -} - -static void -draw_to (cairo_surface_t *surface) -{ - cairo_t *cr; - - cr = cairo_create (surface); - - draw (cr, WIDTH_IN_POINTS, HEIGHT_IN_POINTS); - - cairo_destroy (cr); -} - -typedef struct _write_closure { - const cairo_test_context_t *ctx; - char buffer[MAX_OUTPUT_SIZE]; - size_t index; - cairo_test_status_t status; -} write_closure_t; - -static cairo_status_t -bad_write (void *closure, - const unsigned char *data, - unsigned int length) -{ - return CAIRO_STATUS_WRITE_ERROR; -} - -static cairo_status_t -test_write (void *closure, - const unsigned char *data, - unsigned int length) -{ - write_closure_t *wc = closure; - - if (wc->index + length >= sizeof wc->buffer) { - cairo_test_log (wc->ctx, "Error: out of bounds in write callback\n"); - wc->status = CAIRO_TEST_FAILURE; - return CAIRO_STATUS_SUCCESS; - } - - memcpy (&wc->buffer[wc->index], data, length); - wc->index += length; - - return CAIRO_STATUS_SUCCESS; -} - - -typedef cairo_surface_t * -(*file_constructor_t) (const char *filename, - double width_in_points, - double height_in_points); - -typedef cairo_surface_t * -(*stream_constructor_t) (cairo_write_func_t write_func, - void *closure, - double width_in_points, - double height_in_points); - -static cairo_test_status_t -test_surface (const cairo_test_context_t *ctx, - const char *backend, - const char *filename, - file_constructor_t file_constructor, - stream_constructor_t stream_constructor) -{ - cairo_surface_t *surface; - write_closure_t wc; - char file_contents[MAX_OUTPUT_SIZE]; - cairo_status_t status; - FILE *fp; - - /* test propagation of user errors */ - surface = stream_constructor (bad_write, &wc, - WIDTH_IN_POINTS, HEIGHT_IN_POINTS); - - status = cairo_surface_status (surface); - if (status) { - cairo_test_log (ctx, - "%s: Failed to create surface for stream.\n", - backend); - return CAIRO_TEST_FAILURE; - } - - draw_to (surface); - - cairo_surface_finish (surface); - status = cairo_surface_status (surface); - cairo_surface_destroy (surface); - - if (status != CAIRO_STATUS_WRITE_ERROR) { - cairo_test_log (ctx, - "%s: Error: expected \"write error\", but received \"%s\".\n", - backend, cairo_status_to_string (status)); - return CAIRO_TEST_FAILURE; - } - - /* construct the real surface */ - wc.ctx = ctx; - wc.status = CAIRO_TEST_SUCCESS; - wc.index = 0; - - surface = stream_constructor (test_write, &wc, - WIDTH_IN_POINTS, HEIGHT_IN_POINTS); - - status = cairo_surface_status (surface); - if (status) { - cairo_test_log (ctx, - "%s: Failed to create surface for stream.\n", backend); - return CAIRO_TEST_FAILURE; - } - - draw_to (surface); - - cairo_surface_destroy (surface); - - if (wc.status != CAIRO_TEST_SUCCESS) { - /* Error already reported. */ - return wc.status; - } - - surface = file_constructor (filename, - WIDTH_IN_POINTS, HEIGHT_IN_POINTS); - - status = cairo_surface_status (surface); - if (status) { - cairo_test_log (ctx, "%s: Failed to create surface for file %s: %s.\n", - backend, filename, cairo_status_to_string (status)); - return CAIRO_TEST_FAILURE; - } - - draw_to (surface); - - cairo_surface_destroy (surface); - - fp = fopen (filename, "r"); - if (fp == NULL) { - cairo_test_log (ctx, "%s: Failed to open %s for reading: %s.\n", - backend, filename, strerror (errno)); - return CAIRO_TEST_FAILURE; - } - - if (fread (file_contents, 1, wc.index, fp) != wc.index) { - cairo_test_log (ctx, "%s: Failed to read %s: %s.\n", - backend, filename, strerror (errno)); - fclose (fp); - return CAIRO_TEST_FAILURE; - } - - if (memcmp (file_contents, wc.buffer, wc.index) != 0) { - cairo_test_log (ctx, "%s: Stream based output differ from file output for %s.\n", - backend, filename); - fclose (fp); - return CAIRO_TEST_FAILURE; - } - - fclose (fp); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -preamble (cairo_test_context_t *ctx) -{ - cairo_test_status_t status = CAIRO_TEST_UNTESTED; - cairo_test_status_t test_status; - char *filename; - const char *path = cairo_test_mkdir (CAIRO_TEST_OUTPUT_DIR) ? CAIRO_TEST_OUTPUT_DIR : "."; - -#if CAIRO_HAS_PS_SURFACE - if (cairo_test_is_target_enabled (ctx, "ps2") || - cairo_test_is_target_enabled (ctx, "ps3")) - { - if (status == CAIRO_TEST_UNTESTED) - status = CAIRO_TEST_SUCCESS; - - xasprintf (&filename, "%s/%s", path, BASENAME ".ps"); - test_status = test_surface (ctx, "ps", filename, - cairo_ps_surface_create, - cairo_ps_surface_create_for_stream); - cairo_test_log (ctx, "TEST: %s TARGET: %s RESULT: %s\n", - ctx->test->name, "ps", - test_status ? "FAIL" : "PASS"); - if (status == CAIRO_TEST_SUCCESS) - status = test_status; - free (filename); - } -#endif - -#if CAIRO_HAS_PDF_SURFACE - if (cairo_test_is_target_enabled (ctx, "pdf")) { - if (status == CAIRO_TEST_UNTESTED) - status = CAIRO_TEST_SUCCESS; - - xasprintf (&filename, "%s/%s", path, BASENAME ".pdf"); - test_status = test_surface (ctx, "pdf", filename, - cairo_pdf_surface_create, - cairo_pdf_surface_create_for_stream); - cairo_test_log (ctx, "TEST: %s TARGET: %s RESULT: %s\n", - ctx->test->name, "pdf", - test_status ? "FAIL" : "PASS"); - if (status == CAIRO_TEST_SUCCESS) - status = test_status; - free (filename); - } -#endif - -#if CAIRO_HAS_SVG_SURFACE - if (cairo_test_is_target_enabled (ctx, "svg11") || - cairo_test_is_target_enabled (ctx, "svg12")) - { - if (status == CAIRO_TEST_UNTESTED) - status = CAIRO_TEST_SUCCESS; - - xasprintf (&filename, "%s/%s", path, BASENAME ".svg"); - test_status = test_surface (ctx, "svg", filename, - cairo_svg_surface_create, - cairo_svg_surface_create_for_stream); - cairo_test_log (ctx, "TEST: %s TARGET: %s RESULT: %s\n", - ctx->test->name, "svg", - test_status ? "FAIL" : "PASS"); - if (status == CAIRO_TEST_SUCCESS) - status = test_status; - free (filename); - } -#endif - - return status; -} - -CAIRO_TEST (create_for_stream, - "Checks creating vector surfaces with user defined I/O\n", - "stream", /* keywords */ - "target=vector", /* requirements */ - 0, 0, - preamble, NULL) diff --git a/test/create-from-png-stream.c b/test/create-from-png-stream.c deleted file mode 100644 index 2e9eeee..0000000 --- a/test/create-from-png-stream.c +++ /dev/null @@ -1,119 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl Worth - */ - -#include "cairo-test.h" - -#include -#include -#include - -#define WIDTH 2 -#define HEIGHT 2 - -static cairo_status_t -read_png_from_file (void *closure, unsigned char *data, unsigned int length) -{ - FILE *file = closure; - size_t bytes_read; - - bytes_read = fread (data, 1, length, file); - if (bytes_read != length) - return CAIRO_STATUS_READ_ERROR; - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - const cairo_test_context_t *ctx = cairo_test_get_context (cr); - char *filename; - FILE *file; - cairo_surface_t *surface; - cairo_status_t status; - - xasprintf (&filename, "%s/reference/%s", ctx->srcdir, - "create-from-png-stream.ref.png"); - - file = fopen (filename, "rb"); - if (file == NULL) { - cairo_test_status_t ret; - - ret = CAIRO_TEST_FAILURE; - if (errno == ENOMEM) - ret = cairo_test_status_from_status (ctx, CAIRO_STATUS_NO_MEMORY); - - if (ret != CAIRO_TEST_NO_MEMORY) - cairo_test_log (ctx, "Error: failed to open file: %s\n", filename); - - free (filename); - return ret; - } - - surface = cairo_image_surface_create_from_png_stream (read_png_from_file, - file); - - fclose (file); - - status = cairo_surface_status (surface); - if (status) { - cairo_test_status_t ret; - - cairo_surface_destroy (surface); - - ret = cairo_test_status_from_status (ctx, status); - if (ret != CAIRO_TEST_NO_MEMORY) { - cairo_test_log (ctx, - "Error: failed to create surface from PNG: %s - %s\n", - filename, - cairo_status_to_string (status)); - } - - free (filename); - - return ret; - } - - free (filename); - - /* Pretend we modify the surface data (which detaches the PNG mime data) */ - cairo_surface_flush (surface); - cairo_surface_mark_dirty (surface); - - cairo_set_source_surface (cr, surface, 0, 0); - cairo_pattern_set_filter (cairo_get_source (cr), CAIRO_FILTER_NEAREST); - cairo_paint (cr); - - cairo_surface_destroy (surface); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (create_from_png_stream, - "Tests the creation of an image surface from a PNG using a FILE *", - "png", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/create-from-png.c b/test/create-from-png.c deleted file mode 100644 index 2ca1fa2..0000000 --- a/test/create-from-png.c +++ /dev/null @@ -1,320 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl Worth - */ - -#include "cairo-test.h" - -#include - -#define WIDTH 2 -#define HEIGHT 2 - -static cairo_status_t -no_memory_error (void *closure, unsigned char *data, unsigned int size) -{ - return CAIRO_STATUS_NO_MEMORY; -} - -static cairo_status_t -read_error (void *closure, unsigned char *data, unsigned int size) -{ - return CAIRO_STATUS_READ_ERROR; -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - const cairo_test_context_t *ctx = cairo_test_get_context (cr); - char *filename; - cairo_surface_t *surface; - - xasprintf (&filename, "%s/reference/%s", - ctx->srcdir, "create-from-png.ref.png"); - - surface = cairo_image_surface_create_from_png (filename); - if (cairo_surface_status (surface)) { - cairo_test_status_t result; - - result = cairo_test_status_from_status (ctx, - cairo_surface_status (surface)); - if (result == CAIRO_TEST_FAILURE) { - cairo_test_log (ctx, "Error reading PNG image %s: %s\n", - filename, - cairo_status_to_string (cairo_surface_status (surface))); - } - - free (filename); - return result; - } - - /* Pretend we modify the surface data (which detaches the PNG mime data) */ - cairo_surface_flush (surface); - cairo_surface_mark_dirty (surface); - - cairo_set_source_surface (cr, surface, 0, 0); - cairo_pattern_set_filter (cairo_get_source (cr), CAIRO_FILTER_NEAREST); - cairo_paint (cr); - - cairo_surface_destroy (surface); - - free (filename); - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -preamble (cairo_test_context_t *ctx) -{ - char *filename; - char *path; - cairo_surface_t *surface; - cairo_status_t status; - cairo_test_status_t result = CAIRO_TEST_SUCCESS; - - surface = cairo_image_surface_create_from_png ("___THIS_FILE_DOES_NOT_EXIST___"); - if (cairo_surface_status (surface) != CAIRO_STATUS_FILE_NOT_FOUND) { - result = cairo_test_status_from_status (ctx, - cairo_surface_status (surface)); - if (result == CAIRO_TEST_FAILURE) { - cairo_test_log (ctx, "Error: expected \"file not found\", but got: %s\n", - cairo_status_to_string (cairo_surface_status (surface))); - } - } - cairo_surface_destroy (surface); - if (result != CAIRO_TEST_SUCCESS) - return result; - - surface = cairo_image_surface_create_from_png_stream (no_memory_error, NULL); - if (cairo_surface_status (surface) != CAIRO_STATUS_NO_MEMORY) { - result = cairo_test_status_from_status (ctx, - cairo_surface_status (surface)); - if (result == CAIRO_TEST_FAILURE) { - cairo_test_log (ctx, "Error: expected \"out of memory\", but got: %s\n", - cairo_status_to_string (cairo_surface_status (surface))); - } - } - cairo_surface_destroy (surface); - if (result != CAIRO_TEST_SUCCESS) - return result; - - surface = cairo_image_surface_create_from_png_stream (read_error, NULL); - if (cairo_surface_status (surface) != CAIRO_STATUS_READ_ERROR) { - result = cairo_test_status_from_status (ctx, - cairo_surface_status (surface)); - if (result == CAIRO_TEST_FAILURE) { - cairo_test_log (ctx, "Error: expected \"read error\", but got: %s\n", - cairo_status_to_string (cairo_surface_status (surface))); - } - } - cairo_surface_destroy (surface); - if (result != CAIRO_TEST_SUCCESS) - return result; - - /* cheekily test error propagation from the user write funcs as well ... */ - xasprintf (&path, "%s/reference", ctx->srcdir); - xasprintf (&filename, "%s/%s", path, "create-from-png.ref.png"); - - surface = cairo_image_surface_create_from_png (filename); - if (cairo_surface_status (surface)) { - result = cairo_test_status_from_status (ctx, - cairo_surface_status (surface)); - if (result == CAIRO_TEST_FAILURE) { - cairo_test_log (ctx, "Error reading PNG image %s: %s\n", - filename, - cairo_status_to_string (cairo_surface_status (surface))); - } - } else { - status = cairo_surface_write_to_png_stream (surface, - (cairo_write_func_t) no_memory_error, - NULL); - if (status != CAIRO_STATUS_NO_MEMORY) { - result = cairo_test_status_from_status (ctx, status); - if (result == CAIRO_TEST_FAILURE) { - cairo_test_log (ctx, "Error: expected \"out of memory\", but got: %s\n", - cairo_status_to_string (status)); - } - } - - status = cairo_surface_write_to_png_stream (surface, - (cairo_write_func_t) read_error, - NULL); - if (status != CAIRO_STATUS_READ_ERROR) { - result = cairo_test_status_from_status (ctx, status); - if (result == CAIRO_TEST_FAILURE) { - cairo_test_log (ctx, "Error: expected \"read error\", but got: %s\n", - cairo_status_to_string (status)); - } - } - - /* and check that error has not propagated to the surface */ - if (cairo_surface_status (surface)) { - result = cairo_test_status_from_status (ctx, - cairo_surface_status (surface)); - if (result == CAIRO_TEST_FAILURE) { - cairo_test_log (ctx, "Error: user write error propagated to surface: %s", - cairo_status_to_string (cairo_surface_status (surface))); - } - } - } - cairo_surface_destroy (surface); - free (filename); - if (result != CAIRO_TEST_SUCCESS) - return result; - - /* check that loading alpha/opaque PNGs generate the correct surfaces */ - /* TODO: Avoid using target-specific references as sample images */ - xasprintf (&filename, "%s/%s", path, "create-from-png.alpha.ref.png"); - surface = cairo_image_surface_create_from_png (filename); - if (cairo_surface_status (surface)) { - result = cairo_test_status_from_status (ctx, - cairo_surface_status (surface)); - if (result == CAIRO_TEST_FAILURE) { - cairo_test_log (ctx, "Error reading PNG image %s: %s\n", - filename, - cairo_status_to_string (cairo_surface_status (surface))); - } - } else if (cairo_image_surface_get_format (surface) != CAIRO_FORMAT_ARGB32) { - cairo_test_log (ctx, "Error reading PNG image %s: did not create an ARGB32 image\n", - filename); - result = CAIRO_TEST_FAILURE; - } - free (filename); - cairo_surface_destroy (surface); - if (result != CAIRO_TEST_SUCCESS) - return result; - - xasprintf (&filename, "%s/%s", path, "create-from-png.ref.png"); - surface = cairo_image_surface_create_from_png (filename); - if (cairo_surface_status (surface)) { - result = cairo_test_status_from_status (ctx, - cairo_surface_status (surface)); - if (result == CAIRO_TEST_FAILURE) { - cairo_test_log (ctx, "Error reading PNG image %s: %s\n", - filename, - cairo_status_to_string (cairo_surface_status (surface))); - } - } else if (cairo_image_surface_get_format (surface) != CAIRO_FORMAT_RGB24) { - cairo_test_log (ctx, "Error reading PNG image %s: did not create an RGB24 image\n", - filename); - result = CAIRO_TEST_FAILURE; - } - free (filename); - cairo_surface_destroy (surface); - if (result != CAIRO_TEST_SUCCESS) - return result; - - /* check paletted PNGs */ - /* TODO: Avoid using target-specific references as sample images */ - xasprintf (&filename, "%s/%s", path, "create-from-png.indexed-alpha.ref.png"); - surface = cairo_image_surface_create_from_png (filename); - if (cairo_surface_status (surface)) { - result = cairo_test_status_from_status (ctx, - cairo_surface_status (surface)); - if (result == CAIRO_TEST_FAILURE) { - cairo_test_log (ctx, "Error reading PNG image %s: %s\n", - filename, - cairo_status_to_string (cairo_surface_status (surface))); - } - } else if (cairo_image_surface_get_format (surface) != CAIRO_FORMAT_ARGB32) { - cairo_test_log (ctx, "Error reading PNG image %s: did not create an ARGB32 image\n", - filename); - result = CAIRO_TEST_FAILURE; - } - free (filename); - cairo_surface_destroy (surface); - if (result != CAIRO_TEST_SUCCESS) - return result; - - /* TODO: Avoid using target-specific references as sample images */ - xasprintf (&filename, "%s/%s", path, "create-from-png.indexed.ref.png"); - surface = cairo_image_surface_create_from_png (filename); - if (cairo_surface_status (surface)) { - result = cairo_test_status_from_status (ctx, - cairo_surface_status (surface)); - if (result == CAIRO_TEST_FAILURE) { - cairo_test_log (ctx, "Error reading PNG image %s: %s\n", - filename, - cairo_status_to_string (cairo_surface_status (surface))); - } - } else if (cairo_image_surface_get_format (surface) != CAIRO_FORMAT_RGB24) { - cairo_test_log (ctx, "Error reading PNG image %s: did not create an RGB24 image\n", - filename); - result = CAIRO_TEST_FAILURE; - } - free (filename); - cairo_surface_destroy (surface); - if (result != CAIRO_TEST_SUCCESS) - return result; - - /* check grayscale PNGs */ - /* TODO: Avoid using target-specific references as sample images */ - xasprintf (&filename, "%s/%s", path, "create-from-png.gray-alpha.ref.png"); - surface = cairo_image_surface_create_from_png (filename); - if (cairo_surface_status (surface)) { - result = cairo_test_status_from_status (ctx, - cairo_surface_status (surface)); - if (result == CAIRO_TEST_FAILURE) { - cairo_test_log (ctx, "Error reading PNG image %s: %s\n", - filename, - cairo_status_to_string (cairo_surface_status (surface))); - } - } else if (cairo_image_surface_get_format (surface) != CAIRO_FORMAT_ARGB32) { - cairo_test_log (ctx, "Error reading PNG image %s: did not create an ARGB32 image\n", - filename); - result = CAIRO_TEST_FAILURE; - } - free (filename); - cairo_surface_destroy (surface); - if (result != CAIRO_TEST_SUCCESS) - return result; - - /* TODO: Avoid using target-specific references as sample images */ - xasprintf (&filename, "%s/%s", path, "create-from-png.gray.ref.png"); - surface = cairo_image_surface_create_from_png (filename); - if (cairo_surface_status (surface)) { - result = cairo_test_status_from_status (ctx, - cairo_surface_status (surface)); - if (result == CAIRO_TEST_FAILURE) { - cairo_test_log (ctx, "Error reading PNG image %s: %s\n", - filename, - cairo_status_to_string (cairo_surface_status (surface))); - } - } else if (cairo_image_surface_get_format (surface) != CAIRO_FORMAT_RGB24) { - cairo_test_log (ctx, "Error reading PNG image %s: did not create an RGB24 image\n", - filename); - result = CAIRO_TEST_FAILURE; - } - free (filename); - cairo_surface_destroy (surface); - - free (path); - - return result; -} - -CAIRO_TEST (create_from_png, - "Tests the creation of an image surface from a PNG file", - "png", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - preamble, draw) diff --git a/test/culled-glyphs.c b/test/culled-glyphs.c deleted file mode 100644 index 28bee7e..0000000 --- a/test/culled-glyphs.c +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright 2008 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - const char *text = -"This needs to be a very long string, wider than the surface, and yet wider." -"Ideally it should overflow the stack buffers, but do you really want to read " -"a message that long. No. So we compromise with around 300 glyphs that is " -"long enough to trigger the conditions as stated in " -"http://lists.cairographics.org/archives/cairo/2008-December/015976.html. " -"Happy now?"; - cairo_text_extents_t extents; - - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - cairo_set_source_rgb (cr, 0, 0, 0); - - cairo_set_font_size (cr, 16); - cairo_text_extents (cr, text, &extents); - cairo_move_to (cr, -extents.width/2, 18); - cairo_show_text (cr, text); - - /* XXX we should exercise cairo_show_text_glyphs() as well, - * and CAIRO_TEXT_CLUSTER_BACKWARDS - */ - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (culled_glyphs, - "Tests culling of glyphs and text clusters", - "glyphs", /* keywords */ - NULL, /* requirements */ - 20, 20, - NULL, draw) - diff --git a/test/curve-to-as-line-to.c b/test/curve-to-as-line-to.c deleted file mode 100644 index 07eb005..0000000 --- a/test/curve-to-as-line-to.c +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" - -#define SIZE 30 - -/* At one point, an optimization was proposed for cairo in which a - * curve_to would be optimized as a line_to. The initial (buggy) - * implementation verified that the slopes of several segments of the - * spline's control polygon were identical, but left open the - * possibility of an anti-parallel slope for one segment. - * - * For example, given a spline with collinear control points (A,B,C,D) - * positioned as follows: - * - * C--A--B--D - * - * The code verified identical slopes for AB, CD, and AD. The missing - * check for the BC segment allowed it to be anti-parallel to the - * others as above, and hence invalid to replace this spline with the - * AD line segment. - */ -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); /* white */ - cairo_paint (cr); - - cairo_set_line_width (cr, 1.0); - cairo_set_line_cap (cr, CAIRO_LINE_CAP_BUTT); - cairo_set_line_join (cr, CAIRO_LINE_JOIN_BEVEL); - cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); /* black */ - - cairo_translate (cr, 0, 1.0); - - /* The CABD spline as described above. We ensure that the spline - * folds over on itself outside the bounds of the image to avoid - * the reference image having the curved portion of that fold, - * (which would just be harder to match in all the backends than - * we really want). */ - cairo_move_to (cr, - 10.5, 0.5); - cairo_curve_to (cr, - 11.5, 0.5, - -25.0, 0.5, - 31.0, 0.5); - - cairo_stroke (cr); - - cairo_translate (cr, 0, 2.0); - - /* A reflected version: DBAC */ - cairo_move_to (cr, - 19.5, 0.5); - - cairo_curve_to (cr, - 18.5, 0.5, - 55.0, 0.5, - -1.0, 0.5); - - cairo_stroke (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (curve_to_as_line_to, - "Test optimization treating curve_to as line_to", - "path", /* keywords */ - NULL, /* requirements */ - 30, - 5, - NULL, draw) diff --git a/test/dash-caps-joins.c b/test/dash-caps-joins.c deleted file mode 100644 index ace27e9..0000000 --- a/test/dash-caps-joins.c +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - */ - -/* Test case for bug #4409: - * - * Dashes are missing initial caps - * https://bugs.freedesktop.org/show_bug.cgi?id=4409 - */ - -#include "cairo-test.h" - -#define LINE_WIDTH 10. -#define SIZE (5 * LINE_WIDTH) -#define PAD (2 * LINE_WIDTH) - -static void -make_path (cairo_t *cr) -{ - cairo_move_to (cr, 0., 0.); - cairo_rel_line_to (cr, 0., SIZE); - cairo_rel_line_to (cr, SIZE, 0.); - cairo_close_path (cr); - - cairo_move_to (cr, 2 * LINE_WIDTH, 0.); - cairo_rel_line_to (cr, 3 * LINE_WIDTH, 0.); - cairo_rel_line_to (cr, 0., 3 * LINE_WIDTH); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - double dash[] = {LINE_WIDTH, 1.5 * LINE_WIDTH}; - double dash_offset = -2 * LINE_WIDTH; - int i; - - /* We draw in the default black, so paint white first. */ - cairo_save (cr); - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); /* white */ - cairo_paint (cr); - cairo_restore (cr); - - for (i=0; i<2; i++) { - cairo_save (cr); - cairo_set_line_width (cr, LINE_WIDTH); - cairo_set_dash (cr, dash, ARRAY_LENGTH (dash), dash_offset); - - cairo_translate (cr, PAD, PAD); - - make_path (cr); - cairo_set_line_cap (cr, CAIRO_LINE_CAP_BUTT); - cairo_set_line_join (cr, CAIRO_LINE_JOIN_BEVEL); - cairo_stroke (cr); - - cairo_translate (cr, SIZE + PAD, 0.); - - make_path (cr); - cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND); - cairo_set_line_join (cr, CAIRO_LINE_JOIN_ROUND); - cairo_stroke (cr); - - cairo_translate (cr, SIZE + PAD, 0.); - - make_path (cr); - cairo_set_line_cap (cr, CAIRO_LINE_CAP_SQUARE); - cairo_set_line_join (cr, CAIRO_LINE_JOIN_MITER); - cairo_stroke (cr); - - cairo_restore (cr); - cairo_translate (cr, 0., SIZE + PAD); - dash_offset = 0; - } - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (dash_caps_joins, - "Test caps and joins when dashing", - "dash, stroke", /* keywords */ - NULL, /* requirements */ - 3 * (PAD + SIZE) + PAD, - PAD + SIZE + PAD + SIZE + PAD, - NULL, draw) diff --git a/test/dash-curve.c b/test/dash-curve.c deleted file mode 100644 index c319980..0000000 --- a/test/dash-curve.c +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright © 2007 Jeff Smith - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Jeff Smith not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Jeff Smith makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * JEFF SMITH DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL JEFF SMITH BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Jeff Smith - */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - double dashes[2] = {20, 20}; - int a=0, b=0, c=0; - - cairo_set_source_rgb (cr, 0, 0, 0); - cairo_paint (cr); - - for (a=0; a<4; a++) - for (b=0; b<5; b++) - for (c=0; c<5; c++) { - cairo_move_to (cr, ((b*5)+c)*60+10, a*60+10); - cairo_rel_curve_to (cr, - 0, b*10, - 0, b*10, - c*10, b*10); - - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_set_line_width (cr, 8); - cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND); - cairo_set_dash (cr, dashes, 2, a*10); - cairo_stroke_preserve (cr); - - cairo_set_source_rgb (cr, 0, 0.5, 1); - cairo_set_line_width (cr, 2); - cairo_set_line_cap (cr, CAIRO_LINE_CAP_BUTT); - cairo_set_dash (cr, 0, 0, 0); - cairo_stroke (cr); - } - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (dash_curve, - "Tries to explore the state space of the dashing code along curves", - "dash, stroke", /* keywords */ - NULL, /* requirements */ - 25*60, 4*60, - NULL, draw) diff --git a/test/dash-infinite-loop.c b/test/dash-infinite-loop.c deleted file mode 100644 index a3d7544..0000000 --- a/test/dash-infinite-loop.c +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright © 2009 M Joonas Pihlaja - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: M Joonas Pihlaja - */ - -#include "cairo-test.h" - -/* When faced with very small dash lengths the stroker is liable to - * get stuck in an infinite loop when advancing the dash offset. This - * test attempts to hit each of the locations in the stroker code - * where the dash offset is advanced in a loop. - * - * Reported to the cairo mailing list by Hans Breuer. - * http://lists.cairographics.org/archives/cairo/2009-June/017506.html - */ - -#define EPS 1e-30 -/* This should be comfortably smaller than the unit epsilon of the - * floating point type used to advance the dashing, yet not small - * enough that it underflows to zero. 1e-30 works to foil up to 80 - * bit extended precision arithmetic. We want to avoid zero dash - * lengths because those trigger special processing in the stroker. */ - -static void -do_dash (cairo_t *cr, double dx, double dy, double offset) -{ - /* Set the dash pattern to be predominantly ON so that we can - * create a reference image by just ignoring the dashing. */ - static double dash[] = { EPS, EPS/512 }; - cairo_set_dash (cr, dash, 2, offset); - cairo_move_to (cr, 10, 10); - cairo_rel_line_to (cr, dx, dy); - cairo_stroke (cr); - cairo_translate (cr, dx, dy); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - (void)width; (void)height; - - cairo_set_source_rgb (cr, 1,1,1); - cairo_paint (cr); - cairo_set_source_rgb (cr, 0,0,0); - - cairo_set_line_width (cr, 10); - - /* The following calls will wedge in various places that try - * to advance the dashing in a loop inside the stroker. */ - do_dash (cr, 30, 30, 0); /* _cairo_stroker_line_to_dashed */ - do_dash (cr, 30, 0, 0); /* _cairo_rectilinear_stroker_line_to_dashed */ - do_dash (cr, 30, 30, 1); /* _cairo_stroker_dash_start */ - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (dash_infinite_loop, - "Test dashing with extremely small dash lengths.", - "dash", - NULL, - 100, 100, - NULL, draw); diff --git a/test/dash-no-dash.c b/test/dash-no-dash.c deleted file mode 100644 index e03094a..0000000 --- a/test/dash-no-dash.c +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright © 2006 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" -#include - -#define PAD 1 -#define LINE_WIDTH 2 -#define HEIGHT (PAD + 4 * (LINE_WIDTH + PAD)) -#define WIDTH 16 - -static void -line (cairo_t *cr) -{ - cairo_move_to (cr, PAD, 0.0); - cairo_line_to (cr, WIDTH - PAD, 0.0); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - double dash = 2.0; - - /* We draw in black, so paint white first. */ - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); /* white */ - cairo_paint (cr); - - cairo_set_source_rgb (cr, 0, 0, 0); /* black */ - - cairo_translate (cr, 0.0, PAD + LINE_WIDTH / 2); - - /* First draw a solid line... */ - line (cr); - cairo_stroke (cr); - - cairo_translate (cr, 0.0, LINE_WIDTH + PAD); - - /* then a dashed line... */ - cairo_set_dash (cr, &dash, 1, 0.0); - line (cr); - cairo_stroke (cr); - - cairo_translate (cr, 0.0, LINE_WIDTH + PAD); - - /* back to solid... */ - cairo_set_dash (cr, NULL, 0, 0.0); - line (cr); - cairo_stroke (cr); - - cairo_translate (cr, 0.0, LINE_WIDTH + PAD); - - /* and finally, back to dashed. */ - cairo_set_dash (cr, &dash, 1, 0.0); - line (cr); - cairo_stroke (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (dash_no_dash, - "Tests that we can actually turn dashing on and off again", - "dash, stroke", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/dash-offset-negative.c b/test/dash-offset-negative.c deleted file mode 100644 index 8766cc5..0000000 --- a/test/dash-offset-negative.c +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Owen Taylor - */ - -#include "cairo-test.h" - -#define IMAGE_WIDTH 19 -#define IMAGE_HEIGHT 19 - -/* Basic test of dashed strokes, including a test for the negative - * dash offset bug: - * - * https://bugs.freedesktop.org/show_bug.cgi?id=2729 - */ - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - double dashes[] = { 1 }; - - /* We draw in the default black, so paint white first. */ - cairo_save (cr); - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); /* white */ - cairo_paint (cr); - cairo_restore (cr); - - cairo_set_line_width (cr, 2); - - /* Basic 1-1 dash pattern */ - cairo_set_dash (cr, dashes, 1, 0.); - - cairo_move_to (cr, 1, 2); - cairo_line_to (cr, 18, 2); - cairo_stroke (cr); - - /* Adjust path by 0.5. Ideally this would give a constant 50% - * gray, (but does not due to the location of the regular sample - * grid points. */ - cairo_move_to (cr, 1.5, 5); - cairo_line_to (cr, 18., 5); - cairo_stroke (cr); - - /* Offset dash by 0.5, rather than the path */ - cairo_set_dash (cr, dashes, 1, 0.5); - - cairo_move_to (cr, 1, 8); - cairo_line_to (cr, 18, 8); - cairo_stroke (cr); - - /* Now, similar tests with negative dash offsets. */ - - /* Basic 1-1 dash pattern dashing */ - cairo_set_dash (cr, dashes, 1, -4); - - cairo_move_to (cr, 1, 11); - cairo_line_to (cr, 18, 11); - cairo_stroke (cr); - - /* Adjust path by 0.5 */ - cairo_move_to (cr, 1.5, 14); - cairo_line_to (cr, 18., 14); - cairo_stroke (cr); - - /* Offset dash by 0.5 */ - cairo_set_dash (cr, dashes, 1, -3.5); - - cairo_move_to (cr, 1, 17); - cairo_line_to (cr, 18, 17); - cairo_stroke (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (dash_offset_negative, - "Tests cairo_set_dash with a negative offset", - "dash, stroke", /* keywords */ - NULL, /* requirements */ - IMAGE_WIDTH, IMAGE_HEIGHT, - NULL, draw) diff --git a/test/dash-offset.c b/test/dash-offset.c deleted file mode 100644 index f4269ee..0000000 --- a/test/dash-offset.c +++ /dev/null @@ -1,83 +0,0 @@ -/* -*- Mode: c; c-basic-offset: 4; indent-tabs-mode: t; tab-width: 8; -*- */ -/* - * Copyright 2009 Andrea Canciani - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Andrea Canciani - */ - -#include "cairo-test.h" - -/* Lengths of the dashes of the dash patterns */ -static const double dashes[] = { 2, 2, 4, 4 }; -/* Dash offset in userspace units - * They always grow by 2, so the dash pattern is - * should be shifted by the same amount each time */ -static const double frac_offset[] = { 0, 2, 4, 6 }; -/* Dash offset relative to the whole dash pattern - * This corresponds to the non-inverted part only if - * the dash pattern has odd length, so the expected result - * is the same for every int_offset if the pattern has - * even length, and inverted each time (or shifted by half - * period, which is the same) if the pattern has odd length. */ -static const double int_offset[] = { -2, -1, 0, 1, 2 }; - -#define PAD 6 -#define STROKE_LENGTH 32 -#define IMAGE_WIDTH (PAD + (STROKE_LENGTH + PAD) * ARRAY_LENGTH (dashes)) -#define IMAGE_HEIGHT (PAD + PAD * ARRAY_LENGTH (int_offset) + PAD * ARRAY_LENGTH (frac_offset) * ARRAY_LENGTH (int_offset)) - - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - double total; - size_t i, j, k; - - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - cairo_set_source_rgb (cr, 0, 0, 0); - cairo_set_line_width (cr, 2); - - total = 0.0; - for (k = 0; k < ARRAY_LENGTH (dashes); ++k) { - total += dashes[k]; - for (i = 0; i < ARRAY_LENGTH (frac_offset); ++i) { - for (j = 0; j < ARRAY_LENGTH (int_offset); ++j) { - cairo_set_dash (cr, dashes, k + 1, frac_offset[i] + total * int_offset[j]); - cairo_move_to (cr, (STROKE_LENGTH + PAD) * k + PAD, PAD * (i + j + ARRAY_LENGTH (frac_offset) * j + 1)); - cairo_line_to (cr, (STROKE_LENGTH + PAD) * (k + 1), PAD * (i + j + ARRAY_LENGTH (frac_offset) * j + 1)); - cairo_stroke (cr); - } - } - } - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (dash_offset, - "Tests dashes of different length with various offsets", - "stroke, dash", /* keywords */ - NULL, /* requirements */ - IMAGE_WIDTH, IMAGE_HEIGHT, - NULL, draw) diff --git a/test/dash-scale.c b/test/dash-scale.c deleted file mode 100644 index fd51702..0000000 --- a/test/dash-scale.c +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" - -#define LINE_WIDTH 8. -#define SIZE (5 * LINE_WIDTH) -#define PAD (2 * LINE_WIDTH) - -static void -make_path (cairo_t *cr) -{ - cairo_move_to (cr, 0., 0.); - cairo_rel_line_to (cr, 0., SIZE); - cairo_rel_line_to (cr, SIZE, 0.); - cairo_close_path (cr); - - cairo_move_to (cr, 2 * LINE_WIDTH, 0.); - cairo_rel_line_to (cr, 3 * LINE_WIDTH, 0.); - cairo_rel_line_to (cr, 0., 3 * LINE_WIDTH); -} - -static void -draw_three_shapes (cairo_t *cr) -{ - cairo_save (cr); - - make_path (cr); - cairo_set_line_cap (cr, CAIRO_LINE_CAP_BUTT); - cairo_set_line_join (cr, CAIRO_LINE_JOIN_BEVEL); - cairo_stroke (cr); - - cairo_translate (cr, SIZE + PAD, 0.); - - make_path (cr); - cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND); - cairo_set_line_join (cr, CAIRO_LINE_JOIN_ROUND); - cairo_stroke (cr); - - cairo_translate (cr, SIZE + PAD, 0.); - - make_path (cr); - cairo_set_line_cap (cr, CAIRO_LINE_CAP_SQUARE); - cairo_set_line_join (cr, CAIRO_LINE_JOIN_MITER); - cairo_stroke (cr); - - cairo_restore (cr); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - double dash[] = {1.5 * LINE_WIDTH}; - - /* We draw in the default black, so paint white first. */ - cairo_save (cr); - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); /* white */ - cairo_paint (cr); - cairo_restore (cr); - - cairo_translate (cr, PAD, PAD); - - cairo_set_dash (cr, dash, ARRAY_LENGTH (dash), - 2 * LINE_WIDTH); - cairo_set_line_width (cr, LINE_WIDTH); - draw_three_shapes (cr); - - cairo_translate (cr, 0, SIZE + 2 * PAD); - - cairo_save (cr); - { - cairo_set_dash (cr, dash, ARRAY_LENGTH (dash), - 2 * LINE_WIDTH); - cairo_set_line_width (cr, LINE_WIDTH); - cairo_scale (cr, 1, 2); - draw_three_shapes (cr); - } - cairo_restore (cr); - - cairo_translate (cr, 0, 2 * (SIZE + PAD)); - - cairo_save (cr); - { - cairo_scale (cr, 1, 2); - cairo_set_dash (cr, dash, ARRAY_LENGTH (dash), - 2 * LINE_WIDTH); - cairo_set_line_width (cr, LINE_WIDTH); - draw_three_shapes (cr); - } - cairo_restore (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (dash_scale, - "Test interactions of cairo_set_dash and cairo_scale, (in particular with a non-uniformly scaled pen)", - "dash, stroke, transform", /* keywords */ - NULL, /* requirements */ - 3 * (PAD + SIZE) + PAD, - PAD + 5 * SIZE + 2 * (2 * PAD) + PAD, - NULL, draw) diff --git a/test/dash-state.c b/test/dash-state.c deleted file mode 100644 index 5276aea..0000000 --- a/test/dash-state.c +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright © 2007 Jeff Smith - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Jeff Smith not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Jeff Smith makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * JEFF SMITH DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL JEFF SMITH BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Jeff Smith - */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - double dashes[2] = {20, 20}; - int a=0, b=0, c=0; - - cairo_set_source_rgb (cr, 0, 0, 0); - cairo_paint (cr); - - for (a=0; a<4; a++) - for (b=0; b<5; b++) - for (c=0; c<5; c++) { - cairo_move_to (cr, ((b*5)+c)*60+10, a*60+10); - cairo_rel_line_to (cr, 0, b*10); - cairo_rel_line_to (cr, c*10, 0); - - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_set_line_width (cr, 8); - cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND); - cairo_set_dash (cr, dashes, 2, a*10); - cairo_stroke_preserve (cr); - - cairo_set_source_rgb (cr, 0, 0.5, 1); - cairo_set_line_width (cr, 2); - cairo_set_line_cap (cr, CAIRO_LINE_CAP_BUTT); - cairo_set_dash (cr, 0, 0, 0); - cairo_stroke (cr); - } - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (dash_state, - "Tries to explore the state space of the dashing code", - "dash, stroke", /* keywords */ - NULL, /* requirements */ - 25*60, 4*60, - NULL, draw) diff --git a/test/dash-zero-length.c b/test/dash-zero-length.c deleted file mode 100644 index 5ab944b..0000000 --- a/test/dash-zero-length.c +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright © 2006 Jeff Muizelaar - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Jeff Muizelaar. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Jeff Muizelaar. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * JEFF MUIZELAAR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL JEFF MUIZELAAR BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Jeff Muizelaar - */ - -#include "cairo-test.h" - -#define IMAGE_WIDTH 19 -#define IMAGE_HEIGHT 61 - -/* A test of the two extremes of dashing: a solid line - * and an invisible one. Also test that capping works - * on invisible lines. - */ - -static void -draw_dash (cairo_t *cr, double *dash, int num_dashes) -{ - cairo_set_dash (cr, dash, num_dashes, 0.0); - cairo_move_to (cr, 1, 2); - cairo_line_to (cr, 18, 2); - cairo_stroke (cr); - cairo_translate (cr, 0, 3); -} -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - static double solid_line[] = { 4, 0 }; - static double invisible_line[] = { 0, 4 }; - static double dotted_line[] = { 0, 6 }; - static double zero_1_of_3[] = { 0, 2, 3 }; - static double zero_2_of_3[] = { 1, 0, 3 }; - static double zero_3_of_3[] = { 1, 2, 0 }; - static double zero_1_of_4[] = { 0, 2, 3, 4 }; - static double zero_2_of_4[] = { 1, 0, 3, 4 }; - static double zero_3_of_4[] = { 1, 2, 0, 4 }; - static double zero_4_of_4[] = { 1, 2, 3, 0 }; - static double zero_1_2_of_4[] = { 0, 0, 3, 4 }; - static double zero_1_3_of_4[] = { 0, 2, 0, 4 }; -/* Clearly it would be nice to draw this one as well, but it seems to trigger a bug in ghostscript. */ -#if BUG_FIXED_IN_GHOSTSCRIPT - static double zero_1_4_of_4[] = { 0, 2, 3, 0 }; -#endif - static double zero_2_3_of_4[] = { 1, 0, 0, 4 }; - static double zero_2_4_of_4[] = { 1, 0, 3, 0 }; - static double zero_3_4_of_4[] = { 1, 2, 0, 0 }; - static double zero_1_2_3_of_4[] = { 0, 0, 0, 4 }; - static double zero_1_2_4_of_4[] = { 0, 0, 3, 0 }; - static double zero_1_3_4_of_4[] = { 0, 2, 0, 0 }; - static double zero_2_3_4_of_4[] = { 1, 0, 0, 0 }; - - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_set_line_width (cr, 2); - - draw_dash (cr, solid_line, 2); - draw_dash (cr, invisible_line, 2); - - cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND); - draw_dash (cr, dotted_line, 2); - cairo_set_line_cap (cr, CAIRO_LINE_CAP_BUTT); - - draw_dash (cr, zero_1_of_3, 3); - draw_dash (cr, zero_2_of_3, 3); - draw_dash (cr, zero_3_of_3, 3); - draw_dash (cr, zero_1_of_4, 4); - draw_dash (cr, zero_2_of_4, 4); - draw_dash (cr, zero_3_of_4, 4); - draw_dash (cr, zero_4_of_4, 4); - draw_dash (cr, zero_1_2_of_4, 4); - draw_dash (cr, zero_1_3_of_4, 4); -#if BUG_FIXED_IN_GHOSTSCRIPT - draw_dash (cr, zero_1_4_of_4, 4); -#endif - draw_dash (cr, zero_2_3_of_4, 4); - draw_dash (cr, zero_2_4_of_4, 4); - draw_dash (cr, zero_3_4_of_4, 4); - draw_dash (cr, zero_1_2_3_of_4, 4); - draw_dash (cr, zero_1_2_4_of_4, 4); - draw_dash (cr, zero_1_3_4_of_4, 4); - draw_dash (cr, zero_2_3_4_of_4, 4); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (dash_zero_length, - "Tests cairo_set_dash with zero length", - "dash, stroke", /* keywords */ - NULL, /* requirements */ - IMAGE_WIDTH, IMAGE_HEIGHT, - NULL, draw) diff --git a/test/degenerate-arc.c b/test/degenerate-arc.c deleted file mode 100644 index ab65774..0000000 --- a/test/degenerate-arc.c +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright © 2008 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -/* This test case exercises a "Potential division by zero in cairo_arc" - * reported by Luiz Americo Pereira Camara , - * http://lists.cairographics.org/archives/cairo/2008-May/014054.html. - */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - int n; - - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND); - - cairo_set_line_width (cr, 5); - cairo_set_source_rgb (cr, 0, 1, 0); - for (n = 0; n < 8; n++) { - double theta = n * 2 * M_PI / 8; - cairo_new_sub_path (cr); - cairo_arc (cr, 20, 20, 15, theta, theta); - cairo_close_path (cr); - } - cairo_stroke (cr); - - cairo_set_line_width (cr, 2); - cairo_set_source_rgb (cr, 0, 0, 1); - for (n = 0; n < 8; n++) { - double theta = n * 2 * M_PI / 8; - cairo_move_to (cr, 20, 20); - cairo_arc (cr, 20, 20, 15, theta, theta); - } - cairo_stroke (cr); - - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_arc (cr, 20, 20, 2, 0, 2*M_PI); - cairo_fill (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (degenerate_arc, - "Tests the behaviour of degenerate arcs", - "degenerate", /* keywords */ - NULL, /* requirements */ - 40, 40, - NULL, draw) diff --git a/test/degenerate-arcs.c b/test/degenerate-arcs.c deleted file mode 100644 index 2470828..0000000 --- a/test/degenerate-arcs.c +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright 2010 Intel Corporation - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -#define WIDTH 20 -#define HEIGHT 20 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - cairo_set_source_rgb (cr, 0.3, 0.4, 0.5); - - /* This should be equivalent to a simple rectangle, such as may be - * constructed for a rounded-rectangle with corner radii of 0... - */ - cairo_arc (cr, 5, 5, 0, M_PI, 3*M_PI/2); - cairo_arc (cr, 15, 5, 0, 3*M_PI/2, 2*M_PI); - cairo_arc (cr, 15, 15, 0, 0, M_PI/2); - cairo_arc (cr, 5, 15, 0, M_PI/2, M_PI); - - cairo_fill (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (degenerate_arcs, - "Tests path construction using a series of degenerate (radius=0) arcs", - "arc, fill", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/degenerate-curve-to.c b/test/degenerate-curve-to.c deleted file mode 100644 index a081a3b..0000000 --- a/test/degenerate-curve-to.c +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * Copyright © 2009 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - * Chris Wilson - */ - -#include "cairo-test.h" - -#define SIZE 30 - -/* Another attempt at avoiding unnecessary splines was made, where - * a curve-to that ended on the same point as it began were discarded. - */ -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); /* white */ - cairo_paint (cr); - - cairo_set_line_width (cr, 1.0); - cairo_set_line_cap (cr, CAIRO_LINE_CAP_BUTT); - cairo_set_line_join (cr, CAIRO_LINE_JOIN_BEVEL); - cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); /* black */ - - /* entirely degenerate */ - cairo_move_to (cr, - 2.5, 2.5); - cairo_curve_to (cr, - 2.5, 2.5, - 2.5, 2.5, - 2.5, 2.5); - cairo_stroke (cr); - - /* horizontal */ - cairo_move_to (cr, - 5.5, 2.5); - cairo_curve_to (cr, - 22.0, 2.5, - -0.5, 2.5, - 5.5, 2.5); - cairo_stroke (cr); - - /* vertical */ - cairo_move_to (cr, - 7.5, 0.0); - cairo_curve_to (cr, - 7.5, 11.0, - 7.5, 0.0, - 7.5, 0.0); - cairo_stroke (cr); - - cairo_translate (cr, 15, 0); - - /* horizontal/vertical */ - cairo_move_to (cr, - 5.5, 0.5); - cairo_curve_to (cr, - -0.5, 0.5, - 5.5, 10.5, - 5.5, 0.5); - - cairo_translate (cr, 10, 0); - - /* vertical/horizontal */ - cairo_move_to (cr, - 5.5, 0.0); - cairo_curve_to (cr, - 5.5, 11.0, - 10.5, 0.0, - 5.5, 0.0); - cairo_stroke (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (degenerate_curve_to, - "Test optimization treating degenerate curve_to as line_to", - "path", /* keywords */ - NULL, /* requirements */ - 40, - 5, - NULL, draw) diff --git a/test/degenerate-dash.c b/test/degenerate-dash.c deleted file mode 100644 index 6e7bf6b..0000000 --- a/test/degenerate-dash.c +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright © 2008 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - * - * Based on an original test case by M Joonas Pihlaja. - */ - -#include "cairo-test.h" - -#define PAD 5 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - const double dashes[] = { 25, 25 }; - cairo_line_join_t joins[] = { - CAIRO_LINE_JOIN_ROUND, - CAIRO_LINE_JOIN_MITER, - CAIRO_LINE_JOIN_BEVEL - }; - cairo_line_cap_t caps[] = { - CAIRO_LINE_CAP_ROUND, - CAIRO_LINE_CAP_SQUARE, - CAIRO_LINE_CAP_BUTT, - }; - int i, j; - - cairo_set_source_rgb (cr, 1,1,1); - cairo_paint (cr); - - cairo_set_source_rgb (cr, 1, 0, 0); - - cairo_set_dash (cr, dashes, 2, 0.); - cairo_set_line_width (cr, 10); - - cairo_translate (cr, 5 + PAD, 5 + PAD); - - for (i = 0; i < ARRAY_LENGTH (joins); i++) { - cairo_set_line_join (cr, joins[i]); - cairo_save (cr); - - for (j = 0; j < ARRAY_LENGTH (caps); j++) { - cairo_set_line_cap (cr, caps[j]); - - cairo_move_to (cr, 0, 0); - cairo_line_to (cr, 50, 0); - cairo_line_to (cr, 50,50); - cairo_stroke (cr); - - cairo_translate (cr, 75, 0); - } - cairo_restore (cr); - - cairo_translate (cr, 0, 75); - } - - return CAIRO_TEST_SUCCESS; -} - -/* - * XFAIL: needs path editing in PS to convert degenerate - * end-caps into the shapes as expected by cairo (Or maybe PS is the correct - * behaviour?) - */ -CAIRO_TEST (degenerate_dash, - "Tests the behaviour of dashed segments that end on a off-on transition", - "dash, degenerate", /* keywords */ - NULL, /* requirementts */ - 210 + 2*PAD, 210 + 2*PAD, - NULL, draw) diff --git a/test/degenerate-linear-gradient.c b/test/degenerate-linear-gradient.c deleted file mode 100644 index 0d174fc..0000000 --- a/test/degenerate-linear-gradient.c +++ /dev/null @@ -1,81 +0,0 @@ -/* -*- Mode: c; c-basic-offset: 4; indent-tabs-mode: t; tab-width: 8; -*- */ -/* - * Copyright 2010 Andrea Canciani - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Andrea Canciani - */ - -#include "cairo-test.h" - -#define NUM_EXTEND 4 -#define HEIGHT 16 -#define WIDTH 16 -#define PAD 3 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_pattern_t *pattern; - unsigned int j; - - cairo_extend_t extend[NUM_EXTEND] = { - CAIRO_EXTEND_NONE, - CAIRO_EXTEND_REPEAT, - CAIRO_EXTEND_REFLECT, - CAIRO_EXTEND_PAD - }; - - cairo_test_paint_checkered (cr); - - pattern = cairo_pattern_create_linear (WIDTH/2, HEIGHT/2, WIDTH/2, HEIGHT/2); - - cairo_pattern_add_color_stop_rgba (pattern, 0, 1, 0, 0, 1); - cairo_pattern_add_color_stop_rgba (pattern, sqrt (1.0 / 2.0), 0, 1, 0, 0); - cairo_pattern_add_color_stop_rgba (pattern, 1, 0, 0, 1, 0.5); - - cairo_translate (cr, PAD, PAD); - - for (j = 0; j < NUM_EXTEND; j++) { - cairo_reset_clip (cr); - cairo_rectangle (cr, 0, 0, WIDTH, HEIGHT); - cairo_clip (cr); - - cairo_pattern_set_extend (pattern, extend[j]); - - cairo_set_source (cr, pattern); - cairo_paint (cr); - - cairo_translate (cr, WIDTH+PAD, 0); - } - - cairo_pattern_destroy (pattern); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (degenerate_linear_gradient, - "Tests degenerate linear gradients", - "linear, pattern, extend", /* keywords */ - NULL, /* requirements */ - (WIDTH+PAD) * NUM_EXTEND + PAD, 1*(HEIGHT + PAD) + PAD, - NULL, draw) diff --git a/test/degenerate-path.c b/test/degenerate-path.c deleted file mode 100644 index aa5f822..0000000 --- a/test/degenerate-path.c +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Copyright © 2006 Jeff Muizelaar - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Jeff Muizelaar not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Jeff Muizelaar makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * JEFF MUIZELAAR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL JEFF MUIZELAAR BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Jeff Muizelaar - */ - -#include "cairo-test.h" - -#define PAD 3.0 -#define LINE_WIDTH 6.0 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - const cairo_line_cap_t cap[] = { CAIRO_LINE_CAP_ROUND, CAIRO_LINE_CAP_SQUARE, CAIRO_LINE_CAP_BUTT }; - size_t i; - double dash[] = {2, 2}; - double dash_long[] = {6, 6}; - - cairo_set_source_rgb (cr, 1, 0, 0); - - for (i = 0; i < ARRAY_LENGTH (cap); i++) { - cairo_save (cr); - - cairo_set_line_cap (cr, cap[i]); - - /* simple degenerate paths */ - cairo_set_line_width (cr, LINE_WIDTH); - cairo_move_to (cr, LINE_WIDTH, LINE_WIDTH); - cairo_line_to (cr, LINE_WIDTH, LINE_WIDTH); - cairo_stroke (cr); - - cairo_translate (cr, 0, 3*PAD); - cairo_move_to (cr, LINE_WIDTH, LINE_WIDTH); - cairo_close_path (cr); - cairo_stroke (cr); - - /* degenerate paths starting with dash on */ - cairo_set_dash (cr, dash, 2, 0.); - - cairo_translate (cr, 0, 3*PAD); - cairo_move_to (cr, LINE_WIDTH, LINE_WIDTH); - cairo_line_to (cr, LINE_WIDTH, LINE_WIDTH); - cairo_stroke (cr); - - cairo_translate (cr, 0, 3*PAD); - cairo_move_to (cr, LINE_WIDTH, LINE_WIDTH); - cairo_close_path (cr); - cairo_stroke (cr); - - /* degenerate paths starting with dash off */ - /* these should not draw anything */ - cairo_set_dash (cr, dash, 2, 2.); - - cairo_translate (cr, 0, 3*PAD); - cairo_move_to (cr, LINE_WIDTH, LINE_WIDTH); - cairo_line_to (cr, LINE_WIDTH, LINE_WIDTH); - cairo_stroke (cr); - - cairo_translate (cr, 0, 3*PAD); - cairo_move_to (cr, LINE_WIDTH, LINE_WIDTH); - cairo_close_path (cr); - cairo_stroke (cr); - - /* this should draw a single degenerate sub-path - * at the end of the path */ - cairo_set_dash (cr, dash_long, 2, 6.); - - cairo_translate (cr, 0, 3*PAD); - cairo_move_to (cr, LINE_WIDTH + 6.0, LINE_WIDTH); - cairo_line_to (cr, LINE_WIDTH, LINE_WIDTH); - cairo_stroke (cr); - - /* this should draw a single degenerate sub-path - * at the end of the path. The difference between this - * and the above is that this ends with a degenerate sub-path*/ - cairo_set_dash (cr, dash_long, 2, 6.); - - cairo_translate (cr, 0, 3*PAD); - cairo_move_to (cr, LINE_WIDTH + 6.0, LINE_WIDTH); - cairo_line_to (cr, LINE_WIDTH, LINE_WIDTH); - cairo_line_to (cr, LINE_WIDTH, LINE_WIDTH); - cairo_stroke (cr); - - cairo_restore (cr); - - cairo_translate (cr, PAD+LINE_WIDTH+PAD, 0); - } - return CAIRO_TEST_SUCCESS; -} - -/* - * XFAIL: undefined behaviour in PS, needs path editing to convert degenerate - * segments into circles/rectangles as expected by cairo - */ -CAIRO_TEST (degenerate_path, - "Tests the behaviour of degenerate paths with different cap types", - "degenerate", /* keywords */ - NULL, /* requirements */ - 3*(PAD+LINE_WIDTH+PAD), 8*(LINE_WIDTH+PAD) + PAD, - NULL, draw) diff --git a/test/degenerate-pen.c b/test/degenerate-pen.c deleted file mode 100644 index ec8bd19..0000000 --- a/test/degenerate-pen.c +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Copyright © 2007 Red Hat, Inc. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" - -#define SIZE 20 -#define PAD 5 -#define WIDTH (PAD + 3 * (PAD + SIZE) + PAD) -#define HEIGHT (PAD + SIZE + PAD) - -/* We're demonstrating here a bug originally reported by Benjamin Otte - * on the cairo mailing list here, (after he ran into this problem - * with various flash animations): - * - * [cairo] Assertion `i < pen->num_vertices' failed in 1.4.10 - * http://lists.cairographics.org/archives/cairo/2007-August/011282.html - * - * The problem shows up with an extreme transformation matrix that - * collapses the pen to a single line, (which means that - * _cairo_slope_compare cannot handle adjacent vertices in the pen - * since they have parallel slope). - * - * This test case tests degenerate pens in several directions and uses - * round caps to force the stroking code to attempt to walk around the - * pen doing slope comparisons. - */ - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - cairo_set_source_rgb (cr, 0, 0, 0); - cairo_set_line_join (cr, CAIRO_LINE_JOIN_ROUND); - - cairo_translate (cr, PAD, PAD); - - /* First compress the pen to a vertical line. */ - cairo_rectangle (cr, 0, 0, SIZE, SIZE); - cairo_curve_to (cr, SIZE / 2, 0, SIZE, SIZE / 2, SIZE, SIZE); - cairo_save (cr); - { - cairo_scale (cr, 0.000001, 1.0); - cairo_stroke (cr); - } - cairo_restore (cr); - - cairo_translate (cr, PAD + SIZE, 0); - - /* Then compress the pen to a horizontal line. */ - cairo_rectangle (cr, 0, 0, SIZE, SIZE); - cairo_curve_to (cr, SIZE / 2, 0, SIZE, SIZE / 2, SIZE, SIZE); - cairo_save (cr); - { - cairo_scale (cr, 1.0, 0.000001); - cairo_stroke (cr); - } - cairo_restore (cr); - - cairo_translate (cr, PAD + SIZE, 0); - - /* Finally a line at an angle. */ - cairo_rectangle (cr, 0, 0, SIZE, SIZE); - cairo_curve_to (cr, SIZE / 2, 0, SIZE, SIZE / 2, SIZE, SIZE); - cairo_save (cr); - { - cairo_rotate (cr, M_PI / 4.0); - cairo_scale (cr, 0.000001, 1.0); - cairo_stroke (cr); - } - cairo_restore (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (degenerate_pen, - "Test round joins with a pen that's transformed to a line", - "degenerate", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/degenerate-radial-gradient.c b/test/degenerate-radial-gradient.c deleted file mode 100644 index 1466645..0000000 --- a/test/degenerate-radial-gradient.c +++ /dev/null @@ -1,93 +0,0 @@ -/* -*- Mode: c; c-basic-offset: 4; indent-tabs-mode: t; tab-width: 8; -*- */ -/* - * Copyright 2010 Andrea Canciani - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Andrea Canciani - */ - -#include "cairo-test.h" - -#define NUM_EXTEND 4 -#define HEIGHT 32 -#define WIDTH 32 -#define PAD 6 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_pattern_t *pattern; - unsigned int i, j; - - cairo_extend_t extend[NUM_EXTEND] = { - CAIRO_EXTEND_NONE, - CAIRO_EXTEND_REPEAT, - CAIRO_EXTEND_REFLECT, - CAIRO_EXTEND_PAD - }; - - cairo_test_paint_checkered (cr); - - cairo_translate (cr, PAD, PAD); - - for (i = 0; i < 3; i++) { - cairo_save (cr); - - for (j = 0; j < NUM_EXTEND; j++) { - cairo_reset_clip (cr); - cairo_rectangle (cr, 0, 0, WIDTH, HEIGHT); - cairo_clip (cr); - - if (i == 0) - pattern = cairo_pattern_create_radial (WIDTH/2, HEIGHT/2, 0, WIDTH/2, HEIGHT/2, 0); - else if (i == 1) - pattern = cairo_pattern_create_radial (WIDTH/2, HEIGHT/2, 2*PAD, WIDTH/2, HEIGHT/2, 2*PAD); - else if (i == 2) - pattern = cairo_pattern_create_radial (PAD, PAD, 0, WIDTH-PAD, HEIGHT-PAD, 0); - - cairo_pattern_add_color_stop_rgba (pattern, 0, 1, 0, 0, 1); - cairo_pattern_add_color_stop_rgba (pattern, sqrt (1.0 / 2.0), 0, 1, 0, 0); - cairo_pattern_add_color_stop_rgba (pattern, 1, 0, 0, 1, 0.5); - - cairo_pattern_set_extend (pattern, extend[j]); - - cairo_set_source (cr, pattern); - cairo_paint (cr); - - cairo_pattern_destroy (pattern); - - cairo_translate (cr, WIDTH+PAD, 0); - } - - cairo_restore (cr); - cairo_translate (cr, 0, HEIGHT+PAD); - } - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (degenerate_radial_gradient, - "Tests degenerate radial gradients", - "radial, pattern, extend", /* keywords */ - NULL, /* requirements */ - (WIDTH+PAD) * NUM_EXTEND + PAD, 3*(HEIGHT + PAD) + PAD, - NULL, draw) diff --git a/test/degenerate-rel-curve-to.c b/test/degenerate-rel-curve-to.c deleted file mode 100644 index d7c0523..0000000 --- a/test/degenerate-rel-curve-to.c +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * Copyright © 2009 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - * Chris Wilson - */ - -#include "cairo-test.h" - -#define SIZE 30 - -/* Another attempt at avoiding unnecessary splines was made, where - * a curve-to that ended on the same point as it began were discarded. - * The same bug was made to rel-curve-to as well, hence this test. - */ -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); /* white */ - cairo_paint (cr); - - cairo_set_line_width (cr, 1.0); - cairo_set_line_cap (cr, CAIRO_LINE_CAP_BUTT); - cairo_set_line_join (cr, CAIRO_LINE_JOIN_BEVEL); - cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); /* black */ - - /* entirely degenerate */ - cairo_move_to (cr, 2.5, 2.5); - cairo_rel_curve_to (cr, - 0., 0., - 0., 0., - 0., 0.); - cairo_stroke (cr); - - /* horizontal */ - cairo_move_to (cr, 5.5, 2.5); - cairo_rel_curve_to (cr, - 10., 0., - -10., 0., - 0., 0.); - cairo_stroke (cr); - - /* vertical */ - cairo_move_to (cr, 5.5, 2.5); - cairo_rel_curve_to (cr, - 0., 10., - 0., -10., - 0., 0.); - cairo_stroke (cr); - - cairo_translate (cr, 15, 0); - - /* horizontal/vertical */ - cairo_move_to (cr, 5.5, 0.5); - cairo_rel_curve_to (cr, - -6., 0., - 0., 10., - 0., 0.); - - cairo_translate (cr, 10, 0); - - /* vertical/horizontal */ - cairo_move_to (cr, 5.5, 0.0); - cairo_rel_curve_to (cr, - 0., 11., - 5., 0., - 0., 0.); - cairo_stroke (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (degenerate_rel_curve_to, - "Test optimization treating degenerate rel-curve-to as line-to", - "path", /* keywords */ - NULL, /* requirements */ - 40, - 5, - NULL, draw) diff --git a/test/degenerate-solid-dash.c b/test/degenerate-solid-dash.c deleted file mode 100644 index 293a808..0000000 --- a/test/degenerate-solid-dash.c +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright © 2012 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - const double dashes_1[] = { 10, 0 }; - const double dashes_2[] = { 10, 0, 10, 10}; - const double dashes_3[] = { 10, 0, 10, 0}; - - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - cairo_set_source_rgb (cr, 0, 0, 0); - - cairo_set_line_width (cr, 6); - - cairo_set_dash (cr, NULL, 0, 0); - cairo_rectangle (cr, 10, 10, 30, 30); - cairo_stroke (cr); - - cairo_translate (cr, 50, 0); - cairo_set_dash (cr, dashes_1, 2, 0); - cairo_rectangle (cr, 10, 10, 30, 30); - cairo_stroke (cr); - - cairo_translate (cr, 0, 50); - cairo_set_dash (cr, dashes_2, 4, 0); - cairo_rectangle (cr, 10, 10, 30, 30); - cairo_stroke (cr); - - cairo_translate (cr, -50, 0); - cairo_set_dash (cr, dashes_3, 4, 0); - cairo_rectangle (cr, 10, 10, 30, 30); - cairo_stroke (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (degenerate_solid_dash, - "Exercises degenerate dash ellison", - "stroke, dash", /* keywords */ - NULL, /* requirements */ - 100, 100, - NULL, draw) diff --git a/test/device-offset-fractional.c b/test/device-offset-fractional.c deleted file mode 100644 index adc2116..0000000 --- a/test/device-offset-fractional.c +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright © 2006 Red Hat, Inc. - * Copyright © 2008 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - * Chris Wilson - */ - -#include "cairo-test.h" - -#define SIZE 10 -#define PAD 4 -#define COUNT 4 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_t *surface; - cairo_t *cr2; - int i,j; - - /* Fill the background */ - cairo_set_source_rgb (cr, 1, 1, 1); /* white */ - cairo_paint (cr); - - surface = cairo_image_surface_create (CAIRO_FORMAT_RGB24, SIZE, SIZE); - cr2 = cairo_create (surface); - cairo_surface_destroy (surface); - - cairo_set_source_rgb (cr2, 0, 0, 1); /* blue */ - cairo_paint (cr2); - - cairo_set_source_surface (cr, cairo_get_target (cr2), 0, 0); - cairo_destroy (cr2); - - for (i = 0; i < COUNT; i++) { - for (j = 0; j < COUNT; j++) { - cairo_surface_set_device_offset (surface, - -i*(SIZE+PAD+.5)-PAD, - -j*(SIZE+PAD+.5)-PAD); - cairo_paint (cr); - } - } - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (device_offset_fractional, - "Test using image surfaces with fractional device-offsets as sources.", - "device-offset", /* keywords */ - NULL, /* requirements */ - COUNT*(SIZE+PAD+.5)+PAD, COUNT*(SIZE+PAD+.5)+PAD, - NULL, draw) diff --git a/test/device-offset-positive.c b/test/device-offset-positive.c deleted file mode 100644 index 5afe973..0000000 --- a/test/device-offset-positive.c +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright © 2006 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" -#include - -#define SIZE 10 -#define PAD 2 - -static void -draw_square (cairo_t *cr) -{ - cairo_rectangle (cr, - PAD, PAD, - SIZE - 2 * PAD, - SIZE - 2 * PAD); - cairo_fill (cr); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_t *surface, *target; - cairo_t *cr2; - - /* First draw a shape in blue on the original destination. */ - cairo_set_source_rgb (cr, 0, 0, 1); /* blue */ - draw_square (cr); - - /* Then, create an offset surface and repeat the drawing in red. */ - target = cairo_get_group_target (cr); - surface = cairo_surface_create_similar (target, - cairo_surface_get_content (target), - SIZE / 2, SIZE / 2); - cr2 = cairo_create (surface); - cairo_surface_destroy (surface); - - cairo_set_source_rgb (cr2, 1, 0, 0); /* red */ - draw_square (cr2); - - /* Finally, copy the offset surface to the original destination. - * The final result should be a blue square with the upper-left - * quarter red. */ - surface = cairo_surface_reference (cairo_get_target (cr2)); - cairo_destroy (cr2); - cairo_surface_set_device_offset (surface, + SIZE / 2, + SIZE / 2); - cairo_set_source_surface (cr, surface, SIZE / 2, SIZE / 2); - cairo_surface_destroy (surface); - - cairo_paint (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (device_offset_positive, - "Simple test using a surface with a positive device-offset as a source.", - "device-offset", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, draw) diff --git a/test/device-offset-scale.c b/test/device-offset-scale.c deleted file mode 100644 index 33784fa..0000000 --- a/test/device-offset-scale.c +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright © 2008 Mozilla Corporation - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Mozilla Corporation not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Mozilla Corporation makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * MOZILLA CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL MOZILLA CORPORATION BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Authors: Michael Ventnor, Jeff Muizelaar - */ - -#include "cairo-test.h" - -#define WIDTH 20 -#define HEIGHT 20 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_t *second; - cairo_t *second_cr; - - /* fill with black so we don't need an rgb test case */ - cairo_set_source_rgb (cr, 0, 0, 0); - cairo_paint (cr); - - cairo_scale (cr, 0.5, 0.5); - - /* draw the first rectangle */ - cairo_set_source_rgb (cr, 0, 0, 0.4); - cairo_rectangle (cr, 6, 6, 10, 10); - cairo_fill (cr); - - /* adjust the offset so that the second rectangle will fit on the surface */ - second = cairo_image_surface_create (CAIRO_FORMAT_A8, 10, 10); - cairo_surface_set_device_offset (second, -6, -6); - - /* draw the second rectangle: - * this rectangle should end up in the same place as the rectangle above - * independent of the device offset of the surface it is painted on*/ - second_cr = cairo_create (second); - cairo_surface_destroy (second); - cairo_rectangle (second_cr, 6, 6, 10, 10); - cairo_fill (second_cr); - - /* paint the second rectangle on top of the first rectangle */ - cairo_set_source_rgb (cr, 0.5, 0.5, 0); - cairo_mask_surface (cr, cairo_get_target (second_cr), 0, 0); - cairo_destroy (second_cr); - - return CAIRO_TEST_SUCCESS; -} - -/* - * XFAIL: complication of pre-multiplying device_offset into the pattern_matrix - * and then requiring further manipulation for SVG - */ -CAIRO_TEST (device_offset_scale, - "Test that the device-offset transform is transformed by the ctm.", - "device-offset", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/device-offset.c b/test/device-offset.c deleted file mode 100644 index 1bf5283..0000000 --- a/test/device-offset.c +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright © 2006 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" -#include - -#define SIZE 10 -#define PAD 2 - -static void -draw_square (cairo_t *cr) -{ - cairo_rectangle (cr, - PAD, PAD, - SIZE - 2 * PAD, - SIZE - 2 * PAD); - cairo_fill (cr); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_t *surface, *target; - cairo_t *cr2; - - /* First draw a shape in blue on the original destination. */ - cairo_set_source_rgb (cr, 0, 0, 1); /* blue */ - draw_square (cr); - - /* Then, create an offset surface and repeat the drawing in red. */ - target = cairo_get_group_target (cr); - surface = cairo_surface_create_similar (target, - cairo_surface_get_content (target), - SIZE / 2, SIZE / 2); - cairo_surface_set_device_offset (surface, - SIZE / 2, - SIZE / 2); - cr2 = cairo_create (surface); - cairo_surface_destroy (surface); - - cairo_set_source_rgb (cr2, 1, 0, 0); /* red */ - draw_square (cr2); - - - /* Finally, copy the offset surface to the original destination. - * The final result should be a blue square with the lower-right - * quarter red. */ - cairo_set_source_surface (cr, cairo_get_target (cr2), 0, 0); - cairo_destroy (cr2); - - cairo_paint (cr); - - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (device_offset, - "Simple test using a surface with a negative device-offset as a source.", - "device-offset", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, draw) diff --git a/test/drunkard-tails.c b/test/drunkard-tails.c deleted file mode 100644 index f55c7be..0000000 --- a/test/drunkard-tails.c +++ /dev/null @@ -1,135 +0,0 @@ -/* - * Copyright © 2011 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -#define LINE_WIDTH 10. -#define SIZE (5 * LINE_WIDTH) -#define PAD (3 * LINE_WIDTH) - -static uint32_t state; - -static double -uniform_random (double minval, double maxval) -{ - static uint32_t const poly = 0x9a795537U; - uint32_t n = 32; - while (n-->0) - state = 2*state < state ? (2*state ^ poly) : 2*state; - return minval + state * (maxval - minval) / 4294967296.0; -} - -static void -make_path (cairo_t *cr) -{ - int i; - - state = 0xdeadbeef; - - cairo_move_to (cr, SIZE/2, SIZE/2); - for (i = 0; i < 200; i++) { - double theta = uniform_random (-M_PI, M_PI); - cairo_rel_line_to (cr, - cos (theta) * LINE_WIDTH / 4, - sin (theta) * LINE_WIDTH / 4); - } -} - -static void -draw_caps_joins (cairo_t *cr) -{ - cairo_save (cr); - - cairo_translate (cr, PAD, PAD); - - cairo_reset_clip (cr); - cairo_rectangle (cr, 0, 0, SIZE, SIZE); - cairo_clip (cr); - - make_path (cr); - cairo_set_line_cap (cr, CAIRO_LINE_CAP_BUTT); - cairo_set_line_join (cr, CAIRO_LINE_JOIN_BEVEL); - cairo_stroke (cr); - - cairo_translate (cr, SIZE + PAD, 0.); - - cairo_reset_clip (cr); - cairo_rectangle (cr, 0, 0, SIZE, SIZE); - cairo_clip (cr); - - make_path (cr); - cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND); - cairo_set_line_join (cr, CAIRO_LINE_JOIN_ROUND); - cairo_stroke (cr); - - cairo_translate (cr, SIZE + PAD, 0.); - - cairo_reset_clip (cr); - cairo_rectangle (cr, 0, 0, SIZE, SIZE); - cairo_clip (cr); - - make_path (cr); - cairo_set_line_cap (cr, CAIRO_LINE_CAP_SQUARE); - cairo_set_line_join (cr, CAIRO_LINE_JOIN_MITER); - cairo_stroke (cr); - - cairo_restore (cr); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - /* We draw in the default black, so paint white first. */ - cairo_save (cr); - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); /* white */ - cairo_paint (cr); - cairo_restore (cr); - - cairo_set_line_width (cr, LINE_WIDTH); - - draw_caps_joins (cr); - - cairo_save (cr); - /* and reflect to generate the opposite vertex ordering */ - cairo_translate (cr, 0, height); - cairo_scale (cr, 1, -1); - - draw_caps_joins (cr); - cairo_restore (cr); - - cairo_translate (cr, 0, SIZE + PAD); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (drunkard_tails, - "Test caps and joins on short tail segments", - "stroke, cap, join", /* keywords */ - NULL, /* requirements */ - 3 * (PAD + SIZE) + PAD, - 2 * (PAD + SIZE) + PAD, - NULL, draw) - diff --git a/test/egl-oversized-surface.c b/test/egl-oversized-surface.c deleted file mode 100644 index cb85a62..0000000 --- a/test/egl-oversized-surface.c +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Copyright © 2014 Samsung Electronics - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Ravi Nanjundappa - */ - -/* - * This test exercises error scenario for over sized egl surface - * - */ - -#include "cairo-test.h" -#include -#include -#include - -static cairo_test_status_t -preamble (cairo_test_context_t *test_ctx) -{ - EGLint rgba_attribs[] = { - EGL_RED_SIZE, 8, - EGL_GREEN_SIZE, 8, - EGL_BLUE_SIZE, 8, - EGL_ALPHA_SIZE, 8, - EGL_SURFACE_TYPE, EGL_PBUFFER_BIT, -#if CAIRO_HAS_GL_SURFACE - EGL_RENDERABLE_TYPE, EGL_OPENGL_BIT, -#elif CAIRO_HAS_GLESV2_SURFACE - EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT, -#endif - EGL_NONE - }; - const EGLint ctx_attribs[] = { -#if CAIRO_HAS_GLESV2_SURFACE - EGL_CONTEXT_CLIENT_VERSION, 2, -#endif - EGL_NONE - }; - - EGLDisplay dpy; - EGLContext ctx; - EGLConfig config; - EGLint numConfigs; - int major, minor; - cairo_device_t *device; - cairo_surface_t *oversized_surface; - cairo_test_status_t test_status = CAIRO_TEST_SUCCESS; - - dpy = eglGetDisplay (EGL_DEFAULT_DISPLAY); - if (! eglInitialize (dpy, &major, &minor)) { - test_status = CAIRO_TEST_UNTESTED; - goto CLEANUP_1; - } - - eglChooseConfig (dpy, rgba_attribs, &config, 1, &numConfigs); - if (numConfigs == 0) { - test_status = CAIRO_TEST_UNTESTED; - goto CLEANUP_1; - } - -#if CAIRO_HAS_GL_SURFACE - eglBindAPI (EGL_OPENGL_API); -#elif CAIRO_HAS_GLESV2_SURFACE - eglBindAPI (EGL_OPENGL_ES_API); -#endif - - ctx = eglCreateContext (dpy, config, EGL_NO_CONTEXT, - ctx_attribs); - if (ctx == EGL_NO_CONTEXT) { - test_status = CAIRO_TEST_UNTESTED; - goto CLEANUP_2; - } - - device = cairo_egl_device_create (dpy, ctx); - - oversized_surface = cairo_gl_surface_create (device, CAIRO_CONTENT_COLOR_ALPHA, INT_MAX, INT_MAX); - if (cairo_surface_status (oversized_surface) != CAIRO_STATUS_INVALID_SIZE) - test_status = CAIRO_TEST_FAILURE; - - cairo_device_destroy (device); - eglDestroyContext (dpy, ctx); - eglMakeCurrent (dpy, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); - ctx = EGL_NO_CONTEXT; - -CLEANUP_2: - eglTerminate (dpy); - -CLEANUP_1: - return test_status; -} - -CAIRO_TEST (egl_oversized_surface, - "Test that creating a surface beyond texture limits results in an error surface", - "egl", /* keywords */ - NULL, /* requirements */ - 0, 0, - preamble, NULL) diff --git a/test/egl-surface-source.c b/test/egl-surface-source.c deleted file mode 100644 index 4a84d70..0000000 --- a/test/egl-surface-source.c +++ /dev/null @@ -1,135 +0,0 @@ -/* - * Copyright © 2014 Samsung Electronics - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Ravi Nanjundappa - */ - -/* - * This case tests using a EGL surface as the source - * - */ - -#include "cairo-test.h" -#include - -#include "surface-source.c" - -struct closure { - EGLDisplay dpy; - EGLContext ctx; -}; - -static void -cleanup (void *data) -{ - struct closure *arg = data; - - eglDestroyContext (arg->dpy, arg->ctx); - eglMakeCurrent (arg->dpy, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); - eglTerminate (arg->dpy); - - free (arg); -} - -static cairo_surface_t * -create_source_surface (int size) -{ - EGLint config_attribs[] = { - EGL_RED_SIZE, 8, - EGL_GREEN_SIZE, 8, - EGL_BLUE_SIZE, 8, - EGL_ALPHA_SIZE, 8, - EGL_SURFACE_TYPE, EGL_PBUFFER_BIT, -#if CAIRO_HAS_GL_SURFACE - EGL_RENDERABLE_TYPE, EGL_OPENGL_BIT, -#elif CAIRO_HAS_GLESV2_SURFACE - EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT, -#endif - EGL_NONE - }; - const EGLint ctx_attribs[] = { -#if CAIRO_HAS_GLESV2_SURFACE - EGL_CONTEXT_CLIENT_VERSION, 2, -#endif - EGL_NONE - }; - - struct closure *arg; - cairo_device_t *device; - cairo_surface_t *surface; - EGLConfig config; - EGLint numConfigs; - EGLDisplay dpy; - EGLContext ctx; - int major, minor; - - dpy = eglGetDisplay (EGL_DEFAULT_DISPLAY); - if (! eglInitialize (dpy, &major, &minor)) { - return NULL; - } - - eglChooseConfig (dpy, config_attribs, &config, 1, &numConfigs); - if (numConfigs == 0) { - return NULL; - } - -#if CAIRO_HAS_GL_SURFACE - eglBindAPI (EGL_OPENGL_API); -#elif CAIRO_HAS_GLESV2_SURFACE - eglBindAPI (EGL_OPENGL_ES_API); -#endif - - ctx = eglCreateContext (dpy, config, EGL_NO_CONTEXT, - ctx_attribs); - if (ctx == EGL_NO_CONTEXT) { - eglTerminate (dpy); - return NULL; - } - - arg = xmalloc (sizeof (struct closure)); - arg->dpy = dpy; - arg->ctx = ctx; - device = cairo_egl_device_create (dpy, ctx); - if (cairo_device_set_user_data (device, - (cairo_user_data_key_t *) cleanup, - arg, - cleanup)) - { - cleanup (arg); - return NULL; - } - - surface = cairo_gl_surface_create (device, - CAIRO_CONTENT_COLOR_ALPHA, - size, size); - cairo_device_destroy (device); - - return surface; -} - -CAIRO_TEST (egl_surface_source, - "Test using a EGL surface as the source", - "source", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - preamble, draw) diff --git a/test/error-setters.c b/test/error-setters.c deleted file mode 100644 index ff65ad4..0000000 --- a/test/error-setters.c +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright © 2010 Red Hat Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Benjamin Otte - */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include - -#include "cairo-test.h" - -#if CAIRO_HAS_GL_SURFACE -#include -#endif -#if CAIRO_HAS_OS2_SURFACE -#include -#endif -#if CAIRO_HAS_PDF_SURFACE -#include -#endif -#if CAIRO_HAS_PS_SURFACE -#include -#endif -#if CAIRO_HAS_XCB_SURFACE -#include -#endif -#if CAIRO_HAS_XLIB_SURFACE -#include -#endif - -static cairo_test_status_t -preamble (cairo_test_context_t *ctx) -{ - cairo_surface_t *surface; - - /* get the error surface */ - surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, INT_MAX, INT_MAX); - -#if CAIRO_HAS_GL_SURFACE - cairo_gl_surface_set_size (surface, 0, 0); - cairo_gl_surface_swapbuffers (surface); -#endif - -#if CAIRO_HAS_OS2_SURFACE - cairo_os2_surface_set_hwnd (surface, 0); - cairo_os2_surface_set_size (surface, 0, 0, 0); - cairo_os2_surface_set_manual_window_refresh (surface, FALSE); -#endif - -#if CAIRO_HAS_PDF_SURFACE - cairo_pdf_surface_restrict_to_version (surface, CAIRO_PDF_VERSION_1_4); - cairo_pdf_surface_set_size (surface, 0, 0); -#endif - -#if CAIRO_HAS_PS_SURFACE - cairo_ps_surface_set_eps (surface, FALSE); - cairo_ps_surface_set_size (surface, 0, 0); - cairo_ps_surface_restrict_to_level (surface, CAIRO_PS_LEVEL_2); - cairo_ps_surface_dsc_comment (surface, NULL); - cairo_ps_surface_dsc_begin_setup (surface); - cairo_ps_surface_dsc_begin_page_setup (surface); -#endif - -#if CAIRO_HAS_XCB_SURFACE - cairo_xcb_surface_set_size (surface, 0, 0); -#endif - -#if CAIRO_HAS_XLIB_SURFACE - cairo_xlib_surface_set_size (surface, 0, 0); - cairo_xlib_surface_set_drawable (surface, 0, 0, 0); -#endif - - cairo_surface_set_mime_data (surface, NULL, NULL, 0, NULL, 0); - cairo_surface_set_device_offset (surface, 0, 0); - cairo_surface_set_fallback_resolution (surface, 0, 0); - - cairo_surface_destroy (surface); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (error_setters, - "Check setters properly error out on read-only error surfaces", - NULL, /* keywords */ - NULL, /* requirements */ - 0, 0, - preamble, NULL) diff --git a/test/extend-pad-border.c b/test/extend-pad-border.c deleted file mode 100644 index c02ec4f..0000000 --- a/test/extend-pad-border.c +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright © 2007 Red Hat, Inc. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Behdad Esfahbod - */ - -#include "cairo-test.h" -#include -#include - -#define SIZE 90 - -/* Check the border-pixels of an EXTEND_PAD image pattern */ - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_t *surface; - cairo_t * cr_surface; - int surface_size = (SIZE - 30) / 10; - - cairo_set_source_rgba (cr, 0, 0, 0, 1); - cairo_rectangle (cr, 0, 0, SIZE, SIZE); - cairo_fill (cr); - - /* Create an image surface with my favorite four colors in each - * quadrant. */ - surface = cairo_image_surface_create (CAIRO_FORMAT_RGB24, - surface_size, surface_size); - cr_surface = cairo_create (surface); - cairo_surface_destroy (surface); - - cairo_set_source_rgb (cr_surface, 1, 1, 1); - cairo_rectangle (cr_surface, - 0, 0, - surface_size / 2, surface_size / 2); - cairo_fill (cr_surface); - cairo_set_source_rgb (cr_surface, 1, 0, 0); - cairo_rectangle (cr_surface, - surface_size / 2, 0, - surface_size / 2, surface_size / 2); - cairo_fill (cr_surface); - cairo_set_source_rgb (cr_surface, 0, 1, 0); - cairo_rectangle (cr_surface, - 0, surface_size / 2, - surface_size / 2, surface_size / 2); - cairo_fill (cr_surface); - cairo_set_source_rgb (cr_surface, 0, 0, 1); - cairo_rectangle (cr_surface, - surface_size / 2, surface_size / 2, - surface_size / 2, surface_size / 2); - cairo_fill (cr_surface); - - cairo_scale (cr, 10, 10); - cairo_set_source_surface (cr, cairo_get_target (cr_surface), 1.5, 1.5); - cairo_destroy (cr_surface); - - /* Using EXTEND_REFLECT makes this test pass for image and xlib backends */ - /*cairo_pattern_set_extend (cairo_get_source (cr), CAIRO_EXTEND_REFLECT);*/ - - cairo_pattern_set_extend (cairo_get_source (cr), CAIRO_EXTEND_PAD); - cairo_rectangle (cr, 1.5, 1.5, 6, 6); - cairo_clip (cr); - - cairo_paint (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (extend_pad_border, - "Test CAIRO_EXTEND_PAD for surface patterns", - "extend", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, draw) diff --git a/test/extend-pad-similar.c b/test/extend-pad-similar.c deleted file mode 100644 index 09a90f4..0000000 --- a/test/extend-pad-similar.c +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright © 2007 Red Hat, Inc. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Behdad Esfahbod - */ - -#include "cairo-test.h" -#include -#include - -#define SIZE 90 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_t *surface; - cairo_t *cr_surface; - - /* Create a 4-pixel similar surface with my favorite four colors in each - * quadrant. */ - surface = cairo_surface_create_similar (cairo_get_group_target (cr), - CAIRO_CONTENT_COLOR, 2, 2); - cr_surface = cairo_create (surface); - cairo_surface_destroy (surface); - - /* upper-left = white */ - cairo_set_source_rgb (cr_surface, 1, 1, 1); - cairo_rectangle (cr_surface, 0, 0, 1, 1); - cairo_fill (cr_surface); - - /* upper-right = red */ - cairo_set_source_rgb (cr_surface, 1, 0, 0); - cairo_rectangle (cr_surface, 1, 0, 1, 1); - cairo_fill (cr_surface); - - /* lower-left = green */ - cairo_set_source_rgb (cr_surface, 0, 1, 0); - cairo_rectangle (cr_surface, 0, 1, 1, 1); - cairo_fill (cr_surface); - - /* lower-right = blue */ - cairo_set_source_rgb (cr_surface, 0, 0, 1); - cairo_rectangle (cr_surface, 1, 1, 1, 1); - cairo_fill (cr_surface); - - /* Now use extend pad to cover the entire surface with those 4 colors */ - cairo_set_source_surface (cr, cairo_get_target (cr_surface), - width/2 - 1, - height/2 - 1); - cairo_destroy (cr_surface); - cairo_pattern_set_extend (cairo_get_source (cr), CAIRO_EXTEND_PAD); - cairo_paint (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (extend_pad_similar, - "Test CAIRO_EXTEND_PAD for similar surface patterns", - "extend", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, draw) diff --git a/test/extend-pad.c b/test/extend-pad.c deleted file mode 100644 index f851d44..0000000 --- a/test/extend-pad.c +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright © 2007 Red Hat, Inc. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Behdad Esfahbod - */ - -#include "cairo-test.h" -#include -#include - -#define SIZE 90 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_t *surface; - cairo_t *cr_surface; - - /* Create a 4-pixel image surface with my favorite four colors in each - * quadrant. */ - surface = cairo_image_surface_create (CAIRO_FORMAT_RGB24, 2, 2); - cr_surface = cairo_create (surface); - cairo_surface_destroy (surface); - - /* upper-left = white */ - cairo_set_source_rgb (cr_surface, 1, 1, 1); - cairo_rectangle (cr_surface, 0, 0, 1, 1); - cairo_fill (cr_surface); - - /* upper-right = red */ - cairo_set_source_rgb (cr_surface, 1, 0, 0); - cairo_rectangle (cr_surface, 1, 0, 1, 1); - cairo_fill (cr_surface); - - /* lower-left = green */ - cairo_set_source_rgb (cr_surface, 0, 1, 0); - cairo_rectangle (cr_surface, 0, 1, 1, 1); - cairo_fill (cr_surface); - - /* lower-right = blue */ - cairo_set_source_rgb (cr_surface, 0, 0, 1); - cairo_rectangle (cr_surface, 1, 1, 1, 1); - cairo_fill (cr_surface); - - /* Now use extend pad to cover the entire surface with those 4 colors */ - cairo_set_source_surface (cr, cairo_get_target (cr_surface), - width/2 - 1, - height/2 - 1); - cairo_destroy (cr_surface); - cairo_pattern_set_extend (cairo_get_source (cr), CAIRO_EXTEND_PAD); - cairo_paint (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (extend_pad, - "Test CAIRO_EXTEND_PAD for surface patterns", - "extend", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, draw) diff --git a/test/extend-reflect-similar.c b/test/extend-reflect-similar.c deleted file mode 100644 index fa376a7..0000000 --- a/test/extend-reflect-similar.c +++ /dev/null @@ -1,51 +0,0 @@ -#include "cairo-test.h" - -static const char *png_filename = "romedalen.png"; - -static cairo_surface_t * -clone_similar_surface (cairo_surface_t * target, cairo_surface_t *surface) -{ - cairo_t *cr; - cairo_surface_t *similar; - - similar = cairo_surface_create_similar (target, - cairo_surface_get_content (surface), - cairo_image_surface_get_width (surface), - cairo_image_surface_get_height (surface)); - cr = cairo_create (similar); - cairo_surface_destroy (similar); - cairo_set_source_surface (cr, surface, 0, 0); - cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); - cairo_paint (cr); - similar = cairo_surface_reference (cairo_get_target (cr)); - cairo_destroy (cr); - - return similar; -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - const cairo_test_context_t *ctx = cairo_test_get_context (cr); - cairo_surface_t *surface; - cairo_surface_t *similar; - - surface = cairo_test_create_surface_from_png (ctx, png_filename); - similar = clone_similar_surface (cairo_get_group_target (cr), surface); - cairo_set_source_surface (cr, similar, 32, 32); - cairo_pattern_set_extend (cairo_get_source (cr), CAIRO_EXTEND_REFLECT); - - cairo_paint (cr); - - cairo_surface_destroy (similar); - cairo_surface_destroy (surface); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (extend_reflect_similar, - "Test CAIRO_EXTEND_REFLECT for surface patterns", - "extend", /* keywords */ - NULL, /* requirements */ - 256 + 32*2, 192 + 32*2, - NULL, draw) diff --git a/test/extend-reflect.c b/test/extend-reflect.c deleted file mode 100644 index 173befc..0000000 --- a/test/extend-reflect.c +++ /dev/null @@ -1,29 +0,0 @@ -#include "cairo-test.h" -#include -#include - -static const char *png_filename = "romedalen.png"; - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - const cairo_test_context_t *ctx = cairo_test_get_context (cr); - cairo_surface_t *surface; - - surface = cairo_test_create_surface_from_png (ctx, png_filename); - cairo_set_source_surface (cr, surface, 32, 32); - cairo_pattern_set_extend (cairo_get_source (cr), CAIRO_EXTEND_REFLECT); - - cairo_paint (cr); - - cairo_surface_destroy (surface); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (extend_reflect, - "Test CAIRO_EXTEND_REFLECT for surface patterns", - "extend", /* keywords */ - NULL, /* requirements */ - 256 + 32*2, 192 + 32*2, - NULL, draw) diff --git a/test/extend-repeat-similar.c b/test/extend-repeat-similar.c deleted file mode 100644 index 08cfd29..0000000 --- a/test/extend-repeat-similar.c +++ /dev/null @@ -1,51 +0,0 @@ -#include "cairo-test.h" - -static const char *png_filename = "romedalen.png"; - -static cairo_surface_t * -clone_similar_surface (cairo_surface_t * target, cairo_surface_t *surface) -{ - cairo_t *cr; - cairo_surface_t *similar; - - similar = cairo_surface_create_similar (target, - cairo_surface_get_content (surface), - cairo_image_surface_get_width (surface), - cairo_image_surface_get_height (surface)); - cr = cairo_create (similar); - cairo_surface_destroy (similar); - cairo_set_source_surface (cr, surface, 0, 0); - cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); - cairo_paint (cr); - similar = cairo_surface_reference (cairo_get_target (cr)); - cairo_destroy (cr); - - return similar; -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - const cairo_test_context_t *ctx = cairo_test_get_context (cr); - cairo_surface_t *surface; - cairo_surface_t *similar; - - surface = cairo_test_create_surface_from_png (ctx, png_filename); - similar = clone_similar_surface (cairo_get_group_target (cr), surface); - cairo_set_source_surface (cr, similar, 32, 32); - cairo_pattern_set_extend (cairo_get_source (cr), CAIRO_EXTEND_REPEAT); - - cairo_paint (cr); - - cairo_surface_destroy (similar); - cairo_surface_destroy (surface); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (extend_repeat_similar, - "Test CAIRO_EXTEND_REPEAT for surface patterns", - "extend", /* keywords */ - NULL, /* requirements */ - 256 + 32*2, 192 + 32*2, - NULL, draw) diff --git a/test/extend-repeat.c b/test/extend-repeat.c deleted file mode 100644 index e6c0bcc..0000000 --- a/test/extend-repeat.c +++ /dev/null @@ -1,27 +0,0 @@ -#include "cairo-test.h" - -static const char *png_filename = "romedalen.png"; - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - const cairo_test_context_t *ctx = cairo_test_get_context (cr); - cairo_surface_t *surface; - - surface = cairo_test_create_surface_from_png (ctx, png_filename); - cairo_set_source_surface (cr, surface, 32, 32); - cairo_pattern_set_extend (cairo_get_source (cr), CAIRO_EXTEND_REPEAT); - - cairo_paint (cr); - - cairo_surface_destroy (surface); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (extend_repeat, - "Test CAIRO_EXTEND_REPEAT for surface patterns", - "extend", /* keywords */ - NULL, /* requirements */ - 256 + 32*2, 192 + 32*2, - NULL, draw) diff --git a/test/extended-blend.c b/test/extended-blend.c deleted file mode 100644 index 8edd182..0000000 --- a/test/extended-blend.c +++ /dev/null @@ -1,256 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * Copyright © 2007 Emmanuel Pacaud - * Copyright © 2008 Benjamin Otte - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Authors: Owen Taylor - * Kristian Høgsberg - * Emmanuel Pacaud - */ - -#include "cairo-test.h" -#include -#include - -#define STEPS 16 -#define START_OPERATOR CAIRO_OPERATOR_MULTIPLY -#define STOP_OPERATOR CAIRO_OPERATOR_HSL_LUMINOSITY - -#define SIZE 5 -#define COUNT 4 -#define FULL_WIDTH ((STEPS + 1) * COUNT - 1) -#define FULL_HEIGHT ((COUNT + STOP_OPERATOR - START_OPERATOR) / COUNT) * (STEPS + 1) - -static void -set_solid_pattern (cairo_t *cr, - int step, - cairo_bool_t bg, - cairo_bool_t alpha) -{ - double c, a; - - a = ((double) step) / (STEPS - 1); - if (alpha) { - c = 1; - } else { - c = a; - a = 1; - } - - if (bg) /* draw a yellow background fading in using discrete steps */ - cairo_set_source_rgba (cr, c, c, 0, a); - else /* draw a teal foreground pattern fading in using discrete steps */ - cairo_set_source_rgba (cr, 0, c, c, a); -} - -/* expects a STEP*STEP pixel rectangle */ -static void -do_blend_solid (cairo_t *cr, cairo_operator_t op, cairo_bool_t alpha) -{ - int x; - - cairo_save (cr); - cairo_scale (cr, SIZE, SIZE); - - /* not using CAIRO_OPERATOR_SOURCE here, it triggers a librsvg bug */ - cairo_set_operator (cr, CAIRO_OPERATOR_OVER); - for (x = 0; x < STEPS; x++) { - /* draw the background using discrete steps */ - set_solid_pattern (cr, x, TRUE, alpha); - cairo_rectangle (cr, x, 0, 1, STEPS); - cairo_fill (cr); - } - - cairo_set_operator (cr, op); - for (x = 0; x < STEPS; x++) { - /* draw an orthogonal foreground pattern using discrete steps */ - set_solid_pattern (cr, x, FALSE, alpha); - cairo_rectangle (cr, 0, x, STEPS, 1); - cairo_fill (cr); - } - - cairo_restore (cr); -} - -static void -create_patterns (cairo_t *cr, - cairo_surface_t **bg, - cairo_surface_t **fg, - cairo_bool_t alpha) -{ - cairo_t *bgcr, *fgcr; - - *bg = cairo_surface_create_similar (cairo_get_target (cr), - CAIRO_CONTENT_COLOR_ALPHA, - SIZE * STEPS, - SIZE * STEPS); - *fg = cairo_surface_create_similar (cairo_get_target (cr), - CAIRO_CONTENT_COLOR_ALPHA, - SIZE * STEPS, - SIZE * STEPS); - - bgcr = cairo_create (*bg); - fgcr = cairo_create (*fg); - - do_blend_solid (bgcr, CAIRO_OPERATOR_DEST, alpha); - do_blend_solid (fgcr, CAIRO_OPERATOR_SOURCE, alpha); - - cairo_destroy (bgcr); - cairo_destroy (fgcr); -} - -/* expects a STEP*STEP pixel rectangle */ -static void -do_blend (cairo_t *cr, cairo_operator_t op, cairo_bool_t alpha) -{ - cairo_surface_t *bg, *fg; - - create_patterns (cr, &bg, &fg, alpha); - - /* not using CAIRO_OPERATOR_SOURCE here, it triggers a librsvg bug */ - cairo_set_operator (cr, CAIRO_OPERATOR_OVER); - cairo_set_source_surface (cr, bg, 0, 0); - cairo_paint (cr); - - cairo_set_operator (cr, op); - cairo_set_source_surface (cr, fg, 0, 0); - cairo_paint (cr); - - cairo_surface_destroy (fg); - cairo_surface_destroy (bg); -} - -static void -do_blend_mask (cairo_t *cr, cairo_operator_t op, cairo_bool_t alpha) -{ - cairo_surface_t *bg, *fg; - - create_patterns (cr, &bg, &fg, alpha); - - /* not using CAIRO_OPERATOR_SOURCE here, it triggers a librsvg bug */ - cairo_set_operator (cr, CAIRO_OPERATOR_OVER); - cairo_set_source_surface (cr, bg, 0, 0); - cairo_paint (cr); - - cairo_set_operator (cr, op); - cairo_set_source_surface (cr, fg, 0, 0); - cairo_paint_with_alpha (cr, .5); - - cairo_surface_destroy (fg); - cairo_surface_destroy (bg); -} - -static cairo_test_status_t -draw (cairo_t *cr, cairo_bool_t alpha, - void (*blend)(cairo_t *, cairo_operator_t, cairo_bool_t)) -{ - size_t i = 0; - cairo_operator_t op; - - for (op = START_OPERATOR; op <= STOP_OPERATOR; op++, i++) { - cairo_save (cr); - cairo_translate (cr, - SIZE * (STEPS + 1) * (i % COUNT), - SIZE * (STEPS + 1) * (i / COUNT)); - blend (cr, op, alpha); - cairo_restore (cr); - } - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -draw_extended_blend (cairo_t *cr, int width, int height) -{ - return draw (cr, FALSE, do_blend); -} - -static cairo_test_status_t -draw_extended_blend_alpha (cairo_t *cr, int width, int height) -{ - return draw (cr, TRUE, do_blend); -} - -static cairo_test_status_t -draw_extended_blend_solid (cairo_t *cr, int width, int height) -{ - return draw (cr, FALSE, do_blend_solid); -} - -static cairo_test_status_t -draw_extended_blend_solid_alpha (cairo_t *cr, int width, int height) -{ - return draw (cr, TRUE, do_blend_solid); -} - -static cairo_test_status_t -draw_extended_blend_mask (cairo_t *cr, int width, int height) -{ - return draw (cr, FALSE, do_blend_mask); -} -static cairo_test_status_t -draw_extended_blend_alpha_mask (cairo_t *cr, int width, int height) -{ - return draw (cr, TRUE, do_blend_mask); -} - -CAIRO_TEST (extended_blend, - "Tests extended blend modes without alpha", - "operator", /* keywords */ - NULL, /* requirements */ - FULL_WIDTH * SIZE, FULL_HEIGHT * SIZE, - NULL, draw_extended_blend) - -CAIRO_TEST (extended_blend_alpha, - "Tests extended blend modes with alpha", - "operator", /* keywords */ - NULL, /* requirements */ - FULL_WIDTH * SIZE, FULL_HEIGHT * SIZE, - NULL, draw_extended_blend_alpha) - -CAIRO_TEST (extended_blend_mask, - "Tests extended blend modes with an alpha mask", - "operator,mask", /* keywords */ - NULL, /* requirements */ - FULL_WIDTH * SIZE, FULL_HEIGHT * SIZE, - NULL, draw_extended_blend_mask) -CAIRO_TEST (extended_blend_alpha_mask, - "Tests extended blend modes with an alpha mask", - "operator,mask", /* keywords */ - NULL, /* requirements */ - FULL_WIDTH * SIZE, FULL_HEIGHT * SIZE, - NULL, draw_extended_blend_alpha_mask) - - -CAIRO_TEST (extended_blend_solid, - "Tests extended blend modes on solid patterns without alpha", - "operator", /* keywords */ - NULL, /* requirements */ - FULL_WIDTH * SIZE, FULL_HEIGHT * SIZE, - NULL, draw_extended_blend_solid) - -CAIRO_TEST (extended_blend_solid_alpha, - "Tests extended blend modes on solid patterns with alpha", - "operator", /* keywords */ - NULL, /* requirements */ - FULL_WIDTH * SIZE, FULL_HEIGHT * SIZE, - NULL, draw_extended_blend_solid_alpha) diff --git a/test/fallback-resolution.c b/test/fallback-resolution.c deleted file mode 100644 index 306a570..0000000 --- a/test/fallback-resolution.c +++ /dev/null @@ -1,517 +0,0 @@ -/* - * Copyright © 2006 Red Hat, Inc. - * Copyright © 2008 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - * Chris Wilson - */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include -#include -#include - -#if CAIRO_HAS_PDF_SURFACE -#include -#endif - -#ifdef HAVE_UNISTD_H -#include -#include -#endif -#if HAVE_SYS_STAT_H -#include -#endif - -#include "cairo-test.h" -#include "buffer-diff.h" - -/* This test exists to test cairo_surface_set_fallback_resolution - * - * one more thing. - * if you can somehow incorporate cairo_show_page stuff in the - * test suite. such that fallback-resolution can actually be - * automated.. - * if we could get a callback on surface when that function is - * called, we could do cool stuff like making other backends - * draw a long strip of images, one for each page... - */ - -#define INCHES_TO_POINTS(in) ((in) * 72.0) -#define SIZE INCHES_TO_POINTS(2) - -/* cairo_set_tolerance() is not respected by the PS/PDF backends currently */ -#define SET_TOLERANCE 0 - -#define GENERATE_REFERENCE 0 - -static void -draw (cairo_t *cr, double width, double height) -{ - const char *text = "cairo"; - cairo_text_extents_t extents; - const double dash[2] = { 8, 16 }; - cairo_pattern_t *pattern; - - cairo_save (cr); - - cairo_new_path (cr); - - cairo_set_line_width (cr, .05 * SIZE / 2.0); - - cairo_arc (cr, SIZE / 2.0, SIZE / 2.0, - 0.875 * SIZE / 2.0, - 0, 2.0 * M_PI); - cairo_stroke (cr); - - /* use dashes to demonstrate bugs: - * https://bugs.freedesktop.org/show_bug.cgi?id=9189 - * https://bugs.freedesktop.org/show_bug.cgi?id=17223 - */ - cairo_save (cr); - cairo_set_dash (cr, dash, 2, 0); - cairo_arc (cr, SIZE / 2.0, SIZE / 2.0, - 0.75 * SIZE / 2.0, - 0, 2.0 * M_PI); - cairo_stroke (cr); - cairo_restore (cr); - - cairo_save (cr); - cairo_rectangle (cr, 0, 0, SIZE/2, SIZE); - cairo_clip (cr); - cairo_arc (cr, SIZE / 2.0, SIZE / 2.0, - 0.6 * SIZE / 2.0, - 0, 2.0 * M_PI); - cairo_fill (cr); - cairo_restore (cr); - - /* use a pattern to exercise bug: - * https://bugs.launchpad.net/inkscape/+bug/234546 - */ - cairo_save (cr); - cairo_rectangle (cr, SIZE/2, 0, SIZE/2, SIZE); - cairo_clip (cr); - pattern = cairo_pattern_create_linear (SIZE/2, 0, SIZE, 0); - cairo_pattern_add_color_stop_rgba (pattern, 0, 0, 0, 0, 1.); - cairo_pattern_add_color_stop_rgba (pattern, 1, 0, 0, 0, 0.); - cairo_set_source (cr, pattern); - cairo_pattern_destroy (pattern); - cairo_arc (cr, SIZE / 2.0, SIZE / 2.0, - 0.6 * SIZE / 2.0, - 0, 2.0 * M_PI); - cairo_fill (cr); - cairo_restore (cr); - - cairo_set_source_rgb (cr, 1, 1, 1); /* white */ - cairo_set_font_size (cr, .25 * SIZE / 2.0); - cairo_text_extents (cr, text, &extents); - cairo_move_to (cr, (SIZE-extents.width)/2.0-extents.x_bearing, - (SIZE-extents.height)/2.0-extents.y_bearing); - cairo_show_text (cr, text); - - cairo_restore (cr); -} - -static void -_xunlink (const cairo_test_context_t *ctx, const char *pathname) -{ - if (unlink (pathname) < 0 && errno != ENOENT) { - cairo_test_log (ctx, "Error: Cannot remove %s: %s\n", - pathname, strerror (errno)); - exit (1); - } -} - -static cairo_bool_t -check_result (cairo_test_context_t *ctx, - const cairo_boilerplate_target_t *target, - const char *test_name, - const char *base_name, - cairo_surface_t *surface) -{ - const char *format; - char *ref_name; - char *png_name; - char *diff_name; - cairo_surface_t *test_image, *ref_image, *diff_image; - buffer_diff_result_t result; - cairo_status_t status; - cairo_bool_t ret; - - /* XXX log target, OUTPUT, REFERENCE, DIFFERENCE for index.html */ - - if (target->finish_surface != NULL) { - status = target->finish_surface (surface); - if (status) { - cairo_test_log (ctx, "Error: Failed to finish surface: %s\n", - cairo_status_to_string (status)); - cairo_surface_destroy (surface); - return FALSE; - } - } - - xasprintf (&png_name, "%s.out.png", base_name); - xasprintf (&diff_name, "%s.diff.png", base_name); - - test_image = target->get_image_surface (surface, 0, SIZE, SIZE); - if (cairo_surface_status (test_image)) { - cairo_test_log (ctx, "Error: Failed to extract page: %s\n", - cairo_status_to_string (cairo_surface_status (test_image))); - cairo_surface_destroy (test_image); - free (png_name); - free (diff_name); - return FALSE; - } - - _xunlink (ctx, png_name); - status = cairo_surface_write_to_png (test_image, png_name); - if (status) { - cairo_test_log (ctx, "Error: Failed to write output image: %s\n", - cairo_status_to_string (status)); - cairo_surface_destroy (test_image); - free (png_name); - free (diff_name); - return FALSE; - } - - format = cairo_boilerplate_content_name (target->content); - ref_name = cairo_test_reference_filename (ctx, - base_name, - test_name, - target->name, - target->basename, - format, - CAIRO_TEST_REF_SUFFIX, - CAIRO_TEST_PNG_EXTENSION); - if (ref_name == NULL) { - cairo_test_log (ctx, "Error: Cannot find reference image for %s\n", - base_name); - cairo_surface_destroy (test_image); - free (png_name); - free (diff_name); - return FALSE; - } - - - ref_image = cairo_test_get_reference_image (ctx, ref_name, - target->content == CAIRO_TEST_CONTENT_COLOR_ALPHA_FLATTENED); - if (cairo_surface_status (ref_image)) { - cairo_test_log (ctx, "Error: Cannot open reference image for %s: %s\n", - ref_name, - cairo_status_to_string (cairo_surface_status (ref_image))); - cairo_surface_destroy (ref_image); - cairo_surface_destroy (test_image); - free (png_name); - free (diff_name); - free (ref_name); - return FALSE; - } - - diff_image = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, - SIZE, SIZE); - - ret = TRUE; - status = image_diff (ctx, - test_image, ref_image, diff_image, - &result); - _xunlink (ctx, diff_name); - if (status) { - cairo_test_log (ctx, "Error: Failed to compare images: %s\n", - cairo_status_to_string (status)); - ret = FALSE; - } else if (image_diff_is_failure (&result, target->error_tolerance)) - { - ret = FALSE; - - status = cairo_surface_write_to_png (diff_image, diff_name); - if (status) { - cairo_test_log (ctx, "Error: Failed to write differences image: %s\n", - cairo_status_to_string (status)); - } - } - - cairo_surface_destroy (test_image); - cairo_surface_destroy (diff_image); - free (png_name); - free (diff_name); - free (ref_name); - - return ret; -} - -#if GENERATE_REFERENCE -static void -generate_reference (double ppi_x, double ppi_y, const char *filename) -{ - cairo_surface_t *surface, *target; - cairo_t *cr; - cairo_status_t status; - - surface = cairo_image_surface_create (CAIRO_FORMAT_RGB24, - SIZE*ppi_x/72, SIZE*ppi_y/72); - cr = cairo_create (surface); - cairo_surface_destroy (surface); - - /* As we wish to mimic a PDF surface, copy across the default font options - * from the PDF backend. - */ - { - cairo_surface_t *pdf; - cairo_font_options_t *options; - - options = cairo_font_options_create (); - -#if CAIRO_HAS_PDF_SURFACE - pdf = cairo_pdf_surface_create ("tmp.pdf", 1, 1); - cairo_surface_get_font_options (pdf, options); - cairo_surface_destroy (pdf); -#endif - - cairo_set_font_options (cr, options); - cairo_font_options_destroy (options); - } - -#if SET_TOLERANCE - cairo_set_tolerance (cr, 3.0); -#endif - - cairo_save (cr); { - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - } cairo_restore (cr); - - cairo_scale (cr, ppi_x/72., ppi_y/72.); - draw (cr, SIZE, SIZE); - - surface = cairo_surface_reference (cairo_get_target (cr)); - cairo_destroy (cr); - - target = cairo_image_surface_create (CAIRO_FORMAT_RGB24, SIZE, SIZE); - cr = cairo_create (target); - cairo_scale (cr, 72./ppi_x, 72./ppi_y); - cairo_set_source_surface (cr, surface, 0, 0); - cairo_paint (cr); - - status = cairo_surface_write_to_png (cairo_get_target (cr), filename); - cairo_destroy (cr); - - if (status) { - fprintf (stderr, "Failed to generate reference image '%s': %s\n", - filename, cairo_status_to_string (status)); - exit (1); - } -} -#endif - -/* TODO: Split each ppi case out to its own CAIRO_TEST() test case */ -static cairo_test_status_t -preamble (cairo_test_context_t *ctx) -{ - cairo_t *cr; - cairo_test_status_t ret = CAIRO_TEST_UNTESTED; - struct { - double x, y; - } ppi[] = { - { 576, 576 }, - { 576, 72 }, - - { 288, 288 }, - { 288, 72 }, - - { 144, 144 }, - { 144, 72 }, - - { 72, 576 }, - { 72, 288 }, - { 72, 144 }, - { 72, 72 }, - }; - unsigned int i; - int n, num_ppi; - const char *path = cairo_test_mkdir (CAIRO_TEST_OUTPUT_DIR) ? CAIRO_TEST_OUTPUT_DIR : "."; - - num_ppi = ARRAY_LENGTH (ppi); - -#if GENERATE_REFERENCE - for (n = 0; n < num_ppi; n++) { - char *ref_name; - xasprintf (&ref_name, "reference/fallback-resolution.ppi%gx%g.ref.png", - ppi[n].x, ppi[n].y); - generate_reference (ppi[n].x, ppi[n].y, ref_name); - free (ref_name); - } -#endif - - for (i = 0; i < ctx->num_targets; i++) { - const cairo_boilerplate_target_t *target = ctx->targets_to_test[i]; - cairo_surface_t *surface = NULL; - char *base_name; - void *closure; - const char *format; - cairo_status_t status; - - if (! target->is_vector) - continue; - - if (! cairo_test_is_target_enabled (ctx, target->name)) - continue; - - format = cairo_boilerplate_content_name (target->content); - xasprintf (&base_name, "%s/fallback-resolution.%s.%s", - path, target->name, - format); - - surface = (target->create_surface) (base_name, - target->content, - SIZE, SIZE, - SIZE, SIZE, - CAIRO_BOILERPLATE_MODE_TEST, - &closure); - - if (surface == NULL) { - free (base_name); - continue; - } - - if (ret == CAIRO_TEST_UNTESTED) - ret = CAIRO_TEST_SUCCESS; - - cairo_surface_destroy (surface); - if (target->cleanup) - target->cleanup (closure); - free (base_name); - - /* we need to recreate the surface for each resolution as we include - * SVG in testing which does not support the paginated interface. - */ - for (n = 0; n < num_ppi; n++) { - char *test_name; - cairo_bool_t pass; - - xasprintf (&test_name, "fallback-resolution.ppi%gx%g", - ppi[n].x, ppi[n].y); - xasprintf (&base_name, "%s/%s.%s.%s", - path, test_name, - target->name, - format); - - surface = (target->create_surface) (base_name, - target->content, - SIZE + 25, SIZE + 25, - SIZE + 25, SIZE + 25, - CAIRO_BOILERPLATE_MODE_TEST, - &closure); - if (surface == NULL || cairo_surface_status (surface)) { - cairo_test_log (ctx, "Failed to generate surface: %s.%s\n", - target->name, - format); - free (base_name); - free (test_name); - ret = CAIRO_TEST_FAILURE; - continue; - } - - cairo_test_log (ctx, - "Testing fallback-resolution %gx%g with %s target\n", - ppi[n].x, ppi[n].y, target->name); - printf ("%s:\t", base_name); - fflush (stdout); - - if (target->force_fallbacks != NULL) - target->force_fallbacks (surface, ppi[n].x, ppi[n].y); - cr = cairo_create (surface); -#if SET_TOLERANCE - cairo_set_tolerance (cr, 3.0); -#endif - - cairo_surface_set_device_offset (surface, 25, 25); - - cairo_save (cr); { - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - } cairo_restore (cr); - - /* First draw the top half in a conventional way. */ - cairo_save (cr); { - cairo_rectangle (cr, 0, 0, SIZE, SIZE / 2.0); - cairo_clip (cr); - - draw (cr, SIZE, SIZE); - } cairo_restore (cr); - - /* Then draw the bottom half in a separate group, - * (exposing a bug in 1.6.4 with the group not being - * rendered with the correct fallback resolution). */ - cairo_save (cr); { - cairo_rectangle (cr, 0, SIZE / 2.0, SIZE, SIZE / 2.0); - cairo_clip (cr); - - cairo_push_group (cr); { - draw (cr, SIZE, SIZE); - } cairo_pop_group_to_source (cr); - - cairo_paint (cr); - } cairo_restore (cr); - - status = cairo_status (cr); - cairo_destroy (cr); - - pass = FALSE; - if (status) { - cairo_test_log (ctx, "Error: Failed to create target surface: %s\n", - cairo_status_to_string (status)); - ret = CAIRO_TEST_FAILURE; - } else { - /* extract the image and compare it to our reference */ - if (! check_result (ctx, target, test_name, base_name, surface)) - ret = CAIRO_TEST_FAILURE; - else - pass = TRUE; - } - cairo_surface_destroy (surface); - if (target->cleanup) - target->cleanup (closure); - - free (base_name); - free (test_name); - - if (pass) { - printf ("PASS\n"); - } else { - printf ("FAIL\n"); - } - fflush (stdout); - } - } - - return ret; -} - -CAIRO_TEST (fallback_resolution, - "Check handling of fallback resolutions", - "fallback", /* keywords */ - NULL, /* requirements */ - 0, 0, - preamble, NULL) diff --git a/test/fallback.c b/test/fallback.c deleted file mode 100644 index a3cfc40..0000000 --- a/test/fallback.c +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright © 2012 Adrian Johnson - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Adrian Johnson - */ - -#include "cairo-test.h" - -#define SIZE 40 -#define WIDTH (7*SIZE) -#define HEIGHT (5*SIZE) - -#define FALLBACK_RES_X 300 -#define FALLBACK_RES_Y 150 - -static void -rectangles (cairo_t *cr) -{ - cairo_save (cr); - - cairo_rotate (cr, M_PI/8); - cairo_translate (cr, 2*SIZE, SIZE/16); - cairo_scale (cr, 1.5, 1.5); - - cairo_rectangle (cr, 0, 0, SIZE, SIZE); - cairo_set_source_rgba (cr, 1, 0, 0, 0.5); - cairo_fill (cr); - - /* Select an operator not supported by PDF/PS/SVG to trigger fallback */ - cairo_set_operator (cr, CAIRO_OPERATOR_SATURATE); - - cairo_rectangle (cr, SIZE/2, SIZE/2, SIZE, SIZE); - cairo_set_source_rgba (cr, 0, 1, 0, 0.5); - cairo_fill (cr); - - cairo_restore (cr); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_set_fallback_resolution (cairo_get_target (cr), FALLBACK_RES_X, FALLBACK_RES_Y); - - rectangles (cr); - cairo_translate (cr, 3*SIZE, 0); - cairo_push_group (cr); - rectangles (cr); - cairo_pop_group_to_source (cr); - cairo_paint (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (fallback, - "Check that fallback images are correct when fallback resolution is not 72ppi", - "fallback", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/fill-alpha-pattern.c b/test/fill-alpha-pattern.c deleted file mode 100644 index 3698779..0000000 --- a/test/fill-alpha-pattern.c +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright © 2008 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -#define SIZE 60 /* needs to be big to check large area effects (dithering) */ -#define PAD 2 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - const double alpha = 1./3; - cairo_pattern_t *pattern; - int n; - - /* draw a simple pattern behind */ - pattern = cairo_pattern_create_linear (0, 0, width, height); - cairo_pattern_add_color_stop_rgb (pattern, 0, 1, 1, 0); - cairo_pattern_add_color_stop_rgb (pattern, 1, 1, 1, 1); - cairo_set_source (cr, pattern); - cairo_pattern_destroy (pattern); - cairo_paint (cr); - - /* square */ - cairo_rectangle (cr, PAD, PAD, SIZE, SIZE); - cairo_set_source_rgba (cr, 1, 0, 0, alpha); - cairo_fill (cr); - - /* circle */ - cairo_translate (cr, SIZE + 2 * PAD, 0); - cairo_arc (cr, PAD + SIZE / 2., PAD + SIZE / 2., SIZE / 2., 0, 2 * M_PI); - cairo_set_source_rgba (cr, 0, 1, 0, alpha); - cairo_fill (cr); - - /* triangle */ - cairo_translate (cr, 0, SIZE + 2 * PAD); - cairo_move_to (cr, PAD + SIZE / 2, PAD); - cairo_line_to (cr, PAD + SIZE, PAD + SIZE); - cairo_line_to (cr, PAD, PAD + SIZE); - cairo_set_source_rgba (cr, 0, 0, 1, alpha); - cairo_fill (cr); - - /* star */ - cairo_translate (cr, -(SIZE + 2 * PAD) + SIZE/2., SIZE/2.); - for (n = 0; n < 5; n++) { - cairo_line_to (cr, - SIZE/2 * cos (2*n * 2*M_PI / 10), - SIZE/2 * sin (2*n * 2*M_PI / 10)); - - cairo_line_to (cr, - SIZE/4 * cos ((2*n+1)*2*M_PI / 10), - SIZE/4 * sin ((2*n+1)*2*M_PI / 10)); - } - cairo_set_source_rgba (cr, 0, 0, 0, alpha); - cairo_fill (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (fill_alpha_pattern, - "Tests using set_rgba();fill() over a linear gradient", - "fill, alpha", /* keywords */ - NULL, /* requirements */ - 2*SIZE + 4*PAD, 2*SIZE + 4*PAD, - NULL, draw) diff --git a/test/fill-alpha.c b/test/fill-alpha.c deleted file mode 100644 index 6c2948d..0000000 --- a/test/fill-alpha.c +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright © 2008 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -#define SIZE 60 /* needs to be big to check large area effects (dithering) */ -#define PAD 2 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - const double alpha = 1./3; - int n; - - /* flatten to white */ - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - /* square */ - cairo_rectangle (cr, PAD, PAD, SIZE, SIZE); - cairo_set_source_rgba (cr, 1, 0, 0, alpha); - cairo_fill (cr); - - /* circle */ - cairo_translate (cr, SIZE + 2 * PAD, 0); - cairo_arc (cr, PAD + SIZE / 2., PAD + SIZE / 2., SIZE / 2., 0, 2 * M_PI); - cairo_set_source_rgba (cr, 0, 1, 0, alpha); - cairo_fill (cr); - - /* triangle */ - cairo_translate (cr, 0, SIZE + 2 * PAD); - cairo_move_to (cr, PAD + SIZE / 2, PAD); - cairo_line_to (cr, PAD + SIZE, PAD + SIZE); - cairo_line_to (cr, PAD, PAD + SIZE); - cairo_set_source_rgba (cr, 0, 0, 1, alpha); - cairo_fill (cr); - - /* star */ - cairo_translate (cr, -(SIZE + 2 * PAD) + SIZE/2., SIZE/2.); - for (n = 0; n < 5; n++) { - cairo_line_to (cr, - SIZE/2 * cos (2*n * 2*M_PI / 10), - SIZE/2 * sin (2*n * 2*M_PI / 10)); - - cairo_line_to (cr, - SIZE/4 * cos ((2*n+1)*2*M_PI / 10), - SIZE/4 * sin ((2*n+1)*2*M_PI / 10)); - } - cairo_set_source_rgba (cr, 0, 0, 0, alpha); - cairo_fill (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (fill_alpha, - "Tests using set_rgba();fill()", - "fill, alpha", /* keywords */ - NULL, /* requirements */ - 2*SIZE + 4*PAD, 2*SIZE + 4*PAD, - NULL, draw) diff --git a/test/fill-and-stroke-alpha-add.c b/test/fill-and-stroke-alpha-add.c deleted file mode 100644 index 55cd4c6..0000000 --- a/test/fill-and-stroke-alpha-add.c +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * Copyright © 2006 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" - -#define PAD 2 -#define SIZE 10 - -typedef void (*path_func_t) (cairo_t *cr); - -static void -rectangle (cairo_t *cr) -{ - cairo_rectangle (cr, PAD, PAD, SIZE, SIZE); -} - -static void -circle (cairo_t *cr) -{ - cairo_arc (cr, - PAD + SIZE / 2, PAD + SIZE / 2, - SIZE / 2, - 0, 2 * M_PI); -} - -/* Given a path-generating function and two possibly translucent - * patterns, fill and stroke the path with the patterns (to an - * offscreen group), then blend the result into the destination. - */ -static void -fill_and_stroke (cairo_t *cr, - path_func_t path_func, - cairo_pattern_t *fill_pattern, - cairo_pattern_t *stroke_pattern) -{ - cairo_push_group (cr); - { - (path_func) (cr); - cairo_set_source (cr, fill_pattern); - cairo_fill_preserve (cr); - - /* Use DEST_OUT to subtract stroke from fill. */ - cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); - cairo_set_operator (cr, CAIRO_OPERATOR_DEST_OUT); - cairo_stroke_preserve (cr); - - /* Then use ADD to draw the stroke without a seam. */ - cairo_set_source (cr, stroke_pattern); - cairo_set_operator (cr, CAIRO_OPERATOR_ADD); - cairo_stroke (cr); - } - cairo_pop_group_to_source (cr); - cairo_paint (cr); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_pattern_t *blue; - cairo_pattern_t *red; - - blue = cairo_pattern_create_rgba (0.0, 0.0, 1.0, 0.8); - red = cairo_pattern_create_rgba (1.0, 0.0, 0.0, 0.2); - - cairo_test_paint_checkered (cr); - - fill_and_stroke (cr, rectangle, blue, red); - - cairo_translate (cr, SIZE + 2 * PAD, 0); - - fill_and_stroke (cr, circle, red, blue); - - cairo_pattern_destroy (blue); - cairo_pattern_destroy (red); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (fill_and_stroke_alpha_add, - "Use a group to fill/stroke a path (each with different alpha) using DEST_OUT and ADD to combine", - "fill-and-stroke, fill, stroke", /* keywords */ - NULL, /* requirements */ - 2 * SIZE + 4 * PAD, SIZE + 2 * PAD, - NULL, draw) diff --git a/test/fill-and-stroke-alpha.c b/test/fill-and-stroke-alpha.c deleted file mode 100644 index c6d7c00..0000000 --- a/test/fill-and-stroke-alpha.c +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * Copyright © 2006 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" - -#define PAD 2 -#define SIZE 10 - -typedef void (*path_func_t) (cairo_t *cr); - -static void -rectangle (cairo_t *cr) -{ - cairo_rectangle (cr, PAD, PAD, SIZE, SIZE); -} - -static void -circle (cairo_t *cr) -{ - cairo_arc (cr, - PAD + SIZE / 2, PAD + SIZE / 2, - SIZE / 2, - 0, 2 * M_PI); -} - -/* Given a path-generating function and two opaque patterns, fill and - * stroke the path with the patterns (to an offscreen group), then - * blend the result into the destination with the given alpha - * value. - */ -static void -fill_and_stroke_alpha (cairo_t *cr, - path_func_t path_func, - cairo_pattern_t *fill_pattern, - cairo_pattern_t *stroke_pattern, - double alpha) -{ - cairo_push_group (cr); - { - (path_func) (cr); - cairo_set_source (cr, fill_pattern); - cairo_fill_preserve (cr); - cairo_set_source (cr, stroke_pattern); - cairo_stroke (cr); - } - cairo_pop_group_to_source (cr); - cairo_paint_with_alpha (cr, alpha); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_pattern_t *blue; - cairo_pattern_t *red; - - blue = cairo_pattern_create_rgb (0.0, 0.0, 1.0); - red = cairo_pattern_create_rgb (1.0, 0.0, 0.0); - - cairo_test_paint_checkered (cr); - - fill_and_stroke_alpha (cr, rectangle, blue, red, 0.5); - - cairo_translate (cr, SIZE + 2 * PAD, 0); - - fill_and_stroke_alpha (cr, circle, red, blue, 0.5); - - cairo_pattern_destroy (blue); - cairo_pattern_destroy (red); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (fill_and_stroke_alpha, - "Use a group to fill/stroke a path then blend the result with alpha onto the destination", - "fill-and-stroke, fill, stroke", /* keywords */ - NULL, /* requirements */ - 2 * SIZE + 4 * PAD, SIZE + 2 * PAD, - NULL, draw) diff --git a/test/fill-and-stroke.c b/test/fill-and-stroke.c deleted file mode 100644 index c983c32..0000000 --- a/test/fill-and-stroke.c +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" - -#define PAD 2 -#define SIZE 10 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_rectangle (cr, PAD, PAD, SIZE, SIZE); - cairo_set_source_rgb (cr, 0, 0, 1); - cairo_fill_preserve (cr); - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_stroke (cr); - - cairo_translate (cr, SIZE + 2 * PAD, 0); - - cairo_arc (cr, - PAD + SIZE / 2, PAD + SIZE / 2, - SIZE / 2, - 0, 2 * M_PI); - cairo_fill_preserve (cr); - cairo_set_source_rgb (cr, 0, 0, 1); - cairo_stroke (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (fill_and_stroke, - "Tests using cairo_fill_preserve/cairo_stroke to fill/stroke the same path", - "fill-and-stroke, fill, stroke", /* keywords */ - NULL, /* requirements */ - 2 * SIZE + 4 * PAD, SIZE + 2 * PAD, - NULL, draw) diff --git a/test/fill-degenerate-sort-order.c b/test/fill-degenerate-sort-order.c deleted file mode 100644 index d934810..0000000 --- a/test/fill-degenerate-sort-order.c +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright © 2006 M Joonas Pihlaja - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: M Joonas Pihlaja - */ - -/* Bug history - * - * 2006-12-05 M Joonas Pihlaja - * - * There's currently a regression bug in the tessellation code from - * switching to the "new tessellator". The bug is caused by - * confusion in the comparator used to order events when there are - * degenerate edges. - */ - -#include "cairo-test.h" - -/* Derived from zrusin's "another" polygon in the performance suite. */ -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_set_source_rgb (cr, 1, 0, 0); - - /* The polygon uses (43,103) as its "base point". Closed - * subpaths are simulated by going from the base point to the - * subpath's first point, doing the subpath, and returning to the - * base point. The moving to and from the base point causes - * degenerate edges which shouldn't result in anything visible. */ - cairo_move_to (cr, 43, 103); - - /* First subpath. */ - cairo_line_to (cr, 91, 101); - cairo_line_to (cr, 0, 112); - cairo_line_to (cr, 60, 0); - cairo_line_to (cr, 91, 101); - - cairo_line_to (cr, 43, 103); - - /* Second subpath. */ - cairo_line_to (cr, 176, 110); - cairo_line_to (cr, 116, 100); - cairo_line_to (cr, 176, 0); - cairo_line_to (cr, 176, 110); - - cairo_close_path (cr); - cairo_fill (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (fill_degenerate_sort_order, - "Tests the tessellator's event comparator with degenerate input", - "degenerate, fill", /* keywords */ - NULL, /* requirements */ - 190, 120, - NULL, draw) diff --git a/test/fill-disjoint.c b/test/fill-disjoint.c deleted file mode 100644 index ea2c14f..0000000 --- a/test/fill-disjoint.c +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright © 2011 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -/* The goal is exercise a bug that existed in the xlib backend, where - * it assumed the rectangles generated by rectangular tessallator had - * any sorting guarantees. - */ - -#define WIDTH 300 -#define HEIGHT 300 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - int x; - - /* black background */ - cairo_set_source_rgb (cr, 0, 0, 0); - cairo_paint (cr); - - /* white rectangles */ - cairo_set_source_rgb (cr, 1, 1, 1); - - /* fill with a set of rectangles that the rectangular tessellator - * will not emit sorted. */ - for (x = 0; x < WIDTH - 10; x += 15) - cairo_rectangle (cr, x, x, 10, HEIGHT - 2*x); - cairo_fill (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (fill_disjoint, - "Tests filling unsorted rectangles.", - "fill", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/fill-empty.c b/test/fill-empty.c deleted file mode 100644 index 0594e57..0000000 --- a/test/fill-empty.c +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright © 2009 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -#define SIZE 10 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_set_source_rgb (cr, 0, 0, 1); - cairo_paint (cr); - - cairo_set_source_rgb (cr, 1, 0, 0); - - /* first drawn an ordinary empty path */ - cairo_save (cr); - cairo_rectangle (cr, 0, 0, SIZE, SIZE/2); - cairo_clip (cr); - cairo_fill (cr); - cairo_restore (cr); - - /* and then an unbounded empty path */ - cairo_save (cr); - cairo_rectangle (cr, 0, SIZE/2, SIZE, SIZE/2); - cairo_clip (cr); - cairo_set_operator (cr, CAIRO_OPERATOR_DEST_IN); - cairo_fill (cr); - cairo_restore (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (fill_empty, - "Test filling with an empty path", - "fill", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, draw) - diff --git a/test/fill-image.c b/test/fill-image.c deleted file mode 100644 index 24ee031..0000000 --- a/test/fill-image.c +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright © 2006 Mozilla Corporation - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Mozilla Corporation not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Mozilla Corporation makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * MOZILLA CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL MOZILLA CORPORATION BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Vladimir Vukicevic - */ - -#include "cairo-test.h" - -#define PAD 10 -#define SIZE 100 -#define IMAGE_SIZE (SIZE-PAD*2) -#define LINE_WIDTH 10 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_t *image; - cairo_t *cr_image; - - cairo_set_source_rgb (cr, 0, 0, 0); - cairo_paint (cr); - - image = cairo_image_surface_create (CAIRO_FORMAT_RGB24, - IMAGE_SIZE, IMAGE_SIZE); - cr_image = cairo_create (image); - cairo_surface_destroy (image); - - /* Create the image */ - cairo_set_source_rgb (cr_image, 0, 0, 0); - cairo_paint (cr_image); - - cairo_set_source_rgb (cr_image, 0, 1, 0); - cairo_new_sub_path (cr_image); - cairo_arc (cr_image, IMAGE_SIZE/2, IMAGE_SIZE/2, IMAGE_SIZE/2 - LINE_WIDTH, 0, M_PI * 2.0); - cairo_close_path (cr_image); - cairo_new_sub_path (cr_image); - cairo_arc_negative (cr_image, IMAGE_SIZE/2, IMAGE_SIZE/2, IMAGE_SIZE/2, 0, -M_PI * 2.0); - cairo_close_path (cr_image); - cairo_fill (cr_image); - - /* Now stroke^Wfill with it */ - cairo_translate (cr, PAD, PAD); - - cairo_set_source_surface (cr, cairo_get_target (cr_image), 0, 0); - cairo_destroy (cr_image); - - cairo_new_sub_path (cr); - cairo_arc (cr, IMAGE_SIZE/2, IMAGE_SIZE/2, IMAGE_SIZE/2 - LINE_WIDTH, 0, M_PI * 2.0); - cairo_close_path (cr); - cairo_new_sub_path (cr); - cairo_arc_negative (cr, IMAGE_SIZE/2, IMAGE_SIZE/2, IMAGE_SIZE/2, 0, -M_PI * 2.0); - cairo_close_path (cr); - - cairo_fill (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (fill_image, - "Test filling with an image source, with a non-identity CTM", - "fill, image, transform", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, draw) diff --git a/test/fill-missed-stop.c b/test/fill-missed-stop.c deleted file mode 100644 index 5589337..0000000 --- a/test/fill-missed-stop.c +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright © 2006 M Joonas Pihlaja - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: M Joonas Pihlaja - */ - -/* Bug history - * - * 2006-12-05 M Joonas Pihlaja - * - * The tessellator has a regression where a trapezoid may continue - * below the end of a polygon edge (i.e. the bottom of the trapezoid - * is miscomputed.) This can only happen if the right edge of a - * trapezoid stops earlier than the left edge and there is no start - * event at the end point of the right edge. - */ - -#include "cairo-test.h" - -#define SIZE 50 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_set_source_rgb (cr, 1, 0, 0); - - cairo_translate (cr, 1, 1); - - /* What it should look like, with # marking the filled areas: - * - * |\ |\ - * |#\ |#\ - * |##\__|##\ - * \#| - * \| - * - * What it looke like with the bug, when the rightmost edge's end - * is missed: - * - * |\ |\ - * |#\ |#\ - * |##\__|##\ - * \#####| - * \####| - */ - - cairo_move_to (cr, 0, 0); - cairo_line_to (cr, SIZE/2, SIZE); - cairo_line_to (cr, SIZE/2, 0); - cairo_line_to (cr, SIZE, SIZE/2); - cairo_line_to (cr, 0, SIZE/2); - cairo_close_path (cr); - cairo_fill (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (fill_missed_stop, - "Tests that the tessellator doesn't miss stop events when generating trapezoids", - "fill", /* keywords */ - NULL, /* requirements */ - SIZE+3, SIZE+3, - NULL, draw) diff --git a/test/fill-rule.c b/test/fill-rule.c deleted file mode 100644 index 66f19b7..0000000 --- a/test/fill-rule.c +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Copyright © 2004 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - */ - -/* Bug history - * - * 2004-10-27 Carl Worth - * - * There's currently a regression bug in the tessellation code. This - * causes each of these simple star shapes to be filled incorrectly. - * - * It looks like right now we can get this test to pass by doing: - * - * cvs update -r 1.16 src/cairo_traps.c - * - * But we don't want to revert that change permanently since it - * really does correct some bugs. It must be that the old version of - * the code is masking some other bugs in the tessellation code. My - * current plan is to back this revision up for the next snapshot, - * but not to list the test as an expected failure since I'm - * planning on doing the new tessellator which should fix this - * problem. - * - * 2005-01-11 Carl Worth - * - * Keith committed some fixes that fix the original size-20 - * star_path: - * - * * src/cairo_wideint.c: (_cairo_int32x32_64_mul), - * (_cairo_int64x64_128_mul): - * * src/cairo_wideint.h: - * int32x32_64_mul and int64x64_128_mul are different from their - * unsigned compatriots - * - * 2005-01-12 Carl Worth - * - * Going back to the SVG test suite, however, the original star - * shape is still broken. Adding both shapes now as little_star_path - * and big_star_path. - * - */ - -#include "cairo-test.h" - -#define LITTLE_STAR_SIZE 20 -#define BIG_STAR_SIZE 80 - -/* The SVG start trimmed down, but still showing the bug (originally) */ -static void -little_star_path (cairo_t *cr) -{ - cairo_move_to (cr, 10, 0); - cairo_rel_line_to (cr, 6, 20); - cairo_rel_line_to (cr, -16, -12); - cairo_rel_line_to (cr, 20, 0); - cairo_rel_line_to (cr, -16, 12); -} - -/* The star shape from the SVG test suite. This was is still buggy even after - we got little_star_path working. */ -static void -big_star_path (cairo_t *cr) -{ - cairo_move_to (cr, 40, 0); - cairo_rel_line_to (cr, 25, 80); - cairo_rel_line_to (cr, -65, -50); - cairo_rel_line_to (cr, 80, 0); - cairo_rel_line_to (cr, -65, 50); - cairo_close_path (cr); -} - -/* Fill the same path twice, once with each fill rule */ -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_set_source_rgb (cr, 1, 0, 0); - - cairo_translate (cr, 1, 1); - little_star_path (cr); - cairo_set_fill_rule (cr, CAIRO_FILL_RULE_WINDING); - cairo_fill (cr); - - cairo_translate (cr, LITTLE_STAR_SIZE + 1, 0); - little_star_path (cr); - cairo_set_fill_rule (cr, CAIRO_FILL_RULE_EVEN_ODD); - cairo_fill (cr); - - cairo_translate (cr, -(LITTLE_STAR_SIZE + 1), LITTLE_STAR_SIZE + 1); - big_star_path (cr); - cairo_set_fill_rule (cr, CAIRO_FILL_RULE_WINDING); - cairo_fill (cr); - - cairo_translate (cr, BIG_STAR_SIZE + 1, 0); - big_star_path (cr); - cairo_set_fill_rule (cr, CAIRO_FILL_RULE_EVEN_ODD); - cairo_fill (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (fill_rule, - "Tests cairo_set_fill_rule with some star shapes", - "fill, path", /* keywords */ - NULL, /* requirements */ - BIG_STAR_SIZE * 2 + 3, BIG_STAR_SIZE + LITTLE_STAR_SIZE + 3, - NULL, draw) diff --git a/test/filter-bilinear-extents.c b/test/filter-bilinear-extents.c deleted file mode 100644 index 79d36f6..0000000 --- a/test/filter-bilinear-extents.c +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright © 2008 Red Hat, Inc. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Authors: Carl D. Worth - * Owen Taylor - */ - -#include "cairo-test.h" - -/* This test exercises code that computes the extents of a surface - * pattern with CAIRO_FILTER_BILINEAR, (where the filtering - * effectively increases the extents of the pattern). - * - * The original bug was reported by Owen Taylor here: - * - * bad clipping with EXTEND_NONE - * http://bugs.freedesktop.org/show_bug.cgi?id=15349 - */ - -#define SCALE 10 -#define PAD 3 -#define WIDTH (PAD + 3 * SCALE + PAD) -#define HEIGHT WIDTH - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_t *image; - cairo_t *cr2; - - image = cairo_image_surface_create (CAIRO_FORMAT_RGB24, 2, 2); - - /* Fill with an opaque background to avoid a separate rgb24 ref image */ - cairo_set_source_rgb (cr, 0, 0, 0); - cairo_paint (cr); - - /* First check handling of pattern extents > surface extents */ - cairo_save (cr); - cairo_scale (cr, width/2., height/2.); - - /* Create a solid black source to merge with the background */ - cr2 = cairo_create (image); - cairo_set_source_rgb (cr2, 0, 0 ,0); - cairo_paint (cr2); - cairo_set_source_surface (cr, cairo_get_target (cr2), 0, 0); - cairo_destroy (cr2); - cairo_pattern_set_filter (cairo_get_source (cr), CAIRO_FILTER_BILINEAR); - cairo_paint (cr); - cairo_restore (cr); - - /* Then scale to smaller so we can see the full bilinear extents */ - cairo_save (cr); - cairo_translate (cr, PAD, PAD); - cairo_scale (cr, SCALE, SCALE); - cairo_translate (cr, 0.5, 0.5); - - /* Create a 2x2 blue+red checkerboard source */ - cr2 = cairo_create (image); - cairo_set_source_rgb (cr2, 1, 0 ,0); /* red */ - cairo_paint (cr2); - cairo_set_source_rgb (cr2, 0, 0, 1); /* blue */ - cairo_rectangle (cr2, 0, 1, 1, 1); - cairo_rectangle (cr2, 1, 0, 1, 1); - cairo_fill (cr2); - cairo_set_source_surface (cr, cairo_get_target (cr2), 0, 0); - cairo_destroy (cr2); - - cairo_pattern_set_filter (cairo_get_source (cr), CAIRO_FILTER_BILINEAR); - cairo_paint (cr); - cairo_restore (cr); - - cairo_surface_destroy (image); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (filter_bilinear_extents, - "Test that pattern extents are properly computed for CAIRO_FILTER_BILINEAR", - "extents", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/filter-nearest-offset.c b/test/filter-nearest-offset.c deleted file mode 100644 index 4df6097..0000000 --- a/test/filter-nearest-offset.c +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" - -#define STAMP_WIDTH 4 -#define STAMP_HEIGHT 4 -#define PAD 1 - -#define STEPS 10 - -#define IMAGE_WIDTH (PAD + STEPS * (STAMP_WIDTH + PAD) + PAD) -#define IMAGE_HEIGHT (PAD + STEPS * (STAMP_HEIGHT + PAD) + PAD) - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_t *surface; - uint32_t data[STAMP_WIDTH * STAMP_HEIGHT] = { - 0xffffffff, 0xffffffff, 0xffff0000, 0xffff0000, - 0xffffffff, 0xffffffff, 0xffff0000, 0xffff0000, - - 0xff00ff00, 0xff00ff00, 0xff0000ff, 0xff0000ff, - 0xff00ff00, 0xff00ff00, 0xff0000ff, 0xff0000ff - }; - int i, j; - - /* fill with off-white to avoid a separate rgb24 ref image */ - cairo_save (cr); - cairo_set_source_rgb (cr, .7, .7, .7); - cairo_paint (cr); - cairo_restore (cr); - - /* Draw reference lines where the jump should be. */ - cairo_move_to (cr, PAD + STEPS / 2 * (STAMP_WIDTH + PAD), 0); - cairo_rel_line_to (cr, 0, IMAGE_HEIGHT); - cairo_move_to (cr, 0, PAD + STEPS / 2 * (STAMP_HEIGHT + PAD)); - cairo_rel_line_to (cr, IMAGE_WIDTH, 0); - cairo_set_line_width (cr, 2.0); - cairo_stroke (cr); - - surface = cairo_image_surface_create_for_data ((unsigned char *) data, - CAIRO_FORMAT_RGB24, - STAMP_WIDTH, - STAMP_HEIGHT, - STAMP_WIDTH * 4); - - for (j=0; j < STEPS; j++) { - double j_step; - - for (i=0; i < STEPS; i++) { - double i_step; - -#define GENERATE_REFERENCE_IMAGE 0 -#if GENERATE_REFERENCE_IMAGE - i_step = i >= STEPS / 2 ? 1 : 0; - j_step = j >= STEPS / 2 ? 1 : 0; -#else - i_step = i * 1.0 / STEPS; - j_step = j * 1.0 / STEPS; -#endif - - cairo_save (cr); - - cairo_set_source_surface (cr, surface, - PAD + i * (STAMP_WIDTH + PAD) + i_step, - PAD + j * (STAMP_HEIGHT + PAD) + j_step); - cairo_pattern_set_filter (cairo_get_source (cr), CAIRO_FILTER_NEAREST); - cairo_paint (cr); - - cairo_restore (cr); - } - } - - cairo_surface_finish (surface); /* data goes out of scope */ - cairo_surface_destroy (surface); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (filter_nearest_offset, - "Test sampling offset of CAIRO_FILTER_NEAREST" - "\nwrong sampling location for nearest-neighbor filter in libpixman and Render", - "filter", /* keywords */ - NULL, /* requirements */ - IMAGE_WIDTH, IMAGE_HEIGHT, - NULL, draw) diff --git a/test/filter-nearest-transformed.c b/test/filter-nearest-transformed.c deleted file mode 100644 index ba56f7c..0000000 --- a/test/filter-nearest-transformed.c +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Copyright © 2008 Chris Wilson - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -/* - * We wish to check the optimization away of non-fractional translations - * for NEAREST surface patterns under a few transformations. - */ - -static const char png_filename[] = "romedalen.png"; - -/* A single, black pixel */ -static const uint32_t black_pixel = 0xff000000; - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - const cairo_test_context_t *ctx = cairo_test_get_context (cr); - unsigned int i, j, k; - cairo_surface_t *surface; - cairo_pattern_t *pattern; - const cairo_matrix_t transform[] = { - { 1, 0, 0, 1, 0, 0 }, - { -1, 0, 0, 1, 8, 0 }, - { 1, 0, 0, -1, 0, 8 }, - { -1, 0, 0, -1, 8, 8 }, - }; - const cairo_matrix_t ctx_transform[] = { - { 1, 0, 0, 1, 0, 0 }, - { -1, 0, 0, 1, 14, 0 }, - { 1, 0, 0, -1, 0, 14 }, - { -1, 0, 0, -1, 14, 14 }, - }; - const double colour[][3] = { - {0, 0, 0}, - {1, 0, 0}, - {0, 1, 0}, - {0, 0, 1}, - }; - cairo_matrix_t m; - - surface = cairo_image_surface_create_for_data ((uint8_t *) &black_pixel, - CAIRO_FORMAT_ARGB32, - 1, 1, 4); - pattern = cairo_pattern_create_for_surface (surface); - cairo_surface_destroy (surface); - - cairo_pattern_set_filter (pattern, CAIRO_FILTER_NEAREST); - - surface = cairo_test_create_surface_from_png (ctx, png_filename); - - /* Fill background white */ - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - cairo_set_antialias (cr, CAIRO_ANTIALIAS_NONE); - - for (k = 0; k < ARRAY_LENGTH (transform); k++) { - /* draw a "large" section from an image */ - cairo_save (cr); { - cairo_set_matrix(cr, &ctx_transform[k]); - cairo_rectangle (cr, 0, 0, 7, 7); - cairo_clip (cr); - - cairo_set_source_surface (cr, surface, - -cairo_image_surface_get_width (surface)/2., - -cairo_image_surface_get_height (surface)/2.); - cairo_pattern_set_filter (cairo_get_source (cr), CAIRO_FILTER_NEAREST); - cairo_paint (cr); - } cairo_restore (cr); - - cairo_set_source_rgb (cr, colour[k][0], colour[k][1], colour[k][2]); - for (j = 4; j <= 6; j++) { - for (i = 4; i <= 6; i++) { - cairo_matrix_init_translate (&m, - -(2*(i-4) + .1*i), - -(2*(j-4) + .1*j)); - cairo_matrix_multiply (&m, &m, &transform[k]); - cairo_pattern_set_matrix (pattern, &m); - cairo_mask (cr, pattern); - } - } - } - - cairo_pattern_destroy (pattern); - cairo_surface_destroy (surface); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (filter_nearest_transformed, - "Test sample position when drawing transformed images with FILTER_NEAREST", - "filter, nearest", /* keywords */ - NULL, - 14, 14, - NULL, draw) diff --git a/test/finer-grained-fallbacks.c b/test/finer-grained-fallbacks.c deleted file mode 100644 index fa16f72..0000000 --- a/test/finer-grained-fallbacks.c +++ /dev/null @@ -1,180 +0,0 @@ -/* - * Copyright © 2008 Adrian Johnson - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Adrian Johnson - */ - -#include "cairo-test.h" - -#define CIRCLE_SIZE 10 -#define PAD 2 -#define WIDTH (CIRCLE_SIZE*6.5 + PAD) -#define HEIGHT (CIRCLE_SIZE*7.0 + PAD) - -static void -draw_circle (cairo_t *cr, double x, double y) -{ - cairo_save (cr); - cairo_translate (cr, x, y); - cairo_arc (cr, 0, 0, CIRCLE_SIZE / 2, 0., 2. * M_PI); - cairo_fill (cr); - cairo_restore (cr); -} - -static void -draw_image_circle (cairo_t *cr, cairo_surface_t *source, double x, double y) -{ - cairo_save (cr); - - cairo_set_source_surface (cr, source, x, y); - cairo_pattern_set_extend (cairo_get_source (cr), CAIRO_EXTEND_REFLECT); - cairo_rectangle (cr, x, y, CIRCLE_SIZE, CIRCLE_SIZE); - cairo_fill (cr); - - cairo_restore (cr); -} - -static void -draw_circles (cairo_t *cr) -{ - draw_circle (cr, 0, -CIRCLE_SIZE*0.1); - draw_circle (cr, CIRCLE_SIZE*0.4, CIRCLE_SIZE*0.25); - - draw_circle (cr, CIRCLE_SIZE*2, 0); - draw_circle (cr, CIRCLE_SIZE*4, 0); - draw_circle (cr, CIRCLE_SIZE*6, 0); -} - -static void -draw_image_circles (cairo_t *cr, cairo_surface_t *source) -{ - draw_image_circle (cr, source, 0, -CIRCLE_SIZE*0.1); - draw_image_circle (cr, source, CIRCLE_SIZE*0.4, CIRCLE_SIZE*0.25); - - draw_image_circle (cr, source, CIRCLE_SIZE*2, 0); - draw_image_circle (cr, source, CIRCLE_SIZE*4, 0); - draw_image_circle (cr, source, CIRCLE_SIZE*6, 0); -} - -/* For each of circle and fallback_circle we draw: - * - two overlapping - * - one isolated - * - one off the page - * - one overlapping the edge of the page. - * - * We also draw a circle and fallback_circle overlapping each other. - * - * Circles are drawn in green. An opaque color and CAIRO_OPERATOR_OVER - * is used to ensure they will be emitted as a vectors in PS/PDF. - * - * Fallback circles are drawn in red. CAIRO_OPERATOR_ADD is used to - * ensure they will be emitted as a fallback image in PS/PDF. - * - * In order to trigger a fallback for SVG, we need to use a surface with - * REFLECT. - */ -static cairo_surface_t * -surface_create (cairo_t *target) -{ - cairo_surface_t *surface; - cairo_t *cr; - - surface = cairo_surface_create_similar (cairo_get_target (target), - CAIRO_CONTENT_COLOR_ALPHA, - CIRCLE_SIZE, CIRCLE_SIZE); - cr = cairo_create (surface); - cairo_surface_destroy (surface); - - cairo_set_source_rgb (cr, 1.0, 0.0, 0.0); - draw_circle (cr, CIRCLE_SIZE/2, CIRCLE_SIZE/2); - - surface = cairo_surface_reference (cairo_get_target (cr)); - cairo_destroy (cr); - - return surface; -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_t *surface; - - cairo_translate (cr, PAD, PAD); - - cairo_save (cr); - - /* Draw overlapping circle and fallback circle */ - cairo_set_source_rgb (cr, 0.0, 1.0, 0.0); - cairo_set_operator (cr, CAIRO_OPERATOR_OVER); - draw_circle (cr, CIRCLE_SIZE*0.5, CIRCLE_SIZE*1.5); - - cairo_set_source_rgb (cr, 1.0, 0.0, 0.0); - cairo_set_operator (cr, CAIRO_OPERATOR_ADD); - draw_circle (cr, CIRCLE_SIZE*0.75, CIRCLE_SIZE*1.75); - - /* Draw circles */ - cairo_set_source_rgb (cr, 0.0, 1.0, 0.0); - cairo_set_operator (cr, CAIRO_OPERATOR_OVER); - cairo_translate (cr, CIRCLE_SIZE*2.5, CIRCLE_SIZE*0.6); - draw_circles (cr); - - /* Draw fallback circles */ - cairo_set_source_rgb (cr, 1.0, 0.0, 0.0); - cairo_set_operator (cr, CAIRO_OPERATOR_ADD); - cairo_translate (cr, 0, CIRCLE_SIZE*2); - draw_circles (cr); - - cairo_restore (cr); - cairo_translate (cr, 0, CIRCLE_SIZE * 3.5); - - /* Draw using fallback surface */ - surface = surface_create (cr); - - cairo_set_source_rgb (cr, 0.0, 1.0, 0.0); - cairo_set_operator (cr, CAIRO_OPERATOR_OVER); - draw_circle (cr, CIRCLE_SIZE*0.5, CIRCLE_SIZE*1.5); - - cairo_set_operator (cr, CAIRO_OPERATOR_ADD); - draw_image_circle (cr, surface, CIRCLE_SIZE/4, CIRCLE_SIZE + CIRCLE_SIZE/4); - - /* Draw circles */ - cairo_set_source_rgb (cr, 0.0, 1.0, 0.0); - cairo_set_operator (cr, CAIRO_OPERATOR_OVER); - cairo_translate (cr, CIRCLE_SIZE*2.5, CIRCLE_SIZE*0.6); - draw_circles (cr); - - cairo_set_operator (cr, CAIRO_OPERATOR_ADD); - cairo_translate (cr, -CIRCLE_SIZE/2, CIRCLE_SIZE*1.5); - draw_image_circles (cr, surface); - - cairo_surface_destroy (surface); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (finer_grained_fallbacks, - "Test that multiple PS/PDF fallback images in various locations are correct", - "fallbacks", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/font-face-get-type.c b/test/font-face-get-type.c deleted file mode 100644 index afbb739..0000000 --- a/test/font-face-get-type.c +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright © 2006 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" - -static cairo_test_status_t -preamble (cairo_test_context_t *ctx) -{ - cairo_test_status_t status = CAIRO_TEST_SUCCESS; - cairo_surface_t *surface; - cairo_t *cr; - cairo_font_face_t *font_face; - cairo_scaled_font_t *scaled_font; - - cairo_test_log (ctx, "Creating cairo context and obtaining a font face\n"); - - surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 1, 1); - cr = cairo_create (surface); - - cairo_select_font_face (cr, CAIRO_TEST_FONT_FAMILY " Sans", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - - cairo_test_log (ctx, "Testing return value of cairo_font_face_get_type\n"); - - font_face = cairo_get_font_face (cr); - - if (cairo_font_face_get_type (font_face) != CAIRO_FONT_TYPE_TOY) { - cairo_test_log (ctx, "Unexpected value %d from cairo_font_face_get_type (expected %d)\n", - cairo_font_face_get_type (font_face), CAIRO_FONT_TYPE_TOY); - status = CAIRO_TEST_FAILURE; - goto done; - } - - cairo_test_log (ctx, "Testing return value of cairo_get_scaled_font\n"); - - scaled_font = cairo_get_scaled_font (cr); - - if (cairo_scaled_font_get_font_face (scaled_font) != font_face) { - cairo_test_log (ctx, "Font face returned from the scaled font is different from that returned by the context\n"); - status = CAIRO_TEST_FAILURE; - goto done; - } - -done: - cairo_destroy (cr); - cairo_surface_destroy (surface); - - return status; -} - -CAIRO_TEST (font_face_get_type, - "Check the returned type from cairo_select_font_face.", - "font", /* keywords */ - NULL, /* requirements */ - 0, 0, - preamble, NULL) diff --git a/test/font-matrix-translation.c b/test/font-matrix-translation.c deleted file mode 100644 index 465ac7c..0000000 --- a/test/font-matrix-translation.c +++ /dev/null @@ -1,141 +0,0 @@ -/* - * Copyright © 2006 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" - -#define TEXT_SIZE 12 -#define PAD 4 -#define TEXT "text" - -static cairo_bool_t -text_extents_equal (const cairo_text_extents_t *A, - const cairo_text_extents_t *B) -{ - return A->x_bearing == B->x_bearing && - A->y_bearing == B->y_bearing && - A->width == B->width && - A->height == B->height && - A->x_advance == B->x_advance && - A->y_advance == B->y_advance; -} - -static cairo_test_status_t -box_text (const cairo_test_context_t *ctx, cairo_t *cr, - const char *utf8, - double x, double y) -{ - double line_width; - cairo_text_extents_t extents = {0}, scaled_extents = {0}; - cairo_scaled_font_t *scaled_font; - cairo_status_t status; - - cairo_save (cr); - - cairo_text_extents (cr, utf8, &extents); - - scaled_font = cairo_get_scaled_font (cr); - cairo_scaled_font_text_extents (scaled_font, TEXT, &scaled_extents); - status = cairo_scaled_font_status (scaled_font); - if (status) - return cairo_test_status_from_status (ctx, status); - - if (! text_extents_equal (&extents, &scaled_extents)) { - cairo_test_log (ctx, - "Error: extents differ when they shouldn't:\n" - "cairo_text_extents(); extents (%g, %g, %g, %g, %g, %g)\n" - "cairo_scaled_font_text_extents(); extents (%g, %g, %g, %g, %g, %g)\n", - extents.x_bearing, extents.y_bearing, - extents.width, extents.height, - extents.x_advance, extents.y_advance, - scaled_extents.x_bearing, scaled_extents.y_bearing, - scaled_extents.width, scaled_extents.height, - scaled_extents.x_advance, scaled_extents.y_advance); - return CAIRO_TEST_FAILURE; - } - - line_width = cairo_get_line_width (cr); - cairo_rectangle (cr, - x + extents.x_bearing - line_width / 2, - y + extents.y_bearing - line_width / 2, - extents.width + line_width, - extents.height + line_width); - cairo_stroke (cr); - - cairo_move_to (cr, x, y); - cairo_show_text (cr, utf8); - - cairo_restore (cr); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - const cairo_test_context_t *ctx = cairo_test_get_context (cr); - cairo_test_status_t status; - cairo_text_extents_t extents; - cairo_matrix_t matrix; - - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); /* white */ - cairo_paint (cr); - - cairo_select_font_face (cr, CAIRO_TEST_FONT_FAMILY " Sans", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - cairo_set_font_size (cr, TEXT_SIZE); - - cairo_translate (cr, PAD, PAD); - cairo_set_line_width (cr, 1.0); - - cairo_text_extents (cr, TEXT, &extents); - - /* Draw text and bounding box */ - cairo_set_source_rgb (cr, 0, 0, 0); /* black */ - status = box_text (ctx, cr, TEXT, 0, - extents.y_bearing); - if (status) - return status; - - /* Then draw again with the same coordinates, but with a font - * matrix to position the text below and shifted a bit to the - * right. */ - cairo_matrix_init_translate (&matrix, TEXT_SIZE / 2, TEXT_SIZE + PAD); - cairo_matrix_scale (&matrix, TEXT_SIZE, TEXT_SIZE); - cairo_set_font_matrix (cr, &matrix); - - cairo_set_source_rgb (cr, 0, 0, 1); /* blue */ - status = box_text (ctx, cr, TEXT, 0, - extents.y_bearing); - if (status) - return status; - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (font_matrix_translation, - "Test that translation in a font matrix can be used to offset a string", - "font", /* keywords */ - NULL, /* requirements */ - 38, 34, - NULL, draw) diff --git a/test/font-options.c b/test/font-options.c deleted file mode 100644 index 873a5c3..0000000 --- a/test/font-options.c +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright © 2008 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -#include - -static cairo_test_status_t -preamble (cairo_test_context_t *ctx) -{ - cairo_font_options_t *default_options; - cairo_font_options_t *nil_options; - cairo_surface_t *surface; - cairo_matrix_t identity; - cairo_t *cr; - cairo_scaled_font_t *scaled_font; - - /* first check NULL handling of cairo_font_options_t */ - default_options = cairo_font_options_create (); - assert (cairo_font_options_status (default_options) == CAIRO_STATUS_SUCCESS); - nil_options = cairo_font_options_copy (NULL); - assert (cairo_font_options_status (nil_options) == CAIRO_STATUS_NO_MEMORY); - - assert (cairo_font_options_equal (default_options, default_options)); - assert (! cairo_font_options_equal (default_options, nil_options)); - assert (! cairo_font_options_equal (NULL, nil_options)); - assert (! cairo_font_options_equal (nil_options, nil_options)); - assert (! cairo_font_options_equal (default_options, NULL)); - assert (! cairo_font_options_equal (NULL, default_options)); - - assert (cairo_font_options_hash (default_options) == cairo_font_options_hash (nil_options)); - assert (cairo_font_options_hash (NULL) == cairo_font_options_hash (nil_options)); - assert (cairo_font_options_hash (default_options) == cairo_font_options_hash (NULL)); - - cairo_font_options_merge (NULL, NULL); - cairo_font_options_merge (default_options, NULL); - cairo_font_options_merge (default_options, nil_options); - - cairo_font_options_set_antialias (NULL, CAIRO_ANTIALIAS_DEFAULT); - cairo_font_options_get_antialias (NULL); - assert (cairo_font_options_get_antialias (default_options) == CAIRO_ANTIALIAS_DEFAULT); - - cairo_font_options_set_subpixel_order (NULL, CAIRO_SUBPIXEL_ORDER_DEFAULT); - cairo_font_options_get_subpixel_order (NULL); - assert (cairo_font_options_get_subpixel_order (default_options) == CAIRO_SUBPIXEL_ORDER_DEFAULT); - - cairo_font_options_set_hint_style (NULL, CAIRO_HINT_STYLE_DEFAULT); - cairo_font_options_get_hint_style (NULL); - assert (cairo_font_options_get_hint_style (default_options) == CAIRO_HINT_STYLE_DEFAULT); - - cairo_font_options_set_hint_metrics (NULL, CAIRO_HINT_METRICS_DEFAULT); - cairo_font_options_get_hint_metrics (NULL); - assert (cairo_font_options_get_hint_metrics (default_options) == CAIRO_HINT_METRICS_DEFAULT); - - cairo_font_options_destroy (NULL); - cairo_font_options_destroy (default_options); - cairo_font_options_destroy (nil_options); - - - /* Now try creating fonts with NULLs */ - surface = cairo_image_surface_create (CAIRO_FORMAT_RGB24, 0, 0); - cr = cairo_create (surface); - cairo_surface_destroy (surface); - - cairo_matrix_init_identity (&identity); - scaled_font = cairo_scaled_font_create (cairo_get_font_face (cr), - &identity, &identity, - NULL); - assert (cairo_scaled_font_status (scaled_font) == CAIRO_STATUS_NULL_POINTER); - cairo_scaled_font_get_font_options (scaled_font, NULL); - cairo_scaled_font_destroy (scaled_font); - - assert (cairo_status (cr) == CAIRO_STATUS_SUCCESS); - cairo_get_font_options (cr, NULL); - cairo_set_font_options (cr, NULL); - assert (cairo_status (cr) == CAIRO_STATUS_NULL_POINTER); - - cairo_destroy (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (font_options, - "Check setters and getters on cairo_font_options_t.", - "font, api", /* keywords */ - NULL, /* requirements */ - 0, 0, - preamble, NULL) diff --git a/test/ft-font-create-for-ft-face.c b/test/ft-font-create-for-ft-face.c deleted file mode 100644 index 52c838d..0000000 --- a/test/ft-font-create-for-ft-face.c +++ /dev/null @@ -1,228 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" -#include - -static void -_stress_font_cache (FT_Face ft_face, cairo_t *cr, int lvl); - -static cairo_font_face_t * -_load_font (FT_Face ft_face, int flags, cairo_t *cr, int lvl) -{ - cairo_font_face_t *font_face; - cairo_font_extents_t font_extents; - - _stress_font_cache (ft_face, cr, lvl+1); - - font_face = cairo_ft_font_face_create_for_ft_face (ft_face, flags); - - cairo_set_font_face (cr, font_face); - cairo_font_extents (cr, &font_extents); - - _stress_font_cache (ft_face, cr, lvl+1); - - return font_face; -} - -static void -_stress_font_cache (FT_Face ft_face, cairo_t *cr, int lvl) -{ -#define A _load_font (ft_face, 0, cr, lvl) -#define B _load_font (ft_face, FT_LOAD_NO_BITMAP, cr, lvl) -#define C _load_font (ft_face, FT_LOAD_NO_RECURSE, cr, lvl) -#define D _load_font (ft_face, FT_LOAD_FORCE_AUTOHINT, cr, lvl) - - cairo_font_face_t *font_face[4]; - - while (lvl++ < 5) { - font_face[0] = A; font_face[1] = A; - font_face[2] = A; font_face[3] = A; - cairo_font_face_destroy (font_face[0]); - cairo_font_face_destroy (font_face[1]); - cairo_font_face_destroy (font_face[2]); - cairo_font_face_destroy (font_face[3]); - - font_face[0] = A; font_face[1] = B; - font_face[2] = C; font_face[3] = D; - cairo_font_face_destroy (font_face[0]); - cairo_font_face_destroy (font_face[1]); - cairo_font_face_destroy (font_face[2]); - cairo_font_face_destroy (font_face[3]); - - font_face[0] = A; font_face[1] = B; - font_face[2] = C; font_face[3] = D; - cairo_font_face_destroy (font_face[3]); - cairo_font_face_destroy (font_face[2]); - cairo_font_face_destroy (font_face[1]); - cairo_font_face_destroy (font_face[0]); - - font_face[0] = A; - font_face[1] = A; - cairo_font_face_destroy (font_face[0]); - font_face[2] = A; - cairo_font_face_destroy (font_face[1]); - font_face[3] = A; - cairo_font_face_destroy (font_face[2]); - cairo_font_face_destroy (font_face[3]); - - font_face[0] = A; - font_face[1] = B; - cairo_font_face_destroy (font_face[0]); - font_face[2] = C; - cairo_font_face_destroy (font_face[1]); - font_face[3] = D; - cairo_font_face_destroy (font_face[2]); - cairo_font_face_destroy (font_face[3]); - } - -#undef A -#undef B -#undef C -#undef D -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - const cairo_test_context_t *ctx = cairo_test_get_context (cr); - FcPattern *pattern, *resolved; - FcResult result; - cairo_font_face_t *font_face; - cairo_scaled_font_t *scaled_font; - cairo_font_options_t *font_options; - cairo_font_extents_t font_extents; - cairo_matrix_t font_matrix, ctm; - FT_Face ft_face; - - /* We're trying here to get our hands on _some_ FT_Face but we do - * not at all care which one. So we start with an empty pattern - * and do the minimal substitution on it in order to get a valid - * pattern. - * - * Do not use this in production code! */ - pattern = FcPatternCreate (); - if (! pattern) { - cairo_test_log (ctx, "FcPatternCreate failed.\n"); - return cairo_test_status_from_status (ctx, CAIRO_STATUS_NO_MEMORY); - } - - FcConfigSubstitute (NULL, pattern, FcMatchPattern); - FcDefaultSubstitute (pattern); - resolved = FcFontMatch (NULL, pattern, &result); - if (! resolved) { - FcPatternDestroy (pattern); - cairo_test_log (ctx, "FcFontMatch failed.\n"); - return cairo_test_status_from_status (ctx, CAIRO_STATUS_NO_MEMORY); - } - - font_face = cairo_ft_font_face_create_for_pattern (resolved); - if (cairo_font_face_status (font_face)) { - FcPatternDestroy (resolved); - FcPatternDestroy (pattern); - return cairo_test_status_from_status (ctx, cairo_font_face_status (font_face)); - } - - if (cairo_font_face_get_type (font_face) != CAIRO_FONT_TYPE_FT) { - cairo_test_log (ctx, "Unexpected value from cairo_font_face_get_type: %d (expected %d)\n", - cairo_font_face_get_type (font_face), CAIRO_FONT_TYPE_FT); - cairo_font_face_destroy (font_face); - FcPatternDestroy (resolved); - FcPatternDestroy (pattern); - return CAIRO_TEST_FAILURE; - } - - cairo_matrix_init_identity (&font_matrix); - - cairo_get_matrix (cr, &ctm); - - font_options = cairo_font_options_create (); - - cairo_get_font_options (cr, font_options); - - scaled_font = cairo_scaled_font_create (font_face, - &font_matrix, - &ctm, - font_options); - - cairo_font_options_destroy (font_options); - cairo_font_face_destroy (font_face); - FcPatternDestroy (pattern); - FcPatternDestroy (resolved); - - if (cairo_scaled_font_status (scaled_font)) { - return cairo_test_status_from_status (ctx, - cairo_scaled_font_status (scaled_font)); - } - - if (cairo_scaled_font_get_type (scaled_font) != CAIRO_FONT_TYPE_FT) { - cairo_test_log (ctx, "Unexpected value from cairo_scaled_font_get_type: %d (expected %d)\n", - cairo_scaled_font_get_type (scaled_font), CAIRO_FONT_TYPE_FT); - cairo_scaled_font_destroy (scaled_font); - return CAIRO_TEST_FAILURE; - } - - ft_face = cairo_ft_scaled_font_lock_face (scaled_font); - if (ft_face == NULL) { - cairo_test_log (ctx, "Failed to get an ft_face with cairo_ft_scaled_font_lock_face\n"); - cairo_scaled_font_destroy (scaled_font); - return CAIRO_TEST_FAILURE; - } - - /* phew, that was a lot of work. But at least we didn't ever have - * to call freetype directly, nor did we have to make many (any?) - * assumptions about the current system. - * - * Now, on to the simple thing we actually want to test. - */ - - cairo_save (cr); - - /* First we want to test caching behaviour */ - _stress_font_cache (ft_face, cr, 0); - - /* Set the font_face and force cairo to actually use it for - * something. */ - font_face = cairo_ft_font_face_create_for_ft_face (ft_face, 0); - cairo_set_font_face (cr, font_face); - cairo_font_extents (cr, &font_extents); - - cairo_restore (cr); - - /* Finally, even more cleanup */ - cairo_font_face_destroy (font_face); - cairo_ft_scaled_font_unlock_face (scaled_font); - cairo_scaled_font_destroy (scaled_font); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (ft_font_create_for_ft_face, - "Simple test to verify that cairo_ft_font_create_for_ft_face doesn't crash.", - "ft, font", /* keywords */ - NULL, /* requirements */ - 0, 0, - NULL, draw) - diff --git a/test/ft-show-glyphs-positioning.c b/test/ft-show-glyphs-positioning.c deleted file mode 100644 index 449f8eb..0000000 --- a/test/ft-show-glyphs-positioning.c +++ /dev/null @@ -1,191 +0,0 @@ -/* - * Copyright © 2008 Adrian Johnson - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Adrian Johnson - */ - -#include "cairo-test.h" -#include - -#define TEXT_SIZE 12 - -typedef struct { - cairo_glyph_t glyph_list[100]; - int num_glyphs; - double x; - double y; -} glyph_array_t; - -static void -glyph_array_init (glyph_array_t *glyphs, double x, double y) -{ - glyphs->num_glyphs = 0; - glyphs->x = x; - glyphs->y = y; -} - -static void -glyph_array_rel_move_to (glyph_array_t *glyphs, double x, double y) -{ - glyphs->x += x; - glyphs->y += y; -} - -static void -glyph_array_show (glyph_array_t *glyphs, cairo_t *cr) -{ - cairo_show_glyphs (cr, glyphs->glyph_list, glyphs->num_glyphs); -} - -#define DOUBLE_FROM_26_6(t) ((double)(t) / 64.0) - -static cairo_status_t -glyph_array_add_text(glyph_array_t *glyphs, cairo_t *cr, const char *s, double spacing) -{ - cairo_scaled_font_t *scaled_font; - cairo_status_t status; - FT_Face face; - unsigned long charcode; - unsigned int index; - cairo_text_extents_t extents; - const char *p; - FT_Vector kerning; - double kern_x; - int first = TRUE; - - scaled_font = cairo_get_scaled_font (cr); - status = cairo_scaled_font_status (scaled_font); - if (status) - return status; - - face = cairo_ft_scaled_font_lock_face (scaled_font); - if (face == NULL) - return CAIRO_STATUS_FONT_TYPE_MISMATCH; - - p = s; - while (*p) - { - charcode = *p; - index = FT_Get_Char_Index (face, charcode); - glyphs->glyph_list[glyphs->num_glyphs].index = index; - if (first) { - first = FALSE; - glyphs->glyph_list[glyphs->num_glyphs].x = glyphs->x; - glyphs->glyph_list[glyphs->num_glyphs].y = glyphs->y; - } else { - cairo_glyph_extents (cr, &glyphs->glyph_list[glyphs->num_glyphs - 1], 1, &extents); - FT_Get_Kerning (face, - glyphs->glyph_list[glyphs->num_glyphs - 1].index, - glyphs->glyph_list[glyphs->num_glyphs].index, - FT_KERNING_UNSCALED, - &kerning); - kern_x = DOUBLE_FROM_26_6(kerning.x); - glyphs->glyph_list[glyphs->num_glyphs].x = - glyphs->glyph_list[glyphs->num_glyphs - 1].x + extents.x_advance + kern_x + spacing; - glyphs->glyph_list[glyphs->num_glyphs].y = - glyphs->glyph_list[glyphs->num_glyphs - 1].y + extents.y_advance; - } - - cairo_glyph_extents (cr, &glyphs->glyph_list[glyphs->num_glyphs], 1, &extents); - glyphs->x = glyphs->glyph_list[glyphs->num_glyphs].x + extents.x_advance + spacing; - glyphs->y = glyphs->glyph_list[glyphs->num_glyphs].y + extents.y_advance; - p++; - glyphs->num_glyphs++; - } - - cairo_ft_scaled_font_unlock_face (scaled_font); - return CAIRO_STATUS_SUCCESS; -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - const cairo_test_context_t *ctx = cairo_test_get_context (cr); - glyph_array_t glyphs; - cairo_font_options_t *font_options; - cairo_status_t status; - - /* paint white so we don't need separate ref images for - * RGB24 and ARGB32 */ - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); - cairo_paint (cr); - - cairo_select_font_face (cr, CAIRO_TEST_FONT_FAMILY " Sans", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - cairo_set_font_size (cr, TEXT_SIZE); - - font_options = cairo_font_options_create (); - cairo_get_font_options (cr, font_options); - cairo_font_options_set_hint_metrics (font_options, CAIRO_HINT_METRICS_OFF); - cairo_set_font_options (cr, font_options); - cairo_font_options_destroy (font_options); - - cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); - - glyph_array_init (&glyphs, 1, TEXT_SIZE); - - status = glyph_array_add_text(&glyphs, cr, "AWAY again", 0.0); - if (status) - return cairo_test_status_from_status (ctx, status); - - glyph_array_rel_move_to (&glyphs, TEXT_SIZE*1, 0.0); - status = glyph_array_add_text(&glyphs, cr, "character space", TEXT_SIZE*0.3); - if (status) - return cairo_test_status_from_status (ctx, status); - - glyph_array_show (&glyphs, cr); - - - glyph_array_init (&glyphs, 1, TEXT_SIZE*2 + 4); - - status = glyph_array_add_text(&glyphs, cr, "Increasing", 0.0); - if (status) - return cairo_test_status_from_status (ctx, status); - - glyph_array_rel_move_to (&glyphs, TEXT_SIZE*0.5, 0.0); - status = glyph_array_add_text(&glyphs, cr, "space", 0.0); - if (status) - return cairo_test_status_from_status (ctx, status); - - glyph_array_rel_move_to (&glyphs, TEXT_SIZE*1.0, 0.0); - status = glyph_array_add_text(&glyphs, cr, "between", 0.0); - if (status) - return cairo_test_status_from_status (ctx, status); - - glyph_array_rel_move_to (&glyphs, TEXT_SIZE*1.5, 0.0); - status = glyph_array_add_text(&glyphs, cr, "words", 0.0); - if (status) - return cairo_test_status_from_status (ctx, status); - - glyph_array_show (&glyphs, cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (ft_show_glyphs_positioning, - "Test that the PS/PDF glyph positioning optimizations are correct", - "ft, text", /* keywords */ - NULL, /* requirements */ - 235, (TEXT_SIZE + 4)*2, - NULL, draw) diff --git a/test/ft-show-glyphs-table.c b/test/ft-show-glyphs-table.c deleted file mode 100644 index 344392f..0000000 --- a/test/ft-show-glyphs-table.c +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright © 2008 Red Hat, Inc. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Authors: Eugeniy Meshcheryakov - * Adrian Johnson - * Carl Worth - */ - -#include "cairo-test.h" -#include - -#define TEXT_SIZE 20 -#define PAD 10 -#define GRID_SIZE 30 -#define GRID_ROWS 10 -#define GRID_COLS 4 -#define NUM_GLYPHS (GRID_ROWS * GRID_COLS) -#define WIDTH (PAD + GRID_COLS * GRID_SIZE + PAD) -#define HEIGHT (PAD + GRID_ROWS * GRID_SIZE + PAD) - -/* This test was originally inspired by this bug report: - * - * Error when creating pdf charts for new FreeSerifItalic.ttf - * http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=%23474136 - * - * The original assertion failure was fairly boring, but the later - * glyph mispositiing was quite interesting. And it turns out that the - * _cairo_pdf_operators_show_glyphs code is fairly convoluted with a - * code path that wasn't being exercised at all by the test suite. - * - * So this is an attempt to exercise that code path. Apparently laying - * glyphs out vertically in a table like this, (so that there's a - * large change in Y position from one glyph to the next), exercises - * the code well. - */ - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_font_options_t *font_options; - cairo_scaled_font_t *scaled_font; - FT_Face face; - FT_ULong charcode; - FT_UInt idx; - int i = 0; - cairo_glyph_t glyphs[NUM_GLYPHS]; - - /* paint white so we don't need separate ref images for - * RGB24 and ARGB32 */ - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); - cairo_paint (cr); - - cairo_select_font_face (cr, CAIRO_TEST_FONT_FAMILY " Sans", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - cairo_set_font_size (cr, TEXT_SIZE); - - font_options = cairo_font_options_create (); - cairo_get_font_options (cr, font_options); - cairo_font_options_set_hint_metrics (font_options, CAIRO_HINT_METRICS_OFF); - cairo_set_font_options (cr, font_options); - cairo_font_options_destroy (font_options); - - cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); - - scaled_font = cairo_get_scaled_font (cr); - face = cairo_ft_scaled_font_lock_face (scaled_font); - { - charcode = FT_Get_First_Char(face, &idx); - while (idx && (i < NUM_GLYPHS)) { - glyphs[i] = (cairo_glyph_t) {idx, PAD + GRID_SIZE * (i/GRID_ROWS), PAD + TEXT_SIZE + GRID_SIZE * (i%GRID_ROWS)}; - i++; - charcode = FT_Get_Next_Char(face, charcode, &idx); - } - } - cairo_ft_scaled_font_unlock_face (scaled_font); - - cairo_show_glyphs(cr, glyphs, i); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (ft_show_glyphs_table, - "Test cairo_show_glyphs with cairo-ft backend and glyphs laid out in a table", - "ft, text", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) - diff --git a/test/ft-text-antialias-none.c b/test/ft-text-antialias-none.c deleted file mode 100644 index 64eea64..0000000 --- a/test/ft-text-antialias-none.c +++ /dev/null @@ -1,146 +0,0 @@ -/* - * Copyright © 2006 Jinghua Luo - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * JINGHUA LUO DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Jinghua Luo - * Derived from: - * text-antialias-none.c, - * ft-font-create-for-ft-face.c. - * Original Author: Carl D. Worth - */ -#include "cairo-test.h" -#include - -#define WIDTH 40 -#define HEIGHT 30 -#define TEXT_SIZE 12 - -static cairo_status_t -create_scaled_font (cairo_t * cr, - cairo_scaled_font_t **out) -{ - FcPattern *pattern, *resolved; - FcResult result; - cairo_font_face_t *font_face; - cairo_scaled_font_t *scaled_font; - cairo_font_options_t *font_options; - cairo_matrix_t font_matrix, ctm; - cairo_status_t status; - double pixel_size; - - font_options = cairo_font_options_create (); - - cairo_get_font_options (cr, font_options); - - pattern = FcPatternCreate (); - if (pattern == NULL) - return CAIRO_STATUS_NO_MEMORY; - - FcPatternAddString (pattern, FC_FAMILY, (FcChar8 *) CAIRO_TEST_FONT_FAMILY " Sans"); - FcPatternAddDouble (pattern, FC_SIZE, TEXT_SIZE); - FcConfigSubstitute (NULL, pattern, FcMatchPattern); - - cairo_ft_font_options_substitute (font_options, pattern); - - FcDefaultSubstitute (pattern); - resolved = FcFontMatch (NULL, pattern, &result); - if (resolved == NULL) { - FcPatternDestroy (pattern); - return CAIRO_STATUS_NO_MEMORY; - } - - /* turn antialiasing off */ - FcPatternDel (resolved, FC_ANTIALIAS); - FcPatternAddBool (resolved, FC_ANTIALIAS, FcFalse); - - FcPatternGetDouble (resolved, FC_PIXEL_SIZE, 0, &pixel_size); - - font_face = cairo_ft_font_face_create_for_pattern (resolved); - - cairo_matrix_init_identity (&font_matrix); - cairo_matrix_scale (&font_matrix, pixel_size, pixel_size); - - cairo_get_matrix (cr, &ctm); - - scaled_font = cairo_scaled_font_create (font_face, - &font_matrix, - &ctm, - font_options); - - cairo_font_options_destroy (font_options); - cairo_font_face_destroy (font_face); - FcPatternDestroy (pattern); - FcPatternDestroy (resolved); - - status = cairo_scaled_font_status (scaled_font); - if (status) { - cairo_scaled_font_destroy (scaled_font); - return status; - } - - *out = scaled_font; - return CAIRO_STATUS_SUCCESS; -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_text_extents_t extents; - cairo_scaled_font_t *scaled_font; - cairo_status_t status; - const char black[] = "black", blue[] = "blue"; - - /* We draw in the default black, so paint white first. */ - cairo_save (cr); - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); /* white */ - cairo_paint (cr); - cairo_restore (cr); - - status = create_scaled_font (cr, &scaled_font); - if (status) { - return cairo_test_status_from_status (cairo_test_get_context (cr), - status); - } - - cairo_set_scaled_font (cr, scaled_font); - - cairo_set_source_rgb (cr, 0, 0, 0); /* black */ - cairo_text_extents (cr, black, &extents); - cairo_move_to (cr, -extents.x_bearing, -extents.y_bearing); - cairo_show_text (cr, black); - cairo_translate (cr, 0, -extents.y_bearing + 1); - - cairo_set_source_rgb (cr, 0, 0, 1); /* blue */ - cairo_text_extents (cr, blue, &extents); - cairo_move_to (cr, -extents.x_bearing, -extents.y_bearing); - cairo_show_text (cr, blue); - - cairo_scaled_font_destroy (scaled_font); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (ft_text_antialias_none, - "Tests text rendering with no antialiasing", - "ft, text", /* keywords */ - "target=raster", /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/ft-text-vertical-layout-type1.c b/test/ft-text-vertical-layout-type1.c deleted file mode 100644 index c6f26a6..0000000 --- a/test/ft-text-vertical-layout-type1.c +++ /dev/null @@ -1,167 +0,0 @@ -/* - * Copyright © 2006 Jinghua Luo - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * JINGHUA LUO DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Jinghua Luo - * Derived from: - * text-antialias-none.c, - * ft-font-create-for-ft-face.c. - * Original Author: Carl D. Worth - */ -#include "cairo-test.h" -#include - -#define WIDTH 80 -#define HEIGHT 240 -#define TEXT_SIZE 30 - -static cairo_status_t -create_scaled_font (cairo_t * cr, - cairo_scaled_font_t **out) -{ - FcPattern *pattern, *resolved; - FcResult result; - cairo_font_face_t *font_face; - cairo_scaled_font_t *scaled_font; - cairo_font_options_t *font_options; - cairo_matrix_t font_matrix, ctm; - cairo_status_t status; - double pixel_size; - - font_options = cairo_font_options_create (); - - cairo_get_font_options (cr, font_options); - - pattern = FcPatternCreate (); - if (pattern == NULL) - return CAIRO_STATUS_NO_MEMORY; - - FcPatternAddString (pattern, FC_FAMILY, (FcChar8 *)"Nimbus Sans L"); - FcPatternAddDouble (pattern, FC_PIXEL_SIZE, TEXT_SIZE); - FcConfigSubstitute (NULL, pattern, FcMatchPattern); - - cairo_ft_font_options_substitute (font_options, pattern); - - FcDefaultSubstitute (pattern); - resolved = FcFontMatch (NULL, pattern, &result); - if (resolved == NULL) { - FcPatternDestroy (pattern); - return CAIRO_STATUS_NO_MEMORY; - } - - /* set layout to vertical */ - FcPatternDel (resolved, FC_VERTICAL_LAYOUT); - FcPatternAddBool (resolved, FC_VERTICAL_LAYOUT, FcTrue); - - FcPatternGetDouble (resolved, FC_PIXEL_SIZE, 0, &pixel_size); - - font_face = cairo_ft_font_face_create_for_pattern (resolved); - - cairo_matrix_init_translate (&font_matrix, 10, 30); - cairo_matrix_rotate (&font_matrix, M_PI_2/3); - cairo_matrix_scale (&font_matrix, pixel_size, pixel_size); - - cairo_get_matrix (cr, &ctm); - - scaled_font = cairo_scaled_font_create (font_face, - &font_matrix, - &ctm, - font_options); - - cairo_font_options_destroy (font_options); - cairo_font_face_destroy (font_face); - FcPatternDestroy (pattern); - FcPatternDestroy (resolved); - - status = cairo_scaled_font_status (scaled_font); - if (status) { - cairo_scaled_font_destroy (scaled_font); - return status; - } - - *out = scaled_font; - return CAIRO_STATUS_SUCCESS; -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_text_extents_t extents; - cairo_scaled_font_t *scaled_font; - cairo_status_t status; - const char text[] = "i-W"; - double line_width, x, y; - - line_width = cairo_get_line_width (cr); - - /* We draw in the default black, so paint white first. */ - cairo_save (cr); - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); /* white */ - cairo_paint (cr); - cairo_restore (cr); - - status = create_scaled_font (cr, &scaled_font); - if (status) { - return cairo_test_status_from_status (cairo_test_get_context (cr), - status); - } - - cairo_set_scaled_font (cr, scaled_font); - cairo_scaled_font_destroy (scaled_font); - - cairo_set_line_width (cr, 1.0); - cairo_set_source_rgb (cr, 0, 0, 0); /* black */ - cairo_text_extents (cr, text, &extents); - x = width - (extents.width + extents.x_bearing) - 5; - y = height - (extents.height + extents.y_bearing) - 5; - cairo_move_to (cr, x, y); - cairo_show_text (cr, text); - cairo_rectangle (cr, - x + extents.x_bearing - line_width / 2, - y + extents.y_bearing - line_width / 2, - extents.width + line_width, - extents.height + line_width); - cairo_stroke (cr); - - cairo_set_source_rgb (cr, 0, 0, 1); /* blue */ - cairo_text_extents (cr, text, &extents); - x = -extents.x_bearing + 5; - y = -extents.y_bearing + 5; - cairo_move_to (cr, x, y); - cairo_text_path (cr, text); - cairo_fill (cr); - cairo_rectangle (cr, - x + extents.x_bearing - line_width / 2, - y + extents.y_bearing - line_width / 2, - extents.width + line_width, - extents.height + line_width); - cairo_stroke (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (ft_text_vertical_layout_type1, - "Tests text rendering for vertical layout with Type1 fonts" - "\nCan fail if an incorrect font is loaded---need to bundle the desired font", - "ft, fc, text", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/ft-text-vertical-layout-type3.c b/test/ft-text-vertical-layout-type3.c deleted file mode 100644 index 0cea9dd..0000000 --- a/test/ft-text-vertical-layout-type3.c +++ /dev/null @@ -1,166 +0,0 @@ -/* - * Copyright © 2006 Jinghua Luo - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * JINGHUA LUO DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Jinghua Luo - * Derived from: - * text-antialias-none.c, - * ft-font-create-for-ft-face.c. - * Original Author: Carl D. Worth - */ -#include "cairo-test.h" -#include - -#define WIDTH 80 -#define HEIGHT 200 -#define TEXT_SIZE 30 - -static cairo_status_t -create_scaled_font (cairo_t * cr, - cairo_scaled_font_t **out) -{ - FcPattern *pattern, *resolved; - FcResult result; - cairo_font_face_t *font_face; - cairo_scaled_font_t *scaled_font; - cairo_font_options_t *font_options; - cairo_matrix_t font_matrix, ctm; - cairo_status_t status; - double pixel_size; - - font_options = cairo_font_options_create (); - - cairo_get_font_options (cr, font_options); - - pattern = FcPatternCreate (); - if (pattern == NULL) - return CAIRO_STATUS_NO_MEMORY; - - FcPatternAddString (pattern, FC_FAMILY, (FcChar8 *)CAIRO_TEST_FONT_FAMILY " Sans"); - FcPatternAddDouble (pattern, FC_PIXEL_SIZE, TEXT_SIZE); - FcConfigSubstitute (NULL, pattern, FcMatchPattern); - - cairo_ft_font_options_substitute (font_options, pattern); - - FcDefaultSubstitute (pattern); - resolved = FcFontMatch (NULL, pattern, &result); - if (resolved == NULL) { - FcPatternDestroy (pattern); - return CAIRO_STATUS_NO_MEMORY; - } - - /* set layout to vertical */ - FcPatternDel (resolved, FC_VERTICAL_LAYOUT); - FcPatternAddBool (resolved, FC_VERTICAL_LAYOUT, FcTrue); - - FcPatternGetDouble (resolved, FC_PIXEL_SIZE, 0, &pixel_size); - - font_face = cairo_ft_font_face_create_for_pattern (resolved); - - cairo_matrix_init_translate (&font_matrix, 10, 30); - cairo_matrix_rotate (&font_matrix, M_PI_2/3); - cairo_matrix_scale (&font_matrix, pixel_size, pixel_size); - - cairo_get_matrix (cr, &ctm); - - scaled_font = cairo_scaled_font_create (font_face, - &font_matrix, - &ctm, - font_options); - - cairo_font_options_destroy (font_options); - cairo_font_face_destroy (font_face); - FcPatternDestroy (pattern); - FcPatternDestroy (resolved); - - status = cairo_scaled_font_status (scaled_font); - if (status) { - cairo_scaled_font_destroy (scaled_font); - return status; - } - - *out = scaled_font; - return CAIRO_STATUS_SUCCESS; -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_text_extents_t extents; - cairo_scaled_font_t *scaled_font; - cairo_status_t status; - const char text[] = "i-W"; - double line_width, x, y; - - line_width = cairo_get_line_width (cr); - - /* We draw in the default black, so paint white first. */ - cairo_save (cr); - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); /* white */ - cairo_paint (cr); - cairo_restore (cr); - - status = create_scaled_font (cr, &scaled_font); - if (status) { - return cairo_test_status_from_status (cairo_test_get_context (cr), - status); - } - - cairo_set_scaled_font (cr, scaled_font); - cairo_scaled_font_destroy (scaled_font); - - cairo_set_line_width (cr, 1.0); - cairo_set_source_rgb (cr, 0, 0, 0); /* black */ - cairo_text_extents (cr, text, &extents); - x = width - (extents.width + extents.x_bearing) - 5; - y = height - (extents.height + extents.y_bearing) - 5; - cairo_move_to (cr, x, y); - cairo_show_text (cr, text); - cairo_rectangle (cr, - x + extents.x_bearing - line_width / 2, - y + extents.y_bearing - line_width / 2, - extents.width + line_width, - extents.height + line_width); - cairo_stroke (cr); - - cairo_set_source_rgb (cr, 0, 0, 1); /* blue */ - cairo_text_extents (cr, text, &extents); - x = -extents.x_bearing + 5; - y = -extents.y_bearing + 5; - cairo_move_to (cr, x, y); - cairo_text_path (cr, text); - cairo_fill (cr); - cairo_rectangle (cr, - x + extents.x_bearing - line_width / 2, - y + extents.y_bearing - line_width / 2, - extents.width + line_width, - extents.height + line_width); - cairo_stroke (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (ft_text_vertical_layout_type3, - "Tests text rendering for vertical layout with TrueType fonts", - "ft, fc, text", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/generate_refs.sh b/test/generate_refs.sh deleted file mode 100755 index e22aa25..0000000 --- a/test/generate_refs.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash - -# A very simple script. But sufficient, hopefully, for our current purposes. - -cat < - */ - -#include "cairo-test.h" - -typedef struct { - cairo_operator_t op; - double tolerance; - cairo_fill_rule_t fill_rule; - double line_width; - cairo_line_cap_t line_cap; - cairo_line_join_t line_join; - double miter_limit; - cairo_matrix_t matrix; - double dash[5]; - double dash_offset; -} settings_t; - -/* Two sets of settings, no defaults */ -static const settings_t settings[] = { - { - CAIRO_OPERATOR_IN, - 2.0, - CAIRO_FILL_RULE_EVEN_ODD, - 7.7, - CAIRO_LINE_CAP_SQUARE, - CAIRO_LINE_JOIN_ROUND, - 3.14, - {2.0, 0.0, 0.0, 2.0, 5.0, 5.0}, - {0.1, 0.2, 0.3, 0.4, 0.5}, - 2.0 - }, - { - CAIRO_OPERATOR_ATOP, - 5.25, - CAIRO_FILL_RULE_WINDING, - 2.17, - CAIRO_LINE_CAP_ROUND, - CAIRO_LINE_JOIN_BEVEL, - 1000.0, - {-3.0, 1.0, 1.0, -3.0, -4, -4}, - {1.0, 2.0, 3.0, 4.0, 5.0}, - 3.0 - } -}; - -static void -settings_set (cairo_t *cr, const settings_t *settings) -{ - cairo_set_operator (cr, settings->op); - cairo_set_tolerance (cr, settings->tolerance); - cairo_set_fill_rule (cr, settings->fill_rule); - cairo_set_line_width (cr, settings->line_width); - cairo_set_line_cap (cr, settings->line_cap); - cairo_set_line_join (cr, settings->line_join); - cairo_set_miter_limit (cr, settings->miter_limit); - cairo_set_matrix (cr, &settings->matrix); - cairo_set_dash (cr, settings->dash, 5, settings->dash_offset); -} - -static int -settings_get (cairo_t *cr, settings_t *settings) -{ - int count; - - settings->op = cairo_get_operator (cr); - settings->tolerance = cairo_get_tolerance (cr); - settings->fill_rule = cairo_get_fill_rule (cr); - settings->line_width = cairo_get_line_width (cr); - settings->line_cap = cairo_get_line_cap (cr); - settings->line_join = cairo_get_line_join (cr); - settings->miter_limit = cairo_get_miter_limit (cr); - cairo_get_matrix (cr, &settings->matrix); - - count = cairo_get_dash_count (cr); - if (count != 5) - return -1; - - cairo_get_dash (cr, settings->dash, &settings->dash_offset); - - return 0; -} - -static int -settings_equal (const settings_t *a, const settings_t *b) -{ - return (a->op == b->op && - a->tolerance == b->tolerance && - a->fill_rule == b->fill_rule && - a->line_width == b->line_width && - a->line_cap == b->line_cap && - a->line_join == b->line_join && - a->miter_limit == b->miter_limit && - a->matrix.xx == b->matrix.xx && - a->matrix.xy == b->matrix.xy && - a->matrix.x0 == b->matrix.x0 && - a->matrix.yx == b->matrix.yx && - a->matrix.yy == b->matrix.yy && - a->matrix.y0 == b->matrix.y0 && - memcmp(a->dash, b->dash, sizeof(a->dash)) == 0 && - a->dash_offset == b->dash_offset); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - settings_t check; - - settings_set (cr, &settings[0]); - - cairo_save (cr); - { - settings_set (cr, &settings[1]); - if (settings_get (cr, &check)) - return CAIRO_TEST_FAILURE; - - if (!settings_equal (&settings[1], &check)) - return CAIRO_TEST_FAILURE; - } - cairo_restore (cr); - - if (settings_get (cr, &check)) - return CAIRO_TEST_FAILURE; - - if (!settings_equal (&settings[0], &check)) - return CAIRO_TEST_FAILURE; - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (get_and_set, - "Tests calls to the most trivial cairo_get and cairo_set functions", - "api", /* keywords */ - NULL, /* requirements */ - 0, 0, - NULL, draw) diff --git a/test/get-clip.c b/test/get-clip.c deleted file mode 100644 index f97db3f..0000000 --- a/test/get-clip.c +++ /dev/null @@ -1,264 +0,0 @@ -/* - * Copyright © 2006 Novell, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Novell, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Novell, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * NOVELL, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Robert O'Callahan - */ - -#include "cairo-test.h" -#include - -static cairo_bool_t -check_count (const cairo_test_context_t *ctx, - const char *message, - cairo_rectangle_list_t *list, int expected) -{ - if (list->status != CAIRO_STATUS_SUCCESS) { - cairo_test_log (ctx, "Error: %s; cairo_copy_clip_rectangle_list failed with \"%s\"\n", - message, cairo_status_to_string(list->status)); - return 0; - } - - if (list->num_rectangles == expected) - return 1; - cairo_test_log (ctx, "Error: %s; expected %d rectangles, got %d\n", message, - expected, list->num_rectangles); - return 0; -} - -static cairo_bool_t -check_unrepresentable (const cairo_test_context_t *ctx, const char *message, cairo_rectangle_list_t *list) -{ - if (list->status != CAIRO_STATUS_CLIP_NOT_REPRESENTABLE) { - cairo_test_log (ctx, "Error: %s; cairo_copy_clip_rectangle_list got unexpected result \"%s\"\n" - " (we expected CAIRO_STATUS_CLIP_NOT_REPRESENTABLE)", - message, cairo_status_to_string(list->status)); - return 0; - } - return 1; -} - -static cairo_bool_t -check_rectangles_contain (const cairo_test_context_t *ctx, - const char *message, - cairo_rectangle_list_t *list, - double x, double y, double width, double height) -{ - int i; - - for (i = 0; i < list->num_rectangles; ++i) { - if (list->rectangles[i].x == x && list->rectangles[i].y == y && - list->rectangles[i].width == width && list->rectangles[i].height == height) - return 1; - } - cairo_test_log (ctx, "Error: %s; rectangle list does not contain rectangle %f,%f,%f,%f\n", - message, x, y, width, height); - return 0; -} - -static cairo_bool_t -check_clip_extents (const cairo_test_context_t *ctx, - const char *message, cairo_t *cr, - double x, double y, double width, double height) -{ - double ext_x1, ext_y1, ext_x2, ext_y2; - cairo_clip_extents (cr, &ext_x1, &ext_y1, &ext_x2, &ext_y2); - if (ext_x1 == x && ext_y1 == y && ext_x2 == x + width && ext_y2 == y + height) - return 1; - if (width == 0.0 && height == 0.0 && ext_x1 == ext_x2 && ext_y1 == ext_y2) - return 1; - cairo_test_log (ctx, "Error: %s; clip extents %f,%f,%f,%f should be %f,%f,%f,%f\n", - message, ext_x1, ext_y1, ext_x2 - ext_x1, ext_y2 - ext_y1, - x, y, width, height); - return 0; -} - -#define SIZE 100 - -static cairo_test_status_t -preamble (cairo_test_context_t *ctx) -{ - cairo_surface_t *surface; - cairo_t *cr; - cairo_rectangle_list_t *rectangle_list; - const char *phase; - cairo_bool_t completed = 0; - cairo_status_t status; - - surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, SIZE, SIZE); - cr = cairo_create (surface); - cairo_surface_destroy (surface); - - - /* first, test basic stuff. This should not be clipped, it should - return the surface rectangle. */ - phase = "No clip set"; - rectangle_list = cairo_copy_clip_rectangle_list (cr); - if (! check_count (ctx, phase, rectangle_list, 1) || - ! check_clip_extents (ctx, phase, cr, 0, 0, SIZE, SIZE) || - ! check_rectangles_contain (ctx, phase, rectangle_list, 0, 0, SIZE, SIZE)) - { - goto FAIL; - } - cairo_rectangle_list_destroy (rectangle_list); - - /* We should get the same results after applying a clip that contains the - existing clip. */ - phase = "Clip beyond surface extents"; - cairo_save (cr); - cairo_rectangle (cr, -10, -10, SIZE + 20 , SIZE + 20); - cairo_clip (cr); - rectangle_list = cairo_copy_clip_rectangle_list (cr); - if (! check_count (ctx, phase, rectangle_list, 1) || - ! check_clip_extents (ctx, phase, cr, 0, 0, SIZE, SIZE) || - ! check_rectangles_contain (ctx, phase, rectangle_list, 0, 0, SIZE, SIZE)) - { - goto FAIL; - } - cairo_rectangle_list_destroy (rectangle_list); - cairo_restore (cr); - - /* Test simple clip rect. */ - phase = "Simple clip rect"; - cairo_save (cr); - cairo_rectangle (cr, 10, 10, 80, 80); - cairo_clip (cr); - rectangle_list = cairo_copy_clip_rectangle_list (cr); - if (! check_count (ctx, phase, rectangle_list, 1) || - ! check_clip_extents (ctx, phase, cr, 10, 10, 80, 80) || - ! check_rectangles_contain (ctx, phase, rectangle_list, 10, 10, 80, 80)) - { - goto FAIL; - } - cairo_rectangle_list_destroy (rectangle_list); - cairo_restore (cr); - - /* Test everything clipped out. */ - phase = "All clipped out"; - cairo_save (cr); - cairo_clip (cr); - rectangle_list = cairo_copy_clip_rectangle_list (cr); - if (! check_count (ctx, phase, rectangle_list, 0) || - ! check_clip_extents (ctx, phase, cr, 0, 0, 0, 0)) - { - goto FAIL; - } - cairo_rectangle_list_destroy (rectangle_list); - cairo_restore (cr); - - /* test two clip rects */ - phase = "Two clip rects"; - cairo_save (cr); - cairo_rectangle (cr, 10, 10, 10, 10); - cairo_rectangle (cr, 20, 20, 10, 10); - cairo_clip (cr); - cairo_rectangle (cr, 15, 15, 10, 10); - cairo_clip (cr); - rectangle_list = cairo_copy_clip_rectangle_list (cr); - if (! check_count (ctx, phase, rectangle_list, 2) || - ! check_clip_extents (ctx, phase, cr, 15, 15, 10, 10) || - ! check_rectangles_contain (ctx, phase, rectangle_list, 15, 15, 5, 5) || - ! check_rectangles_contain (ctx, phase, rectangle_list, 20, 20, 5, 5)) - { - goto FAIL; - } - cairo_rectangle_list_destroy (rectangle_list); - cairo_restore (cr); - - /* test non-rectangular clip */ - phase = "Nonrectangular clip"; - cairo_save (cr); - cairo_move_to (cr, 0, 0); - cairo_line_to (cr, 100, 100); - cairo_line_to (cr, 100, 0); - cairo_close_path (cr); - cairo_clip (cr); - rectangle_list = cairo_copy_clip_rectangle_list (cr); - /* can't get this in one tight user-space rectangle */ - if (! check_unrepresentable (ctx, phase, rectangle_list) || - ! check_clip_extents (ctx, phase, cr, 0, 0, 100, 100)) - { - goto FAIL; - } - cairo_rectangle_list_destroy (rectangle_list); - cairo_restore (cr); - - phase = "User space, simple scale, getting clip with same transform"; - cairo_save (cr); - cairo_scale (cr, 2, 2); - cairo_rectangle (cr, 5, 5, 40, 40); - cairo_clip (cr); - rectangle_list = cairo_copy_clip_rectangle_list (cr); - if (! check_count (ctx, phase, rectangle_list, 1) || - ! check_clip_extents (ctx, phase, cr, 5, 5, 40, 40) || - ! check_rectangles_contain (ctx, phase, rectangle_list, 5, 5, 40, 40)) - { - goto FAIL; - } - cairo_rectangle_list_destroy (rectangle_list); - cairo_restore (cr); - - phase = "User space, simple scale, getting clip with no transform"; - cairo_save (cr); - cairo_save (cr); - cairo_scale (cr, 2, 2); - cairo_rectangle (cr, 5, 5, 40, 40); - cairo_restore (cr); - cairo_clip (cr); - rectangle_list = cairo_copy_clip_rectangle_list (cr); - if (! check_count (ctx, phase, rectangle_list, 1) || - ! check_clip_extents (ctx, phase, cr, 10, 10, 80, 80) || - ! check_rectangles_contain (ctx, phase, rectangle_list, 10, 10, 80, 80)) - { - goto FAIL; - } - cairo_rectangle_list_destroy (rectangle_list); - cairo_restore (cr); - - phase = "User space, rotation, getting clip with no transform"; - cairo_save (cr); - cairo_save (cr); - cairo_rotate (cr, 12); - cairo_rectangle (cr, 5, 5, 40, 40); - cairo_restore (cr); - cairo_clip (cr); - rectangle_list = cairo_copy_clip_rectangle_list (cr); - if (! check_unrepresentable (ctx, phase, rectangle_list)) - goto FAIL; - - completed = 1; -FAIL: - cairo_rectangle_list_destroy (rectangle_list); - status = cairo_status (cr); - cairo_destroy (cr); - - if (!completed) - return CAIRO_TEST_FAILURE; - - return cairo_test_status_from_status (ctx, status); -} - -CAIRO_TEST (get_clip, - "Test cairo_copy_clip_rectangle_list and cairo_clip_extents", - "clip, extents", /* keywords */ - NULL, /* requirements */ - 0, 0, - preamble, NULL) diff --git a/test/get-group-target.c b/test/get-group-target.c deleted file mode 100644 index 5aff19b..0000000 --- a/test/get-group-target.c +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright © 2006 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" - -#define SIZE 8 -#define PAD 2 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_t *group; - double x, y; - - /* First paint background in blue. */ - cairo_set_source_rgb (cr, 0.0, 0.0, 1.0); - cairo_paint (cr); - - /* Then clip so that the group surface ends up smaller than the - * original surface. */ - cairo_rectangle (cr, PAD, PAD, width - 2 * PAD, height - 2 * PAD); - cairo_clip (cr); - - /* Paint the clipped region in red (which should all be overwritten later). */ - cairo_set_source_rgb (cr, 1.0, 0.0, 0.0); - cairo_paint (cr); - - /* Redirect to a new group and get that surface. */ - cairo_push_group (cr); - group = cairo_get_group_target (cr); - - /* Then paint in green what we query the group surface size to be. */ - cairo_set_source_rgb (cr, 0.0, 1.0, 0.0); - cairo_surface_get_device_offset (group, &x, &y); - /* Or rather, we calculate the group surface size based on the - * only thing we can query which is the device offset. Ideally, - * the size would always be the minimal (width - 2 * PAD, height - - * 2 * PAD) based on the clip. But currently, group targets are - * created oversized for paginated surfaces, so we only subtract - * anything from the size if there is a non-zero device offfset. - * - * The calculation below might also be less confusing if the sign - * convention on the device offset were reversed, but it is what - * it is. Oh well. */ - cairo_rectangle (cr, - -x, -y, - width + 2 * x, - height + 2 * y); - cairo_fill (cr); - - /* Finish up the group painting. */ - cairo_pop_group_to_source (cr); - cairo_paint (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (get_group_target, - "Test of both cairo_get_group_target and cairo_surface_get_device_offset", - "api", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, draw) diff --git a/test/get-path-extents.c b/test/get-path-extents.c deleted file mode 100644 index 075fd6f..0000000 --- a/test/get-path-extents.c +++ /dev/null @@ -1,443 +0,0 @@ -/* - * Copyright © 2006 Novell, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Novell, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Novell, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * NOVELL, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Robert O'Callahan - */ - -#include "cairo-test.h" -#include -#include - -enum ExtentsType { FILL, STROKE, PATH }; - -enum Relation { EQUALS, APPROX_EQUALS, CONTAINS }; - - -static cairo_bool_t within_tolerance(double x1, double y1, - double x2, double y2, - double expected_x1, double expected_y1, - double expected_x2, double expected_y2, - double tolerance) -{ - return (fabs (expected_x1 - x1) < tolerance && - fabs (expected_y1 - y1) < tolerance && - fabs (expected_x2 - x2) < tolerance && - fabs (expected_y2 - y2) < tolerance); -} - -static cairo_bool_t -check_extents (const cairo_test_context_t *ctx, - const char *message, cairo_t *cr, enum ExtentsType type, - enum Relation relation, - double x, double y, double width, double height) -{ - double ext_x1, ext_y1, ext_x2, ext_y2; - const char *type_string; - const char *relation_string; - - switch (type) { - default: - case FILL: - type_string = "fill"; - cairo_fill_extents (cr, &ext_x1, &ext_y1, &ext_x2, &ext_y2); - break; - case STROKE: - type_string = "stroke"; - cairo_stroke_extents (cr, &ext_x1, &ext_y1, &ext_x2, &ext_y2); - break; - case PATH: - type_string = "path"; - cairo_path_extents (cr, &ext_x1, &ext_y1, &ext_x2, &ext_y2); - break; - } - - /* ignore results after an error occurs */ - if (cairo_status (cr)) - return 1; - - switch (relation) { - default: - case EQUALS: - relation_string = "equal"; - if (within_tolerance(x, y, x + width, y + height, - ext_x1, ext_y1, ext_x2, ext_y2, - cairo_get_tolerance(cr))) - return 1; - break; - case APPROX_EQUALS: - relation_string = "approx. equal"; - if (within_tolerance(x, y, x + width, y + height, - ext_x1, ext_y1, ext_x2, ext_y2, - 1.)) - return 1; - break; - case CONTAINS: - relation_string = "contain"; - if (width == 0 || height == 0) { - /* odd test that doesn't really test anything... */ - return 1; - } - if (ext_x1 <= x && ext_y1 <= y && ext_x2 >= x + width && ext_y2 >= y + height) - return 1; - break; - } - - cairo_test_log (ctx, "Error: %s; %s extents (%g, %g) x (%g, %g) should %s (%g, %g) x (%g, %g)\n", - message, type_string, - ext_x1, ext_y1, ext_x2 - ext_x1, ext_y2 - ext_y1, - relation_string, - x, y, width, height); - return 0; -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - const cairo_test_context_t *ctx = cairo_test_get_context (cr); - cairo_surface_t *surface; - cairo_t *cr2; - const char *phase; - const char string[] = "The quick brown fox jumps over the lazy dog."; - cairo_text_extents_t extents, scaled_font_extents; - cairo_status_t status; - int errors = 0; - - surface = cairo_surface_create_similar (cairo_get_group_target (cr), - CAIRO_CONTENT_COLOR, 1000, 1000); - /* don't use cr accidentally */ - cr = NULL; - cr2 = cairo_create (surface); - cairo_surface_destroy (surface); - - cairo_set_line_width (cr2, 10); - cairo_set_line_join (cr2, CAIRO_LINE_JOIN_MITER); - cairo_set_miter_limit (cr2, 100); - - phase = "No path"; - errors += !check_extents (ctx, phase, cr2, FILL, EQUALS, 0, 0, 0, 0); - errors += !check_extents (ctx, phase, cr2, STROKE, EQUALS, 0, 0, 0, 0); - errors += !check_extents (ctx, phase, cr2, PATH, EQUALS, 0, 0, 0, 0); - - cairo_save (cr2); - - cairo_new_path (cr2); - cairo_move_to (cr2, 200, 400); - cairo_close_path (cr2); - phase = "Degenerate closed path"; - errors += !check_extents (ctx, phase, cr2, FILL, EQUALS, 0, 0, 0, 0); - errors += !check_extents (ctx, phase, cr2, STROKE, EQUALS, 0, 0, 0, 0); - errors += !check_extents (ctx, phase, cr2, PATH, EQUALS, 200, 400, 0, 0); - - cairo_new_path (cr2); - cairo_move_to (cr2, 200, 400); - cairo_rel_line_to (cr2, 0., 0.); - phase = "Degenerate line"; - errors += !check_extents (ctx, phase, cr2, FILL, EQUALS, 0, 0, 0, 0); - errors += !check_extents (ctx, phase, cr2, STROKE, EQUALS, 0, 0, 0, 0); - errors += !check_extents (ctx, phase, cr2, PATH, EQUALS, 200, 400, 0, 0); - - cairo_new_path (cr2); - cairo_move_to (cr2, 200, 400); - cairo_rel_curve_to (cr2, 0., 0., 0., 0., 0., 0.); - phase = "Degenerate curve"; - errors += !check_extents (ctx, phase, cr2, FILL, EQUALS, 0, 0, 0, 0); - errors += !check_extents (ctx, phase, cr2, STROKE, EQUALS, 0, 0, 0, 0); - errors += !check_extents (ctx, phase, cr2, PATH, EQUALS, 200, 400, 0, 0); - - cairo_new_path (cr2); - cairo_arc (cr2, 200, 400, 0., 0, 2 * M_PI); - phase = "Degenerate arc (R=0)"; - errors += !check_extents (ctx, phase, cr2, FILL, EQUALS, 0, 0, 0, 0); - errors += !check_extents (ctx, phase, cr2, STROKE, EQUALS, 0, 0, 0, 0); - errors += !check_extents (ctx, phase, cr2, PATH, EQUALS, 200, 400, 0, 0); - - cairo_new_path (cr2); - cairo_arc_negative (cr2, 200, 400, 0., 0, 2 * M_PI); - phase = "Degenerate negative arc (R=0)"; - errors += !check_extents (ctx, phase, cr2, FILL, EQUALS, 0, 0, 0, 0); - errors += !check_extents (ctx, phase, cr2, STROKE, EQUALS, 0, 0, 0, 0); - errors += !check_extents (ctx, phase, cr2, PATH, EQUALS, 200, 400, 0, 0); - - cairo_new_path (cr2); - cairo_arc (cr2, 200, 400, 10., 0, 0); - phase = "Degenerate arc (Θ=0)"; - errors += !check_extents (ctx, phase, cr2, FILL, EQUALS, 0, 0, 0, 0); - errors += !check_extents (ctx, phase, cr2, STROKE, EQUALS, 0, 0, 0, 0); - errors += !check_extents (ctx, phase, cr2, PATH, EQUALS, 210, 400, 0, 0); - - cairo_new_path (cr2); - cairo_arc_negative (cr2, 200, 400, 10., 0, 0); - phase = "Degenerate negative arc (Θ=0)"; - errors += !check_extents (ctx, phase, cr2, FILL, EQUALS, 0, 0, 0, 0); - errors += !check_extents (ctx, phase, cr2, STROKE, EQUALS, 0, 0, 0, 0); - errors += !check_extents (ctx, phase, cr2, PATH, EQUALS, 210, 400, 0, 0); - - cairo_new_path (cr2); - cairo_restore (cr2); - - /* Test that with CAIRO_LINE_CAP_ROUND, we get "dots" from - * cairo_move_to; cairo_rel_line_to(0,0) */ - cairo_save (cr2); - - cairo_set_line_cap (cr2, CAIRO_LINE_CAP_ROUND); - cairo_set_line_width (cr2, 20); - - cairo_move_to (cr2, 200, 400); - cairo_rel_line_to (cr2, 0, 0); - phase = "Single 'dot'"; - errors += !check_extents (ctx, phase, cr2, FILL, EQUALS, 0, 0, 0, 0); - errors += !check_extents (ctx, phase, cr2, STROKE, APPROX_EQUALS, 190, 390, 20, 20); - errors += !check_extents (ctx, phase, cr2, PATH, EQUALS, 200, 400, 0, 0); - - /* Add another dot without starting a new path */ - cairo_move_to (cr2, 100, 500); - cairo_rel_line_to (cr2, 0, 0); - phase = "Multiple 'dots'"; - errors += !check_extents (ctx, phase, cr2, FILL, EQUALS, 0, 0, 0, 0); - errors += !check_extents (ctx, phase, cr2, STROKE, APPROX_EQUALS, 90, 390, 120, 120); - errors += !check_extents (ctx, phase, cr2, PATH, EQUALS, 100, 400, 100, 100); - - cairo_new_path (cr2); - - cairo_restore (cr2); - - /* http://bugs.freedesktop.org/show_bug.cgi?id=7965 */ - phase = "A horizontal, open path"; - cairo_save (cr2); - cairo_set_line_cap (cr2, CAIRO_LINE_CAP_ROUND); - cairo_set_line_join (cr2, CAIRO_LINE_JOIN_ROUND); - cairo_move_to (cr2, 0, 180); - cairo_line_to (cr2, 750, 180); - errors += !check_extents (ctx, phase, cr2, FILL, EQUALS, 0, 0, 0, 0); - errors += !check_extents (ctx, phase, cr2, STROKE, EQUALS, -5, 175, 760, 10); - errors += !check_extents (ctx, phase, cr2, PATH, EQUALS, 0, 180, 750, 0); - cairo_new_path (cr2); - cairo_restore (cr2); - - phase = "A vertical, open path"; - cairo_save (cr2); - cairo_set_line_cap (cr2, CAIRO_LINE_CAP_ROUND); - cairo_set_line_join (cr2, CAIRO_LINE_JOIN_ROUND); - cairo_new_path (cr2); - cairo_move_to (cr2, 180, 0); - cairo_line_to (cr2, 180, 750); - errors += !check_extents (ctx, phase, cr2, FILL, EQUALS, 0, 0, 0, 0); - errors += !check_extents (ctx, phase, cr2, STROKE, EQUALS, 175, -5, 10, 760); - errors += !check_extents (ctx, phase, cr2, PATH, EQUALS, 180, 0, 0, 750); - cairo_new_path (cr2); - cairo_restore (cr2); - - phase = "A degenerate open path"; - cairo_save (cr2); - cairo_set_line_cap (cr2, CAIRO_LINE_CAP_ROUND); - cairo_set_line_join (cr2, CAIRO_LINE_JOIN_ROUND); - cairo_new_path (cr2); - cairo_move_to (cr2, 180, 0); - cairo_line_to (cr2, 180, 0); - errors += !check_extents (ctx, phase, cr2, FILL, EQUALS, 0, 0, 0, 0); - errors += !check_extents (ctx, phase, cr2, STROKE, EQUALS, 175, -5, 10, 10); - errors += !check_extents (ctx, phase, cr2, PATH, EQUALS, 180, 0, 0, 0); - cairo_new_path (cr2); - cairo_restore (cr2); - - phase = "Simple rect"; - cairo_save (cr2); - cairo_rectangle (cr2, 10, 10, 80, 80); - errors += !check_extents (ctx, phase, cr2, FILL, EQUALS, 10, 10, 80, 80); - errors += !check_extents (ctx, phase, cr2, STROKE, EQUALS, 5, 5, 90, 90); - errors += !check_extents (ctx, phase, cr2, PATH, EQUALS, 10, 10, 80, 80); - cairo_new_path (cr2); - cairo_restore (cr2); - - phase = "Two rects"; - cairo_save (cr2); - cairo_rectangle (cr2, 10, 10, 10, 10); - cairo_rectangle (cr2, 20, 20, 10, 10); - errors += !check_extents (ctx, phase, cr2, FILL, EQUALS, 10, 10, 20, 20); - errors += !check_extents (ctx, phase, cr2, STROKE, EQUALS, 5, 5, 30, 30); - errors += !check_extents (ctx, phase, cr2, PATH, EQUALS, 10, 10, 20, 20); - cairo_new_path (cr2); - cairo_restore (cr2); - - phase = "Triangle"; - cairo_save (cr2); - cairo_move_to (cr2, 10, 10); - cairo_line_to (cr2, 90, 90); - cairo_line_to (cr2, 90, 10); - cairo_close_path (cr2); - /* miter joins protrude 5*(1+sqrt(2)) above the top-left corner and to - the right of the bottom-right corner */ - errors += !check_extents (ctx, phase, cr2, FILL, EQUALS, 10, 10, 80, 80); - errors += !check_extents (ctx, phase, cr2, STROKE, CONTAINS, 0, 5, 95, 95); - errors += !check_extents (ctx, phase, cr2, PATH, CONTAINS, 10, 10, 80, 80); - cairo_new_path (cr2); - cairo_restore (cr2); - - cairo_save (cr2); - - cairo_set_line_width (cr2, 4); - - cairo_rectangle (cr2, 10, 10, 30, 30); - cairo_rectangle (cr2, 25, 10, 15, 30); - - cairo_set_fill_rule (cr2, CAIRO_FILL_RULE_EVEN_ODD); - phase = "EVEN_ODD overlapping rectangles"; - errors += !check_extents (ctx, phase, cr2, FILL, EQUALS, 10, 10, 15, 30); - errors += !check_extents (ctx, phase, cr2, STROKE, EQUALS, 8, 8, 34, 34); - errors += !check_extents (ctx, phase, cr2, PATH, EQUALS, 10, 10, 30, 30); - - /* Test other fill rule with the same path. */ - - cairo_set_fill_rule (cr2, CAIRO_FILL_RULE_WINDING); - phase = "WINDING overlapping rectangles"; - errors += !check_extents (ctx, phase, cr2, FILL, EQUALS, 10, 10, 30, 30); - errors += !check_extents (ctx, phase, cr2, STROKE, EQUALS, 8, 8, 34, 34); - errors += !check_extents (ctx, phase, cr2, PATH, EQUALS, 10, 10, 30, 30); - - /* Now, change the direction of the second rectangle and test both - * fill rules again. */ - cairo_new_path (cr2); - cairo_rectangle (cr2, 10, 10, 30, 30); - cairo_rectangle (cr2, 25, 40, 15, -30); - - cairo_set_fill_rule (cr2, CAIRO_FILL_RULE_EVEN_ODD); - phase = "EVEN_ODD overlapping rectangles"; - errors += !check_extents (ctx, phase, cr2, FILL, EQUALS, 10, 10, 15, 30); - errors += !check_extents (ctx, phase, cr2, STROKE, EQUALS, 8, 8, 34, 34); - errors += !check_extents (ctx, phase, cr2, PATH, EQUALS, 10, 10, 30, 30); - - /* Test other fill rule with the same path. */ - - cairo_set_fill_rule (cr2, CAIRO_FILL_RULE_WINDING); - phase = "WINDING overlapping rectangles"; - errors += !check_extents (ctx, phase, cr2, FILL, EQUALS, 10, 10, 15, 30); - errors += !check_extents (ctx, phase, cr2, STROKE, EQUALS, 8, 8, 34, 34); - errors += !check_extents (ctx, phase, cr2, PATH, EQUALS, 10, 10, 30, 30); - - cairo_new_path (cr2); - - cairo_restore (cr2); - - /* http://bugs.freedesktop.org/show_bug.cgi?id=7245 */ - phase = "Arc"; - cairo_save (cr2); - cairo_arc (cr2, 250.0, 250.0, 157.0, 5.147, 3.432); - cairo_set_line_width (cr2, 154.0); - errors += !check_extents (ctx, phase, cr2, STROKE, APPROX_EQUALS, 16, 38, 468, 446); - cairo_new_path (cr2); - cairo_restore (cr2); - - phase = "Text"; - cairo_save (cr2); - cairo_select_font_face (cr2, CAIRO_TEST_FONT_FAMILY " Sans", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - cairo_set_font_size (cr2, 12); - cairo_text_extents (cr2, string, &extents); - /* double check that the two methods of measuring the text agree... */ - cairo_scaled_font_text_extents (cairo_get_scaled_font (cr2), - string, - &scaled_font_extents); - if (memcmp (&extents, &scaled_font_extents, sizeof (extents))) { - cairo_test_log (ctx, "Error: cairo_text_extents() does not match cairo_scaled_font_text_extents() - font extents (%f, %f) x (%f, %f) should be (%f, %f) x (%f, %f)\n", - scaled_font_extents.x_bearing, - scaled_font_extents.y_bearing, - scaled_font_extents.width, - scaled_font_extents.height, - extents.x_bearing, - extents.y_bearing, - extents.width, - extents.height); - errors++; - } - - cairo_move_to (cr2, -extents.x_bearing, -extents.y_bearing); - cairo_text_path (cr2, string); - cairo_set_line_width (cr2, 2.0); - /* XXX: We'd like to be able to use EQUALS here, but currently - * when hinting is enabled freetype returns integer extents. See - * http://cairographics.org/todo */ - errors += !check_extents (ctx, phase, cr2, FILL, APPROX_EQUALS, - 0, 0, extents.width, extents.height); - errors += !check_extents (ctx, phase, cr2, STROKE, APPROX_EQUALS, - -1, -1, extents.width+2, extents.height+2); - errors += !check_extents (ctx, phase, cr2, PATH, APPROX_EQUALS, - 0, 0, extents.width, extents.height); - cairo_new_path (cr2); - cairo_restore (cr2); - - phase = "User space, simple scale, getting extents with same transform"; - cairo_save (cr2); - cairo_scale (cr2, 2, 2); - cairo_rectangle (cr2, 5, 5, 40, 40); - errors += !check_extents (ctx, phase, cr2, FILL, EQUALS, 5, 5, 40, 40); - errors += !check_extents (ctx, phase, cr2, STROKE, EQUALS, 0, 0, 50, 50); - errors += !check_extents (ctx, phase, cr2, PATH, EQUALS, 5, 5, 40, 40); - cairo_new_path (cr2); - cairo_restore (cr2); - - phase = "User space, simple scale, getting extents with no transform"; - cairo_save (cr2); - cairo_save (cr2); - cairo_scale (cr2, 2, 2); - cairo_rectangle (cr2, 5, 5, 40, 40); - cairo_restore (cr2); - errors += !check_extents (ctx, phase, cr2, FILL, EQUALS, 10, 10, 80, 80); - errors += !check_extents (ctx, phase, cr2, STROKE, EQUALS, 5, 5, 90, 90); - errors += !check_extents (ctx, phase, cr2, PATH, EQUALS, 10, 10, 80, 80); - cairo_new_path (cr2); - cairo_restore (cr2); - - phase = "User space, rotation, getting extents with transform"; - cairo_save (cr2); - cairo_rectangle (cr2, -50, -50, 50, 50); - cairo_rotate (cr2, -M_PI/4); - /* the path in user space is now (nearly) the square rotated by - 45 degrees about the origin. Thus its x1 and x2 are both nearly 0. - This should show any bugs where we just transform device-space - x1,y1 and x2,y2 to get the extents. */ - /* The largest axis-aligned square inside the rotated path has - side lengths 50*sqrt(2), so a bit over 35 on either side of - the axes. With the stroke width added to the rotated path, - the largest axis-aligned square is a bit over 38 on either side of - the axes. */ - errors += !check_extents (ctx, phase, cr2, FILL, CONTAINS, -35, -35, 35, 35); - errors += !check_extents (ctx, phase, cr2, STROKE, CONTAINS, -38, -38, 38, 38); - errors += !check_extents (ctx, phase, cr2, PATH, CONTAINS, -35, -35, 35, 35); - cairo_new_path (cr2); - cairo_restore (cr2); - - status = cairo_status (cr2); - cairo_destroy (cr2); - - if (status) - return cairo_test_status_from_status (ctx, status); - - return errors == 0 ? CAIRO_TEST_SUCCESS : CAIRO_TEST_FAILURE; -} - -CAIRO_TEST (get_path_extents, - "Test cairo_fill_extents and cairo_stroke_extents", - "extents, path", /* keywords */ - NULL, /* requirements */ - 0, 0, - NULL, draw) diff --git a/test/get-xrender-format.c b/test/get-xrender-format.c deleted file mode 100644 index 3228d57..0000000 --- a/test/get-xrender-format.c +++ /dev/null @@ -1,122 +0,0 @@ -/* - * Copyright © 2008 Red Hat, Inc. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" - -#include "cairo-xlib.h" -#include "cairo-xlib-xrender.h" - -#include "cairo-boilerplate-xlib.h" - -static cairo_test_status_t -preamble (cairo_test_context_t *ctx) -{ - Display *dpy; - XRenderPictFormat *orig_format, *format; - cairo_surface_t *surface; - Pixmap pixmap; - int screen; - cairo_test_status_t result; - - result = CAIRO_TEST_UNTESTED; - - if (! cairo_test_is_target_enabled (ctx, "xlib")) - goto CLEANUP_TEST; - - dpy = XOpenDisplay (NULL); - if (! dpy) { - cairo_test_log (ctx, "Error: Cannot open display: %s, skipping.\n", - XDisplayName (NULL)); - goto CLEANUP_TEST; - } - - result = CAIRO_TEST_FAILURE; - - screen = DefaultScreen (dpy); - - cairo_test_log (ctx, "Testing with image surface.\n"); - - surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 1, 1); - - format = cairo_xlib_surface_get_xrender_format (surface); - if (format != NULL) { - cairo_test_log (ctx, "Error: expected NULL for image surface\n"); - goto CLEANUP_SURFACE; - } - - cairo_surface_destroy (surface); - - cairo_test_log (ctx, "Testing with non-xrender xlib surface.\n"); - - pixmap = XCreatePixmap (dpy, DefaultRootWindow (dpy), - 1, 1, DefaultDepth (dpy, screen)); - surface = cairo_xlib_surface_create (dpy, pixmap, - DefaultVisual (dpy, screen), - 1, 1); - orig_format = XRenderFindVisualFormat (dpy, DefaultVisual (dpy, screen)); - format = cairo_xlib_surface_get_xrender_format (surface); - if (format != orig_format) { - cairo_test_log (ctx, "Error: did not receive the same format as XRenderFindVisualFormat\n"); - goto CLEANUP_PIXMAP; - } - cairo_surface_destroy (surface); - XFreePixmap (dpy, pixmap); - - cairo_test_log (ctx, "Testing with xlib xrender surface.\n"); - - orig_format = XRenderFindStandardFormat (dpy, PictStandardARGB32); - pixmap = XCreatePixmap (dpy, DefaultRootWindow (dpy), - 1, 1, 32); - surface = cairo_xlib_surface_create_with_xrender_format (dpy, - pixmap, - DefaultScreenOfDisplay (dpy), - orig_format, - 1, 1); - format = cairo_xlib_surface_get_xrender_format (surface); - if (format != orig_format) { - cairo_test_log (ctx, "Error: did not receive the same format originally set\n"); - goto CLEANUP_PIXMAP; - } - - result = CAIRO_TEST_SUCCESS; - - CLEANUP_PIXMAP: - XFreePixmap (dpy, pixmap); - CLEANUP_SURFACE: - cairo_surface_destroy (surface); - - XCloseDisplay (dpy); - - CLEANUP_TEST: - return result; -} - -CAIRO_TEST (get_xrender_format, - "Check XRender specific API", - "xrender, api", /* keywords */ - NULL, /* requirements */ - 0, 0, - preamble, NULL) diff --git a/test/gl-device-release.c b/test/gl-device-release.c deleted file mode 100644 index 7f554be..0000000 --- a/test/gl-device-release.c +++ /dev/null @@ -1,182 +0,0 @@ -/* - * Copyright © 2012 Igalia S.L. - * Copyright © 2009 Eric Anholt - * Copyright © 2009 Chris Wilson - * Copyright © 2005 Red Hat, Inc - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * IGALIA S.L. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Martin Robinson - */ - -#include "cairo-test.h" -#include -#include - -static Window -create_test_window (Display *display, - GLXContext glx_context, - XVisualInfo *visual_info) -{ - Colormap colormap; - XSetWindowAttributes window_attributes; - Window window = None; - - colormap = XCreateColormap (display, - RootWindow (display, visual_info->screen), - visual_info->visual, - AllocNone); - window_attributes.colormap = colormap; - window_attributes.border_pixel = 0; - window = XCreateWindow (display, RootWindow (display, visual_info->screen), - -1, -1, 1, 1, 0, - visual_info->depth, - InputOutput, - visual_info->visual, - CWBorderPixel | CWColormap, &window_attributes); - XFreeColormap (display, colormap); - - XFlush (display); - return window; -} - -static cairo_bool_t -multithread_makecurrent_available (Display *display) -{ - const char *extensions = glXQueryExtensionsString (display, - DefaultScreen (display)); - return !! strstr(extensions, "GLX_MESA_multithread_makecurrent"); -} - -static void -draw_to_surface (cairo_surface_t *surface) -{ - cairo_t *cr = cairo_create (surface); - cairo_paint (cr); - cairo_destroy (cr); -} - -static cairo_test_status_t -preamble (cairo_test_context_t *test_ctx) -{ - int rgba_attribs[] = { - GLX_RGBA, - GLX_RED_SIZE, 1, - GLX_GREEN_SIZE, 1, - GLX_BLUE_SIZE, 1, - GLX_ALPHA_SIZE, 1, - GLX_DOUBLEBUFFER, - None - }; - - XVisualInfo *visual_info; - GLXContext glx_context; - cairo_device_t *device; - Display *display; - Window test_window; - cairo_surface_t *window_surface; - cairo_bool_t has_multithread_makecurrent; - - display = XOpenDisplay (NULL); - if (display == NULL) - return CAIRO_TEST_UNTESTED; - - visual_info = glXChooseVisual (display, DefaultScreen (display), rgba_attribs); - if (visual_info == NULL) { - XCloseDisplay (display); - return CAIRO_TEST_UNTESTED; - } - - glx_context = glXCreateContext (display, visual_info, NULL, True); - if (glx_context == NULL) { - XCloseDisplay (display); - return CAIRO_TEST_UNTESTED; - } - - test_window = create_test_window (display, glx_context, visual_info); - XFree (visual_info); - if (test_window == None) { - XCloseDisplay (display); - return CAIRO_TEST_UNTESTED; - } - - has_multithread_makecurrent = multithread_makecurrent_available (display); - - glXMakeCurrent (display, None, None); - - /* Creating the device should actually change the GL context, because of - * the creation/activation of a dummy window used for texture surfaces. */ - device = cairo_glx_device_create (display, glx_context); - - /* It's important that when multithread_makecurrent isn't available the - * Cairo backend clears the current context, so that the dummy texture - * window is not active while the device is unlocked. */ - if (has_multithread_makecurrent) { - assert (None != glXGetCurrentDrawable ()); - assert (display == glXGetCurrentDisplay ()); - assert (glx_context == glXGetCurrentContext ()); - } else { - assert (None == glXGetCurrentDrawable ()); - assert (None == glXGetCurrentDisplay ()); - assert (None == glXGetCurrentContext ()); - } - - window_surface = cairo_gl_surface_create_for_window (device, test_window, - 1, 1); - assert (cairo_surface_status (window_surface) == CAIRO_STATUS_SUCCESS); - - draw_to_surface (window_surface); - if (has_multithread_makecurrent) { - assert (test_window == glXGetCurrentDrawable ()); - assert (display == glXGetCurrentDisplay ()); - assert (glx_context == glXGetCurrentContext ()); - } else { - assert (None == glXGetCurrentDrawable ()); - assert (None == glXGetCurrentDisplay ()); - assert (None == glXGetCurrentContext ()); - } - - /* In this case, drawing to the window surface will not change the current - * GL context, so Cairo setting the current surface and context to none. */ - glXMakeCurrent (display, test_window, glx_context); - draw_to_surface (window_surface); - assert (test_window == glXGetCurrentDrawable ()); - assert (display == glXGetCurrentDisplay ()); - assert (glx_context == glXGetCurrentContext ()); - - /* There should be no context change when destroying the device. */ - cairo_device_destroy (device); - assert (test_window == glXGetCurrentDrawable ()); - assert (display == glXGetCurrentDisplay ()); - assert (glx_context == glXGetCurrentContext ()); - - glXDestroyContext(display, glx_context); - XDestroyWindow (display, test_window); - XCloseDisplay (display); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (gl_device_creation_changes_context, - "Test that using the Cairo GL backend leaves the current GL context in the appropriate state", - "gl", /* keywords */ - NULL, /* requirements */ - 0, 0, - preamble, NULL) diff --git a/test/gl-oversized-surface.c b/test/gl-oversized-surface.c deleted file mode 100644 index 4c46efd..0000000 --- a/test/gl-oversized-surface.c +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright © 2012 Igalia S.L. - * Copyright © 2009 Eric Anholt - * Copyright © 2009 Chris Wilson - * Copyright © 2005 Red Hat, Inc - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * IGALIA S.L. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Martin Robinson - */ - -#include "cairo-test.h" -#include -#include -#include - -static cairo_test_status_t -preamble (cairo_test_context_t *test_ctx) -{ - int rgba_attribs[] = { - GLX_RGBA, - GLX_RED_SIZE, 1, - GLX_GREEN_SIZE, 1, - GLX_BLUE_SIZE, 1, - GLX_ALPHA_SIZE, 1, - GLX_DOUBLEBUFFER, - None - }; - - Display *display; - XVisualInfo *visual_info; - GLXContext glx_context; - cairo_device_t *device; - cairo_surface_t *oversized_surface; - cairo_test_status_t test_status = CAIRO_TEST_SUCCESS; - - display = XOpenDisplay (NULL); - if (display == NULL) - return CAIRO_TEST_UNTESTED; - - visual_info = glXChooseVisual (display, DefaultScreen (display), rgba_attribs); - if (visual_info == NULL) { - XCloseDisplay (display); - return CAIRO_TEST_UNTESTED; - } - - glx_context = glXCreateContext (display, visual_info, NULL, True); - if (glx_context == NULL) { - XCloseDisplay (display); - return CAIRO_TEST_UNTESTED; - } - - device = cairo_glx_device_create (display, glx_context); - - oversized_surface = cairo_gl_surface_create (device, CAIRO_CONTENT_COLOR_ALPHA, INT_MAX, INT_MAX); - if (cairo_surface_status (oversized_surface) != CAIRO_STATUS_INVALID_SIZE) - test_status = CAIRO_TEST_FAILURE; - - cairo_device_destroy (device); - glXDestroyContext(display, glx_context); - XCloseDisplay (display); - - return test_status; -} - -CAIRO_TEST (gl_oversized_surface, - "Test that creating a surface beyond texture limits results in an error surface", - "gl", /* keywords */ - NULL, /* requirements */ - 0, 0, - preamble, NULL) diff --git a/test/gl-surface-source.c b/test/gl-surface-source.c deleted file mode 100644 index 09d4d9c..0000000 --- a/test/gl-surface-source.c +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright © 2008 Chris Wilson - * Copyright © 2010 Intel Corporation - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" -#include - -#include "surface-source.c" - -struct closure { - Display *dpy; - GLXContext ctx; -}; - -static void -cleanup (void *data) -{ - struct closure *arg = data; - - glXDestroyContext (arg->dpy, arg->ctx); - XCloseDisplay (arg->dpy); - - free (arg); -} - -static cairo_surface_t * -create_source_surface (int size) -{ - int rgba_attribs[] = { - GLX_RGBA, - GLX_RED_SIZE, 1, - GLX_GREEN_SIZE, 1, - GLX_BLUE_SIZE, 1, - GLX_ALPHA_SIZE, 1, - GLX_DOUBLEBUFFER, - None - }; - XVisualInfo *visinfo; - GLXContext ctx; - struct closure *arg; - cairo_device_t *device; - cairo_surface_t *surface; - Display *dpy; - - dpy = XOpenDisplay (NULL); - if (dpy == NULL) - return NULL; - - visinfo = glXChooseVisual (dpy, DefaultScreen (dpy), rgba_attribs); - if (visinfo == NULL) { - XCloseDisplay (dpy); - return NULL; - } - - ctx = glXCreateContext (dpy, visinfo, NULL, True); - XFree (visinfo); - - if (ctx == NULL) { - XCloseDisplay (dpy); - return NULL; - } - - arg = xmalloc (sizeof (struct closure)); - arg->dpy = dpy; - arg->ctx = ctx; - device = cairo_glx_device_create (dpy, ctx); - if (cairo_device_set_user_data (device, - (cairo_user_data_key_t *) cleanup, - arg, - cleanup)) - { - cleanup (arg); - return NULL; - } - - surface = cairo_gl_surface_create (device, - CAIRO_CONTENT_COLOR_ALPHA, - size, size); - cairo_device_destroy (device); - - return surface; -} - -CAIRO_TEST (gl_surface_source, - "Test using a GL surface as the source", - "source", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - preamble, draw) diff --git a/test/global.jb2 b/test/global.jb2 deleted file mode 100644 index 5a15498..0000000 Binary files a/test/global.jb2 and /dev/null differ diff --git a/test/glyph-cache-pressure.c b/test/glyph-cache-pressure.c deleted file mode 100644 index eb4f7c5..0000000 --- a/test/glyph-cache-pressure.c +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" -#include "cairo-boilerplate-scaled-font.h" - -#define TEXT_SIZE 12 - -/* Bug history - * - * 2006-06-22 Carl Worth - * - * This is a test case to demonstrate the following bug in the xlib backend: - * - * Some characters aren't displayed when using xlib (cache usage missing freeze/thaw) - * https://bugs.freedesktop.org/show_bug.cgi?id=6955 - * - * We replicate this bug by using the cairo_scaled_font_set_max_glyphs_per_font - * function to artificially induce cache pressure. (This function was added - * for this very purpose.) - * - * 2006-06-22 Carl Worth - * - * Bug was simple enough to solve by just adding a freeze/thaw pair - * around the scaled_font's glyph cache in - * _cairo_xlib_surface_show_glyphs, (I went ahead and added - * _cairo_sacled_font_freeze/thaw_cache functions for this). - */ - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - /* We draw in the default black, so paint white first. */ - cairo_save (cr); - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); /* white */ - cairo_paint (cr); - cairo_restore (cr); - - cairo_select_font_face (cr, CAIRO_TEST_FONT_FAMILY " Sans", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - cairo_set_font_size (cr, TEXT_SIZE); - - cairo_set_source_rgb (cr, 0, 0, 0); /* black */ - - cairo_boilerplate_scaled_font_set_max_glyphs_cached (cairo_get_scaled_font (cr), 1); - - cairo_move_to (cr, 1, TEXT_SIZE); - cairo_show_text (cr, "the five boxing wizards jump quickly"); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (glyph_cache_pressure, - "Ensure that all backends behave well under artificial glyph cache pressure", - "stress", /* keywords */ - NULL, /* requirements */ - 223, TEXT_SIZE + 4, - NULL, draw) diff --git a/test/gradient-alpha.c b/test/gradient-alpha.c deleted file mode 100644 index 24cd324..0000000 --- a/test/gradient-alpha.c +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_pattern_t *gradient; - - gradient = cairo_pattern_create_linear (0, -height, - 0, height); - cairo_pattern_add_color_stop_rgba (gradient, 0.0, - 1.0, 0.0, 0.0, - 1.0); - cairo_pattern_add_color_stop_rgba (gradient, 1.0, - 0.0, 0.0, 1.0, - 0.5); - - cairo_set_source (cr, gradient); - - cairo_paint (cr); - - cairo_pattern_destroy (gradient); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (gradient_alpha, - "Tests drawing of a gradient with various alpha values in the color stops", - "gradient, alpha", /* keywords */ - NULL, /* requirements */ - 10, 10, - NULL, draw) diff --git a/test/gradient-constant-alpha.c b/test/gradient-constant-alpha.c deleted file mode 100644 index 7640b6e..0000000 --- a/test/gradient-constant-alpha.c +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * Copyright © 2008 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - * Chris Wilson - */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_pattern_t *gradient; - - gradient = cairo_pattern_create_linear (0, 0, - 0, height); - cairo_pattern_add_color_stop_rgba (gradient, 0.0, - 1.0, 0.0, 0.0, - 0.5); - cairo_pattern_add_color_stop_rgba (gradient, 0.0, - 0.0, 1.0, 0.0, - 0.5); - cairo_pattern_add_color_stop_rgba (gradient, 1.0, - 0.0, 0.0, 1.0, - 0.5); - - cairo_set_source (cr, gradient); - - cairo_paint (cr); - - cairo_pattern_destroy (gradient); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (gradient_constant_alpha, - "Tests drawing of a gradient with constant alpha values in the color stops", - "gradient, alpha", /* keywords */ - NULL, - 10, 10, - NULL, draw) diff --git a/test/gradient-zero-stops-mask.c b/test/gradient-zero-stops-mask.c deleted file mode 100644 index b2a10ec..0000000 --- a/test/gradient-zero-stops-mask.c +++ /dev/null @@ -1,59 +0,0 @@ -/* -*- Mode: c; c-basic-offset: 4; indent-tabs-mode: t; tab-width: 8; -*- */ -/* - * Copyright © 2007 Brian Ewins - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Brian Ewins - * Contributor(s): - * Andrea Canciani - */ - -#include "cairo-test.h" - -/* This test case is designed to exercise the opaque test for - * gradients with no stop. - */ - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_pattern_t *pat; - - cairo_set_source_rgb (cr, 1., 0., 0.); - - pat = cairo_pattern_create_linear (0., 0., 1., 1.); - cairo_mask (cr, pat); - cairo_pattern_destroy (pat); - - pat = cairo_pattern_create_radial (0., 0., 0., 1., 1., 1.); - cairo_mask (cr, pat); - cairo_pattern_destroy (pat); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (gradient_zero_stops_mask, - "Verifies that gradients with no stops are considered clear.", - "gradient", /* keywords */ - NULL, /* requirements */ - 2, 2, - NULL, draw) diff --git a/test/gradient-zero-stops.c b/test/gradient-zero-stops.c deleted file mode 100644 index 57a91c5..0000000 --- a/test/gradient-zero-stops.c +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright © 2007 Brian Ewins - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Brian Ewins - */ - -#include "cairo-test.h" - -/* This test case is designed to exercise the following bug: - * - * Crash when trying to paint gradient with no stops - * https://bugzilla.mozilla.org/show_bug.cgi?id=407104 - */ - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_pattern_t *pat; - - pat = cairo_pattern_create_linear (0., 0., 1., 1.); - cairo_set_source (cr, pat); - cairo_paint (cr); - cairo_pattern_destroy (pat); - - pat = cairo_pattern_create_radial (0., 0., 0., 1., 1., 1.); - cairo_set_source (cr, pat); - cairo_paint (cr); - cairo_pattern_destroy (pat); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (gradient_zero_stops, - "Verifies that gradients with no stops don't cause problems.", - "gradient", /* keywords */ - NULL, /* requirements */ - 2, 2, - NULL, draw) diff --git a/test/group-clip.c b/test/group-clip.c deleted file mode 100644 index b99d861..0000000 --- a/test/group-clip.c +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright © Chris Wilson, 2008 - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Authors: Chris Wilson - * Larry Ewing - */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - cairo_rectangle (cr, 25, 25, width, height); - cairo_clip_preserve (cr); - cairo_push_group (cr); - cairo_set_source_rgb (cr, 0, 0, 1); - cairo_fill (cr); - cairo_rectangle (cr, 0, 0, width, height); - cairo_pop_group_to_source (cr); - cairo_paint (cr); - - cairo_reset_clip (cr); - cairo_clip_preserve (cr); - cairo_set_source_rgba (cr, 1, 0, 0, .5); - cairo_paint (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (group_clip, - "test preserving paths across groups", - "group", /* keywords */ - NULL, /* requirements */ - 40 + 25, 40 + 25, - NULL, draw) diff --git a/test/group-paint.c b/test/group-paint.c deleted file mode 100644 index 3854485..0000000 --- a/test/group-paint.c +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright © Chris Wilson, 2008 - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Authors: Chris Wilson - */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_push_group (cr); - - cairo_set_source_rgb (cr, 0, 0, 1); - cairo_paint (cr); - - cairo_pop_group_to_source (cr); - cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); - cairo_paint (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (group_paint, - "test push_group(); pop_group_to_source(); set_operator(SOURCE); paint();", - "group", /* keywords */ - NULL, /* requirements */ - 10, 10, - NULL, draw) diff --git a/test/group-state.c b/test/group-state.c deleted file mode 100644 index a96b2e3..0000000 --- a/test/group-state.c +++ /dev/null @@ -1,96 +0,0 @@ -/* -*- Mode: c; c-basic-offset: 4; indent-tabs-mode: t; tab-width: 8; -*- */ -/* - * Copyright 2011 Andrea Canciani - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Andrea Canciani - */ - -#include "cairo-test.h" - -#define CHECK_STATUS(status) \ - do { \ - if (cairo_status (cr) != (status)) { \ - cairo_test_log (ctx, "Expected status: %s\n", \ - cairo_status_to_string (status)); \ - cairo_test_log (ctx, "Actual status: %s\n", \ - cairo_status_to_string (cairo_status (cr))); \ - result = CAIRO_TEST_FAILURE; \ - } \ - } while (0) - -static void -reinit_cairo (cairo_t **cr) -{ - if (*cr) - cairo_destroy (*cr); - - *cr = cairo_create (cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 1, 1)); - cairo_surface_destroy (cairo_get_target (*cr)); -} - -static cairo_test_status_t -preamble (cairo_test_context_t *ctx) -{ - cairo_t *cr; - cairo_test_status_t result = CAIRO_TEST_SUCCESS; - - cr = NULL; - - reinit_cairo (&cr); - - /* cairo_restore() must fail with CAIRO_STATUS_INVALID_RESTORE if - * no matching cairo_save() call has been performed. */ - cairo_test_log (ctx, "Checking save(); push(); restore();\n"); - cairo_save (cr); - CHECK_STATUS (CAIRO_STATUS_SUCCESS); - cairo_push_group (cr); - CHECK_STATUS (CAIRO_STATUS_SUCCESS); - cairo_restore (cr); - CHECK_STATUS (CAIRO_STATUS_INVALID_RESTORE); - - - reinit_cairo (&cr); - - /* cairo_restore() must fail with CAIRO_STATUS_INVALID_RESTORE if - * no matching cairo_save() call has been performed. */ - cairo_test_log (ctx, "Checking push(); save(); pop();\n"); - cairo_push_group (cr); - CHECK_STATUS (CAIRO_STATUS_SUCCESS); - cairo_save (cr); - CHECK_STATUS (CAIRO_STATUS_SUCCESS); - cairo_pop_group_to_source (cr); - CHECK_STATUS (CAIRO_STATUS_INVALID_POP_GROUP); - - - cairo_destroy (cr); - - return result; -} - -CAIRO_TEST (group_state, - "Tests the interaction between state (cairo_save, cairo_restore) " - "and group (cairo_push_group/cairo_pop_group) API", - "api", /* keywords */ - NULL, /* requirements */ - 0, 0, - preamble, NULL) diff --git a/test/group-unaligned.c b/test/group-unaligned.c deleted file mode 100644 index 9124a03..0000000 --- a/test/group-unaligned.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright © Chris Wilson, 2008 - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Authors: Chris Wilson - * Stefan Röllin - */ - -#include "cairo-test.h" - -static void -circle (cairo_t* cr, double xc, double yc, double radius) -{ - cairo_arc (cr, xc, yc, radius, 0.0, 2*M_PI); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - cairo_set_source_rgb (cr, 1, 0, 0); - circle (cr, 12.5, 12.5, 10.); - cairo_fill (cr); - - cairo_push_group (cr); - cairo_set_source_rgb (cr, 0, 0, 1); - circle (cr, 12.5, 12.5, 10.); - cairo_fill (cr); - cairo_pop_group_to_source (cr); - cairo_paint (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (group_unaligned, - "test non-integer sized sub-surface", - "group", /* keywords */ - NULL, /* requirements */ - 35.5, 35.5, - NULL, draw) diff --git a/test/half-coverage.c b/test/half-coverage.c deleted file mode 100644 index 38cafda..0000000 --- a/test/half-coverage.c +++ /dev/null @@ -1,155 +0,0 @@ -/* - * Copyright 2010 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -/* Test the fidelity of the rasterisation, because Cairo is my favourite - * driver test suite. - */ - -#define SIZE 256 -#define WIDTH 2 -#define HEIGHT 10 - -static cairo_test_status_t -rectangles (cairo_t *cr, int width, int height) -{ - int i; - - cairo_set_source_rgb (cr, 1.0, 0.0, 0.0); - cairo_paint (cr); - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); - - for (i = 1; i <= SIZE; i++) { - int x, y; - - cairo_save (cr); - cairo_rectangle (cr, 0, 0, WIDTH, HEIGHT); - cairo_clip (cr); - - cairo_scale (cr, 1./SIZE, 1./SIZE); - for (x = -i; x < SIZE*WIDTH; x += 2*i) { - for (y = -i; y < SIZE*HEIGHT; y += 2*i) { - /* Add a little tile composed of two non-overlapping squares - * +--+ - * | | - * |__|__ - * | | - * | | - * +--+ - */ - cairo_rectangle (cr, x, y, i, i); - cairo_rectangle (cr, x+i, y+i, i, i); - } - } - cairo_fill (cr); - cairo_restore (cr); - - cairo_translate (cr, WIDTH, 0); - } - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -triangles (cairo_t *cr, int width, int height) -{ - int i; - - cairo_set_source_rgb (cr, 1.0, 0.0, 0.0); - cairo_paint (cr); - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); - - for (i = 1; i <= SIZE; i++) { - int x, y; - - cairo_save (cr); - cairo_rectangle (cr, 0, 0, WIDTH, HEIGHT); - cairo_clip (cr); - - cairo_scale (cr, 1./SIZE, 1./SIZE); - for (x = -i; x < SIZE*WIDTH; x += 2*i) { - for (y = -i; y < SIZE*HEIGHT; y += 2*i) { - /* Add a tile composed of four non-overlapping - * triangles. The plus and minus signs inside the - * triangles denote the orientation of the triangle's - * edges: + for clockwise and - for anticlockwise. - * - * +-----+ - * \-|+/ - * \|/ - * /|\ - * /-|-\ - * +-----+ - */ - - /* top left triangle */ - cairo_move_to (cr, x, y); - cairo_line_to (cr, x+i, y+i); - cairo_line_to (cr, x+i, y); - cairo_close_path (cr); - - /* top right triangle */ - cairo_move_to (cr, x+i, y); - cairo_line_to (cr, x+2*i, y); - cairo_line_to (cr, x+i, y+i); - cairo_close_path (cr); - - /* bottom left triangle */ - cairo_move_to (cr, x+i, y+i); - cairo_line_to (cr, x, y+2*i); - cairo_line_to (cr, x+i, y+2*i); - cairo_close_path (cr); - - /* bottom right triangle */ - cairo_move_to (cr, x+i, y+i); - cairo_line_to (cr, x+i, y+2*i); - cairo_line_to (cr, x+2*i, y+2*i); - cairo_close_path (cr); - } - } - cairo_fill (cr); - cairo_restore (cr); - - cairo_translate (cr, WIDTH, 0); - } - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (half_coverage_rectangles, - "Check the fidelity of the rasterisation.", - NULL, /* keywords */ - "target=raster slow", /* requirements */ - WIDTH * SIZE, HEIGHT, - NULL, rectangles) - -CAIRO_TEST (half_coverage_triangles, - "Check the fidelity of the rasterisation.", - NULL, /* keywords */ - "target=raster slow", /* requirements */ - WIDTH * SIZE, HEIGHT, - NULL, triangles) diff --git a/test/halo.c b/test/halo.c deleted file mode 100644 index 30064e5..0000000 --- a/test/halo.c +++ /dev/null @@ -1,158 +0,0 @@ -/* - * Copyright 2010 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -/* Try to replicate the misbehaviour of show_glyphs() versus glyph_path() - * in the PDF backend reported by Ian Britten. - */ - -static void -halo_around_path (cairo_t *cr, const char *str) -{ - cairo_text_path (cr, str); - - cairo_set_source_rgb (cr, 0, .5, 1); - cairo_stroke_preserve (cr); - cairo_set_source_rgb (cr, 1, .5, 0); - cairo_fill (cr); -} - -static void -halo_around_text (cairo_t *cr, const char *str) -{ - double x, y; - - cairo_get_current_point (cr, &x, &y); - cairo_text_path (cr, str); - - cairo_set_source_rgb (cr, 0, .5, 1); - cairo_stroke(cr); - - cairo_set_source_rgb (cr, 1, .5, 0); - cairo_move_to (cr, x, y); - cairo_show_text (cr, str); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - const char *string = "0123456789"; - cairo_text_extents_t extents; - - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - cairo_text_extents (cr, string, &extents); - - cairo_set_font_size (cr, 12); - cairo_set_line_width (cr, 3); - cairo_move_to (cr, 9, 4 + extents.height); - halo_around_path (cr, string); - - cairo_move_to (cr, 109, 4 + extents.height); - halo_around_text (cr, string); - - cairo_set_font_size (cr, 6); - cairo_set_line_width (cr, 3); - cairo_move_to (cr, 19 + extents.width, 20 + extents.height); - halo_around_path (cr, "0"); - - cairo_move_to (cr, 119 + extents.width, 20 + extents.height); - halo_around_text (cr, "0"); - - cairo_set_font_size (cr, 64); - cairo_set_line_width (cr, 10); - cairo_move_to (cr, 8, 70); - halo_around_path (cr, "6"); - cairo_move_to (cr, 32, 90); - halo_around_path (cr, "7"); - - cairo_move_to (cr, 108, 70); - halo_around_text (cr, "6"); - cairo_move_to (cr, 132, 90); - halo_around_text (cr, "7"); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -draw_transform (cairo_t *cr, int width, int height) -{ - const char *string = "0123456789"; - cairo_text_extents_t extents; - - cairo_translate (cr, 50, 50); - cairo_scale (cr, M_SQRT2, M_SQRT2); - - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - cairo_text_extents (cr, string, &extents); - - cairo_set_line_width (cr, 3); - cairo_move_to (cr, 9, 4 + extents.height); - halo_around_path (cr, string); - - cairo_move_to (cr, 109, 4 + extents.height); - halo_around_text (cr, string); - - cairo_set_font_size (cr, 6); - cairo_set_line_width (cr, 3); - cairo_move_to (cr, 19 + extents.width, 20 + extents.height); - halo_around_path (cr, "0"); - - cairo_move_to (cr, 119 + extents.width, 20 + extents.height); - halo_around_text (cr, "0"); - - cairo_set_font_size (cr, 64); - cairo_set_line_width (cr, 10); - cairo_move_to (cr, 8, 70); - halo_around_path (cr, "6"); - cairo_move_to (cr, 32, 90); - halo_around_path (cr, "7"); - - cairo_move_to (cr, 108, 70); - halo_around_text (cr, "6"); - cairo_move_to (cr, 132, 90); - halo_around_text (cr, "7"); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (halo, - "Check the show_glyphs() vs glyph_path()", - "text", /* keywords */ - NULL, /* requirements */ - 200, 100, - NULL, draw) - -CAIRO_TEST (halo_transform, - "Check the show_glyphs() vs glyph_path()", - "text", /* keywords */ - NULL, /* requirements */ - 400, 200, - NULL, draw_transform) diff --git a/test/hatchings.c b/test/hatchings.c deleted file mode 100644 index ca3f2c6..0000000 --- a/test/hatchings.c +++ /dev/null @@ -1,153 +0,0 @@ -/* - * Copyright © 2011 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -#define STEP 5 -#define WIDTH 100 -#define HEIGHT 100 - -static void hatching (cairo_t *cr) -{ - int i; - - cairo_rectangle (cr, 0, 0, WIDTH, HEIGHT); - cairo_clip (cr); - - for (i = 0; i < WIDTH; i += STEP) { - cairo_rectangle (cr, i-1, -2, 2, HEIGHT+4); - cairo_rectangle (cr, -2, i-1, WIDTH+4, 2); - } -} - -static void background (cairo_t *cr) -{ - cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); - cairo_set_source_rgb (cr, 1,1,1); - cairo_paint (cr); -} - -static void clip_to_quadrant (cairo_t *cr) -{ - cairo_rectangle (cr, 0, 0, WIDTH, HEIGHT); - cairo_clip (cr); -} - -static void draw_hatching (cairo_t *cr, void (*func) (cairo_t *)) -{ - cairo_save (cr); { - clip_to_quadrant (cr); - hatching (cr); - func (cr); - } cairo_restore (cr); - - cairo_translate (cr, WIDTH, 0); - - cairo_save (cr); { - clip_to_quadrant (cr); - cairo_translate (cr, 0.25, 0.25); - hatching (cr); - func (cr); - } cairo_restore (cr); - - cairo_translate (cr, WIDTH, 0); - - cairo_save (cr); { - clip_to_quadrant (cr); - cairo_translate (cr, WIDTH/2, HEIGHT/2); - cairo_rotate (cr, M_PI/4); - cairo_translate (cr, -WIDTH/2, -HEIGHT/2); - hatching (cr); - func (cr); - } cairo_restore (cr); - - cairo_translate (cr, WIDTH, 0); -} - -static void do_clip (cairo_t *cr) -{ - cairo_clip (cr); - cairo_paint (cr); -} - -static void do_clip_alpha (cairo_t *cr) -{ - cairo_clip (cr); - cairo_paint_with_alpha (cr, .5); -} - -static void hatchings (cairo_t *cr, void (*func) (cairo_t *)) -{ - cairo_save (cr); { - cairo_set_source_rgb(cr, 1, 0, 0); - cairo_set_antialias (cr, CAIRO_ANTIALIAS_DEFAULT); - draw_hatching (cr, func); - cairo_set_source_rgb(cr, 0, 0, 1); - cairo_set_antialias (cr, CAIRO_ANTIALIAS_NONE); - draw_hatching (cr, func); - } cairo_restore (cr); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - background (cr); - - - /* aligned, misaligned, diagonal; mono repeat - * x fill - * x clip; paint - * x clip; paint-alpha - * repeated, for over/source - */ - - cairo_set_operator (cr, CAIRO_OPERATOR_OVER); - - hatchings (cr, cairo_fill); - cairo_translate (cr, 0, HEIGHT); - hatchings (cr, do_clip); - cairo_translate (cr, 0, HEIGHT); - hatchings (cr, do_clip_alpha); - cairo_translate (cr, 0, HEIGHT); - - cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); - - hatchings (cr, cairo_fill); - cairo_translate (cr, 0, HEIGHT); - hatchings (cr, do_clip); - cairo_translate (cr, 0, HEIGHT); - hatchings (cr, do_clip_alpha); - cairo_translate (cr, 0, HEIGHT); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (hatchings, - "Test drawing through various aligned/unaliged clips", - "clip, alpha", /* keywords */ - "target=raster", /* requirements */ - 6*WIDTH, 6*HEIGHT, - NULL, draw) diff --git a/test/horizontal-clip.c b/test/horizontal-clip.c deleted file mode 100644 index 93127a7..0000000 --- a/test/horizontal-clip.c +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright 2011 Intel Corporation - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -/* Exercises a bug spotted by Andrea Canciani where the polygon clipping - * code was hopeless broken with horizontal edges. - */ - -#include "cairo-test.h" - -#define WIDTH 16 -#define HEIGHT 26 - -#define BUGY 1 -#define BUGX (4 * BUGY * WIDTH * 256) - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - cairo_set_source_rgb (cr, 0, 0, 0); - - cairo_move_to (cr, - BUGX, 6 - BUGY); - cairo_line_to (cr, + BUGX, 6 + BUGY); - cairo_line_to (cr, WIDTH + BUGX, 2 - BUGY); - cairo_line_to (cr, WIDTH - BUGX, 2 + BUGY); - cairo_fill (cr); - - cairo_move_to (cr, WIDTH + BUGX, 8 - BUGY); - cairo_line_to (cr, WIDTH - BUGX, 8 + BUGY); - cairo_line_to (cr, - BUGX, 12 - BUGY); - cairo_line_to (cr, + BUGX, 12 + BUGY); - cairo_fill (cr); - - cairo_move_to (cr, - BUGX, 14 - BUGY); - cairo_line_to (cr, + BUGX, 14 + BUGY); - cairo_line_to (cr, WIDTH + BUGX, 18 - BUGY); - cairo_line_to (cr, WIDTH - BUGX, 18 + BUGY); - cairo_fill (cr); - - cairo_move_to (cr, WIDTH + BUGX, 24 - BUGY); - cairo_line_to (cr, WIDTH - BUGX, 24 + BUGY); - cairo_line_to (cr, - BUGX, 20 - BUGY); - cairo_line_to (cr, + BUGX, 20 + BUGY); - cairo_fill (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (horizontal_clip, - "Tests intersection of a nearly horizontal lines with a clipped polygon", - "clip, fill", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/huge-linear.c b/test/huge-linear.c deleted file mode 100644 index f84b4ea..0000000 --- a/test/huge-linear.c +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright © 2006 Benjamin Otte - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Benjamin Otte - */ - -#include "cairo-test.h" - -/* set this to 0.1 to make this test work */ -#define FACTOR 1.e6 - -/* XXX poppler-cairo doesn't handle gradients very well... */ - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_pattern_t *pattern; - cairo_matrix_t mat = { - 0, -4.5254285714285709 * FACTOR, - -2.6398333333333333 * FACTOR, 0, - 0, 0 - }; - - pattern = cairo_pattern_create_linear (-16384 * FACTOR, 0, - 16384 * FACTOR, 0); - cairo_pattern_add_color_stop_rgba (pattern, - 0, 0.376471, 0.533333, 0.27451, 1); - cairo_pattern_add_color_stop_rgba (pattern, 1, 1, 1, 1, 1); - cairo_pattern_set_matrix (pattern, &mat); - - cairo_scale (cr, 0.05, 0.05); - cairo_translate (cr, 6000, 3500); - - cairo_set_source (cr, pattern); - cairo_rectangle (cr, -6000, -3500, 12000, 7000); - cairo_pattern_destroy (pattern); - cairo_fill (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (huge_linear, - "Test huge linear patterns", - "gradient, linear", /* keywords */ - NULL, /* requirements */ - 600, 350, - NULL, draw) diff --git a/test/huge-radial.c b/test/huge-radial.c deleted file mode 100644 index 21524b7..0000000 --- a/test/huge-radial.c +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright © 2006 Benjamin Otte - * Copyright © 2009 Chris Wilson - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Benjamin Otte - * Chris Wilson - */ - -#include "cairo-test.h" - -/* set this to 0.1 to make this test work */ -#define FACTOR 1.e6 - -/* XXX poppler-cairo doesn't handle gradients very well... */ - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_pattern_t *pattern; - cairo_matrix_t mat = { - 0, -4.5254285714285709 * FACTOR, - -2.6398333333333333 * FACTOR, 0, - 0, 0 - }; - - pattern = cairo_pattern_create_radial (0, 0, 0, - 0, 0, 16384 * FACTOR); - cairo_pattern_add_color_stop_rgba (pattern, - 0, 0.376471, 0.533333, 0.27451, 1); - cairo_pattern_add_color_stop_rgba (pattern, 1, 1, 1, 1, 1); - cairo_pattern_set_matrix (pattern, &mat); - - cairo_scale (cr, 0.05, 0.05); - cairo_translate (cr, 6000, 3500); - - cairo_set_source (cr, pattern); - cairo_rectangle (cr, -6000, -3500, 12000, 7000); - cairo_pattern_destroy (pattern); - cairo_fill (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (huge_radial, - "Test huge radial patterns", - "gradient, radial", /* keywords */ - NULL, /* requirements */ - 600, 350, - NULL, draw) diff --git a/test/image-bug-710072.c b/test/image-bug-710072.c deleted file mode 100644 index 9cf0da7..0000000 --- a/test/image-bug-710072.c +++ /dev/null @@ -1,80 +0,0 @@ -/* -*- Mode: c; c-basic-offset: 4; indent-tabs-mode: t; tab-width: 8; -*- */ -/* - * Copyright 2011 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Chris Wilson - */ - -/* - * This test case aims to reproduce the misbehaviour exhibited in - * https://bugs.launchpad.net/ubuntu/+source/cairo/+bug/710072 - * i.e. out of bounds rendering with the rectangular span compositor. - */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw_aligned (cairo_t *cr, int width, int height) -{ - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - cairo_rectangle (cr, -10, -10, 20, 20); - cairo_rectangle (cr, 5, 5, 20, 20); - cairo_set_source_rgb (cr, 0, 0, 0); - cairo_fill_preserve (cr); - cairo_set_source_rgba (cr, 1, 0, 0, .5); - cairo_stroke (cr); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -draw_unaligned (cairo_t *cr, int width, int height) -{ - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - cairo_rectangle (cr, -10.5, -10.5, 20, 20); - cairo_rectangle (cr, 5.5, 5.5, 20, 20); - cairo_set_source_rgb (cr, 0, 0, 0); - cairo_fill_preserve (cr); - cairo_set_source_rgba (cr, 1, 0, 0, .5); - cairo_stroke (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (image_bug_710072_aligned, - "Tests a bug where we may compute spans greater than bounded extents", - "extents, fill, stroke", /* keywords */ - NULL, /* requirements */ - 15, 15, - NULL, draw_aligned) - -CAIRO_TEST (image_bug_710072_unaligned, - "Tests a bug where we may compute spans greater than bounded extents", - "extents, fill, stroke", /* keywords */ - NULL, /* requirements */ - 15, 15, - NULL, draw_unaligned) diff --git a/test/image-surface-source.c b/test/image-surface-source.c deleted file mode 100644 index c7c1fdc..0000000 --- a/test/image-surface-source.c +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright © 2008 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -#include "surface-source.c" - -static cairo_surface_t * -create_source_surface (int size) -{ - return cairo_image_surface_create (CAIRO_FORMAT_ARGB32, size, size); -} - -CAIRO_TEST (image_surface_source, - "Test using a image surface as the source", - "source", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - preamble, draw) diff --git a/test/image1.jb2 b/test/image1.jb2 deleted file mode 100644 index 882ca95..0000000 Binary files a/test/image1.jb2 and /dev/null differ diff --git a/test/image2.jb2 b/test/image2.jb2 deleted file mode 100644 index 48e4146..0000000 Binary files a/test/image2.jb2 and /dev/null differ diff --git a/test/imagediff.c b/test/imagediff.c deleted file mode 100644 index 6ebbcfc..0000000 --- a/test/imagediff.c +++ /dev/null @@ -1,303 +0,0 @@ -/* imagediff - Compare two images - * - * Copyright © 2004 Richard D. Worth - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of Richard Worth - * not be used in advertising or publicity pertaining to distribution - * of the software without specific, written prior permission. - * Richard Worth makes no representations about the suitability of this - * software for any purpose. It is provided "as is" without express - * or implied warranty. - * - * RICHARD WORTH DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN - * NO EVENT SHALL RICHARD WORTH BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS - * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, - * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Richard D. Worth */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include -#include -#ifdef HAVE_UNISTD_H -#include -#endif -#include - -#include "buffer-diff.h" - -static void -_xunlink (const char *pathname) -{ - if (unlink (pathname) < 0 && errno != ENOENT) { - fprintf (stderr, " Error: Cannot remove %s: %s\n", - pathname, strerror (errno)); - exit (1); - } -} - -void -cairo_test_logv (const cairo_test_context_t *ctx, - const char *fmt, va_list va) -{ - vfprintf (stderr, fmt, va); -} - -void -cairo_test_log (const cairo_test_context_t *ctx, const char *fmt, ...) -{ - va_list va; - - va_start (va, fmt); - vfprintf (stderr, fmt, va); - va_end (va); -} - -/* Flatten an ARGB surface by blending it over white. The resulting - * surface, (still in ARGB32 format, but with only alpha==1.0 - * everywhere) is returned in the same surface pointer. - * - * The original surface will be destroyed. - * - * The (x,y) value specify an origin of interest for the original - * image. The flattened image will be generated only from the box - * extending from (x,y) to (width,height). - */ -static void -flatten_surface (cairo_surface_t **surface, int x, int y) -{ - cairo_surface_t *flat; - cairo_t *cr; - - flat = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, - cairo_image_surface_get_width (*surface) - x, - cairo_image_surface_get_height (*surface) - y); - cairo_surface_set_device_offset (flat, -x, -y); - - cr = cairo_create (flat); - cairo_surface_destroy (flat); - - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - cairo_set_source_surface (cr, *surface, 0, 0); - cairo_surface_destroy (*surface); - cairo_paint (cr); - - *surface = cairo_surface_reference (cairo_get_target (cr)); - cairo_destroy (cr); -} - -/* Given an image surface, create a new surface that has the same - * contents as the sub-surface with its origin at x,y. - * - * The original surface will be destroyed. - */ -static void -extract_sub_surface (cairo_surface_t **surface, int x, int y) -{ - cairo_surface_t *sub; - cairo_t *cr; - - sub = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, - cairo_image_surface_get_width (*surface) - x, - cairo_image_surface_get_height (*surface) - y); - - /* We don't use a device offset like flatten_surface. That's not - * for any important reason, (the results should be - * identical). This style just seemed more natural to me this - * time, so I'm leaving both here so I can look at both to see - * which I like better. */ - cr = cairo_create (sub); - cairo_surface_destroy (sub); - - cairo_set_source_surface (cr, *surface, -x, -y); - cairo_surface_destroy (*surface); - cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); - cairo_paint (cr); - - *surface = cairo_surface_reference (cairo_get_target (cr)); - cairo_destroy (cr); -} - -static cairo_status_t -stdio_write_func (void *closure, const unsigned char *data, unsigned int length) -{ - FILE *file = closure; - - if (fwrite (data, 1, length, file) != length) - return CAIRO_STATUS_WRITE_ERROR; - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -write_png (cairo_surface_t *surface, const char *filename) -{ - cairo_status_t status; - FILE *png_file; - - if (filename != NULL) { - png_file = fopen (filename, "wb"); - if (png_file == NULL) { - switch (errno) { - case ENOMEM: - return CAIRO_STATUS_NO_MEMORY; - default: - return CAIRO_STATUS_WRITE_ERROR; - } - } - } else - png_file = stdout; - - status = cairo_surface_write_to_png_stream (surface, - stdio_write_func, - png_file); - - if (png_file != stdout) - fclose (png_file); - - return status; -} - -static cairo_status_t -png_diff (const char *filename_a, - const char *filename_b, - const char *filename_diff, - int ax, - int ay, - int bx, - int by, - buffer_diff_result_t *result) -{ - cairo_surface_t *surface_a; - cairo_surface_t *surface_b; - cairo_surface_t *surface_diff; - cairo_status_t status; - - surface_a = cairo_image_surface_create_from_png (filename_a); - status = cairo_surface_status (surface_a); - if (status) { - fprintf (stderr, "Error: Failed to create surface from %s: %s\n", - filename_a, cairo_status_to_string (status)); - return status; - } - - surface_b = cairo_image_surface_create_from_png (filename_b); - status = cairo_surface_status (surface_b); - if (status) { - fprintf (stderr, "Error: Failed to create surface from %s: %s\n", - filename_b, cairo_status_to_string (status)); - cairo_surface_destroy (surface_a); - return status; - } - - if (ax || ay) { - extract_sub_surface (&surface_a, ax, ay); - ax = ay = 0; - } - - if (bx || by) { - extract_sub_surface (&surface_b, bx, by); - bx = by = 0; - } - - status = cairo_surface_status (surface_a); - if (status) { - fprintf (stderr, "Error: Failed to extract surface from %s: %s\n", - filename_a, cairo_status_to_string (status)); - cairo_surface_destroy (surface_a); - cairo_surface_destroy (surface_b); - return status; - } - status = cairo_surface_status (surface_b); - if (status) { - fprintf (stderr, "Error: Failed to extract surface from %s: %s\n", - filename_b, cairo_status_to_string (status)); - cairo_surface_destroy (surface_a); - cairo_surface_destroy (surface_b); - return status; - } - - surface_diff = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, - cairo_image_surface_get_width (surface_a), - cairo_image_surface_get_height (surface_a)); - status = cairo_surface_status (surface_diff); - if (status) { - fprintf (stderr, - "Error: Failed to allocate surface to hold differences\n"); - cairo_surface_destroy (surface_a); - cairo_surface_destroy (surface_b); - return CAIRO_STATUS_NO_MEMORY; - } - - status = image_diff (NULL, - surface_a, surface_b, surface_diff, - result); - - if (filename_diff) - _xunlink (filename_diff); - - if (status == CAIRO_STATUS_SUCCESS && - result->pixels_changed) - { - status = write_png (surface_diff, filename_diff); - } - - cairo_surface_destroy (surface_a); - cairo_surface_destroy (surface_b); - cairo_surface_destroy (surface_diff); - - return status; -} - -int -main (int argc, char *argv[]) -{ - buffer_diff_result_t result; - cairo_status_t status; - - unsigned int ax, ay, bx, by; - - if (argc != 3 && argc != 7) { - fprintf (stderr, "Usage: %s image1.png image2.png [ax ay bx by]\n", argv[0]); - fprintf (stderr, "Computes an output image designed to present a \"visual diff\" such that even\n"); - fprintf (stderr, "small errors in single pixels are readily apparent in the output.\n"); - fprintf (stderr, "The output image is written on stdout.\n"); - exit (1); - } - - if (argc == 7) { - ax = strtoul (argv[3], NULL, 0); - ay = strtoul (argv[4], NULL, 0); - bx = strtoul (argv[5], NULL, 0); - by = strtoul (argv[6], NULL, 0); - } else { - ax = ay = bx = by = 0; - } - - status = png_diff (argv[1], argv[2], NULL, ax, ay, bx, by, &result); - - if (status) { - fprintf (stderr, "Error comparing images: %s\n", - cairo_status_to_string (status)); - return 1; - } - - if (result.pixels_changed) - fprintf (stderr, "Total pixels changed: %d with a maximum channel difference of %d.\n", - result.pixels_changed, - result.max_diff); - - return (result.pixels_changed != 0); -} diff --git a/test/implicit-close.c b/test/implicit-close.c deleted file mode 100644 index 2529bb0..0000000 --- a/test/implicit-close.c +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright © 2009 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -#define SIZE 40 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - cairo_move_to (cr, SIZE, 0); - cairo_rel_line_to (cr, 0, SIZE); - cairo_rel_line_to (cr, -SIZE, 0); - - cairo_set_source_rgb (cr, 0, 0, 0); - cairo_fill_preserve (cr); - - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_stroke (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (implicit_close, - "Test implicitly closing paths", - "fill", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, draw) diff --git a/test/in-fill-empty-trapezoid.c b/test/in-fill-empty-trapezoid.c deleted file mode 100644 index 0797399..0000000 --- a/test/in-fill-empty-trapezoid.c +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright © 2006 M Joonas Pihlaja - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: M Joonas Pihlaja - */ - -/* Bug history - * - * 2006-12-05 M Joonas Pihlaja - * - * The cairo_in_fill () function can sometimes produce false - * positives when the tessellator produces empty trapezoids - * and the query point lands exactly on a trapezoid edge. - */ - -#include "cairo-test.h" - -static cairo_test_status_t -preamble (cairo_test_context_t *ctx) -{ - int x,y; - int width = 10; - int height = 10; - cairo_surface_t *surf; - cairo_t *cr; - int false_positive_count = 0; - cairo_status_t status; - cairo_test_status_t ret; - - surf = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, width, height); - cr = cairo_create (surf); - cairo_surface_destroy (surf); - - /* Empty horizontal trapezoid. */ - cairo_move_to (cr, 0, height/3); - cairo_line_to (cr, width, height/3); - cairo_close_path (cr); - - /* Empty non-horizontal trapezoid #1. */ - cairo_move_to (cr, 0, 0); - cairo_line_to (cr, width, height/2); - cairo_close_path (cr); - - /* Empty non-horizontal trapezoid #2 intersecting #1. */ - cairo_move_to (cr, 0, height/2); - cairo_line_to (cr, width, 0); - cairo_close_path (cr); - - status = cairo_status (cr); - - /* Point sample the tessellated path. */ - for (y = 0; y < height; y++) { - for (x = 0; x < width; x++) { - if (cairo_in_fill (cr, x, y)) { - false_positive_count++; - } - } - } - cairo_destroy (cr); - - /* Check that everything went well. */ - ret = CAIRO_TEST_SUCCESS; - if (CAIRO_STATUS_SUCCESS != status) { - cairo_test_log (ctx, "Failed to create a test surface and path: %s\n", - cairo_status_to_string (status)); - ret = CAIRO_TEST_XFAILURE; - } - - if (0 != false_positive_count) { - cairo_test_log (ctx, "Point sampling found %d false positives " - "from cairo_in_fill()\n", - false_positive_count); - ret = CAIRO_TEST_XFAILURE; - } - - return ret; -} - -/* - * XFAIL: The cairo_in_fill () function can sometimes produce false positives - * when the tessellator produces empty trapezoids and the query point lands - * exactly on a trapezoid edge. - */ -CAIRO_TEST (in_fill_empty_trapezoid, - "Test that the tessellator isn't producing obviously empty trapezoids", - "in, trap", /* keywords */ - NULL, /* requirements */ - 0, 0, - preamble, NULL) diff --git a/test/in-fill-trapezoid.c b/test/in-fill-trapezoid.c deleted file mode 100644 index 84b323a..0000000 --- a/test/in-fill-trapezoid.c +++ /dev/null @@ -1,279 +0,0 @@ -/* - * Copyright © 2008 Chris Wilson - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -static cairo_test_status_t -preamble (cairo_test_context_t *ctx) -{ - cairo_test_status_t ret = CAIRO_TEST_SUCCESS; - cairo_surface_t *surface; - cairo_t *cr; - - surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 0, 0); - cr = cairo_create (surface); - cairo_surface_destroy (surface); - - cairo_set_fill_rule (cr, CAIRO_FILL_RULE_EVEN_ODD); - - /* simple rectangle */ - cairo_new_path (cr); - cairo_rectangle (cr, -10, -10, 20, 20); - if (! cairo_in_fill (cr, 0, 0)) { - cairo_test_log (ctx, "Error: Failed to find point inside rectangle\n"); - ret = CAIRO_TEST_FAILURE; - } - - /* rectangular boundary tests */ - if (! cairo_in_fill (cr, -10, -10)) { - cairo_test_log (ctx, "Error: Failed to find top-left vertex inside rectangle\n"); - ret = CAIRO_TEST_FAILURE; - } - if (! cairo_in_fill (cr, -10, 10)) { - cairo_test_log (ctx, "Error: Failed to find bottom-left vertex inside rectangle\n"); - ret = CAIRO_TEST_FAILURE; - } - if (! cairo_in_fill (cr, 10, -10)) { - cairo_test_log (ctx, "Error: Failed to find top-right vertex inside rectangle\n"); - ret = CAIRO_TEST_FAILURE; - } - if (! cairo_in_fill (cr, 10, 10)) { - cairo_test_log (ctx, "Error: Failed to find bottom-right vertex inside rectangle\n"); - ret = CAIRO_TEST_FAILURE; - } - if (! cairo_in_fill (cr, -10, 0)) { - cairo_test_log (ctx, "Error: Failed to find left edge inside rectangle\n"); - ret = CAIRO_TEST_FAILURE; - } - if (! cairo_in_fill (cr, 0, -10)) { - cairo_test_log (ctx, "Error: Failed to find top edge inside rectangle\n"); - ret = CAIRO_TEST_FAILURE; - } - if (! cairo_in_fill (cr, 10, 0)) { - cairo_test_log (ctx, "Error: Failed to find right edge inside rectangle\n"); - ret = CAIRO_TEST_FAILURE; - } - if (! cairo_in_fill (cr, 0, 10)) { - cairo_test_log (ctx, "Error: Failed to find bottom edge inside rectangle\n"); - ret = CAIRO_TEST_FAILURE; - } - - /* simple circle */ - cairo_new_path (cr); - cairo_arc (cr, 0, 0, 10, 0, 2 * M_PI); - if (! cairo_in_fill (cr, 0, 0)) { - cairo_test_log (ctx, "Error: Failed to find point inside circle [even-odd]\n"); - ret = CAIRO_TEST_FAILURE; - } - - /* holey rectangle */ - cairo_new_path (cr); - cairo_rectangle (cr, -10, -10, 20, 20); - cairo_rectangle (cr, -5, -5, 10, 10); - if (cairo_in_fill (cr, 0, 0)) { - cairo_test_log (ctx, "Error: Found an unexpected point inside rectangular eo-hole\n"); - ret = CAIRO_TEST_FAILURE; - } - - /* holey circle */ - cairo_new_path (cr); - cairo_arc (cr, 0, 0, 10, 0, 2 * M_PI); - cairo_arc (cr, 0, 0, 5, 0, 2 * M_PI); - if (cairo_in_fill (cr, 0, 0)) { - cairo_test_log (ctx, "Error: Found an unexpected point inside circular eo-hole\n"); - ret = CAIRO_TEST_FAILURE; - } - - - cairo_set_fill_rule (cr, CAIRO_FILL_RULE_WINDING); - - /* simple rectangle */ - cairo_new_path (cr); - cairo_rectangle (cr, -10, -10, 20, 20); - if (! cairo_in_fill (cr, 0, 0)) { - cairo_test_log (ctx, "Error: Failed to find point inside rectangle\n"); - ret = CAIRO_TEST_FAILURE; - } - - /* simple circle */ - cairo_new_path (cr); - cairo_arc (cr, 0, 0, 10, 0, 2 * M_PI); - if (! cairo_in_fill (cr, 0, 0)) { - cairo_test_log (ctx, "Error: Failed to find point inside circle [nonzero]\n"); - ret = CAIRO_TEST_FAILURE; - } - - /* overlapping circle/rectangle */ - cairo_new_path (cr); - cairo_rectangle (cr, -10, -10, 20, 20); - cairo_new_sub_path (cr); - cairo_arc (cr, 0, 0, 10, 0, 2 * M_PI); - if (! cairo_in_fill (cr, 0, 0)) { - cairo_test_log (ctx, "Error: Failed to find point inside circle+rectangle\n"); - ret = CAIRO_TEST_FAILURE; - } - - /* holey rectangle */ - cairo_new_path (cr); - cairo_rectangle (cr, -10, -10, 20, 20); - cairo_rectangle (cr, 5, -5, -10, 10); - if (cairo_in_fill (cr, 0, 0)) { - cairo_test_log (ctx, "Error: Found an unexpected point inside rectangular non-zero-hole\n"); - ret = CAIRO_TEST_FAILURE; - } - - /* holey circle */ - cairo_new_path (cr); - cairo_arc (cr, 0, 0, 10, 0, 2 * M_PI); - cairo_arc_negative (cr, 0, 0, 5, 0, -2 * M_PI); - if (cairo_in_fill (cr, 0, 0)) { - cairo_test_log (ctx, "Error: Found an unexpected point inside circular non-zero-hole\n"); - ret = CAIRO_TEST_FAILURE; - } - - /* not a holey circle */ - cairo_new_path (cr); - cairo_arc (cr, 0, 0, 10, 0, 2 * M_PI); - cairo_arc (cr, 0, 0, 5, 0, 2 * M_PI); - if (! cairo_in_fill (cr, 0, 0)) { - cairo_test_log (ctx, "Error: Failed to find point inside two circles\n"); - ret = CAIRO_TEST_FAILURE; - } - - /* check off-centre */ - cairo_new_path (cr); - cairo_arc (cr, 7.5, 0, 10, 0, 2 * M_PI); - cairo_arc_negative (cr, 7.5, 0, 5, 0, -2 * M_PI); - if (cairo_in_fill (cr, 7.5, 0)) { - cairo_test_log (ctx, "Error: Found an unexpected point inside off-centre-x circular non-zero-hole\n"); - ret = CAIRO_TEST_FAILURE; - } - cairo_new_path (cr); - cairo_arc (cr, 0, 7.5, 10, 0, 2 * M_PI); - cairo_arc_negative (cr, 0, 7.5, 5, 0, -2 * M_PI); - if (cairo_in_fill (cr, 0, 7.5)) { - cairo_test_log (ctx, "Error: Found an unexpected point inside off-centre-y circular non-zero-hole\n"); - ret = CAIRO_TEST_FAILURE; - } - cairo_new_path (cr); - cairo_arc (cr, 15, 0, 10, 0, 2 * M_PI); - if (! cairo_in_fill (cr, 15, 0)) { - cairo_test_log (ctx, "Error: Failed to find point inside off-centre-x circle\n"); - ret = CAIRO_TEST_FAILURE; - } - cairo_new_path (cr); - cairo_arc (cr, 0, 15, 10, 0, 2 * M_PI); - if (! cairo_in_fill (cr, 0, 15)) { - cairo_test_log (ctx, "Error: Failed to find point inside off-centre-y circle\n"); - ret = CAIRO_TEST_FAILURE; - } - - /* simple rectangle */ - cairo_new_path (cr); - cairo_rectangle (cr, 10, 0, 5, 5); - if (cairo_in_fill (cr, 0, 0)) { - cairo_test_log (ctx, "Error: Found an unexpected point outside rectangle\n"); - ret = CAIRO_TEST_FAILURE; - } - if (cairo_in_fill (cr, 20, 20)) { - cairo_test_log (ctx, "Error: Found an unexpected point outside rectangle\n"); - ret = CAIRO_TEST_FAILURE; - } - if (! cairo_in_fill (cr, 12.5, 2.5)) { - cairo_test_log (ctx, "Error: Failed to find point inside rectangle\n"); - ret = CAIRO_TEST_FAILURE; - } - - /* off-centre triangle */ - cairo_new_path (cr); - cairo_move_to (cr, 10, 0); - cairo_line_to (cr, 15, 5); - cairo_line_to (cr, 5, 5); - cairo_close_path (cr); - if (cairo_in_fill (cr, 0, 0) || - cairo_in_fill (cr, 5, 0) || - cairo_in_fill (cr, 15, 0) || - cairo_in_fill (cr, 20, 0) || - cairo_in_fill (cr, 0, 10) || - cairo_in_fill (cr, 10, 10) || - cairo_in_fill (cr, 20, 10) || - cairo_in_fill (cr, 7, 2.5) || - cairo_in_fill (cr, 13, 2.5)) - { - cairo_test_log (ctx, - "Error: Found an unexpected point outside triangle\n" - "\t(0, 0) -> %s\n" - "\t(5, 0) -> %s\n" - "\t(15, 0) -> %s\n" - "\t(20, 0) -> %s\n" - "\t(0, 10) -> %s\n" - "\t(10, 10) -> %s\n" - "\t(20, 10) -> %s\n" - "\t(7, 2.5) -> %s\n" - "\t(13, 2.5) -> %s\n", - cairo_in_fill (cr, 0, 0) ? "inside" : "outside", - cairo_in_fill (cr, 5, 0) ? "inside" : "outside", - cairo_in_fill (cr, 15, 0) ? "inside" : "outside", - cairo_in_fill (cr, 20, 0) ? "inside" : "outside", - cairo_in_fill (cr, 0, 10) ? "inside" : "outside", - cairo_in_fill (cr, 10, 10) ? "inside" : "outside", - cairo_in_fill (cr, 20, 10) ? "inside" : "outside", - cairo_in_fill (cr, 7, 2.5) ? "inside" : "outside", - cairo_in_fill (cr, 13, 2.5) ? "inside" : "outside"); - ret = CAIRO_TEST_FAILURE; - } - if (! cairo_in_fill (cr, 7.5, 2.5) || - ! cairo_in_fill (cr, 12.5, 2.5) || - ! cairo_in_fill (cr, 10, 5)) - { - cairo_test_log (ctx, - "Error: Failed to find point on triangle edge\n" - "\t(7.5, 2.5) -> %s\n" - "\t(12.5, 2.5) -> %s\n" - "\t(10, 5) -> %s\n", - cairo_in_fill (cr, 7.5, 2.5) ? "inside" : "outside", - cairo_in_fill (cr, 12.5, 2.5) ? "inside" : "outside", - cairo_in_fill (cr, 10, 5) ? "inside" : "outside"); - ret = CAIRO_TEST_FAILURE; - } - if (! cairo_in_fill (cr, 8, 2.5) || - ! cairo_in_fill (cr, 12, 2.5)) - { - cairo_test_log (ctx, "Error: Failed to find point inside triangle\n"); - ret = CAIRO_TEST_FAILURE; - } - - cairo_destroy (cr); - - return ret; -} - -CAIRO_TEST (in_fill_trapezoid, - "Test cairo_in_fill", - "in, trap", /* keywords */ - NULL, /* requirements */ - 0, 0, - preamble, NULL) diff --git a/test/index.html b/test/index.html deleted file mode 100644 index 54c65cd..0000000 --- a/test/index.html +++ /dev/null @@ -1,42 +0,0 @@ - -Cairo Test Results - - - - -
    - - diff --git a/test/infinite-join.c b/test/infinite-join.c deleted file mode 100644 index a573f56..0000000 --- a/test/infinite-join.c +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright © 2006 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of the - * copyright holders not be used in advertising or publicity - * pertaining to distribution of the software without specific, - * written prior permission. The copyright holders make no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied - * warranty. - * - * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY - * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN - * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING - * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS - * SOFTWARE. - * - * Author: Carl D. Worth - */ - -/* Test case for bug #8379: - * - * infinite loop when stroking - * https://bugs.freedesktop.org/show_bug.cgi?id=8379 - */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - /* Paint white, then draw in black. */ - cairo_set_source_rgb (cr, 1, 1, 1); /* white */ - cairo_paint (cr); - cairo_set_source_rgb (cr, 0, 0, 0); /* black */ - - cairo_set_line_join (cr, CAIRO_LINE_JOIN_ROUND); - - /* scaling 2 times causes a slight rounding error in the ctm. - * Without that, the bug doesn't happen. */ - cairo_scale (cr, 20 / 100., 20 / 100.); - cairo_scale (cr, 1. / 20, 1. / 20); - - cairo_set_line_join (cr, CAIRO_LINE_JOIN_ROUND); - cairo_set_line_width (cr, 20); - - cairo_translate (cr, -18300, -13200); - - cairo_new_path (cr); - cairo_move_to (cr, 18928, 13843); - cairo_line_to (cr, 18500, 13843); - cairo_line_to (cr, 18500, 13400); - cairo_line_to (cr, 18928, 13400); - cairo_line_to (cr, 18928, 13843); - cairo_stroke (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (infinite_join, - "Test case for infinite loop when stroking with round joins", - "stroke", /* keywords */ - NULL, - 8, 8, - NULL, draw) diff --git a/test/invalid-matrix.c b/test/invalid-matrix.c deleted file mode 100644 index 9bb26be..0000000 --- a/test/invalid-matrix.c +++ /dev/null @@ -1,374 +0,0 @@ -/* - * Copyright © 2007 Red Hat, Inc. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Carl Worth - */ - -#define _ISOC99_SOURCE /* for INFINITY */ -#define _GNU_SOURCE 1 /* for fedisableeexcept() et al */ - -#include "cairo-test.h" - -#if !defined(INFINITY) -#define INFINITY HUGE_VAL -#endif - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - const cairo_test_context_t *ctx = cairo_test_get_context (cr); - cairo_status_t status; - cairo_surface_t *target; - cairo_font_face_t *font_face; - cairo_font_options_t *font_options; - cairo_scaled_font_t *scaled_font; - cairo_pattern_t *pattern; - cairo_t *cr2; - cairo_matrix_t identity, bogus, inf, invalid = { - 4.0, 4.0, - 4.0, 4.0, - 4.0, 4.0 - }; - -#define CHECK_STATUS(status, function_name) \ -if ((status) == CAIRO_STATUS_SUCCESS) { \ - cairo_test_log (ctx, "Error: %s with invalid matrix passed\n", \ - (function_name)); \ - return CAIRO_TEST_FAILURE; \ -} else if ((status) != CAIRO_STATUS_INVALID_MATRIX) { \ - cairo_test_log (ctx, "Error: %s with invalid matrix returned unexpected status " \ - "(%d): %s\n", \ - (function_name), \ - status, \ - cairo_status_to_string (status)); \ - return CAIRO_TEST_FAILURE; \ -} - - /* clear floating point exceptions (added by cairo_test_init()) */ -#if HAVE_FEDISABLEEXCEPT - fedisableexcept (FE_INVALID); -#endif - - /* create a bogus matrix and check results of attempted inversion */ - bogus.x0 = bogus.xy = bogus.xx = cairo_test_NaN (); - bogus.y0 = bogus.yx = bogus.yy = bogus.xx; - status = cairo_matrix_invert (&bogus); - CHECK_STATUS (status, "cairo_matrix_invert(NaN)"); - - inf.x0 = inf.xy = inf.xx = INFINITY; - inf.y0 = inf.yx = inf.yy = inf.xx; - status = cairo_matrix_invert (&inf); - CHECK_STATUS (status, "cairo_matrix_invert(infinity)"); - - /* test cairo_matrix_invert with invalid matrix */ - status = cairo_matrix_invert (&invalid); - CHECK_STATUS (status, "cairo_matrix_invert(invalid)"); - - - cairo_matrix_init_identity (&identity); - - target = cairo_get_group_target (cr); - - /* test cairo_transform with invalid matrix */ - cr2 = cairo_create (target); - cairo_transform (cr2, &invalid); - - status = cairo_status (cr2); - cairo_destroy (cr2); - CHECK_STATUS (status, "cairo_transform(invalid)"); - - /* test cairo_transform with bogus matrix */ - cr2 = cairo_create (target); - cairo_transform (cr2, &bogus); - - status = cairo_status (cr2); - cairo_destroy (cr2); - CHECK_STATUS (status, "cairo_transform(NaN)"); - - /* test cairo_transform with ∞ matrix */ - cr2 = cairo_create (target); - cairo_transform (cr2, &inf); - - status = cairo_status (cr2); - cairo_destroy (cr2); - CHECK_STATUS (status, "cairo_transform(infinity)"); - - - /* test cairo_set_matrix with invalid matrix */ - cr2 = cairo_create (target); - cairo_set_matrix (cr2, &invalid); - - status = cairo_status (cr2); - cairo_destroy (cr2); - CHECK_STATUS (status, "cairo_set_matrix(invalid)"); - - /* test cairo_set_matrix with bogus matrix */ - cr2 = cairo_create (target); - cairo_set_matrix (cr2, &bogus); - - status = cairo_status (cr2); - cairo_destroy (cr2); - CHECK_STATUS (status, "cairo_set_matrix(NaN)"); - - /* test cairo_set_matrix with ∞ matrix */ - cr2 = cairo_create (target); - cairo_set_matrix (cr2, &inf); - - status = cairo_status (cr2); - cairo_destroy (cr2); - CHECK_STATUS (status, "cairo_set_matrix(infinity)"); - - - /* test cairo_set_font_matrix with invalid matrix */ - cr2 = cairo_create (target); - cairo_set_font_matrix (cr2, &invalid); - - /* draw some text to force the font to be resolved */ - cairo_show_text (cr2, "hello"); - - status = cairo_status (cr2); - cairo_destroy (cr2); - CHECK_STATUS (status, "cairo_set_font_matrix(invalid)"); - - /* test cairo_set_font_matrix with bogus matrix */ - cr2 = cairo_create (target); - cairo_set_font_matrix (cr2, &bogus); - - /* draw some text to force the font to be resolved */ - cairo_show_text (cr2, "hello"); - - status = cairo_status (cr2); - cairo_destroy (cr2); - CHECK_STATUS (status, "cairo_set_font_matrix(NaN)"); - - /* test cairo_set_font_matrix with ∞ matrix */ - cr2 = cairo_create (target); - cairo_set_font_matrix (cr2, &inf); - - /* draw some text to force the font to be resolved */ - cairo_show_text (cr2, "hello"); - - status = cairo_status (cr2); - cairo_destroy (cr2); - CHECK_STATUS (status, "cairo_set_font_matrix(infinity)"); - - - /* test cairo_scaled_font_create with invalid matrix */ - cr2 = cairo_create (target); - font_face = cairo_get_font_face (cr2); - font_options = cairo_font_options_create (); - cairo_get_font_options (cr, font_options); - scaled_font = cairo_scaled_font_create (font_face, - &invalid, - &identity, - font_options); - status = cairo_scaled_font_status (scaled_font); - CHECK_STATUS (status, "cairo_scaled_font_create(invalid)"); - - cairo_scaled_font_destroy (scaled_font); - - scaled_font = cairo_scaled_font_create (font_face, - &identity, - &invalid, - font_options); - status = cairo_scaled_font_status (scaled_font); - CHECK_STATUS (status, "cairo_scaled_font_create(invalid)"); - - cairo_scaled_font_destroy (scaled_font); - cairo_font_options_destroy (font_options); - cairo_destroy (cr2); - - /* test cairo_scaled_font_create with bogus matrix */ - cr2 = cairo_create (target); - font_face = cairo_get_font_face (cr2); - font_options = cairo_font_options_create (); - cairo_get_font_options (cr, font_options); - scaled_font = cairo_scaled_font_create (font_face, - &bogus, - &identity, - font_options); - status = cairo_scaled_font_status (scaled_font); - CHECK_STATUS (status, "cairo_scaled_font_create(NaN)"); - - cairo_scaled_font_destroy (scaled_font); - - scaled_font = cairo_scaled_font_create (font_face, - &identity, - &bogus, - font_options); - status = cairo_scaled_font_status (scaled_font); - CHECK_STATUS (status, "cairo_scaled_font_create(NaN)"); - - cairo_scaled_font_destroy (scaled_font); - cairo_font_options_destroy (font_options); - cairo_destroy (cr2); - - /* test cairo_scaled_font_create with ∞ matrix */ - cr2 = cairo_create (target); - font_face = cairo_get_font_face (cr2); - font_options = cairo_font_options_create (); - cairo_get_font_options (cr, font_options); - scaled_font = cairo_scaled_font_create (font_face, - &inf, - &identity, - font_options); - status = cairo_scaled_font_status (scaled_font); - CHECK_STATUS (status, "cairo_scaled_font_create(infinity)"); - - cairo_scaled_font_destroy (scaled_font); - - scaled_font = cairo_scaled_font_create (font_face, - &identity, - &inf, - font_options); - status = cairo_scaled_font_status (scaled_font); - CHECK_STATUS (status, "cairo_scaled_font_create(infinity)"); - - cairo_scaled_font_destroy (scaled_font); - cairo_font_options_destroy (font_options); - cairo_destroy (cr2); - - - /* test cairo_pattern_set_matrix with invalid matrix */ - pattern = cairo_pattern_create_rgb (1.0, 1.0, 1.0); - cairo_pattern_set_matrix (pattern, &invalid); - status = cairo_pattern_status (pattern); - CHECK_STATUS (status, "cairo_pattern_set_matrix(invalid)"); - cairo_pattern_destroy (pattern); - - /* test cairo_pattern_set_matrix with bogus matrix */ - pattern = cairo_pattern_create_rgb (1.0, 1.0, 1.0); - cairo_pattern_set_matrix (pattern, &bogus); - status = cairo_pattern_status (pattern); - CHECK_STATUS (status, "cairo_pattern_set_matrix(NaN)"); - cairo_pattern_destroy (pattern); - - /* test cairo_pattern_set_matrix with ∞ matrix */ - pattern = cairo_pattern_create_rgb (1.0, 1.0, 1.0); - cairo_pattern_set_matrix (pattern, &inf); - status = cairo_pattern_status (pattern); - CHECK_STATUS (status, "cairo_pattern_set_matrix(infinity)"); - cairo_pattern_destroy (pattern); - - - /* test invalid transformations */ - cr2 = cairo_create (target); - cairo_translate (cr2, bogus.xx, bogus.yy); - CHECK_STATUS (status, "cairo_translate(NaN, NaN)"); - cairo_destroy (cr2); - - cr2 = cairo_create (target); - cairo_translate (cr2, 0, bogus.yy); - CHECK_STATUS (status, "cairo_translate(0, NaN)"); - cairo_destroy (cr2); - - cr2 = cairo_create (target); - cairo_translate (cr2, bogus.xx, 0); - CHECK_STATUS (status, "cairo_translate(NaN, 0)"); - cairo_destroy (cr2); - - cr2 = cairo_create (target); - cairo_translate (cr2, inf.xx, inf.yy); - CHECK_STATUS (status, "cairo_translate(∞, ∞)"); - cairo_destroy (cr2); - - cr2 = cairo_create (target); - cairo_translate (cr2, 0, inf.yy); - CHECK_STATUS (status, "cairo_translate(0, ∞)"); - cairo_destroy (cr2); - - cr2 = cairo_create (target); - cairo_translate (cr2, inf.xx, 0); - CHECK_STATUS (status, "cairo_translate(∞, 0)"); - cairo_destroy (cr2); - - - cr2 = cairo_create (target); - cairo_scale (cr2, bogus.xx, bogus.yy); - CHECK_STATUS (status, "cairo_scale(NaN, NaN)"); - cairo_destroy (cr2); - - cr2 = cairo_create (target); - cairo_scale (cr2, 1, bogus.yy); - CHECK_STATUS (status, "cairo_scale(1, NaN)"); - cairo_destroy (cr2); - - cr2 = cairo_create (target); - cairo_scale (cr2, bogus.xx, 1); - CHECK_STATUS (status, "cairo_scale(NaN, 1)"); - cairo_destroy (cr2); - - cr2 = cairo_create (target); - cairo_scale (cr2, inf.xx, inf.yy); - CHECK_STATUS (status, "cairo_scale(∞, ∞)"); - cairo_destroy (cr2); - - cr2 = cairo_create (target); - cairo_scale (cr2, 1, inf.yy); - CHECK_STATUS (status, "cairo_scale(1, ∞)"); - cairo_destroy (cr2); - - cr2 = cairo_create (target); - cairo_scale (cr2, inf.xx, 1); - CHECK_STATUS (status, "cairo_scale(∞, 1)"); - cairo_destroy (cr2); - - cr2 = cairo_create (target); - cairo_scale (cr2, bogus.xx, bogus.yy); - CHECK_STATUS (status, "cairo_scale(0, 0)"); - cairo_destroy (cr2); - - cr2 = cairo_create (target); - cairo_scale (cr2, 1, bogus.yy); - CHECK_STATUS (status, "cairo_scale(1, 0)"); - cairo_destroy (cr2); - - cr2 = cairo_create (target); - cairo_scale (cr2, bogus.xx, 1); - CHECK_STATUS (status, "cairo_scale(0, 1)"); - cairo_destroy (cr2); - - - cr2 = cairo_create (target); - cairo_rotate (cr2, bogus.xx); - CHECK_STATUS (status, "cairo_rotate(NaN)"); - cairo_destroy (cr2); - - cr2 = cairo_create (target); - cairo_rotate (cr2, inf.xx); - CHECK_STATUS (status, "cairo_rotate(∞)"); - cairo_destroy (cr2); - -#if HAVE_FECLEAREXCEPT - feclearexcept (FE_INVALID); -#endif - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (invalid_matrix, - "Test that all relevant public functions return CAIRO_STATUS_INVALID_MATRIX as appropriate", - "api, matrix", /* keywords */ - NULL, /* requirements */ - 0, 0, - NULL, draw) diff --git a/test/inverse-text.c b/test/inverse-text.c deleted file mode 100644 index c8d7aea..0000000 --- a/test/inverse-text.c +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright © 2006 Red Hat, Inc. - * Copyright © 2010 Intel Corporation - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - * Chris Wilson - */ - -#include "cairo-test.h" - -#define TEXT_SIZE 12 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - /* This is just the inverse of select-font-face.c */ - cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); - cairo_paint (cr); - - cairo_set_source_rgb (cr, 1, 1, 1); - - cairo_set_font_size (cr, TEXT_SIZE); - cairo_move_to (cr, 0, TEXT_SIZE); - - cairo_select_font_face (cr, CAIRO_TEST_FONT_FAMILY " Serif", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - cairo_show_text (cr, "i-am-serif"); - - cairo_select_font_face (cr, CAIRO_TEST_FONT_FAMILY " Sans", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - cairo_show_text (cr, " i-am-sans"); - - cairo_select_font_face (cr, CAIRO_TEST_FONT_FAMILY " Sans Mono", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - cairo_show_text (cr, " i-am-mono"); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (inverse_text, - "Tests rendering of inverse text (white-on-black)", - "font, text", /* keywords */ - NULL, /* requirements */ - 192, TEXT_SIZE + 4, - NULL, draw) diff --git a/test/inverted-clip.c b/test/inverted-clip.c deleted file mode 100644 index b05dd6b..0000000 --- a/test/inverted-clip.c +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright © 2011 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -/* An assertion failure found by Rico Tzschichholz */ - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_set_fill_rule (cr, CAIRO_FILL_RULE_EVEN_ODD); - cairo_set_source_rgb (cr, 0, 1, 0); - - cairo_arc (cr, 50, 50, 40, 0, 2 * M_PI); - cairo_clip_preserve (cr); - - cairo_paint (cr); - - cairo_rectangle (cr, 0, 0, 100, 100); - cairo_reset_clip (cr); - cairo_clip (cr); - - cairo_paint (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (inverted_clip, - "Clip + InvertedClip should be opaque", - "clip, paint", /* keywords */ - "target=raster", /* requirements */ - 100, 100, - NULL, draw) diff --git a/test/joins-loop.c b/test/joins-loop.c deleted file mode 100644 index f0b7bc1..0000000 --- a/test/joins-loop.c +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright © 2011 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -#define LINE_WIDTH 10. -#define SIZE (8 * LINE_WIDTH) -#define PAD (1 * LINE_WIDTH) - - -static void -make_path (cairo_t *cr) -{ - cairo_move_to (cr, 0, 0); - cairo_rel_curve_to (cr, - SIZE, 0, - 0, SIZE, - SIZE, SIZE); - cairo_rel_line_to (cr, -SIZE, 0); - cairo_rel_curve_to (cr, - SIZE, 0, - 0, -SIZE, - SIZE, -SIZE); - cairo_close_path (cr); -} - -static void -draw_joins (cairo_t *cr) -{ - cairo_save (cr); - cairo_translate (cr, PAD, PAD); - - make_path (cr); - cairo_set_line_join (cr, CAIRO_LINE_JOIN_BEVEL); - cairo_stroke (cr); - cairo_translate (cr, SIZE + PAD, 0.); - - make_path (cr); - cairo_set_line_join (cr, CAIRO_LINE_JOIN_ROUND); - cairo_stroke (cr); - cairo_translate (cr, SIZE + PAD, 0.); - - make_path (cr); - cairo_set_line_join (cr, CAIRO_LINE_JOIN_MITER); - cairo_stroke (cr); - cairo_translate (cr, SIZE + PAD, 0.); - - cairo_restore (cr); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); - cairo_paint (cr); - - cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); - cairo_set_line_width (cr, LINE_WIDTH); - - draw_joins (cr); - - /* and reflect to generate the opposite vertex ordering */ - cairo_translate (cr, 0, height); - cairo_scale (cr, 1, -1); - - draw_joins (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (joins_loop, - "A loopy concave shape", - "stroke", /* keywords */ - NULL, /* requirements */ - 3*(SIZE+PAD)+PAD, 2*(SIZE+PAD)+2*PAD, - NULL, draw) - diff --git a/test/joins-retrace.c b/test/joins-retrace.c deleted file mode 100644 index 9a2cf70..0000000 --- a/test/joins-retrace.c +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright © 2011 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -#define LINE_WIDTH 10. -#define SIZE (8 * LINE_WIDTH) -#define PAD (1 * LINE_WIDTH) - - -static void -make_path (cairo_t *cr) -{ - cairo_move_to (cr, 0, SIZE/2 + LINE_WIDTH); - cairo_rel_line_to (cr, SIZE, 0); - cairo_rel_line_to (cr, -SIZE, 0); - cairo_close_path (cr); - - cairo_move_to (cr, 3*SIZE/4, 0); - cairo_rel_line_to (cr, -SIZE/2, SIZE); - cairo_rel_line_to (cr, SIZE/2, -SIZE); - cairo_close_path (cr); - - cairo_move_to (cr, 0, SIZE/2-LINE_WIDTH); - cairo_rel_curve_to (cr, - SIZE/2, -2*LINE_WIDTH, - SIZE/2, 2*LINE_WIDTH, - SIZE, 0); - cairo_rel_curve_to (cr, - -SIZE/2, 2*LINE_WIDTH, - -SIZE/2, -2*LINE_WIDTH, - -SIZE, 0); - cairo_close_path (cr); -} - -static void -draw_joins (cairo_t *cr) -{ - cairo_save (cr); - cairo_translate (cr, PAD, PAD); - - make_path (cr); - cairo_set_line_join (cr, CAIRO_LINE_JOIN_BEVEL); - cairo_stroke (cr); - cairo_translate (cr, SIZE + PAD, 0.); - - make_path (cr); - cairo_set_line_join (cr, CAIRO_LINE_JOIN_ROUND); - cairo_stroke (cr); - cairo_translate (cr, SIZE + PAD, 0.); - - make_path (cr); - cairo_set_line_join (cr, CAIRO_LINE_JOIN_MITER); - cairo_stroke (cr); - cairo_translate (cr, SIZE + PAD, 0.); - - cairo_restore (cr); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); - cairo_paint (cr); - - cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); - cairo_set_line_width (cr, LINE_WIDTH); - - draw_joins (cr); - - /* and reflect to generate the opposite vertex ordering */ - cairo_translate (cr, 0, height); - cairo_scale (cr, 1, -1); - - draw_joins (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (joins_retrace, - "A shape that repeats upon itself", - "stroke", /* keywords */ - NULL, /* requirements */ - 3*(SIZE+PAD)+PAD, 2*(SIZE+PAD)+2*PAD, - NULL, draw) - diff --git a/test/joins-star.c b/test/joins-star.c deleted file mode 100644 index 17c1b4e..0000000 --- a/test/joins-star.c +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright © 2011 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -#define LINE_WIDTH 10. -#define SIZE (8 * LINE_WIDTH) -#define PAD (1 * LINE_WIDTH) - - -static void -make_path (cairo_t *cr) -{ -#define PROTRUSION 20 - cairo_move_to (cr, SIZE/2-PROTRUSION, LINE_WIDTH); - cairo_line_to (cr, SIZE-LINE_WIDTH, SIZE/2+PROTRUSION); - cairo_line_to (cr, SIZE-LINE_WIDTH, SIZE/2-PROTRUSION); - cairo_line_to (cr, SIZE/2-PROTRUSION, SIZE-LINE_WIDTH); - cairo_line_to (cr, SIZE/2+PROTRUSION, SIZE-LINE_WIDTH); - cairo_line_to (cr, LINE_WIDTH, SIZE/2-PROTRUSION); - cairo_line_to (cr, LINE_WIDTH, SIZE/2+PROTRUSION); - cairo_line_to (cr, SIZE/2+PROTRUSION, LINE_WIDTH); - cairo_close_path (cr); -} - -static void -draw_joins (cairo_t *cr) -{ - cairo_save (cr); - cairo_translate (cr, PAD, PAD); - - make_path (cr); - cairo_set_line_join (cr, CAIRO_LINE_JOIN_BEVEL); - cairo_stroke (cr); - cairo_translate (cr, SIZE + PAD, 0.); - - make_path (cr); - cairo_set_line_join (cr, CAIRO_LINE_JOIN_ROUND); - cairo_stroke (cr); - cairo_translate (cr, SIZE + PAD, 0.); - - make_path (cr); - cairo_set_line_join (cr, CAIRO_LINE_JOIN_MITER); - cairo_stroke (cr); - cairo_translate (cr, SIZE + PAD, 0.); - - cairo_restore (cr); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); - cairo_paint (cr); - - cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); - cairo_set_line_width (cr, LINE_WIDTH); - - draw_joins (cr); - - /* and reflect to generate the opposite vertex ordering */ - cairo_translate (cr, 0, height); - cairo_scale (cr, 1, -1); - - draw_joins (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (joins_star, - "A nice and simple concave shape", - "stroke", /* keywords */ - NULL, /* requirements */ - 3*(SIZE+PAD)+PAD, 2*(SIZE+PAD)+PAD, - NULL, draw) - diff --git a/test/joins.c b/test/joins.c deleted file mode 100644 index 40ef72e..0000000 --- a/test/joins.c +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright © 2008 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -#define LINE_WIDTH 12. -#define SIZE (5 * LINE_WIDTH) -#define PAD (2 * LINE_WIDTH) - -static void -make_path (cairo_t *cr) -{ - const struct { - double x, y; - } scales[] = { - { 1, 1 }, - { -1, 1 }, - { 1, -1 }, - { -1, -1 }, - }; - unsigned int i, j; - - for (j = 0; j < ARRAY_LENGTH (scales); j++) { - cairo_save (cr); - /* include reflections to flip the orientation of the join */ - cairo_scale (cr, scales[j].x, scales[j].y); - for (i = 0; i < 3; i++) { - cairo_new_sub_path (cr); - cairo_move_to (cr, 0, -9*LINE_WIDTH/4 - 2); - cairo_line_to (cr, 0, -2*LINE_WIDTH - 2); - cairo_line_to (cr, LINE_WIDTH/4, -2*LINE_WIDTH - 2); - cairo_rotate (cr, M_PI / 4.); - } - cairo_restore (cr); - } -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_line_join_t join; - - cairo_save (cr); - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); /* white */ - cairo_paint (cr); - cairo_restore (cr); - - cairo_set_line_width (cr, LINE_WIDTH); - cairo_translate (cr, PAD + SIZE / 2., PAD + SIZE / 2.); - - for (join = CAIRO_LINE_JOIN_MITER; join <= CAIRO_LINE_JOIN_BEVEL; join++) { - cairo_save (cr); - - cairo_set_line_join (cr, join); - - cairo_set_line_cap (cr, CAIRO_LINE_CAP_BUTT); - make_path (cr); - cairo_stroke (cr); - - cairo_translate (cr, 0, SIZE + PAD); - - cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND); - make_path (cr); - cairo_stroke (cr); - - cairo_translate (cr, 0, SIZE + PAD); - - cairo_set_line_cap (cr, CAIRO_LINE_CAP_SQUARE); - make_path (cr); - cairo_stroke (cr); - - cairo_restore (cr); - - cairo_translate (cr, SIZE + PAD, 0); - } - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (joins, - "Test joins", - "stroke, joins", /* keywords */ - NULL, /* requirements */ - 3 * (PAD + SIZE) + PAD, - 3 * (PAD + SIZE) + PAD, - NULL, draw) - diff --git a/test/jp2.jp2 b/test/jp2.jp2 deleted file mode 100644 index fe8dd6e..0000000 Binary files a/test/jp2.jp2 and /dev/null differ diff --git a/test/jpeg.jpg b/test/jpeg.jpg deleted file mode 100644 index a1bac1c..0000000 Binary files a/test/jpeg.jpg and /dev/null differ diff --git a/test/large-clip.c b/test/large-clip.c deleted file mode 100644 index d2380de..0000000 --- a/test/large-clip.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright © 2008 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Soren Sandmann - */ - -#include "cairo-test.h" - -#define SIZE 100 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_set_source_rgb (cr, 0, 0, 1); - cairo_paint (cr); - - cairo_rectangle (cr, 0, 0, 65536 + 25, 65536 + 25); - cairo_clip (cr); - - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_paint (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (large_clip, - "Incorrect clipping when the clip rectangle doesn't fit in 16 bits signed", - "clip, stress", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, draw) diff --git a/test/large-font.c b/test/large-font.c deleted file mode 100644 index 0a13944..0000000 --- a/test/large-font.c +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright © 2008 Red Hat, Inc. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Carl D. Worth - */ - -/* Bug history: - * - * 2008-05-23: Caolan McNamara noticed a bug in OpenOffice.org where, - * when using a very large font, space would be left for a - * glyph but it would actually be rendered in the wrong - * place. He wrote a minimal test case and posted the bug - * here: - * - * corrupt glyph positions with large font - * https://bugzilla.redhat.com/show_bug.cgi?id=448104 - * - * 2008-05-23: Carl Worth wrote this test for the cairo test suite to - * exercise the bug. - */ - -#include "cairo-test.h" - -#define WIDTH 800 -#define HEIGHT 800 -#define TEXT_SIZE 10000 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - /* paint white so we don't need separate ref images for - * RGB24 and ARGB32 */ - cairo_set_source_rgb (cr, 1., 1., 1.); - cairo_paint (cr); - - cairo_select_font_face (cr, CAIRO_TEST_FONT_FAMILY " Sans", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - cairo_set_font_size (cr, TEXT_SIZE); - - cairo_set_source_rgb (cr, 0, 0, 0); - cairo_move_to (cr, -TEXT_SIZE / 2, TEXT_SIZE / 2); - cairo_show_text (cr, "xW"); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (large_font, - "Draws a very large font to exercise a glyph-positioning bug", - "stress, font", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/large-source-roi.c b/test/large-source-roi.c deleted file mode 100644 index dfd3554..0000000 --- a/test/large-source-roi.c +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright © 2009 Joonas Pihlaja - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that copyright - * notice and this permission notice appear in supporting documentation, and - * that the name of the copyright holders not be used in advertising or - * publicity pertaining to distribution of the software without specific, - * written prior permission. The copyright holders make no representations - * about the suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, - * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include "cairo-test.h" - -/* This test attempts to trigger failures in those clone_similar - * backend methods that have size restrictions. */ - -static cairo_surface_t * -create_large_source (int width, int height) -{ - cairo_surface_t *surface; - cairo_t *cr; - - surface = cairo_image_surface_create (CAIRO_FORMAT_RGB24, width, height); - cr = cairo_create (surface); - cairo_surface_destroy (surface); - - cairo_set_source_rgb (cr, 1,0,0); /* red */ - cairo_paint (cr); - surface = cairo_surface_reference (cairo_get_target (cr)); - cairo_destroy (cr); - - return surface; -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_t *source; - /* Since 1cc750ed92a936d84b47cac696aaffd226e1c02e pixman will not - * paint on the source surface if source_width > 30582. */ - double source_width = 30000.0; - - cairo_set_source_rgb (cr, 1,1,1); - cairo_paint (cr); - - /* Create an excessively wide source image, all red. */ - source = create_large_source (source_width, height); - - /* Set a transform so that the source is scaled down to fit in the - * destination horizontally and then paint the entire source to - * the context. */ - cairo_scale (cr, width/source_width, 1.0); - cairo_set_source_surface (cr, source, 0, 0); - cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); - cairo_paint (cr); - - cairo_surface_destroy (source); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (large_source_roi, - "Uses a all of a large source image.", - "stress, source", /* keywords */ - NULL, /* requirements */ - 7, 7, - NULL, draw) diff --git a/test/large-source.c b/test/large-source.c deleted file mode 100644 index 2b6b84f..0000000 --- a/test/large-source.c +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright © Chris Wilson, 2008 - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Authors: Chris Wilson - */ - -#include "cairo-test.h" - -/* This is a test case for the following bug: - * - * crafted gif file will crash firefox - * [XError: 'BadAlloc (insufficient resources for operation)'] - * https://bugzilla.mozilla.org/show_bug.cgi?id=424333 - */ - -#ifdef WORDS_BIGENDIAN -#define RED_MASK 0xA0 -#define GREEN_MASK 0xA -#else -#define RED_MASK 0x5 -#define GREEN_MASK 0x50 -#endif - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_t *surface; - unsigned char *data; - - cairo_set_source_rgb (cr, 0, 0, 1); /* blue */ - cairo_paint (cr); - - surface = cairo_image_surface_create (CAIRO_FORMAT_A1, 32000, 20); - data = cairo_image_surface_get_data (surface); - if (data != NULL) { - int stride = cairo_image_surface_get_stride (surface); - int width = cairo_image_surface_get_width (surface); - int height = cairo_image_surface_get_height (surface); - int x, y; - - for (y = 0; y < height; y++) { - for (x = 0; x < (width + 7) / 8; x++) - data[x] = RED_MASK; - data += stride; - } - cairo_surface_mark_dirty (surface); - } - - cairo_set_source_rgb (cr, 1, 0, 0); /* red */ - cairo_mask_surface (cr, surface, 0, 0); - cairo_surface_destroy (surface); - - surface = cairo_image_surface_create (CAIRO_FORMAT_A1, 20, 32000); - data = cairo_image_surface_get_data (surface); - if (data != NULL) { - int stride = cairo_image_surface_get_stride (surface); - int width = cairo_image_surface_get_width (surface); - int height = cairo_image_surface_get_height (surface); - int x, y; - - for (y = 0; y < height; y++) { - for (x = 0; x < (width + 7) / 8; x++) - data[x] = GREEN_MASK; - data += stride; - } - cairo_surface_mark_dirty (surface); - } - - cairo_set_source_rgb (cr, 0, 1, 0); /* green */ - cairo_mask_surface (cr, surface, 0, 0); - cairo_surface_destroy (surface); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (large_source, - "Exercises mozilla bug 424333 - handling of massive images", - "stress, source", /* keywords */ - NULL, /* requirements */ - 20, 20, - NULL, draw) diff --git a/test/large-twin-antialias-mixed.c b/test/large-twin-antialias-mixed.c deleted file mode 100644 index 9626a9d..0000000 --- a/test/large-twin-antialias-mixed.c +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright 2009 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -static cairo_scaled_font_t * -create_twin (cairo_t *cr, cairo_antialias_t antialias) -{ - cairo_font_options_t *options; - - cairo_select_font_face (cr, - "@cairo:", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - - options = cairo_font_options_create (); - cairo_font_options_set_antialias (options, antialias); - cairo_set_font_options (cr, options); - cairo_font_options_destroy (options); - - return cairo_scaled_font_reference (cairo_get_scaled_font (cr)); -} - - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_scaled_font_t *subpixel, *gray, *none; - - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - cairo_set_source_rgb (cr, 0, 0, 0); - - cairo_set_font_size (cr, 64); - subpixel = create_twin (cr, CAIRO_ANTIALIAS_SUBPIXEL); - gray = create_twin (cr, CAIRO_ANTIALIAS_GRAY); - none = create_twin (cr, CAIRO_ANTIALIAS_NONE); - - cairo_move_to (cr, 4, 64); - cairo_set_scaled_font (cr, subpixel); - cairo_show_text (cr, "Is cairo's"); - cairo_set_scaled_font (cr, gray); - cairo_show_text (cr, " twin"); - cairo_set_scaled_font (cr, none); - cairo_show_text (cr, " giza?"); - - cairo_move_to (cr, 4, 128+16); - cairo_set_scaled_font (cr, gray); - cairo_show_text (cr, "Is cairo's"); - cairo_set_scaled_font (cr, none); - cairo_show_text (cr, " twin"); - cairo_set_scaled_font (cr, subpixel); - cairo_show_text (cr, " giza?"); - - cairo_move_to (cr, 4, 192+32); - cairo_set_scaled_font (cr, none); - cairo_show_text (cr, "Is cairo's"); - cairo_set_scaled_font (cr, gray); - cairo_show_text (cr, " twin"); - cairo_set_scaled_font (cr, subpixel); - cairo_show_text (cr, " giza?"); - - cairo_scaled_font_destroy (none); - cairo_scaled_font_destroy (gray); - cairo_scaled_font_destroy (subpixel); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (large_twin_antialias_mixed, - "Tests the internal font (with intermixed antialiasing)", - "twin, font", /* keywords */ - "target=raster", /* requirements */ - 524, 240, - NULL, draw) diff --git a/test/leaky-dash.c b/test/leaky-dash.c deleted file mode 100644 index 12e91ac..0000000 --- a/test/leaky-dash.c +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - */ - -/* Test case for bug #4863: - * - * stroking problems with wide dashed lines - * https://bugs.freedesktop.org/show_bug.cgi?id=4863 - */ - -#include "cairo-test.h" - -#define WIDTH 71 -#define HEIGHT 28 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - double dash[2]; - - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); /* white */ - cairo_paint (cr); - cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); /* black */ - - cairo_set_line_width (cr, 2); - dash[0] = 8.0; - dash[1] = 2.0; - - cairo_rectangle (cr, 2.0, 2.0, 67.0, 24.0); - - cairo_set_dash (cr, dash, 2, 9.0); - cairo_stroke (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (leaky_dash, - "Exercises bug #4863 in which a dashed stroke leaks into half the rectangle being filled" - "\nknown bug (#4863) which has existed since the 1.0 release", - "dash, stroke", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/leaky-dashed-rectangle.c b/test/leaky-dashed-rectangle.c deleted file mode 100644 index 25f5674..0000000 --- a/test/leaky-dashed-rectangle.c +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright © 2008 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - * Franz Schmid - */ - -/* Test case for bug reported by Franz Schmid - * http://lists.cairographics.org/archives/cairo/2008-April/013912.html - * - * See also: http://bugs.freedesktop.org/show_bug.cgi?id=17177 - */ - -#include "cairo-test.h" - -#define WIDTH 60 -#define HEIGHT 60 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - const double dash[2] = {4, 2}; - - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - cairo_set_source_rgb (cr, 0., 0., 0); - - cairo_translate (cr, 0.5, .5); - cairo_set_line_width (cr, 1); /* This is vital to reproduce the bug. */ - - /* First check simple rectangles */ - cairo_set_source_rgb (cr, 0., 0., 0); - cairo_rectangle (cr, -WIDTH/4, -HEIGHT/4, WIDTH, HEIGHT); - cairo_stroke (cr); - cairo_rectangle (cr, WIDTH+WIDTH/4, -HEIGHT/4, -WIDTH, HEIGHT); - cairo_stroke (cr); - cairo_rectangle (cr, -WIDTH/4, HEIGHT+HEIGHT/4, WIDTH, -HEIGHT); - cairo_stroke (cr); - cairo_rectangle (cr, WIDTH+WIDTH/4, HEIGHT+HEIGHT/4, -WIDTH, -HEIGHT); - cairo_stroke (cr); - - cairo_set_dash (cr, dash, 2, 0); - - /* And now dashed. */ - cairo_set_source_rgb (cr, 1., 0., 0); - cairo_rectangle (cr, -WIDTH/4, -HEIGHT/4, WIDTH, HEIGHT); - cairo_stroke (cr); - cairo_set_source_rgb (cr, 0., 1., 0); - cairo_rectangle (cr, WIDTH+WIDTH/4, -HEIGHT/4, -WIDTH, HEIGHT); - cairo_stroke (cr); - cairo_set_source_rgb (cr, 0., 0., 1); - cairo_rectangle (cr, -WIDTH/4, HEIGHT+HEIGHT/4, WIDTH, -HEIGHT); - cairo_stroke (cr); - cairo_set_source_rgb (cr, 1., 1., 0); - cairo_rectangle (cr, WIDTH+WIDTH/4, HEIGHT+HEIGHT/4, -WIDTH, -HEIGHT); - cairo_stroke (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (leaky_dashed_rectangle, - "Exercises bug in which a dashed stroke leaks in from outside the surface", - "dash, stroke", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/leaky-dashed-stroke.c b/test/leaky-dashed-stroke.c deleted file mode 100644 index 457d7ce..0000000 --- a/test/leaky-dashed-stroke.c +++ /dev/null @@ -1,166 +0,0 @@ -/* - * Copyright © 2008 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -/* Extracted from a test case reported by Jeff Muizelaar found whilst running - * firefox http://people.mozilla.com/~jmuizelaar/BerlinDistricts-check.svg - */ - -#include "cairo-test.h" - -#define WIDTH 205 -#define HEIGHT 260 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - const double dash[2] = {.5, .5}; - - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - cairo_set_source_rgb (cr, 1., 0., 0); - - /* By adjusting the miter limit, we can see variations on the artifact. - * cairo_set_miter_limit (cr, 4.); - */ - - cairo_translate (cr, -720, -484); - cairo_scale (cr, 2.5, 2.5); - - cairo_set_dash (cr, dash, 2, 0); - - cairo_move_to (cr, 293.622, 330); - cairo_line_to (cr, 293.703, 337.028); - cairo_line_to (cr, 297.45, 336.851); - cairo_line_to (cr, 308.88, 342.609); - cairo_line_to (cr, 309.736, 346.107); - cairo_line_to (cr, 312.972, 348.128); - cairo_line_to (cr, 312.977, 353.478); - cairo_line_to (cr, 322.486, 359.355); - cairo_line_to (cr, 320.831, 363.642); - cairo_line_to (cr, 315.175, 367.171); - cairo_line_to (cr, 308.987, 365.715); - cairo_line_to (cr, 301.3, 365.964); - cairo_line_to (cr, 304.712, 368.852); - cairo_line_to (cr, 305.349, 373.022); - cairo_line_to (cr, 303.211, 376.551); - cairo_line_to (cr, 304.915, 382.855); - cairo_line_to (cr, 323.715, 400.475); - cairo_line_to (cr, 355.323, 424.072); - cairo_line_to (cr, 443.078, 426.534); - cairo_line_to (cr, 455.26, 400.603); - cairo_line_to (cr, 471.924, 392.604); - cairo_line_to (cr, 478.556, 390.797); - cairo_line_to (cr, 477.715, 386); - cairo_line_to (cr, 456.807, 376.507); - cairo_line_to (cr, 449.134, 368.722); - cairo_line_to (cr, 449.147, 365.847); - cairo_line_to (cr, 439.981, 361.692); - cairo_line_to (cr, 439.994, 358.603); - cairo_line_to (cr, 454.645, 336.128); - cairo_line_to (cr, 434.995, 324.005); - cairo_line_to (cr, 423.884, 319.354); - cairo_line_to (cr, 421.098, 312.569); - cairo_line_to (cr, 424.291, 305.997); - cairo_line_to (cr, 431.308, 305.069); - cairo_line_to (cr, 437.257, 296.882); - cairo_line_to (cr, 448.544, 296.808); - cairo_line_to (cr, 452.113, 290.651); - cairo_line_to (cr, 448.469, 285.483); - cairo_line_to (cr, 442.903, 282.877); - cairo_line_to (cr, 447.798, 281.124); - cairo_line_to (cr, 454.622, 274.911); - cairo_line_to (cr, 449.491, 269.978); - cairo_line_to (cr, 443.666, 253.148); - cairo_line_to (cr, 445.741, 250.834); - cairo_line_to (cr, 441.87, 247.131); - cairo_line_to (cr, 436.932, 246.203); - cairo_line_to (cr, 430.5, 251.252); - cairo_line_to (cr, 427.483, 250.751); - cairo_line_to (cr, 427.26, 253.572); - cairo_line_to (cr, 423.621, 255.539); - cairo_line_to (cr, 423.824, 257.933); - cairo_line_to (cr, 425.239, 259.582); - cairo_line_to (cr, 422.385, 261.443); - cairo_line_to (cr, 421.665, 260.53); - cairo_line_to (cr, 419.238, 262.819); - cairo_line_to (cr, 418.731, 257.849); - cairo_line_to (cr, 419.72, 255.227); - cairo_line_to (cr, 418.786, 250.258); - cairo_line_to (cr, 405.685, 235.254); - cairo_line_to (cr, 427.167, 215.127); - cairo_line_to (cr, 413.852, 196.281); - cairo_line_to (cr, 420.177, 192.379); - cairo_line_to (cr, 419.885, 185.701); - cairo_line_to (cr, 413.401, 185.428); - cairo_line_to (cr, 407.985, 186.863); - cairo_line_to (cr, 397.11, 189.112); - cairo_line_to (cr, 390.505, 186.664); - cairo_line_to (cr, 388.527, 183.694); - cairo_line_to (cr, 336.503, 221.048); - cairo_line_to (cr, 367.028, 241.656); - cairo_line_to (cr, 365.103, 244.117); - cairo_line_to (cr, 364.886, 246.792); - cairo_line_to (cr, 361.467, 247.119); - cairo_line_to (cr, 360.396, 245.525); - cairo_line_to (cr, 356.336, 245.638); - cairo_line_to (cr, 353.344, 242.122); - cairo_line_to (cr, 347.149, 242.876); - cairo_line_to (cr, 341.809, 256.652); - cairo_line_to (cr, 342.232, 268.72); - cairo_line_to (cr, 329.579, 269.095); - cairo_line_to (cr, 327.001, 271.009); - cairo_line_to (cr, 325.579, 275.598); - cairo_line_to (cr, 318.941, 277.313); - cairo_line_to (cr, 306.048, 277.231); - cairo_line_to (cr, 304.071, 276.27); - cairo_line_to (cr, 301.153, 277.175); - cairo_line_to (cr, 293.52, 277.529); - cairo_line_to (cr, 290.682, 281.947); - cairo_line_to (cr, 293.911, 286.63); - cairo_line_to (cr, 302.417, 290.547); - cairo_line_to (cr, 303.521, 294.73); - cairo_line_to (cr, 307.787, 298.088); - cairo_line_to (cr, 311.718, 299.126); - cairo_line_to (cr, 313.255, 302.146); - cairo_line_to (cr, 314.6, 306.206); - cairo_line_to (cr, 322.603, 308.96); - cairo_line_to (cr, 321.718, 314.477); - cairo_line_to (cr, 319.596, 320.341); - cairo_line_to (cr, 300.689, 323.69); - cairo_line_to (cr, 301.232, 326.789); - cairo_line_to (cr, 293.622, 330); - cairo_close_path (cr); - - cairo_stroke (cr); - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (leaky_dashed_stroke, - "Exercises bug in which a dashed stroke leaks in from outside the surface", - "dash, stroke", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/leaky-polygon.c b/test/leaky-polygon.c deleted file mode 100644 index 0ea7094..0000000 --- a/test/leaky-polygon.c +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - */ - -/* Bug history - * - * 2005-01-07 Carl Worth - * - * Bug reported: - * - * From: Chris - * Subject: [cairo] Render to image buffer artifacts - * To: cairo@cairographics.org - * Date: Fri, 07 Jan 2005 02:22:28 -0500 - * - * I've attached the code and image that shows this off. Scaling at - * different levels seems to change the corruption. - * - * For some reason there are artifacts in the alpha channel. I don't know - * if that's the only place, but the alpha channel looks bad. - * - * If you run the code and parse the attached image, directing stdout to a - * file, you can see in the lower left corner there are alpha values where - * it should be transparent. - * [...] - * - * 2005-01-11 Carl Worth - * - * I trimmed the original test case down to the code that appears here. - * - */ - -#include "cairo-test.h" - -#define WIDTH 21 -#define HEIGHT 21 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - /* We draw in the default black, so paint white first. */ - cairo_save (cr); - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); /* white */ - cairo_paint (cr); - cairo_restore (cr); - - cairo_scale (cr, 1.0/(1<<16), 1.0/(1<<16)); - - cairo_move_to (cr, 131072,39321); - cairo_line_to (cr, 1103072,1288088); - cairo_line_to (cr, 1179648,1294990); - cairo_close_path (cr); - - cairo_fill (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (leaky_polygon, - "Exercises a corner case in the trapezoid rasterization in which pixels outside the trapezoids received a non-zero alpha", - "fill, trap", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/line-width-large-overlap.c b/test/line-width-large-overlap.c deleted file mode 100644 index 767734f..0000000 --- a/test/line-width-large-overlap.c +++ /dev/null @@ -1,149 +0,0 @@ -/* -*- Mode: c; c-basic-offset: 4; indent-tabs-mode: t; tab-width: 8; -*- */ -/* - * Copyright 2011 Red Hat Inc. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Benjamin Otte - */ - -/* - * Test case taken from the WebKit test suite, failure originally reported - * by Zan Dobersek . WebKit test is - * LayoutTests/canvas/philip/tests/2d.path.rect.selfintersect.html - */ - -#include "cairo-test.h" - -#include - -#define LINE_WIDTH 120 -#define SIZE 100 -#define RECT_SIZE 10 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - /* fill with green so RGB and RGBA tests can share the ref image */ - cairo_set_source_rgb (cr, 0, 1, 0); - cairo_paint (cr); - - /* red to see eventual bugs immediately */ - cairo_set_source_rgb (cr, 1, 0, 0); - - /* big line width */ - cairo_set_line_width (cr, LINE_WIDTH); - - /* rectangle that is smaller than the line width in center of image */ - cairo_rectangle (cr, - (SIZE - RECT_SIZE) / 2, - (SIZE - RECT_SIZE) / 2, - RECT_SIZE, - RECT_SIZE); - - cairo_stroke (cr); - - return CAIRO_TEST_SUCCESS; -} - -/* and again slightly offset to trigger another path */ -static cairo_test_status_t -draw_offset (cairo_t *cr, int width, int height) -{ - cairo_translate (cr, .5, .5); - return draw (cr, width, height); -} - -static cairo_test_status_t -draw_rotated (cairo_t *cr, int width, int height) -{ - cairo_translate (cr, SIZE/2, SIZE/2); - cairo_rotate (cr, M_PI/4); - cairo_translate (cr, -SIZE/2, -SIZE/2); - - return draw (cr, width, height); -} - -static cairo_test_status_t -draw_flipped (cairo_t *cr, int width, int height) -{ - cairo_translate (cr, SIZE/2, SIZE/2); - cairo_scale (cr, -1, 1); - cairo_translate (cr, -SIZE/2, -SIZE/2); - - return draw (cr, width, height); -} - -static cairo_test_status_t -draw_flopped (cairo_t *cr, int width, int height) -{ - cairo_translate (cr, SIZE/2, SIZE/2); - cairo_scale (cr, 1, -1); - cairo_translate (cr, -SIZE/2, -SIZE/2); - - return draw (cr, width, height); -} - -static cairo_test_status_t -draw_dashed (cairo_t *cr, int width, int height) -{ - const double dashes[] = { 4 }; - cairo_set_dash (cr, dashes, 1, 0); - cairo_set_line_cap (cr, CAIRO_LINE_CAP_BUTT); - return draw (cr, width, height); -} - -CAIRO_TEST (line_width_large_overlap, - "Test overlapping lines due to large line width", - "stroke", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, draw) -CAIRO_TEST (line_width_large_overlap_offset, - "Test overlapping lines due to large line width", - "stroke", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, draw_offset) -CAIRO_TEST (line_width_large_overlap_rotated, - "Test overlapping lines due to large line width", - "stroke", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, draw_rotated) -CAIRO_TEST (line_width_large_overlap_flipped, - "Test overlapping lines due to large line width", - "stroke", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, draw_flipped) -CAIRO_TEST (line_width_large_overlap_flopped, - "Test overlapping lines due to large line width", - "stroke", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, draw_flopped) -CAIRO_TEST (line_width_large_overlap_dashed, - "Test overlapping lines due to large line width", - "stroke", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, draw_dashed) diff --git a/test/line-width-overlap.c b/test/line-width-overlap.c deleted file mode 100644 index ac8c234..0000000 --- a/test/line-width-overlap.c +++ /dev/null @@ -1,149 +0,0 @@ -/* -*- Mode: c; c-basic-offset: 4; indent-tabs-mode: t; tab-width: 8; -*- */ -/* - * Copyright 2011 Red Hat Inc. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Benjamin Otte - */ - -/* - * Test case taken from the WebKit test suite, failure originally reported - * by Zan Dobersek . WebKit test is - * LayoutTests/canvas/philip/tests/2d.path.rect.selfintersect.html - */ - -#include "cairo-test.h" - -#include - -#define LINE_WIDTH 60 -#define SIZE 100 -#define RECT_SIZE 10 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - /* fill with green so RGB and RGBA tests can share the ref image */ - cairo_set_source_rgb (cr, 0, 1, 0); - cairo_paint (cr); - - /* red to see eventual bugs immediately */ - cairo_set_source_rgb (cr, 1, 0, 0); - - /* big line width */ - cairo_set_line_width (cr, LINE_WIDTH); - - /* rectangle that is smaller than the line width in center of image */ - cairo_rectangle (cr, - (SIZE - RECT_SIZE) / 2, - (SIZE - RECT_SIZE) / 2, - RECT_SIZE, - RECT_SIZE); - - cairo_stroke (cr); - - return CAIRO_TEST_SUCCESS; -} - -/* and again slightly offset to trigger another path */ -static cairo_test_status_t -draw_offset (cairo_t *cr, int width, int height) -{ - cairo_translate (cr, .5, .5); - return draw (cr, width, height); -} - -static cairo_test_status_t -draw_rotated (cairo_t *cr, int width, int height) -{ - cairo_translate (cr, SIZE/2, SIZE/2); - cairo_rotate (cr, M_PI/4); - cairo_translate (cr, -SIZE/2, -SIZE/2); - - return draw (cr, width, height); -} - -static cairo_test_status_t -draw_flipped (cairo_t *cr, int width, int height) -{ - cairo_translate (cr, SIZE/2, SIZE/2); - cairo_scale (cr, -1, 1); - cairo_translate (cr, -SIZE/2, -SIZE/2); - - return draw (cr, width, height); -} - -static cairo_test_status_t -draw_flopped (cairo_t *cr, int width, int height) -{ - cairo_translate (cr, SIZE/2, SIZE/2); - cairo_scale (cr, 1, -1); - cairo_translate (cr, -SIZE/2, -SIZE/2); - - return draw (cr, width, height); -} - -static cairo_test_status_t -draw_dashed (cairo_t *cr, int width, int height) -{ - const double dashes[] = { 4 }; - cairo_set_dash (cr, dashes, 1, 0); - cairo_set_line_cap (cr, CAIRO_LINE_CAP_BUTT); - return draw (cr, width, height); -} - -CAIRO_TEST (line_width_overlap, - "Test overlapping lines due to large line width", - "stroke", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, draw) -CAIRO_TEST (line_width_overlap_offset, - "Test overlapping lines due to large line width", - "stroke", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, draw_offset) -CAIRO_TEST (line_width_overlap_rotated, - "Test overlapping lines due to large line width", - "stroke", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, draw_rotated) -CAIRO_TEST (line_width_overlap_flipped, - "Test overlapping lines due to large line width", - "stroke", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, draw_flipped) -CAIRO_TEST (line_width_overlap_flopped, - "Test overlapping lines due to large line width", - "stroke", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, draw_flopped) -CAIRO_TEST (line_width_overlap_dashed, - "Test overlapping lines due to large line width", - "stroke", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, draw_dashed) diff --git a/test/line-width-scale.c b/test/line-width-scale.c deleted file mode 100644 index 037b887..0000000 --- a/test/line-width-scale.c +++ /dev/null @@ -1,178 +0,0 @@ -/* - * Copyright © 2006 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" - -/* This test exercises the various interactions between - * cairo_set_line_width and cairo_scale. Specifically it shows how - * separate transformations can affect the pen for stroking compared - * to the path itself. - * - * This was inspired by an image by Maxim Shemanarev demonstrating the - * flexible-pipeline nature of his Antigrain Geometry project: - * - * http://antigrain.com/tips/line_alignment/conv_order.gif - * - * It also uncovered some behavior in cairo that I found surprising. - * Namely, cairo_set_line_width was not transforming the width - * according the the current CTM, but instead delaying that - * transformation until the time of cairo_stroke. - * - * This delayed behavior was released in cairo 1.0 so we're going to - * document this as the way cairo_set_line_width works rather than - * considering this a bug. - */ - -#define LINE_WIDTH 13 -#define SPLINE 50.0 -#define XSCALE 0.5 -#define YSCALE 2.0 -#define WIDTH (XSCALE * SPLINE * 6.0) -#define HEIGHT (YSCALE * SPLINE * 2.0) - -static void -spline_path (cairo_t *cr) -{ - cairo_save (cr); - { - cairo_move_to (cr, - - SPLINE, 0); - cairo_curve_to (cr, - - SPLINE / 4, - SPLINE, - SPLINE / 4, SPLINE, - SPLINE, 0); - } - cairo_restore (cr); -} - -/* If we scale before setting the line width or creating the path, - * then obviously both will be scaled. */ -static void -scale_then_set_line_width_and_stroke (cairo_t *cr) -{ - cairo_scale (cr, XSCALE, YSCALE); - cairo_set_line_width (cr, LINE_WIDTH); - spline_path (cr); - cairo_stroke (cr); -} - -/* This is used to verify the results of - * scale_then_set_line_width_and_stroke. - * - * It uses save/restore pairs to isolate the scaling of the path and - * line_width and ensures that both are scaled. - */ -static void -scale_path_and_line_width (cairo_t *cr) -{ - cairo_save (cr); - { - cairo_scale (cr, XSCALE, YSCALE); - spline_path (cr); - } - cairo_restore (cr); - - cairo_save (cr); - { - cairo_scale (cr, XSCALE, YSCALE); - cairo_set_line_width (cr, LINE_WIDTH); - cairo_stroke (cr); - } - cairo_restore (cr); -} - -/* This is the case that was surprising. - * - * Setting the line width before scaling doesn't change anything. The - * line width will be interpreted under the CTM in effect at the time - * of cairo_stroke, so the line width will be scaled as well as the - * path here. - */ -static void -set_line_width_then_scale_and_stroke (cairo_t *cr) -{ - cairo_set_line_width (cr, LINE_WIDTH); - cairo_scale (cr, XSCALE, YSCALE); - spline_path (cr); - cairo_stroke (cr); -} - -/* Here then is the way to achieve the alternate result. - * - * This uses save/restore pairs to isolate the scaling of the path and - * line_width and ensures that the path is scaled while the line width - * is not. - */ -static void -scale_path_not_line_width (cairo_t *cr) -{ - cairo_save (cr); - { - cairo_scale (cr, XSCALE, YSCALE); - spline_path (cr); - } - cairo_restore (cr); - - cairo_save (cr); - { - cairo_set_line_width (cr, LINE_WIDTH); - cairo_stroke (cr); - } - cairo_restore (cr); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - int i; - void (* const figures[4]) (cairo_t *cr) = { - scale_then_set_line_width_and_stroke, - scale_path_and_line_width, - set_line_width_then_scale_and_stroke, - scale_path_not_line_width - }; - - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); /* white */ - cairo_paint (cr); - cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); /* black */ - - for (i = 0; i < 4; i++) { - cairo_save (cr); - cairo_translate (cr, - WIDTH/4 + (i % 2) * WIDTH/2, - HEIGHT/4 + (i / 2) * HEIGHT/2); - (figures[i]) (cr); - cairo_restore (cr); - } - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (line_width_scale, - "Tests interaction of cairo_set_line_width with cairo_scale", - "stroke", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/line-width-tolerance.c b/test/line-width-tolerance.c deleted file mode 100644 index 5a581ca..0000000 --- a/test/line-width-tolerance.c +++ /dev/null @@ -1,66 +0,0 @@ -/* -*- Mode: c; c-basic-offset: 4; indent-tabs-mode: t; tab-width: 8; -*- */ -/* - * Copyright 2011 Red Hat Inc. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Benjamin Otte - */ - -/* - * Test case taken from the WebKit test suite, failure originally reported - * by Zan Dobersek at - * https://bugs.webkit.org/show_bug.cgi?id=54471 - */ - -#include "cairo-test.h" - -#include - -#define RADIUS 50 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - /* fill with green so RGB and RGBA tests can share the ref image */ - cairo_set_source_rgb (cr, 0, 1, 0); - cairo_paint (cr); - - /* red to see eventual bugs immediately */ - cairo_set_source_rgb (cr, 1, 0, 0); - - /* stroke 3/4 of a circle where the last quarter would be this - * reference image. Keep just a 1 pixel border. Use a huge line - * width (twice the circle's radius to get it filled completely). - */ - cairo_set_line_width (cr, 2 * RADIUS); - cairo_arc (cr, 1, RADIUS - 1, RADIUS, 0, - M_PI / 2.0); - cairo_stroke (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (line_width_tolerance, - "Test interaction of line width and tolerance when stroking arcs", - "stroke", /* keywords */ - NULL, /* requirements */ - RADIUS, RADIUS, - NULL, draw) diff --git a/test/line-width-zero.c b/test/line-width-zero.c deleted file mode 100644 index c7ac8a0..0000000 --- a/test/line-width-zero.c +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright © 2007 Red Hat, Inc. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Carl Worth - */ - -#include "cairo-test.h" - -/* This is a test case for the following bug: - * - * Crash in cairo_stroke_extents whe line width is 0 and line cap is ROUND - * (_cairo_pen_find_active_cw_vertex_index) - * https://bugs.freedesktop.org/show_bug.cgi?id=10231 - */ - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - double x1, y1, x2, y2; - - cairo_move_to (cr, 0.0, 0.0); - cairo_line_to (cr, 100.0, 100.0); - cairo_set_line_width (cr, 0.0); - - cairo_set_line_cap (cr, CAIRO_LINE_CAP_BUTT); - cairo_set_line_join (cr, CAIRO_LINE_JOIN_MITER); - cairo_stroke_extents (cr, &x1, &y1, &x2, &y2); - cairo_in_stroke (cr, 50, 50); - cairo_stroke_preserve (cr); - - cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND); - cairo_set_line_join (cr, CAIRO_LINE_JOIN_ROUND); - cairo_stroke_extents (cr, &x1, &y1, &x2, &y2); - cairo_in_stroke (cr, 50, 50); - cairo_stroke_preserve (cr); - - cairo_set_line_cap (cr, CAIRO_LINE_CAP_SQUARE); - cairo_set_line_join (cr, CAIRO_LINE_JOIN_BEVEL); - cairo_stroke_extents (cr, &x1, &y1, &x2, &y2); - cairo_in_stroke (cr, 50, 50); - cairo_stroke (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (line_width_zero, - "Test all stroke operations and all cap,join styles with line width of zero", - "stroke", /* keywords */ - NULL, /* requirements */ - 0, 0, - NULL, draw) diff --git a/test/line-width.c b/test/line-width.c deleted file mode 100644 index 315ebc3..0000000 --- a/test/line-width.c +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright © 2004 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" - -#define LINES 5 -#define LINE_LENGTH 10 -#define IMAGE_WIDTH 2 * LINE_LENGTH + 6 -#define IMAGE_HEIGHT ((LINES+4)*LINES)/2 + 2 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - int i; - - /* We draw in black, so paint white first. */ - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); /* white */ - cairo_paint (cr); - - cairo_set_source_rgb (cr, 0, 0, 0); - cairo_translate (cr, 2, 2); - - for (i=0; i < LINES; i++) { - cairo_set_line_width (cr, i+1); - cairo_move_to (cr, 0, 0); - cairo_rel_line_to (cr, LINE_LENGTH, 0); - cairo_stroke (cr); - cairo_move_to (cr, LINE_LENGTH + 2, 0.5); - cairo_rel_line_to (cr, LINE_LENGTH, 0); - cairo_stroke (cr); - cairo_translate (cr, 0, i+3); - } - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -draw_a1 (cairo_t *cr, int width, int height) -{ - cairo_set_antialias (cr, CAIRO_ANTIALIAS_NONE); - return draw (cr, width, height); -} - -CAIRO_TEST (line_width, - "Tests cairo_set_line_width", - "stroke", /* keywords */ - NULL, /* requirements */ - IMAGE_WIDTH, IMAGE_HEIGHT, - NULL, draw) -CAIRO_TEST (a1_line_width, - "Tests cairo_set_line_width", - "stroke", /* keywords */ - "target=raster", /* requirements */ - IMAGE_WIDTH, IMAGE_HEIGHT, - NULL, draw_a1) diff --git a/test/linear-gradient-extend.c b/test/linear-gradient-extend.c deleted file mode 100644 index b1328b4..0000000 --- a/test/linear-gradient-extend.c +++ /dev/null @@ -1,92 +0,0 @@ -/* -*- Mode: c; c-basic-offset: 4; indent-tabs-mode: t; tab-width: 8; -*- */ -/* - * Copyright 2010 Andrea Canciani - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Andrea Canciani - */ - -#include "cairo-test.h" - -#define NUM_EXTEND 4 -#define HEIGHT 16 -#define WIDTH 16 -#define PAD 3 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_pattern_t *pattern; - unsigned int i, j; - - cairo_extend_t extend[NUM_EXTEND] = { - CAIRO_EXTEND_NONE, - CAIRO_EXTEND_REPEAT, - CAIRO_EXTEND_REFLECT, - CAIRO_EXTEND_PAD - }; - - cairo_test_paint_checkered (cr); - - pattern = cairo_pattern_create_linear (0, 2*PAD, 0, HEIGHT - 2*PAD); - - cairo_pattern_add_color_stop_rgb (pattern, 0, 0, 0, 1); - cairo_pattern_add_color_stop_rgb (pattern, 1, 0, 0, 1); - - cairo_translate (cr, PAD, PAD); - - for (i = 0; i < 2; i++) { - cairo_save (cr); - - for (j = 0; j < NUM_EXTEND; j++) { - cairo_pattern_set_extend (pattern, extend[j]); - - cairo_reset_clip (cr); - cairo_rectangle (cr, 0, 0, WIDTH, HEIGHT); - cairo_clip (cr); - - if (i & 1) { - cairo_set_source_rgb (cr, 0, 1, 0); - cairo_mask (cr, pattern); - } else { - cairo_set_source (cr, pattern); - cairo_paint (cr); - } - - cairo_translate (cr, WIDTH+PAD, 0); - } - - cairo_restore (cr); - cairo_translate (cr, 0, HEIGHT+PAD); - } - - cairo_pattern_destroy (pattern); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (linear_gradient_extend, - "Tests gradient to solid reduction of linear gradients", - "linear, pattern, extend", /* keywords */ - NULL, /* requirements */ - (WIDTH+PAD) * NUM_EXTEND + PAD, 2*(HEIGHT + PAD) + PAD, - NULL, draw) diff --git a/test/linear-gradient-large.c b/test/linear-gradient-large.c deleted file mode 100644 index 5646aa4..0000000 --- a/test/linear-gradient-large.c +++ /dev/null @@ -1,68 +0,0 @@ -/* -*- Mode: c; c-basic-offset: 4; indent-tabs-mode: t; tab-width: 8; -*- */ -/* - * Copyright 2010 Krzysztof Kosiński - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Krzysztof Kosiński - */ - -#include "cairo-test.h" - -/* originally reported in https://bugs.freedesktop.org/show_bug.cgi?id=29470 */ - -#define OFFSET 50 -#define SIZE 1000 - -static void mark_point(cairo_t *ct, double x, double y) -{ - cairo_rectangle(ct, x-2, y-2, 4, 4); - cairo_set_source_rgb(ct, 1,0,0); - cairo_fill(ct); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_pattern_t *gr = cairo_pattern_create_linear (SIZE - OFFSET, OFFSET, - OFFSET, SIZE - OFFSET); - - cairo_pattern_add_color_stop_rgb (gr, 0.0, 1, 1, 1); - cairo_pattern_add_color_stop_rgb (gr, 0.0, 0, 0, 0); - cairo_pattern_add_color_stop_rgb (gr, 1.0, 0, 0, 0); - cairo_pattern_add_color_stop_rgb (gr, 1.0, 1, 1, 1); - - cairo_set_source (cr, gr); - cairo_pattern_destroy (gr); - cairo_paint (cr); - - mark_point(cr, SIZE - OFFSET, OFFSET); - mark_point(cr, OFFSET, SIZE - OFFSET); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (linear_gradient_large, - "Tests that large linear gradients get rendered at the correct place", - "linear, pattern", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, draw) diff --git a/test/linear-gradient-one-stop.c b/test/linear-gradient-one-stop.c deleted file mode 100644 index 09c4b9d..0000000 --- a/test/linear-gradient-one-stop.c +++ /dev/null @@ -1,90 +0,0 @@ -/* -*- Mode: c; c-basic-offset: 4; indent-tabs-mode: t; tab-width: 8; -*- */ -/* - * Copyright 2010 Andrea Canciani - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Andrea Canciani - */ - -#include "cairo-test.h" - -#define NUM_EXTEND 4 -#define HEIGHT 16 -#define WIDTH 16 -#define PAD 3 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_pattern_t *pattern; - unsigned int i, j; - - cairo_extend_t extend[NUM_EXTEND] = { - CAIRO_EXTEND_NONE, - CAIRO_EXTEND_REPEAT, - CAIRO_EXTEND_REFLECT, - CAIRO_EXTEND_PAD - }; - - cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); - - cairo_translate (cr, PAD, PAD); - - for (i = 0; i < 3; i++) { - cairo_save (cr); - - for (j = 0; j < NUM_EXTEND; j++) { - cairo_reset_clip (cr); - cairo_rectangle (cr, 0, 0, WIDTH, HEIGHT); - cairo_clip (cr); - - if (i == 0) - pattern = cairo_pattern_create_linear (0, 2*PAD, 0, HEIGHT - 2*PAD); - else if (i == 1) - pattern = cairo_pattern_create_linear (2*PAD, 2*PAD, HEIGHT - 2*PAD, HEIGHT - 2*PAD); - else if (i == 2) - pattern = cairo_pattern_create_linear (2*PAD, 0, HEIGHT - 2*PAD, 0); - - cairo_pattern_add_color_stop_rgb (pattern, 0.25, 0, 0, 1); - cairo_pattern_set_extend (pattern, extend[j]); - - cairo_set_source (cr, pattern); - cairo_paint (cr); - - cairo_pattern_destroy (pattern); - - cairo_translate (cr, WIDTH+PAD, 0); - } - - cairo_restore (cr); - cairo_translate (cr, 0, HEIGHT+PAD); - } - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (linear_gradient_one_stop, - "Tests linear gradients with a single stop", - "gradient,linear,", /* keywords */ - NULL, /* requirements */ - (WIDTH+PAD) * NUM_EXTEND + PAD, 3*(HEIGHT + PAD) + PAD, - NULL, draw) diff --git a/test/linear-gradient-reflect.c b/test/linear-gradient-reflect.c deleted file mode 100644 index 8adb587..0000000 --- a/test/linear-gradient-reflect.c +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright © 2007 Tim Rowley - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Tim Rowley - */ - -#include "cairo-test.h" -#include "stdio.h" - -#define WIDTH 50 -#define HEIGHT 50 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_pattern_t *pattern; - - cairo_set_source_rgb (cr, 0.5, 0.5, 0.5); - cairo_paint (cr); - - cairo_save (cr); - - pattern = cairo_pattern_create_linear (0, 0, 10.0, 0); - - cairo_pattern_add_color_stop_rgb (pattern, 0.0, - 0.0, 0.0, 1.0); - cairo_pattern_add_color_stop_rgb (pattern, 1.0, - 1.0, 0.0, 0.0); - cairo_pattern_set_extend (pattern, CAIRO_EXTEND_REFLECT); - - cairo_set_source (cr, pattern); - cairo_pattern_destroy (pattern); - cairo_rectangle (cr, 0.0, 0.0, WIDTH, HEIGHT); - cairo_fill (cr); - - cairo_restore (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (linear_gradient_reflect, - "Tests the drawing of linear gradient with reflect", - "gradient", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) - diff --git a/test/linear-gradient-subset.c b/test/linear-gradient-subset.c deleted file mode 100644 index ce05e6e..0000000 --- a/test/linear-gradient-subset.c +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Owen Taylor - */ - -#include "cairo-test.h" -#include "stdio.h" - -/* The test matrix is - * - * A) Horizontal B) 5° C) 45° D) Vertical - * 1) Rotated 0° 2) Rotated 45° C) Rotated 90° - * a) 2 stop b) 3 stop - * - * A1a B1a C1a D1a - * A2a B2a C2a D2a - * A3a B3a C3a D3a - * A1b B1b C1b D1b - * A2b B2b C2b D2b - * A3b B3b C3b D3b - */ - -static const double gradient_angles[] = { 0, 45, 90 }; -#define N_GRADIENT_ANGLES 3 -static const double rotate_angles[] = { 0, 45, 90 }; -#define N_ROTATE_ANGLES 3 -static const int n_stops[] = { 2, 3 }; -#define N_N_STOPS 2 - -#define UNIT_SIZE 6 -#define UNIT_SIZE 6 -#define PAD 1 - -#define WIDTH N_GRADIENT_ANGLES * UNIT_SIZE + (N_GRADIENT_ANGLES + 1) * PAD -#define HEIGHT N_N_STOPS * N_ROTATE_ANGLES * UNIT_SIZE + (N_N_STOPS * N_ROTATE_ANGLES + 1) * PAD - -static void -draw_unit (cairo_t *cr, - double gradient_angle, - double rotate_angle, - int n_stops) -{ - cairo_pattern_t *pattern; - - cairo_rectangle (cr, 0, 0, 1, 1); - cairo_clip (cr); - cairo_new_path(cr); - - cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); - cairo_rectangle (cr, 0, 0, 1, 1); - cairo_fill (cr); - - cairo_translate (cr, 0.5, 0.5); - cairo_scale (cr, 1 / 1.5, 1 / 1.5); - cairo_rotate (cr, rotate_angle); - - pattern = cairo_pattern_create_linear (-0.5 * cos (gradient_angle), -0.5 * sin (gradient_angle), - 0.5 * cos (gradient_angle), 0.5 * sin (gradient_angle)); - - if (n_stops == 2) { - cairo_pattern_add_color_stop_rgb (pattern, 0.2, 0.3, 0.3, 0.3); - cairo_pattern_add_color_stop_rgb (pattern, 0.8, 1.0, 1.0, 1.0); - } else { - cairo_pattern_add_color_stop_rgb (pattern, 0.2, 1.0, 0.0, 0.0); - cairo_pattern_add_color_stop_rgb (pattern, 0.5, 1.0, 1.0, 1.0); - cairo_pattern_add_color_stop_rgb (pattern, 0.8, 0.0, 0.0, 1.0); - } - - cairo_set_source (cr, pattern); - cairo_pattern_destroy (pattern); - cairo_rectangle (cr, -0.5, -0.5, 1, 1); - cairo_fill (cr); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - int i, j, k; - - cairo_set_source_rgb (cr, 0.5, 0.5, 0.5); - cairo_paint (cr); - - for (i = 0; i < N_GRADIENT_ANGLES; i++) - for (j = 0; j < N_ROTATE_ANGLES; j++) - for (k = 0; k < N_N_STOPS; k++) { - cairo_save (cr); - cairo_translate (cr, - PAD + (PAD + UNIT_SIZE) * i, - PAD + (PAD + UNIT_SIZE) * (N_ROTATE_ANGLES * k + j)); - cairo_scale (cr, UNIT_SIZE, UNIT_SIZE); - - draw_unit (cr, - gradient_angles[i] * M_PI / 180., - rotate_angles[j] * M_PI / 180., - n_stops[k]); - cairo_restore (cr); - } - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (linear_gradient_subset, - "Tests the drawing of linear gradients", - "gradient", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/linear-gradient.c b/test/linear-gradient.c deleted file mode 100644 index 054d6ab..0000000 --- a/test/linear-gradient.c +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Owen Taylor - */ - -#include "cairo-test.h" -#include "stdio.h" - -/* The test matrix is - * - * A) Horizontal B) 5° C) 45° D) Vertical - * 1) Rotated 0° 2) Rotated 45° C) Rotated 90° - * a) 2 stop b) 3 stop - * - * A1a B1a C1a D1a - * A2a B2a C2a D2a - * A3a B3a C3a D3a - * A1b B1b C1b D1b - * A2b B2b C2b D2b - * A3b B3b C3b D3b - */ - -static const double gradient_angles[] = { 0, 45, 90 }; -#define N_GRADIENT_ANGLES 3 -static const double rotate_angles[] = { 0, 45, 90 }; -#define N_ROTATE_ANGLES 3 -static const int n_stops[] = { 2, 3 }; -#define N_N_STOPS 2 - -#define UNIT_SIZE 6 -#define UNIT_SIZE 6 -#define PAD 1 - -#define WIDTH N_GRADIENT_ANGLES * UNIT_SIZE + (N_GRADIENT_ANGLES + 1) * PAD -#define HEIGHT N_N_STOPS * N_ROTATE_ANGLES * UNIT_SIZE + (N_N_STOPS * N_ROTATE_ANGLES + 1) * PAD - -static void -draw_unit (cairo_t *cr, - double gradient_angle, - double rotate_angle, - int n_stops) -{ - cairo_pattern_t *pattern; - - cairo_rectangle (cr, 0, 0, 1, 1); - cairo_clip (cr); - cairo_new_path(cr); - - cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); - cairo_rectangle (cr, 0, 0, 1, 1); - cairo_fill (cr); - - cairo_translate (cr, 0.5, 0.5); - cairo_scale (cr, 1 / 1.5, 1 / 1.5); - cairo_rotate (cr, rotate_angle); - - pattern = cairo_pattern_create_linear (-0.5 * cos (gradient_angle), -0.5 * sin (gradient_angle), - 0.5 * cos (gradient_angle), 0.5 * sin (gradient_angle)); - - if (n_stops == 2) { - cairo_pattern_add_color_stop_rgb (pattern, 0., - 0.3, 0.3, 0.3); - cairo_pattern_add_color_stop_rgb (pattern, 1., - 1.0, 1.0, 1.0); - } else { - cairo_pattern_add_color_stop_rgb (pattern, 0., - 1.0, 0.0, 0.0); - cairo_pattern_add_color_stop_rgb (pattern, 0.5, - 1.0, 1.0, 1.0); - cairo_pattern_add_color_stop_rgb (pattern, 1., - 0.0, 0.0, 1.0); - } - - cairo_set_source (cr, pattern); - cairo_pattern_destroy (pattern); - cairo_rectangle (cr, -0.5, -0.5, 1, 1); - cairo_fill (cr); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - int i, j, k; - - cairo_set_source_rgb (cr, 0.5, 0.5, 0.5); - cairo_paint (cr); - - for (i = 0; i < N_GRADIENT_ANGLES; i++) - for (j = 0; j < N_ROTATE_ANGLES; j++) - for (k = 0; k < N_N_STOPS; k++) { - cairo_save (cr); - cairo_translate (cr, - PAD + (PAD + UNIT_SIZE) * i, - PAD + (PAD + UNIT_SIZE) * (N_ROTATE_ANGLES * k + j)); - cairo_scale (cr, UNIT_SIZE, UNIT_SIZE); - - draw_unit (cr, - gradient_angles[i] * M_PI / 180., - rotate_angles[j] * M_PI / 180., - n_stops[k]); - cairo_restore (cr); - } - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (linear_gradient, - "Tests the drawing of linear gradients", - "gradient", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/linear-step-function.c b/test/linear-step-function.c deleted file mode 100644 index da7e8ca..0000000 --- a/test/linear-step-function.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright © 2010 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_pattern_t *pattern; - - cairo_set_source_rgb (cr, 0, 0, 0); - cairo_paint (cr); - - pattern = cairo_pattern_create_linear (width/2, 0, width/2, 0); - cairo_pattern_add_color_stop_rgb (pattern, 0, 1, 0, 0); - cairo_pattern_add_color_stop_rgb (pattern, 1, 0, 0, 1); - cairo_set_source (cr, pattern); - - cairo_pattern_set_extend (pattern, CAIRO_EXTEND_NONE); /* nothing */ - cairo_rectangle (cr, 0, 0, width, height/2); - cairo_fill (cr); - - cairo_pattern_set_extend (pattern, CAIRO_EXTEND_PAD); /* step */ - cairo_rectangle (cr, 0, height/2, width, height/2); - cairo_fill (cr); - - cairo_pattern_destroy (pattern); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (linear_step_function, - "Tests creating a step function using a linear gradient", - "gradient, linear", /* keywords */ - NULL, /* requirements */ - 40, 40, - NULL, draw) diff --git a/test/linear-uniform.c b/test/linear-uniform.c deleted file mode 100644 index 2f65535..0000000 --- a/test/linear-uniform.c +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright © 2010 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_pattern_t *pattern; - - cairo_set_source_rgb (cr, 0, 0, 0); - cairo_paint (cr); - - /* with alpha */ - pattern = cairo_pattern_create_linear (0, 0, 0, height); - cairo_pattern_add_color_stop_rgba (pattern, 0, 1, 1, 1, .5); - cairo_pattern_add_color_stop_rgba (pattern, 1, 1, 1, 1, .5); - cairo_set_source (cr, pattern); - cairo_pattern_destroy (pattern); - cairo_rectangle (cr, 0, 0, width/2, height); - cairo_fill (cr); - - /* without alpha */ - pattern = cairo_pattern_create_linear (0, 0, 0, height); - cairo_pattern_add_color_stop_rgb (pattern, 0, 1, 1, 1); - cairo_pattern_add_color_stop_rgb (pattern, 1, 1, 1, 1); - cairo_set_source (cr, pattern); - cairo_pattern_destroy (pattern); - cairo_rectangle (cr, width/2, 0, width/2, height); - cairo_fill (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (linear_uniform, - "Tests handling of \"solid\" linear gradients", - "gradient, linear", /* keywords */ - NULL, /* requirements */ - 40, 40, - NULL, draw) diff --git a/test/long-dashed-lines.c b/test/long-dashed-lines.c deleted file mode 100644 index 4d6ded9..0000000 --- a/test/long-dashed-lines.c +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright © 2008 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * the author not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. The author makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL THE AUTHOR. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - int i; - double dashes[] = {6, 3}; - - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - /* partially visible rectangle... */ - cairo_rectangle (cr, -0.5, -0.5, 61, 61); - - /* rectangles with intersecting segments... */ - cairo_save (cr); - cairo_translate (cr, 30, 30); - for (i = 0; i < 4; i++) { - cairo_rotate (cr, M_PI / 4); - cairo_rectangle (cr, -37, -15, 74, 30); - } - cairo_restore (cr); - - /* completely invisible rectangle */ - cairo_rectangle (cr, -5, -5, 70, 70); - - cairo_set_dash (cr, dashes, ARRAY_LENGTH (dashes), 0.); - cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND); - cairo_set_line_join (cr, CAIRO_LINE_JOIN_BEVEL); - cairo_set_source_rgb (cr, 0, 0, 0); - cairo_stroke (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (long_dashed_lines, - "Exercises _cairo_box_intersects_line_segment()", - "dash, stroke, stress", /* keywords */ - NULL, /* requirements */ - 60, 60, - NULL, draw) diff --git a/test/long-lines.c b/test/long-lines.c deleted file mode 100644 index 69b64e9..0000000 --- a/test/long-lines.c +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Authors: Carl D. Worth - * Emmanuel Pacaud - */ - -#include "cairo-test.h" - -#define LINE_WIDTH 1. -#define SIZE 10 -#define LINE_NBR 6 - -struct { - double length; - double red, green, blue; -} lines[LINE_NBR] = { - { 100.0, 1.0, 0.0, 0.0 }, - { 10000.0, 0.0, 1.0, 0.0 }, - { 100000.0, 0.0, 0.0, 1.0 }, - { 1000000.0, 1.0, 1.0, 0.0 }, - { 10000000.0, 0.0, 1.0, 1.0 }, - { 100000000.0, 1.0, 0.0, 1.0 } -}; - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - double pos; - int i; - - /* We draw in the default black, so paint white first. */ - cairo_save (cr); - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); /* white */ - cairo_paint (cr); - cairo_restore (cr); - - cairo_set_line_width (cr, LINE_WIDTH); - - pos = SIZE + .5; - for (i = 0; i < LINE_NBR; i++) { - cairo_move_to (cr, pos, -lines[i].length); - cairo_line_to (cr, pos, +lines[i].length); - cairo_set_source_rgb (cr, lines[i].red, lines[i].green, lines[i].blue); - cairo_stroke (cr); - pos += SIZE; - } - - /* This should display a perfect vertically centered black line */ - cairo_move_to (cr, 0.5, -1e100); - cairo_line_to (cr, pos, 1e100); - cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); - cairo_stroke (cr); - - return CAIRO_TEST_SUCCESS; -} - -/* XFAIL: range overflow of fixed-point */ -CAIRO_TEST (long_lines, - "Test long lines" - "\nLong lines are not drawn due to the limitations of the internal 16.16 fixed-point coordinates", - "stroke, stress", /* keywords */ - NULL, /* requirements */ - SIZE * (LINE_NBR + 1), SIZE * (LINE_NBR + 1), - NULL, draw) - diff --git a/test/make-cairo-test-constructors.sh b/test/make-cairo-test-constructors.sh deleted file mode 100644 index cb1391e..0000000 --- a/test/make-cairo-test-constructors.sh +++ /dev/null @@ -1,29 +0,0 @@ -#! /bin/sh - -if test $# -eq 0; then - echo "$0: no input files." >&2 - exit 0 -fi - -cat < - */ - -#include "cairo-test.h" - -#define WIDTH 3 -#define HEIGHT 3 - -/* A single, black pixel */ -static const uint32_t black_pixel_argb = 0xff000000; -static const uint32_t black_pixel = 0x00000000; - -static cairo_bool_t -set_pixel_black(uint8_t *data, int stride, - cairo_format_t format, int x, int y) -{ - switch (format) { - case CAIRO_FORMAT_ARGB32: - case CAIRO_FORMAT_RGB24: - *(uint32_t *)(data + y * stride + 4*x) = black_pixel_argb; - break; - case CAIRO_FORMAT_RGB16_565: - *(uint16_t *)(data + y * stride + 2*x) = black_pixel; - break; - case CAIRO_FORMAT_RGB30: - case CAIRO_FORMAT_A8: - case CAIRO_FORMAT_A1: - case CAIRO_FORMAT_INVALID: - default: - return FALSE; - } - return TRUE; -} - -static cairo_test_status_t -all (cairo_t *cr, int width, int height) -{ - cairo_surface_t *surface; - uint8_t *data; - int stride; - cairo_format_t format; - int i, j; - - /* Fill background white */ - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - surface = cairo_surface_map_to_image (cairo_get_target (cr), NULL); - cairo_surface_flush (surface); - format = cairo_image_surface_get_format (surface); - stride = cairo_image_surface_get_stride (surface); - data = cairo_image_surface_get_data (surface); - if (data) { - for (j = 0; j < HEIGHT; j++) - for (i = 0; i < WIDTH; i++) - if (! set_pixel_black (data, stride, format, i, j)) - return CAIRO_TEST_FAILURE; - } - cairo_surface_mark_dirty (surface); - cairo_surface_unmap_image (cairo_get_target (cr), surface); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -bit (cairo_t *cr, int width, int height) -{ - cairo_surface_t *surface; - cairo_rectangle_int_t extents; - cairo_format_t format; - uint8_t *data; - - extents.x = extents.y = extents.width = extents.height = 1; - - /* Fill background white */ - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - surface = cairo_surface_map_to_image (cairo_get_target (cr), &extents); - cairo_surface_flush (surface); - data = cairo_image_surface_get_data (surface); - format = cairo_image_surface_get_format (surface); - if (data) { - if (! set_pixel_black (data, 0, format, 0, 0)) - return CAIRO_TEST_FAILURE; - } - cairo_surface_mark_dirty (surface); - cairo_surface_unmap_image (cairo_get_target (cr), surface); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -fill (cairo_t *cr, int width, int height) -{ - cairo_surface_t *surface; - cairo_rectangle_int_t extents; - cairo_t *cr2; - - extents.x = extents.y = extents.width = extents.height = 1; - - /* Fill background white */ - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - surface = cairo_surface_map_to_image (cairo_get_target (cr), &extents); - cr2 = cairo_create (surface); - cairo_set_source_rgb (cr2, 1, 0, 0); - cairo_paint (cr2); - cairo_destroy (cr2); - cairo_surface_unmap_image (cairo_get_target (cr), surface); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (map_all_to_image, - "Test maping a surface to an image and modifying it externally", - "image", /* keywords */ - "target=raster", /* requirements */ - WIDTH, HEIGHT, - NULL, all) -CAIRO_TEST (map_bit_to_image, - "Test maping a surface to an image and modifying it externally", - "image", /* keywords */ - "target=raster", /* requirements */ - WIDTH, HEIGHT, - NULL, bit) -CAIRO_TEST (map_to_image_fill, - "Test maping a surface to an image and modifying it externally", - "image", /* keywords */ - "target=raster", /* requirements */ - WIDTH, HEIGHT, - NULL, fill) diff --git a/test/mask-alpha.c b/test/mask-alpha.c deleted file mode 100644 index d66e0ac..0000000 --- a/test/mask-alpha.c +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright © 2007 Adrian Johnson - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Adrian Johnson - */ - -#include "cairo-test.h" - -#define SIZE 40 -#define PAD 2 -#define WIDTH (PAD + SIZE + PAD) -#define HEIGHT WIDTH - -/* This test is designed to test that PDF viewers use the correct - * alpha values in an Alpha SMasks. Some viewers use the color values - * instead of the alpha. The test draws a triangle and rectangle in a - * group then draws the group using cairo_mask(). The mask consists of - * a circle with the rgba (0.4, 0.4, 0.4, 0.8) and the background rgba - * (0.8, 0.8, 0.8, 0.4). - */ - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_pattern_t *pattern; - - cairo_translate (cr, PAD, PAD); - - /* mask */ - cairo_push_group (cr); - cairo_set_source_rgba (cr, 0.8, 0.8, 0.8, 0.4); - cairo_paint (cr); - cairo_arc (cr, SIZE / 2, SIZE / 2, SIZE / 6, 0., 2. * M_PI); - cairo_set_source_rgba (cr, 0.4, 0.4, 0.4, 0.8); - cairo_fill (cr); - pattern = cairo_pop_group (cr); - - /* source */ - cairo_push_group (cr); - cairo_rectangle (cr, 0.3 * SIZE, 0.2 * SIZE, 0.5 * SIZE, 0.5 * SIZE); - cairo_set_source_rgb (cr, 0, 0, 1); - cairo_fill (cr); - cairo_move_to (cr, 0.0, 0.8 * SIZE); - cairo_rel_line_to (cr, 0.7 * SIZE, 0.0); - cairo_rel_line_to (cr, -0.375 * SIZE, -0.6 * SIZE); - cairo_close_path (cr); - cairo_set_source_rgb (cr, 0, 1, 0); - cairo_fill (cr); - cairo_pop_group_to_source (cr); - - cairo_mask (cr, pattern); - cairo_pattern_destroy (pattern); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (mask_alpha, - "A simple test painting a group through a circle mask", - "mask, alpha", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/mask-ctm.c b/test/mask-ctm.c deleted file mode 100644 index 205ab06..0000000 --- a/test/mask-ctm.c +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_t *mask_surface; - cairo_pattern_t *mask; - uint32_t data[] = { - 0x80000000, 0x80000000, - 0x80000000, 0x80000000, - }; - cairo_matrix_t matrix; - - mask_surface = cairo_image_surface_create_for_data ((unsigned char *) data, - CAIRO_FORMAT_ARGB32, 2, 2, 8); - mask = cairo_pattern_create_for_surface (mask_surface); - - cairo_set_source_rgb (cr, 1.0, 0, 0); - - /* We can translate with the CTM, with the pattern matrix, or with - * both. */ - - /* 1. CTM alone. */ - cairo_save (cr); - { - cairo_translate (cr, 2, 2); - cairo_mask (cr, mask); - } - cairo_restore (cr); - - /* 2. Pattern matrix alone. */ - cairo_matrix_init_translate (&matrix, -4, -4); - cairo_pattern_set_matrix (mask, &matrix); - - cairo_mask (cr, mask); - - /* 3. CTM + pattern matrix */ - cairo_translate (cr, 2, 2); - cairo_mask (cr, mask); - - cairo_pattern_destroy (mask); - - cairo_surface_finish (mask_surface); /* data goes out of scope */ - cairo_surface_destroy (mask_surface); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (mask_ctm, - "Test that cairo_mask is affected properly by the CTM", - "mask", /* keywords */ - NULL, /* requirements */ - 10, 10, - NULL, draw) - diff --git a/test/mask-glyphs.c b/test/mask-glyphs.c deleted file mode 100644 index 2e7b703..0000000 --- a/test/mask-glyphs.c +++ /dev/null @@ -1,187 +0,0 @@ -/* - * Copyright 2009 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -#include - -static const char *png_filename = "romedalen.png"; - -#define WIDTH 800 -#define HEIGHT 600 - -static cairo_status_t -_image_to_glyphs (cairo_surface_t *image, - int channel, - int level, - cairo_scaled_font_t *scaled_font, - double tx, double ty, - cairo_glyph_t *glyphs, - int *num_glyphs) -{ - int width, height, stride; - const unsigned char *data; - int x, y, z, n; - - width = cairo_image_surface_get_width (image); - height = cairo_image_surface_get_height (image); - stride = cairo_image_surface_get_stride (image); - data = cairo_image_surface_get_data (image); - - n = 0; - for (y = 0; y < height; y++) { - const uint32_t *row = (uint32_t *) (data + y * stride); - - for (x = 0; x < width; x++) { - z = (row[x] >> channel) & 0xff; - if (z == level) { - double xx, yy, zz; - char c = n % 26 + 'a'; - int count = 1; - cairo_glyph_t *glyphs_p = &glyphs[n]; - cairo_status_t status; - - xx = 4 * (x - width/2.) + width/2.; - yy = 4 * (y - height/2.) + height/2.; - - zz = z / 1000.; - xx = xx + zz*(width/2. - xx); - yy = yy + zz*(height/2. - yy); - - cairo_scaled_font_text_to_glyphs (scaled_font, - tx + xx, ty + yy, - &c, 1, - &glyphs_p, &count, - NULL, NULL, - NULL); - status = cairo_scaled_font_status (scaled_font); - if (status) - return status; - - assert (glyphs_p == &glyphs[n]); - assert (count == 1); - n++; - } - } - } - - *num_glyphs = n; - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_render_image (cairo_t *cr, - int width, int height, - cairo_surface_t *image) -{ - int ww, hh; - cairo_glyph_t *glyphs; - cairo_pattern_t *mask; - cairo_scaled_font_t *scaled_font; - double tx, ty; - const struct { - int shift; - double red; - double green; - double blue; - } channel[3] = { - { 0, 0.9, 0.3, 0.4 }, - { 8, 0.4, 0.9, 0.3 }, - { 16, 0.3, 0.4, 0.9 }, - }; - unsigned int n, i; - - ww = cairo_image_surface_get_width (image); - hh = cairo_image_surface_get_height (image); - - glyphs = cairo_glyph_allocate (ww * hh); - if (glyphs == NULL) - return CAIRO_STATUS_NO_MEMORY; - - tx = (width - ww) / 2.; - ty = (height - hh) / 2.; - - cairo_set_font_size (cr, 5); - scaled_font = cairo_get_scaled_font (cr); - - for (i = 0; i < ARRAY_LENGTH (channel); i++) { - cairo_push_group_with_content (cr, CAIRO_CONTENT_ALPHA); - for (n = 0; n < 256; n++) { - cairo_status_t status; - int num_glyphs; - - status = _image_to_glyphs (image, channel[i].shift, n, - scaled_font, - tx, ty, glyphs, &num_glyphs); - if (status) { - cairo_glyph_free (glyphs); - return status; - } - - cairo_set_source_rgba (cr, - 0, 0, 0, - .15 + .85 * n / 255.); - cairo_show_glyphs (cr, glyphs, num_glyphs); - } - mask = cairo_pop_group (cr); - cairo_set_source_rgb (cr, - channel[i].red, - channel[i].green, - channel[i].blue); - cairo_mask (cr, mask); - cairo_pattern_destroy (mask); - } - - cairo_glyph_free (glyphs); - return CAIRO_STATUS_SUCCESS; -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - const cairo_test_context_t *ctx = cairo_test_get_context (cr); - cairo_surface_t *image; - cairo_status_t status; - - cairo_set_source_rgb (cr, 0, 0, 0); - cairo_paint (cr); - - image = cairo_test_create_surface_from_png (ctx, png_filename); - status = cairo_surface_status (image); - if (status) - return cairo_test_status_from_status (ctx, status); - - status = _render_image (cr, width, height, image); - cairo_surface_destroy (image); - - return cairo_test_status_from_status (ctx, status); -} - -CAIRO_TEST (mask_glyphs, - "Creates a mask using a distorted array of overlapping glyphs", - "mask, glyphs", /* keywords */ - "slow", /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/mask-surface-ctm.c b/test/mask-surface-ctm.c deleted file mode 100644 index 064de3c..0000000 --- a/test/mask-surface-ctm.c +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_t *mask; - uint32_t data[] = { - 0x80000000, 0x80000000, - 0x80000000, 0x80000000, - }; - - mask = cairo_image_surface_create_for_data ((unsigned char *) data, - CAIRO_FORMAT_ARGB32, 2, 2, 8); - - cairo_set_source_rgb (cr, 1.0, 0, 0); - - /* We can translate with the CTM, with the mask_surface offset, or - * with both. */ - - /* 1. CTM alone. */ - cairo_save (cr); - { - cairo_translate (cr, 2, 2); - cairo_mask_surface (cr, mask, 0, 0); - } - cairo_restore (cr); - - /* 2. Offset alone. */ - cairo_mask_surface (cr, mask, 4, 4); - - /* 3. CTM + offset */ - cairo_translate (cr, 2, 2); - cairo_mask_surface (cr, mask, 4, 4); - - cairo_surface_finish (mask); /* data goes out of scope */ - cairo_surface_destroy (mask); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (mask_surface_ctm, - "Test that cairo_mask_surface is affected properly by the CTM", - "mask", /* keywords */ - NULL, /* requirements */ - 10, 10, - NULL, draw) diff --git a/test/mask-transformed-image.c b/test/mask-transformed-image.c deleted file mode 100644 index 13c8fe7..0000000 --- a/test/mask-transformed-image.c +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright 2008 Kai-Uwe Behrmann - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Kai-Uwe Behrmann not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Kai-Uwe Behrmann makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * KAI_UWE BEHRMANN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL KAI_UWE BEHRMANN BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Kai-Uwe Behrmann - * Chris Wilson - */ - -#include "cairo-test.h" - -static const char png_filename[] = "romedalen.png"; - -static cairo_surface_t * -create_mask (cairo_t *dst, int width, int height) -{ - cairo_surface_t *mask; - cairo_t *cr; - - mask = cairo_image_surface_create (CAIRO_FORMAT_A8, width, height); - cr = cairo_create (mask); - cairo_surface_destroy (mask); - - cairo_set_operator (cr, CAIRO_OPERATOR_OVER); - cairo_rectangle (cr, width/4, height/4, width/2, height/2); - cairo_fill (cr); - - mask = cairo_surface_reference (cairo_get_target (cr)); - cairo_destroy (cr); - - return mask; -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - const cairo_test_context_t *ctx = cairo_test_get_context (cr); - cairo_surface_t *image, *mask; - - image = cairo_test_create_surface_from_png (ctx, png_filename); - mask = create_mask (cr, 40, 40); - - /* opaque background */ - cairo_paint (cr); - - /* center */ - cairo_translate (cr, - (width - cairo_image_surface_get_width (image)) / 2., - (height - cairo_image_surface_get_height (image)) / 2.); - - /* rotate 30 degree around the center */ - cairo_translate (cr, width/2., height/2.); - cairo_rotate (cr, -30 * 2 * M_PI / 360); - cairo_translate (cr, -width/2., -height/2.); - - /* place the image on our surface */ - cairo_set_source_surface (cr, image, 0, 0); - - /* reset the drawing matrix */ - cairo_identity_matrix (cr); - - /* fill nicely */ - cairo_scale (cr, width / 40., height / 40.); - - /* apply the mask */ - cairo_mask_surface (cr, mask, 0, 0); - - cairo_surface_destroy (mask); - cairo_surface_destroy (image); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (mask_transformed_image, - "Test that cairo_mask() is affected properly by the CTM and not the image", - "mask", /* keywords */ - NULL, /* requirements */ - 80, 80, - NULL, draw) diff --git a/test/mask-transformed-similar.c b/test/mask-transformed-similar.c deleted file mode 100644 index c37deb2..0000000 --- a/test/mask-transformed-similar.c +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright 2008 Kai-Uwe Behrmann - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Kai-Uwe Behrmann not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Kai-Uwe Behrmann makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * KAI_UWE BEHRMANN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL KAI_UWE BEHRMANN BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Kai-Uwe Behrmann - * Chris Wilson - */ - -#include "cairo-test.h" - -static const char png_filename[] = "romedalen.png"; - -static cairo_surface_t * -create_mask (cairo_t *dst, int width, int height) -{ - cairo_surface_t *mask; - cairo_t *cr; - - mask = cairo_surface_create_similar (cairo_get_target (dst), - CAIRO_CONTENT_ALPHA, - width, height); - cr = cairo_create (mask); - cairo_surface_destroy (mask); - - cairo_set_operator (cr, CAIRO_OPERATOR_OVER); - cairo_rectangle (cr, width/4, height/4, width/2, height/2); - cairo_fill (cr); - - mask = cairo_surface_reference (cairo_get_target (cr)); - cairo_destroy (cr); - - return mask; -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - const cairo_test_context_t *ctx = cairo_test_get_context (cr); - cairo_surface_t *image, *mask; - - image = cairo_test_create_surface_from_png (ctx, png_filename); - mask = create_mask (cr, 40, 40); - - /* opaque background */ - cairo_paint (cr); - - /* center */ - cairo_translate (cr, - (width - cairo_image_surface_get_width (image)) / 2., - (height - cairo_image_surface_get_height (image)) / 2.); - - /* rotate 30 degree around the center */ - cairo_translate (cr, width/2., height/2.); - cairo_rotate (cr, -30 * 2 * M_PI / 360); - cairo_translate (cr, -width/2., -height/2.); - - /* place the image on our surface */ - cairo_set_source_surface (cr, image, 0, 0); - - /* reset the drawing matrix */ - cairo_identity_matrix (cr); - - /* fill nicely */ - cairo_scale (cr, width / 40., height / 40.); - - /* apply the mask */ - cairo_mask_surface (cr, mask, 0, 0); - - cairo_surface_destroy (mask); - cairo_surface_destroy (image); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (mask_transformed_similar, - "Test that cairo_mask() is affected properly by the CTM and not the image", - "mask", /* keywords */ - NULL, /* requirements */ - 80, 80, - NULL, draw) diff --git a/test/mask.c b/test/mask.c deleted file mode 100644 index 89f4c3c..0000000 --- a/test/mask.c +++ /dev/null @@ -1,246 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Authors: Owen Taylor - * Kristian Høgsberg - */ - -#include "cairo-test.h" -#include -#include - -#define WIDTH 16 -#define HEIGHT 16 -#define PAD 2 - -static const char *png_filename = "romedalen.png"; -static cairo_surface_t *image; - -static void -set_solid_pattern (const cairo_test_context_t *ctx, cairo_t *cr, int x, int y) -{ - cairo_set_source_rgb (cr, 0, 0, 0.6); -} - -static void -set_translucent_pattern (const cairo_test_context_t *ctx, cairo_t *cr, int x, int y) -{ - cairo_set_source_rgba (cr, 0, 0, 0.6, 0.5); -} - -static void -set_gradient_pattern (const cairo_test_context_t *ctx, cairo_t *cr, int x, int y) -{ - cairo_pattern_t *pattern; - - pattern = - cairo_pattern_create_linear (x, y, x + WIDTH, y + HEIGHT); - cairo_pattern_add_color_stop_rgba (pattern, 0, 1, 1, 1, 1); - cairo_pattern_add_color_stop_rgba (pattern, 1, 0, 0, 0.4, 1); - cairo_set_source (cr, pattern); - cairo_pattern_destroy (pattern); -} - -static void -set_image_pattern (const cairo_test_context_t *ctx, cairo_t *cr, int x, int y) -{ - cairo_pattern_t *pattern; - - if (image == NULL || cairo_surface_status (image)) { - cairo_surface_destroy (image); - image = cairo_test_create_surface_from_png (ctx, png_filename); - } - - pattern = cairo_pattern_create_for_surface (image); - cairo_pattern_set_extend (pattern, CAIRO_EXTEND_REPEAT); - cairo_set_source (cr, pattern); - cairo_pattern_destroy (pattern); -} - -static void -mask_polygon (cairo_t *cr, int x, int y) -{ - cairo_surface_t *mask_surface; - cairo_t *cr2; - - mask_surface = cairo_surface_create_similar (cairo_get_group_target (cr), - CAIRO_CONTENT_ALPHA, - WIDTH, HEIGHT); - cr2 = cairo_create (mask_surface); - cairo_surface_destroy (mask_surface); - - cairo_save (cr2); - cairo_set_operator (cr2, CAIRO_OPERATOR_CLEAR); - cairo_paint (cr2); - cairo_restore (cr2); - - cairo_set_source_rgb (cr2, 1, 1, 1); /* white */ - - cairo_new_path (cr2); - cairo_move_to (cr2, 0, 0); - cairo_line_to (cr2, 0, HEIGHT); - cairo_line_to (cr2, WIDTH / 2, 3 * HEIGHT / 4); - cairo_line_to (cr2, WIDTH, HEIGHT); - cairo_line_to (cr2, WIDTH, 0); - cairo_line_to (cr2, WIDTH / 2, HEIGHT / 4); - cairo_close_path (cr2); - cairo_fill (cr2); - - cairo_mask_surface (cr, cairo_get_target (cr2), x, y); - cairo_destroy (cr2); -} - -static void -mask_alpha (cairo_t *cr, int x, int y) -{ - cairo_paint_with_alpha (cr, 0.75); -} - -static void -mask_gradient (cairo_t *cr, int x, int y) -{ - cairo_pattern_t *pattern; - - pattern = cairo_pattern_create_linear (x, y, - x + WIDTH, y + HEIGHT); - - cairo_pattern_add_color_stop_rgba (pattern, - 0, - 1, 1, 1, 1); - cairo_pattern_add_color_stop_rgba (pattern, - 1, - 1, 1, 1, 0); - - cairo_mask (cr, pattern); - - cairo_pattern_destroy (pattern); -} - -static void -clip_none (cairo_t *cr, int x, int y) -{ -} - -static void -clip_rects (cairo_t *cr, int x, int y) -{ - int height = HEIGHT / 3; - - cairo_new_path (cr); - cairo_rectangle (cr, x, y, WIDTH, height); - cairo_rectangle (cr, x, y + 2 * height, WIDTH, height); - cairo_clip (cr); -} - -static void -clip_circle (cairo_t *cr, int x, int y) -{ - cairo_new_path (cr); - cairo_arc (cr, x + WIDTH / 2, y + HEIGHT / 2, - WIDTH / 2, 0, 2 * M_PI); - cairo_clip (cr); - cairo_new_path (cr); -} - -static void (* const pattern_funcs[])(const cairo_test_context_t *ctx, cairo_t *cr, int x, int y) = { - set_solid_pattern, - set_translucent_pattern, - set_gradient_pattern, - set_image_pattern, -}; - -static void (* const mask_funcs[])(cairo_t *cr, int x, int y) = { - mask_alpha, - mask_gradient, - mask_polygon, -}; - -static void (* const clip_funcs[])(cairo_t *cr, int x, int y) = { - clip_none, - clip_rects, - clip_circle, -}; - -#define IMAGE_WIDTH (ARRAY_LENGTH (pattern_funcs) * (WIDTH + PAD) + PAD) -#define IMAGE_HEIGHT (ARRAY_LENGTH (mask_funcs) * ARRAY_LENGTH (clip_funcs) * (HEIGHT + PAD) + PAD) - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - const cairo_test_context_t *ctx = cairo_test_get_context (cr); - cairo_surface_t *tmp_surface; - size_t i, j, k; - cairo_t *cr2; - - /* Some of our drawing is unbounded, so we draw each test to - * a temporary surface and copy over. - */ - tmp_surface = cairo_surface_create_similar (cairo_get_group_target (cr), - CAIRO_CONTENT_COLOR_ALPHA, - IMAGE_WIDTH, IMAGE_HEIGHT); - cr2 = cairo_create (tmp_surface); - cairo_surface_destroy (tmp_surface); - - for (k = 0; k < ARRAY_LENGTH (clip_funcs); k++) { - for (j = 0; j < ARRAY_LENGTH (mask_funcs); j++) { - for (i = 0; i < ARRAY_LENGTH (pattern_funcs); i++) { - int x = i * (WIDTH + PAD) + PAD; - int y = (ARRAY_LENGTH (mask_funcs) * k + j) * (HEIGHT + PAD) + PAD; - - /* Clear intermediate surface we are going to be drawing onto */ - cairo_save (cr2); - cairo_set_operator (cr2, CAIRO_OPERATOR_CLEAR); - cairo_paint (cr2); - cairo_restore (cr2); - - /* draw */ - cairo_save (cr2); - - clip_funcs[k] (cr2, x, y); - pattern_funcs[i] (ctx, cr2, x, y); - mask_funcs[j] (cr2, x, y); - - cairo_restore (cr2); - - /* Copy back to the main pixmap */ - cairo_set_source_surface (cr, cairo_get_target (cr2), 0, 0); - cairo_rectangle (cr, x, y, WIDTH, HEIGHT); - cairo_fill (cr); - } - } - } - - cairo_destroy (cr2); - - cairo_surface_destroy (image); - image = NULL; - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (mask, - "Tests of cairo_mask", - "mask", /* keywords */ - NULL, /* requirements */ - IMAGE_WIDTH, IMAGE_HEIGHT, - NULL, draw) - diff --git a/test/mesh-pattern-accuracy.c b/test/mesh-pattern-accuracy.c deleted file mode 100644 index d1f60b2..0000000 --- a/test/mesh-pattern-accuracy.c +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright © 2009 Adrian Johnson - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Adrian Johnson - */ - -#include "cairo-test.h" -#include - -#define SIZE 256 - -/* This test is designed to test the accuracy of the rendering of mesh - * patterns. - * - * Color accuracy is tested by a square patch covering the whole - * surface with black and white corners. - * - * Extents accuracy is checked by a small red square patch at the - * center of the surface which should measure 2x2 pixels. - */ - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_pattern_t *pattern; - double offset; - - cairo_test_paint_checkered (cr); - - pattern = cairo_pattern_create_mesh (); - - cairo_mesh_pattern_begin_patch (pattern); - - cairo_mesh_pattern_move_to (pattern, 0, 0); - cairo_mesh_pattern_line_to (pattern, 1, 0); - cairo_mesh_pattern_line_to (pattern, 1, 1); - cairo_mesh_pattern_line_to (pattern, 0, 1); - - cairo_mesh_pattern_set_corner_color_rgb (pattern, 0, 0, 0, 0); - cairo_mesh_pattern_set_corner_color_rgb (pattern, 1, 1, 1, 1); - cairo_mesh_pattern_set_corner_color_rgb (pattern, 2, 0, 0, 0); - cairo_mesh_pattern_set_corner_color_rgb (pattern, 3, 1, 1, 1); - - cairo_mesh_pattern_end_patch (pattern); - - cairo_mesh_pattern_begin_patch (pattern); - - /* A small 1x1 red patch, that should be rendered as a 2x2 red - * square in the center of the image */ - - offset = 0.5 / SIZE; - - cairo_mesh_pattern_move_to (pattern, 0.5 + offset, 0.5 + offset); - cairo_mesh_pattern_line_to (pattern, 0.5 + offset, 0.5 - offset); - cairo_mesh_pattern_line_to (pattern, 0.5 - offset, 0.5 - offset); - cairo_mesh_pattern_line_to (pattern, 0.5 - offset, 0.5 + offset); - - cairo_mesh_pattern_set_corner_color_rgb (pattern, 0, 1, 0, 0); - cairo_mesh_pattern_set_corner_color_rgb (pattern, 1, 1, 0, 0); - cairo_mesh_pattern_set_corner_color_rgb (pattern, 2, 1, 0, 0); - cairo_mesh_pattern_set_corner_color_rgb (pattern, 3, 1, 0, 0); - - cairo_mesh_pattern_end_patch (pattern); - - cairo_scale (cr, SIZE, SIZE); - - cairo_set_source (cr, pattern); - cairo_paint (cr); - cairo_pattern_destroy (pattern); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (mesh_pattern_accuracy, - "Paint mesh pattern", - "mesh, pattern", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, draw) diff --git a/test/mesh-pattern-conical.c b/test/mesh-pattern-conical.c deleted file mode 100644 index 4e87eec..0000000 --- a/test/mesh-pattern-conical.c +++ /dev/null @@ -1,135 +0,0 @@ -/* - * Copyright © 2009 Adrian Johnson - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Adrian Johnson - */ - -#include "cairo-test.h" -#include - -#define PAT_WIDTH 100 -#define PAT_HEIGHT 100 -#define SIZE PAT_WIDTH -#define PAD 2 -#define WIDTH (PAD + SIZE + PAD) -#define HEIGHT WIDTH - - -/* - * This test is designed to paint a mesh pattern which contains 8 - * circular sectors approximating a conical gradient. - */ - -#define CENTER_X 50 -#define CENTER_Y 50 -#define RADIUS 50 - -static void -sector_patch (cairo_pattern_t *pattern, - double angle_A, - double A_r, double A_g, double A_b, - double angle_B, - double B_r, double B_g, double B_b) -{ - double r_sin_A, r_cos_A; - double r_sin_B, r_cos_B; - double h; - - r_sin_A = RADIUS * sin (angle_A); - r_cos_A = RADIUS * cos (angle_A); - r_sin_B = RADIUS * sin (angle_B); - r_cos_B = RADIUS * cos (angle_B); - - h = 4.0/3.0 * tan ((angle_B - angle_A) / 4.0); - - cairo_mesh_pattern_begin_patch (pattern); - - cairo_mesh_pattern_move_to (pattern, CENTER_X, CENTER_Y); - cairo_mesh_pattern_line_to (pattern, - CENTER_X + r_cos_A, - CENTER_Y + r_sin_A); - - cairo_mesh_pattern_curve_to (pattern, - CENTER_X + r_cos_A - h * r_sin_A, - CENTER_Y + r_sin_A + h * r_cos_A, - CENTER_X + r_cos_B + h * r_sin_B, - CENTER_Y + r_sin_B - h * r_cos_B, - CENTER_X + r_cos_B, - CENTER_Y + r_sin_B); - - cairo_mesh_pattern_set_corner_color_rgb (pattern, 0, 1, 1, 1); - cairo_mesh_pattern_set_corner_color_rgb (pattern, 1, A_r, A_g, A_b); - cairo_mesh_pattern_set_corner_color_rgb (pattern, 2, B_r, B_g, B_b); - - cairo_mesh_pattern_end_patch (pattern); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_pattern_t *pattern; - - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - cairo_translate (cr, PAD, PAD); - - pattern = cairo_pattern_create_mesh (); - sector_patch (pattern, - 0, 1, 0, 0, - M_PI/4, 1, 1, 0); - sector_patch (pattern, - M_PI/4, 0, 1, 0, - M_PI/2, 0, 1, 1); - sector_patch (pattern, - M_PI/2, 0, 0, 1, - 3*M_PI/4, 1, 0, 1); - sector_patch (pattern, - 3*M_PI/4, 1, 0, 0, - M_PI, 1, 1, 0); - sector_patch (pattern, - -M_PI, 1, 1, 0, - -3*M_PI/4, 0, 1, 0); - sector_patch (pattern, - -3*M_PI/4, 0, 1, 0, - -M_PI/2, 0, 1, 1); - sector_patch (pattern, - -M_PI/2, 0, 1, 1, - -M_PI/4, 0, 0, 1); - sector_patch (pattern, - -M_PI/4, 0, 0, 1, - 0, 1, 0, 0); - - cairo_set_source (cr, pattern); - cairo_paint (cr); - cairo_pattern_destroy (pattern); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (mesh_pattern_conical, - "Paint a conical pattern using a mesh pattern", - "conical, mesh, pattern", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/mesh-pattern-control-points.c b/test/mesh-pattern-control-points.c deleted file mode 100644 index 057e7a1..0000000 --- a/test/mesh-pattern-control-points.c +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright © 2009 Adrian Johnson - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Adrian Johnson - */ - -#include "cairo-test.h" - -#define SIZE 90 -#define PAD 10 -#define WIDTH (PAD + 2 * (SIZE + PAD)) -#define HEIGHT (PAD + SIZE + PAD) - - -/* - * This test is designed to paint a two mesh patches. One with default - * control points and one with a control point at a no default - * location. The control points of both of them are drawn as squares - * to make them visible. - */ - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_pattern_t *pattern; - unsigned int i, j; - unsigned int num_patches; - double x, y; - - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - cairo_translate (cr, PAD, PAD); - - pattern = cairo_pattern_create_mesh (); - cairo_mesh_pattern_begin_patch (pattern); - - cairo_mesh_pattern_move_to (pattern, 0, 0); - cairo_mesh_pattern_line_to (pattern, SIZE, 0); - cairo_mesh_pattern_line_to (pattern, SIZE, SIZE); - cairo_mesh_pattern_line_to (pattern, 0, SIZE); - - cairo_mesh_pattern_set_corner_color_rgb (pattern, 0, 1, 0, 0); - cairo_mesh_pattern_set_corner_color_rgb (pattern, 1, 0, 1, 0); - cairo_mesh_pattern_set_corner_color_rgb (pattern, 2, 0, 0, 1); - cairo_mesh_pattern_set_corner_color_rgb (pattern, 3, 1, 1, 0); - - cairo_mesh_pattern_set_control_point (pattern, 0, SIZE * .7, SIZE * .7); - cairo_mesh_pattern_set_control_point (pattern, 1, SIZE * .9, SIZE * .7); - cairo_mesh_pattern_set_control_point (pattern, 2, SIZE * .9, SIZE * .9); - cairo_mesh_pattern_set_control_point (pattern, 3, SIZE * .7, SIZE * .9); - - cairo_mesh_pattern_end_patch (pattern); - - cairo_mesh_pattern_begin_patch (pattern); - - cairo_mesh_pattern_move_to (pattern, SIZE + PAD, 0); - cairo_mesh_pattern_line_to (pattern, 2*SIZE + PAD, 0); - cairo_mesh_pattern_line_to (pattern, 2*SIZE + PAD, SIZE); - cairo_mesh_pattern_line_to (pattern, SIZE + PAD, SIZE); - - cairo_mesh_pattern_set_corner_color_rgb (pattern, 0, 1, 0, 0); - cairo_mesh_pattern_set_corner_color_rgb (pattern, 1, 0, 1, 0); - cairo_mesh_pattern_set_corner_color_rgb (pattern, 2, 0, 0, 1); - cairo_mesh_pattern_set_corner_color_rgb (pattern, 3, 1, 1, 0); - - cairo_mesh_pattern_end_patch (pattern); - - cairo_set_source (cr, pattern); - cairo_paint (cr); - - /* mark the location of the control points */ - cairo_set_source_rgb (cr, 0, 0, 0); - cairo_mesh_pattern_get_patch_count (pattern, &num_patches); - for (i = 0; i < num_patches; i++) { - for (j = 0; j < 4; j++) { - cairo_mesh_pattern_get_control_point (pattern, i, j, &x, &y); - cairo_rectangle (cr, x - 5, y - 5, 10, 10); - cairo_fill (cr); - } - } - - cairo_pattern_destroy (pattern); - - return CAIRO_TEST_SUCCESS; -} - - -CAIRO_TEST (mesh_pattern_control_points, - "Paint mesh pattern with non default control points", - "mesh, pattern", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/mesh-pattern-fold.c b/test/mesh-pattern-fold.c deleted file mode 100644 index cacd712..0000000 --- a/test/mesh-pattern-fold.c +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright © 2009 Adrian Johnson - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Adrian Johnson - */ - -#include "cairo-test.h" - -#define SIZE 100 -#define PAD 15 -#define WIDTH (5*SIZE) -#define HEIGHT (5*SIZE) - - -/* This test is designed to paint a mesh pattern which folds along - * both parameters. */ - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_pattern_t *pattern; - - cairo_test_paint_checkered (cr); - - pattern = cairo_pattern_create_mesh (); - - cairo_mesh_pattern_begin_patch (pattern); - - cairo_mesh_pattern_move_to (pattern, 1, 1); - - cairo_mesh_pattern_curve_to (pattern, 6, 0, -1, 0, 4, 1); - cairo_mesh_pattern_curve_to (pattern, 5, 6, 5, -1, 4, 4); - cairo_mesh_pattern_curve_to (pattern, -1, 3, 6, 3, 1, 4); - cairo_mesh_pattern_curve_to (pattern, 2, -1, 2, 6, 1, 1); - - cairo_mesh_pattern_set_control_point (pattern, 0, 2, 3); - cairo_mesh_pattern_set_control_point (pattern, 1, 3, 3); - cairo_mesh_pattern_set_control_point (pattern, 2, 3, 2); - cairo_mesh_pattern_set_control_point (pattern, 3, 2, 2); - - cairo_mesh_pattern_set_corner_color_rgb (pattern, 0, 1, 0, 0); - cairo_mesh_pattern_set_corner_color_rgb (pattern, 1, 0, 0, 1); - cairo_mesh_pattern_set_corner_color_rgb (pattern, 2, 0, 0, 0); - cairo_mesh_pattern_set_corner_color_rgb (pattern, 3, 0, 1, 0); - - cairo_mesh_pattern_end_patch (pattern); - - cairo_scale (cr, SIZE, SIZE); - - cairo_set_source (cr, pattern); - cairo_paint (cr); - cairo_pattern_destroy (pattern); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (mesh_pattern_fold, - "Paint a mesh pattern with complex folds", - "mesh, pattern", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/mesh-pattern-overlap.c b/test/mesh-pattern-overlap.c deleted file mode 100644 index 969bc73..0000000 --- a/test/mesh-pattern-overlap.c +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright © 2009 Adrian Johnson - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Adrian Johnson - */ - -#include "cairo-test.h" - -#define SIZE 100 -#define PAD 15 -#define WIDTH (PAD + SIZE + PAD) -#define HEIGHT WIDTH - - -/* This test is designed to paint a mesh pattern with a simple - * fold. */ - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_pattern_t *pattern; - - cairo_test_paint_checkered (cr); - - cairo_translate (cr, PAD, PAD); - - pattern = cairo_pattern_create_mesh (); - - cairo_mesh_pattern_begin_patch (pattern); - - cairo_mesh_pattern_move_to (pattern, 0, 0); - cairo_mesh_pattern_curve_to (pattern, 30, -30, 60, 30, 100, 0); - cairo_mesh_pattern_curve_to (pattern, 130, 140, 60, -40, 100, 100); - cairo_mesh_pattern_curve_to (pattern, 60, 70, 30, 130, 0, 100); - cairo_mesh_pattern_curve_to (pattern, -30, -40, 30, 140, 0, 0); - - cairo_mesh_pattern_set_corner_color_rgb (pattern, 0, 1, 0, 0); - cairo_mesh_pattern_set_corner_color_rgb (pattern, 1, 0, 1, 0); - cairo_mesh_pattern_set_corner_color_rgb (pattern, 2, 0, 0, 1); - cairo_mesh_pattern_set_corner_color_rgb (pattern, 3, 1, 1, 0); - - cairo_mesh_pattern_end_patch (pattern); - - cairo_set_source (cr, pattern); - cairo_paint (cr); - cairo_pattern_destroy (pattern); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (mesh_pattern_overlap, - "Paint a mesh pattern with a simple fold", - "mesh, pattern", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/mesh-pattern-transformed.c b/test/mesh-pattern-transformed.c deleted file mode 100644 index 5fe0dc0..0000000 --- a/test/mesh-pattern-transformed.c +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Copyright © 2009 Adrian Johnson - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Adrian Johnson - */ - -#include "cairo-test.h" - -#define PAT_WIDTH 170 -#define PAT_HEIGHT 170 -#define SIZE PAT_WIDTH -#define PAD 10 -#define WIDTH 190 -#define HEIGHT 140 - - -/* This test is designed to paint a mesh pattern containing two - * overlapping patches transformed in different ways. */ - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_pattern_t *pattern; - - cairo_test_paint_checkered (cr); - - cairo_translate (cr, PAD, PAD); - - pattern = cairo_pattern_create_mesh (); - - cairo_mesh_pattern_begin_patch (pattern); - - cairo_mesh_pattern_move_to (pattern, 0, 0); - cairo_mesh_pattern_curve_to (pattern, 30, -30, 60, 30, 100, 0); - cairo_mesh_pattern_curve_to (pattern, 60, 30, 130, 60, 100, 100); - cairo_mesh_pattern_curve_to (pattern, 60, 70, 30, 130, 0, 100); - cairo_mesh_pattern_curve_to (pattern, 30, 70, -30, 30, 0, 0); - - cairo_mesh_pattern_set_corner_color_rgb (pattern, 0, 1, 0, 0); - cairo_mesh_pattern_set_corner_color_rgb (pattern, 1, 0, 1, 0); - cairo_mesh_pattern_set_corner_color_rgb (pattern, 2, 0, 0, 1); - cairo_mesh_pattern_set_corner_color_rgb (pattern, 3, 1, 1, 0); - - cairo_mesh_pattern_end_patch (pattern); - - cairo_mesh_pattern_begin_patch (pattern); - - cairo_mesh_pattern_move_to (pattern, 50, 50); - cairo_mesh_pattern_curve_to (pattern, 80, 20, 110, 80, 150, 50); - - cairo_mesh_pattern_curve_to (pattern, 110, 80, 180, 110, 150, 150); - - cairo_mesh_pattern_curve_to (pattern, 110, 120, 80, 180, 50, 150); - - cairo_mesh_pattern_curve_to (pattern, 80, 120, 20, 80, 50, 50); - - cairo_mesh_pattern_set_corner_color_rgba (pattern, 0, 1, 0, 0, 0.3); - cairo_mesh_pattern_set_corner_color_rgb (pattern, 1, 0, 1, 0); - cairo_mesh_pattern_set_corner_color_rgba (pattern, 2, 0, 0, 1, 0.3); - cairo_mesh_pattern_set_corner_color_rgb (pattern, 3, 1, 1, 0); - - cairo_mesh_pattern_end_patch (pattern); - - cairo_scale (cr, .5, .5); - - cairo_set_source (cr, pattern); - cairo_paint (cr); - - cairo_translate (cr, PAT_WIDTH, PAT_HEIGHT); - cairo_translate (cr, PAT_WIDTH/2, PAT_HEIGHT/2); - cairo_rotate (cr, M_PI/4); - cairo_translate (cr, -PAT_WIDTH, -PAT_HEIGHT); - cairo_set_source (cr, pattern); - cairo_paint (cr); - - cairo_pattern_destroy (pattern); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (mesh_pattern_transformed, - "Paint mesh pattern with a transformation", - "mesh, pattern", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) - diff --git a/test/mesh-pattern.c b/test/mesh-pattern.c deleted file mode 100644 index eccbd38..0000000 --- a/test/mesh-pattern.c +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Copyright © 2009 Adrian Johnson - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Adrian Johnson - */ - -#include "cairo-test.h" - -#define PAT_WIDTH 170 -#define PAT_HEIGHT 170 -#define SIZE PAT_WIDTH -#define PAD 2 -#define WIDTH (PAD + SIZE + PAD) -#define HEIGHT WIDTH - - -/* This test is designed to paint a mesh pattern. The mesh contains - * two overlapping patches */ - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_pattern_t *pattern; - - cairo_test_paint_checkered (cr); - - cairo_translate (cr, PAD, PAD); - cairo_translate (cr, 10, 10); - - pattern = cairo_pattern_create_mesh (); - - cairo_mesh_pattern_begin_patch (pattern); - - cairo_mesh_pattern_move_to (pattern, 0, 0); - cairo_mesh_pattern_curve_to (pattern, 30, -30, 60, 30, 100, 0); - cairo_mesh_pattern_curve_to (pattern, 60, 30, 130, 60, 100, 100); - cairo_mesh_pattern_curve_to (pattern, 60, 70, 30, 130, 0, 100); - cairo_mesh_pattern_curve_to (pattern, 30, 70, -30, 30, 0, 0); - - cairo_mesh_pattern_set_corner_color_rgb (pattern, 0, 1, 0, 0); - cairo_mesh_pattern_set_corner_color_rgb (pattern, 1, 0, 1, 0); - cairo_mesh_pattern_set_corner_color_rgb (pattern, 2, 0, 0, 1); - cairo_mesh_pattern_set_corner_color_rgb (pattern, 3, 1, 1, 0); - - cairo_mesh_pattern_end_patch (pattern); - - cairo_mesh_pattern_begin_patch (pattern); - - cairo_mesh_pattern_move_to (pattern, 50, 50); - cairo_mesh_pattern_curve_to (pattern, 80, 20, 110, 80, 150, 50); - cairo_mesh_pattern_curve_to (pattern, 110, 80, 180, 110, 150, 150); - cairo_mesh_pattern_curve_to (pattern, 110, 120, 80, 180, 50, 150); - cairo_mesh_pattern_curve_to (pattern, 80, 120, 20, 80, 50, 50); - - cairo_mesh_pattern_set_corner_color_rgba (pattern, 0, 1, 0, 0, 0.3); - cairo_mesh_pattern_set_corner_color_rgb (pattern, 1, 0, 1, 0); - cairo_mesh_pattern_set_corner_color_rgba (pattern, 2, 0, 0, 1, 0.3); - cairo_mesh_pattern_set_corner_color_rgb (pattern, 3, 1, 1, 0); - - cairo_mesh_pattern_end_patch (pattern); - - cairo_set_source (cr, pattern); - cairo_paint (cr); - cairo_pattern_destroy (pattern); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (mesh_pattern, - "Paint mesh pattern", - "mesh, pattern", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/mime-data.c b/test/mime-data.c deleted file mode 100644 index c744f5c..0000000 --- a/test/mime-data.c +++ /dev/null @@ -1,241 +0,0 @@ -/* - * Copyright © 2008 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -#include -#include - -/* Basic test to exercise the new mime-data embedding. */ - -static cairo_status_t -read_file (const cairo_test_context_t *ctx, - const char *filename, - unsigned char **data_out, - unsigned int *length_out) -{ - FILE *file; - unsigned char *buf; - unsigned int len; - - file = fopen (filename, "rb"); - if (file == NULL) { - char path[4096]; - - if (errno == ENOMEM) - return CAIRO_STATUS_NO_MEMORY; - - /* try again with srcdir */ - snprintf (path, sizeof (path), - "%s/%s", ctx->srcdir, filename); - file = fopen (path, "rb"); - } - if (file == NULL) { - switch (errno) { - case ENOMEM: - return CAIRO_STATUS_NO_MEMORY; - default: - return CAIRO_STATUS_FILE_NOT_FOUND; - } - } - - fseek (file, 0, SEEK_END); - len = ftell (file); - fseek (file, 0, SEEK_SET); - - buf = xmalloc (len); - *length_out = fread (buf, 1, len, file); - fclose (file); - if (*length_out != len) { - free (buf); - return CAIRO_STATUS_READ_ERROR; - } - - *data_out = buf; - return CAIRO_STATUS_SUCCESS; -} - -static cairo_test_status_t -paint_file (cairo_t *cr, - const char *filename, const char *mime_type, - int x, int y) -{ - const cairo_test_context_t *ctx = cairo_test_get_context (cr); - cairo_surface_t *image; - unsigned char *mime_data; - unsigned int mime_length; - cairo_status_t status; - - /* Deliberately use a non-matching MIME images, so that we can identify - * when the MIME representation is used in preference to the plain image - * surface. - */ - status = read_file (ctx, filename, &mime_data, &mime_length); - if (status) - return cairo_test_status_from_status (ctx, status); - - image = cairo_image_surface_create (CAIRO_FORMAT_RGB24, 200, 50); - - status = cairo_surface_set_mime_data (image, mime_type, - mime_data, mime_length, - free, mime_data); - if (status) { - cairo_surface_destroy (image); - free (mime_data); - return cairo_test_status_from_status (ctx, status); - } - - cairo_set_source_surface (cr, image, x, y); - cairo_surface_destroy (image); - - cairo_paint (cr); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -paint_jbig2_file (cairo_t *cr, int x, int y) -{ - const cairo_test_context_t *ctx = cairo_test_get_context (cr); - cairo_surface_t *image; - unsigned char *mime_data; - unsigned int mime_length; - cairo_status_t status; - const char jbig2_image1_filename[] = "image1.jb2"; - const char jbig2_image2_filename[] = "image2.jb2"; - const char jbig2_global_filename[] = "global.jb2"; - - /* Deliberately use a non-matching MIME images, so that we can identify - * when the MIME representation is used in preference to the plain image - * surface. - */ - - /* Image 1 */ - - status = read_file (ctx, jbig2_image1_filename, &mime_data, &mime_length); - if (status) - return cairo_test_status_from_status (ctx, status); - - image = cairo_image_surface_create (CAIRO_FORMAT_RGB24, 200, 50); - - status = cairo_surface_set_mime_data (image, CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID, - (unsigned char *)"global", 6, NULL, NULL); - if (status) { - cairo_surface_destroy (image); - return cairo_test_status_from_status (ctx, status); - } - - status = cairo_surface_set_mime_data (image, CAIRO_MIME_TYPE_JBIG2, - mime_data, mime_length, - free, mime_data); - if (status) { - cairo_surface_destroy (image); - free (mime_data); - return cairo_test_status_from_status (ctx, status); - } - - cairo_set_source_surface (cr, image, x, y); - cairo_surface_destroy (image); - - cairo_paint (cr); - - /* Image 2 */ - - status = read_file (ctx, jbig2_image2_filename, &mime_data, &mime_length); - if (status) - return cairo_test_status_from_status (ctx, status); - - image = cairo_image_surface_create (CAIRO_FORMAT_RGB24, 200, 50); - - status = cairo_surface_set_mime_data (image, CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID, - (unsigned char *)"global", 6, NULL, NULL); - if (status) { - cairo_surface_destroy (image); - return cairo_test_status_from_status (ctx, status); - } - - status = cairo_surface_set_mime_data (image, CAIRO_MIME_TYPE_JBIG2, - mime_data, mime_length, - free, mime_data); - if (status) { - cairo_surface_destroy (image); - free (mime_data); - return cairo_test_status_from_status (ctx, status); - } - - /* Set the global data */ - status = read_file (ctx, jbig2_global_filename, &mime_data, &mime_length); - if (status) - return cairo_test_status_from_status (ctx, status); - - status = cairo_surface_set_mime_data (image, CAIRO_MIME_TYPE_JBIG2_GLOBAL, - mime_data, mime_length, - free, mime_data); - if (status) { - cairo_surface_destroy (image); - free (mime_data); - return cairo_test_status_from_status (ctx, status); - } - - cairo_set_source_surface (cr, image, x, y + 50); - cairo_surface_destroy (image); - - cairo_paint (cr); - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - const char jpg_filename[] = "jpeg.jpg"; - const char png_filename[] = "png.png"; - const char jp2_filename[] = "jp2.jp2"; - cairo_test_status_t status; - - status = paint_file (cr, jpg_filename, CAIRO_MIME_TYPE_JPEG, 0, 0); - if (status) - return status; - - status = paint_file (cr, png_filename, CAIRO_MIME_TYPE_PNG, 0, 50); - if (status) - return status; - - status = paint_file (cr, jp2_filename, CAIRO_MIME_TYPE_JP2, 0, 100); - if (status) - return status; - - status = paint_jbig2_file (cr, 0, 150); - if (status) - return status; - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (mime_data, - "Check that the mime-data embedding works", - "jpeg, api", /* keywords */ - NULL, /* requirements */ - 200, 250, - NULL, draw) diff --git a/test/mime-surface-api.c b/test/mime-surface-api.c deleted file mode 100644 index ce12653..0000000 --- a/test/mime-surface-api.c +++ /dev/null @@ -1,151 +0,0 @@ -/* - * Copyright © 2011 Uli Schlachter - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Uli Schlachter - */ - -#include "cairo-test.h" - -static void -mime_data_destroy_func (void *data) -{ - cairo_bool_t *called = data; - *called = TRUE; -} - -static cairo_test_status_t -check_mime_data (cairo_test_context_t *ctx, cairo_surface_t *surface, - const char *mimetype, const unsigned char *data, - unsigned long length) -{ - const unsigned char *data_ret; - unsigned long length_ret; - - cairo_surface_get_mime_data (surface, mimetype, &data_ret, &length_ret); - if (data_ret != data || length_ret != length) { - cairo_test_log (ctx, - "Surface has mime data %p with length %lu, " - "but expected %p with length %lu\n", - data_ret, length_ret, data, length); - return CAIRO_TEST_ERROR; - } - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -set_and_check_mime_data (cairo_test_context_t *ctx, cairo_surface_t *surface, - const char *mimetype, const unsigned char *data, - unsigned long length, cairo_bool_t *destroy_called) -{ - cairo_status_t status; - - status = cairo_surface_set_mime_data (surface, mimetype, - data, length, - mime_data_destroy_func, - destroy_called); - if (status) { - cairo_test_log (ctx, "Could not set mime data to %s: %s\n", - data, cairo_status_to_string(status)); - return CAIRO_TEST_ERROR; - } - - return check_mime_data (ctx, surface, mimetype, data, length); -} - -static cairo_test_status_t -preamble (cairo_test_context_t *ctx) -{ - const char *mimetype = "text/x-uri"; - const char *data1 = "http://www.cairographics.org"; - const char *data2 = "http://cairographics.org/examples/"; - cairo_bool_t destroy1_called = FALSE; - cairo_bool_t destroy2_called = FALSE; - cairo_surface_t *surface; - cairo_test_status_t test_status = CAIRO_TEST_SUCCESS; - - surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 0, 0); - if (cairo_surface_status (surface)) { - cairo_test_log (ctx, "Could not create image surface\n"); - test_status = CAIRO_TEST_ERROR; - goto out; - } - - test_status = check_mime_data (ctx, surface, mimetype, NULL, 0); - if (test_status) - goto out; - - test_status = set_and_check_mime_data (ctx, surface, mimetype, - (const unsigned char *) data1, - strlen (data1), - &destroy1_called); - if (test_status) - goto out; - - if (destroy1_called) { - cairo_test_log (ctx, "MIME data 1 destroyed too early\n"); - test_status = CAIRO_TEST_ERROR; - goto out; - } - - test_status = set_and_check_mime_data (ctx, surface, mimetype, - (const unsigned char *) data2, - strlen (data2), - &destroy2_called); - if (test_status) - goto out; - - if (!destroy1_called) { - cairo_test_log (ctx, "MIME data 1 destroy callback not called\n"); - test_status = CAIRO_TEST_ERROR; - goto out; - } - if (destroy2_called) { - cairo_test_log (ctx, "MIME data 2 destroyed too early\n"); - test_status = CAIRO_TEST_ERROR; - goto out; - } - - test_status = set_and_check_mime_data (ctx, surface, mimetype, - NULL, 0, NULL); - if (test_status) - goto out; - - if (!destroy2_called) { - cairo_test_log (ctx, "MIME data destroy callback not called\n"); - test_status = CAIRO_TEST_ERROR; - goto out; - } - -out: - cairo_surface_destroy (surface); - - return test_status; -} - -CAIRO_TEST (mime_surface_api, - "Check the mime data API", - "api", /* keywords */ - NULL, /* requirements */ - 0, 0, - preamble, NULL) diff --git a/test/miter-precision.c b/test/miter-precision.c deleted file mode 100644 index 3bcdde0..0000000 --- a/test/miter-precision.c +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright © 2007 Keith Packard - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Keith Packard - * - * Contributor(s): - * Keith Packard - */ -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - double xscale, yscale; - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - cairo_set_source_rgb (cr, 0, 0, 0); - cairo_set_miter_limit (cr, 100000); - for (xscale = 1; xscale <= 1000; xscale += 999) - for (yscale = 1; yscale <= 1000; yscale += 999) - { - double max_scale = xscale > yscale ? xscale : yscale; - cairo_save (cr); - if (xscale > 1) - cairo_translate (cr, 50, 0); - if (yscale > 1) - cairo_translate (cr, 0, 50); - cairo_scale (cr, xscale, yscale); - cairo_set_line_width (cr, 10.0 / max_scale); - cairo_move_to (cr, 10.0 / xscale, 10.0 / yscale); - cairo_line_to (cr, 40.0 / xscale, 10.0 / yscale); - cairo_line_to (cr, 10.0 / xscale, 30.0 / yscale); - cairo_stroke (cr); - cairo_restore (cr); - } - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (miter_precision, - "test how cairo deals with small miters" - "\ncurrent code draws inappropriate bevels at times", - "stoke, stress", /* keywords */ - NULL, /* requirements */ - 120, 100, - NULL, draw) diff --git a/test/move-to-show-surface.c b/test/move-to-show-surface.c deleted file mode 100644 index a52b468..0000000 --- a/test/move-to-show-surface.c +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright © 2004 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - */ - -/* Bug history - * - * 2004-10-25 Carl Worth - * - * It looks like cairo_show_surface has no effect if it follows a - * call to cairo_move_to to any coordinate other than 0,0. A little - * bit of poking around suggests this isn't a regression, (at least - * not since the last pixman snapshot). - * - * 2005-04-02 Carl Worth - * - * Status: RESOLVED - * - * Inside cairo_show_surface the current point was being used as - * both source and destination offsets. After fixing that to use 0,0 - * as the source offset and the current point as the destination - * offset, the bug seems to be gone. - * - */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_t *surface; - uint32_t colors[4] = { - 0xffffffff, 0xffff0000, - 0xff00ff00, 0xff0000ff - }; - int i; - - for (i=0; i < 4; i++) { - surface = cairo_image_surface_create_for_data ((unsigned char *) &colors[i], - CAIRO_FORMAT_RGB24, - 1, 1, 4); - cairo_set_source_surface (cr, surface, - i % 2, i / 2); - cairo_paint (cr); - - cairo_surface_finish (surface); /* colors will go out of scope */ - cairo_surface_destroy (surface); - } - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (move_to_show_surface, - "Tests calls to cairo_show_surface after cairo_move_to", - "transform", /* keywords */ - NULL, /* requirements */ - 2, 2, - NULL, draw) diff --git a/test/multi-page.c b/test/multi-page.c deleted file mode 100644 index a3102db..0000000 --- a/test/multi-page.c +++ /dev/null @@ -1,198 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" - -#include - -#include - -#if CAIRO_HAS_PS_SURFACE -#include -#endif - -#if CAIRO_HAS_PDF_SURFACE -#include -#endif - -/* The PostScript and PDF backends are now integrated into the main - * test suite, so we are getting good verification of most things - * there. - * - * One thing that isn't supported there yet is multi-page output. So, - * for now we have this one-off test. There's no automatic - * verififcation here yet, but you can manually view the output to - * make sure it looks happy. - */ - -#define WIDTH_IN_INCHES 3 -#define HEIGHT_IN_INCHES 3 -#define WIDTH_IN_POINTS (WIDTH_IN_INCHES * 72.0) -#define HEIGHT_IN_POINTS (HEIGHT_IN_INCHES * 72.0) -#define BASENAME "multi-page.out" - -static void -draw_smiley (cairo_t *cr, double width, double height, double smile_ratio) -{ -#define STROKE_WIDTH .04 - double size; - - double theta = M_PI / 4 * smile_ratio; - double dx = sqrt (0.005) * cos (theta); - double dy = sqrt (0.005) * sin (theta); - - cairo_save (cr); - - if (width > height) - size = height; - else - size = width; - - cairo_translate (cr, (width - size) / 2.0, (height - size) / 2.0); - cairo_scale (cr, size, size); - - /* Fill face */ - cairo_arc (cr, 0.5, 0.5, 0.5 - STROKE_WIDTH, 0, 2 * M_PI); - cairo_set_source_rgb (cr, 1, 1, 0); - cairo_fill_preserve (cr); - - cairo_set_source_rgb (cr, 0, 0, 0); - - /* Stroke face */ - cairo_set_line_width (cr, STROKE_WIDTH / 2.0); - cairo_stroke (cr); - - /* Eyes */ - cairo_set_line_width (cr, STROKE_WIDTH); - cairo_arc (cr, 0.3, 0.4, STROKE_WIDTH, 0, 2 * M_PI); - cairo_fill (cr); - cairo_arc (cr, 0.7, 0.4, STROKE_WIDTH, 0, 2 * M_PI); - cairo_fill (cr); - - /* Mouth */ - cairo_move_to (cr, - 0.35 - dx, 0.75 - dy); - cairo_curve_to (cr, - 0.35 + dx, 0.75 + dy, - 0.65 - dx, 0.75 + dy, - 0.65 + dx, 0.75 - dy); - cairo_stroke (cr); - - cairo_restore (cr); -} - -static void -draw_some_pages (cairo_surface_t *surface) -{ - cairo_t *cr; - int i; - - cr = cairo_create (surface); - -#define NUM_FRAMES 5 - for (i=0; i < NUM_FRAMES; i++) { - draw_smiley (cr, WIDTH_IN_POINTS, HEIGHT_IN_POINTS, - (double) i / (NUM_FRAMES - 1)); - - /* Duplicate the last frame onto another page. (This is just a - * way to sneak cairo_copy_page into the test). - */ - if (i == (NUM_FRAMES - 1)) - cairo_copy_page (cr); - - cairo_show_page (cr); - } - - cairo_destroy (cr); -} - -static cairo_test_status_t -preamble (cairo_test_context_t *ctx) -{ - cairo_surface_t *surface; - cairo_status_t status; - char *filename; - cairo_test_status_t result = CAIRO_TEST_UNTESTED; - const char *path = cairo_test_mkdir (CAIRO_TEST_OUTPUT_DIR) ? CAIRO_TEST_OUTPUT_DIR : "."; - -#if CAIRO_HAS_PS_SURFACE - if (cairo_test_is_target_enabled (ctx, "ps2") || - cairo_test_is_target_enabled (ctx, "ps3")) - { - if (result == CAIRO_TEST_UNTESTED) - result = CAIRO_TEST_SUCCESS; - - xasprintf (&filename, "%s/%s", path, BASENAME ".ps"); - surface = cairo_ps_surface_create (filename, - WIDTH_IN_POINTS, HEIGHT_IN_POINTS); - status = cairo_surface_status (surface); - if (status) { - cairo_test_log (ctx, "Failed to create ps surface for file %s: %s\n", - filename, cairo_status_to_string (status)); - result = CAIRO_TEST_FAILURE; - } - - draw_some_pages (surface); - - cairo_surface_destroy (surface); - - printf ("multi-page: Please check %s to ensure it looks happy.\n", filename); - free (filename); - } -#endif - -#if CAIRO_HAS_PDF_SURFACE - if (cairo_test_is_target_enabled (ctx, "pdf")) { - if (result == CAIRO_TEST_UNTESTED) - result = CAIRO_TEST_SUCCESS; - - xasprintf (&filename, "%s/%s", path, BASENAME ".pdf"); - surface = cairo_pdf_surface_create (filename, - WIDTH_IN_POINTS, HEIGHT_IN_POINTS); - status = cairo_surface_status (surface); - if (status) { - cairo_test_log (ctx, "Failed to create pdf surface for file %s: %s\n", - filename, cairo_status_to_string (status)); - result = CAIRO_TEST_FAILURE; - } - - draw_some_pages (surface); - - cairo_surface_destroy (surface); - - printf ("multi-page: Please check %s to ensure it looks happy.\n", filename); - free (filename); - } -#endif - - return result; -} - -CAIRO_TEST (multi_page, - "Check the paginated surfaces handle multiple pages.", - "paginated", /* keywords */ - "target=vector", /* requirements */ - 0, 0, - preamble, NULL) diff --git a/test/negative-stride-image.c b/test/negative-stride-image.c deleted file mode 100644 index dfc8d64..0000000 --- a/test/negative-stride-image.c +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright 2012 Andrea Canciani - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Andrea Canciani - */ - -#include "cairo-test.h" - -static const char *png_filename = "romedalen.png"; - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - const cairo_test_context_t *ctx = cairo_test_get_context (cr); - cairo_format_t format = CAIRO_FORMAT_ARGB32; - cairo_t *cr_inv; - cairo_surface_t *png, *inv; - uint8_t *data; - int stride; - - png = cairo_test_create_surface_from_png (ctx, png_filename); - - stride = cairo_format_stride_for_width (format, width); - data = xcalloc (stride, height); - inv = cairo_image_surface_create_for_data (data + stride * (height - 1), - format, width, height, -stride); - - cr_inv = cairo_create (inv); - cairo_set_source_surface (cr_inv, png, 0, 0); - cairo_paint (cr_inv); - cairo_destroy (cr_inv); - - cairo_set_source_surface (cr, inv, 0, 0); - cairo_paint (cr); - - cairo_surface_destroy (png); - - cairo_surface_finish (inv); - cairo_surface_destroy (inv); - - free (data); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (negative_stride_image, - "Test that images with a negative stride are handled correctly.", - "stride, image", /* keywords */ - NULL, /* requirements */ - 256, 192, - NULL, draw) diff --git a/test/new-sub-path.c b/test/new-sub-path.c deleted file mode 100644 index f8f6bbe..0000000 --- a/test/new-sub-path.c +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" - -#define SIZE 10 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_set_source_rgb (cr, 0.0, 0.0, 1.0); /* blue */ - - /* Test cairo_new_sub_path followed by several different - * path-modification functions in turn... - */ - - /* ... cairo_move_to */ - cairo_new_sub_path (cr); - cairo_move_to (cr, SIZE, SIZE); - cairo_line_to (cr, SIZE, 2 * SIZE); - - /* ... cairo_line_to */ - cairo_new_sub_path (cr); - cairo_line_to (cr, 2 * SIZE, 1.5 * SIZE); - cairo_line_to (cr, 3 * SIZE, 1.5 * SIZE); - - /* ... cairo_curve_to */ - cairo_new_sub_path (cr); - cairo_curve_to (cr, - 4.0 * SIZE, 1.5 * SIZE, - 4.5 * SIZE, 1.0 * SIZE, - 5.0 * SIZE, 1.5 * SIZE); - - /* ... cairo_arc */ - cairo_new_sub_path (cr); - cairo_arc (cr, - 6.5 * SIZE, 1.5 * SIZE, - 0.5 * SIZE, - 0.0, 2.0 * M_PI); - - cairo_stroke (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (new_sub_path, - "Test the cairo_new_sub_path call", - "path", /* keywords */ - NULL, /* requirements */ - 8 * SIZE, - 3 * SIZE, - NULL, draw) diff --git a/test/nil-surface.c b/test/nil-surface.c deleted file mode 100644 index 30a1f97..0000000 --- a/test/nil-surface.c +++ /dev/null @@ -1,170 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" -#include - -/* Test to verify fixes for the following similar bugs: - * - * https://bugs.freedesktop.org/show_bug.cgi?id=4088 - * https://bugs.freedesktop.org/show_bug.cgi?id=3915 - * https://bugs.freedesktop.org/show_bug.cgi?id=9906 - */ - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - const cairo_test_context_t *ctx = cairo_test_get_context (cr); - cairo_surface_t *surface; - cairo_pattern_t *pattern; - cairo_t *cr2; - - /* - * 1. Test file-not-found from surface->pattern->cairo_t - */ - - /* Make a custom context to not interfere with the one passed in. */ - cr2 = cairo_create (cairo_get_target (cr)); - - /* First, let's make a nil surface. */ - surface = cairo_image_surface_create_from_png ("___THIS_FILE_DOES_NOT_EXIST___"); - - /* Let the error propagate into a nil pattern. */ - pattern = cairo_pattern_create_for_surface (surface); - - /* Then let it propagate into the cairo_t. */ - cairo_set_source (cr2, pattern); - cairo_paint (cr2); - - cairo_pattern_destroy (pattern); - cairo_surface_destroy (surface); - - /* Check that the error made it all that way. */ - if (cairo_status (cr2) != CAIRO_STATUS_FILE_NOT_FOUND) { - cairo_test_log (ctx, "Error: Received status of \"%s\" rather than expected \"%s\"\n", - cairo_status_to_string (cairo_status (cr2)), - cairo_status_to_string (CAIRO_STATUS_FILE_NOT_FOUND)); - cairo_destroy (cr2); - return CAIRO_TEST_FAILURE; - } - - cairo_destroy (cr2); - - /* - * 2. Test NULL pointer pattern->cairo_t - */ - cr2 = cairo_create (cairo_get_target (cr)); - - /* First, trigger the NULL pointer status. */ - pattern = cairo_pattern_create_for_surface (NULL); - - /* Then let it propagate into the cairo_t. */ - cairo_set_source (cr2, pattern); - cairo_paint (cr2); - - cairo_pattern_destroy (pattern); - - /* Check that the error made it all that way. */ - if (cairo_status (cr2) != CAIRO_STATUS_NULL_POINTER) { - cairo_test_log (ctx, "Error: Received status of \"%s\" rather than expected \"%s\"\n", - cairo_status_to_string (cairo_status (cr2)), - cairo_status_to_string (CAIRO_STATUS_NULL_POINTER)); - cairo_destroy (cr2); - return CAIRO_TEST_FAILURE; - } - - cairo_destroy (cr2); - - /* - * 3. Test that cairo_surface_finish can accept NULL or a nil - * surface without crashing. - */ - - cairo_surface_finish (NULL); - - surface = cairo_image_surface_create_from_png ("___THIS_FILE_DOES_NOT_EXIST___"); - cairo_surface_finish (surface); - cairo_surface_destroy (surface); - - /* - * 4. OK, we're straying from the original name, but it's still a - * similar kind of testing of error paths. Here we're making sure - * we can still call a cairo_get_* function after triggering an - * INVALID_RESTORE error. - */ - cr2 = cairo_create (cairo_get_target (cr)); - - /* Trigger invalid restore. */ - cairo_restore (cr2); - if (cairo_status (cr2) != CAIRO_STATUS_INVALID_RESTORE) { - cairo_test_log (ctx, "Error: Received status of \"%s\" rather than expected \"%s\"\n", - cairo_status_to_string (cairo_status (cr2)), - cairo_status_to_string (CAIRO_STATUS_INVALID_RESTORE)); - cairo_destroy (cr2); - return CAIRO_TEST_FAILURE; - } - - /* Test that we can still call cairo_get_fill_rule without crashing. */ - cairo_get_fill_rule (cr2); - - cairo_destroy (cr2); - - /* - * 5. Create a cairo_t for the NULL surface. - */ - cr2 = cairo_create (NULL); - - if (cairo_status (cr2) != CAIRO_STATUS_NULL_POINTER) { - cairo_test_log (ctx, "Error: Received status of \"%s\" rather than expected \"%s\"\n", - cairo_status_to_string (cairo_status (cr2)), - cairo_status_to_string (CAIRO_STATUS_NULL_POINTER)); - cairo_destroy (cr2); - return CAIRO_TEST_FAILURE; - } - - /* Test that get_target returns something valid */ - if (cairo_get_target (cr2) == NULL) { - cairo_test_log (ctx, "Error: cairo_get_target() returned NULL\n"); - cairo_destroy (cr2); - return CAIRO_TEST_FAILURE; - } - - /* Test that push_group doesn't crash */ - cairo_push_group (cr2); - cairo_stroke (cr2); - pattern = cairo_pop_group (cr2); - cairo_pattern_destroy (pattern); - - cairo_destroy (cr2); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (nil_surface, - "Test that nil surfaces do not make cairo crash.", - "api", /* keywords */ - NULL, /* requirements */ - 1, 1, - NULL, draw) diff --git a/test/operator-alpha-alpha.c b/test/operator-alpha-alpha.c deleted file mode 100644 index 2cef858..0000000 --- a/test/operator-alpha-alpha.c +++ /dev/null @@ -1,166 +0,0 @@ -/* -*- Mode: c; c-basic-offset: 4; indent-tabs-mode: t; tab-width: 8; -*- */ -/* cairo - a vector graphics library with display and print output - * - * Copyright 2002 University of Southern California - * Copyright 2005 Red Hat, Inc. - * Copyright 2007 Emmanuel Pacaud - * Copyright 2008 Benjamin Otte - * Copyright 2008 Chris Wilson - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Owen Taylor - * Kristian Høgsberg - * Emmanuel Pacaud - * Chris Wilson - * Andrea Canciani - */ - -#include "cairo-test.h" - -#define STEPS 16 -#define START_OPERATOR CAIRO_OPERATOR_CLEAR -#define STOP_OPERATOR CAIRO_OPERATOR_HSL_LUMINOSITY - -#define SIZE 3 -#define COUNT 6 -#define FULL_WIDTH ((STEPS + 1) * COUNT - 1) -#define FULL_HEIGHT ((COUNT + STOP_OPERATOR - START_OPERATOR) / COUNT) * (STEPS + 1) - -static void -create_patterns (cairo_t *bg, cairo_t *fg) -{ - int x; - - for (x = 0; x < STEPS; x++) { - double i = (double) x / (STEPS - 1); - cairo_set_source_rgba (bg, 0, 0, 0, i); - cairo_rectangle (bg, x, 0, 1, STEPS); - cairo_fill (bg); - - cairo_set_source_rgba (fg, 0, 0, 0, i); - cairo_rectangle (fg, 0, x, STEPS, 1); - cairo_fill (fg); - } -} - -/* expects a STEP*STEP pixel rectangle */ -static void -do_composite (cairo_t *cr, cairo_operator_t op, cairo_surface_t *bg, cairo_surface_t *fg) -{ - cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); - cairo_set_source_surface (cr, bg, 0, 0); - cairo_paint (cr); - - cairo_set_operator (cr, op); - cairo_set_source_surface (cr, fg, 0, 0); - cairo_paint (cr); -} - -static void -subdraw (cairo_t *cr, int width, int height) -{ - size_t i = 0; - cairo_operator_t op; - cairo_t *bgcr, *fgcr; - cairo_surface_t *bg, *fg; - - bg = cairo_surface_create_similar (cairo_get_target (cr), - CAIRO_CONTENT_ALPHA, SIZE * STEPS, SIZE * STEPS); - fg = cairo_surface_create_similar (cairo_get_target (cr), - CAIRO_CONTENT_ALPHA, SIZE * STEPS, SIZE * STEPS); - bgcr = cairo_create (bg); - fgcr = cairo_create (fg); - cairo_scale (bgcr, SIZE, SIZE); - cairo_scale (fgcr, SIZE, SIZE); - create_patterns (bgcr, fgcr); - cairo_destroy (bgcr); - cairo_destroy (fgcr); - - for (op = START_OPERATOR; op <= STOP_OPERATOR; op++, i++) { - cairo_save (cr); - cairo_translate (cr, - SIZE * (STEPS + 1) * (i % COUNT), - SIZE * (STEPS + 1) * (i / COUNT)); - cairo_rectangle (cr, 0, 0, SIZE * (STEPS + 1), SIZE * (STEPS+1)); - cairo_clip (cr); - do_composite (cr, op, bg, fg); - cairo_restore (cr); - } - - cairo_surface_destroy (fg); - cairo_surface_destroy (bg); -} - - -static cairo_surface_t * -create_source (cairo_surface_t *target, int width, int height) -{ - cairo_surface_t *similar; - cairo_t *cr; - - similar = cairo_surface_create_similar (target, - CAIRO_CONTENT_ALPHA, - width, height); - cr = cairo_create (similar); - cairo_surface_destroy (similar); - - subdraw (cr, width, height); - - similar = cairo_surface_reference (cairo_get_target (cr)); - cairo_destroy (cr); - - return similar; -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_t *source; - - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - source = create_source (cairo_get_target (cr), width, height); - cairo_set_source_surface (cr, source, 0, 0); - cairo_surface_destroy (source); - - cairo_paint (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (operator_alpha_alpha, - "Tests result of compositing pure-alpha surfaces" - "\nCompositing of pure-alpha sources is inconsistent across backends.", - "alpha, similar, operator", /* keywords */ - NULL, /* requirements */ - FULL_WIDTH * SIZE, FULL_HEIGHT * SIZE, - NULL, draw) diff --git a/test/operator-alpha.c b/test/operator-alpha.c deleted file mode 100644 index 1ce4ecd..0000000 --- a/test/operator-alpha.c +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright © 2008 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -#define N_OPERATORS (CAIRO_OPERATOR_SATURATE + 1) -#define SIZE 10 -#define PAD 3 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - unsigned int n; - - cairo_translate (cr, PAD, PAD); - - for (n = 0; n < N_OPERATORS; n++) { - cairo_reset_clip (cr); - cairo_rectangle (cr, 0, 0, SIZE, SIZE); - cairo_clip (cr); - - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_set_operator (cr, CAIRO_OPERATOR_OVER); - cairo_rectangle (cr, 0, 0, SIZE-PAD, SIZE-PAD); - cairo_fill (cr); - - cairo_set_source_rgba (cr, 0, 0, 1, .33); - cairo_set_operator (cr, n); - cairo_rectangle (cr, PAD, PAD, SIZE-PAD, SIZE-PAD); - cairo_fill (cr); - - cairo_translate (cr, SIZE+PAD, 0); - } - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (operator_alpha, - "Tests using set_operator() with an non-opaque source", - "operator, alpha", /* keywords */ - NULL, /* requirements */ - (SIZE+PAD) * N_OPERATORS + PAD, SIZE + 2*PAD, - NULL, draw) diff --git a/test/operator-clear.c b/test/operator-clear.c deleted file mode 100644 index 72a32c2..0000000 --- a/test/operator-clear.c +++ /dev/null @@ -1,196 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Authors: Kristian Høgsberg - * Owen Taylor - */ - -#include "cairo-test.h" -#include -#include - -#define WIDTH 16 -#define HEIGHT 16 -#define PAD 2 - -static void -set_solid_pattern (cairo_t *cr, int x, int y) -{ - cairo_set_source_rgb (cr, 1.0, 0, 0.0); -} - -static void -set_gradient_pattern (cairo_t *cr, int x, int y) -{ - cairo_pattern_t *pattern; - - pattern = cairo_pattern_create_linear (x, y, x + WIDTH, y + HEIGHT); - cairo_pattern_add_color_stop_rgba (pattern, 0.2, 1, 0, 0, 1); - cairo_pattern_add_color_stop_rgba (pattern, 0.8, 1, 0, 0, 0.0); - cairo_set_source (cr, pattern); - cairo_pattern_destroy (pattern); -} - -static void -draw_mask (cairo_t *cr, int x, int y) -{ - cairo_surface_t *mask_surface; - cairo_t *cr2; - - double width = (int)(0.9 * WIDTH); - double height = (int)(0.9 * HEIGHT); - x += 0.05 * WIDTH; - y += 0.05 * HEIGHT; - - mask_surface = cairo_surface_create_similar (cairo_get_group_target (cr), - CAIRO_CONTENT_ALPHA, - width, height); - cr2 = cairo_create (mask_surface); - cairo_surface_destroy (mask_surface); - - cairo_set_source_rgb (cr2, 1, 1, 1); /* white */ - - cairo_arc (cr2, 0.5 * width, 0.5 * height, 0.45 * height, 0, 2 * M_PI); - cairo_fill (cr2); - - cairo_mask_surface (cr, cairo_get_target (cr2), x, y); - cairo_destroy (cr2); -} - -static void -draw_glyphs (cairo_t *cr, int x, int y) -{ - cairo_text_extents_t extents; - - cairo_set_font_size (cr, 0.8 * HEIGHT); - - cairo_text_extents (cr, "FG", &extents); - cairo_move_to (cr, - x + floor ((WIDTH - extents.width) / 2 + 0.5) - extents.x_bearing, - y + floor ((HEIGHT - extents.height) / 2 + 0.5) - extents.y_bearing); - cairo_show_text (cr, "FG"); -} - -static void -draw_polygon (cairo_t *cr, int x, int y) -{ - double width = (int)(0.9 * WIDTH); - double height = (int)(0.9 * HEIGHT); - x += 0.05 * WIDTH; - y += 0.05 * HEIGHT; - - cairo_new_path (cr); - cairo_move_to (cr, x, y); - cairo_line_to (cr, x, y + height); - cairo_line_to (cr, x + width / 2, y + 3 * height / 4); - cairo_line_to (cr, x + width, y + height); - cairo_line_to (cr, x + width, y); - cairo_line_to (cr, x + width / 2, y + height / 4); - cairo_close_path (cr); - cairo_fill (cr); -} - -static void -draw_rects (cairo_t *cr, int x, int y) -{ - double block_width = (int)(0.33 * WIDTH + 0.5); - double block_height = (int)(0.33 * HEIGHT + 0.5); - int i, j; - - for (i = 0; i < 3; i++) - for (j = 0; j < 3; j++) - if ((i + j) % 2 == 0) - cairo_rectangle (cr, - x + block_width * i, y + block_height * j, - block_width, block_height); - - cairo_fill (cr); -} - -static void (* const pattern_funcs[])(cairo_t *cr, int x, int y) = { - set_solid_pattern, - set_gradient_pattern, -}; - -static void (* const draw_funcs[])(cairo_t *cr, int x, int y) = { - draw_mask, - draw_glyphs, - draw_polygon, - draw_rects -}; - -#define IMAGE_WIDTH (ARRAY_LENGTH (pattern_funcs) * (WIDTH + PAD) + PAD) -#define IMAGE_HEIGHT (ARRAY_LENGTH (draw_funcs) * (HEIGHT + PAD) + PAD) - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - const cairo_test_context_t *ctx = cairo_test_get_context (cr); - size_t i, j, x, y; - cairo_pattern_t *pattern; - - cairo_select_font_face (cr, CAIRO_TEST_FONT_FAMILY " Sans", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - - for (j = 0; j < ARRAY_LENGTH (draw_funcs); j++) { - for (i = 0; i < ARRAY_LENGTH (pattern_funcs); i++) { - x = i * (WIDTH + PAD) + PAD; - y = j * (HEIGHT + PAD) + PAD; - - cairo_save (cr); - - pattern = cairo_pattern_create_linear (x + WIDTH, y, - x, y + HEIGHT); - cairo_pattern_add_color_stop_rgba (pattern, 0.2, - 0.0, 0.0, 1.0, 1.0); /* Solid blue */ - cairo_pattern_add_color_stop_rgba (pattern, 0.8, - 0.0, 0.0, 1.0, 0.0); /* Transparent blue */ - cairo_set_source (cr, pattern); - cairo_pattern_destroy (pattern); - - cairo_rectangle (cr, x, y, WIDTH, HEIGHT); - cairo_fill_preserve (cr); - cairo_clip (cr); - - cairo_set_operator (cr, CAIRO_OPERATOR_CLEAR); - pattern_funcs[i] (cr, x, y); - draw_funcs[j] (cr, x, y); - if (cairo_status (cr)) - cairo_test_log (ctx, "%d %d HERE!\n", (int)i, (int)j); - - cairo_restore (cr); - } - } - - if (cairo_status (cr) != CAIRO_STATUS_SUCCESS) - cairo_test_log (ctx, "%d %d .HERE!\n", (int)i, (int)j); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (operator_clear, - "Test of CAIRO_OPERATOR_CLEAR", - "operator", /* keywords */ - NULL, /* requirements */ - IMAGE_WIDTH, IMAGE_HEIGHT, - NULL, draw) diff --git a/test/operator-source.c b/test/operator-source.c deleted file mode 100644 index 9330a65..0000000 --- a/test/operator-source.c +++ /dev/null @@ -1,250 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Authors: Kristian Høgsberg - * Owen Taylor - * Uli Schlachter - */ - -#include "cairo-test.h" -#include -#include - -#define WIDTH 16 -#define HEIGHT 16 -#define PAD 2 - -static void -set_solid_pattern (cairo_t *cr, int x, int y) -{ - cairo_set_source_rgb (cr, 1.0, 0, 0.0); -} - -static void -set_translucent_pattern (cairo_t *cr, int x, int y) -{ - cairo_set_source_rgba (cr, 1, 0, 0, 0.5); -} - -static void -set_gradient_pattern (cairo_t *cr, int x, int y) -{ - cairo_pattern_t *pattern; - - pattern = cairo_pattern_create_linear (x, y, x + WIDTH, y + HEIGHT); - cairo_pattern_add_color_stop_rgba (pattern, 0.2, 1, 0, 0, 1); - cairo_pattern_add_color_stop_rgba (pattern, 0.8, 1, 0, 0, 0.0); - cairo_set_source (cr, pattern); - cairo_pattern_destroy (pattern); -} - -static void -set_surface_pattern (cairo_t *cr, int x, int y) -{ - cairo_surface_t *source_surface; - cairo_t *cr2; - - double width = (int)(0.6 * WIDTH); - double height = (int)(0.6 * HEIGHT); - x += 0.2 * WIDTH; - y += 0.2 * HEIGHT; - - source_surface = cairo_surface_create_similar (cairo_get_group_target (cr), - CAIRO_CONTENT_COLOR_ALPHA, - width, height); - cr2 = cairo_create (source_surface); - cairo_surface_destroy (source_surface); - - cairo_set_source_rgb (cr2, 1, 0, 0); /* red */ - cairo_paint (cr2); - - cairo_set_source_rgb (cr2, 1, 1, 1); /* white */ - - cairo_arc (cr2, 0.5 * width, 0.5 * height, 0.5 * height, 0, 2 * M_PI); - cairo_fill (cr2); - - cairo_set_source_surface (cr, cairo_get_target (cr2), x, y); - cairo_destroy (cr2); -} - -static void -draw_mask (cairo_t *cr, int x, int y) -{ - cairo_surface_t *mask_surface; - cairo_t *cr2; - - double width = (int)(0.9 * WIDTH); - double height = (int)(0.9 * HEIGHT); - x += 0.05 * WIDTH; - y += 0.05 * HEIGHT; - - mask_surface = cairo_surface_create_similar (cairo_get_group_target (cr), - CAIRO_CONTENT_ALPHA, - width, height); - cr2 = cairo_create (mask_surface); - cairo_surface_destroy (mask_surface); - - cairo_set_source_rgb (cr2, 1, 1, 1); /* white */ - - cairo_arc (cr2, 0.5 * width, 0.5 * height, 0.45 * height, 0, 2 * M_PI); - cairo_fill (cr2); - - cairo_mask_surface (cr, cairo_get_target (cr2), x, y); - cairo_destroy (cr2); -} - -static void -draw_glyphs (cairo_t *cr, int x, int y) -{ - cairo_text_extents_t extents; - - cairo_set_font_size (cr, 0.8 * HEIGHT); - - cairo_text_extents (cr, "FG", &extents); - cairo_move_to (cr, - x + floor ((WIDTH - extents.width) / 2 + 0.5) - extents.x_bearing, - y + floor ((HEIGHT - extents.height) / 2 + 0.5) - extents.y_bearing); - cairo_show_text (cr, "FG"); -} - -static void -draw_polygon (cairo_t *cr, int x, int y) -{ - double width = (int)(0.9 * WIDTH); - double height = (int)(0.9 * HEIGHT); - x += 0.05 * WIDTH; - y += 0.05 * HEIGHT; - - cairo_new_path (cr); - cairo_move_to (cr, x, y); - cairo_line_to (cr, x, y + height); - cairo_line_to (cr, x + width / 2, y + 3 * height / 4); - cairo_line_to (cr, x + width, y + height); - cairo_line_to (cr, x + width, y); - cairo_line_to (cr, x + width / 2, y + height / 4); - cairo_close_path (cr); - cairo_fill (cr); -} - -static void -draw_rects (cairo_t *cr, int x, int y, double offset) -{ - double block_width = (int)(0.33 * WIDTH + 0.5) - offset/3; - double block_height = (int)(0.33 * HEIGHT + 0.5) - offset/3; - int i, j; - - x += offset/2; - y += offset/2; - - for (i = 0; i < 3; i++) - for (j = 0; j < 3; j++) - if ((i + j) % 2 == 0) - cairo_rectangle (cr, - x + block_width * i, y + block_height * j, - block_width, block_height); - - cairo_fill (cr); -} - -static void -draw_aligned_rects (cairo_t *cr, int x, int y) -{ - draw_rects (cr, x, y, 0); -} - -static void -draw_unaligned_rects (cairo_t *cr, int x, int y) -{ - draw_rects (cr, x, y, 2.1); -} - -static void (* const pattern_funcs[])(cairo_t *cr, int x, int y) = { - set_solid_pattern, - set_translucent_pattern, - set_gradient_pattern, - set_surface_pattern, -}; - -static void (* const draw_funcs[])(cairo_t *cr, int x, int y) = { - draw_mask, - draw_glyphs, - draw_polygon, - draw_aligned_rects, - draw_unaligned_rects -}; - -#define IMAGE_WIDTH (ARRAY_LENGTH (pattern_funcs) * (WIDTH + PAD) + PAD) -#define IMAGE_HEIGHT (ARRAY_LENGTH (draw_funcs) * (HEIGHT + PAD) + PAD) - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - const cairo_test_context_t *ctx = cairo_test_get_context (cr); - size_t i, j, x, y; - cairo_pattern_t *pattern; - - cairo_select_font_face (cr, CAIRO_TEST_FONT_FAMILY " Sans", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - - for (j = 0; j < ARRAY_LENGTH (draw_funcs); j++) { - for (i = 0; i < ARRAY_LENGTH (pattern_funcs); i++) { - x = i * (WIDTH + PAD) + PAD; - y = j * (HEIGHT + PAD) + PAD; - - cairo_save (cr); - - pattern = cairo_pattern_create_linear (x + WIDTH, y, - x, y + HEIGHT); - cairo_pattern_add_color_stop_rgba (pattern, 0.2, - 0.0, 0.0, 1.0, 1.0); /* Solid blue */ - cairo_pattern_add_color_stop_rgba (pattern, 0.8, - 0.0, 0.0, 1.0, 0.0); /* Transparent blue */ - cairo_set_source (cr, pattern); - cairo_pattern_destroy (pattern); - - cairo_rectangle (cr, x, y, WIDTH, HEIGHT); - cairo_fill_preserve (cr); - cairo_clip (cr); - - cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); - pattern_funcs[i] (cr, x, y); - draw_funcs[j] (cr, x, y); - if (cairo_status (cr)) - cairo_test_log (ctx, "%d %d HERE!\n", (int)i, (int)j); - - cairo_restore (cr); - } - } - - if (cairo_status (cr) != CAIRO_STATUS_SUCCESS) - cairo_test_log (ctx, "%d %d .HERE!\n", (int)i, (int)j); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (operator_source, - "Test of CAIRO_OPERATOR_SOURCE", - "operator", /* keywords */ - NULL, /* requirements */ - IMAGE_WIDTH, IMAGE_HEIGHT, - NULL, draw) diff --git a/test/operator.c b/test/operator.c deleted file mode 100644 index 666fcaf..0000000 --- a/test/operator.c +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright © 2008 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -#define N_OPERATORS (CAIRO_OPERATOR_SATURATE + 1) -#define SIZE 10 -#define PAD 3 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - unsigned int n; - - cairo_translate (cr, PAD, PAD); - - for (n = 0; n < N_OPERATORS; n++) { - cairo_reset_clip (cr); - cairo_rectangle (cr, 0, 0, SIZE, SIZE); - cairo_clip (cr); - - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_set_operator (cr, CAIRO_OPERATOR_OVER); - cairo_rectangle (cr, 0, 0, SIZE-PAD, SIZE-PAD); - cairo_fill (cr); - - cairo_set_source_rgb (cr, 0, 0, 1); - cairo_set_operator (cr, n); - cairo_rectangle (cr, PAD, PAD, SIZE-PAD, SIZE-PAD); - cairo_fill (cr); - - cairo_translate (cr, SIZE+PAD, 0); - } - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (operator, - "Tests using set_operator()", - "operator", /* keywords */ - NULL, /* requirements */ - (SIZE+PAD) * N_OPERATORS + PAD, SIZE + 2*PAD, - NULL, draw) diff --git a/test/outline-tolerance.c b/test/outline-tolerance.c deleted file mode 100644 index 6453f5c..0000000 --- a/test/outline-tolerance.c +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright © 2012 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -/* An assertion failure found by Rico Tzschichholz */ - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_set_source_rgb (cr, 0, 1, 0); - cairo_paint (cr); - cairo_set_source_rgb (cr, 1, 0, 0); - - cairo_set_line_join (cr, CAIRO_LINE_JOIN_MITER); - cairo_set_line_width (cr, 200); - cairo_set_miter_limit (cr, 1.5); - cairo_rectangle (cr, 100, 25, 1000, 0); - cairo_stroke (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (outline_tolerance, - "Rectangle drawn incorrectly when it has zero height and miter limit greater than 1.414", - "stroke", /* keywords */ - NULL, /* requirements */ - 100, 50, - NULL, draw) diff --git a/test/over-above-source.c b/test/over-above-source.c deleted file mode 100644 index 7191c8d..0000000 --- a/test/over-above-source.c +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright © 2007 Red Hat, Inc. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" - -#define SIZE 40 -#define PAD 2 -#define WIDTH (PAD + SIZE + PAD) -#define HEIGHT WIDTH - -/* This test is designed to explore the interactions of "native" and - * "fallback" objects. For the ps surface, OVER with non-1.0 opacity - * will be a fallback while SOURCE will be native. For the pdf - * surface, it's the reverse where OVER is native while SOURCE is a - * fallback. */ - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_translate (cr, PAD, PAD); - - /* A red triangle with SOURCE */ - cairo_move_to (cr, SIZE / 2, SIZE / 2); - cairo_rel_line_to (cr, SIZE / 2, 0); - cairo_rel_line_to (cr, -SIZE / 2, SIZE / 2); - cairo_close_path (cr); - - cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); - cairo_set_source_rgba (cr, 1., 0., 0., 0.5); /* 50% red */ - - cairo_fill (cr); - - /* A green circle with OVER */ - cairo_arc (cr, SIZE / 2, SIZE / 2, SIZE / 4, 0., 2. * M_PI); - - cairo_set_operator (cr, CAIRO_OPERATOR_OVER); - cairo_set_source_rgba (cr, 0., 1., 0., 0.5); /* 50% green */ - - cairo_fill (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (over_above_source, - "A simple test drawing a circle with OVER after a triangle drawn with SOURCE", - "operator", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/over-around-source.c b/test/over-around-source.c deleted file mode 100644 index 531eda8..0000000 --- a/test/over-around-source.c +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright © 2007 Red Hat, Inc. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" - -#define SIZE 40 -#define PAD 2 -#define WIDTH (PAD + SIZE + PAD) -#define HEIGHT WIDTH - -/* This test is designed to explore the interactions of "native" and - * "fallback" objects. For the ps surface, OVER with non-1.0 opacity - * will be a fallback while SOURCE will be native. For the pdf - * surface, it's the reverse where OVER is native while SOURCE is a - * fallback. */ - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_translate (cr, PAD, PAD); - - /* A green triangle with OVER */ - cairo_move_to (cr, SIZE / 5, SIZE / 5); - cairo_rel_line_to (cr, SIZE / 2, 0); - cairo_rel_line_to (cr, -SIZE / 2, SIZE / 2); - cairo_close_path (cr); - - cairo_set_operator (cr, CAIRO_OPERATOR_OVER); - cairo_set_source_rgba (cr, 0., 1., 0., 0.5); /* 50% green */ - - cairo_fill (cr); - - /* A red circle with SOURCE */ - cairo_arc (cr, SIZE / 2, SIZE / 2, SIZE / 4, 0., 2. * M_PI); - - cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); - cairo_set_source_rgba (cr, 1., 0., 0., 0.5); /* 50% red */ - - cairo_fill (cr); - - /* Another green triangle with OVER */ - cairo_move_to (cr, SIZE / 2, SIZE / 2); - cairo_rel_line_to (cr, SIZE / 2, 0); - cairo_rel_line_to (cr, -SIZE / 2, SIZE / 2); - cairo_close_path (cr); - - cairo_set_operator (cr, CAIRO_OPERATOR_OVER); - cairo_set_source_rgba (cr, 0., 1., 0., 0.5); /* 50% green */ - - cairo_fill (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (over_around_source, - "A simple test drawing a triangle with SOURCE between two circles drawn with OVER", - "operator", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/over-below-source.c b/test/over-below-source.c deleted file mode 100644 index 7fe5bd8..0000000 --- a/test/over-below-source.c +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright © 2007 Red Hat, Inc. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" - -#define SIZE 40 -#define PAD 2 -#define WIDTH (PAD + SIZE + PAD) -#define HEIGHT WIDTH - -/* This test is designed to explore the interactions of "native" and - * "fallback" objects. For the ps surface, OVER with non-1.0 opacity - * will be a fallback while SOURCE will be native. For the pdf - * surface, it's the reverse where OVER is native while SOURCE is a - * fallback. */ - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_translate (cr, PAD, PAD); - - /* A green circle with OVER */ - cairo_arc (cr, SIZE / 2, SIZE / 2, SIZE / 4, 0., 2. * M_PI); - - cairo_set_operator (cr, CAIRO_OPERATOR_OVER); - cairo_set_source_rgba (cr, 0., 1., 0., 0.5); /* 50% green */ - - cairo_fill (cr); - - /* A red triangle with SOURCE */ - cairo_move_to (cr, SIZE / 2, SIZE / 2); - cairo_line_to (cr, SIZE, SIZE / 2); - cairo_line_to (cr, SIZE / 2, SIZE); - cairo_close_path (cr); - - cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); - cairo_set_source_rgba (cr, 1., 0., 0., 0.5); /* 50% red */ - - cairo_fill (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (over_below_source, - "A simple test drawing a circle with OVER before a triangle drawn with SOURCE", - "operator", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/over-between-source.c b/test/over-between-source.c deleted file mode 100644 index ffb6572..0000000 --- a/test/over-between-source.c +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright © 2007 Red Hat, Inc. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" - -#define SIZE 40 -#define PAD 2 -#define WIDTH (PAD + SIZE + PAD) -#define HEIGHT WIDTH - -/* This test is designed to explore the interactions of "native" and - * "fallback" objects. For the ps surface, OVER with non-1.0 opacity - * will be a fallback while SOURCE will be native. For the pdf - * surface, it's the reverse where OVER is native while SOURCE is a - * fallback. */ - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_translate (cr, PAD, PAD); - - /* A red triangle with SOURCE */ - cairo_move_to (cr, SIZE / 5, SIZE / 5); - cairo_rel_line_to (cr, SIZE / 2, 0); - cairo_rel_line_to (cr, -SIZE / 2, SIZE / 2); - cairo_close_path (cr); - - cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); - cairo_set_source_rgba (cr, 1., 0., 0., 0.5); /* 50% red */ - - cairo_fill (cr); - - /* A green circle with OVER */ - cairo_arc (cr, SIZE / 2, SIZE / 2, SIZE / 4, 0., 2. * M_PI); - - cairo_set_operator (cr, CAIRO_OPERATOR_OVER); - cairo_set_source_rgba (cr, 0., 1., 0., 0.5); /* 50% green */ - - cairo_fill (cr); - - /* Another red triangle with SOURCE */ - cairo_move_to (cr, SIZE / 2, SIZE / 2); - cairo_rel_line_to (cr, SIZE / 2, 0); - cairo_rel_line_to (cr, -SIZE / 2, SIZE / 2); - cairo_close_path (cr); - - cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); - cairo_set_source_rgba (cr, 1., 0., 0., 0.5); /* 50% red */ - - cairo_fill (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (over_between_source, - "A simple test drawing a circle with OVER between two triangles drawn with SOURCE", - "operator", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/overlapping-boxes.c b/test/overlapping-boxes.c deleted file mode 100644 index 92211ee..0000000 --- a/test/overlapping-boxes.c +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright © 2011 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Chris Wilson - */ - -/* Not strictly overlapping, but it does highlight the error in - * an optimisation of fill-box handling that I frequently am - * tempted to write. - */ - -#include "cairo-test.h" - -#define WIDTH (20) -#define HEIGHT (20) - -static void -border (cairo_t *cr) -{ - cairo_rectangle (cr, 1, 1, 8, 8); - cairo_rectangle (cr, 1.25, 1.25, 7.5, 7.5); - cairo_rectangle (cr, 1.75, 1.75, 6.5, 6.5); - cairo_rectangle (cr, 2, 2, 6, 6); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_set_fill_rule (cr, CAIRO_FILL_RULE_EVEN_ODD); - - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - border (cr); - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_set_operator (cr, CAIRO_OPERATOR_OVER); - cairo_fill (cr); - - cairo_translate (cr, 10, 0); - - border (cr); - cairo_set_source_rgb (cr, 0, 0, 1); - cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); - cairo_fill (cr); - - cairo_translate (cr, 0, 10); - - cairo_rectangle (cr, 0, 0, 10, 10); - cairo_clip (cr); - - border (cr); - cairo_set_source_rgb (cr, 0, 1, 0); - cairo_set_operator (cr, CAIRO_OPERATOR_IN); - cairo_fill (cr); - - cairo_reset_clip (cr); - - cairo_translate (cr, -10, 0); - - cairo_rectangle (cr, 0, 0, 10, 10); - cairo_clip (cr); - - border (cr); - cairo_set_source_rgb (cr, 0, 0, 1); - cairo_set_operator (cr, CAIRO_OPERATOR_CLEAR); - cairo_fill (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (overlapping_boxes, - "A sub-pixel double border to highlight the danger in an easy optimisation", - "fill", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/overlapping-dash-caps.c b/test/overlapping-dash-caps.c deleted file mode 100644 index f7ba248..0000000 --- a/test/overlapping-dash-caps.c +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright © 2011 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -#define SIZE 100 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - double dashes1[] = {20, 10}; - double dashes2[] = {10, 1}; - - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - cairo_set_line_width (cr, 15); - - cairo_set_dash (cr, dashes1, 2, 0); - cairo_new_sub_path (cr); - cairo_arc (cr, SIZE/2, SIZE/2, SIZE/2-10, 0, 2*M_PI); - - cairo_set_source_rgba (cr, 1, 0, 0, 0.5); - cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND); - cairo_stroke (cr); - - cairo_set_dash (cr, dashes2, 2, 0); - cairo_new_sub_path (cr); - cairo_arc (cr, SIZE/2, SIZE/2, SIZE/4-5, 0, 2*M_PI); - - cairo_set_line_cap (cr, CAIRO_LINE_CAP_SQUARE); - cairo_set_source_rgba (cr, 0, 1, 0, 0.5); - cairo_stroke (cr); - - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (overlapping_dash_caps, - "Test intersections between neighbouring dash segments", - "overlap, dash", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, draw) diff --git a/test/overlapping-glyphs.c b/test/overlapping-glyphs.c deleted file mode 100644 index 93067ab..0000000 --- a/test/overlapping-glyphs.c +++ /dev/null @@ -1,123 +0,0 @@ -/* - * Copyright © 2009 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -#include - -#define TEXT_SIZE 12 -#define HEIGHT (TEXT_SIZE + 4) -#define WIDTH 50 - -#define MAX_GLYPHS 80 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_glyph_t glyphs_stack[MAX_GLYPHS], *glyphs; - const char *cairo = "Cairo"; - const char *giza = "Giza"; - cairo_text_extents_t cairo_extents; - cairo_text_extents_t giza_extents; - int count, num_glyphs; - double x0, y0; - - /* We draw in the default black, so paint white first. */ - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); /* white */ - cairo_paint (cr); - - cairo_select_font_face (cr, CAIRO_TEST_FONT_FAMILY " Sans", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - cairo_set_font_size (cr, TEXT_SIZE); - - /* We want to overlap two strings, so compute overlapping glyphs. */ - - cairo_text_extents (cr, cairo, &cairo_extents); - cairo_text_extents (cr, giza, &giza_extents); - - x0 = WIDTH/2. - (cairo_extents.width/2. + cairo_extents.x_bearing); - y0 = HEIGHT/2. - (cairo_extents.height/2. + cairo_extents.y_bearing); - glyphs = glyphs_stack; - count = MAX_GLYPHS; - cairo_scaled_font_text_to_glyphs (cairo_get_scaled_font (cr), - x0, y0, - cairo, strlen (cairo), - &glyphs, &count, - NULL, NULL, - NULL); - assert (glyphs == glyphs_stack); - num_glyphs = count; - - x0 = WIDTH/2. - (giza_extents.width/2. + giza_extents.x_bearing); - y0 = HEIGHT/2. - (giza_extents.height/2. + giza_extents.y_bearing); - glyphs = glyphs_stack + count; - count = MAX_GLYPHS - count; - cairo_scaled_font_text_to_glyphs (cairo_get_scaled_font (cr), - x0, y0, - giza, strlen (giza), - &glyphs, &count, - NULL, NULL, - NULL); - assert (glyphs == glyphs_stack + num_glyphs); - glyphs = glyphs_stack; - num_glyphs += count; - - cairo_set_source_rgba (cr, 0, 0, 0, .5); /* translucent black, gray! */ - cairo_show_glyphs (cr, glyphs, num_glyphs); - - /* and compare with filling */ - cairo_translate (cr, 0, HEIGHT); - cairo_glyph_path (cr, glyphs, num_glyphs); - cairo_fill (cr); - - /* switch to using an unbounded operator for added complexity */ - cairo_set_operator (cr, CAIRO_OPERATOR_IN); - - cairo_translate (cr, WIDTH, -HEIGHT); - cairo_save (cr); - cairo_rectangle (cr, 0, 0, WIDTH, HEIGHT); - cairo_clip (cr); - cairo_show_glyphs (cr, glyphs, num_glyphs); - cairo_restore (cr); - - cairo_translate (cr, 0, HEIGHT); - cairo_save (cr); - cairo_rectangle (cr, 0, 0, WIDTH, HEIGHT); - cairo_clip (cr); - cairo_glyph_path (cr, glyphs, num_glyphs); - cairo_fill (cr); - cairo_restore (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (overlapping_glyphs, - "Test handing of overlapping glyphs", - "text, glyphs", /* keywords */ - NULL, /* requirements */ - 2 * WIDTH, 2 * HEIGHT, - NULL, draw) - diff --git a/test/paint-clip-fill.c b/test/paint-clip-fill.c deleted file mode 100644 index 5a9e24f..0000000 --- a/test/paint-clip-fill.c +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Copyright 2011 SCore Corporation - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Taekyun Kim - */ - -#include "cairo-test.h" - -static void -rounded_rectangle(cairo_t *cr, - double x, double y, - double width, double height, - double radius) -{ - cairo_move_to (cr, x, y + radius); - cairo_line_to (cr, x, y + height - radius); - cairo_curve_to (cr, x, y + height - radius/2.0, - x + radius/2.0, y + height, - x + radius, y + height); - cairo_line_to (cr, x + width - radius, y + height); - cairo_curve_to (cr, x + width - radius/2.0, y + height, - x + width, y + height - radius/2.0, - x + width, y + height - radius); - cairo_line_to (cr, x + width, y + radius); - cairo_curve_to (cr, x + width, y + radius/2.0, - x + width - radius/2.0, y, - x + width - radius, y); - cairo_line_to (cr, x + radius, y); - cairo_curve_to (cr, x + radius/2.0, y, x, y + radius/2.0, x, y + radius); - cairo_close_path(cr); -} - -static cairo_test_status_t -draw_mono (cairo_t *cr, int width, int height) -{ - cairo_set_antialias(cr, CAIRO_ANTIALIAS_NONE); - cairo_set_operator(cr, CAIRO_OPERATOR_SOURCE); - cairo_set_source_rgba(cr, 1.0, 1.0, 1.0, 1.0); - cairo_paint(cr); - - cairo_rectangle(cr, 20, 20, 60, 60); - cairo_clip(cr); - - rounded_rectangle(cr, 0, 0, 100, 100, 10); - cairo_clip(cr); - - cairo_set_source_rgba(cr, 1.0, 0.0, 0.0, 1.0); - cairo_set_operator(cr, CAIRO_OPERATOR_OVER); - cairo_paint(cr); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -draw_aa (cairo_t *cr, int width, int height) -{ - cairo_set_antialias(cr, CAIRO_ANTIALIAS_DEFAULT); - cairo_set_operator(cr, CAIRO_OPERATOR_SOURCE); - cairo_set_source_rgba(cr, 1.0, 1.0, 1.0, 1.0); - cairo_paint(cr); - - cairo_rectangle(cr, 20, 20, 60, 60); - cairo_clip(cr); - - rounded_rectangle(cr, 0, 0, 100, 100, 10); - cairo_clip(cr); - - cairo_set_source_rgba(cr, 1.0, 0.0, 0.0, 1.0); - cairo_set_operator(cr, CAIRO_OPERATOR_OVER); - cairo_paint(cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (paint_clip_fill_mono, - "Test reduction of a paint with a clip", - "paint, clip", /* keywords */ - NULL, /* requirements */ - 100, 100, - NULL, draw_mono) -CAIRO_TEST (paint_clip_fill_aa, - "Test reduction of a paint with a clip", - "paint, clip", /* keywords */ - NULL, /* requirements */ - 100, 100, - NULL, draw_aa) diff --git a/test/paint-repeat.c b/test/paint-repeat.c deleted file mode 100644 index c48d84c..0000000 --- a/test/paint-repeat.c +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_t *surface; - uint32_t data[16] = { - 0xffffffff, 0xffffffff, 0xffff0000, 0xffff0000, - 0xffffffff, 0xffffffff, 0xffff0000, 0xffff0000, - - 0xff00ff00, 0xff00ff00, 0xff0000ff, 0xff0000ff, - 0xff00ff00, 0xff00ff00, 0xff0000ff, 0xff0000ff - }; - - surface = cairo_image_surface_create_for_data ((unsigned char *) data, - CAIRO_FORMAT_RGB24, 4, 4, 16); - - /* We use a non-zero offset larger than the source surface size to - * stress cairo out a bit more. */ - cairo_set_source_surface (cr, surface, 10, 10); - cairo_pattern_set_filter (cairo_get_source (cr), CAIRO_FILTER_NEAREST); - cairo_pattern_set_extend (cairo_get_source (cr), CAIRO_EXTEND_REPEAT); - cairo_paint (cr); - - cairo_surface_finish (surface); /* data will go out of scope */ - cairo_surface_destroy (surface); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (paint_repeat, - "Test calls to cairo_paint with a repeating source surface pattern", - "paint", /* keywords */ - NULL, /* requirements */ - 8, 8, - NULL, draw) diff --git a/test/paint-source-alpha.c b/test/paint-source-alpha.c deleted file mode 100644 index cb2d488..0000000 --- a/test/paint-source-alpha.c +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * Copyright © 2006 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_t *surface; - uint32_t data[16] = { - 0x80808080, 0x80808080, 0x80800000, 0x80800000, - 0x80808080, 0x80808080, 0x80800000, 0x80800000, - - 0x80008000, 0x80008000, 0x80000080, 0x80000080, - 0x80008000, 0x80008000, 0x80000080, 0x80000080 - }; - - surface = cairo_image_surface_create_for_data ((unsigned char *) data, - CAIRO_FORMAT_ARGB32, 4, 4, 16); - - cairo_test_paint_checkered (cr); - - cairo_scale (cr, 4, 4); - - cairo_set_source_surface (cr, surface, 2 , 2); - cairo_pattern_set_filter (cairo_get_source (cr), CAIRO_FILTER_NEAREST); - cairo_paint (cr); - - cairo_surface_finish (surface); /* data will go out of scope */ - cairo_surface_destroy (surface); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (paint_source_alpha, - "Simple test of cairo_paint with a source surface with non-opaque alpha", - "paint, alpha", /* keywords */ - NULL, /* requirements */ - 32, 32, - NULL, draw) diff --git a/test/paint-with-alpha-group-clip.c b/test/paint-with-alpha-group-clip.c deleted file mode 100644 index e1e4383..0000000 --- a/test/paint-with-alpha-group-clip.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright © 2013 Adrian Johnson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Adrian Johnson - */ - -/* - * This attempts to exercise the bug found in - * - * https://bugs.launchpad.net/inkscape/+bug/1258265 - */ - - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - cairo_push_group (cr); - cairo_push_group (cr); - cairo_set_source_rgb (cr, 0, 0, 0); - cairo_paint (cr); - cairo_pop_group_to_source (cr); - cairo_paint_with_alpha (cr, 0.25); - cairo_pop_group_to_source (cr); - cairo_rectangle (cr, 5, 5, 20, 20); - cairo_clip (cr); - cairo_paint (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (paint_with_alpha_group_clip, - "Test paint with alpha and clipping", - "paint alpha clip group record", /* keywords */ - NULL, /* requirements */ - 30, 30, - NULL, draw) diff --git a/test/paint-with-alpha.c b/test/paint-with-alpha.c deleted file mode 100644 index 8daa935..0000000 --- a/test/paint-with-alpha.c +++ /dev/null @@ -1,148 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * Copyright © 2006 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" - -static uint32_t data[16] = { - 0xffffffff, 0xffffffff, 0xffff0000, 0xffff0000, - 0xffffffff, 0xffffffff, 0xffff0000, 0xffff0000, - - 0xff00ff00, 0xff00ff00, 0xff0000ff, 0xff0000ff, - 0xff00ff00, 0xff00ff00, 0xff0000ff, 0xff0000ff -}; -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_t *surface; - - surface = cairo_image_surface_create_for_data ((unsigned char *) data, - CAIRO_FORMAT_RGB24, 4, 4, 16); - - cairo_test_paint_checkered (cr); - - cairo_scale (cr, 4, 4); - - cairo_set_source_surface (cr, surface, 2 , 2); - cairo_pattern_set_filter (cairo_get_source (cr), CAIRO_FILTER_NEAREST); - cairo_paint_with_alpha (cr, 0.5); - - cairo_surface_finish (surface); /* data will go out of scope */ - cairo_surface_destroy (surface); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -draw_solid_clip (cairo_t *cr, int width, int height) -{ - cairo_test_paint_checkered (cr); - - cairo_rectangle (cr, 2.5, 2.5, 27, 27); - cairo_clip (cr); - - cairo_set_source_rgb (cr, 1., 0.,0.); - cairo_paint_with_alpha (cr, 0.5); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -draw_clip (cairo_t *cr, int width, int height) -{ - cairo_surface_t *surface; - - surface = cairo_image_surface_create_for_data ((unsigned char *) data, - CAIRO_FORMAT_RGB24, 4, 4, 16); - - cairo_test_paint_checkered (cr); - - cairo_rectangle (cr, 10.5, 10.5, 11, 11); - cairo_clip (cr); - - cairo_scale (cr, 4, 4); - - cairo_set_source_surface (cr, surface, 2 , 2); - cairo_pattern_set_filter (cairo_get_source (cr), CAIRO_FILTER_NEAREST); - cairo_paint_with_alpha (cr, 0.5); - - cairo_surface_finish (surface); /* data will go out of scope */ - cairo_surface_destroy (surface); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -draw_clip_mask (cairo_t *cr, int width, int height) -{ - cairo_surface_t *surface; - - surface = cairo_image_surface_create_for_data ((unsigned char *) data, - CAIRO_FORMAT_RGB24, 4, 4, 16); - - cairo_test_paint_checkered (cr); - - cairo_move_to (cr, 16, 5); - cairo_line_to (cr, 5, 16); - cairo_line_to (cr, 16, 27); - cairo_line_to (cr, 27, 16); - cairo_clip (cr); - - cairo_scale (cr, 4, 4); - - cairo_set_source_surface (cr, surface, 2 , 2); - cairo_pattern_set_filter (cairo_get_source (cr), CAIRO_FILTER_NEAREST); - cairo_paint_with_alpha (cr, 0.5); - - cairo_surface_finish (surface); /* data will go out of scope */ - cairo_surface_destroy (surface); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (paint_with_alpha, - "Simple test of cairo_paint_with_alpha", - "paint, alpha", /* keywords */ - NULL, /* requirements */ - 32, 32, - NULL, draw) -CAIRO_TEST (paint_with_alpha_solid_clip, - "Simple test of cairo_paint_with_alpha+unaligned clip", - "paint, alpha, clip", /* keywords */ - NULL, /* requirements */ - 32, 32, - NULL, draw_solid_clip) -CAIRO_TEST (paint_with_alpha_clip, - "Simple test of cairo_paint_with_alpha+unaligned clip", - "paint, alpha, clip", /* keywords */ - NULL, /* requirements */ - 32, 32, - NULL, draw_clip) -CAIRO_TEST (paint_with_alpha_clip_mask, - "Simple test of cairo_paint_with_alpha+unaligned clip", - "paint, alpha, clip", /* keywords */ - NULL, /* requirements */ - 32, 32, - NULL, draw_clip_mask) diff --git a/test/paint.c b/test/paint.c deleted file mode 100644 index c5fd648..0000000 --- a/test/paint.c +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_set_source_rgb (cr, 0, 0, 1); - cairo_paint (cr); - - cairo_translate (cr, 2, 2); - cairo_scale (cr, 0.5, 0.5); - - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_paint (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (paint, - "Test calls to cairo_paint", - "paint", /* keywords */ - NULL, /* requirements */ - 8, 8, - NULL, draw) diff --git a/test/partial-clip-text.c b/test/partial-clip-text.c deleted file mode 100644 index 4d8bae0..0000000 --- a/test/partial-clip-text.c +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Copyright 2010 Igor Nikitin - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Igor Nikitin - */ - -#include "cairo-test.h" - -#define HEIGHT 15 -#define WIDTH 40 - -static void background (cairo_t *cr) -{ - cairo_set_source_rgb( cr, 0, 0, 0 ); - cairo_paint (cr); -} - -static void text (cairo_t *cr) -{ - cairo_move_to (cr, 0, 12); - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_show_text (cr, "CAIRO"); -} - -static cairo_test_status_t -top (cairo_t *cr, int width, int height) -{ - background (cr); - - cairo_rectangle (cr, 0, 0, WIDTH, 5); - cairo_clip (cr); - - text (cr); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -bottom (cairo_t *cr, int width, int height) -{ - background (cr); - - cairo_rectangle (cr, 0, HEIGHT-5, WIDTH, 5); - cairo_clip (cr); - - text (cr); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -left (cairo_t *cr, int width, int height) -{ - background (cr); - - cairo_rectangle (cr, 0, 0, 10, HEIGHT); - cairo_clip (cr); - - text (cr); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -right (cairo_t *cr, int width, int height) -{ - background (cr); - - cairo_rectangle (cr, WIDTH-10, 0, 10, HEIGHT); - cairo_clip (cr); - - text (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (partial_clip_text_top, - "Tests drawing text through a single, partial clip.", - "clip, text", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, top) -CAIRO_TEST (partial_clip_text_bottom, - "Tests drawing text through a single, partial clip.", - "clip, text", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, bottom) -CAIRO_TEST (partial_clip_text_left, - "Tests drawing text through a single, partial clip.", - "clip, text", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, left) -CAIRO_TEST (partial_clip_text_right, - "Tests drawing text through a single, partial clip.", - "clip, text", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, right) diff --git a/test/partial-coverage.c b/test/partial-coverage.c deleted file mode 100644 index 7e67a5e..0000000 --- a/test/partial-coverage.c +++ /dev/null @@ -1,680 +0,0 @@ -/* - * Copyright 2010 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -/* Test the sampling stratagems of the rasterisers by creating pixels - * containing minute holes and seeing how close to the expected - * coverage each rasteriser approaches. - */ - -#define SIZE 64 - -#include "../src/cairo-fixed-type-private.h" -#define SAMPLE (1 << CAIRO_FIXED_FRAC_BITS) - -static uint32_t state; - -static uint32_t -hars_petruska_f54_1_random (void) -{ -#define rol(x,k) ((x << k) | (x >> (32-k))) - return state = (state ^ rol (state, 5) ^ rol (state, 24)) + 0x37798849; -#undef rol -} - -static double -uniform_random (void) -{ - return hars_petruska_f54_1_random() / (double) UINT32_MAX; -} - -/* coverage is given in [0,sample] */ -static void -compute_occupancy (uint8_t *occupancy, int coverage, int sample) -{ - int i, c; - - if (coverage < sample/2) { - memset (occupancy, 0, sample); - if (coverage == 0) - return; - - for (i = c = 0; i < sample; i++) { - if ((sample - i) * uniform_random() < coverage - c) { - occupancy[i] = 0xff; - if (++c == coverage) - return; - } - } - } else { - coverage = sample - coverage; - memset (occupancy, 0xff, sample); - if (coverage == 0) - return; - - for (i = c = 0; i < sample; i++) { - if ((sample - i) * uniform_random() < coverage - c) { - occupancy[i] = 0; - if (++c == coverage) - return; - } - } - } -} - -static cairo_test_status_t -reference (cairo_t *cr, int width, int height) -{ - int i; - - cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); - cairo_paint (cr); - - for (i = 0; i < SIZE*SIZE; i++) { - cairo_set_source_rgba (cr, 1., 1., 1., - i / (double) (SIZE * SIZE)); - cairo_rectangle (cr, i % SIZE, i / SIZE, 1, 1); - cairo_fill (cr); - } - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_test_status_t -three_quarter_reference (cairo_t *cr, int width, int height) -{ - int i; - - cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); - cairo_paint (cr); - - for (i = 0; i < SIZE*SIZE; i++) { - cairo_set_source_rgba (cr, 1., 1., 1., - .75 * i / (double) (SIZE * SIZE)); - cairo_rectangle (cr, i % SIZE, i / SIZE, 1, 1); - cairo_fill (cr); - } - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_test_status_t -half_reference (cairo_t *cr, int width, int height) -{ - int i; - - cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); - cairo_paint (cr); - - for (i = 0; i < SIZE*SIZE; i++) { - cairo_set_source_rgba (cr, 1., 1., 1., - .5 * i / (double) (SIZE * SIZE)); - cairo_rectangle (cr, i % SIZE, i / SIZE, 1, 1); - cairo_fill (cr); - } - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_test_status_t -rectangles (cairo_t *cr, int width, int height) -{ - uint8_t *occupancy; - int i, j, channel; - - state = 0x12345678; - occupancy = xmalloc (SAMPLE*SAMPLE); - - cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); - cairo_paint (cr); - - cairo_set_operator (cr, CAIRO_OPERATOR_ADD); - for (channel = 0; channel < 3; channel++) { - switch (channel) { - default: - case 0: cairo_set_source_rgb (cr, 1.0, 0.0, 0.0); break; - case 1: cairo_set_source_rgb (cr, 0.0, 1.0, 0.0); break; - case 2: cairo_set_source_rgb (cr, 0.0, 0.0, 1.0); break; - } - - for (i = 0; i < SIZE*SIZE; i++) { - int xs, ys; - - compute_occupancy (occupancy, SAMPLE*SAMPLE * i / (SIZE * SIZE), SAMPLE*SAMPLE); - - xs = i % SIZE * SAMPLE; - ys = i / SIZE * SAMPLE; - for (j = 0; j < SAMPLE*SAMPLE; j++) { - if (occupancy[j]) { - cairo_rectangle (cr, - (j % SAMPLE + xs) / (double) SAMPLE, - (j / SAMPLE + ys) / (double) SAMPLE, - 1 / (double) SAMPLE, - 1 / (double) SAMPLE); - } - } - cairo_fill (cr); - } - } - - free (occupancy); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -intersecting_quads (cairo_t *cr, int width, int height) -{ - uint8_t *occupancy; - int i, j, channel; - - state = 0x12345678; - occupancy = xmalloc (SAMPLE*SAMPLE); - - cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); - cairo_paint (cr); - - cairo_set_operator (cr, CAIRO_OPERATOR_ADD); - for (channel = 0; channel < 3; channel++) { - switch (channel) { - default: - case 0: cairo_set_source_rgb (cr, 1.0, 0.0, 0.0); break; - case 1: cairo_set_source_rgb (cr, 0.0, 1.0, 0.0); break; - case 2: cairo_set_source_rgb (cr, 0.0, 0.0, 1.0); break; - } - - for (i = 0; i < SIZE*SIZE; i++) { - int xs, ys; - - compute_occupancy (occupancy, SAMPLE*SAMPLE * i / (SIZE * SIZE), SAMPLE*SAMPLE); - - xs = i % SIZE * SAMPLE; - ys = i / SIZE * SAMPLE; - for (j = 0; j < SAMPLE*SAMPLE; j++) { - if (occupancy[j]) { - cairo_move_to (cr, - (j % SAMPLE + xs) / (double) SAMPLE, - (j / SAMPLE + ys) / (double) SAMPLE); - cairo_rel_line_to (cr, 1 / (double) SAMPLE, 1 / (double) SAMPLE); - cairo_rel_line_to (cr, 0, -1 / (double) SAMPLE); - cairo_rel_line_to (cr, -1 / (double) SAMPLE, 1 / (double) SAMPLE); - cairo_close_path (cr); - } - } - cairo_fill (cr); - } - } - - free (occupancy); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -half_triangles (cairo_t *cr, int width, int height) -{ - uint8_t *occupancy; - int i, j, channel; - - state = 0x12345678; - occupancy = xmalloc (SAMPLE*SAMPLE); - - cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); - cairo_paint (cr); - - cairo_set_operator (cr, CAIRO_OPERATOR_ADD); - for (channel = 0; channel < 3; channel++) { - switch (channel) { - default: - case 0: cairo_set_source_rgb (cr, 1.0, 0.0, 0.0); break; - case 1: cairo_set_source_rgb (cr, 0.0, 1.0, 0.0); break; - case 2: cairo_set_source_rgb (cr, 0.0, 0.0, 1.0); break; - } - - for (i = 0; i < SIZE*SIZE; i++) { - int xs, ys; - - compute_occupancy (occupancy, SAMPLE*SAMPLE * i / (SIZE * SIZE), SAMPLE*SAMPLE); - - xs = i % SIZE * SAMPLE; - ys = i / SIZE * SAMPLE; - for (j = 0; j < SAMPLE*SAMPLE; j++) { - if (occupancy[j]) { - int x = j % SAMPLE + xs; - int y = j / SAMPLE + ys; - cairo_move_to (cr, x / (double) SAMPLE, y / (double) SAMPLE); - cairo_line_to (cr, (x+1) / (double) SAMPLE, (y+1) / (double) SAMPLE); - cairo_line_to (cr, (x+1) / (double) SAMPLE, y / (double) SAMPLE); - cairo_close_path (cr); - } - } - cairo_fill (cr); - } - } - - free (occupancy); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -overlap_half_triangles (cairo_t *cr, int width, int height) -{ - uint8_t *occupancy; - int i, j, channel; - - state = 0x12345678; - occupancy = xmalloc (SAMPLE*SAMPLE); - - cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); - cairo_paint (cr); - - cairo_set_operator (cr, CAIRO_OPERATOR_ADD); - for (channel = 0; channel < 3; channel++) { - switch (channel) { - default: - case 0: cairo_set_source_rgb (cr, 1.0, 0.0, 0.0); break; - case 1: cairo_set_source_rgb (cr, 0.0, 1.0, 0.0); break; - case 2: cairo_set_source_rgb (cr, 0.0, 0.0, 1.0); break; - } - - for (i = 0; i < SIZE*SIZE; i++) { - int xs, ys; - - compute_occupancy (occupancy, SAMPLE/2*SAMPLE/2 * i / (SIZE * SIZE), SAMPLE/2*SAMPLE/2); - - xs = i % SIZE * SAMPLE; - ys = i / SIZE * SAMPLE; - for (j = 0; j < SAMPLE/2*SAMPLE/2; j++) { - if (occupancy[j]) { - int x = 2 * (j % (SAMPLE/2)) + xs; - int y = 2 * (j / (SAMPLE/2)) + ys; - - /* Add a 4-tile composed of two overlapping triangles. - * .__.__. - * |\ /| - * | \ / | - * . x | - * | / \ | - * |/ \| - * . . - * - * Coverage should be computable as 50% (due to counter-winding). - */ - - cairo_move_to (cr, (x) / (double) SAMPLE, (y) / (double) SAMPLE); - cairo_line_to (cr, (x) / (double) SAMPLE, (y+2) / (double) SAMPLE); - cairo_line_to (cr, (x+2) / (double) SAMPLE, (y) / (double) SAMPLE); - cairo_close_path (cr); - - cairo_move_to (cr, (x) / (double) SAMPLE, (y) / (double) SAMPLE); - cairo_line_to (cr, (x+2) / (double) SAMPLE, (y) / (double) SAMPLE); - cairo_line_to (cr, (x+2) / (double) SAMPLE, (y+2) / (double) SAMPLE); - cairo_close_path (cr); - } - } - cairo_fill (cr); - } - } - - free (occupancy); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -overlap_half_triangles_eo (cairo_t *cr, int width, int height) -{ - uint8_t *occupancy; - int i, j, channel; - - state = 0x12345678; - occupancy = xmalloc (SAMPLE*SAMPLE); - - cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); - cairo_paint (cr); - - cairo_set_fill_rule (cr, CAIRO_FILL_RULE_EVEN_ODD); - - cairo_set_operator (cr, CAIRO_OPERATOR_ADD); - for (channel = 0; channel < 3; channel++) { - switch (channel) { - default: - case 0: cairo_set_source_rgb (cr, 1.0, 0.0, 0.0); break; - case 1: cairo_set_source_rgb (cr, 0.0, 1.0, 0.0); break; - case 2: cairo_set_source_rgb (cr, 0.0, 0.0, 1.0); break; - } - - for (i = 0; i < SIZE*SIZE; i++) { - int xs, ys; - - compute_occupancy (occupancy, SAMPLE/2*SAMPLE/2 * i / (SIZE * SIZE), SAMPLE/2*SAMPLE/2); - - xs = i % SIZE * SAMPLE; - ys = i / SIZE * SAMPLE; - for (j = 0; j < SAMPLE/2*SAMPLE/2; j++) { - if (occupancy[j]) { - int x = 2 * (j % (SAMPLE/2)) + xs; - int y = 2 * (j / (SAMPLE/2)) + ys; - - /* Add a 4-tile composed of two overlapping triangles. - * .__.__. - * |\ /| - * | \ / | - * . x | - * | / \ | - * |/ \| - * . . - * - * Coverage should be computable as 50%, due to even-odd fill rule. - */ - - cairo_move_to (cr, (x) / (double) SAMPLE, (y) / (double) SAMPLE); - cairo_line_to (cr, (x) / (double) SAMPLE, (y+2) / (double) SAMPLE); - cairo_line_to (cr, (x+2) / (double) SAMPLE, (y) / (double) SAMPLE); - cairo_close_path (cr); - - cairo_move_to (cr, (x) / (double) SAMPLE, (y) / (double) SAMPLE); - cairo_line_to (cr, (x+2) / (double) SAMPLE, (y+2) / (double) SAMPLE); - cairo_line_to (cr, (x+2) / (double) SAMPLE, (y) / (double) SAMPLE); - cairo_close_path (cr); - } - } - cairo_fill (cr); - } - } - - free (occupancy); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -overlap_three_quarter_triangles (cairo_t *cr, int width, int height) -{ - uint8_t *occupancy; - int i, j, channel; - - state = 0x12345678; - occupancy = xmalloc (SAMPLE*SAMPLE); - - cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); - cairo_paint (cr); - - cairo_set_operator (cr, CAIRO_OPERATOR_ADD); - for (channel = 0; channel < 3; channel++) { - switch (channel) { - default: - case 0: cairo_set_source_rgb (cr, 1.0, 0.0, 0.0); break; - case 1: cairo_set_source_rgb (cr, 0.0, 1.0, 0.0); break; - case 2: cairo_set_source_rgb (cr, 0.0, 0.0, 1.0); break; - } - - for (i = 0; i < SIZE*SIZE; i++) { - int xs, ys; - - compute_occupancy (occupancy, SAMPLE/2*SAMPLE/2 * i / (SIZE * SIZE), SAMPLE/2*SAMPLE/2); - - xs = i % SIZE * SAMPLE; - ys = i / SIZE * SAMPLE; - for (j = 0; j < SAMPLE/2*SAMPLE/2; j++) { - if (occupancy[j]) { - int x = 2 * (j % (SAMPLE/2)) + xs; - int y = 2 * (j / (SAMPLE/2)) + ys; - - /* Add a 4-tile composed of two overlapping triangles. - * .__.__. - * |\ /| - * | \ / | - * . x | - * | / \ | - * |/ \| - * . . - * - * Coverage should be computable as 75%. - */ - - cairo_move_to (cr, (x) / (double) SAMPLE, (y) / (double) SAMPLE); - cairo_line_to (cr, (x) / (double) SAMPLE, (y+2) / (double) SAMPLE); - cairo_line_to (cr, (x+2) / (double) SAMPLE, (y) / (double) SAMPLE); - cairo_close_path (cr); - - cairo_move_to (cr, (x) / (double) SAMPLE, (y) / (double) SAMPLE); - cairo_line_to (cr, (x+2) / (double) SAMPLE, (y+2) / (double) SAMPLE); - cairo_line_to (cr, (x+2) / (double) SAMPLE, (y) / (double) SAMPLE); - cairo_close_path (cr); - } - } - cairo_fill (cr); - } - } - - free (occupancy); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -triangles (cairo_t *cr, int width, int height) -{ - uint8_t *occupancy; - int i, j, channel; - - state = 0x12345678; - occupancy = xmalloc (SAMPLE*SAMPLE); - - cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); - cairo_paint (cr); - - cairo_set_operator (cr, CAIRO_OPERATOR_ADD); - for (channel = 0; channel < 3; channel++) { - switch (channel) { - default: - case 0: cairo_set_source_rgb (cr, 1.0, 0.0, 0.0); break; - case 1: cairo_set_source_rgb (cr, 0.0, 1.0, 0.0); break; - case 2: cairo_set_source_rgb (cr, 0.0, 0.0, 1.0); break; - } - - for (i = 0; i < SIZE*SIZE; i++) { - int xs, ys; - - compute_occupancy (occupancy, SAMPLE*SAMPLE * i / (SIZE * SIZE), SAMPLE*SAMPLE); - - xs = i % SIZE * SAMPLE; - ys = i / SIZE * SAMPLE; - for (j = 0; j < SAMPLE*SAMPLE; j++) { - if (occupancy[j]) { - /* Add a tile composed of two non-overlapping triangles. - * .__. - * | /| - * |/ | - * .--. - */ - int x = j % SAMPLE + xs; - int y = j / SAMPLE + ys; - - /* top-left triangle */ - cairo_move_to (cr, (x) / (double) SAMPLE, (y) / (double) SAMPLE); - cairo_line_to (cr, (x+1) / (double) SAMPLE, (y) / (double) SAMPLE); - cairo_line_to (cr, (x) / (double) SAMPLE, (y+1) / (double) SAMPLE); - cairo_close_path (cr); - - /* bottom-right triangle */ - cairo_move_to (cr, (x) / (double) SAMPLE, (y+1) / (double) SAMPLE); - cairo_line_to (cr, (x+1) / (double) SAMPLE, (y+1) / (double) SAMPLE); - cairo_line_to (cr, (x+1) / (double) SAMPLE, (y) / (double) SAMPLE); - cairo_close_path (cr); - } - } - cairo_fill (cr); - } - } - - free (occupancy); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -intersecting_triangles (cairo_t *cr, int width, int height) -{ - uint8_t *occupancy; - int i, j, channel; - - state = 0x12345678; - occupancy = xmalloc (SAMPLE*SAMPLE); - - cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); - cairo_paint (cr); - - cairo_set_operator (cr, CAIRO_OPERATOR_ADD); - for (channel = 0; channel < 3; channel++) { - switch (channel) { - default: - case 0: cairo_set_source_rgb (cr, 1.0, 0.0, 0.0); break; - case 1: cairo_set_source_rgb (cr, 0.0, 1.0, 0.0); break; - case 2: cairo_set_source_rgb (cr, 0.0, 0.0, 1.0); break; - } - - for (i = 0; i < SIZE*SIZE; i++) { - int xs, ys; - - compute_occupancy (occupancy, SAMPLE*SAMPLE * i / (SIZE * SIZE), SAMPLE*SAMPLE); - - xs = i % SIZE * SAMPLE; - ys = i / SIZE * SAMPLE; - for (j = 0; j < SAMPLE*SAMPLE; j++) { - if (occupancy[j]) { - /* Add 2 overlapping tiles in a single cell, each composed - * of two non-overlapping triangles. - * .--. .--. - * | /| |\ | - * |/ | + | \| - * .--. .--. - */ - int x = j % SAMPLE + xs; - int y = j / SAMPLE + ys; - - /* first pair of triangles, diagonal bottom-left to top-right */ - cairo_move_to (cr, (x) / (double) SAMPLE, (y) / (double) SAMPLE); - cairo_line_to (cr, (x+1) / (double) SAMPLE, (y) / (double) SAMPLE); - cairo_line_to (cr, (x) / (double) SAMPLE, (y+1) / (double) SAMPLE); - cairo_close_path (cr); - cairo_move_to (cr, (x) / (double) SAMPLE, (y+1) / (double) SAMPLE); - cairo_line_to (cr, (x+1) / (double) SAMPLE, (y+1) / (double) SAMPLE); - cairo_line_to (cr, (x+1) / (double) SAMPLE, (y) / (double) SAMPLE); - cairo_close_path (cr); - - /* second pair of triangles, diagonal top-left to bottom-right */ - cairo_move_to (cr, (x) / (double) SAMPLE, (y) / (double) SAMPLE); - cairo_line_to (cr, (x+1) / (double) SAMPLE, (y+1) / (double) SAMPLE); - cairo_line_to (cr, (x+1) / (double) SAMPLE, (y) / (double) SAMPLE); - cairo_close_path (cr); - cairo_move_to (cr, (x) / (double) SAMPLE, (y) / (double) SAMPLE); - cairo_line_to (cr, (x+1) / (double) SAMPLE, (y+1) / (double) SAMPLE); - cairo_line_to (cr, (x) / (double) SAMPLE, (y+1) / (double) SAMPLE); - cairo_close_path (cr); - } - } - cairo_fill (cr); - } - } - - free (occupancy); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (partial_coverage_rectangles, - "Check the fidelity of the rasterisation.", - "coverage, raster", /* keywords */ - "target=raster slow", /* requirements */ - SIZE, SIZE, - NULL, rectangles) - -CAIRO_TEST (partial_coverage_intersecting_quads, - "Check the fidelity of the rasterisation.", - "coverage, raster", /* keywords */ - "target=raster slow", /* requirements */ - SIZE, SIZE, - NULL, intersecting_quads) - -CAIRO_TEST (partial_coverage_intersecting_triangles, - "Check the fidelity of the rasterisation.", - "coverage, raster", /* keywords */ - "target=raster slow", /* requirements */ - SIZE, SIZE, - NULL, intersecting_triangles) -CAIRO_TEST (partial_coverage_triangles, - "Check the fidelity of the rasterisation.", - "coverage, raster", /* keywords */ - "target=raster slow", /* requirements */ - SIZE, SIZE, - NULL, triangles) -CAIRO_TEST (partial_coverage_overlap_three_quarter_triangles, - "Check the fidelity of the rasterisation.", - "coverage, raster", /* keywords */ - "target=raster slow", /* requirements */ - SIZE, SIZE, - NULL, overlap_three_quarter_triangles) -CAIRO_TEST (partial_coverage_overlap_half_triangles_eo, - "Check the fidelity of the rasterisation.", - "coverage, raster", /* keywords */ - "target=raster slow", /* requirements */ - SIZE, SIZE, - NULL, overlap_half_triangles_eo) -CAIRO_TEST (partial_coverage_overlap_half_triangles, - "Check the fidelity of the rasterisation.", - "coverage, raster", /* keywords */ - "target=raster slow", /* requirements */ - SIZE, SIZE, - NULL, overlap_half_triangles) -CAIRO_TEST (partial_coverage_half_triangles, - "Check the fidelity of the rasterisation.", - "coverage, raster", /* keywords */ - "target=raster slow", /* requirements */ - SIZE, SIZE, - NULL, half_triangles) - -CAIRO_TEST (partial_coverage_reference, - "Check the fidelity of this test.", - "coverage, raster", /* keywords */ - "target=raster", /* requirements */ - SIZE, SIZE, - NULL, reference) -CAIRO_TEST (partial_coverage_three_quarter_reference, - "Check the fidelity of this test.", - "coverage, raster", /* keywords */ - "target=raster", /* requirements */ - SIZE, SIZE, - NULL, three_quarter_reference) -CAIRO_TEST (partial_coverage_half_reference, - "Check the fidelity of this test.", - "coverage, raster", /* keywords */ - "target=raster", /* requirements */ - SIZE, SIZE, - NULL, half_reference) diff --git a/test/pass-through.c b/test/pass-through.c deleted file mode 100644 index 17a38db..0000000 --- a/test/pass-through.c +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright 2008 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - int n; - - for (n = 0; n < 256; n++) { - cairo_set_source_rgba (cr, 1, 1, 1, n / 255.); - cairo_rectangle (cr, 0, n, 2, 1); - cairo_fill (cr); - } - for (n = 0; n < 256; n++) { - cairo_set_source_rgb (cr, n / 255., n / 255., n / 255.); - cairo_rectangle (cr, 2, n, 2, 1); - cairo_fill (cr); - } - - cairo_translate (cr, 4, 0); - - for (n = 0; n < 256; n++) { - cairo_set_source_rgba (cr, 1, 0, 0, n / 255.); - cairo_rectangle (cr, 0, n, 2, 1); - cairo_fill (cr); - } - for (n = 0; n < 256; n++) { - cairo_set_source_rgb (cr, n / 255., 0, 0); - cairo_rectangle (cr, 2, n, 2, 1); - cairo_fill (cr); - } - - cairo_translate (cr, 4, 0); - - for (n = 0; n < 256; n++) { - cairo_set_source_rgba (cr, 0, 1, 0, n / 255.); - cairo_rectangle (cr, 0, n, 2, 1); - cairo_fill (cr); - } - for (n = 0; n < 256; n++) { - cairo_set_source_rgb (cr, 0, n / 255., 0); - cairo_rectangle (cr, 2, n, 2, 1); - cairo_fill (cr); - } - - cairo_translate (cr, 4, 0); - - for (n = 0; n < 256; n++) { - cairo_set_source_rgba (cr, 0, 0, 1, n / 255.); - cairo_rectangle (cr, 0, n, 2, 1); - cairo_fill (cr); - } - for (n = 0; n < 256; n++) { - cairo_set_source_rgb (cr, 0, 0, n / 255.); - cairo_rectangle (cr, 2, n, 2, 1); - cairo_fill (cr); - } - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (pass_through, - "tests pixel values", - "color", /* keywords */ - NULL, /* requirements */ - 16, 256, - NULL, draw) diff --git a/test/path-append.c b/test/path-append.c deleted file mode 100644 index bdcc63a..0000000 --- a/test/path-append.c +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright © 2009 Jeff Muizelaar - * Copyright © 2009 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that copyright - * notice and this permission notice appear in supporting documentation, and - * that the name of the copyright holders not be used in advertising or - * publicity pertaining to distribution of the software without specific, - * written prior permission. The copyright holders make no representations - * about the suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, - * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include "cairo-test.h" -#include - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_matrix_t m; - int xoffset = 50; - int yoffset = 50; - - cairo_surface_t *shadow; - cairo_t *shadow_cr; - cairo_path_t *path; - - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - cairo_translate (cr, 130, 130); - cairo_rotate (cr, .5);//2*M_PI*angle/360); - cairo_rectangle (cr, 0, 0, 50, 100); - cairo_get_matrix (cr, &m); - - shadow = cairo_surface_create_similar (cairo_get_target (cr), - CAIRO_CONTENT_COLOR_ALPHA, - 600 - xoffset, - 600 - yoffset); - cairo_surface_set_device_offset (shadow, xoffset, yoffset); - shadow_cr = cairo_create (shadow); - cairo_surface_destroy (shadow); - - cairo_set_source_rgb (shadow_cr, 0, 1, 0); - cairo_set_matrix (shadow_cr, &m); - - path = cairo_copy_path (cr); - cairo_new_path (shadow_cr); - cairo_append_path (shadow_cr, path); - cairo_fill (shadow_cr); - cairo_path_destroy (path); - - cairo_identity_matrix (cr); - cairo_translate (cr, 10, 50); - cairo_set_source_surface (cr, cairo_get_target (shadow_cr), 0, 0); - cairo_paint (cr); - cairo_set_matrix (cr, &m); - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_fill (cr); - - cairo_destroy (shadow_cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (path_append, - "Test appending path to a context, in particular to exercise a regression in 005436", - "path", /* keywords */ - NULL, /* requirements */ - 600, 600, - NULL, draw) diff --git a/test/path-currentpoint.c b/test/path-currentpoint.c deleted file mode 100644 index ccd44b1..0000000 --- a/test/path-currentpoint.c +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright © 2014 Google, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -#include "cairo-test.h" - -#include - -static void -assert_point (cairo_t *cr, double expected_x, double expected_y) { - double x, y; - assert (cairo_has_current_point (cr)); - cairo_get_current_point (cr, &x, &y); - assert (x == expected_x); - assert (y == expected_y); -} - -static void -assert_point_maintained (cairo_t *cr, double expected_x, double expected_y) { - cairo_path_t *path; - - assert_point (cr, expected_x, expected_y); - - path = cairo_copy_path (cr); - - cairo_new_path (cr); - cairo_rectangle (cr, 5, 5, 10, 20); - cairo_stroke (cr); - - cairo_new_path (cr); - cairo_append_path (cr, path); - cairo_path_destroy (path); - - assert_point (cr, expected_x, expected_y); -} - -static cairo_test_status_t -preamble (cairo_test_context_t *ctx) -{ - cairo_surface_t *surface; - cairo_t *cr; - - surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 20, 20); - cr = cairo_create (surface); - - cairo_new_path (cr); - cairo_move_to (cr, 1., 2.); - assert_point_maintained (cr, 1., 2.); - - cairo_line_to (cr, 4., 5.); - cairo_move_to (cr, 2., 1.); - assert_point_maintained (cr, 2., 1.); - - cairo_move_to (cr, 5, 5); - cairo_arc (cr, 5, 5, 10, 0, M_PI / 3); - cairo_close_path (cr); - assert_point_maintained (cr, 5, 5); - - cairo_destroy (cr); - cairo_surface_destroy (surface); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (path_currentpoint, - "Test save/restore path maintains current point", - "api", /* keywords */ - NULL, /* requirements */ - 0, 0, - preamble, NULL) diff --git a/test/path-precision.c b/test/path-precision.c deleted file mode 100644 index 3a7fb11..0000000 --- a/test/path-precision.c +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright © 2008 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - * - * Based on an example by Dirk "krit" Schulze found during WebKit integration. - */ - -#include "cairo-test.h" - -/* we know that this is an inherent limitation in cairo */ -#define FAIL CAIRO_TEST_XFAILURE - -/* Test the idempotency of path construction and copying */ - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_path_data_t path_data[] = { - { { CAIRO_PATH_MOVE_TO, 2 }, }, - { { 95.000000, 40.000000 }, }, - - { { CAIRO_PATH_LINE_TO, 2 }, }, - { { 94.960533, 41.255810 }, }, - - { { CAIRO_PATH_LINE_TO, 2 }, }, - { { 94.842293, 42.50666 }, }, - - { { CAIRO_PATH_LINE_TO, 2 }, }, - { { 94.645744, 43.747627 }, }, - - { { CAIRO_PATH_LINE_TO, 2 }, }, - { { 94.371666, 44.973797 }, }, - }; - const cairo_test_context_t *ctx = cairo_test_get_context (cr); - cairo_path_t path, *path_copy; - int i, j, n; - cairo_test_status_t result = CAIRO_TEST_SUCCESS; - - path.status = CAIRO_STATUS_SUCCESS; - path.num_data = ARRAY_LENGTH (path_data); - path.data = path_data; - - cairo_new_path (cr); - cairo_append_path (cr, &path); - path_copy = cairo_copy_path (cr); - - if (path_copy->status) - return cairo_test_status_from_status (ctx, path_copy->status); - - for (i = j = n = 0; - i < path.num_data && j < path_copy->num_data; - i += path.data[i].header.length, - j += path_copy->data[j].header.length, - n++) - { - const cairo_path_data_t *src, *dst; - - src = &path.data[i]; - dst = &path_copy->data[j]; - - if (src->header.type != dst->header.type) { - cairo_test_log (ctx, - "Paths differ in header type after %d operations.\n" - "Expected path operation %d, found %d.\n", - n, src->header.type, dst->header.type); - result = FAIL; - break; - } - - if (memcmp (&src[1].point, &dst[1].point, sizeof (src->point))) { - cairo_test_log (ctx, - "Paths differ in coordinates after %d operations.\n" - "Expected point (%f, %f), found (%f, %f).\n", - n, - src[1].point.x, src[1].point.y, - dst[1].point.x, dst[1].point.y); - result = FAIL; - break; - } - } - - cairo_path_destroy (path_copy); - return result; -} - -CAIRO_TEST (path_precision, - "Check that the path append/copy is idempotent.", - "api", /* keywords */ - NULL, /* requirements */ - 0, 0, - NULL, draw) diff --git a/test/path-stroke-twice.c b/test/path-stroke-twice.c deleted file mode 100644 index 10bbbf8..0000000 --- a/test/path-stroke-twice.c +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright 2010 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -/* Exercises a bug found by alois@astro.ch: - * http://bugs.freedesktop.org/show_bug.cgi?id=26010 - * cairo_line_to optimizes away path segment - */ - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - cairo_set_source_rgb (cr, 0, 0, 0); - cairo_move_to (cr, 10, 10); - cairo_line_to (cr, 10, 20); - cairo_line_to (cr, 20, 30); - cairo_line_to (cr, 10, 20); - cairo_stroke (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (path_stroke_twice, - "Tests stroking of a path containing a segment drawn twice", - "path, stroke", /* keywords */ - NULL, /* requirements */ - 40, 40, - NULL, draw) diff --git a/test/pattern-get-type.c b/test/pattern-get-type.c deleted file mode 100644 index c807b14..0000000 --- a/test/pattern-get-type.c +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright © 2006 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" - -static cairo_test_status_t -preamble (cairo_test_context_t *Ctx) -{ - cairo_surface_t *surface; - cairo_pattern_t *solid_rgb, *solid_rgba, *surface_pattern, *linear, *radial, *mesh; - cairo_test_status_t result = CAIRO_TEST_SUCCESS; - - solid_rgb = cairo_pattern_create_rgb (0.0, 0.1, 0.2); - solid_rgba = cairo_pattern_create_rgba (0.3, 0.4, 0.5, 0.6); - surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, - 1, 1); - surface_pattern = cairo_pattern_create_for_surface (surface); - linear = cairo_pattern_create_linear (0.0, 0.0, 10.0, 10.0); - radial = cairo_pattern_create_radial (10.0, 10.0, 0.1, - 10.0, 10.0, 1.0); - mesh = cairo_pattern_create_mesh (); - - if (cairo_pattern_get_type (solid_rgb) != CAIRO_PATTERN_TYPE_SOLID) - result = CAIRO_TEST_FAILURE; - - if (cairo_pattern_get_type (solid_rgba) != CAIRO_PATTERN_TYPE_SOLID) - result = CAIRO_TEST_FAILURE; - - if (cairo_pattern_get_type (surface_pattern) != CAIRO_PATTERN_TYPE_SURFACE) - result = CAIRO_TEST_FAILURE; - - if (cairo_pattern_get_type (linear) != CAIRO_PATTERN_TYPE_LINEAR) - result = CAIRO_TEST_FAILURE; - - if (cairo_pattern_get_type (radial) != CAIRO_PATTERN_TYPE_RADIAL) - result = CAIRO_TEST_FAILURE; - - if (cairo_pattern_get_type (mesh) != CAIRO_PATTERN_TYPE_MESH) - result = CAIRO_TEST_FAILURE; - - cairo_pattern_destroy (solid_rgb); - cairo_pattern_destroy (solid_rgba); - cairo_pattern_destroy (surface_pattern); - cairo_surface_destroy (surface); - cairo_pattern_destroy (linear); - cairo_pattern_destroy (radial); - cairo_pattern_destroy (mesh); - - return result; -} - -CAIRO_TEST (pattern_get_type, - "Creating patterns of all types", - "pattern, api", /* keywords */ - NULL, /* requirements */ - 0, 0, - preamble, NULL) diff --git a/test/pattern-getters.c b/test/pattern-getters.c deleted file mode 100644 index 08508d7..0000000 --- a/test/pattern-getters.c +++ /dev/null @@ -1,279 +0,0 @@ -/* -*- Mode: c; c-basic-offset: 4; indent-tabs-mode: t; tab-width: 8; -*- */ -/* - * Copyright © 2005 Mozilla Corporation, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Mozilla Corporation not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Mozilla Corporation makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * MOZILLA CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL MOZILLA CORPORATION BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Vladimir Vukicevic - */ - -#include "cairo-test.h" -#include - -#define CHECK_SUCCESS do { \ - if (status) { \ - cairo_pattern_destroy (pat); \ - return cairo_test_status_from_status (ctx, status); \ - } \ -} while (0) - -static int -double_buf_equal (const cairo_test_context_t *ctx, double *a, double *b, int nc) -{ - int i; - for (i = 0; i < nc; i++) { - if (!CAIRO_TEST_DOUBLE_EQUALS(a[i],b[i])) { - cairo_test_log (ctx, "Error: doubles not equal: %g, %g\n", - a[i], b[i]); - return 0; - } - } - return 1; -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - const cairo_test_context_t *ctx = cairo_test_get_context (cr); - cairo_status_t status; - cairo_pattern_t *pat; - - /* Test pattern_get_rgba */ - { - double r, g, b, a; - pat = cairo_pattern_create_rgba (0.2, 0.3, 0.4, 0.5); - - status = cairo_pattern_get_rgba (pat, &r, &g, &b, &a); - CHECK_SUCCESS; - - if (!CAIRO_TEST_DOUBLE_EQUALS(r,0.2) || - !CAIRO_TEST_DOUBLE_EQUALS(g,0.3) || - !CAIRO_TEST_DOUBLE_EQUALS(b,0.4) || - !CAIRO_TEST_DOUBLE_EQUALS(a,0.5)) { - cairo_test_log (ctx, "Error: cairo_pattern_get_rgba returned unexepcted results: %g, %g, %g, %g\n", - r, g, b, a); - cairo_pattern_destroy (pat); - return CAIRO_TEST_FAILURE; - } - - cairo_pattern_destroy (pat); - } - - /* Test pattern_get_surface */ - { - cairo_surface_t *surf; - - pat = cairo_pattern_create_for_surface (cairo_get_target (cr)); - - status = cairo_pattern_get_surface (pat, &surf); - CHECK_SUCCESS; - - if (surf != cairo_get_target (cr)) { - cairo_test_log (ctx, "Error: cairo_pattern_get_resurface returned wrong surface\n"); - cairo_pattern_destroy (pat); - return CAIRO_TEST_FAILURE; - } - - cairo_pattern_destroy (pat); - } - - /* Test get_color_stops & linear_get_points */ - { - int i; - double x0, y0, x1, y1; - double expected_values[15] = { 0.0, 0.2, 0.4, 0.2, 1.0, - 0.5, 0.4, 0.5, 0.2, 0.5, - 1.0, 0.2, 0.4, 0.5, 0.2 }; - double new_buf[15]; - - pat = cairo_pattern_create_linear (1.0, 2.0, 3.0, 4.0); - - for (i = 0; i < 3; i++) { - cairo_pattern_add_color_stop_rgba (pat, - expected_values[i*5+0], - expected_values[i*5+1], - expected_values[i*5+2], - expected_values[i*5+3], - expected_values[i*5+4]); - } - - status = cairo_pattern_get_linear_points (pat, &x0, &y0, &x1, &y1); - CHECK_SUCCESS; - - if (!CAIRO_TEST_DOUBLE_EQUALS(x0,1.0) || - !CAIRO_TEST_DOUBLE_EQUALS(y0,2.0) || - !CAIRO_TEST_DOUBLE_EQUALS(x1,3.0) || - !CAIRO_TEST_DOUBLE_EQUALS(y1,4.0)) - { - cairo_pattern_destroy (pat); - return CAIRO_TEST_FAILURE; - } - - status = cairo_pattern_get_color_stop_count (pat, &i); - CHECK_SUCCESS; - - if (i != 3) { - cairo_pattern_destroy (pat); - return CAIRO_TEST_FAILURE; - } - - for (i = 0; i < 3; i++) { - status = cairo_pattern_get_color_stop_rgba (pat, i, - &new_buf[i*5+0], - &new_buf[i*5+1], - &new_buf[i*5+2], - &new_buf[i*5+3], - &new_buf[i*5+4]); - CHECK_SUCCESS; - } - - status = cairo_pattern_get_color_stop_rgba (pat, 5, NULL, NULL, NULL, NULL, NULL); - if (status != CAIRO_STATUS_INVALID_INDEX) { - cairo_pattern_destroy (pat); - return CAIRO_TEST_FAILURE; - } - - if (!double_buf_equal (ctx, new_buf, expected_values, - ARRAY_LENGTH (expected_values)) != 0) - { - cairo_pattern_destroy (pat); - return CAIRO_TEST_FAILURE; - } - - cairo_pattern_destroy (pat); - } - - /* Test radial_get_circles */ - { - double a, b, c, d, e, f; - pat = cairo_pattern_create_radial (1, 2, 3, - 4, 5, 6); - - status = cairo_pattern_get_radial_circles (pat, &a, &b, &c, &d, &e, &f); - CHECK_SUCCESS; - - if (!CAIRO_TEST_DOUBLE_EQUALS(a,1.0) || - !CAIRO_TEST_DOUBLE_EQUALS(b,2.0) || - !CAIRO_TEST_DOUBLE_EQUALS(c,3.0) || - !CAIRO_TEST_DOUBLE_EQUALS(d,4.0) || - !CAIRO_TEST_DOUBLE_EQUALS(e,5.0) || - !CAIRO_TEST_DOUBLE_EQUALS(f,6.0)) - { - cairo_pattern_destroy (pat); - return CAIRO_TEST_FAILURE; - } - - cairo_pattern_destroy (pat); - } - - /* Test mesh getters */ - { - unsigned int count; - int i; - pat = cairo_pattern_create_mesh (); - - status = cairo_mesh_pattern_get_patch_count (pat, &count); - CHECK_SUCCESS; - - if (count != 0) { - cairo_pattern_destroy (pat); - return CAIRO_TEST_FAILURE; - } - - cairo_mesh_pattern_begin_patch (pat); - cairo_mesh_pattern_move_to (pat, 0, 0); - cairo_mesh_pattern_line_to (pat, 0, 3); - cairo_mesh_pattern_line_to (pat, 3, 3); - cairo_mesh_pattern_line_to (pat, 3, 0); - - status = cairo_mesh_pattern_get_patch_count (pat, &count); - CHECK_SUCCESS; - - if (count != 0) { - cairo_pattern_destroy (pat); - return CAIRO_TEST_FAILURE; - } - - cairo_mesh_pattern_end_patch (pat); - - status = cairo_mesh_pattern_get_patch_count (pat, &count); - CHECK_SUCCESS; - - if (count != 1) { - cairo_pattern_destroy (pat); - return CAIRO_TEST_FAILURE; - } - - for (i = 0; i < 4; i++) { - double cp_x[4] = { 1, 1, 2, 2 }; - double cp_y[4] = { 1, 2, 2, 1 }; - double x, y; - - status = cairo_mesh_pattern_get_control_point (pat, 0, i, &x, &y); - CHECK_SUCCESS; - - if (!CAIRO_TEST_DOUBLE_EQUALS(x,cp_x[i]) || - !CAIRO_TEST_DOUBLE_EQUALS(y,cp_y[i])) - { - cairo_pattern_destroy (pat); - return CAIRO_TEST_FAILURE; - } - } - - cairo_mesh_pattern_begin_patch (pat); - cairo_mesh_pattern_move_to (pat, 0, 0); - cairo_mesh_pattern_line_to (pat, 1, 0); - cairo_mesh_pattern_line_to (pat, 1, 1); - cairo_mesh_pattern_set_corner_color_rgb (pat, 0, 1, 1, 1); - cairo_mesh_pattern_end_patch (pat); - - for (i = 0; i < 4; i++) { - double corner_color[4] = { 1, 0, 0, 1 }; - double a, r, g, b; - - status = cairo_mesh_pattern_get_corner_color_rgba (pat, 1, i, - &r, &g, &b, &a); - CHECK_SUCCESS; - - if (!CAIRO_TEST_DOUBLE_EQUALS(a,corner_color[i]) || - !CAIRO_TEST_DOUBLE_EQUALS(r,corner_color[i]) || - !CAIRO_TEST_DOUBLE_EQUALS(g,corner_color[i]) || - !CAIRO_TEST_DOUBLE_EQUALS(b,corner_color[i])) - { - cairo_pattern_destroy (pat); - return CAIRO_TEST_FAILURE; - } - } - - cairo_pattern_destroy (pat); - } - - cairo_set_source_rgb (cr, 0, 1, 0); - cairo_paint (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (pattern_getters, - "Tests calls to pattern getter functions", - "pattern, api", /* keywords */ - NULL, /* requirements */ - 1, 1, - NULL, draw) diff --git a/test/pdf-features.c b/test/pdf-features.c deleted file mode 100644 index b9c2bd0..0000000 --- a/test/pdf-features.c +++ /dev/null @@ -1,148 +0,0 @@ -/* - * Copyright © 2006 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" - -#include -#include -#include - -/* This test exists to test the various features of cairo-pdf.h. - * - * Currently, this test exercises the following function calls: - * - * cairo_pdf_surface_set_size - */ - -#define INCHES_TO_POINTS(in) ((in) * 72.0) -#define MM_TO_POINTS(mm) ((mm) / 25.4 * 72.0) -#define TEXT_SIZE 12 -#define BASENAME "pdf-features.out" - -static struct { - const char *page_size; - const char *page_size_alias; - const char *orientation; - double width_in_points; - double height_in_points; -} pages[] = { - {"na_letter_8.5x11in", "letter", "portrait", - INCHES_TO_POINTS(8.5), INCHES_TO_POINTS(11)}, - {"na_letter_8.5x11in", "letter", "landscape", - INCHES_TO_POINTS(11), INCHES_TO_POINTS(8.5)}, - {"iso_a4_210x297mm", "a4", "portrait", - MM_TO_POINTS(210), MM_TO_POINTS(297)}, - {"iso_a4_210x297mm", "a4", "landscape", - MM_TO_POINTS(297), MM_TO_POINTS(210)}, - {"iso_a5_148x210mm", "a5", "portrait", - MM_TO_POINTS(148), MM_TO_POINTS(210)}, - {"iso_a5_148x210mm", "a5", "landscape", - MM_TO_POINTS(210), MM_TO_POINTS(148)}, - {"iso_a6_105x148mm", "a6", "portrait", - MM_TO_POINTS(105), MM_TO_POINTS(148)}, - {"iso_a6_105x148mm", "a6", "landscape", - MM_TO_POINTS(148), MM_TO_POINTS(105)}, - {"iso_a7_74x105mm", "a7", "portrait", - MM_TO_POINTS(74), MM_TO_POINTS(105)}, - {"iso_a7_74x105mm", "a7", "landscape", - MM_TO_POINTS(105), MM_TO_POINTS(74)}, - {"iso_a8_52x74mm", "a8", "portrait", - MM_TO_POINTS(52), MM_TO_POINTS(74)}, - {"iso_a8_52x74mm", "a8", "landscape", - MM_TO_POINTS(74), MM_TO_POINTS(52)}, - {"iso_a9_37x52mm", "a9", "portrait", - MM_TO_POINTS(37), MM_TO_POINTS(52)}, - {"iso_a9_37x52mm", "a9", "landscape", - MM_TO_POINTS(52), MM_TO_POINTS(37)}, - {"iso_a10_26x37mm", "a10", "portrait", - MM_TO_POINTS(26), MM_TO_POINTS(37)}, - {"iso_a10_26x37mm", "a10", "landscape", - MM_TO_POINTS(37), MM_TO_POINTS(26)} -}; - -static cairo_test_status_t -preamble (cairo_test_context_t *ctx) -{ - cairo_surface_t *surface; - cairo_t *cr; - cairo_status_t status; - size_t i; - char *filename; - const char *path = cairo_test_mkdir (CAIRO_TEST_OUTPUT_DIR) ? CAIRO_TEST_OUTPUT_DIR : "."; - - if (! cairo_test_is_target_enabled (ctx, "pdf")) - return CAIRO_TEST_UNTESTED; - - xasprintf (&filename, "%s/%s.pdf", path, BASENAME); - - /* The initial size passed here is the default size that will be - * inheritable by each page. That is, any page for which this - * initial size applies will not have its own /MediaBox entry in - * its dictionary. */ - surface = cairo_pdf_surface_create (filename, - INCHES_TO_POINTS(8.5), - INCHES_TO_POINTS(11)); - - cr = cairo_create (surface); - - cairo_select_font_face (cr, CAIRO_TEST_FONT_FAMILY " Sans", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - cairo_set_font_size (cr, TEXT_SIZE); - - for (i = 0; i < ARRAY_LENGTH (pages); i++) { - cairo_pdf_surface_set_size (surface, - pages[i].width_in_points, - pages[i].height_in_points); - - cairo_move_to (cr, TEXT_SIZE, TEXT_SIZE); - cairo_show_text (cr, pages[i].page_size); - cairo_show_text (cr, " - "); - cairo_show_text (cr, pages[i].orientation); - cairo_show_page (cr); - } - - status = cairo_status (cr); - - cairo_destroy (cr); - cairo_surface_destroy (surface); - free (filename); - - if (status) { - cairo_test_log (ctx, "Failed to create pdf surface for file %s: %s\n", - filename, cairo_status_to_string (status)); - return CAIRO_TEST_FAILURE; - } - - printf ("pdf-features: Please check %s to ensure it looks/prints correctly.\n", filename); - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (pdf_features, - "Check PDF specific API", - "pdf", /* keywords */ - NULL, /* requirements */ - 0, 0, - preamble, NULL) diff --git a/test/pdf-isolated-group.c b/test/pdf-isolated-group.c deleted file mode 100644 index e74a346..0000000 --- a/test/pdf-isolated-group.c +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright © 2012 Adrian Johnson - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Adrian Johnson - */ - -#include "cairo-test.h" - -#define SIZE 60 -#define WIDTH SIZE -#define HEIGHT SIZE - - -/* PDF transparency groups can be isolated or non-isolated. This test - * checks that the PDF output is using isolated groups. If the group - * is non-isolated the bottom half of the inner rectangle will be - * red. Note poppler-cairo currently ignores the isolated flag and - * treats the group as isolated. - * - * Refer to http://www.pdfvt.com/PDFVT_TransparencyGuide.html for an - * explanation isolated vs non-isolated. - */ - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - cairo_set_source_rgb (cr, 1, 0.5, 0); - cairo_rectangle (cr, 0, SIZE/2, SIZE, SIZE/2); - cairo_fill (cr); - - cairo_set_operator (cr, CAIRO_OPERATOR_MULTIPLY); - - cairo_push_group (cr); - - cairo_set_source_rgb (cr, 0.7, 0.7, 0.7); - cairo_rectangle (cr, SIZE/4, SIZE/4, SIZE/2, SIZE/2); - cairo_fill (cr); - - cairo_pop_group_to_source (cr); - cairo_paint (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (pdf_isolated_group, - "Check that transparency groups in PDF output are isolated", - "group, operator", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/pdf-mime-data.c b/test/pdf-mime-data.c deleted file mode 100644 index fd5af1f..0000000 --- a/test/pdf-mime-data.c +++ /dev/null @@ -1,187 +0,0 @@ -/* - * Copyright © 2008 Adrian Johnson - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Adrian Johnson - */ - -#include "cairo-test.h" - -#include -#include -#include -#include - -/* This test checks that the mime data is correctly used by the PDF - * surface when embedding images.. - */ - -/* Both a *.png and *.jpg file with this name is required since we - * are not using a jpeg library */ -#define IMAGE_FILE "romedalen" - -#define BASENAME "pdf-mime-data.out" - -static cairo_test_status_t -read_file (const cairo_test_context_t *ctx, - const char *file, - unsigned char **data, - unsigned int *len) -{ - FILE *fp; - - fp = fopen (file, "rb"); - if (fp == NULL) { - char filename[4096]; - - /* try again with srcdir */ - snprintf (filename, sizeof (filename), - "%s/%s", ctx->srcdir, file); - fp = fopen (filename, "rb"); - } - if (fp == NULL) { - switch (errno) { - case ENOMEM: - cairo_test_log (ctx, "Could not create file handle for %s due to \ - lack of memory\n", file); - return CAIRO_TEST_NO_MEMORY; - default: - cairo_test_log (ctx, "Could not get the file handle for %s\n", file); - return CAIRO_TEST_FAILURE; - } - } - - fseek (fp, 0, SEEK_END); - *len = ftell(fp); - fseek (fp, 0, SEEK_SET); - *data = malloc (*len); - if (*data == NULL) { - fclose(fp); - cairo_test_log (ctx, "Could not allocate memory for buffer to read \ - from file %s\n", file); - return CAIRO_TEST_NO_MEMORY; - } - - if (fread(*data, *len, 1, fp) != 1) { - free (data); - fclose(fp); - cairo_test_log (ctx, "Could not read data from file %s\n", file); - return CAIRO_TEST_FAILURE; - } - - fclose(fp); - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -preamble (cairo_test_context_t *ctx) -{ - cairo_surface_t *image; - cairo_surface_t *surface; - cairo_t *cr; - cairo_status_t status, status2; - cairo_test_status_t test_status; - int width, height; - unsigned char *data; - unsigned char *out_data; - unsigned int len, out_len; - char command[4096]; - int exit_status; - char *filename; - const char *path = cairo_test_mkdir (CAIRO_TEST_OUTPUT_DIR) ? CAIRO_TEST_OUTPUT_DIR : "."; - - if (! cairo_test_is_target_enabled (ctx, "pdf")) - return CAIRO_TEST_UNTESTED; - - image = cairo_image_surface_create_from_png (IMAGE_FILE ".png"); - test_status = read_file (ctx, IMAGE_FILE ".jpg", &data, &len); - if (test_status) { - return test_status; - } - - cairo_surface_set_mime_data (image, CAIRO_MIME_TYPE_JPEG, - data, len, - free, data); - width = cairo_image_surface_get_width (image); - height = cairo_image_surface_get_height (image); - - xasprintf (&filename, "%s/%s.pdf", path, BASENAME); - surface = cairo_pdf_surface_create (filename, width + 20, height + 20); - cr = cairo_create (surface); - cairo_translate (cr, 10, 10); - cairo_set_source_surface (cr, image, 0, 0); - cairo_paint (cr); - status = cairo_status (cr); - cairo_destroy (cr); - cairo_surface_finish (surface); - status2 = cairo_surface_status (surface); - if (status != CAIRO_STATUS_SUCCESS) - status = status2; - cairo_surface_destroy (surface); - cairo_surface_destroy (image); - - if (status) { - free (filename); - cairo_test_log (ctx, "Failed to create pdf surface for file %s: %s\n", - filename, cairo_status_to_string (status)); - return CAIRO_TEST_FAILURE; - } - - printf ("pdf-mime-data: Please check %s to ensure it looks/prints correctly.\n", filename); - - sprintf (command, "pdfimages -j %s %s", filename, CAIRO_TEST_OUTPUT_DIR "/" BASENAME); - exit_status = system (command); - free (filename); - if (exit_status) { - cairo_test_log (ctx, "pdfimages failed with exit status %d\n", exit_status); - return CAIRO_TEST_FAILURE; - } - - test_status = read_file (ctx, IMAGE_FILE ".jpg", &data, &len); - if (test_status) { - return test_status; - } - - test_status = read_file (ctx, CAIRO_TEST_OUTPUT_DIR "/" BASENAME "-000.jpg", &out_data, &out_len); - if (test_status) { - return test_status; - } - - if (len != out_len || memcmp(data, out_data, len) != 0) { - free (data); - free (out_data); - cairo_test_log (ctx, "output mime data does not match source mime data\n"); - return CAIRO_TEST_FAILURE; - } - - free (data); - free (out_data); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (pdf_mime_data, - "Check mime data correctly used by PDF surface", - "pdf, mime-data", /* keywords */ - NULL, /* requirements */ - 0, 0, - preamble, NULL) diff --git a/test/pdf-surface-source.c b/test/pdf-surface-source.c deleted file mode 100644 index 354a725..0000000 --- a/test/pdf-surface-source.c +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright © 2008 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" -#include - -#include "surface-source.c" - -#define BASENAME "pdf-surface-source.out" - -static cairo_surface_t * -create_source_surface (int size) -{ - cairo_surface_t *surface; - char *filename; - const char *path = cairo_test_mkdir (CAIRO_TEST_OUTPUT_DIR) ? CAIRO_TEST_OUTPUT_DIR : "."; - - xasprintf (&filename, "%s/%s.pdf", path, BASENAME); - surface = cairo_pdf_surface_create (filename, size, size); - cairo_surface_set_fallback_resolution (surface, 72., 72.); - free (filename); - - return surface; -} - -CAIRO_TEST (pdf_surface_source, - "Test using a PDF surface as the source", - "source", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - preamble, draw) diff --git a/test/pdf2png.c b/test/pdf2png.c deleted file mode 100644 index 06fa05b..0000000 --- a/test/pdf2png.c +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Kristian Høgsberg - */ - -#include -#include -#include - -#define FAIL(msg) \ - do { fprintf (stderr, "FAIL: %s\n", msg); exit (-1); } while (0) - -#define PIXELS_PER_POINT 1 - -int main (int argc, char *argv[]) -{ - PopplerDocument *document; - PopplerPage *page; - double width, height; - const char *filename = argv[1]; - const char *output_filename = argv[2]; - const char *page_label = argv[3]; - gchar *absolute, *uri; - cairo_surface_t *surface; - cairo_t *cr; - cairo_status_t status; - GError *error = NULL; - - if (argc != 4) - FAIL ("usage: pdf2png input_file.pdf output_file.png page"); - - g_type_init (); - - if (g_path_is_absolute(filename)) { - absolute = g_strdup (filename); - } else { - gchar *dir = g_get_current_dir (); - absolute = g_build_filename (dir, filename, (gchar *) 0); - g_free (dir); - } - - uri = g_filename_to_uri (absolute, NULL, &error); - g_free (absolute); - if (uri == NULL) - FAIL (error->message); - - document = poppler_document_new_from_file (uri, NULL, &error); - if (document == NULL) - FAIL (error->message); - - page = poppler_document_get_page_by_label (document, page_label); - if (page == NULL) - FAIL ("page not found"); - - poppler_page_get_size (page, &width, &height); - - surface = cairo_image_surface_create (CAIRO_FORMAT_RGB24, width, height); - cr = cairo_create (surface); - cairo_surface_destroy (surface); - - cairo_set_source_rgb (cr, 1,1,1); - cairo_paint (cr); - cairo_push_group_with_content (cr, CAIRO_CONTENT_COLOR_ALPHA); - - poppler_page_render (page, cr); - g_object_unref (page); - - cairo_pop_group_to_source (cr); - cairo_paint (cr); - - status = cairo_surface_write_to_png (cairo_get_target (cr), - output_filename); - cairo_destroy (cr); - - if (status) - FAIL (cairo_status_to_string (status)); - - return 0; -} diff --git a/test/pdiff/.gitignore b/test/pdiff/.gitignore deleted file mode 100644 index f44ed65..0000000 --- a/test/pdiff/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -TAGS -tags -perceptualdiff diff --git a/test/pdiff/CMakeLists.txt b/test/pdiff/CMakeLists.txt deleted file mode 100644 index 6e4fa7a..0000000 --- a/test/pdiff/CMakeLists.txt +++ /dev/null @@ -1,55 +0,0 @@ -PROJECT (PerceptualDiff) -SET(DIFF_SRC PerceptualDiff.cpp LPyramid.cpp RGBAImage.cpp -CompareArgs.cpp Metric.cpp) - -ADD_EXECUTABLE (perceptualdiff ${DIFF_SRC}) - -# look for libtiff -FIND_PATH(TIFF_INCLUDE_DIR tiff.h - /usr/local/include - /usr/include - /opt/local/include -) - -FIND_LIBRARY(TIFF_LIBRARY tiff - /usr/lib - /usr/local/lib - /opt/local/lib -) - -IF(TIFF_INCLUDE_DIR) - IF(TIFF_LIBRARY) - SET( TIFF_FOUND "YES" ) - SET( TIFF_LIBRARIES ${TIFF_LIBRARY} ) - ENDIF(TIFF_LIBRARY) -ENDIF(TIFF_INCLUDE_DIR) - -IF(TIFF_FOUND) - INCLUDE_DIRECTORIES(${TIFF_INCLUDE_DIR}) - TARGET_LINK_LIBRARIES(perceptualdiff ${TIFF_LIBRARY}) -ENDIF(TIFF_FOUND) - -# look for libpng -FIND_PATH(PNG_INCLUDE_DIR png.h - /usr/local/include - /usr/include - /opt/local/include -) - -FIND_LIBRARY(PNG_LIBRARY png - /usr/lib - /usr/local/lib - /opt/local/lib -) - -IF(PNG_INCLUDE_DIR) - IF(PNG_LIBRARY) - SET( PNG_FOUND "YES" ) - SET( PNG_LIBRARIES ${PNG_LIBRARY} ) - ENDIF(PNG_LIBRARY) -ENDIF(PNG_INCLUDE_DIR) - -IF(PNG_FOUND) - INCLUDE_DIRECTORIES(${PNG_INCLUDE_DIR}) - TARGET_LINK_LIBRARIES(perceptualdiff ${PNG_LIBRARY}) -ENDIF(PNG_FOUND) \ No newline at end of file diff --git a/test/pdiff/Makefile.am b/test/pdiff/Makefile.am deleted file mode 100644 index 73098da..0000000 --- a/test/pdiff/Makefile.am +++ /dev/null @@ -1,19 +0,0 @@ -include $(top_srcdir)/build/Makefile.am.common - -EXTRA_PROGRAMS += perceptualdiff -EXTRA_DIST += gpl.txt - -noinst_LTLIBRARIES = libpdiff.la -libpdiff_la_SOURCES = \ - pdiff.h \ - lpyramid.c \ - lpyramid.h \ - pdiff.c - -perceptualdiff_SOURCES = \ - args.c \ - args.h \ - perceptualdiff.c - -AM_CPPFLAGS = -I$(top_srcdir)/src -I$(top_builddir)/src $(CAIRO_CFLAGS) -LDADD = libpdiff.la $(top_builddir)/src/libcairo.la diff --git a/test/pdiff/Makefile.win32 b/test/pdiff/Makefile.win32 deleted file mode 100644 index 3d64676..0000000 --- a/test/pdiff/Makefile.win32 +++ /dev/null @@ -1,14 +0,0 @@ -top_srcdir = ../.. -include $(top_srcdir)/build/Makefile.win32.common - -SOURCES = \ - lpyramid.c \ - pdiff.c \ - $(NULL) - -OBJECTS = $(patsubst %.c, $(CFG)/%-static.obj, $(SOURCES)) - -all: $(CFG)/pdiff.lib - -$(CFG)/pdiff.lib: $(OBJECTS) - @$(AR) $(CAIRO_ARFLAGS) -OUT:$@ $(OBJECTS) diff --git a/test/pdiff/README.txt b/test/pdiff/README.txt deleted file mode 100644 index 922ddaf..0000000 --- a/test/pdiff/README.txt +++ /dev/null @@ -1,45 +0,0 @@ -pdiff - a program that compares two images using -a perceptually based image metric. -Copyright (C) 2006 Yangli Hector Yee -yeehector@users.sourceforge.net -http://pdiff.sourceforge.net/ - -This program is free software; you can redistribute it and/or modify it -under the terms of the GNU General Public License as published by the -Free Software Foundation; either version 2 of the License, -or (at your option) any later version. - -This program is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -or FITNESS FOR A PARTICULAR PURPOSE. -See the GNU General Public License for more details in the file gpl.txt. - -Build Instructions -1. Download cross platform make from http://www.cmake.org -2. Download libtiff from http://www.libtiff.org. Download libpng from http://www.libpng.org -3. Edit CMakeLists.txt to tell it where to find your tiff library -4. Type cmake . -5. Type make . (or on Windows systems cmake makes a Visual Studio -Project file) -6. To specify the install directory, use make install DESTDIR="/home/me/mydist" - -Usage - -pdiff image1.(tif | png) image2.(tif | png) [options] --verbose : Turns on verbose mode --fov deg: field of view, deg, in degrees. Usually between 10.0 to 85.0. -This controls how much of the screen the oberserver is seeing. Front row of -a theatre has a field of view of around 25 degrees. Back row has a field of - view of around 60 degrees. --threshold p : Sets the number of pixels, p, to reject. For example if p is - 100, then the test fails if 100 or more pixels are perceptably different. --gamma g : The gamma to use to convert to RGB linear space. Default is 2.2 --luminance l: The luminance of the display the observer is seeing. Default - is 100 candela per meter squared - -Credits - -Hector Yee, project administrator and originator - hectorgon.blogspot.com -Scott Corley, for png file IO code -Mick Weiss, Linux build and release & QA -Carl Worth, Rewrite as library, depend on cairo, and port to C \ No newline at end of file diff --git a/test/pdiff/args.c b/test/pdiff/args.c deleted file mode 100644 index ac3aa83..0000000 --- a/test/pdiff/args.c +++ /dev/null @@ -1,119 +0,0 @@ -/* - Comapre Args - Copyright (C) 2006 Yangli Hector Yee - - This program is free software; you can redistribute it and/or modify it under the terms of the - GNU General Public License as published by the Free Software Foundation; either version 2 of the License, - or (at your option) any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; - without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along with this program; - if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA -*/ - -#include "args.h" -#include -#include -#include - -static const char* copyright = -"PerceptualDiff version 1.0, Copyright (C) 2006 Yangli Hector Yee\n\ -PerceptualDiff comes with ABSOLUTELY NO WARRANTY;\n\ -This is free software, and you are welcome\n\ -to redistribute it under certain conditions;\n\ -See the GPL page for details: http://www.gnu.org/copyleft/gpl.html\n\n"; - -static const char *usage = -"PeceptualDiff image1.tif image2.tif\n\n\ - Compares image1.tif and image2.tif using a perceptually based image metric\n\ - Options:\n\ -\t-verbose : Turns on verbose mode\n\ -\t-fov deg : Field of view in degrees (0.1 to 89.9)\n\ -\t-threshold p : #pixels p below which differences are ignored\n\ -\t-gamma g : Value to convert rgb into linear space (default 2.2)\n\ -\t-luminance l : White luminance (default 100.0 cdm^-2)\n\ -\n\ -\n Note: Input files can also be in the PNG format\ -\n"; - -void -args_init (args_t *args) -{ - args->surface_a = NULL; - args->surface_b = NULL; - args->Verbose = false; - args->FieldOfView = 45.0f; - args->Gamma = 2.2f; - args->ThresholdPixels = 100; - args->Luminance = 100.0f; -} - -void -args_fini (args_t *args) -{ - cairo_surface_destroy (args->surface_a); - cairo_surface_destroy (args->surface_b); -} - -bool -args_parse (args_t *args, int argc, char **argv) -{ - int i; - if (argc < 3) { - fprintf (stderr, "%s", copyright); - fprintf (stderr, "%s", usage); - return false; - } - for (i = 0; i < argc; i++) { - if (i == 1) { - args->surface_a = cairo_image_surface_create_from_png (argv[1]); - if (cairo_surface_status (args->surface_a)) - { - fprintf (stderr, "FAIL: Cannot open %s: %s\n", - argv[1], cairo_status_to_string (cairo_surface_status (args->surface_a))); - return false; - } - } else if (i == 2) { - args->surface_b = cairo_image_surface_create_from_png (argv[2]); - if (cairo_surface_status (args->surface_b)) - { - fprintf (stderr, "FAIL: Cannot open %s: %s\n", - argv[2], cairo_status_to_string (cairo_surface_status (args->surface_b))); - return false; - } - } else { - if (strstr(argv[i], "-fov")) { - if (i + 1 < argc) { - args->FieldOfView = (float) atof(argv[i + 1]); - } - } else if (strstr(argv[i], "-verbose")) { - args->Verbose = true; - } else if (strstr(argv[i], "-threshold")) { - if (i + 1 < argc) { - args->ThresholdPixels = atoi(argv[i + 1]); - } - } else if (strstr(argv[i], "-gamma")) { - if (i + 1 < argc) { - args->Gamma = (float) atof(argv[i + 1]); - } - }else if (strstr(argv[i], "-luminance")) { - if (i + 1 < argc) { - args->Luminance = (float) atof(argv[i + 1]); - } - } - } - } /* i */ - return true; -} - -void -args_print (args_t *args) -{ - printf("Field of view is %f degrees\n", args->FieldOfView); - printf("Threshold pixels is %d pixels\n", args->ThresholdPixels); - printf("The Gamma is %f\n", args->Gamma); - printf("The Display's luminance is %f candela per meter squared\n", args->Luminance); -} diff --git a/test/pdiff/args.h b/test/pdiff/args.h deleted file mode 100644 index 5020239..0000000 --- a/test/pdiff/args.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - Comapre Args - Copyright (C) 2006 Yangli Hector Yee - - This program is free software; you can redistribute it and/or modify it under the terms of the - GNU General Public License as published by the Free Software Foundation; either version 2 of the License, - or (at your option) any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; - without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along with this program; - if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA -*/ - -#ifndef _ARGS_H -#define _ARGS_H - -#include "pdiff.h" - -/* Args to pass into the comparison function */ -typedef struct _args -{ - cairo_surface_t *surface_a; /* Image A */ - cairo_surface_t *surface_b; /* Image B */ - bool Verbose; /* Print lots of text or not */ - float FieldOfView; /* Field of view in degrees */ - float Gamma; /* The gamma to convert to linear color space */ - float Luminance; /* the display's luminance */ - unsigned int ThresholdPixels; /* How many pixels different to ignore */ -} args_t; - -void -args_init (args_t *args); - -void -args_fini (args_t *args); - -bool -args_parse (args_t *args, int argc, char **argv); - -void -args_print (args_t *args); - -#endif diff --git a/test/pdiff/gpl.txt b/test/pdiff/gpl.txt deleted file mode 100644 index f90922e..0000000 --- a/test/pdiff/gpl.txt +++ /dev/null @@ -1,340 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/test/pdiff/lpyramid.c b/test/pdiff/lpyramid.c deleted file mode 100644 index bd402c7..0000000 --- a/test/pdiff/lpyramid.c +++ /dev/null @@ -1,116 +0,0 @@ -/* - Laplacian Pyramid - Copyright (C) 2006 Yangli Hector Yee - - This program is free software; you can redistribute it and/or modify it under the terms of the - GNU General Public License as published by the Free Software Foundation; either version 2 of the License, - or (at your option) any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; - without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along with this program; - if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA -*/ - -#include "lpyramid.h" -#include -#include -#include - -struct _lpyramid { - /* Successively blurred versions of the original image */ - float *levels[MAX_PYR_LEVELS]; - - int width; - int height; -}; - -static void -convolve (lpyramid_t *pyramid, float *a, const float *b) -/* convolves image b with the filter kernel and stores it in a */ -{ - int y,x,i,j; - const float Kernel[] = {0.05f, 0.25f, 0.4f, 0.25f, 0.05f}; - int width = pyramid->width; - int height = pyramid->height; - - for (y=0; y=height) ny=2*height - ny - 1; - ny *= width; - for (i=-2; i<=2; i++) { - int nx=x+i; - if (nx<0) nx=-nx; - if (nx>=width) nx=2*width - nx - 1; - sum_i += Kernel[i+2] * b[ny + nx]; - } - sum += sum_i * Kernel[j+2]; - } - *a++ = sum; - } - } -} - -/* - * Construction/Destruction - */ - -lpyramid_t * -lpyramid_create (float *image, int width, int height) -{ - lpyramid_t *pyramid; - int i; - - pyramid = malloc (sizeof (lpyramid_t)); - if (pyramid == NULL) { - fprintf (stderr, "Out of memory.\n"); - exit (1); - } - pyramid->width = width; - pyramid->height = height; - - /* Make the Laplacian pyramid by successively - * copying the earlier levels and blurring them */ - for (i=0; ilevels[i] = malloc (width * height * sizeof (float)); - if (pyramid->levels[i] == NULL) { - fprintf (stderr, "Out of memory.\n"); - exit (1); - } - if (i == 0) { - memcpy (pyramid->levels[i], image, width * height * sizeof (float)); - } else { - convolve(pyramid, pyramid->levels[i], pyramid->levels[i - 1]); - } - } - - return pyramid; -} - -void -lpyramid_destroy (lpyramid_t *pyramid) -{ - int i; - - for (i=0; ilevels[i]); - - free (pyramid); -} - -float -lpyramid_get_value (lpyramid_t *pyramid, int x, int y, int level) -{ - int index = x + y * pyramid->width; - int l = level; - if (l > MAX_PYR_LEVELS) - l = MAX_PYR_LEVELS; - return pyramid->levels[l][index]; -} diff --git a/test/pdiff/lpyramid.h b/test/pdiff/lpyramid.h deleted file mode 100644 index e47a66e..0000000 --- a/test/pdiff/lpyramid.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - Laplacian Pyramid - Copyright (C) 2006 Yangli Hector Yee - - This program is free software; you can redistribute it and/or modify it under the terms of the - GNU General Public License as published by the Free Software Foundation; either version 2 of the License, - or (at your option) any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; - without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along with this program; - if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA -*/ -#ifndef _LPYRAMID_H -#define _LPYRAMID_H - -#define MAX_PYR_LEVELS 8 - -typedef struct _lpyramid lpyramid_t; - -lpyramid_t * -lpyramid_create (float *image, int width, int height); - -void -lpyramid_destroy (lpyramid_t *pyramid); - -float -lpyramid_get_value (lpyramid_t *pyramid, int x, int y, int level); - -#endif /* _LPYRAMID_H */ diff --git a/test/pdiff/pdiff.c b/test/pdiff/pdiff.c deleted file mode 100644 index eb5f156..0000000 --- a/test/pdiff/pdiff.c +++ /dev/null @@ -1,420 +0,0 @@ -/* - Metric - Copyright (C) 2006 Yangli Hector Yee - - This program is free software; you can redistribute it and/or modify it under the terms of the - GNU General Public License as published by the Free Software Foundation; either version 2 of the License, - or (at your option) any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; - without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along with this program; - if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA -*/ - -#define _GNU_SOURCE - -#if HAVE_CONFIG_H -#include "config.h" -#endif - -#include "lpyramid.h" -#include -#include -#include - -#if HAVE_STDINT_H -# include -#elif HAVE_INTTYPES_H -# include -#elif HAVE_SYS_INT_TYPES_H -# include -#elif defined(_MSC_VER) - typedef __int8 int8_t; - typedef unsigned __int8 uint8_t; - typedef __int16 int16_t; - typedef unsigned __int16 uint16_t; - typedef __int32 int32_t; - typedef unsigned __int32 uint32_t; - typedef __int64 int64_t; - typedef unsigned __int64 uint64_t; -# ifndef HAVE_UINT64_T -# define HAVE_UINT64_T 1 -# endif -# ifndef INT16_MIN -# define INT16_MIN (-32767-1) -# endif -# ifndef INT16_MAX -# define INT16_MAX (32767) -# endif -# ifndef UINT16_MAX -# define UINT16_MAX (65535) -# endif -#else -#error Cannot find definitions for fixed-width integral types (uint8_t, uint32_t, etc.) -#endif - -#include "pdiff.h" - -#ifndef M_PI -#define M_PI 3.14159265f -#endif - -#ifndef __USE_ISOC99 -#define expf exp -#define powf pow -#define fabsf fabs -#define sqrtf sqrt -#define log10f log10 -#endif - -/* - * Given the adaptation luminance, this function returns the - * threshold of visibility in cd per m^2 - * TVI means Threshold vs Intensity function - * This version comes from Ward Larson Siggraph 1997 - */ -static float -tvi (float adaptation_luminance) -{ - /* returns the threshold luminance given the adaptation luminance - units are candelas per meter squared - */ - float log_a, r, result; - log_a = log10f(adaptation_luminance); - - if (log_a < -3.94f) { - r = -2.86f; - } else if (log_a < -1.44f) { - r = powf(0.405f * log_a + 1.6f , 2.18f) - 2.86f; - } else if (log_a < -0.0184f) { - r = log_a - 0.395f; - } else if (log_a < 1.9f) { - r = powf(0.249f * log_a + 0.65f, 2.7f) - 0.72f; - } else { - r = log_a - 1.255f; - } - - result = powf(10.0f , r); - - return result; -} - -/* computes the contrast sensitivity function (Barten SPIE 1989) - * given the cycles per degree (cpd) and luminance (lum) - */ -static float -csf (float cpd, float lum) -{ - float a, b, result; - - a = 440.0f * powf((1.0f + 0.7f / lum), -0.2f); - b = 0.3f * powf((1.0f + 100.0f / lum), 0.15f); - - result = a * cpd * expf(-b * cpd) * sqrtf(1.0f + 0.06f * expf(b * cpd)); - - return result; -} - -/* - * Visual Masking Function - * from Daly 1993 - */ -static float -mask (float contrast) -{ - float a, b, result; - a = powf(392.498f * contrast, 0.7f); - b = powf(0.0153f * a, 4.0f); - result = powf(1.0f + b, 0.25f); - - return result; -} - -/* convert Adobe RGB (1998) with reference white D65 to XYZ */ -static void -AdobeRGBToXYZ (float r, float g, float b, float *x, float *y, float *z) -{ - /* matrix is from http://www.brucelindbloom.com/ */ - *x = r * 0.576700f + g * 0.185556f + b * 0.188212f; - *y = r * 0.297361f + g * 0.627355f + b * 0.0752847f; - *z = r * 0.0270328f + g * 0.0706879f + b * 0.991248f; -} - -static void -XYZToLAB (float x, float y, float z, float *L, float *A, float *B) -{ - static float xw = -1; - static float yw; - static float zw; - const float epsilon = 216.0f / 24389.0f; - const float kappa = 24389.0f / 27.0f; - float f[3]; - float r[3]; - int i; - - /* reference white */ - if (xw < 0) { - AdobeRGBToXYZ(1, 1, 1, &xw, &yw, &zw); - } - r[0] = x / xw; - r[1] = y / yw; - r[2] = z / zw; - for (i = 0; i < 3; i++) { - if (r[i] > epsilon) { - f[i] = powf(r[i], 1.0f / 3.0f); - } else { - f[i] = (kappa * r[i] + 16.0f) / 116.0f; - } - } - *L = 116.0f * f[1] - 16.0f; - *A = 500.0f * (f[0] - f[1]); - *B = 200.0f * (f[1] - f[2]); -} - -static uint32_t -_get_pixel (const uint32_t *data, int i) -{ - return data[i]; -} - -static unsigned char -_get_red (const uint32_t *data, int i) -{ - uint32_t pixel; - uint8_t alpha; - - pixel = _get_pixel (data, i); - alpha = (pixel & 0xff000000) >> 24; - if (alpha == 0) - return 0; - else - return (((pixel & 0x00ff0000) >> 16) * 255 + alpha / 2) / alpha; -} - -static unsigned char -_get_green (const uint32_t *data, int i) -{ - uint32_t pixel; - uint8_t alpha; - - pixel = _get_pixel (data, i); - alpha = (pixel & 0xff000000) >> 24; - if (alpha == 0) - return 0; - else - return (((pixel & 0x0000ff00) >> 8) * 255 + alpha / 2) / alpha; -} - -static unsigned char -_get_blue (const uint32_t *data, int i) -{ - uint32_t pixel; - uint8_t alpha; - - pixel = _get_pixel (data, i); - alpha = (pixel & 0xff000000) >> 24; - if (alpha == 0) - return 0; - else - return (((pixel & 0x000000ff) >> 0) * 255 + alpha / 2) / alpha; -} - -static void * -xmalloc (size_t size) -{ - void *buf; - - buf = malloc (size); - if (buf == NULL) { - fprintf (stderr, "Out of memory.\n"); - exit (1); - } - - return buf; -} - -int -pdiff_compare (cairo_surface_t *surface_a, - cairo_surface_t *surface_b, - double gamma, - double luminance, - double field_of_view) -{ - unsigned int dim = (cairo_image_surface_get_width (surface_a) - * cairo_image_surface_get_height (surface_a)); - unsigned int i; - - /* assuming colorspaces are in Adobe RGB (1998) convert to XYZ */ - float *aX; - float *aY; - float *aZ; - float *bX; - float *bY; - float *bZ; - float *aLum; - float *bLum; - - float *aA; - float *bA; - float *aB; - float *bB; - - unsigned int x, y, w, h; - - lpyramid_t *la, *lb; - - float num_one_degree_pixels, pixels_per_degree, num_pixels; - unsigned int adaptation_level; - - float cpd[MAX_PYR_LEVELS]; - float F_freq[MAX_PYR_LEVELS - 2]; - float csf_max; - const uint32_t *data_a, *data_b; - - unsigned int pixels_failed; - - w = cairo_image_surface_get_width (surface_a); - h = cairo_image_surface_get_height (surface_a); - if (w < 3 || h < 3) /* too small for the Laplacian convolution */ - return -1; - - aX = xmalloc (dim * sizeof (float)); - aY = xmalloc (dim * sizeof (float)); - aZ = xmalloc (dim * sizeof (float)); - bX = xmalloc (dim * sizeof (float)); - bY = xmalloc (dim * sizeof (float)); - bZ = xmalloc (dim * sizeof (float)); - aLum = xmalloc (dim * sizeof (float)); - bLum = xmalloc (dim * sizeof (float)); - - aA = xmalloc (dim * sizeof (float)); - bA = xmalloc (dim * sizeof (float)); - aB = xmalloc (dim * sizeof (float)); - bB = xmalloc (dim * sizeof (float)); - - data_a = (uint32_t *) cairo_image_surface_get_data (surface_a); - data_b = (uint32_t *) cairo_image_surface_get_data (surface_b); - for (y = 0; y < h; y++) { - for (x = 0; x < w; x++) { - float r, g, b, l; - i = x + y * w; - r = powf(_get_red (data_a, i) / 255.0f, gamma); - g = powf(_get_green (data_a, i) / 255.0f, gamma); - b = powf(_get_blue (data_a, i) / 255.0f, gamma); - - AdobeRGBToXYZ(r,g,b,&aX[i],&aY[i],&aZ[i]); - XYZToLAB(aX[i], aY[i], aZ[i], &l, &aA[i], &aB[i]); - r = powf(_get_red (data_b, i) / 255.0f, gamma); - g = powf(_get_green (data_b, i) / 255.0f, gamma); - b = powf(_get_blue (data_b, i) / 255.0f, gamma); - - AdobeRGBToXYZ(r,g,b,&bX[i],&bY[i],&bZ[i]); - XYZToLAB(bX[i], bY[i], bZ[i], &l, &bA[i], &bB[i]); - aLum[i] = aY[i] * luminance; - bLum[i] = bY[i] * luminance; - } - } - - la = lpyramid_create (aLum, w, h); - lb = lpyramid_create (bLum, w, h); - - num_one_degree_pixels = (float) (2 * tan(field_of_view * 0.5 * M_PI / 180) * 180 / M_PI); - pixels_per_degree = w / num_one_degree_pixels; - - num_pixels = 1; - adaptation_level = 0; - for (i = 0; i < MAX_PYR_LEVELS; i++) { - adaptation_level = i; - if (num_pixels > num_one_degree_pixels) break; - num_pixels *= 2; - } - - cpd[0] = 0.5f * pixels_per_degree; - for (i = 1; i < MAX_PYR_LEVELS; i++) cpd[i] = 0.5f * cpd[i - 1]; - csf_max = csf(3.248f, 100.0f); - - for (i = 0; i < MAX_PYR_LEVELS - 2; i++) F_freq[i] = csf_max / csf( cpd[i], 100.0f); - - pixels_failed = 0; - for (y = 0; y < h; y++) { - for (x = 0; x < w; x++) { - int index = x + y * w; - float contrast[MAX_PYR_LEVELS - 2]; - float F_mask[MAX_PYR_LEVELS - 2]; - float factor; - float delta; - float adapt; - bool pass; - float sum_contrast = 0; - for (i = 0; i < MAX_PYR_LEVELS - 2; i++) { - float n1 = fabsf(lpyramid_get_value (la,x,y,i) - lpyramid_get_value (la,x,y,i + 1)); - float n2 = fabsf(lpyramid_get_value (lb,x,y,i) - lpyramid_get_value (lb,x,y,i + 1)); - float numerator = (n1 > n2) ? n1 : n2; - float d1 = fabsf(lpyramid_get_value(la,x,y,i+2)); - float d2 = fabsf(lpyramid_get_value(lb,x,y,i+2)); - float denominator = (d1 > d2) ? d1 : d2; - if (denominator < 1e-5f) denominator = 1e-5f; - contrast[i] = numerator / denominator; - sum_contrast += contrast[i]; - } - if (sum_contrast < 1e-5) sum_contrast = 1e-5f; - adapt = lpyramid_get_value(la,x,y,adaptation_level) + lpyramid_get_value(lb,x,y,adaptation_level); - adapt *= 0.5f; - if (adapt < 1e-5) adapt = 1e-5f; - for (i = 0; i < MAX_PYR_LEVELS - 2; i++) { - F_mask[i] = mask(contrast[i] * csf(cpd[i], adapt)); - } - factor = 0; - for (i = 0; i < MAX_PYR_LEVELS - 2; i++) { - factor += contrast[i] * F_freq[i] * F_mask[i] / sum_contrast; - } - if (factor < 1) factor = 1; - if (factor > 10) factor = 10; - delta = fabsf(lpyramid_get_value(la,x,y,0) - lpyramid_get_value(lb,x,y,0)); - pass = true; - /* pure luminance test */ - if (delta > factor * tvi(adapt)) { - pass = false; - } else { - /* CIE delta E test with modifications */ - float color_scale = 1.0f; - float da = aA[index] - bA[index]; - float db = aB[index] - bB[index]; - float delta_e; - /* ramp down the color test in scotopic regions */ - if (adapt < 10.0f) { - color_scale = 1.0f - (10.0f - color_scale) / 10.0f; - color_scale = color_scale * color_scale; - } - da = da * da; - db = db * db; - delta_e = (da + db) * color_scale; - if (delta_e > factor) { - pass = false; - } - } - if (!pass) - pixels_failed++; - } - } - - free (aX); - free (aY); - free (aZ); - free (bX); - free (bY); - free (bZ); - free (aLum); - free (bLum); - lpyramid_destroy (la); - lpyramid_destroy (lb); - free (aA); - free (bA); - free (aB); - free (bB); - - return pixels_failed; -} diff --git a/test/pdiff/pdiff.h b/test/pdiff/pdiff.h deleted file mode 100644 index 30fec06..0000000 --- a/test/pdiff/pdiff.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - Copyright (C) 2006 Yangli Hector Yee - Copyright (C) 2006 Red Hat, Inc. - - This program is free software; you can redistribute it and/or modify it under the terms of the - GNU General Public License as published by the Free Software Foundation; either version 2 of the License, - or (at your option) any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; - without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along with this program; - if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA -*/ - -#ifndef _PDIFF_H -#define _PDIFF_H - -#include - -typedef int bool; -#ifndef true -#define true 1 -#endif -#ifndef false -#define false 0 -#endif - -/* Image comparison metric using Yee's method (and a cairo interface) - * References: A Perceptual Metric for Production Testing, Hector Yee, Journal of Graphics Tools 2004 - */ -int -pdiff_compare (cairo_surface_t *surface_a, - cairo_surface_t *surface_b, - double gamma, - double luminance, - double field_of_view); - -#endif diff --git a/test/pdiff/perceptualdiff.c b/test/pdiff/perceptualdiff.c deleted file mode 100644 index 5850dc9..0000000 --- a/test/pdiff/perceptualdiff.c +++ /dev/null @@ -1,101 +0,0 @@ -/* - PerceptualDiff - a program that compares two images using a perceptual metric - based on the paper : - A perceptual metric for production testing. Journal of graphics tools, 9(4):33-40, 2004, Hector Yee - Copyright (C) 2006 Yangli Hector Yee - - This program is free software; you can redistribute it and/or modify it under the terms of the - GNU General Public License as published by the Free Software Foundation; either version 2 of the License, - or (at your option) any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; - without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along with this program; - if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA -*/ - -#include -#include -#include -#include -#include "lpyramid.h" -#include "args.h" -#include "pdiff.h" - -static bool Yee_Compare(args_t *args) -{ - unsigned int width_a, height_a, stride_a; - unsigned char *data_a, *row_a; - uint32_t *pixel_a; - unsigned int width_b, height_b, stride_b; - unsigned char *data_b, *row_b; - uint32_t *pixel_b; - unsigned int x, y, pixels_failed; - bool identical = true; - - width_a = cairo_image_surface_get_width (args->surface_a); - height_a = cairo_image_surface_get_height (args->surface_a); - stride_a = cairo_image_surface_get_stride (args->surface_a); - data_a = cairo_image_surface_get_data (args->surface_a); - - width_b = cairo_image_surface_get_width (args->surface_b); - height_b = cairo_image_surface_get_height (args->surface_b); - stride_b = cairo_image_surface_get_stride (args->surface_b); - data_b = cairo_image_surface_get_data (args->surface_b); - - if ((width_a != width_b) || (height_a != height_b)) { - printf ("FAIL: Image dimensions do not match\n"); - return false; - } - - identical = true; - - for (y = 0; y < height_a; y++) { - row_a = data_a + y * stride_a; - row_b = data_b + y * stride_b; - pixel_a = (uint32_t *) row_a; - pixel_b = (uint32_t *) row_b; - for (x = 0; x < width_a; x++) { - if (*pixel_a != *pixel_b) { - identical = false; - } - pixel_a++; - pixel_b++; - } - } - if (identical) { - printf ("PASS: Images are binary identical\n"); - return true; - } - - pixels_failed = pdiff_compare (args->surface_a, args->surface_b, - args->Gamma, args->Luminance, - args->FieldOfView); - - if (pixels_failed < args->ThresholdPixels) { - printf ("PASS: Images are perceptually indistinguishable\n"); - return true; - } - - printf("FAIL: Images are visibly different\n" - "%d pixels are different\n", pixels_failed); - - return false; -} - -int main(int argc, char **argv) -{ - args_t args; - - args_init (&args); - - if (!args_parse (&args, argc, argv)) { - return -1; - } else { - if (args.Verbose) - args_print (&args); - } - return ! Yee_Compare(&args); -} diff --git a/test/pixman-downscale.c b/test/pixman-downscale.c deleted file mode 100644 index 6b653d2..0000000 --- a/test/pixman-downscale.c +++ /dev/null @@ -1,203 +0,0 @@ -/* - * Copyright © 2013 Samsung Electronics - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Bryce Harrington - */ - -/* This test exercises scaling a png image to smaller pixel dimensions - * - * Currently, this exercises several of pixman's scaling filters. - */ - -#include "cairo-test.h" - -#include -#include - -#include - -static const char png_filename[] = "quad-color.png"; - -/* Draw an image scaled down, with antialiasing disabled */ -static cairo_test_status_t -draw (cairo_t *cr, int width, int height, cairo_filter_t filter) -{ - const cairo_test_context_t *ctx = cairo_test_get_context (cr); - cairo_surface_t *image; - double x_scale, y_scale, scale; - - cairo_set_source_rgb (cr, 1, 1, 1); - image = cairo_test_create_surface_from_png (ctx, png_filename); - x_scale = width * 1.0 / cairo_image_surface_get_width (image); - y_scale = height * 1.0 / cairo_image_surface_get_height (image); - scale = x_scale < y_scale ? x_scale : y_scale; - - cairo_save (cr); - cairo_scale (cr, scale, scale); - cairo_set_source_surface (cr, image, 0, 0); - cairo_pattern_set_filter (cairo_get_source (cr), filter); - cairo_paint (cr); - cairo_restore (cr); - cairo_surface_destroy (image); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -draw_fast (cairo_t *cr, int width, int height) -{ - return draw (cr, width, height, CAIRO_FILTER_FAST); -} - -static cairo_test_status_t -draw_good (cairo_t *cr, int width, int height) -{ - return draw (cr, width, height, CAIRO_FILTER_GOOD); -} - -static cairo_test_status_t -draw_best (cairo_t *cr, int width, int height) -{ - return draw (cr, width, height, CAIRO_FILTER_BEST); -} - -static cairo_test_status_t -draw_nearest (cairo_t *cr, int width, int height) -{ - return draw (cr, width, height, CAIRO_FILTER_NEAREST); -} - -static cairo_test_status_t -draw_bilinear (cairo_t *cr, int width, int height) -{ - return draw (cr, width, height, CAIRO_FILTER_BILINEAR); -} - -CAIRO_TEST (pixman_downscale_fast_96, - "Tests scaling to equivalent size using the fast filter", - "image, transform, raster, downscale", /* keywords */ - NULL, /* requirements */ - 96, 96, - NULL, draw_fast) - -CAIRO_TEST (pixman_downscale_fast_95, - "Tests downscaling by a single pixel using the fast filter", - "image, transform, raster, downscale", /* keywords */ - NULL, /* requirements */ - 95, 95, - NULL, draw_fast) - -CAIRO_TEST (pixman_downscale_fast_24, - "Tests downscaling by an even multiple using the fast filter", - "image, transform, raster, downscale", /* keywords */ - NULL, /* requirements */ - 24, 24, - NULL, draw_fast) - - -CAIRO_TEST (pixman_downscale_good_96, - "Tests scaling to equivalent size using the good filter", - "image, transform, raster, downscale", /* keywords */ - NULL, /* requirements */ - 96, 96, - NULL, draw_good) - -CAIRO_TEST (pixman_downscale_good_95, - "Tests downscaling by a single pixel using the good filter", - "image, transform, raster, downscale", /* keywords */ - NULL, /* requirements */ - 95, 95, - NULL, draw_good) - -CAIRO_TEST (pixman_downscale_good_24, - "Tests downscaling by an even multiple using the good filter", - "image, transform, raster, downscale", /* keywords */ - NULL, /* requirements */ - 24, 24, - NULL, draw_good) - - -CAIRO_TEST (pixman_downscale_best_96, - "Tests scaling to equivalent size using the best filter", - "image, transform, raster, downscale", /* keywords */ - NULL, /* requirements */ - 96, 96, - NULL, draw_best) - -CAIRO_TEST (pixman_downscale_best_95, - "Tests downscaling by a single pixel using the best filter", - "image, transform, raster, downscale", /* keywords */ - NULL, /* requirements */ - 95, 95, - NULL, draw_best) - -CAIRO_TEST (pixman_downscale_best_24, - "Tests downscaling by an even multiple using the best filter", - "image, transform, raster, downscale", /* keywords */ - NULL, /* requirements */ - 24, 24, - NULL, draw_best) - - -CAIRO_TEST (pixman_downscale_nearest_96, - "Tests scaling to equivalent size using the nearest filter", - "image, transform, raster, downscale", /* keywords */ - NULL, /* requirements */ - 96, 96, - NULL, draw_nearest) - -CAIRO_TEST (pixman_downscale_nearest_95, - "Tests downscaling by a single pixel using the nearest filter", - "image, transform, raster, downscale", /* keywords */ - NULL, /* requirements */ - 95, 95, - NULL, draw_nearest) - -CAIRO_TEST (pixman_downscale_nearest_24, - "Tests downscaling by an even multiple using the nearest filter", - "image, transform, raster, downscale", /* keywords */ - NULL, /* requirements */ - 24, 24, - NULL, draw_nearest) - - -CAIRO_TEST (pixman_downscale_bilinear_96, - "Tests scaling to equivalent size using the bilinear filter", - "image, transform, raster, downscale", /* keywords */ - NULL, /* requirements */ - 96, 96, - NULL, draw_bilinear) - -CAIRO_TEST (pixman_downscale_bilinear_95, - "Tests downscaling by a single pixel using the bilinear filter", - "image, transform, raster, downscale", /* keywords */ - NULL, /* requirements */ - 95, 95, - NULL, draw_bilinear) - -CAIRO_TEST (pixman_downscale_bilinear_24, - "Tests downscaling by an even multiple using the bilinear filter", - "image, transform, raster, downscale", /* keywords */ - NULL, /* requirements */ - 24, 24, - NULL, draw_bilinear) diff --git a/test/pixman-rotate.c b/test/pixman-rotate.c deleted file mode 100644 index e0d0fc8..0000000 --- a/test/pixman-rotate.c +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright © 2007 Red Hat, Inc. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Kristian Høgsberg - */ - -#include "cairo-test.h" - -#include -#include -#include -#include - -#include - -#define WIDTH 32 -#define HEIGHT WIDTH - -#define IMAGE_WIDTH (3 * WIDTH) -#define IMAGE_HEIGHT IMAGE_WIDTH - -/* Draw the word cairo at NUM_TEXT different angles */ -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_t *stamp; - cairo_t *cr2; - - /* Draw a translucent rectangle for reference where the rotated - * image should be. */ - cairo_new_path (cr); - cairo_rectangle (cr, WIDTH, HEIGHT, WIDTH, HEIGHT); - cairo_set_source_rgba (cr, 1, 1, 0, 0.3); - cairo_fill (cr); - -#if 1 /* Set to 0 to generate reference image */ - cairo_translate (cr, 2 * WIDTH, 2 * HEIGHT); - cairo_rotate (cr, M_PI); -#else - cairo_translate (cr, WIDTH, HEIGHT); -#endif - - stamp = cairo_surface_create_similar (cairo_get_group_target (cr), - CAIRO_CONTENT_COLOR_ALPHA, - WIDTH, HEIGHT); - cr2 = cairo_create (stamp); - cairo_surface_destroy (stamp); - { - cairo_new_path (cr2); - cairo_rectangle (cr2, WIDTH / 4, HEIGHT / 4, WIDTH / 2, HEIGHT / 2); - cairo_set_source_rgba (cr2, 1, 0, 0, 0.8); - cairo_fill (cr2); - - cairo_rectangle (cr2, 0, 0, WIDTH, HEIGHT); - cairo_set_line_width (cr2, 2); - cairo_set_source_rgb (cr2, 0, 0, 0); - cairo_stroke (cr2); - } - cairo_set_source_surface (cr, cairo_get_target (cr2), 0, 0); - cairo_destroy (cr2); - - cairo_paint (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (pixman_rotate, - "Exposes pixman off-by-one error when rotating", - "image, transform", /* keywords */ - NULL, /* requirements */ - IMAGE_WIDTH, IMAGE_HEIGHT, - NULL, draw) diff --git a/test/png-flatten.c b/test/png-flatten.c deleted file mode 100644 index 2ce804e..0000000 --- a/test/png-flatten.c +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl Worth - */ - -#include - -#include - -int -main (int argc, char *argv[]) -{ - cairo_t *cr; - cairo_surface_t *argb, *rgb24; - cairo_status_t status; - const char *input, *output; - - if (argc != 3) { - fprintf (stderr, "usage: %s input.png output.png", argv[0]); - fprintf (stderr, "Loads a PNG image (potentially with alpha) and writes out a flattened (no alpha)\nPNG image by first blending over white.\n"); - return 1; - } - - input = argv[1]; - output = argv[2]; - - argb = cairo_image_surface_create_from_png (input); - status = cairo_surface_status (argb); - if (status) { - fprintf (stderr, "%s: Error: Failed to load %s: %s\n", - argv[0], input, cairo_status_to_string (status)); - return 1; - } - - rgb24 = cairo_image_surface_create (CAIRO_FORMAT_RGB24, - cairo_image_surface_get_width (argb), - cairo_image_surface_get_height (argb)); - - cr = cairo_create (rgb24); - - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); /* white */ - cairo_paint (cr); - - cairo_set_source_surface (cr, argb, 0, 0); - cairo_paint (cr); - - cairo_destroy (cr); - - status = cairo_surface_write_to_png (rgb24, output); - if (status) { - fprintf (stderr, "%s: Error: Failed to write %s: %s\n", - argv[0], output, cairo_status_to_string (status)); - return 1; - } - - return 0; -} diff --git a/test/png.c b/test/png.c deleted file mode 100644 index c01fbd7..0000000 --- a/test/png.c +++ /dev/null @@ -1,172 +0,0 @@ -/* - * Copyright © 2008 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -#include - -/* Test the idempotency of write_png->read_png */ - -#define RGB_MASK 0x00ffffff -#define BASENAME "png.out" - -static cairo_bool_t -image_surface_equals (cairo_surface_t *A, cairo_surface_t *B) -{ - if (cairo_image_surface_get_format (A) != - cairo_image_surface_get_format (B)) - return 0; - - if (cairo_image_surface_get_width (A) != - cairo_image_surface_get_width (B)) - return 0; - - if (cairo_image_surface_get_height (A) != - cairo_image_surface_get_height (B)) - return 0; - - return 1; -} - -static const char * -format_to_string (cairo_format_t format) -{ - switch (format) { - case CAIRO_FORMAT_A1: return "a1"; - case CAIRO_FORMAT_A8: return "a8"; - case CAIRO_FORMAT_RGB16_565: return "rgb16"; - case CAIRO_FORMAT_RGB24: return "rgb24"; - case CAIRO_FORMAT_RGB30: return "rgb30"; - case CAIRO_FORMAT_ARGB32: return "argb32"; - case CAIRO_FORMAT_INVALID: - default: return "???"; - } -} - -static void -print_surface (const cairo_test_context_t *ctx, cairo_surface_t *surface) -{ - cairo_test_log (ctx, - "%s (%dx%d)\n", - format_to_string (cairo_image_surface_get_format (surface)), - cairo_image_surface_get_width (surface), - cairo_image_surface_get_height (surface)); -} - -static cairo_test_status_t -preamble (cairo_test_context_t *ctx) -{ - cairo_surface_t *surface0, *surface1; - cairo_status_t status; - uint32_t argb32 = 0xdeadbede; - char *filename; - const char *path = cairo_test_mkdir (CAIRO_TEST_OUTPUT_DIR) ? CAIRO_TEST_OUTPUT_DIR : "."; - - xasprintf (&filename, "%s/%s.png", path, BASENAME); - surface0 = cairo_image_surface_create_for_data ((unsigned char *) &argb32, - CAIRO_FORMAT_ARGB32, - 1, 1, 4); - status = cairo_surface_write_to_png (surface0, filename); - if (status) { - cairo_test_log (ctx, "Error writing '%s': %s\n", - filename, cairo_status_to_string (status)); - - cairo_surface_destroy (surface0); - free (filename); - return cairo_test_status_from_status (ctx, status); - } - surface1 = cairo_image_surface_create_from_png (filename); - status = cairo_surface_status (surface1); - if (status) { - cairo_test_log (ctx, "Error reading '%s': %s\n", - filename, cairo_status_to_string (status)); - - cairo_surface_destroy (surface1); - cairo_surface_destroy (surface0); - free (filename); - return cairo_test_status_from_status (ctx, status); - } - - if (! image_surface_equals (surface0, surface1)) { - cairo_test_log (ctx, "Error surface mismatch.\n"); - cairo_test_log (ctx, "to png: "); print_surface (ctx, surface0); - cairo_test_log (ctx, "from png: "); print_surface (ctx, surface1); - - cairo_surface_destroy (surface0); - cairo_surface_destroy (surface1); - free (filename); - return CAIRO_TEST_FAILURE; - } - assert (*(uint32_t *) cairo_image_surface_get_data (surface1) == argb32); - - cairo_surface_destroy (surface0); - cairo_surface_destroy (surface1); - - surface0 = cairo_image_surface_create_for_data ((unsigned char *) &argb32, - CAIRO_FORMAT_RGB24, - 1, 1, 4); - status = cairo_surface_write_to_png (surface0, filename); - if (status) { - cairo_test_log (ctx, "Error writing '%s': %s\n", - filename, cairo_status_to_string (status)); - cairo_surface_destroy (surface0); - return cairo_test_status_from_status (ctx, status); - } - surface1 = cairo_image_surface_create_from_png (filename); - status = cairo_surface_status (surface1); - free (filename); - if (status) { - cairo_test_log (ctx, "Error reading '%s': %s\n", - filename, cairo_status_to_string (status)); - - cairo_surface_destroy (surface1); - cairo_surface_destroy (surface0); - return cairo_test_status_from_status (ctx, status); - } - - if (! image_surface_equals (surface0, surface1)) { - cairo_test_log (ctx, "Error surface mismatch.\n"); - cairo_test_log (ctx, "to png: "); print_surface (ctx, surface0); - cairo_test_log (ctx, "from png: "); print_surface (ctx, surface1); - - cairo_surface_destroy (surface0); - cairo_surface_destroy (surface1); - return CAIRO_TEST_FAILURE; - } - assert ((*(uint32_t *) cairo_image_surface_get_data (surface1) & RGB_MASK) - == (argb32 & RGB_MASK)); - - cairo_surface_destroy (surface0); - cairo_surface_destroy (surface1); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (png, - "Check that the png export/import is idempotent.", - "png, api", /* keywords */ - NULL, /* requirements */ - 0, 0, - preamble, NULL) diff --git a/test/png.png b/test/png.png deleted file mode 100644 index 56c428e..0000000 Binary files a/test/png.png and /dev/null differ diff --git a/test/ps-eps.c b/test/ps-eps.c deleted file mode 100644 index de1248d..0000000 --- a/test/ps-eps.c +++ /dev/null @@ -1,354 +0,0 @@ -/* - * Copyright © 2006 Red Hat, Inc. - * Copyright © 2009 Adrian Johnson - * Copyright © 2008 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - * Adrian Johnson - * Chris Wilson - */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include -#include -#include -#include -#include - -#ifdef HAVE_UNISTD_H -#include -#include -#endif -#if HAVE_SYS_STAT_H -#include -#endif - -#include "cairo-test.h" -#include "buffer-diff.h" - -/* Test EPS output. - */ - -#define WIDTH 595 -#define HEIGHT 842 - -/* Reference Bounding Box */ -#define LLX 95 -#define LLY 687 -#define URX 155 -#define URY 747 - -static void -_xunlink (const cairo_test_context_t *ctx, const char *pathname) -{ - if (unlink (pathname) < 0 && errno != ENOENT) { - cairo_test_log (ctx, "Error: Cannot remove %s: %s\n", - pathname, strerror (errno)); - exit (1); - } -} - -static cairo_bool_t -check_result (cairo_test_context_t *ctx, - const cairo_boilerplate_target_t *target, - const char *test_name, - const char *base_name, - cairo_surface_t *surface) -{ - const char *format; - char *ref_name; - char *png_name; - char *diff_name; - cairo_surface_t *test_image, *ref_image, *diff_image; - buffer_diff_result_t result; - cairo_status_t status; - cairo_bool_t ret; - - /* XXX log target, OUTPUT, REFERENCE, DIFFERENCE for index.html */ - - if (target->finish_surface != NULL) { - status = target->finish_surface (surface); - if (status) { - cairo_test_log (ctx, "Error: Failed to finish surface: %s\n", - cairo_status_to_string (status)); - cairo_surface_destroy (surface); - return FALSE; - } - } - - xasprintf (&png_name, "%s.out.png", base_name); - xasprintf (&diff_name, "%s.diff.png", base_name); - - test_image = target->get_image_surface (surface, 0, WIDTH, HEIGHT); - if (cairo_surface_status (test_image)) { - cairo_test_log (ctx, "Error: Failed to extract page: %s\n", - cairo_status_to_string (cairo_surface_status (test_image))); - cairo_surface_destroy (test_image); - free (png_name); - free (diff_name); - return FALSE; - } - - _xunlink (ctx, png_name); - status = cairo_surface_write_to_png (test_image, png_name); - if (status) { - cairo_test_log (ctx, "Error: Failed to write output image: %s\n", - cairo_status_to_string (status)); - cairo_surface_destroy (test_image); - free (png_name); - free (diff_name); - return FALSE; - } - - format = cairo_boilerplate_content_name (target->content); - ref_name = cairo_test_reference_filename (ctx, - base_name, - test_name, - target->name, - target->basename, - format, - CAIRO_TEST_REF_SUFFIX, - CAIRO_TEST_PNG_EXTENSION); - if (ref_name == NULL) { - cairo_test_log (ctx, "Error: Cannot find reference image for %s\n", - base_name); - cairo_surface_destroy (test_image); - free (png_name); - free (diff_name); - return FALSE; - } - - ref_image = cairo_test_get_reference_image (ctx, ref_name, - target->content == CAIRO_TEST_CONTENT_COLOR_ALPHA_FLATTENED); - if (cairo_surface_status (ref_image)) { - cairo_test_log (ctx, "Error: Cannot open reference image for %s: %s\n", - ref_name, - cairo_status_to_string (cairo_surface_status (ref_image))); - cairo_surface_destroy (ref_image); - cairo_surface_destroy (test_image); - free (png_name); - free (diff_name); - free (ref_name); - return FALSE; - } - - diff_image = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, - WIDTH, HEIGHT); - - ret = TRUE; - status = image_diff (ctx, - test_image, ref_image, diff_image, - &result); - _xunlink (ctx, diff_name); - if (status) { - cairo_test_log (ctx, "Error: Failed to compare images: %s\n", - cairo_status_to_string (status)); - ret = FALSE; - } else if (image_diff_is_failure (&result, target->error_tolerance)) - { - ret = FALSE; - - status = cairo_surface_write_to_png (diff_image, diff_name); - if (status) { - cairo_test_log (ctx, "Error: Failed to write differences image: %s\n", - cairo_status_to_string (status)); - } - } - - cairo_surface_destroy (test_image); - cairo_surface_destroy (diff_image); - free (png_name); - free (diff_name); - free (ref_name); - - return ret; -} - - -#define DOCUMENT_BBOX "%%BoundingBox:" -#define PAGE_BBOX "%%PageBoundingBox:" - -static cairo_bool_t -check_bbox (cairo_test_context_t *ctx, - const char *base_name) -{ - char *filename; - FILE *f; - char buf[256]; - cairo_bool_t bbox_pass, page_bbox_pass; - int llx, lly, urx, ury; - int ret; - - xasprintf (&filename, "%s.out.ps", base_name); - f = fopen (filename, "r"); - if (!f) { - cairo_test_log (ctx, "Error: Cannot open EPS output: %s\n", - base_name); - free (filename); - return FALSE; - } - - bbox_pass = FALSE; - page_bbox_pass = FALSE; - while (!feof(f)) { - if (fgets (buf, sizeof(buf), f) == (char *)EOF) { - cairo_test_log (ctx, "Error: Unexpected EOF in %s\n", - filename); - break; - } - - if (strncmp (buf, DOCUMENT_BBOX, strlen (DOCUMENT_BBOX)) == 0) { - ret = sscanf (buf+strlen (DOCUMENT_BBOX), "%d %d %d %d", &llx, &lly, &urx, &ury); - if (ret == 4 && llx == LLX && lly == LLY && urx == URX && ury == URY) - bbox_pass = TRUE; - } - - if (strncmp (buf, PAGE_BBOX, strlen (PAGE_BBOX)) == 0) { - ret = sscanf (buf+strlen (PAGE_BBOX), "%d %d %d %d", &llx, &lly, &urx, &ury); - if (ret == 4 && llx == LLX && lly == LLY && urx == URX && ury == URY) - page_bbox_pass = TRUE; - } - } - fclose (f); - - if (!bbox_pass || !page_bbox_pass) { - cairo_test_log (ctx, "Error: EPS Bounding Box does not match reference Bounding Box\n"); - return FALSE; - } - - free (filename); - - return TRUE; -} - -static cairo_test_status_t -preamble (cairo_test_context_t *ctx) -{ - cairo_t *cr; - cairo_test_status_t ret = CAIRO_TEST_UNTESTED; - unsigned int i; - const char *path = cairo_test_mkdir (CAIRO_TEST_OUTPUT_DIR) ? CAIRO_TEST_OUTPUT_DIR : "."; - - for (i = 0; i < ctx->num_targets; i++) { - const cairo_boilerplate_target_t *target = ctx->targets_to_test[i]; - cairo_surface_t *surface = NULL; - char *base_name; - void *closure; - const char *format; - cairo_status_t status; - cairo_bool_t pass; - char *test_name; - - if (! cairo_test_is_target_enabled (ctx, target->name)) - continue; - - format = cairo_boilerplate_content_name (target->content); - xasprintf (&test_name, "ps-eps"); - xasprintf (&base_name, "%s/ps-eps.%s.%s", - path, target->name, format); - - surface = (target->create_surface) (base_name, - target->content, - WIDTH, HEIGHT, - WIDTH, HEIGHT, - CAIRO_BOILERPLATE_MODE_TEST, - &closure); - - if (surface == NULL) { - free (base_name); - free (test_name); - continue; - } - - cairo_ps_surface_set_eps (surface, TRUE); - if (!cairo_ps_surface_get_eps (surface)) { - cairo_surface_destroy (surface); - if (target->cleanup) - target->cleanup (closure); - - free (base_name); - free (test_name); - continue; - } - - cairo_test_log (ctx, - "Testing ps-eps with %s target\n", - target->name); - printf ("%s:\t", base_name); - fflush (stdout); - - cairo_surface_set_device_offset (surface, 25, 25); - cr = cairo_create (surface); - - cairo_new_sub_path (cr); - cairo_arc (cr, 100, 100, 25, 0, 2*M_PI); - cairo_set_line_width (cr, 10); - cairo_stroke (cr); - - cairo_show_page (cr); - - status = cairo_status (cr); - cairo_destroy (cr); - - if (status) { - cairo_test_log (ctx, "Error: Failed to create target surface: %s\n", - cairo_status_to_string (status)); - pass = FALSE; - } else { - pass = TRUE; - /* extract the image and compare it to our reference */ - if (! check_result (ctx, target, test_name, base_name, surface)) - pass = FALSE; - - /* check the bounding box of the EPS file and compare it to our reference */ - if (! check_bbox (ctx, base_name)) - pass = FALSE; - } - cairo_surface_destroy (surface); - if (target->cleanup) - target->cleanup (closure); - - free (base_name); - free (test_name); - - if (pass) { - printf ("PASS\n"); - ret = CAIRO_TEST_SUCCESS; - } else { - printf ("FAIL\n"); - ret = CAIRO_TEST_FAILURE; - } - fflush (stdout); - } - - return ret; -} - -CAIRO_TEST (ps_eps, - "Check EPS output from PS surface", - "ps, api", /* keywords */ - NULL, /* requirements */ - 0, 0, - preamble, NULL) diff --git a/test/ps-features.c b/test/ps-features.c deleted file mode 100644 index d1abf91..0000000 --- a/test/ps-features.c +++ /dev/null @@ -1,166 +0,0 @@ -/* - * Copyright © 2006 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" - -#include -#include -#include - -/* This test exists to test the various features of cairo-ps.h. - * - * Currently, this test exercises the following function calls: - * - * cairo_ps_surface_set_size - * cairo_ps_surface_dsc_comment - * cairo_ps_surface_dsc_begin_setup - * cairo_ps_surface_dsc_begin_page_setup - */ - -#define INCHES_TO_POINTS(in) ((in) * 72.0) -#define MM_TO_POINTS(mm) ((mm) / 25.4 * 72.0) -#define TEXT_SIZE 12 -#define BASENAME "ps-features.out" - -static struct { - const char *page_size; - const char *page_size_alias; - const char *orientation; - double width_in_points; - double height_in_points; -} pages[] = { - {"na_letter_8.5x11in", "letter", "portrait", - INCHES_TO_POINTS(8.5), INCHES_TO_POINTS(11)}, - {"na_letter_8.5x11in", "letter", "landscape", - INCHES_TO_POINTS(11), INCHES_TO_POINTS(8.5)}, - {"iso_a4_210x297mm", "a4", "portrait", - MM_TO_POINTS(210), MM_TO_POINTS(297)}, - {"iso_a4_210x297mm", "a4", "landscape", - MM_TO_POINTS(297), MM_TO_POINTS(210)}, - {"iso_a5_148x210mm", "a5", "portrait", - MM_TO_POINTS(148), MM_TO_POINTS(210)}, - {"iso_a5_148x210mm", "a5", "landscape", - MM_TO_POINTS(210), MM_TO_POINTS(148)}, - {"iso_a6_105x148mm", "a6", "portrait", - MM_TO_POINTS(105), MM_TO_POINTS(148)}, - {"iso_a6_105x148mm", "a6", "landscape", - MM_TO_POINTS(148), MM_TO_POINTS(105)}, - {"iso_a7_74x105mm", "a7", "portrait", - MM_TO_POINTS(74), MM_TO_POINTS(105)}, - {"iso_a7_74x105mm", "a7", "landscape", - MM_TO_POINTS(105), MM_TO_POINTS(74)}, - {"iso_a8_52x74mm", "a8", "portrait", - MM_TO_POINTS(52), MM_TO_POINTS(74)}, - {"iso_a8_52x74mm", "a8", "landscape", - MM_TO_POINTS(74), MM_TO_POINTS(52)}, - {"iso_a9_37x52mm", "a9", "portrait", - MM_TO_POINTS(37), MM_TO_POINTS(52)}, - {"iso_a9_37x52mm", "a9", "landscape", - MM_TO_POINTS(52), MM_TO_POINTS(37)}, - {"iso_a10_26x37mm", "a10", "portrait", - MM_TO_POINTS(26), MM_TO_POINTS(37)}, - {"iso_a10_26x37mm", "a10", "landscape", - MM_TO_POINTS(37), MM_TO_POINTS(26)} -}; - -static cairo_test_status_t -preamble (cairo_test_context_t *ctx) -{ - cairo_surface_t *surface; - cairo_t *cr; - cairo_status_t status; - size_t i; - char dsc[255]; - char *filename; - const char *path = cairo_test_mkdir (CAIRO_TEST_OUTPUT_DIR) ? CAIRO_TEST_OUTPUT_DIR : "."; - - if (! (cairo_test_is_target_enabled (ctx, "ps2") || - cairo_test_is_target_enabled (ctx, "ps3"))) - { - return CAIRO_TEST_UNTESTED; - } - - xasprintf (&filename, "%s/%s.ps", path, BASENAME); - /* We demonstrate that the initial size doesn't matter (we're - * passing 0,0), if we use cairo_ps_surface_set_size on the first - * page. */ - surface = cairo_ps_surface_create (filename, 0, 0); - - cairo_ps_surface_dsc_comment (surface, "%%Title: ps-features"); - cairo_ps_surface_dsc_comment (surface, "%%Copyright: Copyright (C) 2006 Red Hat, Inc."); - - cairo_ps_surface_dsc_begin_setup (surface); - cairo_ps_surface_dsc_comment (surface, "%%IncludeFeature: *PageSize letter"); - cairo_ps_surface_dsc_comment (surface, "%%IncludeFeature: *MediaColor White"); - - cr = cairo_create (surface); - - cairo_select_font_face (cr, CAIRO_TEST_FONT_FAMILY " Sans", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - cairo_set_font_size (cr, TEXT_SIZE); - - for (i = 0; i < ARRAY_LENGTH (pages); i++) { - cairo_ps_surface_set_size (surface, - pages[i].width_in_points, - pages[i].height_in_points); - cairo_ps_surface_dsc_begin_page_setup (surface); - snprintf (dsc, 255, "%%IncludeFeature: *PageSize %s", pages[i].page_size_alias); - cairo_ps_surface_dsc_comment (surface, dsc); - if (i % 2) { - snprintf (dsc, 255, "%%IncludeFeature: *MediaType Glossy"); - cairo_ps_surface_dsc_comment (surface, dsc); - } - - cairo_move_to (cr, TEXT_SIZE, TEXT_SIZE); - cairo_show_text (cr, pages[i].page_size); - cairo_show_text (cr, " - "); - cairo_show_text (cr, pages[i].orientation); - cairo_show_page (cr); - } - - status = cairo_status (cr); - - cairo_destroy (cr); - cairo_surface_destroy (surface); - - if (status) { - cairo_test_log (ctx, "Failed to create ps surface for file %s: %s\n", - filename, cairo_status_to_string (status)); - free (filename); - return CAIRO_TEST_FAILURE; - } - - printf ("ps-features: Please check %s to ensure it looks/prints correctly.\n", filename); - free (filename); - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (ps_features, - "Check PS specific API", - "ps, api", /* keywords */ - NULL, /* requirements */ - 0, 0, - preamble, NULL) diff --git a/test/ps-surface-source.c b/test/ps-surface-source.c deleted file mode 100644 index 16c6776..0000000 --- a/test/ps-surface-source.c +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright © 2008 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" -#include - -#include "surface-source.c" - -#define BASENAME "ps-surface-source.out" - -static cairo_surface_t * -create_source_surface (int size) -{ - cairo_surface_t *surface; - char *filename; - const char *path = cairo_test_mkdir (CAIRO_TEST_OUTPUT_DIR) ? CAIRO_TEST_OUTPUT_DIR : "."; - - xasprintf (&filename, "%s/%s.ps", path, BASENAME); - surface = cairo_ps_surface_create (filename, size, size); - cairo_surface_set_fallback_resolution (surface, 72., 72.); - free (filename); - - return surface; -} - -CAIRO_TEST (ps_surface_source, - "Test using a PS surface as the source", - "source", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - preamble, draw) diff --git a/test/ps2png.c b/test/ps2png.c deleted file mode 100644 index cf98aed..0000000 --- a/test/ps2png.c +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Copyright © 2008 Carlos Garcia Campos - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Carlos Garcia Campos - */ - -#include -#include -#include -#include - -#define FAIL(msg) \ - do { fprintf (stderr, "FAIL: %s\n", msg); exit (-1); } while (0) - -static const char * -_spectre_render_page (const char *filename, - const char *page_label, - cairo_surface_t **surface_out) -{ - static const cairo_user_data_key_t key; - - SpectreDocument *document; - SpectreStatus status; - int width, height, stride; - unsigned char *pixels; - cairo_surface_t *surface; - - document = spectre_document_new (); - spectre_document_load (document, filename); - status = spectre_document_status (document); - if (status) { - spectre_document_free (document); - return spectre_status_to_string (status); - } - - if (page_label) { - SpectrePage *page; - SpectreRenderContext *rc; - - page = spectre_document_get_page_by_label (document, page_label); - spectre_document_free (document); - if (page == NULL) - return "page not found"; - - spectre_page_get_size (page, &width, &height); - rc = spectre_render_context_new (); - spectre_render_context_set_page_size (rc, width, height); - spectre_page_render (page, rc, &pixels, &stride); - spectre_render_context_free (rc); - status = spectre_page_status (page); - spectre_page_free (page); - if (status) { - free (pixels); - return spectre_status_to_string (status); - } - } else { - spectre_document_get_page_size (document, &width, &height); - spectre_document_render (document, &pixels, &stride); - spectre_document_free (document); - } - - surface = cairo_image_surface_create_for_data (pixels, - CAIRO_FORMAT_RGB24, - width, height, - stride); - cairo_surface_set_user_data (surface, &key, - pixels, (cairo_destroy_func_t) free); - *surface_out = surface; - return NULL; -} - -int main -(int argc, char *argv[]) -{ - const char *err; - cairo_surface_t *surface = NULL; /* silence compiler warning */ - cairo_status_t status; - - if (argc < 3 || argc > 4) - FAIL ("usage: ps2png input_file.ps output_file.png [page]"); - - err = _spectre_render_page (argv[1], argv[3], &surface); - if (err != NULL) - FAIL (err); - - status = cairo_surface_write_to_png (surface, argv[2]); - cairo_surface_destroy (surface); - - if (status != CAIRO_STATUS_SUCCESS) - FAIL (cairo_status_to_string (status)); - - return 0; -} diff --git a/test/pthread-same-source.c b/test/pthread-same-source.c deleted file mode 100644 index 2b26d18..0000000 --- a/test/pthread-same-source.c +++ /dev/null @@ -1,192 +0,0 @@ -/* - * Copyright 2009 Benjamin Otte - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Benjamin Otte - */ - -#define GENERATE_REFERENCE 0 - -#include "cairo-test.h" -#if !GENERATE_REFERENCE -#include -#endif - -#define N_THREADS 8 - -#define WIDTH 64 -#define HEIGHT 8 - -typedef struct { - cairo_surface_t *target; - cairo_surface_t *source; - int id; -} thread_data_t; - -static void * -draw_thread (void *arg) -{ - thread_data_t *thread_data = arg; - cairo_surface_t *surface; - cairo_pattern_t *pattern; - cairo_matrix_t pattern_matrix = { 2, 0, 0, 2, 0, 0 }; - cairo_t *cr; - int x, y; - - cr = cairo_create (thread_data->target); - cairo_surface_destroy (thread_data->target); - - pattern = cairo_pattern_create_for_surface (thread_data->source); - cairo_surface_destroy (thread_data->source); - cairo_pattern_set_extend (pattern, thread_data->id % 4); - cairo_pattern_set_filter (pattern, thread_data->id >= 4 ? CAIRO_FILTER_BILINEAR : CAIRO_FILTER_NEAREST); - cairo_pattern_set_matrix (pattern, &pattern_matrix); - - for (y = 0; y < HEIGHT; y++) { - for (x = 0; x < WIDTH; x++) { - cairo_save (cr); - cairo_translate (cr, 4 * x + 1, 4 * y + 1); - cairo_rectangle (cr, 0, 0, 2, 2); - cairo_set_source (cr, pattern); - cairo_fill (cr); - cairo_restore (cr); - } - } - cairo_pattern_destroy (pattern); - - surface = cairo_surface_reference (cairo_get_target (cr)); - cairo_destroy (cr); - - return surface; -} - -static cairo_surface_t * -create_source (cairo_surface_t *similar) -{ - cairo_surface_t *source; - cairo_t *cr; - double colors[4][3] = { - { 0.75, 0, 0 }, - { 0, 0.75, 0 }, - { 0, 0, 0.75 }, - { 0.75, 0.75, 0 } - }; - int i; - - source = cairo_surface_create_similar (similar, - CAIRO_CONTENT_COLOR_ALPHA, - 2, 2); - - cr = cairo_create (source); - cairo_surface_destroy (source); - - for (i = 0; i < 4; i++) { - cairo_set_source_rgb (cr, colors[i][0], colors[i][1], colors[i][2]); - cairo_rectangle (cr, i % 2, i / 2, 1, 1); - cairo_fill (cr); - } - - source = cairo_surface_reference (cairo_get_target (cr)); - cairo_destroy (cr); - - return source; -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ -#if !GENERATE_REFERENCE - pthread_t threads[N_THREADS]; -#endif - thread_data_t thread_data[N_THREADS]; - cairo_test_status_t test_status = CAIRO_TEST_SUCCESS; - cairo_surface_t *source; - cairo_status_t status; - int i; - - source = create_source (cairo_get_target (cr)); - status = cairo_surface_status (source); - if (status) { - cairo_surface_destroy (source); - return cairo_test_status_from_status (cairo_test_get_context (cr), - status); - } - - cairo_set_source_rgb (cr, 0.5, 0.5, 0.5); - cairo_paint (cr); - - for (i = 0; i < N_THREADS; i++) { - thread_data[i].target = cairo_surface_create_similar (cairo_get_target (cr), - CAIRO_CONTENT_COLOR_ALPHA, - 4 * WIDTH, 4 * HEIGHT); - thread_data[i].source = cairo_surface_reference (source); - thread_data[i].id = i; -#if !GENERATE_REFERENCE - if (pthread_create (&threads[i], NULL, draw_thread, &thread_data[i]) != 0) { - threads[i] = pthread_self (); /* to indicate error */ - cairo_surface_destroy (thread_data[i].target); - cairo_surface_destroy (thread_data[i].source); - test_status = CAIRO_TEST_FAILURE; - break; - } -#else - { - cairo_surface_t *surface = draw_thread(&thread_data[i]); - cairo_set_source_surface (cr, surface, 0, 0); - cairo_surface_destroy (surface); - cairo_paint (cr); - - cairo_translate (cr, 0, 4 * HEIGHT); - } -#endif - } - - cairo_surface_destroy (source); - -#if !GENERATE_REFERENCE - for (i = 0; i < N_THREADS; i++) { - void *surface; - - if (pthread_equal (threads[i], pthread_self ())) - break; - - if (pthread_join (threads[i], &surface) == 0) { - cairo_set_source_surface (cr, surface, 0, 0); - cairo_surface_destroy (surface); - cairo_paint (cr); - - cairo_translate (cr, 0, 4 * HEIGHT); - } else { - test_status = CAIRO_TEST_FAILURE; - } - } -#endif - - return test_status; -} - -CAIRO_TEST (pthread_same_source, - "Use the same source for drawing in different threads", - "threads", /* keywords */ - NULL, /* requirements */ - 4 * WIDTH, 4 * HEIGHT * N_THREADS, - NULL, draw) diff --git a/test/pthread-show-text.c b/test/pthread-show-text.c deleted file mode 100644 index 0e070b7..0000000 --- a/test/pthread-show-text.c +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - */ - -/* Test case for bug #4299: - - Assertion fails in "cairo-font.c" when using multithreads - https://bugs.freedesktop.org/show_bug.cgi?id=4299 -*/ - -#include "cairo-test.h" - -#include -#include -#include - -#define N_THREADS 8 -#define NUM_ITERATIONS 40 - -#define WIDTH 400 -#define HEIGHT 42 - -typedef struct { - cairo_surface_t *target; - int id; -} thread_data_t; - -static void * -draw_thread (void *arg) -{ - const char *text = "Hello world. "; - thread_data_t *thread_data = arg; - cairo_surface_t *surface; - cairo_font_extents_t extents; - cairo_t *cr; - int i; - - cr = cairo_create (thread_data->target); - cairo_surface_destroy (thread_data->target); - - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - cairo_set_source_rgb (cr, 0, 0, 0); - - cairo_select_font_face (cr, "serif", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - cairo_set_font_size (cr, NUM_ITERATIONS); - cairo_font_extents (cr, &extents); - - cairo_move_to (cr, 1, HEIGHT - extents.descent - 1); - - for (i = 0; i < NUM_ITERATIONS; i++) { - char buf[2]; - - cairo_select_font_face (cr, "serif", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - cairo_set_font_size (cr, i); - - buf[0] = text[i%strlen(text)]; - buf[1] = '\0'; - cairo_show_text (cr, buf); - } - - surface = cairo_surface_reference (cairo_get_target (cr)); - cairo_destroy (cr); - - return surface; -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - pthread_t threads[N_THREADS]; - thread_data_t thread_data[N_THREADS]; - cairo_test_status_t test_status = CAIRO_TEST_SUCCESS; - int i; - - for (i = 0; i < N_THREADS; i++) { - thread_data[i].target = cairo_surface_create_similar (cairo_get_target (cr), - cairo_surface_get_content (cairo_get_target (cr)), - WIDTH, HEIGHT); - thread_data[i].id = i; - if (pthread_create (&threads[i], NULL, draw_thread, &thread_data[i]) != 0) { - threads[i] = pthread_self (); /* to indicate error */ - cairo_surface_destroy (thread_data[i].target); - test_status = CAIRO_TEST_FAILURE; - break; - } - } - - cairo_set_source_rgb (cr, 0.5, 0.5, 0.5); - cairo_paint (cr); - - for (i = 0; i < N_THREADS; i++) { - void *surface; - - if (pthread_equal (threads[i], pthread_self ())) - break; - - if (pthread_join (threads[i], &surface) == 0) { - cairo_set_source_surface (cr, surface, 0, 0); - cairo_surface_destroy (surface); - cairo_paint (cr); - - cairo_translate (cr, 0, HEIGHT); - } else { - test_status = CAIRO_TEST_FAILURE; - } - } - - return test_status; -} - -CAIRO_TEST (pthread_show_text, - "Concurrent stress test of the cairo_show_text().", - "thread, text", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT * N_THREADS, - NULL, draw) diff --git a/test/pthread-similar.c b/test/pthread-similar.c deleted file mode 100644 index a5f5e3b..0000000 --- a/test/pthread-similar.c +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Copyright 2009 Benjamin Otte - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Benjamin Otte - */ - -#include "cairo-test.h" -#include - -#define N_THREADS 8 - -#define WIDTH 64 -#define HEIGHT 8 - -static void * -draw_thread (void *arg) -{ - cairo_surface_t *surface = arg; - cairo_t *cr; - int x, y; - - cr = cairo_create (surface); - cairo_surface_destroy (surface); - - for (y = 0; y < HEIGHT; y++) { - for (x = 0; x < WIDTH; x++) { - cairo_rectangle (cr, x, y, 1, 1); - cairo_set_source_rgba (cr, 0, 0.75, 0.75, (double) x / WIDTH); - cairo_fill (cr); - } - } - - surface = cairo_surface_reference (cairo_get_target (cr)); - cairo_destroy (cr); - - return surface; -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - pthread_t threads[N_THREADS]; - cairo_test_status_t test_status = CAIRO_TEST_SUCCESS; - int i; - - for (i = 0; i < N_THREADS; i++) { - cairo_surface_t *surface; - - surface = cairo_surface_create_similar (cairo_get_target (cr), - CAIRO_CONTENT_COLOR, - WIDTH, HEIGHT); - if (pthread_create (&threads[i], NULL, draw_thread, surface) != 0) { - threads[i] = pthread_self (); - test_status = cairo_test_status_from_status (cairo_test_get_context (cr), - cairo_surface_status (surface)); - cairo_surface_destroy (surface); - break; - } - } - - for (i = 0; i < N_THREADS; i++) { - void *surface; - - if (pthread_equal (threads[i], pthread_self ())) - break; - - if (pthread_join (threads[i], &surface) == 0) { - cairo_set_source_surface (cr, surface, 0, 0); - cairo_surface_destroy (surface); - cairo_paint (cr); - - cairo_translate (cr, 0, HEIGHT); - } else { - test_status = CAIRO_TEST_FAILURE; - } - } - - return test_status; -} - -CAIRO_TEST (pthread_similar, - "Draw lots of 1x1 rectangles on similar surfaces in lots of threads", - "threads", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT * N_THREADS, - NULL, draw) diff --git a/test/push-group-color.c b/test/push-group-color.c deleted file mode 100644 index 1bc5bca..0000000 --- a/test/push-group-color.c +++ /dev/null @@ -1,141 +0,0 @@ -/* - * Copyright © 2005 Mozilla Corporation - * Copyright © 2009 Intel Corporation - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Mozilla Corporation not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Mozilla Corporation makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * MOZILLA CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL MOZILLA CORPORATION BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Vladimir Vukicevic - * Chris Wilson - */ - -#include "cairo-test.h" - -#define UNIT_SIZE 100 -#define PAD 5 -#define INNER_PAD 10 - -#define WIDTH (UNIT_SIZE + PAD) + PAD -#define HEIGHT (UNIT_SIZE + PAD) + PAD - -static cairo_pattern_t * -argb32_source (void) -{ - cairo_surface_t *surface; - cairo_pattern_t *pattern; - cairo_t *cr; - - surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 16, 16); - cr = cairo_create (surface); - cairo_surface_destroy (surface); - - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_rectangle (cr, 8, 0, 8, 8); - cairo_fill (cr); - - cairo_set_source_rgb (cr, 0, 1, 0); - cairo_rectangle (cr, 0, 8, 8, 8); - cairo_fill (cr); - - cairo_set_source_rgb (cr, 0, 0, 1); - cairo_rectangle (cr, 8, 8, 8, 8); - cairo_fill (cr); - - pattern = cairo_pattern_create_for_surface (cairo_get_target (cr)); - cairo_destroy (cr); - - return pattern; -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_pattern_t *gradient, *image; - - cairo_set_source_rgb (cr, 1,1,1); - cairo_paint (cr); - - cairo_translate (cr, PAD, PAD); - - /* clip to the unit size */ - cairo_rectangle (cr, 0, 0, - UNIT_SIZE, UNIT_SIZE); - cairo_clip (cr); - - cairo_rectangle (cr, 0, 0, - UNIT_SIZE, UNIT_SIZE); - cairo_set_source_rgba (cr, 0, 0, 0, 1); - cairo_set_line_width (cr, 2); - cairo_stroke (cr); - - /* start a group */ - cairo_push_group_with_content (cr, CAIRO_CONTENT_COLOR); - - /* draw a gradient background */ - cairo_save (cr); - cairo_translate (cr, INNER_PAD, INNER_PAD); - cairo_new_path (cr); - cairo_rectangle (cr, 0, 0, - UNIT_SIZE - (INNER_PAD*2), UNIT_SIZE - (INNER_PAD*2)); - gradient = cairo_pattern_create_linear (UNIT_SIZE - (INNER_PAD*2), 0, - UNIT_SIZE - (INNER_PAD*2), UNIT_SIZE - (INNER_PAD*2)); - cairo_pattern_add_color_stop_rgba (gradient, 0.0, 0.3, 0.3, 0.3, 1.0); - cairo_pattern_add_color_stop_rgba (gradient, 1.0, 1.0, 1.0, 1.0, 1.0); - cairo_set_source (cr, gradient); - cairo_pattern_destroy (gradient); - cairo_fill (cr); - cairo_restore (cr); - - /* draw diamond */ - cairo_move_to (cr, UNIT_SIZE / 2, 0); - cairo_line_to (cr, UNIT_SIZE , UNIT_SIZE / 2); - cairo_line_to (cr, UNIT_SIZE / 2, UNIT_SIZE); - cairo_line_to (cr, 0 , UNIT_SIZE / 2); - cairo_close_path (cr); - cairo_set_source_rgba (cr, 0, 0, 1, 1); - cairo_fill (cr); - - /* draw circle */ - cairo_arc (cr, - UNIT_SIZE / 2, UNIT_SIZE / 2, - UNIT_SIZE / 3.5, - 0, M_PI * 2); - cairo_set_source_rgba (cr, 1, 0, 0, 1); - cairo_fill (cr); - - /* and put the image on top */ - cairo_translate (cr, UNIT_SIZE/2 - 8, UNIT_SIZE/2 - 8); - image = argb32_source (); - cairo_set_source (cr, image); - cairo_pattern_destroy (image); - cairo_paint (cr); - - cairo_pop_group_to_source (cr); - cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); - cairo_paint (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (push_group_color, - "Verify that cairo_push_group_with_content works.", - "group", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/push-group-path-offset.c b/test/push-group-path-offset.c deleted file mode 100644 index 6b73ca4..0000000 --- a/test/push-group-path-offset.c +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright 2010 Red Hat Inc. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Benjamin Otte - */ - -#include "cairo-test.h" - -#define CLIP_OFFSET 15 -#define CLIP_SIZE 20 - -#define WIDTH 50 -#define HEIGHT 50 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - /* Neutral gray background */ - cairo_set_source_rgb (cr, 0.51613, 0.55555, 0.51613); - cairo_paint (cr); - - /* the rest uses CAIRO_OPERATOR_SOURCE so we see better when something goes wrong */ - cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); - - /* add a rectangle */ - cairo_rectangle (cr, CLIP_OFFSET, CLIP_OFFSET, CLIP_SIZE, CLIP_SIZE); - - /* clip to the rectangle */ - cairo_clip_preserve (cr); - - /* push a group. We now have a device offset. */ - cairo_push_group (cr); - - /* push a group again. This is where the bug used to happen. */ - cairo_push_group (cr); - - /* draw something */ - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_fill_preserve (cr); - - /* make sure the stuff we drew ends up on the output */ - cairo_pop_group_to_source (cr); - cairo_fill_preserve (cr); - - cairo_pop_group_to_source (cr); - cairo_fill_preserve (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (push_group_path_offset, - "Exercises a bug in Cairo 1.9 where existing paths applied the target's" - " device offset twice when cairo_push_group() was called.", - "group, path", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/push-group.c b/test/push-group.c deleted file mode 100644 index 8e6ce19..0000000 --- a/test/push-group.c +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Copyright © 2005 Mozilla Corporation - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Mozilla Corporation not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Mozilla Corporation makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * MOZILLA CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL MOZILLA CORPORATION BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Vladimir Vukicevic - */ - -#include "cairo-test.h" - -#define UNIT_SIZE 100 -#define PAD 5 -#define INNER_PAD 10 - -#define WIDTH (UNIT_SIZE + PAD) + PAD -#define HEIGHT (UNIT_SIZE + PAD) + PAD - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_pattern_t *gradient; - int i, j; - - gradient = cairo_pattern_create_linear (UNIT_SIZE - (INNER_PAD*2), 0, - UNIT_SIZE - (INNER_PAD*2), UNIT_SIZE - (INNER_PAD*2)); - cairo_pattern_add_color_stop_rgba (gradient, 0.0, 0.3, 0.3, 0.3, 1.0); - cairo_pattern_add_color_stop_rgba (gradient, 1.0, 1.0, 1.0, 1.0, 1.0); - - for (j = 0; j < 1; j++) { - for (i = 0; i < 1; i++) { - double x = (i * UNIT_SIZE) + (i + 1) * PAD; - double y = (j * UNIT_SIZE) + (j + 1) * PAD; - - cairo_save (cr); - - cairo_translate (cr, x, y); - - /* draw a gradient background */ - cairo_save (cr); - cairo_translate (cr, INNER_PAD, INNER_PAD); - cairo_new_path (cr); - cairo_rectangle (cr, 0, 0, - UNIT_SIZE - (INNER_PAD*2), UNIT_SIZE - (INNER_PAD*2)); - cairo_set_source (cr, gradient); - cairo_fill (cr); - cairo_restore (cr); - - /* clip to the unit size */ - cairo_rectangle (cr, 0, 0, - UNIT_SIZE, UNIT_SIZE); - cairo_clip (cr); - - cairo_rectangle (cr, 0, 0, - UNIT_SIZE, UNIT_SIZE); - cairo_set_source_rgba (cr, 0, 0, 0, 1); - cairo_set_line_width (cr, 2); - cairo_stroke (cr); - - /* start a group */ - cairo_push_group (cr); - - /* draw diamond */ - cairo_move_to (cr, UNIT_SIZE / 2, 0); - cairo_line_to (cr, UNIT_SIZE , UNIT_SIZE / 2); - cairo_line_to (cr, UNIT_SIZE / 2, UNIT_SIZE); - cairo_line_to (cr, 0 , UNIT_SIZE / 2); - cairo_close_path (cr); - cairo_set_source_rgba (cr, 0, 0, 1, 1); - cairo_fill (cr); - - /* draw circle */ - cairo_arc (cr, - UNIT_SIZE / 2, UNIT_SIZE / 2, - UNIT_SIZE / 3.5, - 0, M_PI * 2); - cairo_set_source_rgba (cr, 1, 0, 0, 1); - cairo_fill (cr); - - cairo_pop_group_to_source (cr); - cairo_paint_with_alpha (cr, 0.5); - - cairo_restore (cr); - } - } - - cairo_pattern_destroy (gradient); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (push_group, - "Verify that cairo_push_group works.", - "group", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/quad-color.png b/test/quad-color.png deleted file mode 100644 index 0d68a82..0000000 Binary files a/test/quad-color.png and /dev/null differ diff --git a/test/quartz-surface-source.c b/test/quartz-surface-source.c deleted file mode 100644 index b0c86d0..0000000 --- a/test/quartz-surface-source.c +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright © 2008 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" -#include "cairo-quartz.h" - -#include "surface-source.c" - -static cairo_surface_t * -create_source_surface (int size) -{ - return cairo_quartz_surface_create (CAIRO_FORMAT_ARGB32, size, size); -} - -CAIRO_TEST (quartz_surface_source, - "Test using a Quartz surface as the source", - "source", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - preamble, draw) diff --git a/test/radial-gradient-extend.c b/test/radial-gradient-extend.c deleted file mode 100644 index c32a2c3..0000000 --- a/test/radial-gradient-extend.c +++ /dev/null @@ -1,92 +0,0 @@ -/* -*- Mode: c; c-basic-offset: 4; indent-tabs-mode: t; tab-width: 8; -*- */ -/* - * Copyright 2010 Andrea Canciani - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Andrea Canciani - */ - -#include "cairo-test.h" - -#define NUM_EXTEND 4 -#define HEIGHT 16 -#define WIDTH 16 -#define PAD 3 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_pattern_t *pattern; - unsigned int i, j; - - cairo_extend_t extend[NUM_EXTEND] = { - CAIRO_EXTEND_NONE, - CAIRO_EXTEND_REPEAT, - CAIRO_EXTEND_REFLECT, - CAIRO_EXTEND_PAD - }; - - cairo_test_paint_checkered (cr); - - pattern = cairo_pattern_create_radial (WIDTH / 2, HEIGHT / 2, 0, WIDTH / 2, HEIGHT / 2, 2 * PAD); - - cairo_pattern_add_color_stop_rgb (pattern, 0, 0, 0, 1); - cairo_pattern_add_color_stop_rgb (pattern, 1, 0, 0, 1); - - cairo_translate (cr, PAD, PAD); - - for (i = 0; i < 2; i++) { - cairo_save (cr); - - for (j = 0; j < NUM_EXTEND; j++) { - cairo_pattern_set_extend (pattern, extend[j]); - - cairo_reset_clip (cr); - cairo_rectangle (cr, 0, 0, WIDTH, HEIGHT); - cairo_clip (cr); - - if (i & 1) { - cairo_set_source_rgb (cr, 0, 1, 0); - cairo_mask (cr, pattern); - } else { - cairo_set_source (cr, pattern); - cairo_paint (cr); - } - - cairo_translate (cr, WIDTH+PAD, 0); - } - - cairo_restore (cr); - cairo_translate (cr, 0, HEIGHT+PAD); - } - - cairo_pattern_destroy (pattern); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (radial_gradient_extend, - "Tests gradient to solid reduction of radial gradients", - "radial, pattern, extend", /* keywords */ - NULL, /* requirements */ - (WIDTH+PAD) * NUM_EXTEND + PAD, 2*(HEIGHT + PAD) + PAD, - NULL, draw) diff --git a/test/radial-gradient.c b/test/radial-gradient.c deleted file mode 100644 index 026876b..0000000 --- a/test/radial-gradient.c +++ /dev/null @@ -1,256 +0,0 @@ -/* - * Copyright © 2005, 2007 Red Hat, Inc. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" - -#define NUM_GRADIENTS 7 -#define NUM_EXTEND 4 -#define SIZE 120 -#define WIDTH (SIZE * NUM_GRADIENTS) -#define HEIGHT (SIZE * NUM_EXTEND) - -typedef void (*composite_t)(cairo_t *cr, cairo_pattern_t *pattern); -typedef void (*add_stops_t)(cairo_pattern_t *pattern); - -/* - * We want to test all the possible relative positions of the start - * and end circle: - * - * - The start circle can be smaller/equal/bigger than the end - * circle. A radial gradient can be classified in one of these - * three cases depending on the sign of dr. - * - * - The smaller circle can be completely inside/internally - * tangent/outside (at least in part) of the bigger circle. This - * classification is the same as the one which can be computed by - * examining the sign of a = (dx^2 + dy^2 - dr^2). - * - * - If the two circles have the same size, neither can be inside or - * internally tangent - * - * This test draws radial gradients whose circles always have the same - * centers (0, 0) and (1, 0), but with different radiuses. From left - * to right: - * - * - Small start circle completely inside the end circle - * 0.25 -> 1.75; dr = 1.5 > 0; a = 1 - 1.50^2 < 0 - * - * - Small start circle internally tangent to the end circle - * 0.50 -> 1.50; dr = 1.0 > 0; a = 1 - 1.00^2 = 0 - * - * - Small start circle outside of the end circle - * 0.50 -> 1.00; dr = 0.5 > 0; a = 1 - 0.50^2 > 0 - * - * - Start circle with the same size as the end circle - * 1.00 -> 1.00; dr = 0.0 = 0; a = 1 - 0.00^2 > 0 - * - * - Small end circle outside of the start circle - * 1.00 -> 0.50; dr = -0.5 > 0; a = 1 - 0.50^2 > 0 - * - * - Small end circle internally tangent to the start circle - * 1.50 -> 0.50; dr = -1.0 > 0; a = 1 - 1.00^2 = 0 - * - * - Small end circle completely inside the start circle - * 1.75 -> 0.25; dr = -1.5 > 0; a = 1 - 1.50^2 < 0 - * - */ - -static const double radiuses[NUM_GRADIENTS] = { - 0.25, - 0.50, - 0.50, - 1.00, - 1.00, - 1.50, - 1.75 -}; - -static cairo_pattern_t * -create_pattern (int index) -{ - double x0, x1, radius0, radius1, left, right, center; - - x0 = 0; - x1 = 1; - radius0 = radiuses[index]; - radius1 = radiuses[NUM_GRADIENTS - index - 1]; - - /* center the gradient */ - left = MIN (x0 - radius0, x1 - radius1); - right = MAX (x0 + radius0, x1 + radius1); - center = (left + right) * 0.5; - x0 -= center; - x1 -= center; - - /* scale to make it fit within a 1x1 rect centered in (0,0) */ - x0 *= 0.25; - x1 *= 0.25; - radius0 *= 0.25; - radius1 *= 0.25; - - return cairo_pattern_create_radial (x0, 0, radius0, x1, 0, radius1); -} - -static void -pattern_add_stops (cairo_pattern_t *pattern) -{ - cairo_pattern_add_color_stop_rgba (pattern, 0.0, 1, 0, 0, 0.75); - cairo_pattern_add_color_stop_rgba (pattern, sqrt (0.5), 0, 1, 0, 0); - cairo_pattern_add_color_stop_rgba (pattern, 1.0, 0, 0, 1, 1); -} - -static void -pattern_add_single_stop (cairo_pattern_t *pattern) -{ - cairo_pattern_add_color_stop_rgba (pattern, 0.25, 1, 0, 0, 1); -} - - -static cairo_test_status_t -draw (cairo_t *cr, add_stops_t add_stops, composite_t composite) -{ - int i, j; - cairo_extend_t extend[NUM_EXTEND] = { - CAIRO_EXTEND_NONE, - CAIRO_EXTEND_REPEAT, - CAIRO_EXTEND_REFLECT, - CAIRO_EXTEND_PAD - }; - - cairo_scale (cr, SIZE, SIZE); - cairo_translate (cr, 0.5, 0.5); - - for (j = 0; j < NUM_EXTEND; j++) { - cairo_save (cr); - for (i = 0; i < NUM_GRADIENTS; i++) { - cairo_pattern_t *pattern; - - pattern = create_pattern (i); - add_stops (pattern); - cairo_pattern_set_extend (pattern, extend[j]); - - cairo_save (cr); - cairo_rectangle (cr, -0.5, -0.5, 1, 1); - cairo_clip (cr); - composite (cr, pattern); - cairo_restore (cr); - cairo_pattern_destroy (pattern); - - cairo_translate (cr, 1, 0); - } - cairo_restore (cr); - cairo_translate (cr, 0, 1); - } - - return CAIRO_TEST_SUCCESS; -} - - -static void -composite_simple (cairo_t *cr, cairo_pattern_t *pattern) -{ - cairo_set_source (cr, pattern); - cairo_paint (cr); -} - -static void -composite_mask (cairo_t *cr, cairo_pattern_t *pattern) -{ - cairo_set_source_rgb (cr, 1, 0, 1); - cairo_mask (cr, pattern); -} - - -static cairo_test_status_t -draw_simple (cairo_t *cr, int width, int height) -{ - cairo_test_paint_checkered (cr); - return draw (cr, pattern_add_stops, composite_simple); -} - -static cairo_test_status_t -draw_mask (cairo_t *cr, int width, int height) -{ - cairo_test_paint_checkered (cr); - return draw (cr, pattern_add_stops, composite_mask); -} - -static cairo_test_status_t -draw_source (cairo_t *cr, int width, int height) -{ - cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); - return draw (cr, pattern_add_stops, composite_simple); -} - - -static cairo_test_status_t -draw_mask_source (cairo_t *cr, int width, int height) -{ - cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); - return draw (cr, pattern_add_stops, composite_mask); -} - -static cairo_test_status_t -draw_one_stop (cairo_t *cr, int width, int height) -{ - cairo_test_paint_checkered (cr); - return draw (cr, pattern_add_single_stop, composite_simple); -} - -CAIRO_TEST (radial_gradient, - "Simple test of radial gradients", - "gradient", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw_simple) - -CAIRO_TEST (radial_gradient_mask, - "Simple test of radial gradients using a MASK", - "gradient,mask", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw_mask) - -CAIRO_TEST (radial_gradient_source, - "Simple test of radial gradients using the SOURCE operator", - "gradient,source", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw_source) - -CAIRO_TEST (radial_gradient_mask_source, - "Simple test of radial gradients using a MASK with a SOURCE operator", - "gradient,mask,source", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw_mask_source) - -CAIRO_TEST (radial_gradient_one_stop, - "Tests radial gradients with a single stop", - "gradient,radial", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw_one_stop) diff --git a/test/radial-outer-focus.c b/test/radial-outer-focus.c deleted file mode 100644 index e038947..0000000 --- a/test/radial-outer-focus.c +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Krzysztof Kosi\u0144ski - */ - -/* Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=40918 */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_pattern_t *radial; - double angle; - int i, j; - - cairo_set_source_rgb (cr, 0, 0, 1); - cairo_paint (cr); - - angle = 0.0; - - for (i = 0; i < 4; i++) { - for (j = 0; j < 4; j++) { - cairo_save (cr); - cairo_rectangle (cr, 100*i, 100*j, 100, 100); - cairo_clip (cr); - - radial = cairo_pattern_create_radial (cos (angle), sin (angle), 0, - 0, 0, 1); - cairo_pattern_add_color_stop_rgb (radial, 0.0, 1, 0, 0); - cairo_pattern_add_color_stop_rgb (radial, 1.0, 0, 1, 0); - - cairo_translate (cr, 100*i+50, 100*j+50); - cairo_scale (cr, 50, -50); - cairo_set_source (cr, radial); - cairo_pattern_destroy (radial); - - cairo_paint(cr); - cairo_restore (cr); - - angle += M_PI/17; - } - } - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (radial_outer_focus, - "Exercises the condition of rendering a radial gradial on its outer focus", - "radial", /* keywords */ - NULL, /* requirements */ - 400, 400, - NULL, draw) diff --git a/test/random-clips.c b/test/random-clips.c deleted file mode 100644 index 31d7d6d..0000000 --- a/test/random-clips.c +++ /dev/null @@ -1,232 +0,0 @@ -/* - * Copyright © 2006 M Joonas Pihlaja - * Copyright © 2011 Chris Wilson - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Authors: - * M Joonas Pihlaja - * Chris Wilson - */ -#include "cairo-test.h" - -#define SIZE 512 -#define STEP (512+2) -#define NUM_SEGMENTS 128 - -static uint32_t state; - -static double -uniform_random (double minval, double maxval) -{ - static uint32_t const poly = 0x9a795537U; - uint32_t n = 32; - while (n-->0) - state = 2*state < state ? (2*state ^ poly) : 2*state; - return minval + state * (maxval - minval) / 4294967296.0; -} - -static void nz_path (cairo_t *cr) -{ - int i; - - state = 0xc0ffee; - - cairo_move_to (cr, 0, 0); - for (i = 0; i < NUM_SEGMENTS; i++) { - double x = uniform_random (0, SIZE); - double y = uniform_random (0, SIZE); - cairo_line_to (cr, x, y); - } - cairo_close_path (cr); -} - -static void region_path (cairo_t *cr) -{ - int i; - - state = 0xc0ffee; - - for (i = 0; i < NUM_SEGMENTS; i++) { - int x = uniform_random (0, SIZE); - int y = uniform_random (0, SIZE); - int w = uniform_random (0, 40); - int h = uniform_random (0, 40); - cairo_rectangle (cr, x, y, w, h); - } -} - -static void rectangle_path (cairo_t *cr) -{ - int i; - - state = 0xc0ffee; - - for (i = 0; i < NUM_SEGMENTS; i++) { - double x = uniform_random (0, SIZE); - double y = uniform_random (0, SIZE); - double w = uniform_random (0, 40); - double h = uniform_random (0, 40); - cairo_rectangle (cr, x, y, w, h); - } -} - -static void arc_path (cairo_t *cr) -{ - int i; - - state = 0xc0ffee; - - for (i = 0; i < NUM_SEGMENTS; i++) { - double x = uniform_random (0, SIZE); - double y = uniform_random (0, SIZE); - double r = uniform_random (0, 20); - cairo_new_sub_path (cr); - cairo_arc (cr, x, y, r, 0, 2*M_PI); - } -} - - -static void nz_fill_stroke (cairo_t *cr) -{ - nz_path (cr); - - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_fill_preserve (cr); - cairo_set_source_rgb (cr, 0, 1, 0); - cairo_set_line_width (cr, 1.0); - cairo_stroke (cr); -} - -static void clip_to_quadrant (cairo_t *cr) -{ - cairo_rectangle (cr, 0, 0, SIZE, SIZE); - cairo_clip (cr); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_set_source_rgb (cr, 0, 0, 0); - cairo_paint (cr); - - cairo_set_fill_rule (cr, CAIRO_FILL_RULE_WINDING); - - state = 0xc0ffee; - cairo_translate (cr, 1, 1); - - /* no clipping */ - cairo_save (cr); { - clip_to_quadrant (cr); - - nz_fill_stroke (cr); - } cairo_restore (cr); - - cairo_translate (cr, STEP, 0); - - /* random clipping */ - cairo_save (cr); { - clip_to_quadrant (cr); - - nz_path (cr); - cairo_clip (cr); - - nz_fill_stroke (cr); - - cairo_set_source_rgba (cr, 1, 1, 1, 0.5); - cairo_paint (cr); - } cairo_restore (cr); - - cairo_translate (cr, STEP, 0); - - /* regional clipping */ - cairo_save (cr); { - clip_to_quadrant (cr); - - region_path (cr); - cairo_clip (cr); - - nz_fill_stroke (cr); - - cairo_set_source_rgba (cr, 1, 1, 1, 0.5); - cairo_paint (cr); - } cairo_restore (cr); - - cairo_translate (cr, -2*STEP, STEP); - - /* rectangular clipping */ - cairo_save (cr); { - clip_to_quadrant (cr); - - rectangle_path (cr); - cairo_clip (cr); - - nz_fill_stroke (cr); - - cairo_set_source_rgba (cr, 1, 1, 1, 0.5); - cairo_paint (cr); - } cairo_restore (cr); - - cairo_translate (cr, STEP, 0); - - /* circular clipping */ - cairo_save (cr); { - clip_to_quadrant (cr); - - arc_path (cr); - cairo_clip (cr); - - nz_fill_stroke (cr); - - cairo_set_source_rgba (cr, 1, 1, 1, 0.5); - cairo_paint (cr); - } cairo_restore (cr); - - cairo_translate (cr, STEP, 0); - - /* all-of-the-above clipping */ - cairo_save (cr); { - clip_to_quadrant (cr); - - nz_path (cr); - cairo_clip (cr); - region_path (cr); - cairo_clip (cr); - rectangle_path (cr); - cairo_clip (cr); - arc_path (cr); - cairo_clip (cr); - - nz_fill_stroke (cr); - - cairo_set_source_rgba (cr, 1, 1, 1, 0.5); - cairo_paint (cr); - } cairo_restore (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (random_clip, - "Tests the clip generation and intersection computation", - "trap, clip", /* keywords */ - NULL, /* requirements */ - 3*STEP+2, 2*STEP+2, - NULL, draw) diff --git a/test/random-intersections-curves-eo.c b/test/random-intersections-curves-eo.c deleted file mode 100644 index 84e9a75..0000000 --- a/test/random-intersections-curves-eo.c +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright © 2006 M Joonas Pihlaja - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: M Joonas Pihlaja - */ -#include "cairo-test.h" - -#define SIZE 512 -#define NUM_SEGMENTS 128 - -static uint32_t state; - -static double -uniform_random (double minval, double maxval) -{ - static uint32_t const poly = 0x9a795537U; - uint32_t n = 32; - while (n-->0) - state = 2*state < state ? (2*state ^ poly) : 2*state; - return minval + state * (maxval - minval) / 4294967296.0; -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - int i; - - cairo_set_source_rgb (cr, 0, 0, 0); - cairo_paint (cr); - - state = 0x12345678; - cairo_translate (cr, 1, 1); - cairo_set_fill_rule (cr, CAIRO_FILL_RULE_EVEN_ODD); - - cairo_move_to (cr, 0, 0); - for (i = 0; i < NUM_SEGMENTS; i++) { - double y3 = uniform_random (0, SIZE); - double x3 = uniform_random (0, SIZE); - double y2 = uniform_random (-SIZE, SIZE); - double x2 = uniform_random (-SIZE, SIZE); - double y1 = uniform_random (-SIZE, SIZE); - double x1 = uniform_random (-SIZE, SIZE); - cairo_curve_to (cr, - x1, y1, - x2, y2, - x3, y3); - } - cairo_close_path (cr); - - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_fill_preserve (cr); - cairo_set_source_rgb (cr, 0, 1, 0); - cairo_set_line_width (cr, 0.5); - cairo_stroke (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (random_intersections_curves_eo, - "Tests the tessellator trapezoid generation and intersection computation", - "trap", /* keywords */ - NULL, /* requirements */ - SIZE+3, SIZE+3, - NULL, draw) diff --git a/test/random-intersections-curves-nz.c b/test/random-intersections-curves-nz.c deleted file mode 100644 index 5265e4a..0000000 --- a/test/random-intersections-curves-nz.c +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright © 2006 M Joonas Pihlaja - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: M Joonas Pihlaja - */ -#include "cairo-test.h" - -#define SIZE 512 -#define NUM_SEGMENTS 128 - -static uint32_t state; - -static double -uniform_random (double minval, double maxval) -{ - static uint32_t const poly = 0x9a795537U; - uint32_t n = 32; - while (n-->0) - state = 2*state < state ? (2*state ^ poly) : 2*state; - return minval + state * (maxval - minval) / 4294967296.0; -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - int i; - - cairo_set_source_rgb (cr, 0, 0, 0); - cairo_paint (cr); - - state = 0x12345678; - cairo_translate (cr, 1, 1); - cairo_set_fill_rule (cr, CAIRO_FILL_RULE_WINDING); - - cairo_move_to (cr, 0, 0); - for (i = 0; i < NUM_SEGMENTS; i++) { - double y3 = uniform_random (0, SIZE); - double x3 = uniform_random (0, SIZE); - double y2 = uniform_random (-SIZE, SIZE); - double x2 = uniform_random (-SIZE, SIZE); - double y1 = uniform_random (-SIZE, SIZE); - double x1 = uniform_random (-SIZE, SIZE); - cairo_curve_to (cr, - x1, y1, - x2, y2, - x3, y3); - } - cairo_close_path (cr); - - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_fill_preserve (cr); - cairo_set_source_rgb (cr, 0, 1, 0); - cairo_set_line_width (cr, 0.5); - cairo_stroke (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (random_intersections_curves_nz, - "Tests the tessellator trapezoid generation and intersection computation", - "trap", /* keywords */ - NULL, /* requirements */ - SIZE+3, SIZE+3, - NULL, draw) - diff --git a/test/random-intersections-eo.c b/test/random-intersections-eo.c deleted file mode 100644 index d35894f..0000000 --- a/test/random-intersections-eo.c +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright © 2006 M Joonas Pihlaja - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: M Joonas Pihlaja - */ -#include "cairo-test.h" - -#define SIZE 512 -#define NUM_SEGMENTS 128 - -static uint32_t state; - -static double -uniform_random (double minval, double maxval) -{ - static uint32_t const poly = 0x9a795537U; - uint32_t n = 32; - while (n-->0) - state = 2*state < state ? (2*state ^ poly) : 2*state; - return minval + state * (maxval - minval) / 4294967296.0; -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - int i; - - cairo_set_source_rgb (cr, 0, 0, 0); - cairo_paint (cr); - - state = 0x12345678; - cairo_translate (cr, 1, 1); - cairo_set_fill_rule (cr, CAIRO_FILL_RULE_EVEN_ODD); - - cairo_move_to (cr, 0, 0); - for (i = 0; i < NUM_SEGMENTS; i++) { - double x = uniform_random (0, width); - double y = uniform_random (0, height); - cairo_line_to (cr, x, y); - } - cairo_close_path (cr); - - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_fill_preserve (cr); - cairo_set_source_rgb (cr, 0, 1, 0); - cairo_set_line_width (cr, 0.5); - cairo_stroke (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (random_intersections_eo, - "Tests the tessellator trapezoid generation and intersection computation", - "trap", /* keywords */ - NULL, /* requirements */ - SIZE+3, SIZE+3, - NULL, draw) - diff --git a/test/random-intersections-nonzero.c b/test/random-intersections-nonzero.c deleted file mode 100644 index cad047e..0000000 --- a/test/random-intersections-nonzero.c +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright © 2006 M Joonas Pihlaja - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: M Joonas Pihlaja - */ -#include "cairo-test.h" - -#define SIZE 512 -#define NUM_SEGMENTS 128 - -static uint32_t state; - -static double -uniform_random (double minval, double maxval) -{ - static uint32_t const poly = 0x9a795537U; - uint32_t n = 32; - while (n-->0) - state = 2*state < state ? (2*state ^ poly) : 2*state; - return minval + state * (maxval - minval) / 4294967296.0; -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - int i; - - cairo_set_source_rgb (cr, 0, 0, 0); - cairo_paint (cr); - - state = 0x12345678; - cairo_translate (cr, 1, 1); - cairo_set_fill_rule (cr, CAIRO_FILL_RULE_WINDING); - - cairo_move_to (cr, 0, 0); - for (i = 0; i < NUM_SEGMENTS; i++) { - double x = uniform_random (0, width); - double y = uniform_random (0, height); - cairo_line_to (cr, x, y); - } - cairo_close_path (cr); - - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_fill_preserve (cr); - cairo_set_source_rgb (cr, 0, 1, 0); - cairo_set_line_width (cr, 0.5); - cairo_stroke (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (random_intersections_nonzero, - "Tests the tessellator trapezoid generation and intersection computation", - "trap", /* keywords */ - NULL, /* requirements */ - SIZE+3, SIZE+3, - NULL, draw) - - diff --git a/test/raster-source.c b/test/raster-source.c deleted file mode 100644 index 5a7646e..0000000 --- a/test/raster-source.c +++ /dev/null @@ -1,134 +0,0 @@ -/* - * Copyright © 2011 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -#include -#include - -/* Basic test to exercise the new mime-surface callback. */ - -#define WIDTH 200 -#define HEIGHT 80 - -/* Lazy way of determining PNG dimensions... */ -static void -png_dimensions (const char *filename, - cairo_content_t *content, int *width, int *height) -{ - cairo_surface_t *surface; - - surface = cairo_image_surface_create_from_png (filename); - *content = cairo_surface_get_content (surface); - *width = cairo_image_surface_get_width (surface); - *height = cairo_image_surface_get_height (surface); - cairo_surface_destroy (surface); -} - -static cairo_surface_t * -png_acquire (cairo_pattern_t *pattern, void *closure, - cairo_surface_t *target, - const cairo_rectangle_int_t *extents) -{ - return cairo_image_surface_create_from_png (closure); -} - -static cairo_surface_t * -red_acquire (cairo_pattern_t *pattern, void *closure, - cairo_surface_t *target, - const cairo_rectangle_int_t *extents) -{ - cairo_surface_t *image; - cairo_t *cr; - - image = cairo_surface_create_similar_image (target, - CAIRO_FORMAT_RGB24, - extents->width, - extents->height); - cairo_surface_set_device_offset (image, extents->x, extents->y); - - cr = cairo_create (image); - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_paint (cr); - cairo_destroy (cr); - - return image; -} - -static void -release (cairo_pattern_t *pattern, void *closure, cairo_surface_t *image) -{ - cairo_surface_destroy (image); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - const char *png_filename = "png.png"; - cairo_pattern_t *png, *red; - cairo_content_t content; - int png_width, png_height; - int i, j; - - png_dimensions (png_filename, &content, &png_width, &png_height); - - png = cairo_pattern_create_raster_source ((void*)png_filename, - content, png_width, png_height); - cairo_raster_source_pattern_set_acquire (png, png_acquire, release); - - red = cairo_pattern_create_raster_source (NULL, - CAIRO_CONTENT_COLOR, WIDTH, HEIGHT); - cairo_raster_source_pattern_set_acquire (red, red_acquire, release); - - cairo_set_source_rgb (cr, 0, 0, 1); - cairo_paint (cr); - - cairo_translate (cr, 0, (HEIGHT-png_height)/2); - for (i = 0; i < 4; i++) { - for (j = 0; j < 4; j++) { - cairo_pattern_t *source; - if ((i ^ j) & 1) - source = red; - else - source = png; - cairo_set_source (cr, source); - cairo_rectangle (cr, i * WIDTH/4, j * png_height/4, WIDTH/4, png_height/4); - cairo_fill (cr); - } - } - - cairo_pattern_destroy (red); - cairo_pattern_destroy (png); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (raster_source, - "Check that the mime-surface embedding works", - "api", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/record-extend.c b/test/record-extend.c deleted file mode 100644 index 8e83871..0000000 --- a/test/record-extend.c +++ /dev/null @@ -1,288 +0,0 @@ -/* - * Copyright © 2007 Red Hat, Inc. - * Copyright © 2011 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Authors: - * Behdad Esfahbod - * Chris Wilson - */ - -#include "cairo-test.h" -#include -#include - -#define SIZE 90 - -/* This is written using clip+paint to exercise a bug that once was in the - * recording surface. - */ - -static cairo_surface_t * -source (cairo_surface_t *surface) -{ - cairo_t *cr; - - /* Create a 4-pixel image surface with my favorite four colors in each - * quadrant. */ - cr = cairo_create (surface); - cairo_surface_destroy (surface); - - /* upper-left = white */ - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_rectangle (cr, 0, 0, 1, 1); - cairo_fill (cr); - - /* upper-right = red */ - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_rectangle (cr, 1, 0, 1, 1); - cairo_fill (cr); - - /* lower-left = green */ - cairo_set_source_rgb (cr, 0, 1, 0); - cairo_rectangle (cr, 0, 1, 1, 1); - cairo_fill (cr); - - /* lower-right = blue */ - cairo_set_source_rgb (cr, 0, 0, 1); - cairo_rectangle (cr, 1, 1, 1, 1); - cairo_fill (cr); - - surface = cairo_surface_reference (cairo_get_target (cr)); - cairo_destroy (cr); - - return surface; -} - -static cairo_surface_t * -image (cairo_t *cr) -{ - return source (cairo_image_surface_create (CAIRO_FORMAT_RGB24, 2, 2)); -} - -static cairo_surface_t * -similar (cairo_t *cr) -{ - return source (cairo_surface_create_similar (cairo_get_target (cr), - CAIRO_CONTENT_COLOR, 2, 2)); -} - -static cairo_t * -extend (cairo_t *cr, cairo_surface_t *(*surface)(cairo_t *), cairo_extend_t mode) -{ - cairo_surface_t *s; - - cairo_set_source_rgb (cr, 0, 1, 1); - cairo_paint (cr); - - /* Now use extend modes to cover most of the surface with those 4 colors */ - s = surface (cr); - cairo_set_source_surface (cr, s, SIZE/2 - 1, SIZE/2 - 1); - cairo_surface_destroy (s); - - cairo_pattern_set_extend (cairo_get_source (cr), mode); - - cairo_rectangle (cr, 10, 10, SIZE-20, SIZE-20); - cairo_clip (cr); - cairo_paint (cr); - - return cr; -} - -static cairo_t * -extend_none (cairo_t *cr, - cairo_surface_t *(*pattern)(cairo_t *)) -{ - return extend (cr, pattern, CAIRO_EXTEND_NONE); -} - -static cairo_t * -extend_pad (cairo_t *cr, - cairo_surface_t *(*pattern)(cairo_t *)) -{ - return extend (cr, pattern, CAIRO_EXTEND_PAD); -} - -static cairo_t * -extend_repeat (cairo_t *cr, - cairo_surface_t *(*pattern)(cairo_t *)) -{ - return extend (cr, pattern, CAIRO_EXTEND_REPEAT); -} - -static cairo_t * -extend_reflect (cairo_t *cr, - cairo_surface_t *(*pattern)(cairo_t *)) -{ - return extend (cr, pattern, CAIRO_EXTEND_REFLECT); -} - -static cairo_t * -record_create (cairo_t *target) -{ - cairo_surface_t *surface; - cairo_t *cr; - - surface = cairo_recording_surface_create (cairo_surface_get_content (cairo_get_target (target)), NULL); - cr = cairo_create (surface); - cairo_surface_destroy (surface); - - return cr; -} - -static cairo_surface_t * -record_get (cairo_t *target) -{ - cairo_surface_t *surface; - - surface = cairo_surface_reference (cairo_get_target (target)); - cairo_destroy (target); - - return surface; -} - -static cairo_test_status_t -record_replay (cairo_t *cr, - cairo_t *(*func)(cairo_t *, - cairo_surface_t *(*pattern)(cairo_t *)), - cairo_surface_t *(*pattern)(cairo_t *), - int width, int height) -{ - cairo_surface_t *surface; - int x, y; - - surface = record_get (func (record_create (cr), pattern)); - - cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); - cairo_set_source_surface (cr, surface, 0, 0); - cairo_surface_destroy (surface); - cairo_pattern_set_extend (cairo_get_source (cr), CAIRO_EXTEND_NONE); - - for (y = 0; y < height; y += 2) { - for (x = 0; x < width; x += 2) { - cairo_rectangle (cr, x, y, 2, 2); - cairo_clip (cr); - cairo_paint (cr); - cairo_reset_clip (cr); - } - } - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -record_extend_none (cairo_t *cr, int width, int height) -{ - return record_replay (cr, extend_none, image, width, height); -} - -static cairo_test_status_t -record_extend_pad (cairo_t *cr, int width, int height) -{ - return record_replay (cr, extend_pad, image, width, height); -} - -static cairo_test_status_t -record_extend_repeat (cairo_t *cr, int width, int height) -{ - return record_replay (cr, extend_repeat, image, width, height); -} - -static cairo_test_status_t -record_extend_reflect (cairo_t *cr, int width, int height) -{ - return record_replay (cr, extend_reflect, image, width, height); -} - -static cairo_test_status_t -record_extend_none_similar (cairo_t *cr, int width, int height) -{ - return record_replay (cr, extend_none, similar, width, height); -} - -static cairo_test_status_t -record_extend_pad_similar (cairo_t *cr, int width, int height) -{ - return record_replay (cr, extend_pad, similar, width, height); -} - -static cairo_test_status_t -record_extend_repeat_similar (cairo_t *cr, int width, int height) -{ - return record_replay (cr, extend_repeat, similar, width, height); -} - -static cairo_test_status_t -record_extend_reflect_similar (cairo_t *cr, int width, int height) -{ - return record_replay (cr, extend_reflect, similar, width, height); -} - -CAIRO_TEST (record_extend_none, - "Test CAIRO_EXTEND_NONE for recorded surface patterns", - "record, extend", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, record_extend_none) -CAIRO_TEST (record_extend_pad, - "Test CAIRO_EXTEND_PAD for recorded surface patterns", - "record, extend", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, record_extend_pad) -CAIRO_TEST (record_extend_repeat, - "Test CAIRO_EXTEND_REPEAT for recorded surface patterns", - "record, extend", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, record_extend_repeat) -CAIRO_TEST (record_extend_reflect, - "Test CAIRO_EXTEND_REFLECT for recorded surface patterns", - "record, extend", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, record_extend_reflect) - -CAIRO_TEST (record_extend_none_similar, - "Test CAIRO_EXTEND_NONE for recorded surface patterns", - "record, extend", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, record_extend_none_similar) -CAIRO_TEST (record_extend_pad_similar, - "Test CAIRO_EXTEND_PAD for recorded surface patterns", - "record, extend", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, record_extend_pad_similar) -CAIRO_TEST (record_extend_repeat_similar, - "Test CAIRO_EXTEND_REPEAT for recorded surface patterns", - "record, extend", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, record_extend_repeat_similar) -CAIRO_TEST (record_extend_reflect_similar, - "Test CAIRO_EXTEND_REFLECT for recorded surface patterns", - "record, extend", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, record_extend_reflect_similar) diff --git a/test/record-mesh.c b/test/record-mesh.c deleted file mode 100644 index 754a1d4..0000000 --- a/test/record-mesh.c +++ /dev/null @@ -1,166 +0,0 @@ -/* - * Copyright © 2007 Red Hat, Inc. - * Copyright © 2009 Adrian Johnson - * Copyright © 2011 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Authors: - * Behdad Esfahbod - * Adrian Johnson - * Chris Wilson - */ - -#include "cairo-test.h" -#include -#include - -#define PAT_WIDTH 170 -#define PAT_HEIGHT 170 -#define SIZE PAT_WIDTH -#define PAD 2 -#define WIDTH (PAD + SIZE + PAD) -#define HEIGHT WIDTH - -/* This test is designed to paint a mesh pattern. The mesh contains - * two overlapping patches */ - -static cairo_pattern_t * -mesh (void) -{ - cairo_pattern_t *pattern; - - pattern = cairo_pattern_create_mesh (); - - cairo_mesh_pattern_begin_patch (pattern); - - cairo_mesh_pattern_move_to (pattern, 0, 0); - cairo_mesh_pattern_curve_to (pattern, 30, -30, 60, 30, 100, 0); - cairo_mesh_pattern_curve_to (pattern, 60, 30, 130, 60, 100, 100); - cairo_mesh_pattern_curve_to (pattern, 60, 70, 30, 130, 0, 100); - cairo_mesh_pattern_curve_to (pattern, 30, 70, -30, 30, 0, 0); - - cairo_mesh_pattern_set_corner_color_rgb (pattern, 0, 1, 0, 0); - cairo_mesh_pattern_set_corner_color_rgb (pattern, 1, 0, 1, 0); - cairo_mesh_pattern_set_corner_color_rgb (pattern, 2, 0, 0, 1); - cairo_mesh_pattern_set_corner_color_rgb (pattern, 3, 1, 1, 0); - - cairo_mesh_pattern_end_patch (pattern); - - cairo_mesh_pattern_begin_patch (pattern); - - cairo_mesh_pattern_move_to (pattern, 50, 50); - cairo_mesh_pattern_curve_to (pattern, 80, 20, 110, 80, 150, 50); - cairo_mesh_pattern_curve_to (pattern, 110, 80, 180, 110, 150, 150); - cairo_mesh_pattern_curve_to (pattern, 110, 120, 80, 180, 50, 150); - cairo_mesh_pattern_curve_to (pattern, 80, 120, 20, 80, 50, 50); - - cairo_mesh_pattern_set_corner_color_rgba (pattern, 0, 1, 0, 0, 0.3); - cairo_mesh_pattern_set_corner_color_rgb (pattern, 1, 0, 1, 0); - cairo_mesh_pattern_set_corner_color_rgba (pattern, 2, 0, 0, 1, 0.3); - cairo_mesh_pattern_set_corner_color_rgb (pattern, 3, 1, 1, 0); - - cairo_mesh_pattern_end_patch (pattern); - - return pattern; -} - -static cairo_t * -draw (cairo_t *cr) -{ - cairo_pattern_t *source; - - cairo_set_source_rgb (cr, 0, 1, 1); - cairo_paint (cr); - - source = mesh (); - cairo_set_source (cr, source); - cairo_pattern_destroy (source); - - cairo_rectangle (cr, 10, 10, SIZE-20, SIZE-20); - cairo_clip (cr); - cairo_paint (cr); - - return cr; -} - -static cairo_t * -record_create (cairo_t *target) -{ - cairo_surface_t *surface; - cairo_t *cr; - - surface = cairo_recording_surface_create (cairo_surface_get_content (cairo_get_target (target)), NULL); - cr = cairo_create (surface); - cairo_surface_destroy (surface); - - return cr; -} - -static cairo_surface_t * -record_get (cairo_t *target) -{ - cairo_surface_t *surface; - - surface = cairo_surface_reference (cairo_get_target (target)); - cairo_destroy (target); - - return surface; -} - -static cairo_test_status_t -record_replay (cairo_t *cr, cairo_t *(*func)(cairo_t *), int width, int height) -{ - cairo_surface_t *surface; - int x, y; - - surface = record_get (func (record_create (cr))); - - cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); - cairo_set_source_surface (cr, surface, 0, 0); - cairo_surface_destroy (surface); - cairo_pattern_set_extend (cairo_get_source (cr), CAIRO_EXTEND_NONE); - - for (y = 0; y < height; y += 2) { - for (x = 0; x < width; x += 2) { - cairo_rectangle (cr, x, y, 2, 2); - cairo_clip (cr); - cairo_paint (cr); - cairo_reset_clip (cr); - } - } - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -record_mesh (cairo_t *cr, int width, int height) -{ - return record_replay (cr, draw, width, height); -} - -CAIRO_TEST (record_mesh, - "Paint mesh pattern through a recording surface", - "record,mesh,pattern", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, record_mesh) - diff --git a/test/record.c b/test/record.c deleted file mode 100644 index b1baada..0000000 --- a/test/record.c +++ /dev/null @@ -1,491 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * Copyright © 2011 Intel Corporation - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Authors: - * Carl D. Worth - * Chris Wilson - */ - -#include "cairo-test.h" - -#define TEXT_SIZE 12 -#define SIZE 60 /* needs to be big to check large area effects (dithering) */ -#define PAD 2 - -#define TT_SIZE 100 -#define TT_PAD 5 -#define TT_FONT_SIZE 32.0 - -#define GENERATE_REF 0 - -static uint32_t data[16] = { - 0xffffffff, 0xffffffff, 0xffff0000, 0xffff0000, - 0xffffffff, 0xffffffff, 0xffff0000, 0xffff0000, - - 0xff00ff00, 0xff00ff00, 0xff0000ff, 0xff0000ff, - 0xff00ff00, 0xff00ff00, 0xff0000ff, 0xff0000ff -}; - -static const char *png_filename = "romedalen.png"; - -static cairo_t * -paint (cairo_t *cr) -{ - cairo_set_source_rgb (cr, 0, 0, 1); - cairo_paint (cr); - - cairo_translate (cr, 2, 2); - cairo_scale (cr, 0.5, 0.5); - - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_paint (cr); - - return cr; -} - -static cairo_t * -paint_alpha (cairo_t *cr) -{ - cairo_surface_t *surface; - - surface = cairo_image_surface_create_for_data ((unsigned char *) data, - CAIRO_FORMAT_RGB24, 4, 4, 16); - - cairo_test_paint_checkered (cr); - - cairo_scale (cr, 4, 4); - - cairo_set_source_surface (cr, surface, 2 , 2); - cairo_pattern_set_filter (cairo_get_source (cr), CAIRO_FILTER_NEAREST); - cairo_paint_with_alpha (cr, 0.5); - - cairo_surface_finish (surface); /* data will go out of scope */ - cairo_surface_destroy (surface); - - return cr; -} - -static cairo_t * -paint_alpha_solid_clip (cairo_t *cr) -{ - cairo_test_paint_checkered (cr); - - cairo_rectangle (cr, 2.5, 2.5, 27, 27); - cairo_clip (cr); - - cairo_set_source_rgb (cr, 1., 0.,0.); - cairo_paint_with_alpha (cr, 0.5); - - return cr; -} - -static cairo_t * -paint_alpha_clip (cairo_t *cr) -{ - cairo_surface_t *surface; - - surface = cairo_image_surface_create_for_data ((unsigned char *) data, - CAIRO_FORMAT_RGB24, 4, 4, 16); - - cairo_test_paint_checkered (cr); - - cairo_rectangle (cr, 10.5, 10.5, 11, 11); - cairo_clip (cr); - - cairo_scale (cr, 4, 4); - - cairo_set_source_surface (cr, surface, 2 , 2); - cairo_pattern_set_filter (cairo_get_source (cr), CAIRO_FILTER_NEAREST); - cairo_paint_with_alpha (cr, 0.5); - - cairo_surface_finish (surface); /* data will go out of scope */ - cairo_surface_destroy (surface); - - return cr; -} - -static cairo_t * -paint_alpha_clip_mask (cairo_t *cr) -{ - cairo_surface_t *surface; - - surface = cairo_image_surface_create_for_data ((unsigned char *) data, - CAIRO_FORMAT_RGB24, 4, 4, 16); - - cairo_test_paint_checkered (cr); - - cairo_move_to (cr, 16, 5); - cairo_line_to (cr, 5, 16); - cairo_line_to (cr, 16, 27); - cairo_line_to (cr, 27, 16); - cairo_clip (cr); - - cairo_scale (cr, 4, 4); - - cairo_set_source_surface (cr, surface, 2 , 2); - cairo_pattern_set_filter (cairo_get_source (cr), CAIRO_FILTER_NEAREST); - cairo_paint_with_alpha (cr, 0.5); - - cairo_surface_finish (surface); /* data will go out of scope */ - cairo_surface_destroy (surface); - - return cr; -} - -static cairo_t * -select_font_face (cairo_t *cr) -{ - /* We draw in the default black, so paint white first. */ - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); /* white */ - cairo_paint (cr); - - cairo_set_source_rgb (cr, 0, 0, 0); /* black */ - - cairo_set_font_size (cr, TEXT_SIZE); - cairo_move_to (cr, 0, TEXT_SIZE); - - cairo_select_font_face (cr, CAIRO_TEST_FONT_FAMILY " Serif", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - cairo_show_text (cr, "i-am-serif"); - - cairo_select_font_face (cr, CAIRO_TEST_FONT_FAMILY " Sans", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - cairo_show_text (cr, " i-am-sans"); - - cairo_select_font_face (cr, CAIRO_TEST_FONT_FAMILY " Sans Mono", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - cairo_show_text (cr, " i-am-mono"); - - return cr; -} - -static cairo_t * -fill_alpha (cairo_t *cr) -{ - const double alpha = 1./3; - int n; - - /* flatten to white */ - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - /* square */ - cairo_rectangle (cr, PAD, PAD, SIZE, SIZE); - cairo_set_source_rgba (cr, 1, 0, 0, alpha); - cairo_fill (cr); - - /* circle */ - cairo_translate (cr, SIZE + 2 * PAD, 0); - cairo_arc (cr, PAD + SIZE / 2., PAD + SIZE / 2., SIZE / 2., 0, 2 * M_PI); - cairo_set_source_rgba (cr, 0, 1, 0, alpha); - cairo_fill (cr); - - /* triangle */ - cairo_translate (cr, 0, SIZE + 2 * PAD); - cairo_move_to (cr, PAD + SIZE / 2, PAD); - cairo_line_to (cr, PAD + SIZE, PAD + SIZE); - cairo_line_to (cr, PAD, PAD + SIZE); - cairo_set_source_rgba (cr, 0, 0, 1, alpha); - cairo_fill (cr); - - /* star */ - cairo_translate (cr, -(SIZE + 2 * PAD) + SIZE/2., SIZE/2.); - for (n = 0; n < 5; n++) { - cairo_line_to (cr, - SIZE/2 * cos (2*n * 2*M_PI / 10), - SIZE/2 * sin (2*n * 2*M_PI / 10)); - - cairo_line_to (cr, - SIZE/4 * cos ((2*n+1)*2*M_PI / 10), - SIZE/4 * sin ((2*n+1)*2*M_PI / 10)); - } - cairo_set_source_rgba (cr, 0, 0, 0, alpha); - cairo_fill (cr); - - return cr; -} - -static cairo_t * -self_intersecting (cairo_t *cr) -{ - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - cairo_translate (cr, 1.0, 1.0); - - cairo_set_source_rgb (cr, 1, 0, 0); /* red */ - - /* First draw the desired shape with a fill */ - cairo_rectangle (cr, 0.5, 0.5, 4.0, 4.0); - cairo_rectangle (cr, 3.5, 3.5, 4.0, 4.0); - cairo_rectangle (cr, 3.5, 1.5, -2.0, 2.0); - cairo_rectangle (cr, 6.5, 4.5, -2.0, 2.0); - - cairo_fill (cr); - - /* Then try the same thing with a stroke */ - cairo_translate (cr, 0, 10); - cairo_move_to (cr, 1.0, 1.0); - cairo_rel_line_to (cr, 3.0, 0.0); - cairo_rel_line_to (cr, 0.0, 6.0); - cairo_rel_line_to (cr, 3.0, 0.0); - cairo_rel_line_to (cr, 0.0, -3.0); - cairo_rel_line_to (cr, -6.0, 0.0); - cairo_close_path (cr); - - cairo_set_line_width (cr, 1.0); - cairo_stroke (cr); - - return cr; -} - -static void -draw_text_transform (cairo_t *cr) -{ - cairo_matrix_t tm; - - /* skew */ - cairo_matrix_init (&tm, 1, 0, - -0.25, 1, - 0, 0); - cairo_matrix_scale (&tm, TT_FONT_SIZE, TT_FONT_SIZE); - cairo_set_font_matrix (cr, &tm); - - cairo_new_path (cr); - cairo_move_to (cr, 50, TT_SIZE-TT_PAD); - cairo_show_text (cr, "A"); - - /* rotate and scale */ - cairo_matrix_init_rotate (&tm, M_PI / 2); - cairo_matrix_scale (&tm, TT_FONT_SIZE, TT_FONT_SIZE * 2.0); - cairo_set_font_matrix (cr, &tm); - - cairo_new_path (cr); - cairo_move_to (cr, TT_PAD, TT_PAD + 25); - cairo_show_text (cr, "A"); - - cairo_matrix_init_rotate (&tm, M_PI / 2); - cairo_matrix_scale (&tm, TT_FONT_SIZE * 2.0, TT_FONT_SIZE); - cairo_set_font_matrix (cr, &tm); - - cairo_new_path (cr); - cairo_move_to (cr, TT_PAD, TT_PAD + 50); - cairo_show_text (cr, "A"); -} - -static cairo_t * -text_transform (cairo_t *cr) -{ - const cairo_test_context_t *ctx = cairo_test_get_context (cr); - cairo_pattern_t *pattern; - - cairo_set_source_rgb (cr, 1., 1., 1.); - cairo_paint (cr); - - cairo_set_source_rgb (cr, 0., 0., 0.); - - cairo_select_font_face (cr, CAIRO_TEST_FONT_FAMILY " Sans", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - - draw_text_transform (cr); - - cairo_translate (cr, TT_SIZE, TT_SIZE); - cairo_rotate (cr, M_PI); - - pattern = cairo_test_create_pattern_from_png (ctx, png_filename); - cairo_pattern_set_extend (pattern, CAIRO_EXTEND_REPEAT); - cairo_set_source (cr, pattern); - cairo_pattern_destroy (pattern); - - draw_text_transform (cr); - - return cr; -} - -/* And here begins the recording and replaying... */ - -static cairo_t * -record_create (cairo_t *target) -{ - cairo_surface_t *surface; - cairo_t *cr; - - surface = cairo_recording_surface_create (cairo_surface_get_content (cairo_get_target (target)), NULL); - cr = cairo_create (surface); - cairo_surface_destroy (surface); - - return cr; -} - -static cairo_surface_t * -record_get (cairo_t *target) -{ - cairo_surface_t *surface; - - surface = cairo_surface_reference (cairo_get_target (target)); - cairo_destroy (target); - - return surface; -} - -static cairo_test_status_t -record_replay (cairo_t *cr, cairo_t *(*func)(cairo_t *), int width, int height) -{ - cairo_surface_t *surface; - int x, y; - -#if GENERATE_REF - func(cr); -#else - surface = record_get (func (record_create (cr))); - - cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); - cairo_set_source_surface (cr, surface, 0, 0); - cairo_surface_destroy (surface); - cairo_pattern_set_extend (cairo_get_source (cr), CAIRO_EXTEND_NONE); - - for (y = 0; y < height; y += 2) { - for (x = 0; x < width; x += 2) { - cairo_rectangle (cr, x, y, 2, 2); - cairo_clip (cr); - cairo_paint (cr); - cairo_reset_clip (cr); - } - } -#endif - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -record_paint (cairo_t *cr, int width, int height) -{ - return record_replay (cr, paint, width, height); -} - -static cairo_test_status_t -record_paint_alpha (cairo_t *cr, int width, int height) -{ - return record_replay (cr, paint_alpha, width, height); -} - -static cairo_test_status_t -record_paint_alpha_solid_clip (cairo_t *cr, int width, int height) -{ - return record_replay (cr, paint_alpha_solid_clip, width, height); -} - -static cairo_test_status_t -record_paint_alpha_clip (cairo_t *cr, int width, int height) -{ - return record_replay (cr, paint_alpha_clip, width, height); -} - -static cairo_test_status_t -record_paint_alpha_clip_mask (cairo_t *cr, int width, int height) -{ - return record_replay (cr, paint_alpha_clip_mask, width, height); -} - -static cairo_test_status_t -record_fill_alpha (cairo_t *cr, int width, int height) -{ - return record_replay (cr, fill_alpha, width, height); -} - -static cairo_test_status_t -record_self_intersecting (cairo_t *cr, int width, int height) -{ - return record_replay (cr, self_intersecting, width, height); -} - -static cairo_test_status_t -record_select_font_face (cairo_t *cr, int width, int height) -{ - return record_replay (cr, select_font_face, width, height); -} - -static cairo_test_status_t -record_text_transform (cairo_t *cr, int width, int height) -{ - return record_replay (cr, text_transform, width, height); -} - -CAIRO_TEST (record_paint, - "Test replayed calls to cairo_paint", - "paint,record", /* keywords */ - NULL, /* requirements */ - 8, 8, - NULL, record_paint) -CAIRO_TEST (record_paint_alpha, - "Simple test of cairo_paint_with_alpha", - "record, paint, alpha", /* keywords */ - NULL, /* requirements */ - 32, 32, - NULL, record_paint_alpha) -CAIRO_TEST (record_paint_alpha_solid_clip, - "Simple test of cairo_paint_with_alpha+unaligned clip", - "record, paint, alpha, clip", /* keywords */ - NULL, /* requirements */ - 32, 32, - NULL, record_paint_alpha_solid_clip) -CAIRO_TEST (record_paint_alpha_clip, - "Simple test of cairo_paint_with_alpha+unaligned clip", - "record, paint, alpha, clip", /* keywords */ - NULL, /* requirements */ - 32, 32, - NULL, record_paint_alpha_clip) -CAIRO_TEST (record_paint_alpha_clip_mask, - "Simple test of cairo_paint_with_alpha+triangular clip", - "record, paint, alpha, clip", /* keywords */ - NULL, /* requirements */ - 32, 32, - NULL, record_paint_alpha_clip_mask) -CAIRO_TEST (record_fill_alpha, - "Tests using set_rgba();fill()", - "record,fill, alpha", /* keywords */ - NULL, /* requirements */ - 2*SIZE + 4*PAD, 2*SIZE + 4*PAD, - NULL, record_fill_alpha) -CAIRO_TEST (record_select_font_face, - "Tests using cairo_select_font_face to draw text in different faces", - "record, font", /* keywords */ - NULL, /* requirements */ - 192, TEXT_SIZE + 4, - NULL, record_select_font_face) -CAIRO_TEST (record_self_intersecting, - "Test strokes of self-intersecting paths", - "record, stroke, trap", /* keywords */ - NULL, /* requirements */ - 10, 20, - NULL, record_self_intersecting) -CAIRO_TEST (record_text_transform, - "Test various applications of the font matrix", - "record, text, transform", /* keywords */ - NULL, /* requirements */ - TT_SIZE, TT_SIZE, - NULL, record_text_transform) diff --git a/test/record1414x.c b/test/record1414x.c deleted file mode 100644 index 029e5a4..0000000 --- a/test/record1414x.c +++ /dev/null @@ -1,498 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * Copyright © 2011 Intel Corporation - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Authors: - * Carl D. Worth - * Chris Wilson - */ - -#include "cairo-test.h" - -#ifndef M_SQRT2 -#define M_SQRT2 1.41421345623730951 -#endif - -#define TEXT_SIZE 12 -#define SIZE 60 /* needs to be big to check large area effects (dithering) */ -#define PAD 2 - -#define TT_SIZE 100 -#define TT_PAD 5 -#define TT_FONT_SIZE 32.0 - -#define GENERATE_REF 0 - -static uint32_t data[16] = { - 0xffffffff, 0xffffffff, 0xffff0000, 0xffff0000, - 0xffffffff, 0xffffffff, 0xffff0000, 0xffff0000, - - 0xff00ff00, 0xff00ff00, 0xff0000ff, 0xff0000ff, - 0xff00ff00, 0xff00ff00, 0xff0000ff, 0xff0000ff -}; - -static const char *png_filename = "romedalen.png"; - -static cairo_t * -paint (cairo_t *cr) -{ - cairo_set_source_rgb (cr, 0, 0, 1); - cairo_paint (cr); - - cairo_translate (cr, 2, 2); - cairo_scale (cr, 0.5, 0.5); - - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_paint (cr); - - return cr; -} - -static cairo_t * -paint_alpha (cairo_t *cr) -{ - cairo_surface_t *surface; - - surface = cairo_image_surface_create_for_data ((unsigned char *) data, - CAIRO_FORMAT_RGB24, 4, 4, 16); - - cairo_test_paint_checkered (cr); - - cairo_scale (cr, 4, 4); - - cairo_set_source_surface (cr, surface, 2 , 2); - cairo_pattern_set_filter (cairo_get_source (cr), CAIRO_FILTER_NEAREST); - cairo_paint_with_alpha (cr, 0.5); - - cairo_surface_finish (surface); /* data will go out of scope */ - cairo_surface_destroy (surface); - - return cr; -} - -static cairo_t * -paint_alpha_solid_clip (cairo_t *cr) -{ - cairo_test_paint_checkered (cr); - - cairo_rectangle (cr, 2.5, 2.5, 27, 27); - cairo_clip (cr); - - cairo_set_source_rgb (cr, 1., 0.,0.); - cairo_paint_with_alpha (cr, 0.5); - - return cr; -} - -static cairo_t * -paint_alpha_clip (cairo_t *cr) -{ - cairo_surface_t *surface; - - surface = cairo_image_surface_create_for_data ((unsigned char *) data, - CAIRO_FORMAT_RGB24, 4, 4, 16); - - cairo_test_paint_checkered (cr); - - cairo_rectangle (cr, 10.5, 10.5, 11, 11); - cairo_clip (cr); - - cairo_scale (cr, 4, 4); - - cairo_set_source_surface (cr, surface, 2 , 2); - cairo_pattern_set_filter (cairo_get_source (cr), CAIRO_FILTER_NEAREST); - cairo_paint_with_alpha (cr, 0.5); - - cairo_surface_finish (surface); /* data will go out of scope */ - cairo_surface_destroy (surface); - - return cr; -} - -static cairo_t * -paint_alpha_clip_mask (cairo_t *cr) -{ - cairo_surface_t *surface; - - surface = cairo_image_surface_create_for_data ((unsigned char *) data, - CAIRO_FORMAT_RGB24, 4, 4, 16); - - cairo_test_paint_checkered (cr); - - cairo_move_to (cr, 16, 5); - cairo_line_to (cr, 5, 16); - cairo_line_to (cr, 16, 27); - cairo_line_to (cr, 27, 16); - cairo_clip (cr); - - cairo_scale (cr, 4, 4); - - cairo_set_source_surface (cr, surface, 2 , 2); - cairo_pattern_set_filter (cairo_get_source (cr), CAIRO_FILTER_NEAREST); - cairo_paint_with_alpha (cr, 0.5); - - cairo_surface_finish (surface); /* data will go out of scope */ - cairo_surface_destroy (surface); - - return cr; -} - -static cairo_t * -select_font_face (cairo_t *cr) -{ - /* We draw in the default black, so paint white first. */ - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); /* white */ - cairo_paint (cr); - - cairo_set_source_rgb (cr, 0, 0, 0); /* black */ - - cairo_set_font_size (cr, TEXT_SIZE); - cairo_move_to (cr, 0, TEXT_SIZE); - - cairo_select_font_face (cr, CAIRO_TEST_FONT_FAMILY " Serif", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - cairo_show_text (cr, "i-am-serif"); - - cairo_select_font_face (cr, CAIRO_TEST_FONT_FAMILY " Sans", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - cairo_show_text (cr, " i-am-sans"); - - cairo_select_font_face (cr, CAIRO_TEST_FONT_FAMILY " Sans Mono", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - cairo_show_text (cr, " i-am-mono"); - - return cr; -} - -static cairo_t * -fill_alpha (cairo_t *cr) -{ - const double alpha = 1./3; - int n; - - /* flatten to white */ - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - /* square */ - cairo_rectangle (cr, PAD, PAD, SIZE, SIZE); - cairo_set_source_rgba (cr, 1, 0, 0, alpha); - cairo_fill (cr); - - /* circle */ - cairo_translate (cr, SIZE + 2 * PAD, 0); - cairo_arc (cr, PAD + SIZE / 2., PAD + SIZE / 2., SIZE / 2., 0, 2 * M_PI); - cairo_set_source_rgba (cr, 0, 1, 0, alpha); - cairo_fill (cr); - - /* triangle */ - cairo_translate (cr, 0, SIZE + 2 * PAD); - cairo_move_to (cr, PAD + SIZE / 2, PAD); - cairo_line_to (cr, PAD + SIZE, PAD + SIZE); - cairo_line_to (cr, PAD, PAD + SIZE); - cairo_set_source_rgba (cr, 0, 0, 1, alpha); - cairo_fill (cr); - - /* star */ - cairo_translate (cr, -(SIZE + 2 * PAD) + SIZE/2., SIZE/2.); - for (n = 0; n < 5; n++) { - cairo_line_to (cr, - SIZE/2 * cos (2*n * 2*M_PI / 10), - SIZE/2 * sin (2*n * 2*M_PI / 10)); - - cairo_line_to (cr, - SIZE/4 * cos ((2*n+1)*2*M_PI / 10), - SIZE/4 * sin ((2*n+1)*2*M_PI / 10)); - } - cairo_set_source_rgba (cr, 0, 0, 0, alpha); - cairo_fill (cr); - - return cr; -} - -static cairo_t * -self_intersecting (cairo_t *cr) -{ - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - cairo_translate (cr, 1.0, 1.0); - - cairo_set_source_rgb (cr, 1, 0, 0); /* red */ - - /* First draw the desired shape with a fill */ - cairo_rectangle (cr, 0.5, 0.5, 4.0, 4.0); - cairo_rectangle (cr, 3.5, 3.5, 4.0, 4.0); - cairo_rectangle (cr, 3.5, 1.5, -2.0, 2.0); - cairo_rectangle (cr, 6.5, 4.5, -2.0, 2.0); - - cairo_fill (cr); - - /* Then try the same thing with a stroke */ - cairo_translate (cr, 0, 10); - cairo_move_to (cr, 1.0, 1.0); - cairo_rel_line_to (cr, 3.0, 0.0); - cairo_rel_line_to (cr, 0.0, 6.0); - cairo_rel_line_to (cr, 3.0, 0.0); - cairo_rel_line_to (cr, 0.0, -3.0); - cairo_rel_line_to (cr, -6.0, 0.0); - cairo_close_path (cr); - - cairo_set_line_width (cr, 1.0); - cairo_stroke (cr); - - return cr; -} - -static void -draw_text_transform (cairo_t *cr) -{ - cairo_matrix_t tm; - - /* skew */ - cairo_matrix_init (&tm, 1, 0, - -0.25, 1, - 0, 0); - cairo_matrix_scale (&tm, TT_FONT_SIZE, TT_FONT_SIZE); - cairo_set_font_matrix (cr, &tm); - - cairo_new_path (cr); - cairo_move_to (cr, 50, TT_SIZE-TT_PAD); - cairo_show_text (cr, "A"); - - /* rotate and scale */ - cairo_matrix_init_rotate (&tm, M_PI / 2); - cairo_matrix_scale (&tm, TT_FONT_SIZE, TT_FONT_SIZE * 2.0); - cairo_set_font_matrix (cr, &tm); - - cairo_new_path (cr); - cairo_move_to (cr, TT_PAD, TT_PAD + 25); - cairo_show_text (cr, "A"); - - cairo_matrix_init_rotate (&tm, M_PI / 2); - cairo_matrix_scale (&tm, TT_FONT_SIZE * 2.0, TT_FONT_SIZE); - cairo_set_font_matrix (cr, &tm); - - cairo_new_path (cr); - cairo_move_to (cr, TT_PAD, TT_PAD + 50); - cairo_show_text (cr, "A"); -} - -static cairo_t * -text_transform (cairo_t *cr) -{ - const cairo_test_context_t *ctx = cairo_test_get_context (cr); - cairo_pattern_t *pattern; - - cairo_set_source_rgb (cr, 1., 1., 1.); - cairo_paint (cr); - - cairo_set_source_rgb (cr, 0., 0., 0.); - - cairo_select_font_face (cr, CAIRO_TEST_FONT_FAMILY " Sans", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - - draw_text_transform (cr); - - cairo_translate (cr, TT_SIZE, TT_SIZE); - cairo_rotate (cr, M_PI); - - pattern = cairo_test_create_pattern_from_png (ctx, png_filename); - cairo_pattern_set_extend (pattern, CAIRO_EXTEND_REPEAT); - cairo_set_source (cr, pattern); - cairo_pattern_destroy (pattern); - - draw_text_transform (cr); - - return cr; -} - -/* And here begins the recording and replaying... */ - -static cairo_t * -record_create (cairo_t *target) -{ - cairo_surface_t *surface; - cairo_t *cr; - - surface = cairo_recording_surface_create (cairo_surface_get_content (cairo_get_target (target)), NULL); - cr = cairo_create (surface); - cairo_surface_destroy (surface); - - return cr; -} - -static cairo_surface_t * -record_get (cairo_t *target) -{ - cairo_surface_t *surface; - - surface = cairo_surface_reference (cairo_get_target (target)); - cairo_destroy (target); - - return surface; -} - -static cairo_test_status_t -record_replay (cairo_t *cr, cairo_t *(*func)(cairo_t *), int width, int height) -{ - cairo_surface_t *surface; - int x, y; - -#if GENERATE_REF - cairo_scale (cr, M_SQRT2, M_SQRT2); - func (cr); -#else - surface = record_get (func (record_create (cr))); - - cairo_scale (cr, M_SQRT2, M_SQRT2); - cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); - cairo_set_source_surface (cr, surface, 0, 0); - cairo_surface_destroy (surface); - cairo_pattern_set_extend (cairo_get_source (cr), CAIRO_EXTEND_NONE); - - cairo_identity_matrix (cr); /* make sure the clip is pixel-aligned */ - for (y = 0; y < height; y += 2) { - for (x = 0; x < width; x += 2) { - cairo_rectangle (cr, x, y, 2, 2); - cairo_clip (cr); - cairo_paint (cr); - cairo_reset_clip (cr); - } - } -#endif - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -record_paint (cairo_t *cr, int width, int height) -{ - return record_replay (cr, paint, width, height); -} - -static cairo_test_status_t -record_paint_alpha (cairo_t *cr, int width, int height) -{ - return record_replay (cr, paint_alpha, width, height); -} - -static cairo_test_status_t -record_paint_alpha_solid_clip (cairo_t *cr, int width, int height) -{ - return record_replay (cr, paint_alpha_solid_clip, width, height); -} - -static cairo_test_status_t -record_paint_alpha_clip (cairo_t *cr, int width, int height) -{ - return record_replay (cr, paint_alpha_clip, width, height); -} - -static cairo_test_status_t -record_paint_alpha_clip_mask (cairo_t *cr, int width, int height) -{ - return record_replay (cr, paint_alpha_clip_mask, width, height); -} - -static cairo_test_status_t -record_fill_alpha (cairo_t *cr, int width, int height) -{ - return record_replay (cr, fill_alpha, width, height); -} - -static cairo_test_status_t -record_self_intersecting (cairo_t *cr, int width, int height) -{ - return record_replay (cr, self_intersecting, width, height); -} - -static cairo_test_status_t -record_select_font_face (cairo_t *cr, int width, int height) -{ - return record_replay (cr, select_font_face, width, height); -} - -static cairo_test_status_t -record_text_transform (cairo_t *cr, int width, int height) -{ - return record_replay (cr, text_transform, width, height); -} - -CAIRO_TEST (record1414x_paint, - "Test replayed calls to cairo_paint", - "paint, record", /* keywords */ - NULL, /* requirements */ - M_SQRT2*8, M_SQRT2*8, - NULL, record_paint) -CAIRO_TEST (record1414x_paint_alpha, - "Simple test of cairo_paint_with_alpha", - "record, paint, alpha", /* keywords */ - NULL, /* requirements */ - M_SQRT2*32, M_SQRT2*32, - NULL, record_paint_alpha) -CAIRO_TEST (record1414x_paint_alpha_solid_clip, - "Simple test of cairo_paint_with_alpha+unaligned clip", - "record, paint, alpha, clip", /* keywords */ - NULL, /* requirements */ - M_SQRT2*32, M_SQRT2*32, - NULL, record_paint_alpha_solid_clip) -CAIRO_TEST (record1414x_paint_alpha_clip, - "Simple test of cairo_paint_with_alpha+unaligned clip", - "record, paint, alpha, clip", /* keywords */ - NULL, /* requirements */ - M_SQRT2*32, M_SQRT2*32, - NULL, record_paint_alpha_clip) -CAIRO_TEST (record1414x_paint_alpha_clip_mask, - "Simple test of cairo_paint_with_alpha+triangular clip", - "record, paint, alpha, clip", /* keywords */ - NULL, /* requirements */ - M_SQRT2*32, M_SQRT2*32, - NULL, record_paint_alpha_clip_mask) -CAIRO_TEST (record1414x_fill_alpha, - "Tests using set_rgba();fill()", - "record, fill, alpha", /* keywords */ - NULL, /* requirements */ - M_SQRT2*(2*SIZE + 4*PAD), M_SQRT2*(2*SIZE + 4*PAD), - NULL, record_fill_alpha) -CAIRO_TEST (record1414x_select_font_face, - "Tests using cairo_select_font_face to draw text in different faces", - "record, font", /* keywords */ - NULL, /* requirements */ - M_SQRT2*192, M_SQRT2*(TEXT_SIZE + 4), - NULL, record_select_font_face) -CAIRO_TEST (record1414x_self_intersecting, - "Test strokes of self-intersecting paths", - "record, stroke, trap", /* keywords */ - NULL, /* requirements */ - M_SQRT2*10, M_SQRT2*20, - NULL, record_self_intersecting) -CAIRO_TEST (record1414x_text_transform, - "Test various applications of the font matrix", - "record, text, transform", /* keywords */ - NULL, /* requirements */ - M_SQRT2*TT_SIZE, M_SQRT2*TT_SIZE, - NULL, record_text_transform) diff --git a/test/record2x.c b/test/record2x.c deleted file mode 100644 index 7fe0377..0000000 --- a/test/record2x.c +++ /dev/null @@ -1,493 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * Copyright © 2011 Intel Corporation - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Authors: - * Carl D. Worth - * Chris Wilson - */ - -#include "cairo-test.h" - -#define TEXT_SIZE 12 -#define SIZE 60 /* needs to be big to check large area effects (dithering) */ -#define PAD 2 - -#define TT_SIZE 100 -#define TT_PAD 5 -#define TT_FONT_SIZE 32.0 - -#define GENERATE_REF 0 - -static uint32_t data[16] = { - 0xffffffff, 0xffffffff, 0xffff0000, 0xffff0000, - 0xffffffff, 0xffffffff, 0xffff0000, 0xffff0000, - - 0xff00ff00, 0xff00ff00, 0xff0000ff, 0xff0000ff, - 0xff00ff00, 0xff00ff00, 0xff0000ff, 0xff0000ff -}; - -static const char *png_filename = "romedalen.png"; - -static cairo_t * -paint (cairo_t *cr) -{ - cairo_set_source_rgb (cr, 0, 0, 1); - cairo_paint (cr); - - cairo_translate (cr, 2, 2); - cairo_scale (cr, 0.5, 0.5); - - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_paint (cr); - - return cr; -} - -static cairo_t * -paint_alpha (cairo_t *cr) -{ - cairo_surface_t *surface; - - surface = cairo_image_surface_create_for_data ((unsigned char *) data, - CAIRO_FORMAT_RGB24, 4, 4, 16); - - cairo_test_paint_checkered (cr); - - cairo_scale (cr, 4, 4); - - cairo_set_source_surface (cr, surface, 2 , 2); - cairo_pattern_set_filter (cairo_get_source (cr), CAIRO_FILTER_NEAREST); - cairo_paint_with_alpha (cr, 0.5); - - cairo_surface_finish (surface); /* data will go out of scope */ - cairo_surface_destroy (surface); - - return cr; -} - -static cairo_t * -paint_alpha_solid_clip (cairo_t *cr) -{ - cairo_test_paint_checkered (cr); - - cairo_rectangle (cr, 2.5, 2.5, 27, 27); - cairo_clip (cr); - - cairo_set_source_rgb (cr, 1., 0.,0.); - cairo_paint_with_alpha (cr, 0.5); - - return cr; -} - -static cairo_t * -paint_alpha_clip (cairo_t *cr) -{ - cairo_surface_t *surface; - - surface = cairo_image_surface_create_for_data ((unsigned char *) data, - CAIRO_FORMAT_RGB24, 4, 4, 16); - - cairo_test_paint_checkered (cr); - - cairo_rectangle (cr, 10.5, 10.5, 11, 11); - cairo_clip (cr); - - cairo_scale (cr, 4, 4); - - cairo_set_source_surface (cr, surface, 2 , 2); - cairo_pattern_set_filter (cairo_get_source (cr), CAIRO_FILTER_NEAREST); - cairo_paint_with_alpha (cr, 0.5); - - cairo_surface_finish (surface); /* data will go out of scope */ - cairo_surface_destroy (surface); - - return cr; -} - -static cairo_t * -paint_alpha_clip_mask (cairo_t *cr) -{ - cairo_surface_t *surface; - - surface = cairo_image_surface_create_for_data ((unsigned char *) data, - CAIRO_FORMAT_RGB24, 4, 4, 16); - - cairo_test_paint_checkered (cr); - - cairo_move_to (cr, 16, 5); - cairo_line_to (cr, 5, 16); - cairo_line_to (cr, 16, 27); - cairo_line_to (cr, 27, 16); - cairo_clip (cr); - - cairo_scale (cr, 4, 4); - - cairo_set_source_surface (cr, surface, 2 , 2); - cairo_pattern_set_filter (cairo_get_source (cr), CAIRO_FILTER_NEAREST); - cairo_paint_with_alpha (cr, 0.5); - - cairo_surface_finish (surface); /* data will go out of scope */ - cairo_surface_destroy (surface); - - return cr; -} - -static cairo_t * -select_font_face (cairo_t *cr) -{ - /* We draw in the default black, so paint white first. */ - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); /* white */ - cairo_paint (cr); - - cairo_set_source_rgb (cr, 0, 0, 0); /* black */ - - cairo_set_font_size (cr, TEXT_SIZE); - cairo_move_to (cr, 0, TEXT_SIZE); - - cairo_select_font_face (cr, CAIRO_TEST_FONT_FAMILY " Serif", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - cairo_show_text (cr, "i-am-serif"); - - cairo_select_font_face (cr, CAIRO_TEST_FONT_FAMILY " Sans", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - cairo_show_text (cr, " i-am-sans"); - - cairo_select_font_face (cr, CAIRO_TEST_FONT_FAMILY " Sans Mono", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - cairo_show_text (cr, " i-am-mono"); - - return cr; -} - -static cairo_t * -fill_alpha (cairo_t *cr) -{ - const double alpha = 1./3; - int n; - - /* flatten to white */ - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - /* square */ - cairo_rectangle (cr, PAD, PAD, SIZE, SIZE); - cairo_set_source_rgba (cr, 1, 0, 0, alpha); - cairo_fill (cr); - - /* circle */ - cairo_translate (cr, SIZE + 2 * PAD, 0); - cairo_arc (cr, PAD + SIZE / 2., PAD + SIZE / 2., SIZE / 2., 0, 2 * M_PI); - cairo_set_source_rgba (cr, 0, 1, 0, alpha); - cairo_fill (cr); - - /* triangle */ - cairo_translate (cr, 0, SIZE + 2 * PAD); - cairo_move_to (cr, PAD + SIZE / 2, PAD); - cairo_line_to (cr, PAD + SIZE, PAD + SIZE); - cairo_line_to (cr, PAD, PAD + SIZE); - cairo_set_source_rgba (cr, 0, 0, 1, alpha); - cairo_fill (cr); - - /* star */ - cairo_translate (cr, -(SIZE + 2 * PAD) + SIZE/2., SIZE/2.); - for (n = 0; n < 5; n++) { - cairo_line_to (cr, - SIZE/2 * cos (2*n * 2*M_PI / 10), - SIZE/2 * sin (2*n * 2*M_PI / 10)); - - cairo_line_to (cr, - SIZE/4 * cos ((2*n+1)*2*M_PI / 10), - SIZE/4 * sin ((2*n+1)*2*M_PI / 10)); - } - cairo_set_source_rgba (cr, 0, 0, 0, alpha); - cairo_fill (cr); - - return cr; -} - -static cairo_t * -self_intersecting (cairo_t *cr) -{ - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - cairo_translate (cr, 1.0, 1.0); - - cairo_set_source_rgb (cr, 1, 0, 0); /* red */ - - /* First draw the desired shape with a fill */ - cairo_rectangle (cr, 0.5, 0.5, 4.0, 4.0); - cairo_rectangle (cr, 3.5, 3.5, 4.0, 4.0); - cairo_rectangle (cr, 3.5, 1.5, -2.0, 2.0); - cairo_rectangle (cr, 6.5, 4.5, -2.0, 2.0); - - cairo_fill (cr); - - /* Then try the same thing with a stroke */ - cairo_translate (cr, 0, 10); - cairo_move_to (cr, 1.0, 1.0); - cairo_rel_line_to (cr, 3.0, 0.0); - cairo_rel_line_to (cr, 0.0, 6.0); - cairo_rel_line_to (cr, 3.0, 0.0); - cairo_rel_line_to (cr, 0.0, -3.0); - cairo_rel_line_to (cr, -6.0, 0.0); - cairo_close_path (cr); - - cairo_set_line_width (cr, 1.0); - cairo_stroke (cr); - - return cr; -} - -static void -draw_text_transform (cairo_t *cr) -{ - cairo_matrix_t tm; - - /* skew */ - cairo_matrix_init (&tm, 1, 0, - -0.25, 1, - 0, 0); - cairo_matrix_scale (&tm, TT_FONT_SIZE, TT_FONT_SIZE); - cairo_set_font_matrix (cr, &tm); - - cairo_new_path (cr); - cairo_move_to (cr, 50, TT_SIZE-TT_PAD); - cairo_show_text (cr, "A"); - - /* rotate and scale */ - cairo_matrix_init_rotate (&tm, M_PI / 2); - cairo_matrix_scale (&tm, TT_FONT_SIZE, TT_FONT_SIZE * 2.0); - cairo_set_font_matrix (cr, &tm); - - cairo_new_path (cr); - cairo_move_to (cr, TT_PAD, TT_PAD + 25); - cairo_show_text (cr, "A"); - - cairo_matrix_init_rotate (&tm, M_PI / 2); - cairo_matrix_scale (&tm, TT_FONT_SIZE * 2.0, TT_FONT_SIZE); - cairo_set_font_matrix (cr, &tm); - - cairo_new_path (cr); - cairo_move_to (cr, TT_PAD, TT_PAD + 50); - cairo_show_text (cr, "A"); -} - -static cairo_t * -text_transform (cairo_t *cr) -{ - const cairo_test_context_t *ctx = cairo_test_get_context (cr); - cairo_pattern_t *pattern; - - cairo_set_source_rgb (cr, 1., 1., 1.); - cairo_paint (cr); - - cairo_set_source_rgb (cr, 0., 0., 0.); - - cairo_select_font_face (cr, CAIRO_TEST_FONT_FAMILY " Sans", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - - draw_text_transform (cr); - - cairo_translate (cr, TT_SIZE, TT_SIZE); - cairo_rotate (cr, M_PI); - - pattern = cairo_test_create_pattern_from_png (ctx, png_filename); - cairo_pattern_set_extend (pattern, CAIRO_EXTEND_REPEAT); - cairo_set_source (cr, pattern); - cairo_pattern_destroy (pattern); - - draw_text_transform (cr); - - return cr; -} - -/* And here begins the recording and replaying... */ - -static cairo_t * -record_create (cairo_t *target) -{ - cairo_surface_t *surface; - cairo_t *cr; - - surface = cairo_recording_surface_create (cairo_surface_get_content (cairo_get_target (target)), NULL); - cr = cairo_create (surface); - cairo_surface_destroy (surface); - - return cr; -} - -static cairo_surface_t * -record_get (cairo_t *target) -{ - cairo_surface_t *surface; - - surface = cairo_surface_reference (cairo_get_target (target)); - cairo_destroy (target); - - return surface; -} - -static cairo_test_status_t -record_replay (cairo_t *cr, cairo_t *(*func)(cairo_t *), int width, int height) -{ - cairo_surface_t *surface; - int x, y; - -#if GENERATE_REF - cairo_scale (cr, 2, 2); - func(cr); -#else - surface = record_get (func (record_create (cr))); - - cairo_scale (cr, 2, 2); - cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); - cairo_set_source_surface (cr, surface, 0, 0); - cairo_surface_destroy (surface); - cairo_pattern_set_extend (cairo_get_source (cr), CAIRO_EXTEND_NONE); - - for (y = 0; y < height; y += 2) { - for (x = 0; x < width; x += 2) { - cairo_rectangle (cr, x, y, 2, 2); - cairo_clip (cr); - cairo_paint (cr); - cairo_reset_clip (cr); - } - } -#endif - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -record_paint (cairo_t *cr, int width, int height) -{ - return record_replay (cr, paint, width, height); -} - -static cairo_test_status_t -record_paint_alpha (cairo_t *cr, int width, int height) -{ - return record_replay (cr, paint_alpha, width, height); -} - -static cairo_test_status_t -record_paint_alpha_solid_clip (cairo_t *cr, int width, int height) -{ - return record_replay (cr, paint_alpha_solid_clip, width, height); -} - -static cairo_test_status_t -record_paint_alpha_clip (cairo_t *cr, int width, int height) -{ - return record_replay (cr, paint_alpha_clip, width, height); -} - -static cairo_test_status_t -record_paint_alpha_clip_mask (cairo_t *cr, int width, int height) -{ - return record_replay (cr, paint_alpha_clip_mask, width, height); -} - -static cairo_test_status_t -record_fill_alpha (cairo_t *cr, int width, int height) -{ - return record_replay (cr, fill_alpha, width, height); -} - -static cairo_test_status_t -record_self_intersecting (cairo_t *cr, int width, int height) -{ - return record_replay (cr, self_intersecting, width, height); -} - -static cairo_test_status_t -record_select_font_face (cairo_t *cr, int width, int height) -{ - return record_replay (cr, select_font_face, width, height); -} - -static cairo_test_status_t -record_text_transform (cairo_t *cr, int width, int height) -{ - return record_replay (cr, text_transform, width, height); -} - -CAIRO_TEST (record2x_paint, - "Test replayed calls to cairo_paint", - "paint,record", /* keywords */ - NULL, /* requirements */ - 2*8, 2*8, - NULL, record_paint) -CAIRO_TEST (record2x_paint_alpha, - "Simple test of cairo_paint_with_alpha", - "record, paint, alpha", /* keywords */ - NULL, /* requirements */ - 2*32, 2*32, - NULL, record_paint_alpha) -CAIRO_TEST (record2x_paint_alpha_solid_clip, - "Simple test of cairo_paint_with_alpha+unaligned clip", - "record, paint, alpha, clip", /* keywords */ - NULL, /* requirements */ - 2*32, 2*32, - NULL, record_paint_alpha_solid_clip) -CAIRO_TEST (record2x_paint_alpha_clip, - "Simple test of cairo_paint_with_alpha+unaligned clip", - "record, paint, alpha, clip", /* keywords */ - NULL, /* requirements */ - 2*32, 2*32, - NULL, record_paint_alpha_clip) -CAIRO_TEST (record2x_paint_alpha_clip_mask, - "Simple test of cairo_paint_with_alpha+triangular clip", - "record, paint, alpha, clip", /* keywords */ - NULL, /* requirements */ - 2*32, 2*32, - NULL, record_paint_alpha_clip_mask) -CAIRO_TEST (record2x_fill_alpha, - "Tests using set_rgba();fill()", - "record,fill, alpha", /* keywords */ - NULL, /* requirements */ - 2*(2*SIZE + 4*PAD), 2*(2*SIZE + 4*PAD), - NULL, record_fill_alpha) -CAIRO_TEST (record2x_select_font_face, - "Tests using cairo_select_font_face to draw text in different faces", - "record, font", /* keywords */ - NULL, /* requirements */ - 2*192, 2*(TEXT_SIZE + 4), - NULL, record_select_font_face) -CAIRO_TEST (record2x_self_intersecting, - "Test strokes of self-intersecting paths", - "record, stroke, trap", /* keywords */ - NULL, /* requirements */ - 2*10, 2*20, - NULL, record_self_intersecting) -CAIRO_TEST (record2x_text_transform, - "Test various applications of the font matrix", - "record, text, transform", /* keywords */ - NULL, /* requirements */ - 2*TT_SIZE, 2*TT_SIZE, - NULL, record_text_transform) diff --git a/test/record90.c b/test/record90.c deleted file mode 100644 index 95ba3b1..0000000 --- a/test/record90.c +++ /dev/null @@ -1,495 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * Copyright © 2011 Intel Corporation - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Authors: - * Carl D. Worth - * Chris Wilson - */ - -#include "cairo-test.h" - -#define TEXT_SIZE 12 -#define SIZE 60 /* needs to be big to check large area effects (dithering) */ -#define PAD 2 - -#define TT_SIZE 100 -#define TT_PAD 5 -#define TT_FONT_SIZE 32.0 - -#define GENERATE_REF 0 - -static uint32_t data[16] = { - 0xffffffff, 0xffffffff, 0xffff0000, 0xffff0000, - 0xffffffff, 0xffffffff, 0xffff0000, 0xffff0000, - - 0xff00ff00, 0xff00ff00, 0xff0000ff, 0xff0000ff, - 0xff00ff00, 0xff00ff00, 0xff0000ff, 0xff0000ff -}; - -static const char *png_filename = "romedalen.png"; - -static cairo_t * -paint (cairo_t *cr) -{ - cairo_set_source_rgb (cr, 0, 0, 1); - cairo_paint (cr); - - cairo_translate (cr, 2, 2); - cairo_scale (cr, 0.5, 0.5); - - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_paint (cr); - - return cr; -} - -static cairo_t * -paint_alpha (cairo_t *cr) -{ - cairo_surface_t *surface; - - surface = cairo_image_surface_create_for_data ((unsigned char *) data, - CAIRO_FORMAT_RGB24, 4, 4, 16); - - cairo_test_paint_checkered (cr); - - cairo_scale (cr, 4, 4); - - cairo_set_source_surface (cr, surface, 2 , 2); - cairo_pattern_set_filter (cairo_get_source (cr), CAIRO_FILTER_NEAREST); - cairo_paint_with_alpha (cr, 0.5); - - cairo_surface_finish (surface); /* data will go out of scope */ - cairo_surface_destroy (surface); - - return cr; -} - -static cairo_t * -paint_alpha_solid_clip (cairo_t *cr) -{ - cairo_test_paint_checkered (cr); - - cairo_rectangle (cr, 2.5, 2.5, 27, 27); - cairo_clip (cr); - - cairo_set_source_rgb (cr, 1., 0.,0.); - cairo_paint_with_alpha (cr, 0.5); - - return cr; -} - -static cairo_t * -paint_alpha_clip (cairo_t *cr) -{ - cairo_surface_t *surface; - - surface = cairo_image_surface_create_for_data ((unsigned char *) data, - CAIRO_FORMAT_RGB24, 4, 4, 16); - - cairo_test_paint_checkered (cr); - - cairo_rectangle (cr, 10.5, 10.5, 11, 11); - cairo_clip (cr); - - cairo_scale (cr, 4, 4); - - cairo_set_source_surface (cr, surface, 2 , 2); - cairo_pattern_set_filter (cairo_get_source (cr), CAIRO_FILTER_NEAREST); - cairo_paint_with_alpha (cr, 0.5); - - cairo_surface_finish (surface); /* data will go out of scope */ - cairo_surface_destroy (surface); - - return cr; -} - -static cairo_t * -paint_alpha_clip_mask (cairo_t *cr) -{ - cairo_surface_t *surface; - - surface = cairo_image_surface_create_for_data ((unsigned char *) data, - CAIRO_FORMAT_RGB24, 4, 4, 16); - - cairo_test_paint_checkered (cr); - - cairo_move_to (cr, 16, 5); - cairo_line_to (cr, 5, 16); - cairo_line_to (cr, 16, 27); - cairo_line_to (cr, 27, 16); - cairo_clip (cr); - - cairo_scale (cr, 4, 4); - - cairo_set_source_surface (cr, surface, 2 , 2); - cairo_pattern_set_filter (cairo_get_source (cr), CAIRO_FILTER_NEAREST); - cairo_paint_with_alpha (cr, 0.5); - - cairo_surface_finish (surface); /* data will go out of scope */ - cairo_surface_destroy (surface); - - return cr; -} - -static cairo_t * -select_font_face (cairo_t *cr) -{ - /* We draw in the default black, so paint white first. */ - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); /* white */ - cairo_paint (cr); - - cairo_set_source_rgb (cr, 0, 0, 0); /* black */ - - cairo_set_font_size (cr, TEXT_SIZE); - cairo_move_to (cr, 0, TEXT_SIZE); - - cairo_select_font_face (cr, CAIRO_TEST_FONT_FAMILY " Serif", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - cairo_show_text (cr, "i-am-serif"); - - cairo_select_font_face (cr, CAIRO_TEST_FONT_FAMILY " Sans", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - cairo_show_text (cr, " i-am-sans"); - - cairo_select_font_face (cr, CAIRO_TEST_FONT_FAMILY " Sans Mono", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - cairo_show_text (cr, " i-am-mono"); - - return cr; -} - -static cairo_t * -fill_alpha (cairo_t *cr) -{ - const double alpha = 1./3; - int n; - - /* flatten to white */ - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - /* square */ - cairo_rectangle (cr, PAD, PAD, SIZE, SIZE); - cairo_set_source_rgba (cr, 1, 0, 0, alpha); - cairo_fill (cr); - - /* circle */ - cairo_translate (cr, SIZE + 2 * PAD, 0); - cairo_arc (cr, PAD + SIZE / 2., PAD + SIZE / 2., SIZE / 2., 0, 2 * M_PI); - cairo_set_source_rgba (cr, 0, 1, 0, alpha); - cairo_fill (cr); - - /* triangle */ - cairo_translate (cr, 0, SIZE + 2 * PAD); - cairo_move_to (cr, PAD + SIZE / 2, PAD); - cairo_line_to (cr, PAD + SIZE, PAD + SIZE); - cairo_line_to (cr, PAD, PAD + SIZE); - cairo_set_source_rgba (cr, 0, 0, 1, alpha); - cairo_fill (cr); - - /* star */ - cairo_translate (cr, -(SIZE + 2 * PAD) + SIZE/2., SIZE/2.); - for (n = 0; n < 5; n++) { - cairo_line_to (cr, - SIZE/2 * cos (2*n * 2*M_PI / 10), - SIZE/2 * sin (2*n * 2*M_PI / 10)); - - cairo_line_to (cr, - SIZE/4 * cos ((2*n+1)*2*M_PI / 10), - SIZE/4 * sin ((2*n+1)*2*M_PI / 10)); - } - cairo_set_source_rgba (cr, 0, 0, 0, alpha); - cairo_fill (cr); - - return cr; -} - -static cairo_t * -self_intersecting (cairo_t *cr) -{ - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - cairo_translate (cr, 1.0, 1.0); - - cairo_set_source_rgb (cr, 1, 0, 0); /* red */ - - /* First draw the desired shape with a fill */ - cairo_rectangle (cr, 0.5, 0.5, 4.0, 4.0); - cairo_rectangle (cr, 3.5, 3.5, 4.0, 4.0); - cairo_rectangle (cr, 3.5, 1.5, -2.0, 2.0); - cairo_rectangle (cr, 6.5, 4.5, -2.0, 2.0); - - cairo_fill (cr); - - /* Then try the same thing with a stroke */ - cairo_translate (cr, 0, 10); - cairo_move_to (cr, 1.0, 1.0); - cairo_rel_line_to (cr, 3.0, 0.0); - cairo_rel_line_to (cr, 0.0, 6.0); - cairo_rel_line_to (cr, 3.0, 0.0); - cairo_rel_line_to (cr, 0.0, -3.0); - cairo_rel_line_to (cr, -6.0, 0.0); - cairo_close_path (cr); - - cairo_set_line_width (cr, 1.0); - cairo_stroke (cr); - - return cr; -} - -static void -draw_text_transform (cairo_t *cr) -{ - cairo_matrix_t tm; - - /* skew */ - cairo_matrix_init (&tm, 1, 0, - -0.25, 1, - 0, 0); - cairo_matrix_scale (&tm, TT_FONT_SIZE, TT_FONT_SIZE); - cairo_set_font_matrix (cr, &tm); - - cairo_new_path (cr); - cairo_move_to (cr, 50, TT_SIZE-TT_PAD); - cairo_show_text (cr, "A"); - - /* rotate and scale */ - cairo_matrix_init_rotate (&tm, M_PI / 2); - cairo_matrix_scale (&tm, TT_FONT_SIZE, TT_FONT_SIZE * 2.0); - cairo_set_font_matrix (cr, &tm); - - cairo_new_path (cr); - cairo_move_to (cr, TT_PAD, TT_PAD + 25); - cairo_show_text (cr, "A"); - - cairo_matrix_init_rotate (&tm, M_PI / 2); - cairo_matrix_scale (&tm, TT_FONT_SIZE * 2.0, TT_FONT_SIZE); - cairo_set_font_matrix (cr, &tm); - - cairo_new_path (cr); - cairo_move_to (cr, TT_PAD, TT_PAD + 50); - cairo_show_text (cr, "A"); -} - -static cairo_t * -text_transform (cairo_t *cr) -{ - const cairo_test_context_t *ctx = cairo_test_get_context (cr); - cairo_pattern_t *pattern; - - cairo_set_source_rgb (cr, 1., 1., 1.); - cairo_paint (cr); - - cairo_set_source_rgb (cr, 0., 0., 0.); - - cairo_select_font_face (cr, CAIRO_TEST_FONT_FAMILY " Sans", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - - draw_text_transform (cr); - - cairo_translate (cr, TT_SIZE, TT_SIZE); - cairo_rotate (cr, M_PI); - - pattern = cairo_test_create_pattern_from_png (ctx, png_filename); - cairo_pattern_set_extend (pattern, CAIRO_EXTEND_REPEAT); - cairo_set_source (cr, pattern); - cairo_pattern_destroy (pattern); - - draw_text_transform (cr); - - return cr; -} - -/* And here begins the recording and replaying... */ - -static cairo_t * -record_create (cairo_t *target) -{ - cairo_surface_t *surface; - cairo_t *cr; - - surface = cairo_recording_surface_create (cairo_surface_get_content (cairo_get_target (target)), NULL); - cr = cairo_create (surface); - cairo_surface_destroy (surface); - - return cr; -} - -static cairo_surface_t * -record_get (cairo_t *target) -{ - cairo_surface_t *surface; - - surface = cairo_surface_reference (cairo_get_target (target)); - cairo_destroy (target); - - return surface; -} - -static cairo_test_status_t -record_replay (cairo_t *cr, cairo_t *(*func)(cairo_t *), int width, int height) -{ - cairo_surface_t *surface; - int x, y; - -#if GENERATE_REF - cairo_translate(cr, width, 0); - cairo_rotate (cr, M_PI/2); - func(cr); -#else - surface = record_get (func (record_create (cr))); - - cairo_translate(cr, width, 0); - cairo_rotate (cr, M_PI/2); - cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); - cairo_set_source_surface (cr, surface, 0, 0); - cairo_surface_destroy (surface); - cairo_pattern_set_extend (cairo_get_source (cr), CAIRO_EXTEND_NONE); - - for (y = 0; y < width; y += 2) { - for (x = 0; x < height; x += 2) { - cairo_rectangle (cr, x, y, 2, 2); - cairo_clip (cr); - cairo_paint (cr); - cairo_reset_clip (cr); - } - } -#endif - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -record_paint (cairo_t *cr, int width, int height) -{ - return record_replay (cr, paint, width, height); -} - -static cairo_test_status_t -record_paint_alpha (cairo_t *cr, int width, int height) -{ - return record_replay (cr, paint_alpha, width, height); -} - -static cairo_test_status_t -record_paint_alpha_solid_clip (cairo_t *cr, int width, int height) -{ - return record_replay (cr, paint_alpha_solid_clip, width, height); -} - -static cairo_test_status_t -record_paint_alpha_clip (cairo_t *cr, int width, int height) -{ - return record_replay (cr, paint_alpha_clip, width, height); -} - -static cairo_test_status_t -record_paint_alpha_clip_mask (cairo_t *cr, int width, int height) -{ - return record_replay (cr, paint_alpha_clip_mask, width, height); -} - -static cairo_test_status_t -record_fill_alpha (cairo_t *cr, int width, int height) -{ - return record_replay (cr, fill_alpha, width, height); -} - -static cairo_test_status_t -record_self_intersecting (cairo_t *cr, int width, int height) -{ - return record_replay (cr, self_intersecting, width, height); -} - -static cairo_test_status_t -record_select_font_face (cairo_t *cr, int width, int height) -{ - return record_replay (cr, select_font_face, width, height); -} - -static cairo_test_status_t -record_text_transform (cairo_t *cr, int width, int height) -{ - return record_replay (cr, text_transform, width, height); -} - -CAIRO_TEST (record90_paint, - "Test replayed calls to cairo_paint", - "paint,record", /* keywords */ - NULL, /* requirements */ - 8, 8, - NULL, record_paint) -CAIRO_TEST (record90_paint_alpha, - "Simple test of cairo_paint_with_alpha", - "record, paint, alpha", /* keywords */ - NULL, /* requirements */ - 2, 32, - NULL, record_paint_alpha) -CAIRO_TEST (record90_paint_alpha_solid_clip, - "Simple test of cairo_paint_with_alpha+unaligned clip", - "record, paint, alpha, clip", /* keywords */ - NULL, /* requirements */ - 32, 32, - NULL, record_paint_alpha_solid_clip) -CAIRO_TEST (record90_paint_alpha_clip, - "Simple test of cairo_paint_with_alpha+unaligned clip", - "record, paint, alpha, clip", /* keywords */ - NULL, /* requirements */ - 32, 32, - NULL, record_paint_alpha_clip) -CAIRO_TEST (record90_paint_alpha_clip_mask, - "Simple test of cairo_paint_with_alpha+triangular clip", - "record, paint, alpha, clip", /* keywords */ - NULL, /* requirements */ - 32, 32, - NULL, record_paint_alpha_clip_mask) -CAIRO_TEST (record90_fill_alpha, - "Tests using set_rgba();fill()", - "record,fill, alpha", /* keywords */ - NULL, /* requirements */ - 2*SIZE + 4*PAD, 2*SIZE + 4*PAD, - NULL, record_fill_alpha) -CAIRO_TEST (record90_select_font_face, - "Tests using cairo_select_font_face to draw text in different faces", - "record, font", /* keywords */ - NULL, /* requirements */ - TEXT_SIZE + 4, 192, - NULL, record_select_font_face) -CAIRO_TEST (record90_self_intersecting, - "Test strokes of self-intersecting paths", - "record, stroke, trap", /* keywords */ - NULL, /* requirements */ - 20, 10, - NULL, record_self_intersecting) -CAIRO_TEST (record90_text_transform, - "Test various applications of the font matrix", - "record, text, transform", /* keywords */ - NULL, /* requirements */ - TT_SIZE, TT_SIZE, - NULL, record_text_transform) diff --git a/test/recordflip.c b/test/recordflip.c deleted file mode 100644 index e923c8a..0000000 --- a/test/recordflip.c +++ /dev/null @@ -1,733 +0,0 @@ -/* - * Copyright © 2011,2013 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -#define TEXT_SIZE 12 -#define SIZE 60 /* needs to be big to check large area effects (dithering) */ -#define PAD 2 - -#define TT_SIZE 100 -#define TT_PAD 5 -#define TT_FONT_SIZE 32.0 - -#define GENERATE_REF 0 - -static uint32_t data[16] = { - 0xffffffff, 0xffffffff, 0xffff0000, 0xffff0000, - 0xffffffff, 0xffffffff, 0xffff0000, 0xffff0000, - - 0xff00ff00, 0xff00ff00, 0xff0000ff, 0xff0000ff, - 0xff00ff00, 0xff00ff00, 0xff0000ff, 0xff0000ff -}; - -static const char *png_filename = "romedalen.png"; - -static cairo_t * -paint (cairo_t *cr) -{ - cairo_set_source_rgb (cr, 0, 0, 1); - cairo_paint (cr); - - cairo_translate (cr, 2, 2); - cairo_scale (cr, 0.5, 0.5); - - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_paint (cr); - - return cr; -} - -static cairo_t * -paint_alpha (cairo_t *cr) -{ - cairo_surface_t *surface; - - surface = cairo_image_surface_create_for_data ((unsigned char *) data, - CAIRO_FORMAT_RGB24, 4, 4, 16); - - cairo_test_paint_checkered (cr); - - cairo_scale (cr, 4, 4); - - cairo_set_source_surface (cr, surface, 2 , 2); - cairo_pattern_set_filter (cairo_get_source (cr), CAIRO_FILTER_NEAREST); - cairo_paint_with_alpha (cr, 0.5); - - cairo_surface_finish (surface); /* data will go out of scope */ - cairo_surface_destroy (surface); - - return cr; -} - -static cairo_t * -paint_alpha_solid_clip (cairo_t *cr) -{ - cairo_test_paint_checkered (cr); - - cairo_rectangle (cr, 2.5, 2.5, 27, 27); - cairo_clip (cr); - - cairo_set_source_rgb (cr, 1., 0.,0.); - cairo_paint_with_alpha (cr, 0.5); - - return cr; -} - -static cairo_t * -paint_alpha_clip (cairo_t *cr) -{ - cairo_surface_t *surface; - - surface = cairo_image_surface_create_for_data ((unsigned char *) data, - CAIRO_FORMAT_RGB24, 4, 4, 16); - - cairo_test_paint_checkered (cr); - - cairo_rectangle (cr, 10.5, 10.5, 11, 11); - cairo_clip (cr); - - cairo_scale (cr, 4, 4); - - cairo_set_source_surface (cr, surface, 2 , 2); - cairo_pattern_set_filter (cairo_get_source (cr), CAIRO_FILTER_NEAREST); - cairo_paint_with_alpha (cr, 0.5); - - cairo_surface_finish (surface); /* data will go out of scope */ - cairo_surface_destroy (surface); - - return cr; -} - -static cairo_t * -paint_alpha_clip_mask (cairo_t *cr) -{ - cairo_surface_t *surface; - - surface = cairo_image_surface_create_for_data ((unsigned char *) data, - CAIRO_FORMAT_RGB24, 4, 4, 16); - - cairo_test_paint_checkered (cr); - - cairo_move_to (cr, 16, 5); - cairo_line_to (cr, 5, 16); - cairo_line_to (cr, 16, 27); - cairo_line_to (cr, 27, 16); - cairo_clip (cr); - - cairo_scale (cr, 4, 4); - - cairo_set_source_surface (cr, surface, 2 , 2); - cairo_pattern_set_filter (cairo_get_source (cr), CAIRO_FILTER_NEAREST); - cairo_paint_with_alpha (cr, 0.5); - - cairo_surface_finish (surface); /* data will go out of scope */ - cairo_surface_destroy (surface); - - return cr; -} - -static cairo_t * -select_font_face (cairo_t *cr) -{ - /* We draw in the default black, so paint white first. */ - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); /* white */ - cairo_paint (cr); - - cairo_set_source_rgb (cr, 0, 0, 0); /* black */ - - cairo_set_font_size (cr, TEXT_SIZE); - cairo_move_to (cr, 0, TEXT_SIZE); - - cairo_select_font_face (cr, CAIRO_TEST_FONT_FAMILY " Serif", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - cairo_show_text (cr, "i-am-serif"); - - cairo_select_font_face (cr, CAIRO_TEST_FONT_FAMILY " Sans", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - cairo_show_text (cr, " i-am-sans"); - - cairo_select_font_face (cr, CAIRO_TEST_FONT_FAMILY " Sans Mono", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - cairo_show_text (cr, " i-am-mono"); - - return cr; -} - -static cairo_t * -fill_alpha (cairo_t *cr) -{ - const double alpha = 1./3; - int n; - - /* flatten to white */ - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - /* square */ - cairo_rectangle (cr, PAD, PAD, SIZE, SIZE); - cairo_set_source_rgba (cr, 1, 0, 0, alpha); - cairo_fill (cr); - - /* circle */ - cairo_translate (cr, SIZE + 2 * PAD, 0); - cairo_arc (cr, PAD + SIZE / 2., PAD + SIZE / 2., SIZE / 2., 0, 2 * M_PI); - cairo_set_source_rgba (cr, 0, 1, 0, alpha); - cairo_fill (cr); - - /* triangle */ - cairo_translate (cr, 0, SIZE + 2 * PAD); - cairo_move_to (cr, PAD + SIZE / 2, PAD); - cairo_line_to (cr, PAD + SIZE, PAD + SIZE); - cairo_line_to (cr, PAD, PAD + SIZE); - cairo_set_source_rgba (cr, 0, 0, 1, alpha); - cairo_fill (cr); - - /* star */ - cairo_translate (cr, -(SIZE + 2 * PAD) + SIZE/2., SIZE/2.); - for (n = 0; n < 5; n++) { - cairo_line_to (cr, - SIZE/2 * cos (2*n * 2*M_PI / 10), - SIZE/2 * sin (2*n * 2*M_PI / 10)); - - cairo_line_to (cr, - SIZE/4 * cos ((2*n+1)*2*M_PI / 10), - SIZE/4 * sin ((2*n+1)*2*M_PI / 10)); - } - cairo_set_source_rgba (cr, 0, 0, 0, alpha); - cairo_fill (cr); - - return cr; -} - -static cairo_t * -self_intersecting (cairo_t *cr) -{ - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - cairo_translate (cr, 1.0, 1.0); - - cairo_set_source_rgb (cr, 1, 0, 0); /* red */ - - /* First draw the desired shape with a fill */ - cairo_rectangle (cr, 0.5, 0.5, 4.0, 4.0); - cairo_rectangle (cr, 3.5, 3.5, 4.0, 4.0); - cairo_rectangle (cr, 3.5, 1.5, -2.0, 2.0); - cairo_rectangle (cr, 6.5, 4.5, -2.0, 2.0); - - cairo_fill (cr); - - /* Then try the same thing with a stroke */ - cairo_translate (cr, 0, 10); - cairo_move_to (cr, 1.0, 1.0); - cairo_rel_line_to (cr, 3.0, 0.0); - cairo_rel_line_to (cr, 0.0, 6.0); - cairo_rel_line_to (cr, 3.0, 0.0); - cairo_rel_line_to (cr, 0.0, -3.0); - cairo_rel_line_to (cr, -6.0, 0.0); - cairo_close_path (cr); - - cairo_set_line_width (cr, 1.0); - cairo_stroke (cr); - - return cr; -} - -static void -draw_text_transform (cairo_t *cr) -{ - cairo_matrix_t tm; - - /* skew */ - cairo_matrix_init (&tm, 1, 0, - -0.25, 1, - 0, 0); - cairo_matrix_scale (&tm, TT_FONT_SIZE, TT_FONT_SIZE); - cairo_set_font_matrix (cr, &tm); - - cairo_new_path (cr); - cairo_move_to (cr, 50, TT_SIZE-TT_PAD); - cairo_show_text (cr, "A"); - - /* rotate and scale */ - cairo_matrix_init_rotate (&tm, M_PI / 2); - cairo_matrix_scale (&tm, TT_FONT_SIZE, TT_FONT_SIZE * 2.0); - cairo_set_font_matrix (cr, &tm); - - cairo_new_path (cr); - cairo_move_to (cr, TT_PAD, TT_PAD + 25); - cairo_show_text (cr, "A"); - - cairo_matrix_init_rotate (&tm, M_PI / 2); - cairo_matrix_scale (&tm, TT_FONT_SIZE * 2.0, TT_FONT_SIZE); - cairo_set_font_matrix (cr, &tm); - - cairo_new_path (cr); - cairo_move_to (cr, TT_PAD, TT_PAD + 50); - cairo_show_text (cr, "A"); -} - -static cairo_t * -text_transform (cairo_t *cr) -{ - const cairo_test_context_t *ctx = cairo_test_get_context (cr); - cairo_pattern_t *pattern; - - cairo_set_source_rgb (cr, 1., 1., 1.); - cairo_paint (cr); - - cairo_set_source_rgb (cr, 0., 0., 0.); - - cairo_select_font_face (cr, CAIRO_TEST_FONT_FAMILY " Sans", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - - draw_text_transform (cr); - - cairo_translate (cr, TT_SIZE, TT_SIZE); - cairo_rotate (cr, M_PI); - - pattern = cairo_test_create_pattern_from_png (ctx, png_filename); - cairo_pattern_set_extend (pattern, CAIRO_EXTEND_REPEAT); - cairo_set_source (cr, pattern); - cairo_pattern_destroy (pattern); - - draw_text_transform (cr); - - return cr; -} - -/* And here begins the recording and replaying... */ - -static cairo_t * -record_create (cairo_t *target) -{ - cairo_surface_t *surface; - cairo_t *cr; - - surface = cairo_recording_surface_create (cairo_surface_get_content (cairo_get_target (target)), NULL); - cr = cairo_create (surface); - cairo_surface_destroy (surface); - - return cr; -} - -static cairo_surface_t * -record_get (cairo_t *target) -{ - cairo_surface_t *surface; - - surface = cairo_surface_reference (cairo_get_target (target)); - cairo_destroy (target); - - return surface; -} - -static cairo_test_status_t -record_replay (cairo_t *cr, cairo_t *(*func)(cairo_t *), int width, int height) -{ - cairo_surface_t *surface; - int x, y; - -#if GENERATE_REF - { - cairo_surface_t *image; - uint8_t *data, *tmp; - int stride, bpp; - - surface = cairo_get_target (cr); - - func(cr); - - image = cairo_surface_map_to_image (surface, NULL); - - switch (cairo_image_surface_get_format (image)) { - case CAIRO_FORMAT_ARGB32: - case CAIRO_FORMAT_RGB24: - case CAIRO_FORMAT_RGB30: - bpp=4; - break; - case CAIRO_FORMAT_RGB16_565: - bpp=2; - break; - case CAIRO_FORMAT_A8: - bpp=1; - break; - case CAIRO_FORMAT_A1: - case CAIRO_FORMAT_INVALID: - default: - return CAIRO_TEST_FAILURE; - } - - data = cairo_image_surface_get_data (image); - stride = cairo_image_surface_get_stride (image); - - tmp = malloc (stride); - if (tmp == NULL) - return CAIRO_TEST_FAILURE; - - for (y = 0; y < height; y++) { - uint8_t *row = data + y * stride; - for (x = 0; x < width/2; x++) { - memcpy (tmp, row + bpp * x, bpp); - memcpy (row + bpp * x, row + bpp * (width - x - 1), bpp); - memcpy (row + bpp * (width - x - 1), tmp, bpp); - } - } - - for (y = 0; y < height/2; y++) { - memcpy (tmp, data + y * stride, stride); - memcpy (data + y * stride, data + (height - y - 1) * stride, stride); - memcpy (data + (height - y - 1) * stride, tmp, stride); - } - - free (tmp); - - cairo_surface_unmap_image (surface, image); - } -#else - surface = record_get (func (record_create (cr))); - - cairo_scale (cr, -1, -1); - cairo_translate (cr, -width, -height); - cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); - cairo_set_source_surface (cr, surface, 0, 0); - cairo_surface_destroy (surface); - cairo_pattern_set_extend (cairo_get_source (cr), CAIRO_EXTEND_NONE); - - for (y = 0; y < height; y += 2) { - for (x = 0; x < width; x += 2) { - cairo_rectangle (cr, x, y, 2, 2); - cairo_clip (cr); - cairo_paint (cr); - cairo_reset_clip (cr); - } - } -#endif - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -record_whole_replay (cairo_t *cr, cairo_t *(*func)(cairo_t *), int width, int height) -{ - cairo_surface_t *surface; - -#if GENERATE_REF - { - cairo_surface_t *image; - uint8_t *data, *tmp; - int stride, bpp; - int x, y; - - surface = cairo_get_target (cr); - - func(cr); - - image = cairo_surface_map_to_image (surface, NULL); - - switch (cairo_image_surface_get_format (image)) { - case CAIRO_FORMAT_ARGB32: - case CAIRO_FORMAT_RGB24: - case CAIRO_FORMAT_RGB30: - bpp=4; - break; - case CAIRO_FORMAT_RGB16_565: - bpp=2; - break; - case CAIRO_FORMAT_A8: - bpp=1; - break; - case CAIRO_FORMAT_A1: - case CAIRO_FORMAT_INVALID: - default: - return CAIRO_TEST_FAILURE; - } - - data = cairo_image_surface_get_data (image); - stride = cairo_image_surface_get_stride (image); - - tmp = malloc (stride); - if (tmp == NULL) - return CAIRO_TEST_FAILURE; - - for (y = 0; y < height; y++) { - uint8_t *row = data + y * stride; - for (x = 0; x < width/2; x++) { - memcpy (tmp, row + bpp * x, bpp); - memcpy (row + bpp * x, row + bpp * (width - x - 1), bpp); - memcpy (row + bpp * (width - x - 1), tmp, bpp); - } - } - - for (y = 0; y < height/2; y++) { - memcpy (tmp, data + y * stride, stride); - memcpy (data + y * stride, data + (height - y - 1) * stride, stride); - memcpy (data + (height - y - 1) * stride, tmp, stride); - } - - free (tmp); - - cairo_surface_unmap_image (surface, image); - } -#else - surface = record_get (func (record_create (cr))); - - cairo_scale (cr, -1, -1); - cairo_translate (cr, -width, -height); - cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); - cairo_set_source_surface (cr, surface, 0, 0); - cairo_surface_destroy (surface); - cairo_pattern_set_extend (cairo_get_source (cr), CAIRO_EXTEND_NONE); - - cairo_paint (cr); -#endif - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -record_paint (cairo_t *cr, int width, int height) -{ - return record_replay (cr, paint, width, height); -} - -static cairo_test_status_t -record_paint_alpha (cairo_t *cr, int width, int height) -{ - return record_replay (cr, paint_alpha, width, height); -} - -static cairo_test_status_t -record_paint_alpha_solid_clip (cairo_t *cr, int width, int height) -{ - return record_replay (cr, paint_alpha_solid_clip, width, height); -} - -static cairo_test_status_t -record_paint_alpha_clip (cairo_t *cr, int width, int height) -{ - return record_replay (cr, paint_alpha_clip, width, height); -} - -static cairo_test_status_t -record_paint_alpha_clip_mask (cairo_t *cr, int width, int height) -{ - return record_replay (cr, paint_alpha_clip_mask, width, height); -} - -static cairo_test_status_t -record_fill_alpha (cairo_t *cr, int width, int height) -{ - return record_replay (cr, fill_alpha, width, height); -} - -static cairo_test_status_t -record_self_intersecting (cairo_t *cr, int width, int height) -{ - return record_replay (cr, self_intersecting, width, height); -} - -static cairo_test_status_t -record_select_font_face (cairo_t *cr, int width, int height) -{ - return record_replay (cr, select_font_face, width, height); -} - -static cairo_test_status_t -record_text_transform (cairo_t *cr, int width, int height) -{ - return record_replay (cr, text_transform, width, height); -} - -static cairo_test_status_t -record_whole_paint (cairo_t *cr, int width, int height) -{ - return record_whole_replay (cr, paint, width, height); -} - -static cairo_test_status_t -record_whole_paint_alpha (cairo_t *cr, int width, int height) -{ - return record_whole_replay (cr, paint_alpha, width, height); -} - -static cairo_test_status_t -record_whole_paint_alpha_solid_clip (cairo_t *cr, int width, int height) -{ - return record_whole_replay (cr, paint_alpha_solid_clip, width, height); -} - -static cairo_test_status_t -record_whole_paint_alpha_clip (cairo_t *cr, int width, int height) -{ - return record_whole_replay (cr, paint_alpha_clip, width, height); -} - -static cairo_test_status_t -record_whole_paint_alpha_clip_mask (cairo_t *cr, int width, int height) -{ - return record_whole_replay (cr, paint_alpha_clip_mask, width, height); -} - -static cairo_test_status_t -record_whole_fill_alpha (cairo_t *cr, int width, int height) -{ - return record_whole_replay (cr, fill_alpha, width, height); -} - -static cairo_test_status_t -record_whole_self_intersecting (cairo_t *cr, int width, int height) -{ - return record_whole_replay (cr, self_intersecting, width, height); -} - -static cairo_test_status_t -record_whole_select_font_face (cairo_t *cr, int width, int height) -{ - return record_whole_replay (cr, select_font_face, width, height); -} - -static cairo_test_status_t -record_whole_text_transform (cairo_t *cr, int width, int height) -{ - return record_whole_replay (cr, text_transform, width, height); -} - -CAIRO_TEST (recordflip_whole_paint, - "Test replayed calls to cairo_paint", - "paint,record", /* keywords */ - NULL, /* requirements */ - 8, 8, - NULL, record_whole_paint) -CAIRO_TEST (recordflip_whole_paint_alpha, - "Simple test of cairo_paint_with_alpha", - "record, paint, alpha", /* keywords */ - NULL, /* requirements */ - 32, 32, - NULL, record_whole_paint_alpha) -CAIRO_TEST (recordflip_whole_paint_alpha_solid_clip, - "Simple test of cairo_paint_with_alpha+unaligned clip", - "record, paint, alpha, clip", /* keywords */ - NULL, /* requirements */ - 32, 32, - NULL, record_whole_paint_alpha_solid_clip) -CAIRO_TEST (recordflip_whole_paint_alpha_clip, - "Simple test of cairo_paint_with_alpha+unaligned clip", - "record, paint, alpha, clip", /* keywords */ - NULL, /* requirements */ - 32, 32, - NULL, record_whole_paint_alpha_clip) -CAIRO_TEST (recordflip_whole_paint_alpha_clip_mask, - "Simple test of cairo_paint_with_alpha+triangular clip", - "record, paint, alpha, clip", /* keywords */ - NULL, /* requirements */ - 32, 32, - NULL, record_whole_paint_alpha_clip_mask) -CAIRO_TEST (recordflip_whole_fill_alpha, - "Tests using set_rgba();fill()", - "record,fill, alpha", /* keywords */ - NULL, /* requirements */ - (2*SIZE + 4*PAD), (2*SIZE + 4*PAD), - NULL, record_whole_fill_alpha) -CAIRO_TEST (recordflip_whole_select_font_face, - "Tests using cairo_select_font_face to draw text in different faces", - "record, font", /* keywords */ - NULL, /* requirements */ - 192, (TEXT_SIZE + 4), - NULL, record_whole_select_font_face) -CAIRO_TEST (recordflip_whole_self_intersecting, - "Test strokes of self-intersecting paths", - "record, stroke, trap", /* keywords */ - NULL, /* requirements */ - 10, 20, - NULL, record_whole_self_intersecting) -CAIRO_TEST (recordflip_whole_text_transform, - "Test various applications of the font matrix", - "record, text, transform", /* keywords */ - NULL, /* requirements */ - TT_SIZE, TT_SIZE, - NULL, record_whole_text_transform) - - -CAIRO_TEST (recordflip_paint, - "Test replayed calls to cairo_paint", - "paint,record", /* keywords */ - NULL, /* requirements */ - 8, 8, - NULL, record_paint) -CAIRO_TEST (recordflip_paint_alpha, - "Simple test of cairo_paint_with_alpha", - "record, paint, alpha", /* keywords */ - NULL, /* requirements */ - 32, 32, - NULL, record_paint_alpha) -CAIRO_TEST (recordflip_paint_alpha_solid_clip, - "Simple test of cairo_paint_with_alpha+unaligned clip", - "record, paint, alpha, clip", /* keywords */ - NULL, /* requirements */ - 32, 32, - NULL, record_paint_alpha_solid_clip) -CAIRO_TEST (recordflip_paint_alpha_clip, - "Simple test of cairo_paint_with_alpha+unaligned clip", - "record, paint, alpha, clip", /* keywords */ - NULL, /* requirements */ - 32, 32, - NULL, record_paint_alpha_clip) -CAIRO_TEST (recordflip_paint_alpha_clip_mask, - "Simple test of cairo_paint_with_alpha+triangular clip", - "record, paint, alpha, clip", /* keywords */ - NULL, /* requirements */ - 32, 32, - NULL, record_paint_alpha_clip_mask) -CAIRO_TEST (recordflip_fill_alpha, - "Tests using set_rgba();fill()", - "record,fill, alpha", /* keywords */ - NULL, /* requirements */ - (2*SIZE + 4*PAD), (2*SIZE + 4*PAD), - NULL, record_fill_alpha) -CAIRO_TEST (recordflip_select_font_face, - "Tests using cairo_select_font_face to draw text in different faces", - "record, font", /* keywords */ - NULL, /* requirements */ - 192, (TEXT_SIZE + 4), - NULL, record_select_font_face) -CAIRO_TEST (recordflip_self_intersecting, - "Test strokes of self-intersecting paths", - "record, stroke, trap", /* keywords */ - NULL, /* requirements */ - 10, 20, - NULL, record_self_intersecting) -CAIRO_TEST (recordflip_text_transform, - "Test various applications of the font matrix", - "record, text, transform", /* keywords */ - NULL, /* requirements */ - TT_SIZE, TT_SIZE, - NULL, record_text_transform) diff --git a/test/recording-surface-extend.c b/test/recording-surface-extend.c deleted file mode 100644 index 0566545..0000000 --- a/test/recording-surface-extend.c +++ /dev/null @@ -1,174 +0,0 @@ -/* - * Copyright © 2007 Adrian Johnson - * Copyright © 2011 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Authors: - * Adrian Johnson - * Chris Wilson - */ - -#include "cairo-test.h" - -#define PAT_WIDTH 120 -#define PAT_HEIGHT 120 -#define SIZE (PAT_WIDTH*2) -#define PAD 2 -#define WIDTH (PAD + SIZE + PAD) -#define HEIGHT WIDTH - - -/* This test is designed to test painting a recording surface pattern with - * CAIRO_EXTEND_NONE and a non identity pattern matrix. - */ -static cairo_pattern_t *create_pattern (cairo_t *target) -{ - cairo_surface_t *surface; - cairo_pattern_t *pattern; - cairo_t *cr; - - surface = cairo_surface_create_similar (cairo_get_group_target (target), - CAIRO_CONTENT_COLOR_ALPHA, - PAT_WIDTH, PAT_HEIGHT); - cr = cairo_create (surface); - cairo_surface_destroy (surface); - - cairo_set_source_rgba (cr, 1, 0, 1, 0.5); - cairo_rectangle (cr, PAT_WIDTH/6.0, PAT_HEIGHT/6.0, PAT_WIDTH/4.0, PAT_HEIGHT/4.0); - cairo_fill (cr); - - cairo_set_source_rgba (cr, 0, 1, 1, 0.5); - cairo_rectangle (cr, PAT_WIDTH/2.0, PAT_HEIGHT/2.0, PAT_WIDTH/4.0, PAT_HEIGHT/4.0); - cairo_fill (cr); - - cairo_set_line_width (cr, 1); - cairo_move_to (cr, PAT_WIDTH/6.0, 0); - cairo_line_to (cr, 0, 0); - cairo_line_to (cr, 0, PAT_HEIGHT/6.0); - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_stroke (cr); - cairo_move_to (cr, PAT_WIDTH/6.0, PAT_HEIGHT); - cairo_line_to (cr, 0, PAT_HEIGHT); - cairo_line_to (cr, 0, 5*PAT_HEIGHT/6.0); - cairo_set_source_rgb (cr, 0, 1, 0); - cairo_stroke (cr); - cairo_move_to (cr, 5*PAT_WIDTH/6.0, 0); - cairo_line_to (cr, PAT_WIDTH, 0); - cairo_line_to (cr, PAT_WIDTH, PAT_HEIGHT/6.0); - cairo_set_source_rgb (cr, 0, 0, 1); - cairo_stroke (cr); - cairo_move_to (cr, 5*PAT_WIDTH/6.0, PAT_HEIGHT); - cairo_line_to (cr, PAT_WIDTH, PAT_HEIGHT); - cairo_line_to (cr, PAT_WIDTH, 5*PAT_HEIGHT/6.0); - cairo_set_source_rgb (cr, 1, 1, 0); - cairo_stroke (cr); - - cairo_set_source_rgb (cr, 0.5, 0.5, 0.5); - cairo_set_line_width (cr, PAT_WIDTH/10.0); - - cairo_move_to (cr, 0, PAT_HEIGHT/4.0); - cairo_line_to (cr, PAT_WIDTH, PAT_HEIGHT/4.0); - cairo_stroke (cr); - - cairo_move_to (cr, PAT_WIDTH/4.0, 0); - cairo_line_to (cr, PAT_WIDTH/4.0, PAT_WIDTH); - cairo_stroke (cr); - - pattern = cairo_pattern_create_for_surface (cairo_get_target (cr)); - cairo_destroy (cr); - - return pattern; -} - -static cairo_test_status_t -draw (cairo_t *cr, cairo_extend_t extend) -{ - cairo_pattern_t *pattern; - cairo_matrix_t mat; - - cairo_translate (cr, PAD, PAD); - - pattern = create_pattern (cr); - - cairo_matrix_init_identity (&mat); - cairo_matrix_scale (&mat, 2, 1.5); - cairo_matrix_rotate (&mat, 1); - cairo_matrix_translate (&mat, -PAT_WIDTH/4.0, -PAT_WIDTH/2.0); - cairo_pattern_set_matrix (pattern, &mat); - cairo_pattern_set_extend (pattern, extend); - - cairo_set_source (cr, pattern); - cairo_paint (cr); - - cairo_pattern_destroy (pattern); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -none (cairo_t *cr, int width, int height) -{ - return draw (cr, CAIRO_EXTEND_NONE); -} - -static cairo_test_status_t -repeat (cairo_t *cr, int width, int height) -{ - return draw (cr, CAIRO_EXTEND_REPEAT); -} - -static cairo_test_status_t -reflect (cairo_t *cr, int width, int height) -{ - return draw (cr, CAIRO_EXTEND_REFLECT); -} - -static cairo_test_status_t -pad (cairo_t *cr, int width, int height) -{ - return draw (cr, CAIRO_EXTEND_PAD); -} - -CAIRO_TEST (recording_surface_extend_none, - "Paint recording surface pattern with extend modes", - "recording, extend", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, none) -CAIRO_TEST (recording_surface_extend_repeat, - "Paint recording surface pattern with extend modes", - "recording, extend", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, repeat) -CAIRO_TEST (recording_surface_extend_reflect, - "Paint recording surface pattern with extend modes", - "recording, extend", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, reflect) -CAIRO_TEST (recording_surface_extend_pad, - "Paint recording surface pattern with extend modes", - "recording, extend", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, pad) diff --git a/test/recording-surface-pattern.c b/test/recording-surface-pattern.c deleted file mode 100644 index 5a5fee2..0000000 --- a/test/recording-surface-pattern.c +++ /dev/null @@ -1,162 +0,0 @@ -/* - * Copyright © 2007 Adrian Johnson - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Adrian Johnson - */ - -#include "cairo-test.h" - -#define PAT_WIDTH 120 -#define PAT_HEIGHT 120 -#define SIZE (PAT_WIDTH*2) -#define PAD 2 -#define WIDTH (PAD + SIZE + PAD) -#define HEIGHT WIDTH - - -/* This test is designed to test painting a recording surface pattern with - * CAIRO_EXTEND_NONE and a non identity pattern matrix. - */ -static cairo_pattern_t *create_pattern (cairo_t *target) -{ - cairo_surface_t *surface; - cairo_pattern_t *pattern; - cairo_t *cr; - - surface = cairo_surface_create_similar (cairo_get_group_target (target), - CAIRO_CONTENT_COLOR_ALPHA, - PAT_WIDTH, PAT_HEIGHT); - cr = cairo_create (surface); - cairo_surface_destroy (surface); - - cairo_set_source_rgba (cr, 1, 0, 1, 0.5); - cairo_rectangle (cr, PAT_WIDTH/6.0, PAT_HEIGHT/6.0, PAT_WIDTH/4.0, PAT_HEIGHT/4.0); - cairo_fill (cr); - - cairo_set_source_rgba (cr, 0, 1, 1, 0.5); - cairo_rectangle (cr, PAT_WIDTH/2.0, PAT_HEIGHT/2.0, PAT_WIDTH/4.0, PAT_HEIGHT/4.0); - cairo_fill (cr); - - cairo_set_line_width (cr, 1); - cairo_move_to (cr, PAT_WIDTH/6.0, 0); - cairo_line_to (cr, 0, 0); - cairo_line_to (cr, 0, PAT_HEIGHT/6.0); - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_stroke (cr); - cairo_move_to (cr, PAT_WIDTH/6.0, PAT_HEIGHT); - cairo_line_to (cr, 0, PAT_HEIGHT); - cairo_line_to (cr, 0, 5*PAT_HEIGHT/6.0); - cairo_set_source_rgb (cr, 0, 1, 0); - cairo_stroke (cr); - cairo_move_to (cr, 5*PAT_WIDTH/6.0, 0); - cairo_line_to (cr, PAT_WIDTH, 0); - cairo_line_to (cr, PAT_WIDTH, PAT_HEIGHT/6.0); - cairo_set_source_rgb (cr, 0, 0, 1); - cairo_stroke (cr); - cairo_move_to (cr, 5*PAT_WIDTH/6.0, PAT_HEIGHT); - cairo_line_to (cr, PAT_WIDTH, PAT_HEIGHT); - cairo_line_to (cr, PAT_WIDTH, 5*PAT_HEIGHT/6.0); - cairo_set_source_rgb (cr, 1, 1, 0); - cairo_stroke (cr); - - cairo_set_source_rgb (cr, 0.5, 0.5, 0.5); - cairo_set_line_width (cr, PAT_WIDTH/10.0); - - cairo_move_to (cr, 0, PAT_HEIGHT/4.0); - cairo_line_to (cr, PAT_WIDTH, PAT_HEIGHT/4.0); - cairo_stroke (cr); - - cairo_move_to (cr, PAT_WIDTH/4.0, 0); - cairo_line_to (cr, PAT_WIDTH/4.0, PAT_WIDTH); - cairo_stroke (cr); - - pattern = cairo_pattern_create_for_surface (cairo_get_target (cr)); - cairo_destroy (cr); - - return pattern; -} - -static cairo_test_status_t -over (cairo_t *cr, int width, int height) -{ - cairo_pattern_t *pattern; - cairo_matrix_t mat; - - cairo_translate (cr, PAD, PAD); - - pattern = create_pattern (cr); - - cairo_matrix_init_identity (&mat); - cairo_matrix_scale (&mat, 2, 1.5); - cairo_matrix_rotate (&mat, 1); - cairo_matrix_translate (&mat, -PAT_WIDTH/4.0, -PAT_WIDTH/2.0); - cairo_pattern_set_matrix (pattern, &mat); - cairo_pattern_set_extend (pattern, CAIRO_EXTEND_NONE); - - cairo_set_source (cr, pattern); - cairo_paint (cr); - - cairo_pattern_destroy (pattern); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -source (cairo_t *cr, int width, int height) -{ - cairo_pattern_t *pattern; - cairo_matrix_t mat; - - cairo_translate (cr, PAD, PAD); - - pattern = create_pattern (cr); - - cairo_matrix_init_identity (&mat); - cairo_matrix_scale (&mat, 2, 1.5); - cairo_matrix_rotate (&mat, 1); - cairo_matrix_translate (&mat, -PAT_WIDTH/4.0, -PAT_WIDTH/2.0); - cairo_pattern_set_matrix (pattern, &mat); - cairo_pattern_set_extend (pattern, CAIRO_EXTEND_NONE); - - cairo_set_source (cr, pattern); - cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); - cairo_paint (cr); - - cairo_pattern_destroy (pattern); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (recording_surface_over, - "Paint recording surface pattern with non identity pattern matrix", - "recording", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, over) - -CAIRO_TEST (recording_surface_source, - "Paint recording surface pattern with non identity pattern matrix", - "recording", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, source) diff --git a/test/rectangle-rounding-error.c b/test/rectangle-rounding-error.c deleted file mode 100644 index 6ad99ae..0000000 --- a/test/rectangle-rounding-error.c +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright © 2005 Bertram Felgenhauer - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * the author not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. The author makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL THE AUTHOR. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Bertram Felgenhauer - */ - -#include "cairo-test.h" - -/* Test case for: - * - * https://bugs.freedesktop.org/show_bug.cgi?id=4137 - */ - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - cairo_set_antialias (cr, CAIRO_ANTIALIAS_NONE); - cairo_set_source_rgb (cr, 0, 0, 0); - - cairo_translate(cr, -300, -300); - cairo_scale(cr, 677.0/26, 677.0/26); - cairo_translate(cr, 1, 1); - - /* this should draw a seamless 2x2 rectangle */ - cairo_rectangle(cr, 11, 11, 1, 1); - cairo_rectangle(cr, 11, 12, 1, 1); - cairo_rectangle(cr, 12, 11, 1, 1); - cairo_rectangle(cr, 12, 12, 1, 1); - - cairo_set_source_rgb(cr, 0, 0, 0); - cairo_fill(cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (rectangle_rounding_error, - "This demonstrates (or not) a rounding error that causes a gap between " - "two neighbouring rectangles.", - "trap", /* keywords */ - "target=raster", /* requirements */ - 76, 76, - NULL, draw) diff --git a/test/rectilinear-dash-scale.c b/test/rectilinear-dash-scale.c deleted file mode 100644 index 34f3345..0000000 --- a/test/rectilinear-dash-scale.c +++ /dev/null @@ -1,196 +0,0 @@ -/* - * Copyright © 2006 Red Hat, Inc. - * Copyright © 2008 Chris Wilson - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Carl D. Worth - * Chris Wilson - * - * Based on the original test/rectilinear-stroke.c by Carl D. Worth. - */ - -#include "cairo-test.h" - -#define SIZE 50 - -static void -draw_dashes (cairo_t *cr) -{ - const double dash_square[4] = {4, 2, 2, 2}; - const double dash_butt[4] = {5, 1, 3, 1}; - - cairo_save (cr); - - cairo_set_dash (cr, dash_square, 4, 0); - - cairo_set_line_width (cr, 1.0); - cairo_translate (cr, 1, 1); - - /* Draw everything first with square caps. */ - cairo_set_line_cap (cr, CAIRO_LINE_CAP_SQUARE); - - /* Draw horizontal and vertical segments, each in both - * directions. */ - cairo_move_to (cr, 4.5, 0.5); - cairo_rel_line_to (cr, 2.0, 0.0); - - cairo_move_to (cr, 10.5, 4.5); - cairo_rel_line_to (cr, 0.0, 2.0); - - cairo_move_to (cr, 6.5, 10.5); - cairo_rel_line_to (cr, -2.0, 0.0); - - cairo_move_to (cr, 0.5, 6.5); - cairo_rel_line_to (cr, 0.0, -2.0); - - /* Draw right angle turns in four directions. */ - cairo_move_to (cr, 0.5, 2.5); - cairo_rel_line_to (cr, 0.0, -2.0); - cairo_rel_line_to (cr, 2.0, 0.0); - - cairo_move_to (cr, 8.5, 0.5); - cairo_rel_line_to (cr, 2.0, 0.0); - cairo_rel_line_to (cr, 0.0, 2.0); - - cairo_move_to (cr, 10.5, 8.5); - cairo_rel_line_to (cr, 0.0, 2.0); - cairo_rel_line_to (cr, -2.0, 0.0); - - cairo_move_to (cr, 2.5, 10.5); - cairo_rel_line_to (cr, -2.0, 0.0); - cairo_rel_line_to (cr, 0.0, -2.0); - - cairo_stroke (cr); - - /* Draw a closed-path rectangle */ - cairo_rectangle (cr, 0.5, 12.5, 10.0, 10.0); - cairo_set_dash (cr, dash_square, 4, 2); - cairo_stroke (cr); - - cairo_translate (cr, 12, 0); - - /* Now draw the same results, but with butt caps. */ - cairo_set_line_cap (cr, CAIRO_LINE_CAP_BUTT); - cairo_set_dash (cr, dash_butt, 4, 0.0); - - /* Draw horizontal and vertical segments, each in both - * directions. */ - cairo_move_to (cr, 4.0, 0.5); - cairo_rel_line_to (cr, 3.0, 0.0); - - cairo_move_to (cr, 10.5, 4.0); - cairo_rel_line_to (cr, 0.0, 3.0); - - cairo_move_to (cr, 7.0, 10.5); - cairo_rel_line_to (cr, -3.0, 0.0); - - cairo_move_to (cr, 0.5, 7.0); - cairo_rel_line_to (cr, 0.0, -3.0); - - /* Draw right angle turns in four directions. */ - cairo_move_to (cr, 0.5, 3.0); - cairo_rel_line_to (cr, 0.0, -2.5); - cairo_rel_line_to (cr, 2.5, 0.0); - - cairo_move_to (cr, 8.0, 0.5); - cairo_rel_line_to (cr, 2.5, 0.0); - cairo_rel_line_to (cr, 0.0, 2.5); - - cairo_move_to (cr, 10.5, 8.0); - cairo_rel_line_to (cr, 0.0, 2.5); - cairo_rel_line_to (cr, -2.5, 0.0); - - cairo_move_to (cr, 3.0, 10.5); - cairo_rel_line_to (cr, -2.5, 0.0); - cairo_rel_line_to (cr, 0.0, -2.5); - - cairo_stroke (cr); - - /* Draw a closed-path rectangle */ - cairo_set_dash (cr, dash_butt, 4, 2.5); - cairo_rectangle (cr, 0.5, 12.5, 10.0, 10.0); - cairo_stroke (cr); - - cairo_restore (cr); -} - -static cairo_test_status_t -dashes (cairo_t *cr) -{ - /* Paint background white, then draw in black. */ - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); - cairo_paint (cr); - - cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); - draw_dashes (cr); - - cairo_save (cr); - cairo_set_source_rgb (cr, 1.0, 0.0, 0.0); - cairo_translate (cr, 0, SIZE); - cairo_scale (cr, 1, -1); - draw_dashes (cr); - cairo_restore (cr); - - cairo_save (cr); - cairo_set_source_rgb (cr, 0.0, 1.0, 0.0); - cairo_translate (cr, SIZE, 0); - cairo_scale (cr, -1, 1); - draw_dashes (cr); - cairo_restore (cr); - - cairo_save (cr); - cairo_set_source_rgb (cr, 0.0, 0.0, 1.0); - cairo_translate (cr, SIZE, SIZE); - cairo_scale (cr, -1, -1); - draw_dashes (cr); - cairo_restore (cr); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -aligned (cairo_t *cr, int width, int height) -{ - cairo_scale (cr, 4, 2); - return dashes(cr); -} - -static cairo_test_status_t -unaligned (cairo_t *cr, int width, int height) -{ - cairo_scale (cr, 3.9, 1.9); - return dashes(cr); -} - -CAIRO_TEST (rectilinear_dash_scale, - "Test dashed rectilinear stroke operations (covering only whole pixels) after scaling", - "stroke, dash", /* keywords */ - NULL, /* requirements */ - 4*SIZE, 2*SIZE, - NULL, aligned) - -CAIRO_TEST (rectilinear_dash_scale_unaligned, - "Test dashed rectilinear stroke operations (covering partial pixels) after scaling", - "stroke, dash", /* keywords */ - NULL, /* requirements */ - 4*SIZE, 2*SIZE, - NULL, unaligned) diff --git a/test/rectilinear-dash.c b/test/rectilinear-dash.c deleted file mode 100644 index 954a2a0..0000000 --- a/test/rectilinear-dash.c +++ /dev/null @@ -1,176 +0,0 @@ -/* - * Copyright © 2006 Red Hat, Inc. - * Copyright © 2008 Chris Wilson - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Carl D. Worth - * Chris Wilson - * - * Based on the original test/rectilinear-stroke.c by Carl D. Worth. - */ - -#include "cairo-test.h" - -#define SIZE 50 - -static void -draw_dashes (cairo_t *cr) -{ - const double dash_square[4] = {4, 2, 2, 2}; - const double dash_butt[4] = {5, 1, 3, 1}; - - cairo_save (cr); - - cairo_set_dash (cr, dash_square, 4, 0); - - cairo_set_line_width (cr, 1.0); - cairo_translate (cr, 1, 1); - - /* Draw everything first with square caps. */ - cairo_set_line_cap (cr, CAIRO_LINE_CAP_SQUARE); - - /* Draw horizontal and vertical segments, each in both - * directions. */ - cairo_move_to (cr, 4.5, 0.5); - cairo_rel_line_to (cr, 2.0, 0.0); - - cairo_move_to (cr, 10.5, 4.5); - cairo_rel_line_to (cr, 0.0, 2.0); - - cairo_move_to (cr, 6.5, 10.5); - cairo_rel_line_to (cr, -2.0, 0.0); - - cairo_move_to (cr, 0.5, 6.5); - cairo_rel_line_to (cr, 0.0, -2.0); - - /* Draw right angle turns in four directions. */ - cairo_move_to (cr, 0.5, 2.5); - cairo_rel_line_to (cr, 0.0, -2.0); - cairo_rel_line_to (cr, 2.0, 0.0); - - cairo_move_to (cr, 8.5, 0.5); - cairo_rel_line_to (cr, 2.0, 0.0); - cairo_rel_line_to (cr, 0.0, 2.0); - - cairo_move_to (cr, 10.5, 8.5); - cairo_rel_line_to (cr, 0.0, 2.0); - cairo_rel_line_to (cr, -2.0, 0.0); - - cairo_move_to (cr, 2.5, 10.5); - cairo_rel_line_to (cr, -2.0, 0.0); - cairo_rel_line_to (cr, 0.0, -2.0); - - cairo_stroke (cr); - - /* Draw a closed-path rectangle */ - cairo_rectangle (cr, 0.5, 12.5, 10.0, 10.0); - cairo_set_dash (cr, dash_square, 4, 2); - cairo_stroke (cr); - - cairo_translate (cr, 12, 0); - - /* Now draw the same results, but with butt caps. */ - cairo_set_line_cap (cr, CAIRO_LINE_CAP_BUTT); - cairo_set_dash (cr, dash_butt, 4, 0.0); - - /* Draw horizontal and vertical segments, each in both - * directions. */ - cairo_move_to (cr, 4.0, 0.5); - cairo_rel_line_to (cr, 3.0, 0.0); - - cairo_move_to (cr, 10.5, 4.0); - cairo_rel_line_to (cr, 0.0, 3.0); - - cairo_move_to (cr, 7.0, 10.5); - cairo_rel_line_to (cr, -3.0, 0.0); - - cairo_move_to (cr, 0.5, 7.0); - cairo_rel_line_to (cr, 0.0, -3.0); - - /* Draw right angle turns in four directions. */ - cairo_move_to (cr, 0.5, 3.0); - cairo_rel_line_to (cr, 0.0, -2.5); - cairo_rel_line_to (cr, 2.5, 0.0); - - cairo_move_to (cr, 8.0, 0.5); - cairo_rel_line_to (cr, 2.5, 0.0); - cairo_rel_line_to (cr, 0.0, 2.5); - - cairo_move_to (cr, 10.5, 8.0); - cairo_rel_line_to (cr, 0.0, 2.5); - cairo_rel_line_to (cr, -2.5, 0.0); - - cairo_move_to (cr, 3.0, 10.5); - cairo_rel_line_to (cr, -2.5, 0.0); - cairo_rel_line_to (cr, 0.0, -2.5); - - cairo_stroke (cr); - - /* Draw a closed-path rectangle */ - cairo_set_dash (cr, dash_butt, 4, 2.5); - cairo_rectangle (cr, 0.5, 12.5, 10.0, 10.0); - cairo_stroke (cr); - - cairo_restore (cr); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - /* Paint background white, then draw in black. */ - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); - cairo_paint (cr); - - cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); - draw_dashes (cr); - - cairo_save (cr); - cairo_set_source_rgb (cr, 1.0, 0.0, 0.0); - cairo_translate (cr, 0, height); - cairo_scale (cr, 1, -1); - draw_dashes (cr); - cairo_restore (cr); - - cairo_save (cr); - cairo_set_source_rgb (cr, 0.0, 1.0, 0.0); - cairo_translate (cr, width, 0); - cairo_scale (cr, -1, 1); - draw_dashes (cr); - cairo_restore (cr); - - cairo_save (cr); - cairo_set_source_rgb (cr, 0.0, 0.0, 1.0); - cairo_translate (cr, width, height); - cairo_scale (cr, -1, -1); - draw_dashes (cr); - cairo_restore (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (rectilinear_dash, - "Test dashed rectilinear stroke operations (covering only whole pixels)", - "stroke, dash", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, draw) - diff --git a/test/rectilinear-fill.c b/test/rectilinear-fill.c deleted file mode 100644 index 3678379..0000000 --- a/test/rectilinear-fill.c +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright © 2008 Chris Wilson - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -#define SIZE 24 - -static void -draw_rectangles (cairo_t *cr) -{ - cairo_save (cr); - - /* test constructing single rectangles */ - cairo_rectangle (cr, 0, 0, SIZE/2, 2); - cairo_fill (cr); - - cairo_rectangle (cr, 0, 5, SIZE/2, -2); - cairo_fill (cr); - - cairo_rectangle (cr, SIZE/2, 6, -SIZE/2, 2); - cairo_fill (cr); - - cairo_rectangle (cr, SIZE/2, 11, -SIZE/2, -2); - cairo_fill (cr); - - /* test constructing multiple rectangles */ - cairo_translate (cr, 0, 12); - cairo_rectangle (cr, 0, 0, SIZE/2, 2); - cairo_rectangle (cr, 0, 5, SIZE/2, -2); - cairo_rectangle (cr, SIZE/2, 6, -SIZE/2, 2); - cairo_rectangle (cr, SIZE/2, 11, -SIZE/2, -2); - cairo_fill (cr); - - cairo_restore (cr); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - /* Paint background white, then draw in black. */ - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); /* white */ - cairo_paint (cr); - cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); /* black */ - - draw_rectangles (cr); - - /* and check using cw winding */ - cairo_translate (cr, SIZE, SIZE); - cairo_scale (cr, -1, 1); - - draw_rectangles (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (rectilinear_fill, - "Test rectilinear fill operations (covering only whole pixels)", - "fill, rectilinear", /* keywords */ - NULL, /* requirements */ - SIZE, 2 * SIZE, - NULL, draw) diff --git a/test/rectilinear-grid.c b/test/rectilinear-grid.c deleted file mode 100644 index 6d37c6b..0000000 --- a/test/rectilinear-grid.c +++ /dev/null @@ -1,92 +0,0 @@ -/* -*- Mode: c; c-basic-offset: 4; indent-tabs-mode: t; tab-width: 8; -*- */ -/* - * Copyright 2010 Andrea Canciani - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Andrea Canciani - */ - -#include "cairo-test.h" - -#define SIZE 52 -#define OFFSET 5 -#define DISTANCE 10.25 - -/* - This test checks that boxes not aligned to pixels are drawn - correctly. - - In particular the corners of the boxes are drawn incorrectly by - cairo-image in cairo 1.10.0, because overlapping boxes are passed to - a span converter which assumes disjoint boxes as input. - - This results in corners to be drawn with the wrong shade. -*/ - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - int i; - - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - cairo_set_operator (cr, CAIRO_OPERATOR_OVER); - cairo_set_source_rgb (cr, 0, 0, 0); - cairo_set_line_width (cr, 4); - cairo_translate (cr, 2*OFFSET, 2*OFFSET); - - for (i = 0; i < 4; i++) { - double x = i * DISTANCE; - - cairo_move_to (cr, x, -OFFSET-0.75); - cairo_line_to (cr, x, SIZE-3*OFFSET-0.25); - - cairo_move_to (cr, -OFFSET-0.75, x); - cairo_line_to (cr, SIZE-3*OFFSET-0.25, x); - } - - cairo_stroke (cr); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -aligned (cairo_t *cr, int width, int height) -{ - cairo_set_antialias (cr, CAIRO_ANTIALIAS_NONE); - return draw (cr, width, height); -} - -CAIRO_TEST (rectilinear_grid, - "Test rectilinear rasterizer (covering partial pixels)", - "rectilinear", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, draw) - -CAIRO_TEST (a1_rectilinear_grid, - "Test rectilinear rasterizer (covering whole pixels)", - "rectilinear", /* keywords */ - "target=raster", /* requirements */ - SIZE, SIZE, - NULL, aligned) diff --git a/test/rectilinear-miter-limit.c b/test/rectilinear-miter-limit.c deleted file mode 100644 index 581d98b..0000000 --- a/test/rectilinear-miter-limit.c +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright © 2008 Red Hat, Inc. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" - -#define LINE_WIDTH 10 -#define PAD 2 -#define WIDTH (PAD + LINE_WIDTH + PAD) -#define HEIGHT (WIDTH) - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_translate (cr, PAD, PAD); - - /* Paint background white, then draw in black. */ - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); /* white */ - cairo_paint (cr); - cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); /* black */ - - cairo_set_line_cap (cr, CAIRO_LINE_CAP_BUTT); - cairo_set_line_width (cr, LINE_WIDTH); - - /* The default miter limit value of 10.0 guarantees that - * right-angle turns, (in fact, any angle greater than 11 - * degrees), gets a miter rather than a bevel join. The - * rectilinear stroke optimization was originally written in a - * buggy way that did not respect the miter limit, (that is, - * inappropriately drawing miter joins when the miter limit would - * turn them into bevels). So we draw here with a miter limit of - * 1.0 to force all miter joins into bevels. */ - cairo_set_line_join (cr, CAIRO_LINE_JOIN_MITER); - cairo_set_miter_limit (cr, 1.0); - - cairo_move_to (cr, LINE_WIDTH / 2.0, LINE_WIDTH); - cairo_rel_line_to (cr, 0, - LINE_WIDTH / 2.0); - cairo_rel_line_to (cr, LINE_WIDTH / 2.0, 0); - - cairo_stroke (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (rectilinear_miter_limit, - "Test that the rectilinear stroke optimization doesn't break cairo_set_miter_limit", - "miter, stroke, stress", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/rectilinear-stroke.c b/test/rectilinear-stroke.c deleted file mode 100644 index e05ff8c..0000000 --- a/test/rectilinear-stroke.c +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Copyright © 2006 Red Hat, Inc. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" - -#define SIZE 25 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - /* Paint background white, then draw in black. */ - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); /* white */ - cairo_paint (cr); - cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); /* black */ - - cairo_set_line_width (cr, 1.0); - cairo_translate (cr, 1, 1); - - /* Draw everything first with square caps. */ - cairo_set_line_cap (cr, CAIRO_LINE_CAP_SQUARE); - - /* Draw horizontal and vertical segments, each in both - * directions. */ - cairo_move_to (cr, 4.5, 0.5); - cairo_rel_line_to (cr, 2.0, 0.0); - - cairo_move_to (cr, 10.5, 4.5); - cairo_rel_line_to (cr, 0.0, 2.0); - - cairo_move_to (cr, 6.5, 10.5); - cairo_rel_line_to (cr, -2.0, 0.0); - - cairo_move_to (cr, 0.5, 6.5); - cairo_rel_line_to (cr, 0.0, -2.0); - - /* Draw right angle turns in four directions. */ - cairo_move_to (cr, 0.5, 2.5); - cairo_rel_line_to (cr, 0.0, -2.0); - cairo_rel_line_to (cr, 2.0, 0.0); - - cairo_move_to (cr, 8.5, 0.5); - cairo_rel_line_to (cr, 2.0, 0.0); - cairo_rel_line_to (cr, 0.0, 2.0); - - cairo_move_to (cr, 10.5, 8.5); - cairo_rel_line_to (cr, 0.0, 2.0); - cairo_rel_line_to (cr, -2.0, 0.0); - - cairo_move_to (cr, 2.5, 10.5); - cairo_rel_line_to (cr, -2.0, 0.0); - cairo_rel_line_to (cr, 0.0, -2.0); - - /* Draw a closed-path rectangle */ - cairo_rectangle (cr, 0.5, 12.5, 10.0, 10.0); - - cairo_stroke (cr); - - cairo_translate (cr, 12, 0); - - /* Now draw the same results, but with butt caps. */ - cairo_set_line_cap (cr, CAIRO_LINE_CAP_BUTT); - - /* Draw horizontal and vertical segments, each in both - * directions. */ - cairo_move_to (cr, 4.0, 0.5); - cairo_rel_line_to (cr, 3.0, 0.0); - - cairo_move_to (cr, 10.5, 4.0); - cairo_rel_line_to (cr, 0.0, 3.0); - - cairo_move_to (cr, 7.0, 10.5); - cairo_rel_line_to (cr, -3.0, 0.0); - - cairo_move_to (cr, 0.5, 7.0); - cairo_rel_line_to (cr, 0.0, -3.0); - - /* Draw right angle turns in four directions. */ - cairo_move_to (cr, 0.5, 3.0); - cairo_rel_line_to (cr, 0.0, -2.5); - cairo_rel_line_to (cr, 2.5, 0.0); - - cairo_move_to (cr, 8.0, 0.5); - cairo_rel_line_to (cr, 2.5, 0.0); - cairo_rel_line_to (cr, 0.0, 2.5); - - cairo_move_to (cr, 10.5, 8.0); - cairo_rel_line_to (cr, 0.0, 2.5); - cairo_rel_line_to (cr, -2.5, 0.0); - - cairo_move_to (cr, 3.0, 10.5); - cairo_rel_line_to (cr, -2.5, 0.0); - cairo_rel_line_to (cr, 0.0, -2.5); - - /* Draw a closed-path rectangle */ - cairo_rectangle (cr, 0.5, 12.5, 10.0, 10.0); - - /* Draw a path that is rectilinear initially, but not completely */ - /* We draw this out of the target window. The bug that caused this - * addition was leaks if part of the path was rectilinear but not - * completely */ - cairo_move_to (cr, 3.0, 30.5); - cairo_rel_line_to (cr, -2.5, 0.0); - cairo_rel_line_to (cr, +2.5, +2.5); - - cairo_stroke (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (rectilinear_stroke, - "Test rectilinear stroke operations (covering only whole pixels)", - "stroke", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, draw) - diff --git a/test/reference/a1-bug.base.argb32.ref.png b/test/reference/a1-bug.base.argb32.ref.png deleted file mode 100644 index 4b08e06..0000000 Binary files a/test/reference/a1-bug.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/a1-bug.base.rgb24.ref.png b/test/reference/a1-bug.base.rgb24.ref.png deleted file mode 100644 index 4b08e06..0000000 Binary files a/test/reference/a1-bug.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/a1-bug.image16.ref.png b/test/reference/a1-bug.image16.ref.png deleted file mode 100644 index 48ce4b6..0000000 Binary files a/test/reference/a1-bug.image16.ref.png and /dev/null differ diff --git a/test/reference/a1-bug.mask.argb32.ref.png b/test/reference/a1-bug.mask.argb32.ref.png deleted file mode 100644 index f9ae8a8..0000000 Binary files a/test/reference/a1-bug.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/a1-bug.mask.rgb24.ref.png b/test/reference/a1-bug.mask.rgb24.ref.png deleted file mode 100644 index f9ae8a8..0000000 Binary files a/test/reference/a1-bug.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/a1-bug.quartz.xfail.png b/test/reference/a1-bug.quartz.xfail.png deleted file mode 100644 index 4ed3793..0000000 Binary files a/test/reference/a1-bug.quartz.xfail.png and /dev/null differ diff --git a/test/reference/a1-bug.ref.png b/test/reference/a1-bug.ref.png deleted file mode 100644 index dc6ff93..0000000 Binary files a/test/reference/a1-bug.ref.png and /dev/null differ diff --git a/test/reference/a1-bug.traps.argb32.ref.png b/test/reference/a1-bug.traps.argb32.ref.png deleted file mode 100644 index 4b08e06..0000000 Binary files a/test/reference/a1-bug.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/a1-bug.traps.rgb24.ref.png b/test/reference/a1-bug.traps.rgb24.ref.png deleted file mode 100644 index 4b08e06..0000000 Binary files a/test/reference/a1-bug.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/a1-clip-fill-equal.base.argb32.ref.png b/test/reference/a1-clip-fill-equal.base.argb32.ref.png deleted file mode 100644 index 384ba4a..0000000 Binary files a/test/reference/a1-clip-fill-equal.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/a1-clip-fill-equal.base.rgb24.ref.png b/test/reference/a1-clip-fill-equal.base.rgb24.ref.png deleted file mode 100644 index 384ba4a..0000000 Binary files a/test/reference/a1-clip-fill-equal.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/a1-clip-fill-equal.ref.png b/test/reference/a1-clip-fill-equal.ref.png deleted file mode 100644 index 384ba4a..0000000 Binary files a/test/reference/a1-clip-fill-equal.ref.png and /dev/null differ diff --git a/test/reference/a1-clip-fill-rule.base.argb32.ref.png b/test/reference/a1-clip-fill-rule.base.argb32.ref.png deleted file mode 100644 index c3ba9dd..0000000 Binary files a/test/reference/a1-clip-fill-rule.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/a1-clip-fill-rule.base.rgb24.ref.png b/test/reference/a1-clip-fill-rule.base.rgb24.ref.png deleted file mode 100644 index 6fe9346..0000000 Binary files a/test/reference/a1-clip-fill-rule.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/a1-clip-fill-rule.ref.png b/test/reference/a1-clip-fill-rule.ref.png deleted file mode 100644 index c3ba9dd..0000000 Binary files a/test/reference/a1-clip-fill-rule.ref.png and /dev/null differ diff --git a/test/reference/a1-clip-fill.base.argb32.ref.png b/test/reference/a1-clip-fill.base.argb32.ref.png deleted file mode 100644 index 384ba4a..0000000 Binary files a/test/reference/a1-clip-fill.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/a1-clip-fill.base.rgb24.ref.png b/test/reference/a1-clip-fill.base.rgb24.ref.png deleted file mode 100644 index 384ba4a..0000000 Binary files a/test/reference/a1-clip-fill.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/a1-clip-fill.ref.png b/test/reference/a1-clip-fill.ref.png deleted file mode 100644 index 384ba4a..0000000 Binary files a/test/reference/a1-clip-fill.ref.png and /dev/null differ diff --git a/test/reference/a1-clip-paint.base.argb32.ref.png b/test/reference/a1-clip-paint.base.argb32.ref.png deleted file mode 100644 index 384ba4a..0000000 Binary files a/test/reference/a1-clip-paint.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/a1-clip-paint.base.rgb24.ref.png b/test/reference/a1-clip-paint.base.rgb24.ref.png deleted file mode 100644 index 384ba4a..0000000 Binary files a/test/reference/a1-clip-paint.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/a1-clip-paint.ref.png b/test/reference/a1-clip-paint.ref.png deleted file mode 100644 index 384ba4a..0000000 Binary files a/test/reference/a1-clip-paint.ref.png and /dev/null differ diff --git a/test/reference/a1-clip-stroke.base.argb32.ref.png b/test/reference/a1-clip-stroke.base.argb32.ref.png deleted file mode 100644 index 384ba4a..0000000 Binary files a/test/reference/a1-clip-stroke.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/a1-clip-stroke.base.rgb24.ref.png b/test/reference/a1-clip-stroke.base.rgb24.ref.png deleted file mode 100644 index 384ba4a..0000000 Binary files a/test/reference/a1-clip-stroke.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/a1-clip-stroke.ref.png b/test/reference/a1-clip-stroke.ref.png deleted file mode 100644 index 384ba4a..0000000 Binary files a/test/reference/a1-clip-stroke.ref.png and /dev/null differ diff --git a/test/reference/a1-fill.base.argb32.ref.png b/test/reference/a1-fill.base.argb32.ref.png deleted file mode 100644 index e40202b..0000000 Binary files a/test/reference/a1-fill.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/a1-fill.base.rgb24.ref.png b/test/reference/a1-fill.base.rgb24.ref.png deleted file mode 100644 index e40202b..0000000 Binary files a/test/reference/a1-fill.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/a1-fill.ref.png b/test/reference/a1-fill.ref.png deleted file mode 100644 index e40202b..0000000 Binary files a/test/reference/a1-fill.ref.png and /dev/null differ diff --git a/test/reference/a1-image-sample.base.argb32.ref.png b/test/reference/a1-image-sample.base.argb32.ref.png deleted file mode 100644 index b8fd457..0000000 Binary files a/test/reference/a1-image-sample.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/a1-image-sample.base.rgb24.ref.png b/test/reference/a1-image-sample.base.rgb24.ref.png deleted file mode 100644 index b8fd457..0000000 Binary files a/test/reference/a1-image-sample.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/a1-image-sample.gl.xfail.png b/test/reference/a1-image-sample.gl.xfail.png deleted file mode 100644 index 384ba4a..0000000 Binary files a/test/reference/a1-image-sample.gl.xfail.png and /dev/null differ diff --git a/test/reference/a1-image-sample.ref.png b/test/reference/a1-image-sample.ref.png deleted file mode 100644 index b4e81eb..0000000 Binary files a/test/reference/a1-image-sample.ref.png and /dev/null differ diff --git a/test/reference/a1-line-width.base.argb32.ref.png b/test/reference/a1-line-width.base.argb32.ref.png deleted file mode 100644 index 35d9cad..0000000 Binary files a/test/reference/a1-line-width.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/a1-line-width.base.rgb24.ref.png b/test/reference/a1-line-width.base.rgb24.ref.png deleted file mode 100644 index 35d9cad..0000000 Binary files a/test/reference/a1-line-width.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/a1-line-width.pdf.ref.png b/test/reference/a1-line-width.pdf.ref.png deleted file mode 100644 index 41a06e7..0000000 Binary files a/test/reference/a1-line-width.pdf.ref.png and /dev/null differ diff --git a/test/reference/a1-line-width.ps.ref.png b/test/reference/a1-line-width.ps.ref.png deleted file mode 100644 index c52f8d8..0000000 Binary files a/test/reference/a1-line-width.ps.ref.png and /dev/null differ diff --git a/test/reference/a1-line-width.ref.png b/test/reference/a1-line-width.ref.png deleted file mode 100644 index 35d9cad..0000000 Binary files a/test/reference/a1-line-width.ref.png and /dev/null differ diff --git a/test/reference/a1-mask-sample.base.argb32.ref.png b/test/reference/a1-mask-sample.base.argb32.ref.png deleted file mode 100644 index b8fd457..0000000 Binary files a/test/reference/a1-mask-sample.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/a1-mask-sample.base.rgb24.ref.png b/test/reference/a1-mask-sample.base.rgb24.ref.png deleted file mode 100644 index b8fd457..0000000 Binary files a/test/reference/a1-mask-sample.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/a1-mask-sample.ref.png b/test/reference/a1-mask-sample.ref.png deleted file mode 100644 index b4e81eb..0000000 Binary files a/test/reference/a1-mask-sample.ref.png and /dev/null differ diff --git a/test/reference/a1-mask.base.argb32.ref.png b/test/reference/a1-mask.base.argb32.ref.png deleted file mode 100644 index 864fc10..0000000 Binary files a/test/reference/a1-mask.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/a1-mask.base.rgb24.ref.png b/test/reference/a1-mask.base.rgb24.ref.png deleted file mode 100644 index 864fc10..0000000 Binary files a/test/reference/a1-mask.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/a1-mask.ref.png b/test/reference/a1-mask.ref.png deleted file mode 100644 index ac4d97a..0000000 Binary files a/test/reference/a1-mask.ref.png and /dev/null differ diff --git a/test/reference/a1-rasterisation-rectangles.base.argb32.ref.png b/test/reference/a1-rasterisation-rectangles.base.argb32.ref.png deleted file mode 100644 index 784cf87..0000000 Binary files a/test/reference/a1-rasterisation-rectangles.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/a1-rasterisation-rectangles.base.rgb24.ref.png b/test/reference/a1-rasterisation-rectangles.base.rgb24.ref.png deleted file mode 100644 index 784cf87..0000000 Binary files a/test/reference/a1-rasterisation-rectangles.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/a1-rasterisation-rectangles.quartz.xfail.png b/test/reference/a1-rasterisation-rectangles.quartz.xfail.png deleted file mode 100644 index f8f3bf8..0000000 Binary files a/test/reference/a1-rasterisation-rectangles.quartz.xfail.png and /dev/null differ diff --git a/test/reference/a1-rasterisation-rectangles.ref.png b/test/reference/a1-rasterisation-rectangles.ref.png deleted file mode 100644 index 784cf87..0000000 Binary files a/test/reference/a1-rasterisation-rectangles.ref.png and /dev/null differ diff --git a/test/reference/a1-rasterisation-triangles.base.argb32.ref.png b/test/reference/a1-rasterisation-triangles.base.argb32.ref.png deleted file mode 100644 index 784cf87..0000000 Binary files a/test/reference/a1-rasterisation-triangles.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/a1-rasterisation-triangles.base.rgb24.ref.png b/test/reference/a1-rasterisation-triangles.base.rgb24.ref.png deleted file mode 100644 index 784cf87..0000000 Binary files a/test/reference/a1-rasterisation-triangles.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/a1-rasterisation-triangles.quartz.xfail.png b/test/reference/a1-rasterisation-triangles.quartz.xfail.png deleted file mode 100644 index f8f3bf8..0000000 Binary files a/test/reference/a1-rasterisation-triangles.quartz.xfail.png and /dev/null differ diff --git a/test/reference/a1-rasterisation-triangles.ref.png b/test/reference/a1-rasterisation-triangles.ref.png deleted file mode 100644 index 784cf87..0000000 Binary files a/test/reference/a1-rasterisation-triangles.ref.png and /dev/null differ diff --git a/test/reference/a1-rectilinear-grid.base.argb32.ref.png b/test/reference/a1-rectilinear-grid.base.argb32.ref.png deleted file mode 100644 index 2dfb85e..0000000 Binary files a/test/reference/a1-rectilinear-grid.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/a1-rectilinear-grid.base.rgb24.ref.png b/test/reference/a1-rectilinear-grid.base.rgb24.ref.png deleted file mode 100644 index 2dfb85e..0000000 Binary files a/test/reference/a1-rectilinear-grid.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/a1-rectilinear-grid.ref.png b/test/reference/a1-rectilinear-grid.ref.png deleted file mode 100644 index 2dfb85e..0000000 Binary files a/test/reference/a1-rectilinear-grid.ref.png and /dev/null differ diff --git a/test/reference/a1-sample.base.argb32.ref.png b/test/reference/a1-sample.base.argb32.ref.png deleted file mode 100644 index 4c6131c..0000000 Binary files a/test/reference/a1-sample.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/a1-sample.base.rgb24.ref.png b/test/reference/a1-sample.base.rgb24.ref.png deleted file mode 100644 index 4c6131c..0000000 Binary files a/test/reference/a1-sample.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/a1-sample.ref.png b/test/reference/a1-sample.ref.png deleted file mode 100644 index 4c6131c..0000000 Binary files a/test/reference/a1-sample.ref.png and /dev/null differ diff --git a/test/reference/a1-tiger.base.argb32.ref.png b/test/reference/a1-tiger.base.argb32.ref.png deleted file mode 100644 index 3847282..0000000 Binary files a/test/reference/a1-tiger.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/a1-tiger.base.rgb24.ref.png b/test/reference/a1-tiger.base.rgb24.ref.png deleted file mode 100644 index 3847282..0000000 Binary files a/test/reference/a1-tiger.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/a1-tiger.mask.argb32.ref.png b/test/reference/a1-tiger.mask.argb32.ref.png deleted file mode 100644 index 9a62af7..0000000 Binary files a/test/reference/a1-tiger.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/a1-tiger.mask.rgb24.ref.png b/test/reference/a1-tiger.mask.rgb24.ref.png deleted file mode 100644 index 9a62af7..0000000 Binary files a/test/reference/a1-tiger.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/a1-tiger.ref.png b/test/reference/a1-tiger.ref.png deleted file mode 100644 index cc641e2..0000000 Binary files a/test/reference/a1-tiger.ref.png and /dev/null differ diff --git a/test/reference/a1-tiger.traps.argb32.ref.png b/test/reference/a1-tiger.traps.argb32.ref.png deleted file mode 100644 index cc641e2..0000000 Binary files a/test/reference/a1-tiger.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/a1-tiger.traps.rgb24.ref.png b/test/reference/a1-tiger.traps.rgb24.ref.png deleted file mode 100644 index cc641e2..0000000 Binary files a/test/reference/a1-tiger.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/a1-traps-sample.base.argb32.ref.png b/test/reference/a1-traps-sample.base.argb32.ref.png deleted file mode 100644 index 384ba4a..0000000 Binary files a/test/reference/a1-traps-sample.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/a1-traps-sample.base.rgb24.ref.png b/test/reference/a1-traps-sample.base.rgb24.ref.png deleted file mode 100644 index 384ba4a..0000000 Binary files a/test/reference/a1-traps-sample.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/a1-traps-sample.quartz.xfail.png b/test/reference/a1-traps-sample.quartz.xfail.png deleted file mode 100644 index c89f4fe..0000000 Binary files a/test/reference/a1-traps-sample.quartz.xfail.png and /dev/null differ diff --git a/test/reference/a1-traps-sample.ref.png b/test/reference/a1-traps-sample.ref.png deleted file mode 100644 index 384ba4a..0000000 Binary files a/test/reference/a1-traps-sample.ref.png and /dev/null differ diff --git a/test/reference/a8-clear.base.argb32.ref.png b/test/reference/a8-clear.base.argb32.ref.png deleted file mode 100644 index 5201080..0000000 Binary files a/test/reference/a8-clear.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/a8-clear.base.rgb24.ref.png b/test/reference/a8-clear.base.rgb24.ref.png deleted file mode 100644 index 5201080..0000000 Binary files a/test/reference/a8-clear.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/a8-clear.quartz.ref.png b/test/reference/a8-clear.quartz.ref.png deleted file mode 100644 index 5b7c67f..0000000 Binary files a/test/reference/a8-clear.quartz.ref.png and /dev/null differ diff --git a/test/reference/a8-clear.ref.png b/test/reference/a8-clear.ref.png deleted file mode 100644 index dbf4549..0000000 Binary files a/test/reference/a8-clear.ref.png and /dev/null differ diff --git a/test/reference/a8-clear.traps.argb32.ref.png b/test/reference/a8-clear.traps.argb32.ref.png deleted file mode 100644 index 5201080..0000000 Binary files a/test/reference/a8-clear.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/a8-clear.traps.rgb24.ref.png b/test/reference/a8-clear.traps.rgb24.ref.png deleted file mode 100644 index 5201080..0000000 Binary files a/test/reference/a8-clear.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/a8-mask.base.argb32.ref.png b/test/reference/a8-mask.base.argb32.ref.png deleted file mode 100644 index e0503d9..0000000 Binary files a/test/reference/a8-mask.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/a8-mask.base.rgb24.ref.png b/test/reference/a8-mask.base.rgb24.ref.png deleted file mode 100644 index e0503d9..0000000 Binary files a/test/reference/a8-mask.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/a8-mask.ref.png b/test/reference/a8-mask.ref.png deleted file mode 100644 index 3855615..0000000 Binary files a/test/reference/a8-mask.ref.png and /dev/null differ diff --git a/test/reference/aliasing.base.argb32.ref.png b/test/reference/aliasing.base.argb32.ref.png deleted file mode 100644 index a88dbe2..0000000 Binary files a/test/reference/aliasing.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/aliasing.base.rgb24.ref.png b/test/reference/aliasing.base.rgb24.ref.png deleted file mode 100644 index a88dbe2..0000000 Binary files a/test/reference/aliasing.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/aliasing.image16.ref.png b/test/reference/aliasing.image16.ref.png deleted file mode 100644 index c763333..0000000 Binary files a/test/reference/aliasing.image16.ref.png and /dev/null differ diff --git a/test/reference/aliasing.quartz.ref.png b/test/reference/aliasing.quartz.ref.png deleted file mode 100644 index f4b6e22..0000000 Binary files a/test/reference/aliasing.quartz.ref.png and /dev/null differ diff --git a/test/reference/aliasing.ref.png b/test/reference/aliasing.ref.png deleted file mode 100644 index 35bdb18..0000000 Binary files a/test/reference/aliasing.ref.png and /dev/null differ diff --git a/test/reference/aliasing.traps.argb32.ref.png b/test/reference/aliasing.traps.argb32.ref.png deleted file mode 100644 index a88dbe2..0000000 Binary files a/test/reference/aliasing.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/aliasing.traps.rgb24.ref.png b/test/reference/aliasing.traps.rgb24.ref.png deleted file mode 100644 index a88dbe2..0000000 Binary files a/test/reference/aliasing.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/alpha-similar.base.argb32.ref.png b/test/reference/alpha-similar.base.argb32.ref.png deleted file mode 100644 index 9e1bfaa..0000000 Binary files a/test/reference/alpha-similar.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/alpha-similar.base.rgb24.ref.png b/test/reference/alpha-similar.base.rgb24.ref.png deleted file mode 100644 index a1f5280..0000000 Binary files a/test/reference/alpha-similar.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/alpha-similar.gl.argb32.xfail.png b/test/reference/alpha-similar.gl.argb32.xfail.png deleted file mode 100644 index 579aae1..0000000 Binary files a/test/reference/alpha-similar.gl.argb32.xfail.png and /dev/null differ diff --git a/test/reference/alpha-similar.gl.rgb24.xfail.png b/test/reference/alpha-similar.gl.rgb24.xfail.png deleted file mode 100644 index 86366d2..0000000 Binary files a/test/reference/alpha-similar.gl.rgb24.xfail.png and /dev/null differ diff --git a/test/reference/alpha-similar.pdf.argb32.xfail.png b/test/reference/alpha-similar.pdf.argb32.xfail.png deleted file mode 100644 index 75aa600..0000000 Binary files a/test/reference/alpha-similar.pdf.argb32.xfail.png and /dev/null differ diff --git a/test/reference/alpha-similar.pdf.rgb24.xfail.png b/test/reference/alpha-similar.pdf.rgb24.xfail.png deleted file mode 100644 index 86366d2..0000000 Binary files a/test/reference/alpha-similar.pdf.rgb24.xfail.png and /dev/null differ diff --git a/test/reference/alpha-similar.ps.argb32.xfail.png b/test/reference/alpha-similar.ps.argb32.xfail.png deleted file mode 100644 index 75aa600..0000000 Binary files a/test/reference/alpha-similar.ps.argb32.xfail.png and /dev/null differ diff --git a/test/reference/alpha-similar.ps.rgb24.xfail.png b/test/reference/alpha-similar.ps.rgb24.xfail.png deleted file mode 100644 index 15a6aa1..0000000 Binary files a/test/reference/alpha-similar.ps.rgb24.xfail.png and /dev/null differ diff --git a/test/reference/alpha-similar.ref.png b/test/reference/alpha-similar.ref.png deleted file mode 100644 index 9e1bfaa..0000000 Binary files a/test/reference/alpha-similar.ref.png and /dev/null differ diff --git a/test/reference/alpha-similar.svg.argb32.xfail.png b/test/reference/alpha-similar.svg.argb32.xfail.png deleted file mode 100644 index 2ade632..0000000 Binary files a/test/reference/alpha-similar.svg.argb32.xfail.png and /dev/null differ diff --git a/test/reference/alpha-similar.svg.rgb24.xfail.png b/test/reference/alpha-similar.svg.rgb24.xfail.png deleted file mode 100644 index c236898..0000000 Binary files a/test/reference/alpha-similar.svg.rgb24.xfail.png and /dev/null differ diff --git a/test/reference/api-special-cases.base.argb32.ref.png b/test/reference/api-special-cases.base.argb32.ref.png deleted file mode 100644 index 56b88a9..0000000 Binary files a/test/reference/api-special-cases.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/api-special-cases.base.rgb24.ref.png b/test/reference/api-special-cases.base.rgb24.ref.png deleted file mode 100644 index 56b88a9..0000000 Binary files a/test/reference/api-special-cases.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/api-special-cases.ref.png b/test/reference/api-special-cases.ref.png deleted file mode 100644 index 56b88a9..0000000 Binary files a/test/reference/api-special-cases.ref.png and /dev/null differ diff --git a/test/reference/arc-direction.base.argb32.ref.png b/test/reference/arc-direction.base.argb32.ref.png deleted file mode 100644 index 2790a2b..0000000 Binary files a/test/reference/arc-direction.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/arc-direction.base.rgb24.ref.png b/test/reference/arc-direction.base.rgb24.ref.png deleted file mode 100644 index 2790a2b..0000000 Binary files a/test/reference/arc-direction.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/arc-direction.ps.ref.png b/test/reference/arc-direction.ps.ref.png deleted file mode 100644 index 902ab45..0000000 Binary files a/test/reference/arc-direction.ps.ref.png and /dev/null differ diff --git a/test/reference/arc-direction.ref.png b/test/reference/arc-direction.ref.png deleted file mode 100644 index 05ff410..0000000 Binary files a/test/reference/arc-direction.ref.png and /dev/null differ diff --git a/test/reference/arc-direction.traps.ref.png b/test/reference/arc-direction.traps.ref.png deleted file mode 100644 index 2790a2b..0000000 Binary files a/test/reference/arc-direction.traps.ref.png and /dev/null differ diff --git a/test/reference/arc-infinite-loop.base.argb32.ref.png b/test/reference/arc-infinite-loop.base.argb32.ref.png deleted file mode 100644 index 82d645f..0000000 Binary files a/test/reference/arc-infinite-loop.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/arc-infinite-loop.base.rgb24.ref.png b/test/reference/arc-infinite-loop.base.rgb24.ref.png deleted file mode 100644 index 82d645f..0000000 Binary files a/test/reference/arc-infinite-loop.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/arc-infinite-loop.ref.png b/test/reference/arc-infinite-loop.ref.png deleted file mode 100644 index 82d645f..0000000 Binary files a/test/reference/arc-infinite-loop.ref.png and /dev/null differ diff --git a/test/reference/arc-looping-dash.image16.ref.png b/test/reference/arc-looping-dash.image16.ref.png deleted file mode 100644 index addc93c..0000000 Binary files a/test/reference/arc-looping-dash.image16.ref.png and /dev/null differ diff --git a/test/reference/arc-looping-dash.mask.argb32.ref.png b/test/reference/arc-looping-dash.mask.argb32.ref.png deleted file mode 100644 index 516e66c..0000000 Binary files a/test/reference/arc-looping-dash.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/arc-looping-dash.mask.rgb24.ref.png b/test/reference/arc-looping-dash.mask.rgb24.ref.png deleted file mode 100644 index 516e66c..0000000 Binary files a/test/reference/arc-looping-dash.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/arc-looping-dash.ps.ref.png b/test/reference/arc-looping-dash.ps.ref.png deleted file mode 100644 index ab19b19..0000000 Binary files a/test/reference/arc-looping-dash.ps.ref.png and /dev/null differ diff --git a/test/reference/arc-looping-dash.quartz.ref.png b/test/reference/arc-looping-dash.quartz.ref.png deleted file mode 100644 index 70304ca..0000000 Binary files a/test/reference/arc-looping-dash.quartz.ref.png and /dev/null differ diff --git a/test/reference/arc-looping-dash.ref.png b/test/reference/arc-looping-dash.ref.png deleted file mode 100644 index 516e66c..0000000 Binary files a/test/reference/arc-looping-dash.ref.png and /dev/null differ diff --git a/test/reference/arc-looping-dash.traps.argb32.ref.png b/test/reference/arc-looping-dash.traps.argb32.ref.png deleted file mode 100644 index 58801cc..0000000 Binary files a/test/reference/arc-looping-dash.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/arc-looping-dash.traps.rgb24.ref.png b/test/reference/arc-looping-dash.traps.rgb24.ref.png deleted file mode 100644 index 58801cc..0000000 Binary files a/test/reference/arc-looping-dash.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/big-empty-box.base.argb32.ref.png b/test/reference/big-empty-box.base.argb32.ref.png deleted file mode 100644 index a88d3b6..0000000 Binary files a/test/reference/big-empty-box.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/big-empty-box.base.rgb24.ref.png b/test/reference/big-empty-box.base.rgb24.ref.png deleted file mode 100644 index 6c2ca32..0000000 Binary files a/test/reference/big-empty-box.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/big-empty-box.ref.png b/test/reference/big-empty-box.ref.png deleted file mode 100644 index a88d3b6..0000000 Binary files a/test/reference/big-empty-box.ref.png and /dev/null differ diff --git a/test/reference/big-empty-triangle.base.argb32.ref.png b/test/reference/big-empty-triangle.base.argb32.ref.png deleted file mode 100644 index a88d3b6..0000000 Binary files a/test/reference/big-empty-triangle.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/big-empty-triangle.base.rgb24.ref.png b/test/reference/big-empty-triangle.base.rgb24.ref.png deleted file mode 100644 index 6c2ca32..0000000 Binary files a/test/reference/big-empty-triangle.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/big-empty-triangle.ref.png b/test/reference/big-empty-triangle.ref.png deleted file mode 100644 index a88d3b6..0000000 Binary files a/test/reference/big-empty-triangle.ref.png and /dev/null differ diff --git a/test/reference/big-line.base.argb32.ref.png b/test/reference/big-line.base.argb32.ref.png deleted file mode 100644 index 35d2e36..0000000 Binary files a/test/reference/big-line.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/big-line.base.rgb24.ref.png b/test/reference/big-line.base.rgb24.ref.png deleted file mode 100644 index 35d2e36..0000000 Binary files a/test/reference/big-line.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/big-line.image16.ref.png b/test/reference/big-line.image16.ref.png deleted file mode 100644 index 47e33b8..0000000 Binary files a/test/reference/big-line.image16.ref.png and /dev/null differ diff --git a/test/reference/big-line.ps.ref.png b/test/reference/big-line.ps.ref.png deleted file mode 100644 index 7b7e875..0000000 Binary files a/test/reference/big-line.ps.ref.png and /dev/null differ diff --git a/test/reference/big-line.quartz.ref.png b/test/reference/big-line.quartz.ref.png deleted file mode 100644 index a6f7240..0000000 Binary files a/test/reference/big-line.quartz.ref.png and /dev/null differ diff --git a/test/reference/big-line.ref.png b/test/reference/big-line.ref.png deleted file mode 100644 index 2f35bfa..0000000 Binary files a/test/reference/big-line.ref.png and /dev/null differ diff --git a/test/reference/big-line.traps.argb32.ref.png b/test/reference/big-line.traps.argb32.ref.png deleted file mode 100644 index 35d2e36..0000000 Binary files a/test/reference/big-line.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/big-line.traps.rgb24.ref.png b/test/reference/big-line.traps.rgb24.ref.png deleted file mode 100644 index 35d2e36..0000000 Binary files a/test/reference/big-line.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/big-little-box.base.argb32.ref.png b/test/reference/big-little-box.base.argb32.ref.png deleted file mode 100644 index 928c5e6..0000000 Binary files a/test/reference/big-little-box.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/big-little-box.base.rgb24.ref.png b/test/reference/big-little-box.base.rgb24.ref.png deleted file mode 100644 index c069d6f..0000000 Binary files a/test/reference/big-little-box.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/big-little-box.ref.png b/test/reference/big-little-box.ref.png deleted file mode 100644 index 928c5e6..0000000 Binary files a/test/reference/big-little-box.ref.png and /dev/null differ diff --git a/test/reference/big-little-triangle.argb32.ref.png b/test/reference/big-little-triangle.argb32.ref.png deleted file mode 100644 index 5308cce..0000000 Binary files a/test/reference/big-little-triangle.argb32.ref.png and /dev/null differ diff --git a/test/reference/big-little-triangle.base.argb32.ref.png b/test/reference/big-little-triangle.base.argb32.ref.png deleted file mode 100644 index 5308cce..0000000 Binary files a/test/reference/big-little-triangle.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/big-little-triangle.base.rgb24.ref.png b/test/reference/big-little-triangle.base.rgb24.ref.png deleted file mode 100644 index 9e4773b..0000000 Binary files a/test/reference/big-little-triangle.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/big-little-triangle.rgb24.ref.png b/test/reference/big-little-triangle.rgb24.ref.png deleted file mode 100644 index 9e4773b..0000000 Binary files a/test/reference/big-little-triangle.rgb24.ref.png and /dev/null differ diff --git a/test/reference/big-little-triangle.traps.argb32.ref.png b/test/reference/big-little-triangle.traps.argb32.ref.png deleted file mode 100644 index 5308cce..0000000 Binary files a/test/reference/big-little-triangle.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/big-little-triangle.traps.rgb24.ref.png b/test/reference/big-little-triangle.traps.rgb24.ref.png deleted file mode 100644 index 9e4773b..0000000 Binary files a/test/reference/big-little-triangle.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/big-trap.base.argb32.ref.png b/test/reference/big-trap.base.argb32.ref.png deleted file mode 100644 index c0975c9..0000000 Binary files a/test/reference/big-trap.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/big-trap.base.rgb24.ref.png b/test/reference/big-trap.base.rgb24.ref.png deleted file mode 100644 index c0975c9..0000000 Binary files a/test/reference/big-trap.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/big-trap.mask.argb32.ref.png b/test/reference/big-trap.mask.argb32.ref.png deleted file mode 100644 index c0975c9..0000000 Binary files a/test/reference/big-trap.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/big-trap.mask.rgb24.ref.png b/test/reference/big-trap.mask.rgb24.ref.png deleted file mode 100644 index c0975c9..0000000 Binary files a/test/reference/big-trap.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/big-trap.traps.argb32.ref.png b/test/reference/big-trap.traps.argb32.ref.png deleted file mode 100644 index c0975c9..0000000 Binary files a/test/reference/big-trap.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/big-trap.traps.rgb24.ref.png b/test/reference/big-trap.traps.rgb24.ref.png deleted file mode 100644 index c0975c9..0000000 Binary files a/test/reference/big-trap.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/bilevel-image.base.argb32.ref.png b/test/reference/bilevel-image.base.argb32.ref.png deleted file mode 100644 index 3fb25c2..0000000 Binary files a/test/reference/bilevel-image.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/bilevel-image.base.rgb24.ref.png b/test/reference/bilevel-image.base.rgb24.ref.png deleted file mode 100644 index 3fb25c2..0000000 Binary files a/test/reference/bilevel-image.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/bilevel-image.ref.png b/test/reference/bilevel-image.ref.png deleted file mode 100644 index cae76d6..0000000 Binary files a/test/reference/bilevel-image.ref.png and /dev/null differ diff --git a/test/reference/bilevel-xlib-fallback.rgb24.ref.png b/test/reference/bilevel-xlib-fallback.rgb24.ref.png deleted file mode 100644 index 3fb25c2..0000000 Binary files a/test/reference/bilevel-xlib-fallback.rgb24.ref.png and /dev/null differ diff --git a/test/reference/bilevel-xlib-window.rgb24.ref.png b/test/reference/bilevel-xlib-window.rgb24.ref.png deleted file mode 100644 index 3fb25c2..0000000 Binary files a/test/reference/bilevel-xlib-window.rgb24.ref.png and /dev/null differ diff --git a/test/reference/bilevel-xlib.ref.png b/test/reference/bilevel-xlib.ref.png deleted file mode 100644 index 3fb25c2..0000000 Binary files a/test/reference/bilevel-xlib.ref.png and /dev/null differ diff --git a/test/reference/bitmap-font.base.argb32.ref.png b/test/reference/bitmap-font.base.argb32.ref.png deleted file mode 100644 index bc2bc52..0000000 Binary files a/test/reference/bitmap-font.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/bitmap-font.base.rgb24.ref.png b/test/reference/bitmap-font.base.rgb24.ref.png deleted file mode 100644 index 285d742..0000000 Binary files a/test/reference/bitmap-font.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/bitmap-font.ref.png b/test/reference/bitmap-font.ref.png deleted file mode 100644 index 0718bf9..0000000 Binary files a/test/reference/bitmap-font.ref.png and /dev/null differ diff --git a/test/reference/blur.ref.png b/test/reference/blur.ref.png deleted file mode 100644 index 40b9235..0000000 Binary files a/test/reference/blur.ref.png and /dev/null differ diff --git a/test/reference/bug-40410.base.argb32.ref.png b/test/reference/bug-40410.base.argb32.ref.png deleted file mode 100644 index a315935..0000000 Binary files a/test/reference/bug-40410.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/bug-40410.base.rgb24.ref.png b/test/reference/bug-40410.base.rgb24.ref.png deleted file mode 100644 index a315935..0000000 Binary files a/test/reference/bug-40410.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/bug-40410.ref.png b/test/reference/bug-40410.ref.png deleted file mode 100644 index ae4420a..0000000 Binary files a/test/reference/bug-40410.ref.png and /dev/null differ diff --git a/test/reference/bug-40410.traps.argb32.ref.png b/test/reference/bug-40410.traps.argb32.ref.png deleted file mode 100644 index a315935..0000000 Binary files a/test/reference/bug-40410.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/bug-40410.traps.rgb24.ref.png b/test/reference/bug-40410.traps.rgb24.ref.png deleted file mode 100644 index a315935..0000000 Binary files a/test/reference/bug-40410.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/bug-51910.ref.png b/test/reference/bug-51910.ref.png deleted file mode 100644 index 7f55eaa..0000000 Binary files a/test/reference/bug-51910.ref.png and /dev/null differ diff --git a/test/reference/bug-84115.ref.png b/test/reference/bug-84115.ref.png deleted file mode 100644 index df16257..0000000 Binary files a/test/reference/bug-84115.ref.png and /dev/null differ diff --git a/test/reference/bug-84115.xlib.ref.png b/test/reference/bug-84115.xlib.ref.png deleted file mode 100644 index 2e17a65..0000000 Binary files a/test/reference/bug-84115.xlib.ref.png and /dev/null differ diff --git a/test/reference/bug-bo-collins.ref.png b/test/reference/bug-bo-collins.ref.png deleted file mode 100644 index 72e5c1d..0000000 Binary files a/test/reference/bug-bo-collins.ref.png and /dev/null differ diff --git a/test/reference/bug-bo-rectangular.base.argb32.ref.png b/test/reference/bug-bo-rectangular.base.argb32.ref.png deleted file mode 100644 index ffa4ede..0000000 Binary files a/test/reference/bug-bo-rectangular.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/bug-bo-rectangular.base.rgb24.ref.png b/test/reference/bug-bo-rectangular.base.rgb24.ref.png deleted file mode 100644 index ffa4ede..0000000 Binary files a/test/reference/bug-bo-rectangular.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/bug-bo-rectangular.image16.ref.png b/test/reference/bug-bo-rectangular.image16.ref.png deleted file mode 100644 index d468d59..0000000 Binary files a/test/reference/bug-bo-rectangular.image16.ref.png and /dev/null differ diff --git a/test/reference/bug-bo-rectangular.ps.xfail.png b/test/reference/bug-bo-rectangular.ps.xfail.png deleted file mode 100644 index 44b8c03..0000000 Binary files a/test/reference/bug-bo-rectangular.ps.xfail.png and /dev/null differ diff --git a/test/reference/bug-bo-rectangular.ref.png b/test/reference/bug-bo-rectangular.ref.png deleted file mode 100644 index ffa4ede..0000000 Binary files a/test/reference/bug-bo-rectangular.ref.png and /dev/null differ diff --git a/test/reference/bug-bo-ricotz.base.argb32.ref.png b/test/reference/bug-bo-ricotz.base.argb32.ref.png deleted file mode 100644 index ff7a552..0000000 Binary files a/test/reference/bug-bo-ricotz.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/bug-bo-ricotz.base.rgb24.ref.png b/test/reference/bug-bo-ricotz.base.rgb24.ref.png deleted file mode 100644 index ff7a552..0000000 Binary files a/test/reference/bug-bo-ricotz.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/bug-bo-ricotz.ref.png b/test/reference/bug-bo-ricotz.ref.png deleted file mode 100644 index 0e52b24..0000000 Binary files a/test/reference/bug-bo-ricotz.ref.png and /dev/null differ diff --git a/test/reference/bug-bo-ricotz.traps.ref.png b/test/reference/bug-bo-ricotz.traps.ref.png deleted file mode 100644 index ff7a552..0000000 Binary files a/test/reference/bug-bo-ricotz.traps.ref.png and /dev/null differ diff --git a/test/reference/bug-extents.base.argb32.ref.png b/test/reference/bug-extents.base.argb32.ref.png deleted file mode 100644 index e07f8aa..0000000 Binary files a/test/reference/bug-extents.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/bug-extents.base.rgb24.ref.png b/test/reference/bug-extents.base.rgb24.ref.png deleted file mode 100644 index e07f8aa..0000000 Binary files a/test/reference/bug-extents.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/bug-extents.image16.ref.png b/test/reference/bug-extents.image16.ref.png deleted file mode 100644 index 8eb3d4b..0000000 Binary files a/test/reference/bug-extents.image16.ref.png and /dev/null differ diff --git a/test/reference/bug-extents.ps.ref.png b/test/reference/bug-extents.ps.ref.png deleted file mode 100644 index 2d55405..0000000 Binary files a/test/reference/bug-extents.ps.ref.png and /dev/null differ diff --git a/test/reference/bug-extents.quartz.ref.png b/test/reference/bug-extents.quartz.ref.png deleted file mode 100644 index 2973448..0000000 Binary files a/test/reference/bug-extents.quartz.ref.png and /dev/null differ diff --git a/test/reference/bug-extents.ref.png b/test/reference/bug-extents.ref.png deleted file mode 100644 index e855611..0000000 Binary files a/test/reference/bug-extents.ref.png and /dev/null differ diff --git a/test/reference/bug-extents.traps.argb32.ref.png b/test/reference/bug-extents.traps.argb32.ref.png deleted file mode 100644 index e07f8aa..0000000 Binary files a/test/reference/bug-extents.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/bug-extents.traps.rgb24.ref.png b/test/reference/bug-extents.traps.rgb24.ref.png deleted file mode 100644 index e07f8aa..0000000 Binary files a/test/reference/bug-extents.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/bug-seams.base.argb32.ref.png b/test/reference/bug-seams.base.argb32.ref.png deleted file mode 100644 index ac80651..0000000 Binary files a/test/reference/bug-seams.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/bug-seams.base.rgb24.ref.png b/test/reference/bug-seams.base.rgb24.ref.png deleted file mode 100644 index ac80651..0000000 Binary files a/test/reference/bug-seams.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/bug-seams.image.xfail.png b/test/reference/bug-seams.image.xfail.png deleted file mode 100644 index 99098db..0000000 Binary files a/test/reference/bug-seams.image.xfail.png and /dev/null differ diff --git a/test/reference/bug-seams.mask.argb32.ref.png b/test/reference/bug-seams.mask.argb32.ref.png deleted file mode 100644 index 99098db..0000000 Binary files a/test/reference/bug-seams.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/bug-seams.mask.rgb24.ref.png b/test/reference/bug-seams.mask.rgb24.ref.png deleted file mode 100644 index 99098db..0000000 Binary files a/test/reference/bug-seams.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/bug-seams.ref.png b/test/reference/bug-seams.ref.png deleted file mode 100644 index e4e72fa..0000000 Binary files a/test/reference/bug-seams.ref.png and /dev/null differ diff --git a/test/reference/bug-seams.traps.argb32.ref.png b/test/reference/bug-seams.traps.argb32.ref.png deleted file mode 100644 index ac80651..0000000 Binary files a/test/reference/bug-seams.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/bug-seams.traps.rgb24.ref.png b/test/reference/bug-seams.traps.rgb24.ref.png deleted file mode 100644 index ac80651..0000000 Binary files a/test/reference/bug-seams.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/bug-seams.xlib-fallback.ref.png b/test/reference/bug-seams.xlib-fallback.ref.png deleted file mode 100644 index e81fc6c..0000000 Binary files a/test/reference/bug-seams.xlib-fallback.ref.png and /dev/null differ diff --git a/test/reference/bug-source-cu.ref.png b/test/reference/bug-source-cu.ref.png deleted file mode 100644 index 808feb5..0000000 Binary files a/test/reference/bug-source-cu.ref.png and /dev/null differ diff --git a/test/reference/bug-source-cu.traps.argb32.ref.png b/test/reference/bug-source-cu.traps.argb32.ref.png deleted file mode 100644 index d8837c3..0000000 Binary files a/test/reference/bug-source-cu.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/bug-source-cu.traps.rgb24.ref.png b/test/reference/bug-source-cu.traps.rgb24.ref.png deleted file mode 100644 index 75e3b32..0000000 Binary files a/test/reference/bug-source-cu.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/bug-spline.ref.png b/test/reference/bug-spline.ref.png deleted file mode 100644 index 26d5609..0000000 Binary files a/test/reference/bug-spline.ref.png and /dev/null differ diff --git a/test/reference/caps-05.ref.png b/test/reference/caps-05.ref.png deleted file mode 100644 index 946adcb..0000000 Binary files a/test/reference/caps-05.ref.png and /dev/null differ diff --git a/test/reference/caps-05.traps.ref.png b/test/reference/caps-05.traps.ref.png deleted file mode 100644 index 409bdab..0000000 Binary files a/test/reference/caps-05.traps.ref.png and /dev/null differ diff --git a/test/reference/caps-1.ref.png b/test/reference/caps-1.ref.png deleted file mode 100644 index dfb1118..0000000 Binary files a/test/reference/caps-1.ref.png and /dev/null differ diff --git a/test/reference/caps-1.traps.ref.png b/test/reference/caps-1.traps.ref.png deleted file mode 100644 index 10f7d57..0000000 Binary files a/test/reference/caps-1.traps.ref.png and /dev/null differ diff --git a/test/reference/caps-2.ref.png b/test/reference/caps-2.ref.png deleted file mode 100644 index ca420bc..0000000 Binary files a/test/reference/caps-2.ref.png and /dev/null differ diff --git a/test/reference/caps-2.traps.ref.png b/test/reference/caps-2.traps.ref.png deleted file mode 100644 index 1c5d885..0000000 Binary files a/test/reference/caps-2.traps.ref.png and /dev/null differ diff --git a/test/reference/caps-joins-05.ref.png b/test/reference/caps-joins-05.ref.png deleted file mode 100644 index 8814ace..0000000 Binary files a/test/reference/caps-joins-05.ref.png and /dev/null differ diff --git a/test/reference/caps-joins-05.traps.ref.png b/test/reference/caps-joins-05.traps.ref.png deleted file mode 100644 index 938fb6d..0000000 Binary files a/test/reference/caps-joins-05.traps.ref.png and /dev/null differ diff --git a/test/reference/caps-joins-1.ref.png b/test/reference/caps-joins-1.ref.png deleted file mode 100644 index d7cdf2c..0000000 Binary files a/test/reference/caps-joins-1.ref.png and /dev/null differ diff --git a/test/reference/caps-joins-1.traps.ref.png b/test/reference/caps-joins-1.traps.ref.png deleted file mode 100644 index d9721f2..0000000 Binary files a/test/reference/caps-joins-1.traps.ref.png and /dev/null differ diff --git a/test/reference/caps-joins-2.ref.png b/test/reference/caps-joins-2.ref.png deleted file mode 100644 index 1416a54..0000000 Binary files a/test/reference/caps-joins-2.ref.png and /dev/null differ diff --git a/test/reference/caps-joins-2.traps.ref.png b/test/reference/caps-joins-2.traps.ref.png deleted file mode 100644 index e7089a8..0000000 Binary files a/test/reference/caps-joins-2.traps.ref.png and /dev/null differ diff --git a/test/reference/caps-joins-alpha.image16.ref.png b/test/reference/caps-joins-alpha.image16.ref.png deleted file mode 100644 index ddefea8..0000000 Binary files a/test/reference/caps-joins-alpha.image16.ref.png and /dev/null differ diff --git a/test/reference/caps-joins-alpha.mask.argb32.ref.png b/test/reference/caps-joins-alpha.mask.argb32.ref.png deleted file mode 100644 index 964a70f..0000000 Binary files a/test/reference/caps-joins-alpha.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/caps-joins-alpha.mask.rgb24.ref.png b/test/reference/caps-joins-alpha.mask.rgb24.ref.png deleted file mode 100644 index 964a70f..0000000 Binary files a/test/reference/caps-joins-alpha.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/caps-joins-alpha.quartz.ref.png b/test/reference/caps-joins-alpha.quartz.ref.png deleted file mode 100644 index 190c1e9..0000000 Binary files a/test/reference/caps-joins-alpha.quartz.ref.png and /dev/null differ diff --git a/test/reference/caps-joins-alpha.ref.png b/test/reference/caps-joins-alpha.ref.png deleted file mode 100644 index 9479bf2..0000000 Binary files a/test/reference/caps-joins-alpha.ref.png and /dev/null differ diff --git a/test/reference/caps-joins-alpha.traps.argb32.ref.png b/test/reference/caps-joins-alpha.traps.argb32.ref.png deleted file mode 100644 index e17c4a1..0000000 Binary files a/test/reference/caps-joins-alpha.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/caps-joins-alpha.traps.rgb24.ref.png b/test/reference/caps-joins-alpha.traps.rgb24.ref.png deleted file mode 100644 index e17c4a1..0000000 Binary files a/test/reference/caps-joins-alpha.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/caps-joins-curve.image16.ref.png b/test/reference/caps-joins-curve.image16.ref.png deleted file mode 100644 index 060b3dc..0000000 Binary files a/test/reference/caps-joins-curve.image16.ref.png and /dev/null differ diff --git a/test/reference/caps-joins-curve.mask.argb32.ref.png b/test/reference/caps-joins-curve.mask.argb32.ref.png deleted file mode 100644 index 3595900..0000000 Binary files a/test/reference/caps-joins-curve.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/caps-joins-curve.mask.rgb24.ref.png b/test/reference/caps-joins-curve.mask.rgb24.ref.png deleted file mode 100644 index 3595900..0000000 Binary files a/test/reference/caps-joins-curve.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/caps-joins-curve.ps.ref.png b/test/reference/caps-joins-curve.ps.ref.png deleted file mode 100644 index 7fbb826..0000000 Binary files a/test/reference/caps-joins-curve.ps.ref.png and /dev/null differ diff --git a/test/reference/caps-joins-curve.quartz.ref.png b/test/reference/caps-joins-curve.quartz.ref.png deleted file mode 100644 index ec3d307..0000000 Binary files a/test/reference/caps-joins-curve.quartz.ref.png and /dev/null differ diff --git a/test/reference/caps-joins-curve.ref.png b/test/reference/caps-joins-curve.ref.png deleted file mode 100644 index a9f66a0..0000000 Binary files a/test/reference/caps-joins-curve.ref.png and /dev/null differ diff --git a/test/reference/caps-joins-curve.traps.argb32.ref.png b/test/reference/caps-joins-curve.traps.argb32.ref.png deleted file mode 100644 index 7ce1acc..0000000 Binary files a/test/reference/caps-joins-curve.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/caps-joins-curve.traps.rgb24.ref.png b/test/reference/caps-joins-curve.traps.rgb24.ref.png deleted file mode 100644 index 7ce1acc..0000000 Binary files a/test/reference/caps-joins-curve.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/caps-joins.base.argb32.ref.png b/test/reference/caps-joins.base.argb32.ref.png deleted file mode 100644 index 470eec3..0000000 Binary files a/test/reference/caps-joins.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/caps-joins.base.rgb24.ref.png b/test/reference/caps-joins.base.rgb24.ref.png deleted file mode 100644 index 470eec3..0000000 Binary files a/test/reference/caps-joins.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/caps-joins.image16.ref.png b/test/reference/caps-joins.image16.ref.png deleted file mode 100644 index 0c452f2..0000000 Binary files a/test/reference/caps-joins.image16.ref.png and /dev/null differ diff --git a/test/reference/caps-joins.ps.ref.png b/test/reference/caps-joins.ps.ref.png deleted file mode 100644 index f6c85ce..0000000 Binary files a/test/reference/caps-joins.ps.ref.png and /dev/null differ diff --git a/test/reference/caps-joins.ref.png b/test/reference/caps-joins.ref.png deleted file mode 100644 index 6d7122e..0000000 Binary files a/test/reference/caps-joins.ref.png and /dev/null differ diff --git a/test/reference/caps-joins.traps.argb32.ref.png b/test/reference/caps-joins.traps.argb32.ref.png deleted file mode 100644 index 470eec3..0000000 Binary files a/test/reference/caps-joins.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/caps-joins.traps.rgb24.ref.png b/test/reference/caps-joins.traps.rgb24.ref.png deleted file mode 100644 index 470eec3..0000000 Binary files a/test/reference/caps-joins.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/caps-sub-paths.base.argb32.ref.png b/test/reference/caps-sub-paths.base.argb32.ref.png deleted file mode 100644 index 1e4a83f..0000000 Binary files a/test/reference/caps-sub-paths.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/caps-sub-paths.base.rgb24.ref.png b/test/reference/caps-sub-paths.base.rgb24.ref.png deleted file mode 100644 index 1e4a83f..0000000 Binary files a/test/reference/caps-sub-paths.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/caps-sub-paths.image16.ref.png b/test/reference/caps-sub-paths.image16.ref.png deleted file mode 100644 index c0cc4d7..0000000 Binary files a/test/reference/caps-sub-paths.image16.ref.png and /dev/null differ diff --git a/test/reference/caps-sub-paths.ps.ref.png b/test/reference/caps-sub-paths.ps.ref.png deleted file mode 100644 index 197b443..0000000 Binary files a/test/reference/caps-sub-paths.ps.ref.png and /dev/null differ diff --git a/test/reference/caps-sub-paths.ref.png b/test/reference/caps-sub-paths.ref.png deleted file mode 100644 index 7443389..0000000 Binary files a/test/reference/caps-sub-paths.ref.png and /dev/null differ diff --git a/test/reference/caps-sub-paths.traps.argb32.ref.png b/test/reference/caps-sub-paths.traps.argb32.ref.png deleted file mode 100644 index 1e4a83f..0000000 Binary files a/test/reference/caps-sub-paths.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/caps-sub-paths.traps.rgb24.ref.png b/test/reference/caps-sub-paths.traps.rgb24.ref.png deleted file mode 100644 index 1e4a83f..0000000 Binary files a/test/reference/caps-sub-paths.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/caps-tails-curve.mask.argb32.ref.png b/test/reference/caps-tails-curve.mask.argb32.ref.png deleted file mode 100644 index b0f477d..0000000 Binary files a/test/reference/caps-tails-curve.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/caps-tails-curve.mask.rgb24.ref.png b/test/reference/caps-tails-curve.mask.rgb24.ref.png deleted file mode 100644 index b0f477d..0000000 Binary files a/test/reference/caps-tails-curve.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/caps-tails-curve.ps.ref.png b/test/reference/caps-tails-curve.ps.ref.png deleted file mode 100644 index fca77c3..0000000 Binary files a/test/reference/caps-tails-curve.ps.ref.png and /dev/null differ diff --git a/test/reference/caps-tails-curve.ref.png b/test/reference/caps-tails-curve.ref.png deleted file mode 100644 index df036d2..0000000 Binary files a/test/reference/caps-tails-curve.ref.png and /dev/null differ diff --git a/test/reference/caps-tails-curve.traps.argb32.ref.png b/test/reference/caps-tails-curve.traps.argb32.ref.png deleted file mode 100644 index 9d57999..0000000 Binary files a/test/reference/caps-tails-curve.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/caps-tails-curve.traps.rgb24.ref.png b/test/reference/caps-tails-curve.traps.rgb24.ref.png deleted file mode 100644 index 9d57999..0000000 Binary files a/test/reference/caps-tails-curve.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/caps-tails-curve.xcb.ref.png b/test/reference/caps-tails-curve.xcb.ref.png deleted file mode 100644 index 8902203..0000000 Binary files a/test/reference/caps-tails-curve.xcb.ref.png and /dev/null differ diff --git a/test/reference/caps.base.argb32.ref.png b/test/reference/caps.base.argb32.ref.png deleted file mode 100644 index b3504ab..0000000 Binary files a/test/reference/caps.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/caps.base.rgb24.ref.png b/test/reference/caps.base.rgb24.ref.png deleted file mode 100644 index b3504ab..0000000 Binary files a/test/reference/caps.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/caps.image16.ref.png b/test/reference/caps.image16.ref.png deleted file mode 100644 index a33a5ef..0000000 Binary files a/test/reference/caps.image16.ref.png and /dev/null differ diff --git a/test/reference/caps.ps.ref.png b/test/reference/caps.ps.ref.png deleted file mode 100644 index c91b8aa..0000000 Binary files a/test/reference/caps.ps.ref.png and /dev/null differ diff --git a/test/reference/caps.ref.png b/test/reference/caps.ref.png deleted file mode 100644 index bf784fd..0000000 Binary files a/test/reference/caps.ref.png and /dev/null differ diff --git a/test/reference/caps.traps.argb32.ref.png b/test/reference/caps.traps.argb32.ref.png deleted file mode 100644 index b3504ab..0000000 Binary files a/test/reference/caps.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/caps.traps.rgb24.ref.png b/test/reference/caps.traps.rgb24.ref.png deleted file mode 100644 index b3504ab..0000000 Binary files a/test/reference/caps.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/checkerboard.base.argb32.ref.png b/test/reference/checkerboard.base.argb32.ref.png deleted file mode 100644 index 1444bc4..0000000 Binary files a/test/reference/checkerboard.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/checkerboard.base.rgb24.ref.png b/test/reference/checkerboard.base.rgb24.ref.png deleted file mode 100644 index 1444bc4..0000000 Binary files a/test/reference/checkerboard.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/checkerboard.ref.png b/test/reference/checkerboard.ref.png deleted file mode 100644 index 1444bc4..0000000 Binary files a/test/reference/checkerboard.ref.png and /dev/null differ diff --git a/test/reference/clear-source.base.argb32.ref.png b/test/reference/clear-source.base.argb32.ref.png deleted file mode 100644 index 293411c..0000000 Binary files a/test/reference/clear-source.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/clear-source.base.rgb24.ref.png b/test/reference/clear-source.base.rgb24.ref.png deleted file mode 100644 index 293411c..0000000 Binary files a/test/reference/clear-source.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clear-source.image16.ref.png b/test/reference/clear-source.image16.ref.png deleted file mode 100644 index 4055b95..0000000 Binary files a/test/reference/clear-source.image16.ref.png and /dev/null differ diff --git a/test/reference/clear-source.pdf.xfail.png b/test/reference/clear-source.pdf.xfail.png deleted file mode 100644 index 8e1bdd7..0000000 Binary files a/test/reference/clear-source.pdf.xfail.png and /dev/null differ diff --git a/test/reference/clear-source.ps.xfail.png b/test/reference/clear-source.ps.xfail.png deleted file mode 100644 index b515751..0000000 Binary files a/test/reference/clear-source.ps.xfail.png and /dev/null differ diff --git a/test/reference/clear-source.ref.png b/test/reference/clear-source.ref.png deleted file mode 100644 index 352bf45..0000000 Binary files a/test/reference/clear-source.ref.png and /dev/null differ diff --git a/test/reference/clear-source.traps.argb32.ref.png b/test/reference/clear-source.traps.argb32.ref.png deleted file mode 100644 index 293411c..0000000 Binary files a/test/reference/clear-source.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/clear-source.traps.rgb24.ref.png b/test/reference/clear-source.traps.rgb24.ref.png deleted file mode 100644 index 293411c..0000000 Binary files a/test/reference/clear-source.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clear.argb32.ref.png b/test/reference/clear.argb32.ref.png deleted file mode 100644 index 64d89c1..0000000 Binary files a/test/reference/clear.argb32.ref.png and /dev/null differ diff --git a/test/reference/clear.base.argb32.ref.png b/test/reference/clear.base.argb32.ref.png deleted file mode 100644 index 1caca6d..0000000 Binary files a/test/reference/clear.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/clear.base.rgb24.ref.png b/test/reference/clear.base.rgb24.ref.png deleted file mode 100644 index 7d789b0..0000000 Binary files a/test/reference/clear.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clear.pdf.argb32.ref.png b/test/reference/clear.pdf.argb32.ref.png deleted file mode 100644 index 0960f48..0000000 Binary files a/test/reference/clear.pdf.argb32.ref.png and /dev/null differ diff --git a/test/reference/clear.ps.argb32.ref.png b/test/reference/clear.ps.argb32.ref.png deleted file mode 100644 index 0960f48..0000000 Binary files a/test/reference/clear.ps.argb32.ref.png and /dev/null differ diff --git a/test/reference/clear.quartz.argb32.ref.png b/test/reference/clear.quartz.argb32.ref.png deleted file mode 100644 index 12e6043..0000000 Binary files a/test/reference/clear.quartz.argb32.ref.png and /dev/null differ diff --git a/test/reference/clear.quartz.rgb24.ref.png b/test/reference/clear.quartz.rgb24.ref.png deleted file mode 100644 index 6ea4490..0000000 Binary files a/test/reference/clear.quartz.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clear.rgb24.ref.png b/test/reference/clear.rgb24.ref.png deleted file mode 100644 index d59e44e..0000000 Binary files a/test/reference/clear.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clear.svg12.argb32.xfail.png b/test/reference/clear.svg12.argb32.xfail.png deleted file mode 100644 index cb25bcb..0000000 Binary files a/test/reference/clear.svg12.argb32.xfail.png and /dev/null differ diff --git a/test/reference/clear.svg12.rgb24.xfail.png b/test/reference/clear.svg12.rgb24.xfail.png deleted file mode 100644 index cb25bcb..0000000 Binary files a/test/reference/clear.svg12.rgb24.xfail.png and /dev/null differ diff --git a/test/reference/clear.traps.argb32.ref.png b/test/reference/clear.traps.argb32.ref.png deleted file mode 100644 index 1caca6d..0000000 Binary files a/test/reference/clear.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/clear.traps.rgb24.ref.png b/test/reference/clear.traps.rgb24.ref.png deleted file mode 100644 index 7d789b0..0000000 Binary files a/test/reference/clear.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-all.base.argb32.ref.png b/test/reference/clip-all.base.argb32.ref.png deleted file mode 100644 index 1ed070c..0000000 Binary files a/test/reference/clip-all.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-all.base.rgb24.ref.png b/test/reference/clip-all.base.rgb24.ref.png deleted file mode 100644 index 1ed070c..0000000 Binary files a/test/reference/clip-all.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-all.ref.png b/test/reference/clip-all.ref.png deleted file mode 100644 index 6c14df5..0000000 Binary files a/test/reference/clip-all.ref.png and /dev/null differ diff --git a/test/reference/clip-complex-bug61492.ref.png b/test/reference/clip-complex-bug61492.ref.png deleted file mode 100644 index 8e2e982..0000000 Binary files a/test/reference/clip-complex-bug61492.ref.png and /dev/null differ diff --git a/test/reference/clip-complex-shape-eo-aa.base.argb32.ref.png b/test/reference/clip-complex-shape-eo-aa.base.argb32.ref.png deleted file mode 100644 index bafbb8a..0000000 Binary files a/test/reference/clip-complex-shape-eo-aa.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-complex-shape-eo-aa.base.rgb24.ref.png b/test/reference/clip-complex-shape-eo-aa.base.rgb24.ref.png deleted file mode 100644 index bafbb8a..0000000 Binary files a/test/reference/clip-complex-shape-eo-aa.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-complex-shape-eo-aa.ref.png b/test/reference/clip-complex-shape-eo-aa.ref.png deleted file mode 100644 index d575aa9..0000000 Binary files a/test/reference/clip-complex-shape-eo-aa.ref.png and /dev/null differ diff --git a/test/reference/clip-complex-shape-eo-mono.base.argb32.ref.png b/test/reference/clip-complex-shape-eo-mono.base.argb32.ref.png deleted file mode 100644 index bafbb8a..0000000 Binary files a/test/reference/clip-complex-shape-eo-mono.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-complex-shape-eo-mono.base.rgb24.ref.png b/test/reference/clip-complex-shape-eo-mono.base.rgb24.ref.png deleted file mode 100644 index bafbb8a..0000000 Binary files a/test/reference/clip-complex-shape-eo-mono.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-complex-shape-eo-mono.ref.png b/test/reference/clip-complex-shape-eo-mono.ref.png deleted file mode 100644 index d575aa9..0000000 Binary files a/test/reference/clip-complex-shape-eo-mono.ref.png and /dev/null differ diff --git a/test/reference/clip-contexts.base.argb32.ref.png b/test/reference/clip-contexts.base.argb32.ref.png deleted file mode 100644 index 0d575a6..0000000 Binary files a/test/reference/clip-contexts.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-contexts.base.rgb24.ref.png b/test/reference/clip-contexts.base.rgb24.ref.png deleted file mode 100644 index 0d575a6..0000000 Binary files a/test/reference/clip-contexts.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-contexts.ref.png b/test/reference/clip-contexts.ref.png deleted file mode 100644 index 0d575a6..0000000 Binary files a/test/reference/clip-contexts.ref.png and /dev/null differ diff --git a/test/reference/clip-device-offset.base.argb32.ref.png b/test/reference/clip-device-offset.base.argb32.ref.png deleted file mode 100644 index 06be985..0000000 Binary files a/test/reference/clip-device-offset.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-device-offset.base.rgb24.ref.png b/test/reference/clip-device-offset.base.rgb24.ref.png deleted file mode 100644 index 2419384..0000000 Binary files a/test/reference/clip-device-offset.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-device-offset.ref.png b/test/reference/clip-device-offset.ref.png deleted file mode 100644 index 06be985..0000000 Binary files a/test/reference/clip-device-offset.ref.png and /dev/null differ diff --git a/test/reference/clip-disjoint-hatching.base.argb32.ref.png b/test/reference/clip-disjoint-hatching.base.argb32.ref.png deleted file mode 100644 index 55f26d0..0000000 Binary files a/test/reference/clip-disjoint-hatching.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-disjoint-hatching.base.rgb24.ref.png b/test/reference/clip-disjoint-hatching.base.rgb24.ref.png deleted file mode 100644 index 55f26d0..0000000 Binary files a/test/reference/clip-disjoint-hatching.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-disjoint-hatching.mask.argb32.ref.png b/test/reference/clip-disjoint-hatching.mask.argb32.ref.png deleted file mode 100644 index a29f04a..0000000 Binary files a/test/reference/clip-disjoint-hatching.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-disjoint-hatching.mask.rgb24.ref.png b/test/reference/clip-disjoint-hatching.mask.rgb24.ref.png deleted file mode 100644 index a29f04a..0000000 Binary files a/test/reference/clip-disjoint-hatching.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-disjoint-hatching.ref.png b/test/reference/clip-disjoint-hatching.ref.png deleted file mode 100644 index ff47816..0000000 Binary files a/test/reference/clip-disjoint-hatching.ref.png and /dev/null differ diff --git a/test/reference/clip-disjoint-hatching.traps.argb32.ref.png b/test/reference/clip-disjoint-hatching.traps.argb32.ref.png deleted file mode 100644 index 6226d93..0000000 Binary files a/test/reference/clip-disjoint-hatching.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-disjoint-hatching.traps.rgb24.ref.png b/test/reference/clip-disjoint-hatching.traps.rgb24.ref.png deleted file mode 100644 index 6226d93..0000000 Binary files a/test/reference/clip-disjoint-hatching.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-disjoint-quad.ref.png b/test/reference/clip-disjoint-quad.ref.png deleted file mode 100644 index 25fbf0b..0000000 Binary files a/test/reference/clip-disjoint-quad.ref.png and /dev/null differ diff --git a/test/reference/clip-disjoint-quad.traps.ref.png b/test/reference/clip-disjoint-quad.traps.ref.png deleted file mode 100644 index de5ceb7..0000000 Binary files a/test/reference/clip-disjoint-quad.traps.ref.png and /dev/null differ diff --git a/test/reference/clip-disjoint.base.argb32.ref.png b/test/reference/clip-disjoint.base.argb32.ref.png deleted file mode 100644 index 74ae9d8..0000000 Binary files a/test/reference/clip-disjoint.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-disjoint.base.rgb24.ref.png b/test/reference/clip-disjoint.base.rgb24.ref.png deleted file mode 100644 index 74ae9d8..0000000 Binary files a/test/reference/clip-disjoint.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-disjoint.image16.ref.png b/test/reference/clip-disjoint.image16.ref.png deleted file mode 100644 index 79aaf71..0000000 Binary files a/test/reference/clip-disjoint.image16.ref.png and /dev/null differ diff --git a/test/reference/clip-disjoint.mask.argb32.ref.png b/test/reference/clip-disjoint.mask.argb32.ref.png deleted file mode 100644 index 4e18b7c..0000000 Binary files a/test/reference/clip-disjoint.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-disjoint.mask.rgb24.ref.png b/test/reference/clip-disjoint.mask.rgb24.ref.png deleted file mode 100644 index 4e18b7c..0000000 Binary files a/test/reference/clip-disjoint.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-disjoint.ps.ref.png b/test/reference/clip-disjoint.ps.ref.png deleted file mode 100644 index 5410d0a..0000000 Binary files a/test/reference/clip-disjoint.ps.ref.png and /dev/null differ diff --git a/test/reference/clip-disjoint.quartz.ref.png b/test/reference/clip-disjoint.quartz.ref.png deleted file mode 100644 index 1006815..0000000 Binary files a/test/reference/clip-disjoint.quartz.ref.png and /dev/null differ diff --git a/test/reference/clip-disjoint.ref.png b/test/reference/clip-disjoint.ref.png deleted file mode 100644 index c0d1c06..0000000 Binary files a/test/reference/clip-disjoint.ref.png and /dev/null differ diff --git a/test/reference/clip-disjoint.traps.argb32.ref.png b/test/reference/clip-disjoint.traps.argb32.ref.png deleted file mode 100644 index 74ae9d8..0000000 Binary files a/test/reference/clip-disjoint.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-disjoint.traps.rgb24.ref.png b/test/reference/clip-disjoint.traps.rgb24.ref.png deleted file mode 100644 index 74ae9d8..0000000 Binary files a/test/reference/clip-disjoint.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-empty-group.base.argb32.ref.png b/test/reference/clip-empty-group.base.argb32.ref.png deleted file mode 100644 index a59ca47..0000000 Binary files a/test/reference/clip-empty-group.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-empty-group.base.rgb24.ref.png b/test/reference/clip-empty-group.base.rgb24.ref.png deleted file mode 100644 index a59ca47..0000000 Binary files a/test/reference/clip-empty-group.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-empty-group.ref.png b/test/reference/clip-empty-group.ref.png deleted file mode 100644 index a59ca47..0000000 Binary files a/test/reference/clip-empty-group.ref.png and /dev/null differ diff --git a/test/reference/clip-empty-save.base.argb32.ref.png b/test/reference/clip-empty-save.base.argb32.ref.png deleted file mode 100644 index 1ed070c..0000000 Binary files a/test/reference/clip-empty-save.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-empty-save.base.rgb24.ref.png b/test/reference/clip-empty-save.base.rgb24.ref.png deleted file mode 100644 index 1ed070c..0000000 Binary files a/test/reference/clip-empty-save.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-empty-save.ref.png b/test/reference/clip-empty-save.ref.png deleted file mode 100644 index 6c14df5..0000000 Binary files a/test/reference/clip-empty-save.ref.png and /dev/null differ diff --git a/test/reference/clip-empty.base.argb32.ref.png b/test/reference/clip-empty.base.argb32.ref.png deleted file mode 100644 index 1ed070c..0000000 Binary files a/test/reference/clip-empty.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-empty.base.rgb24.ref.png b/test/reference/clip-empty.base.rgb24.ref.png deleted file mode 100644 index 1ed070c..0000000 Binary files a/test/reference/clip-empty.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-empty.ref.png b/test/reference/clip-empty.ref.png deleted file mode 100644 index 6c14df5..0000000 Binary files a/test/reference/clip-empty.ref.png and /dev/null differ diff --git a/test/reference/clip-fill-eo-unbounded.argb32.ref.png b/test/reference/clip-fill-eo-unbounded.argb32.ref.png deleted file mode 100644 index be56f72..0000000 Binary files a/test/reference/clip-fill-eo-unbounded.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-fill-eo-unbounded.base.argb32.ref.png b/test/reference/clip-fill-eo-unbounded.base.argb32.ref.png deleted file mode 100644 index 81ecfb9..0000000 Binary files a/test/reference/clip-fill-eo-unbounded.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-fill-eo-unbounded.base.rgb24.ref.png b/test/reference/clip-fill-eo-unbounded.base.rgb24.ref.png deleted file mode 100644 index d6a5939..0000000 Binary files a/test/reference/clip-fill-eo-unbounded.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-fill-eo-unbounded.image16.ref.png b/test/reference/clip-fill-eo-unbounded.image16.ref.png deleted file mode 100644 index e0e66ff..0000000 Binary files a/test/reference/clip-fill-eo-unbounded.image16.ref.png and /dev/null differ diff --git a/test/reference/clip-fill-eo-unbounded.mask.argb32.ref.png b/test/reference/clip-fill-eo-unbounded.mask.argb32.ref.png deleted file mode 100644 index 2340bdf..0000000 Binary files a/test/reference/clip-fill-eo-unbounded.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-fill-eo-unbounded.mask.rgb24.ref.png b/test/reference/clip-fill-eo-unbounded.mask.rgb24.ref.png deleted file mode 100644 index 299bd72..0000000 Binary files a/test/reference/clip-fill-eo-unbounded.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-fill-eo-unbounded.quartz.argb32.ref.png b/test/reference/clip-fill-eo-unbounded.quartz.argb32.ref.png deleted file mode 100644 index 3423000..0000000 Binary files a/test/reference/clip-fill-eo-unbounded.quartz.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-fill-eo-unbounded.quartz.rgb24.ref.png b/test/reference/clip-fill-eo-unbounded.quartz.rgb24.ref.png deleted file mode 100644 index 1612801..0000000 Binary files a/test/reference/clip-fill-eo-unbounded.quartz.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-fill-eo-unbounded.rgb24.ref.png b/test/reference/clip-fill-eo-unbounded.rgb24.ref.png deleted file mode 100644 index e78ef0a..0000000 Binary files a/test/reference/clip-fill-eo-unbounded.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-fill-eo-unbounded.svg12.rgb24.xfail.png b/test/reference/clip-fill-eo-unbounded.svg12.rgb24.xfail.png deleted file mode 100644 index f949de1..0000000 Binary files a/test/reference/clip-fill-eo-unbounded.svg12.rgb24.xfail.png and /dev/null differ diff --git a/test/reference/clip-fill-eo-unbounded.traps.argb32.ref.png b/test/reference/clip-fill-eo-unbounded.traps.argb32.ref.png deleted file mode 100644 index 19b9f09..0000000 Binary files a/test/reference/clip-fill-eo-unbounded.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-fill-eo-unbounded.traps.rgb24.ref.png b/test/reference/clip-fill-eo-unbounded.traps.rgb24.ref.png deleted file mode 100644 index 1ad0b17..0000000 Binary files a/test/reference/clip-fill-eo-unbounded.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-fill-eo-unbounded.xlib-fallback.rgb24.ref.png b/test/reference/clip-fill-eo-unbounded.xlib-fallback.rgb24.ref.png deleted file mode 100644 index ec25896..0000000 Binary files a/test/reference/clip-fill-eo-unbounded.xlib-fallback.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-fill-no-op.base.argb32.ref.png b/test/reference/clip-fill-no-op.base.argb32.ref.png deleted file mode 100644 index 2256461..0000000 Binary files a/test/reference/clip-fill-no-op.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-fill-no-op.base.rgb24.ref.png b/test/reference/clip-fill-no-op.base.rgb24.ref.png deleted file mode 100644 index 2256461..0000000 Binary files a/test/reference/clip-fill-no-op.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-fill-no-op.image16.ref.png b/test/reference/clip-fill-no-op.image16.ref.png deleted file mode 100644 index cf0c74a..0000000 Binary files a/test/reference/clip-fill-no-op.image16.ref.png and /dev/null differ diff --git a/test/reference/clip-fill-no-op.ref.png b/test/reference/clip-fill-no-op.ref.png deleted file mode 100644 index 2256461..0000000 Binary files a/test/reference/clip-fill-no-op.ref.png and /dev/null differ diff --git a/test/reference/clip-fill-nz-unbounded.argb32.ref.png b/test/reference/clip-fill-nz-unbounded.argb32.ref.png deleted file mode 100644 index be56f72..0000000 Binary files a/test/reference/clip-fill-nz-unbounded.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-fill-nz-unbounded.base.argb32.ref.png b/test/reference/clip-fill-nz-unbounded.base.argb32.ref.png deleted file mode 100644 index 81ecfb9..0000000 Binary files a/test/reference/clip-fill-nz-unbounded.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-fill-nz-unbounded.base.rgb24.ref.png b/test/reference/clip-fill-nz-unbounded.base.rgb24.ref.png deleted file mode 100644 index d6a5939..0000000 Binary files a/test/reference/clip-fill-nz-unbounded.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-fill-nz-unbounded.image16.ref.png b/test/reference/clip-fill-nz-unbounded.image16.ref.png deleted file mode 100644 index e0e66ff..0000000 Binary files a/test/reference/clip-fill-nz-unbounded.image16.ref.png and /dev/null differ diff --git a/test/reference/clip-fill-nz-unbounded.mask.argb32.ref.png b/test/reference/clip-fill-nz-unbounded.mask.argb32.ref.png deleted file mode 100644 index 05b2628..0000000 Binary files a/test/reference/clip-fill-nz-unbounded.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-fill-nz-unbounded.mask.rgb24.ref.png b/test/reference/clip-fill-nz-unbounded.mask.rgb24.ref.png deleted file mode 100644 index 9ce760b..0000000 Binary files a/test/reference/clip-fill-nz-unbounded.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-fill-nz-unbounded.quartz.argb32.ref.png b/test/reference/clip-fill-nz-unbounded.quartz.argb32.ref.png deleted file mode 100644 index 3423000..0000000 Binary files a/test/reference/clip-fill-nz-unbounded.quartz.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-fill-nz-unbounded.quartz.rgb24.ref.png b/test/reference/clip-fill-nz-unbounded.quartz.rgb24.ref.png deleted file mode 100644 index 1612801..0000000 Binary files a/test/reference/clip-fill-nz-unbounded.quartz.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-fill-nz-unbounded.rgb24.ref.png b/test/reference/clip-fill-nz-unbounded.rgb24.ref.png deleted file mode 100644 index e78ef0a..0000000 Binary files a/test/reference/clip-fill-nz-unbounded.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-fill-nz-unbounded.svg12.rgb24.xfail.png b/test/reference/clip-fill-nz-unbounded.svg12.rgb24.xfail.png deleted file mode 100644 index f949de1..0000000 Binary files a/test/reference/clip-fill-nz-unbounded.svg12.rgb24.xfail.png and /dev/null differ diff --git a/test/reference/clip-fill-nz-unbounded.traps.argb32.ref.png b/test/reference/clip-fill-nz-unbounded.traps.argb32.ref.png deleted file mode 100644 index 19b9f09..0000000 Binary files a/test/reference/clip-fill-nz-unbounded.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-fill-nz-unbounded.traps.rgb24.ref.png b/test/reference/clip-fill-nz-unbounded.traps.rgb24.ref.png deleted file mode 100644 index 1ad0b17..0000000 Binary files a/test/reference/clip-fill-nz-unbounded.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-fill-nz-unbounded.xlib-fallback.rgb24.ref.png b/test/reference/clip-fill-nz-unbounded.xlib-fallback.rgb24.ref.png deleted file mode 100644 index ec25896..0000000 Binary files a/test/reference/clip-fill-nz-unbounded.xlib-fallback.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-fill-rule-pixel-aligned.base.argb32.ref.png b/test/reference/clip-fill-rule-pixel-aligned.base.argb32.ref.png deleted file mode 100644 index 9b82c4b..0000000 Binary files a/test/reference/clip-fill-rule-pixel-aligned.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-fill-rule-pixel-aligned.base.rgb24.ref.png b/test/reference/clip-fill-rule-pixel-aligned.base.rgb24.ref.png deleted file mode 100644 index 0b4f068..0000000 Binary files a/test/reference/clip-fill-rule-pixel-aligned.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-fill-rule-pixel-aligned.ref.png b/test/reference/clip-fill-rule-pixel-aligned.ref.png deleted file mode 100644 index 66eb685..0000000 Binary files a/test/reference/clip-fill-rule-pixel-aligned.ref.png and /dev/null differ diff --git a/test/reference/clip-fill-rule.argb32.ref.png b/test/reference/clip-fill-rule.argb32.ref.png deleted file mode 100644 index f32db7c..0000000 Binary files a/test/reference/clip-fill-rule.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-fill-rule.base.argb32.ref.png b/test/reference/clip-fill-rule.base.argb32.ref.png deleted file mode 100644 index cb23ea6..0000000 Binary files a/test/reference/clip-fill-rule.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-fill-rule.base.rgb24.ref.png b/test/reference/clip-fill-rule.base.rgb24.ref.png deleted file mode 100644 index 5265dde..0000000 Binary files a/test/reference/clip-fill-rule.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-fill-rule.image16.ref.png b/test/reference/clip-fill-rule.image16.ref.png deleted file mode 100644 index 101449d..0000000 Binary files a/test/reference/clip-fill-rule.image16.ref.png and /dev/null differ diff --git a/test/reference/clip-fill-rule.pdf.argb32.ref.png b/test/reference/clip-fill-rule.pdf.argb32.ref.png deleted file mode 100644 index 0d9938e..0000000 Binary files a/test/reference/clip-fill-rule.pdf.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-fill-rule.ps.argb32.ref.png b/test/reference/clip-fill-rule.ps.argb32.ref.png deleted file mode 100644 index 1b89434..0000000 Binary files a/test/reference/clip-fill-rule.ps.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-fill-rule.ps.rgb24.ref.png b/test/reference/clip-fill-rule.ps.rgb24.ref.png deleted file mode 100644 index 1b061b7..0000000 Binary files a/test/reference/clip-fill-rule.ps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-fill-rule.quartz.rgb24.ref.png b/test/reference/clip-fill-rule.quartz.rgb24.ref.png deleted file mode 100644 index c95f290..0000000 Binary files a/test/reference/clip-fill-rule.quartz.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-fill-rule.rgb24.ref.png b/test/reference/clip-fill-rule.rgb24.ref.png deleted file mode 100644 index e180fcc..0000000 Binary files a/test/reference/clip-fill-rule.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-fill-rule.test-paginated.rgb24.ref.png b/test/reference/clip-fill-rule.test-paginated.rgb24.ref.png deleted file mode 100644 index d21472d..0000000 Binary files a/test/reference/clip-fill-rule.test-paginated.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-fill-rule.traps.argb32.ref.png b/test/reference/clip-fill-rule.traps.argb32.ref.png deleted file mode 100644 index 6b083a7..0000000 Binary files a/test/reference/clip-fill-rule.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-fill-rule.traps.rgb24.ref.png b/test/reference/clip-fill-rule.traps.rgb24.ref.png deleted file mode 100644 index d21472d..0000000 Binary files a/test/reference/clip-fill-rule.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-fill.base.argb32.ref.png b/test/reference/clip-fill.base.argb32.ref.png deleted file mode 100644 index 72dc229..0000000 Binary files a/test/reference/clip-fill.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-fill.base.rgb24.ref.png b/test/reference/clip-fill.base.rgb24.ref.png deleted file mode 100644 index 72dc229..0000000 Binary files a/test/reference/clip-fill.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-fill.image16.ref.png b/test/reference/clip-fill.image16.ref.png deleted file mode 100644 index 24595ba..0000000 Binary files a/test/reference/clip-fill.image16.ref.png and /dev/null differ diff --git a/test/reference/clip-fill.mask.argb32.ref.png b/test/reference/clip-fill.mask.argb32.ref.png deleted file mode 100644 index c3f2700..0000000 Binary files a/test/reference/clip-fill.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-fill.mask.rgb24.ref.png b/test/reference/clip-fill.mask.rgb24.ref.png deleted file mode 100644 index c3f2700..0000000 Binary files a/test/reference/clip-fill.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-fill.ps.xfail.png b/test/reference/clip-fill.ps.xfail.png deleted file mode 100644 index d0aeaf1..0000000 Binary files a/test/reference/clip-fill.ps.xfail.png and /dev/null differ diff --git a/test/reference/clip-fill.quartz.ref.png b/test/reference/clip-fill.quartz.ref.png deleted file mode 100644 index 4f235b4..0000000 Binary files a/test/reference/clip-fill.quartz.ref.png and /dev/null differ diff --git a/test/reference/clip-fill.ref.png b/test/reference/clip-fill.ref.png deleted file mode 100644 index 7f07857..0000000 Binary files a/test/reference/clip-fill.ref.png and /dev/null differ diff --git a/test/reference/clip-fill.traps.argb32.ref.png b/test/reference/clip-fill.traps.argb32.ref.png deleted file mode 100644 index d6e84a3..0000000 Binary files a/test/reference/clip-fill.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-fill.traps.rgb24.ref.png b/test/reference/clip-fill.traps.rgb24.ref.png deleted file mode 100644 index d6e84a3..0000000 Binary files a/test/reference/clip-fill.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-fill.xlib-fallback.ref.png b/test/reference/clip-fill.xlib-fallback.ref.png deleted file mode 100644 index 064b0cf..0000000 Binary files a/test/reference/clip-fill.xlib-fallback.ref.png and /dev/null differ diff --git a/test/reference/clip-group-shapes-aligned-rectangles.base.argb32.ref.png b/test/reference/clip-group-shapes-aligned-rectangles.base.argb32.ref.png deleted file mode 100644 index cba7507..0000000 Binary files a/test/reference/clip-group-shapes-aligned-rectangles.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-group-shapes-aligned-rectangles.base.rgb24.ref.png b/test/reference/clip-group-shapes-aligned-rectangles.base.rgb24.ref.png deleted file mode 100644 index cba7507..0000000 Binary files a/test/reference/clip-group-shapes-aligned-rectangles.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-group-shapes-aligned-rectangles.ref.png b/test/reference/clip-group-shapes-aligned-rectangles.ref.png deleted file mode 100644 index cba7507..0000000 Binary files a/test/reference/clip-group-shapes-aligned-rectangles.ref.png and /dev/null differ diff --git a/test/reference/clip-group-shapes-circles.base.argb32.ref.png b/test/reference/clip-group-shapes-circles.base.argb32.ref.png deleted file mode 100644 index 7dd6a83..0000000 Binary files a/test/reference/clip-group-shapes-circles.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-group-shapes-circles.base.rgb24.ref.png b/test/reference/clip-group-shapes-circles.base.rgb24.ref.png deleted file mode 100644 index 7dd6a83..0000000 Binary files a/test/reference/clip-group-shapes-circles.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-group-shapes-circles.mask.argb32.ref.png b/test/reference/clip-group-shapes-circles.mask.argb32.ref.png deleted file mode 100644 index 7dd6a83..0000000 Binary files a/test/reference/clip-group-shapes-circles.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-group-shapes-circles.mask.rgb24.ref.png b/test/reference/clip-group-shapes-circles.mask.rgb24.ref.png deleted file mode 100644 index 7dd6a83..0000000 Binary files a/test/reference/clip-group-shapes-circles.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-group-shapes-circles.ps.ref.png b/test/reference/clip-group-shapes-circles.ps.ref.png deleted file mode 100644 index be6203f..0000000 Binary files a/test/reference/clip-group-shapes-circles.ps.ref.png and /dev/null differ diff --git a/test/reference/clip-group-shapes-circles.quartz.ref.png b/test/reference/clip-group-shapes-circles.quartz.ref.png deleted file mode 100644 index c2ac9ea..0000000 Binary files a/test/reference/clip-group-shapes-circles.quartz.ref.png and /dev/null differ diff --git a/test/reference/clip-group-shapes-circles.ref.png b/test/reference/clip-group-shapes-circles.ref.png deleted file mode 100644 index abb11e5..0000000 Binary files a/test/reference/clip-group-shapes-circles.ref.png and /dev/null differ diff --git a/test/reference/clip-group-shapes-circles.traps.argb32.ref.png b/test/reference/clip-group-shapes-circles.traps.argb32.ref.png deleted file mode 100644 index 3b81146..0000000 Binary files a/test/reference/clip-group-shapes-circles.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-group-shapes-circles.traps.rgb24.ref.png b/test/reference/clip-group-shapes-circles.traps.rgb24.ref.png deleted file mode 100644 index 3b81146..0000000 Binary files a/test/reference/clip-group-shapes-circles.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-group-shapes-unaligned-rectangles.base.argb32.ref.png b/test/reference/clip-group-shapes-unaligned-rectangles.base.argb32.ref.png deleted file mode 100644 index 2ad4118..0000000 Binary files a/test/reference/clip-group-shapes-unaligned-rectangles.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-group-shapes-unaligned-rectangles.base.rgb24.ref.png b/test/reference/clip-group-shapes-unaligned-rectangles.base.rgb24.ref.png deleted file mode 100644 index 2ad4118..0000000 Binary files a/test/reference/clip-group-shapes-unaligned-rectangles.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-group-shapes-unaligned-rectangles.mask.argb32.ref.png b/test/reference/clip-group-shapes-unaligned-rectangles.mask.argb32.ref.png deleted file mode 100644 index 877e78b..0000000 Binary files a/test/reference/clip-group-shapes-unaligned-rectangles.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-group-shapes-unaligned-rectangles.mask.rgb24.ref.png b/test/reference/clip-group-shapes-unaligned-rectangles.mask.rgb24.ref.png deleted file mode 100644 index 877e78b..0000000 Binary files a/test/reference/clip-group-shapes-unaligned-rectangles.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-group-shapes-unaligned-rectangles.ref.png b/test/reference/clip-group-shapes-unaligned-rectangles.ref.png deleted file mode 100644 index 2ad4118..0000000 Binary files a/test/reference/clip-group-shapes-unaligned-rectangles.ref.png and /dev/null differ diff --git a/test/reference/clip-group-shapes-unaligned-rectangles.traps.argb32.ref.png b/test/reference/clip-group-shapes-unaligned-rectangles.traps.argb32.ref.png deleted file mode 100644 index 877e78b..0000000 Binary files a/test/reference/clip-group-shapes-unaligned-rectangles.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-group-shapes-unaligned-rectangles.traps.rgb24.ref.png b/test/reference/clip-group-shapes-unaligned-rectangles.traps.rgb24.ref.png deleted file mode 100644 index 877e78b..0000000 Binary files a/test/reference/clip-group-shapes-unaligned-rectangles.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-image.base.argb32.ref.png b/test/reference/clip-image.base.argb32.ref.png deleted file mode 100644 index 0f71f73..0000000 Binary files a/test/reference/clip-image.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-image.base.rgb24.ref.png b/test/reference/clip-image.base.rgb24.ref.png deleted file mode 100644 index 0f71f73..0000000 Binary files a/test/reference/clip-image.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-image.image16.ref.png b/test/reference/clip-image.image16.ref.png deleted file mode 100644 index 770891a..0000000 Binary files a/test/reference/clip-image.image16.ref.png and /dev/null differ diff --git a/test/reference/clip-image.mask.argb32.ref.png b/test/reference/clip-image.mask.argb32.ref.png deleted file mode 100644 index 86c28af..0000000 Binary files a/test/reference/clip-image.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-image.mask.rgb24.ref.png b/test/reference/clip-image.mask.rgb24.ref.png deleted file mode 100644 index 86c28af..0000000 Binary files a/test/reference/clip-image.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-image.ps.ref.png b/test/reference/clip-image.ps.ref.png deleted file mode 100644 index b242249..0000000 Binary files a/test/reference/clip-image.ps.ref.png and /dev/null differ diff --git a/test/reference/clip-image.ref.png b/test/reference/clip-image.ref.png deleted file mode 100644 index 0f71f73..0000000 Binary files a/test/reference/clip-image.ref.png and /dev/null differ diff --git a/test/reference/clip-image.traps.argb32.ref.png b/test/reference/clip-image.traps.argb32.ref.png deleted file mode 100644 index 062c721..0000000 Binary files a/test/reference/clip-image.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-image.traps.rgb24.ref.png b/test/reference/clip-image.traps.rgb24.ref.png deleted file mode 100644 index 062c721..0000000 Binary files a/test/reference/clip-image.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-intersect.base.argb32.ref.png b/test/reference/clip-intersect.base.argb32.ref.png deleted file mode 100644 index 6627b3a..0000000 Binary files a/test/reference/clip-intersect.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-intersect.base.rgb24.ref.png b/test/reference/clip-intersect.base.rgb24.ref.png deleted file mode 100644 index 6627b3a..0000000 Binary files a/test/reference/clip-intersect.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-intersect.ref.png b/test/reference/clip-intersect.ref.png deleted file mode 100644 index 5f2de37..0000000 Binary files a/test/reference/clip-intersect.ref.png and /dev/null differ diff --git a/test/reference/clip-intersect.traps.argb32.ref.png b/test/reference/clip-intersect.traps.argb32.ref.png deleted file mode 100644 index 2e97b54..0000000 Binary files a/test/reference/clip-intersect.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-intersect.traps.rgb24.ref.png b/test/reference/clip-intersect.traps.rgb24.ref.png deleted file mode 100644 index 2e97b54..0000000 Binary files a/test/reference/clip-intersect.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-mixed-antialias.base.argb32.ref.png b/test/reference/clip-mixed-antialias.base.argb32.ref.png deleted file mode 100644 index 982530c..0000000 Binary files a/test/reference/clip-mixed-antialias.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-mixed-antialias.base.rgb24.ref.png b/test/reference/clip-mixed-antialias.base.rgb24.ref.png deleted file mode 100644 index 982530c..0000000 Binary files a/test/reference/clip-mixed-antialias.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-mixed-antialias.ref.png b/test/reference/clip-mixed-antialias.ref.png deleted file mode 100644 index 243c4dd..0000000 Binary files a/test/reference/clip-mixed-antialias.ref.png and /dev/null differ diff --git a/test/reference/clip-mixed-antialias.traps.argb32.ref.png b/test/reference/clip-mixed-antialias.traps.argb32.ref.png deleted file mode 100644 index 982530c..0000000 Binary files a/test/reference/clip-mixed-antialias.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-mixed-antialias.traps.rgb24.ref.png b/test/reference/clip-mixed-antialias.traps.rgb24.ref.png deleted file mode 100644 index 982530c..0000000 Binary files a/test/reference/clip-mixed-antialias.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-nesting.argb32.ref.png b/test/reference/clip-nesting.argb32.ref.png deleted file mode 100644 index c82ed46..0000000 Binary files a/test/reference/clip-nesting.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-nesting.base.argb32.ref.png b/test/reference/clip-nesting.base.argb32.ref.png deleted file mode 100644 index ce0cc0d..0000000 Binary files a/test/reference/clip-nesting.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-nesting.base.rgb24.ref.png b/test/reference/clip-nesting.base.rgb24.ref.png deleted file mode 100644 index 5247843..0000000 Binary files a/test/reference/clip-nesting.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-nesting.mask.rgb24.ref.png b/test/reference/clip-nesting.mask.rgb24.ref.png deleted file mode 100644 index 5247843..0000000 Binary files a/test/reference/clip-nesting.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-nesting.pdf.argb32.ref.png b/test/reference/clip-nesting.pdf.argb32.ref.png deleted file mode 100644 index 78ae6e0..0000000 Binary files a/test/reference/clip-nesting.pdf.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-nesting.ps.argb32.ref.png b/test/reference/clip-nesting.ps.argb32.ref.png deleted file mode 100644 index 8a0239b..0000000 Binary files a/test/reference/clip-nesting.ps.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-nesting.ps.rgb24.ref.png b/test/reference/clip-nesting.ps.rgb24.ref.png deleted file mode 100644 index f9e1ac9..0000000 Binary files a/test/reference/clip-nesting.ps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-nesting.quartz.argb32.ref.png b/test/reference/clip-nesting.quartz.argb32.ref.png deleted file mode 100644 index 7bc187c..0000000 Binary files a/test/reference/clip-nesting.quartz.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-nesting.quartz.rgb24.ref.png b/test/reference/clip-nesting.quartz.rgb24.ref.png deleted file mode 100644 index 926f5f5..0000000 Binary files a/test/reference/clip-nesting.quartz.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-nesting.rgb24.ref.png b/test/reference/clip-nesting.rgb24.ref.png deleted file mode 100644 index 93c5b17..0000000 Binary files a/test/reference/clip-nesting.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-nesting.test-paginated.rgb24.ref.png b/test/reference/clip-nesting.test-paginated.rgb24.ref.png deleted file mode 100644 index d087ab6..0000000 Binary files a/test/reference/clip-nesting.test-paginated.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-nesting.traps.argb32.ref.png b/test/reference/clip-nesting.traps.argb32.ref.png deleted file mode 100644 index 01168df..0000000 Binary files a/test/reference/clip-nesting.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-nesting.traps.rgb24.ref.png b/test/reference/clip-nesting.traps.rgb24.ref.png deleted file mode 100644 index d087ab6..0000000 Binary files a/test/reference/clip-nesting.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-operator.argb32.ref.png b/test/reference/clip-operator.argb32.ref.png deleted file mode 100644 index d041a2f..0000000 Binary files a/test/reference/clip-operator.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-operator.base.argb32.ref.png b/test/reference/clip-operator.base.argb32.ref.png deleted file mode 100644 index f7697ba..0000000 Binary files a/test/reference/clip-operator.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-operator.base.rgb24.ref.png b/test/reference/clip-operator.base.rgb24.ref.png deleted file mode 100644 index eed3469..0000000 Binary files a/test/reference/clip-operator.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-operator.gl.argb32.ref.png b/test/reference/clip-operator.gl.argb32.ref.png deleted file mode 100644 index 92d8b75..0000000 Binary files a/test/reference/clip-operator.gl.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-operator.image16.ref.png b/test/reference/clip-operator.image16.ref.png deleted file mode 100644 index ab8cd9b..0000000 Binary files a/test/reference/clip-operator.image16.ref.png and /dev/null differ diff --git a/test/reference/clip-operator.mask.argb32.ref.png b/test/reference/clip-operator.mask.argb32.ref.png deleted file mode 100644 index 8db1a07..0000000 Binary files a/test/reference/clip-operator.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-operator.mask.rgb24.ref.png b/test/reference/clip-operator.mask.rgb24.ref.png deleted file mode 100644 index ddd1ec3..0000000 Binary files a/test/reference/clip-operator.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-operator.pdf.argb32.ref.png b/test/reference/clip-operator.pdf.argb32.ref.png deleted file mode 100644 index 7f8c93e..0000000 Binary files a/test/reference/clip-operator.pdf.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-operator.pdf.rgb24.ref.png b/test/reference/clip-operator.pdf.rgb24.ref.png deleted file mode 100644 index fc4f431..0000000 Binary files a/test/reference/clip-operator.pdf.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-operator.ps2.rgb24.ref.png b/test/reference/clip-operator.ps2.rgb24.ref.png deleted file mode 100644 index 5245299..0000000 Binary files a/test/reference/clip-operator.ps2.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-operator.ps3.argb32.ref.png b/test/reference/clip-operator.ps3.argb32.ref.png deleted file mode 100644 index cd207d9..0000000 Binary files a/test/reference/clip-operator.ps3.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-operator.ps3.ref.png b/test/reference/clip-operator.ps3.ref.png deleted file mode 100644 index dee12ca..0000000 Binary files a/test/reference/clip-operator.ps3.ref.png and /dev/null differ diff --git a/test/reference/clip-operator.ps3.rgb24.ref.png b/test/reference/clip-operator.ps3.rgb24.ref.png deleted file mode 100644 index 5245299..0000000 Binary files a/test/reference/clip-operator.ps3.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-operator.quartz.argb32.ref.png b/test/reference/clip-operator.quartz.argb32.ref.png deleted file mode 100644 index ecf6ee2..0000000 Binary files a/test/reference/clip-operator.quartz.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-operator.quartz.rgb24.ref.png b/test/reference/clip-operator.quartz.rgb24.ref.png deleted file mode 100644 index 67c628f..0000000 Binary files a/test/reference/clip-operator.quartz.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-operator.rgb24.ref.png b/test/reference/clip-operator.rgb24.ref.png deleted file mode 100644 index 7e3a640..0000000 Binary files a/test/reference/clip-operator.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-operator.svg12.argb32.xfail.png b/test/reference/clip-operator.svg12.argb32.xfail.png deleted file mode 100644 index a1b8072..0000000 Binary files a/test/reference/clip-operator.svg12.argb32.xfail.png and /dev/null differ diff --git a/test/reference/clip-operator.svg12.rgb24.xfail.png b/test/reference/clip-operator.svg12.rgb24.xfail.png deleted file mode 100644 index 9522770..0000000 Binary files a/test/reference/clip-operator.svg12.rgb24.xfail.png and /dev/null differ diff --git a/test/reference/clip-operator.test-paginated.argb32.ref.png b/test/reference/clip-operator.test-paginated.argb32.ref.png deleted file mode 100644 index 0203b1d..0000000 Binary files a/test/reference/clip-operator.test-paginated.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-operator.traps.argb32.ref.png b/test/reference/clip-operator.traps.argb32.ref.png deleted file mode 100644 index 76f9ee8..0000000 Binary files a/test/reference/clip-operator.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-operator.traps.rgb24.ref.png b/test/reference/clip-operator.traps.rgb24.ref.png deleted file mode 100644 index f35c9d5..0000000 Binary files a/test/reference/clip-operator.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-operator.xlib-fallback.ref.png b/test/reference/clip-operator.xlib-fallback.ref.png deleted file mode 100644 index 9ef8637..0000000 Binary files a/test/reference/clip-operator.xlib-fallback.ref.png and /dev/null differ diff --git a/test/reference/clip-polygons.base.argb32.ref.png b/test/reference/clip-polygons.base.argb32.ref.png deleted file mode 100644 index e139ef3..0000000 Binary files a/test/reference/clip-polygons.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-polygons.base.rgb24.ref.png b/test/reference/clip-polygons.base.rgb24.ref.png deleted file mode 100644 index e139ef3..0000000 Binary files a/test/reference/clip-polygons.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-polygons.mask.argb32.ref.png b/test/reference/clip-polygons.mask.argb32.ref.png deleted file mode 100644 index e139ef3..0000000 Binary files a/test/reference/clip-polygons.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-polygons.mask.rgb24.ref.png b/test/reference/clip-polygons.mask.rgb24.ref.png deleted file mode 100644 index e139ef3..0000000 Binary files a/test/reference/clip-polygons.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-polygons.ref.png b/test/reference/clip-polygons.ref.png deleted file mode 100644 index 1b76cd0..0000000 Binary files a/test/reference/clip-polygons.ref.png and /dev/null differ diff --git a/test/reference/clip-polygons.traps.ref.png b/test/reference/clip-polygons.traps.ref.png deleted file mode 100644 index a8c5734..0000000 Binary files a/test/reference/clip-polygons.traps.ref.png and /dev/null differ diff --git a/test/reference/clip-push-group.base.argb32.ref.png b/test/reference/clip-push-group.base.argb32.ref.png deleted file mode 100644 index 86724a2..0000000 Binary files a/test/reference/clip-push-group.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-push-group.base.rgb24.ref.png b/test/reference/clip-push-group.base.rgb24.ref.png deleted file mode 100644 index 86724a2..0000000 Binary files a/test/reference/clip-push-group.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-push-group.image16.ref.png b/test/reference/clip-push-group.image16.ref.png deleted file mode 100644 index 24f4424..0000000 Binary files a/test/reference/clip-push-group.image16.ref.png and /dev/null differ diff --git a/test/reference/clip-push-group.pdf.ref.png b/test/reference/clip-push-group.pdf.ref.png deleted file mode 100644 index 37b58c5..0000000 Binary files a/test/reference/clip-push-group.pdf.ref.png and /dev/null differ diff --git a/test/reference/clip-push-group.ps.ref.png b/test/reference/clip-push-group.ps.ref.png deleted file mode 100644 index 7af9fe5..0000000 Binary files a/test/reference/clip-push-group.ps.ref.png and /dev/null differ diff --git a/test/reference/clip-push-group.quartz.ref.png b/test/reference/clip-push-group.quartz.ref.png deleted file mode 100644 index 22e1525..0000000 Binary files a/test/reference/clip-push-group.quartz.ref.png and /dev/null differ diff --git a/test/reference/clip-push-group.ref.png b/test/reference/clip-push-group.ref.png deleted file mode 100644 index 6a90fb4..0000000 Binary files a/test/reference/clip-push-group.ref.png and /dev/null differ diff --git a/test/reference/clip-push-group.svg.ref.png b/test/reference/clip-push-group.svg.ref.png deleted file mode 100644 index 291b473..0000000 Binary files a/test/reference/clip-push-group.svg.ref.png and /dev/null differ diff --git a/test/reference/clip-push-group.traps.argb32.ref.png b/test/reference/clip-push-group.traps.argb32.ref.png deleted file mode 100644 index de6ac63..0000000 Binary files a/test/reference/clip-push-group.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-push-group.traps.rgb24.ref.png b/test/reference/clip-push-group.traps.rgb24.ref.png deleted file mode 100644 index de6ac63..0000000 Binary files a/test/reference/clip-push-group.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-rectilinear.base.argb32.ref.png b/test/reference/clip-rectilinear.base.argb32.ref.png deleted file mode 100644 index 9d910db..0000000 Binary files a/test/reference/clip-rectilinear.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-rectilinear.base.rgb24.ref.png b/test/reference/clip-rectilinear.base.rgb24.ref.png deleted file mode 100644 index 9d910db..0000000 Binary files a/test/reference/clip-rectilinear.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-rectilinear.mask.argb32.ref.png b/test/reference/clip-rectilinear.mask.argb32.ref.png deleted file mode 100644 index 2a27bec..0000000 Binary files a/test/reference/clip-rectilinear.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-rectilinear.mask.rgb24.ref.png b/test/reference/clip-rectilinear.mask.rgb24.ref.png deleted file mode 100644 index 2a27bec..0000000 Binary files a/test/reference/clip-rectilinear.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-rectilinear.ref.png b/test/reference/clip-rectilinear.ref.png deleted file mode 100644 index 9d910db..0000000 Binary files a/test/reference/clip-rectilinear.ref.png and /dev/null differ diff --git a/test/reference/clip-rectilinear.traps.ref.png b/test/reference/clip-rectilinear.traps.ref.png deleted file mode 100644 index 2a27bec..0000000 Binary files a/test/reference/clip-rectilinear.traps.ref.png and /dev/null differ diff --git a/test/reference/clip-rotate-image-surface-paint.base.argb32.ref.png b/test/reference/clip-rotate-image-surface-paint.base.argb32.ref.png deleted file mode 100644 index 1093804..0000000 Binary files a/test/reference/clip-rotate-image-surface-paint.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-rotate-image-surface-paint.base.rgb24.ref.png b/test/reference/clip-rotate-image-surface-paint.base.rgb24.ref.png deleted file mode 100644 index 1093804..0000000 Binary files a/test/reference/clip-rotate-image-surface-paint.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-rotate-image-surface-paint.ref.png b/test/reference/clip-rotate-image-surface-paint.ref.png deleted file mode 100644 index 1093804..0000000 Binary files a/test/reference/clip-rotate-image-surface-paint.ref.png and /dev/null differ diff --git a/test/reference/clip-shape.base.argb32.ref.png b/test/reference/clip-shape.base.argb32.ref.png deleted file mode 100644 index 5d79521..0000000 Binary files a/test/reference/clip-shape.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-shape.base.rgb24.ref.png b/test/reference/clip-shape.base.rgb24.ref.png deleted file mode 100644 index 5d79521..0000000 Binary files a/test/reference/clip-shape.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-shape.image16.ref.png b/test/reference/clip-shape.image16.ref.png deleted file mode 100644 index 0ef06b2..0000000 Binary files a/test/reference/clip-shape.image16.ref.png and /dev/null differ diff --git a/test/reference/clip-shape.mask.argb32.ref.png b/test/reference/clip-shape.mask.argb32.ref.png deleted file mode 100644 index 03edf68..0000000 Binary files a/test/reference/clip-shape.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-shape.mask.rgb24.ref.png b/test/reference/clip-shape.mask.rgb24.ref.png deleted file mode 100644 index 03edf68..0000000 Binary files a/test/reference/clip-shape.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-shape.ps.ref.png b/test/reference/clip-shape.ps.ref.png deleted file mode 100644 index 1125fb5..0000000 Binary files a/test/reference/clip-shape.ps.ref.png and /dev/null differ diff --git a/test/reference/clip-shape.quartz.ref.png b/test/reference/clip-shape.quartz.ref.png deleted file mode 100644 index 2923406..0000000 Binary files a/test/reference/clip-shape.quartz.ref.png and /dev/null differ diff --git a/test/reference/clip-shape.ref.png b/test/reference/clip-shape.ref.png deleted file mode 100644 index 83190e6..0000000 Binary files a/test/reference/clip-shape.ref.png and /dev/null differ diff --git a/test/reference/clip-shape.traps.argb32.ref.png b/test/reference/clip-shape.traps.argb32.ref.png deleted file mode 100644 index 362f24f..0000000 Binary files a/test/reference/clip-shape.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-shape.traps.rgb24.ref.png b/test/reference/clip-shape.traps.rgb24.ref.png deleted file mode 100644 index 362f24f..0000000 Binary files a/test/reference/clip-shape.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-shape.xlib-fallback.ref.png b/test/reference/clip-shape.xlib-fallback.ref.png deleted file mode 100644 index e9aa947..0000000 Binary files a/test/reference/clip-shape.xlib-fallback.ref.png and /dev/null differ diff --git a/test/reference/clip-stroke-no-op.base.argb32.ref.png b/test/reference/clip-stroke-no-op.base.argb32.ref.png deleted file mode 100644 index 2256461..0000000 Binary files a/test/reference/clip-stroke-no-op.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-stroke-no-op.base.rgb24.ref.png b/test/reference/clip-stroke-no-op.base.rgb24.ref.png deleted file mode 100644 index 2256461..0000000 Binary files a/test/reference/clip-stroke-no-op.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-stroke-no-op.image16.ref.png b/test/reference/clip-stroke-no-op.image16.ref.png deleted file mode 100644 index cf0c74a..0000000 Binary files a/test/reference/clip-stroke-no-op.image16.ref.png and /dev/null differ diff --git a/test/reference/clip-stroke-no-op.ref.png b/test/reference/clip-stroke-no-op.ref.png deleted file mode 100644 index 2256461..0000000 Binary files a/test/reference/clip-stroke-no-op.ref.png and /dev/null differ diff --git a/test/reference/clip-stroke-unbounded.argb32.ref.png b/test/reference/clip-stroke-unbounded.argb32.ref.png deleted file mode 100644 index 7f603b7..0000000 Binary files a/test/reference/clip-stroke-unbounded.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-stroke-unbounded.base.argb32.ref.png b/test/reference/clip-stroke-unbounded.base.argb32.ref.png deleted file mode 100644 index de0d589..0000000 Binary files a/test/reference/clip-stroke-unbounded.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-stroke-unbounded.base.rgb24.ref.png b/test/reference/clip-stroke-unbounded.base.rgb24.ref.png deleted file mode 100644 index 7d204ee..0000000 Binary files a/test/reference/clip-stroke-unbounded.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-stroke-unbounded.image16.rgb24.ref.png b/test/reference/clip-stroke-unbounded.image16.rgb24.ref.png deleted file mode 100644 index 2dfd48b..0000000 Binary files a/test/reference/clip-stroke-unbounded.image16.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-stroke-unbounded.mask.argb32.ref.png b/test/reference/clip-stroke-unbounded.mask.argb32.ref.png deleted file mode 100644 index 274feb6..0000000 Binary files a/test/reference/clip-stroke-unbounded.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-stroke-unbounded.mask.rgb24.ref.png b/test/reference/clip-stroke-unbounded.mask.rgb24.ref.png deleted file mode 100644 index a9a8f7b..0000000 Binary files a/test/reference/clip-stroke-unbounded.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-stroke-unbounded.quartz.argb32.ref.png b/test/reference/clip-stroke-unbounded.quartz.argb32.ref.png deleted file mode 100644 index 8bd5b36..0000000 Binary files a/test/reference/clip-stroke-unbounded.quartz.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-stroke-unbounded.quartz.rgb24.ref.png b/test/reference/clip-stroke-unbounded.quartz.rgb24.ref.png deleted file mode 100644 index 5349f84..0000000 Binary files a/test/reference/clip-stroke-unbounded.quartz.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-stroke-unbounded.rgb24.ref.png b/test/reference/clip-stroke-unbounded.rgb24.ref.png deleted file mode 100644 index 4a06c4b..0000000 Binary files a/test/reference/clip-stroke-unbounded.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-stroke-unbounded.svg12.rgb24.xfail.png b/test/reference/clip-stroke-unbounded.svg12.rgb24.xfail.png deleted file mode 100644 index c35fc83..0000000 Binary files a/test/reference/clip-stroke-unbounded.svg12.rgb24.xfail.png and /dev/null differ diff --git a/test/reference/clip-stroke-unbounded.traps.argb32.ref.png b/test/reference/clip-stroke-unbounded.traps.argb32.ref.png deleted file mode 100644 index aea8cba..0000000 Binary files a/test/reference/clip-stroke-unbounded.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-stroke-unbounded.traps.rgb24.ref.png b/test/reference/clip-stroke-unbounded.traps.rgb24.ref.png deleted file mode 100644 index 70cddac..0000000 Binary files a/test/reference/clip-stroke-unbounded.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-stroke-unbounded.xlib-fallback.rgb24.ref.png b/test/reference/clip-stroke-unbounded.xlib-fallback.rgb24.ref.png deleted file mode 100644 index 20ebfe4..0000000 Binary files a/test/reference/clip-stroke-unbounded.xlib-fallback.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-stroke.base.argb32.ref.png b/test/reference/clip-stroke.base.argb32.ref.png deleted file mode 100644 index 31ed15e..0000000 Binary files a/test/reference/clip-stroke.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-stroke.base.rgb24.ref.png b/test/reference/clip-stroke.base.rgb24.ref.png deleted file mode 100644 index 31ed15e..0000000 Binary files a/test/reference/clip-stroke.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-stroke.image16.ref.png b/test/reference/clip-stroke.image16.ref.png deleted file mode 100644 index ad62af4..0000000 Binary files a/test/reference/clip-stroke.image16.ref.png and /dev/null differ diff --git a/test/reference/clip-stroke.mask.argb32.ref.png b/test/reference/clip-stroke.mask.argb32.ref.png deleted file mode 100644 index afa7fc0..0000000 Binary files a/test/reference/clip-stroke.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-stroke.mask.rgb24.ref.png b/test/reference/clip-stroke.mask.rgb24.ref.png deleted file mode 100644 index afa7fc0..0000000 Binary files a/test/reference/clip-stroke.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-stroke.ps.xfail.png b/test/reference/clip-stroke.ps.xfail.png deleted file mode 100644 index cc67b08..0000000 Binary files a/test/reference/clip-stroke.ps.xfail.png and /dev/null differ diff --git a/test/reference/clip-stroke.quartz.ref.png b/test/reference/clip-stroke.quartz.ref.png deleted file mode 100644 index 994e317..0000000 Binary files a/test/reference/clip-stroke.quartz.ref.png and /dev/null differ diff --git a/test/reference/clip-stroke.ref.png b/test/reference/clip-stroke.ref.png deleted file mode 100644 index c296807..0000000 Binary files a/test/reference/clip-stroke.ref.png and /dev/null differ diff --git a/test/reference/clip-stroke.traps.argb32.ref.png b/test/reference/clip-stroke.traps.argb32.ref.png deleted file mode 100644 index 36b113a..0000000 Binary files a/test/reference/clip-stroke.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-stroke.traps.rgb24.ref.png b/test/reference/clip-stroke.traps.rgb24.ref.png deleted file mode 100644 index 36b113a..0000000 Binary files a/test/reference/clip-stroke.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-stroke.xlib-fallback.ref.png b/test/reference/clip-stroke.xlib-fallback.ref.png deleted file mode 100644 index cef5000..0000000 Binary files a/test/reference/clip-stroke.xlib-fallback.ref.png and /dev/null differ diff --git a/test/reference/clip-text.base.argb32.ref.png b/test/reference/clip-text.base.argb32.ref.png deleted file mode 100644 index e2b2ca7..0000000 Binary files a/test/reference/clip-text.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-text.base.rgb24.ref.png b/test/reference/clip-text.base.rgb24.ref.png deleted file mode 100644 index e2b2ca7..0000000 Binary files a/test/reference/clip-text.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-text.image16.ref.png b/test/reference/clip-text.image16.ref.png deleted file mode 100644 index 2122954..0000000 Binary files a/test/reference/clip-text.image16.ref.png and /dev/null differ diff --git a/test/reference/clip-text.mask.argb32.ref.png b/test/reference/clip-text.mask.argb32.ref.png deleted file mode 100644 index 98484cd..0000000 Binary files a/test/reference/clip-text.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-text.mask.rgb24.ref.png b/test/reference/clip-text.mask.rgb24.ref.png deleted file mode 100644 index 98484cd..0000000 Binary files a/test/reference/clip-text.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-text.ps.xfail.png b/test/reference/clip-text.ps.xfail.png deleted file mode 100644 index b50217d..0000000 Binary files a/test/reference/clip-text.ps.xfail.png and /dev/null differ diff --git a/test/reference/clip-text.quartz.ref.png b/test/reference/clip-text.quartz.ref.png deleted file mode 100644 index d251bfa..0000000 Binary files a/test/reference/clip-text.quartz.ref.png and /dev/null differ diff --git a/test/reference/clip-text.ref.png b/test/reference/clip-text.ref.png deleted file mode 100644 index c73d1fd..0000000 Binary files a/test/reference/clip-text.ref.png and /dev/null differ diff --git a/test/reference/clip-text.svg.ref.png b/test/reference/clip-text.svg.ref.png deleted file mode 100644 index a113b14..0000000 Binary files a/test/reference/clip-text.svg.ref.png and /dev/null differ diff --git a/test/reference/clip-text.traps.argb32.ref.png b/test/reference/clip-text.traps.argb32.ref.png deleted file mode 100644 index 2a68298..0000000 Binary files a/test/reference/clip-text.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-text.traps.rgb24.ref.png b/test/reference/clip-text.traps.rgb24.ref.png deleted file mode 100644 index 2a68298..0000000 Binary files a/test/reference/clip-text.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-twice-rectangle.base.argb32.ref.png b/test/reference/clip-twice-rectangle.base.argb32.ref.png deleted file mode 100644 index d0e65ea..0000000 Binary files a/test/reference/clip-twice-rectangle.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-twice-rectangle.base.rgb24.ref.png b/test/reference/clip-twice-rectangle.base.rgb24.ref.png deleted file mode 100644 index d0e65ea..0000000 Binary files a/test/reference/clip-twice-rectangle.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-twice-rectangle.ref.png b/test/reference/clip-twice-rectangle.ref.png deleted file mode 100644 index d0e65ea..0000000 Binary files a/test/reference/clip-twice-rectangle.ref.png and /dev/null differ diff --git a/test/reference/clip-twice.argb32.ref.png b/test/reference/clip-twice.argb32.ref.png deleted file mode 100644 index 03dc4a5..0000000 Binary files a/test/reference/clip-twice.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-twice.base.argb32.ref.png b/test/reference/clip-twice.base.argb32.ref.png deleted file mode 100644 index a3dcca4..0000000 Binary files a/test/reference/clip-twice.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-twice.base.rgb24.ref.png b/test/reference/clip-twice.base.rgb24.ref.png deleted file mode 100644 index 0c4aaba..0000000 Binary files a/test/reference/clip-twice.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-twice.image16.ref.png b/test/reference/clip-twice.image16.ref.png deleted file mode 100644 index d5a3f45..0000000 Binary files a/test/reference/clip-twice.image16.ref.png and /dev/null differ diff --git a/test/reference/clip-twice.mask.argb32.ref.png b/test/reference/clip-twice.mask.argb32.ref.png deleted file mode 100644 index 828dd23..0000000 Binary files a/test/reference/clip-twice.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-twice.mask.rgb24.ref.png b/test/reference/clip-twice.mask.rgb24.ref.png deleted file mode 100644 index 8b6baed..0000000 Binary files a/test/reference/clip-twice.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-twice.pdf.argb32.ref.png b/test/reference/clip-twice.pdf.argb32.ref.png deleted file mode 100644 index 2a7541f..0000000 Binary files a/test/reference/clip-twice.pdf.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-twice.ps.argb32.ref.png b/test/reference/clip-twice.ps.argb32.ref.png deleted file mode 100644 index 5d29d17..0000000 Binary files a/test/reference/clip-twice.ps.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-twice.ps.rgb24.ref.png b/test/reference/clip-twice.ps.rgb24.ref.png deleted file mode 100644 index 85eb890..0000000 Binary files a/test/reference/clip-twice.ps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-twice.quartz.argb32.ref.png b/test/reference/clip-twice.quartz.argb32.ref.png deleted file mode 100644 index 04b588d..0000000 Binary files a/test/reference/clip-twice.quartz.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-twice.quartz.rgb24.ref.png b/test/reference/clip-twice.quartz.rgb24.ref.png deleted file mode 100644 index eb4f62c..0000000 Binary files a/test/reference/clip-twice.quartz.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-twice.rgb24.ref.png b/test/reference/clip-twice.rgb24.ref.png deleted file mode 100644 index c25fffa..0000000 Binary files a/test/reference/clip-twice.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-twice.test-paginated.argb32.ref.png b/test/reference/clip-twice.test-paginated.argb32.ref.png deleted file mode 100644 index ffd59aa..0000000 Binary files a/test/reference/clip-twice.test-paginated.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-twice.test-paginated.rgb24.ref.png b/test/reference/clip-twice.test-paginated.rgb24.ref.png deleted file mode 100644 index e3d0ae4..0000000 Binary files a/test/reference/clip-twice.test-paginated.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-twice.traps.argb32.ref.png b/test/reference/clip-twice.traps.argb32.ref.png deleted file mode 100644 index 057fc31..0000000 Binary files a/test/reference/clip-twice.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-twice.traps.rgb24.ref.png b/test/reference/clip-twice.traps.rgb24.ref.png deleted file mode 100644 index 6002d34..0000000 Binary files a/test/reference/clip-twice.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-unbounded.base.argb32.ref.png b/test/reference/clip-unbounded.base.argb32.ref.png deleted file mode 100644 index 0b65905..0000000 Binary files a/test/reference/clip-unbounded.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/clip-unbounded.base.rgb24.ref.png b/test/reference/clip-unbounded.base.rgb24.ref.png deleted file mode 100644 index 2baf9f4..0000000 Binary files a/test/reference/clip-unbounded.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-unbounded.pdf.argb32.xfail.png b/test/reference/clip-unbounded.pdf.argb32.xfail.png deleted file mode 100644 index 1ed070c..0000000 Binary files a/test/reference/clip-unbounded.pdf.argb32.xfail.png and /dev/null differ diff --git a/test/reference/clip-unbounded.pdf.rgb24.xfail.png b/test/reference/clip-unbounded.pdf.rgb24.xfail.png deleted file mode 100644 index 1ed070c..0000000 Binary files a/test/reference/clip-unbounded.pdf.rgb24.xfail.png and /dev/null differ diff --git a/test/reference/clip-unbounded.ref.png b/test/reference/clip-unbounded.ref.png deleted file mode 100644 index 0b65905..0000000 Binary files a/test/reference/clip-unbounded.ref.png and /dev/null differ diff --git a/test/reference/clip-unbounded.svg12.rgb24.xfail.png b/test/reference/clip-unbounded.svg12.rgb24.xfail.png deleted file mode 100644 index 0b65905..0000000 Binary files a/test/reference/clip-unbounded.svg12.rgb24.xfail.png and /dev/null differ diff --git a/test/reference/clip-xlib-fallback.rgb24.ref.png b/test/reference/clip-xlib-fallback.rgb24.ref.png deleted file mode 100644 index 062c721..0000000 Binary files a/test/reference/clip-xlib-fallback.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-xlib-window.rgb24.ref.png b/test/reference/clip-xlib-window.rgb24.ref.png deleted file mode 100644 index 062c721..0000000 Binary files a/test/reference/clip-xlib-window.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clip-xlib.ref.png b/test/reference/clip-xlib.ref.png deleted file mode 100644 index 062c721..0000000 Binary files a/test/reference/clip-xlib.ref.png and /dev/null differ diff --git a/test/reference/clipped-group.base.argb32.ref.png b/test/reference/clipped-group.base.argb32.ref.png deleted file mode 100644 index bea4c75..0000000 Binary files a/test/reference/clipped-group.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/clipped-group.base.rgb24.ref.png b/test/reference/clipped-group.base.rgb24.ref.png deleted file mode 100644 index bea4c75..0000000 Binary files a/test/reference/clipped-group.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clipped-group.image16.ref.png b/test/reference/clipped-group.image16.ref.png deleted file mode 100644 index bf419f6..0000000 Binary files a/test/reference/clipped-group.image16.ref.png and /dev/null differ diff --git a/test/reference/clipped-group.mask.argb32.ref.png b/test/reference/clipped-group.mask.argb32.ref.png deleted file mode 100644 index 53b149f..0000000 Binary files a/test/reference/clipped-group.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/clipped-group.mask.rgb24.ref.png b/test/reference/clipped-group.mask.rgb24.ref.png deleted file mode 100644 index 53b149f..0000000 Binary files a/test/reference/clipped-group.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clipped-group.pdf.ref.png b/test/reference/clipped-group.pdf.ref.png deleted file mode 100644 index 23db5a4..0000000 Binary files a/test/reference/clipped-group.pdf.ref.png and /dev/null differ diff --git a/test/reference/clipped-group.ps2.ref.png b/test/reference/clipped-group.ps2.ref.png deleted file mode 100644 index 7a0f45c..0000000 Binary files a/test/reference/clipped-group.ps2.ref.png and /dev/null differ diff --git a/test/reference/clipped-group.ps3.ref.png b/test/reference/clipped-group.ps3.ref.png deleted file mode 100644 index 7a0f45c..0000000 Binary files a/test/reference/clipped-group.ps3.ref.png and /dev/null differ diff --git a/test/reference/clipped-group.quartz.ref.png b/test/reference/clipped-group.quartz.ref.png deleted file mode 100644 index 10e22f7..0000000 Binary files a/test/reference/clipped-group.quartz.ref.png and /dev/null differ diff --git a/test/reference/clipped-group.ref.png b/test/reference/clipped-group.ref.png deleted file mode 100644 index 245b16e..0000000 Binary files a/test/reference/clipped-group.ref.png and /dev/null differ diff --git a/test/reference/clipped-group.svg.ref.png b/test/reference/clipped-group.svg.ref.png deleted file mode 100644 index 196aec0..0000000 Binary files a/test/reference/clipped-group.svg.ref.png and /dev/null differ diff --git a/test/reference/clipped-group.traps.argb32.ref.png b/test/reference/clipped-group.traps.argb32.ref.png deleted file mode 100644 index b25c9f4..0000000 Binary files a/test/reference/clipped-group.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/clipped-group.traps.rgb24.ref.png b/test/reference/clipped-group.traps.rgb24.ref.png deleted file mode 100644 index b25c9f4..0000000 Binary files a/test/reference/clipped-group.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clipped-group.xlib-fallback.ref.png b/test/reference/clipped-group.xlib-fallback.ref.png deleted file mode 100644 index e0a5dc0..0000000 Binary files a/test/reference/clipped-group.xlib-fallback.ref.png and /dev/null differ diff --git a/test/reference/clipped-surface.base.argb32.ref.png b/test/reference/clipped-surface.base.argb32.ref.png deleted file mode 100644 index 8e8b008..0000000 Binary files a/test/reference/clipped-surface.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/clipped-surface.base.rgb24.ref.png b/test/reference/clipped-surface.base.rgb24.ref.png deleted file mode 100644 index 8e8b008..0000000 Binary files a/test/reference/clipped-surface.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/clipped-surface.image16.ref.png b/test/reference/clipped-surface.image16.ref.png deleted file mode 100644 index e9ad572..0000000 Binary files a/test/reference/clipped-surface.image16.ref.png and /dev/null differ diff --git a/test/reference/clipped-surface.ref.png b/test/reference/clipped-surface.ref.png deleted file mode 100644 index 7fed5a3..0000000 Binary files a/test/reference/clipped-surface.ref.png and /dev/null differ diff --git a/test/reference/clipped-trapezoids.ref.png b/test/reference/clipped-trapezoids.ref.png deleted file mode 100644 index 975a692..0000000 Binary files a/test/reference/clipped-trapezoids.ref.png and /dev/null differ diff --git a/test/reference/close-path-current-point.base.argb32.ref.png b/test/reference/close-path-current-point.base.argb32.ref.png deleted file mode 100644 index 373eb11..0000000 Binary files a/test/reference/close-path-current-point.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/close-path-current-point.base.rgb24.ref.png b/test/reference/close-path-current-point.base.rgb24.ref.png deleted file mode 100644 index 373eb11..0000000 Binary files a/test/reference/close-path-current-point.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/close-path-current-point.image16.ref.png b/test/reference/close-path-current-point.image16.ref.png deleted file mode 100644 index 6aacf3e..0000000 Binary files a/test/reference/close-path-current-point.image16.ref.png and /dev/null differ diff --git a/test/reference/close-path-current-point.mask.argb32.ref.png b/test/reference/close-path-current-point.mask.argb32.ref.png deleted file mode 100644 index ab3124b..0000000 Binary files a/test/reference/close-path-current-point.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/close-path-current-point.mask.rgb24.ref.png b/test/reference/close-path-current-point.mask.rgb24.ref.png deleted file mode 100644 index ab3124b..0000000 Binary files a/test/reference/close-path-current-point.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/close-path-current-point.ps.ref.png b/test/reference/close-path-current-point.ps.ref.png deleted file mode 100644 index 1442f01..0000000 Binary files a/test/reference/close-path-current-point.ps.ref.png and /dev/null differ diff --git a/test/reference/close-path-current-point.ref.png b/test/reference/close-path-current-point.ref.png deleted file mode 100644 index 3ae4900..0000000 Binary files a/test/reference/close-path-current-point.ref.png and /dev/null differ diff --git a/test/reference/close-path-current-point.traps.argb32.ref.png b/test/reference/close-path-current-point.traps.argb32.ref.png deleted file mode 100644 index 373eb11..0000000 Binary files a/test/reference/close-path-current-point.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/close-path-current-point.traps.rgb24.ref.png b/test/reference/close-path-current-point.traps.rgb24.ref.png deleted file mode 100644 index 373eb11..0000000 Binary files a/test/reference/close-path-current-point.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/close-path.base.argb32.ref.png b/test/reference/close-path.base.argb32.ref.png deleted file mode 100644 index b53fab2..0000000 Binary files a/test/reference/close-path.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/close-path.base.rgb24.ref.png b/test/reference/close-path.base.rgb24.ref.png deleted file mode 100644 index b53fab2..0000000 Binary files a/test/reference/close-path.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/close-path.ps2.ref.png b/test/reference/close-path.ps2.ref.png deleted file mode 100644 index e43821c..0000000 Binary files a/test/reference/close-path.ps2.ref.png and /dev/null differ diff --git a/test/reference/close-path.ps3.ref.png b/test/reference/close-path.ps3.ref.png deleted file mode 100644 index e43821c..0000000 Binary files a/test/reference/close-path.ps3.ref.png and /dev/null differ diff --git a/test/reference/close-path.ref.png b/test/reference/close-path.ref.png deleted file mode 100644 index 5506ff8..0000000 Binary files a/test/reference/close-path.ref.png and /dev/null differ diff --git a/test/reference/close-path.traps.argb32.ref.png b/test/reference/close-path.traps.argb32.ref.png deleted file mode 100644 index b53fab2..0000000 Binary files a/test/reference/close-path.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/close-path.traps.rgb24.ref.png b/test/reference/close-path.traps.rgb24.ref.png deleted file mode 100644 index b53fab2..0000000 Binary files a/test/reference/close-path.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/composite-integer-translate-over-repeat.base.argb32.ref.png b/test/reference/composite-integer-translate-over-repeat.base.argb32.ref.png deleted file mode 100644 index c425749..0000000 Binary files a/test/reference/composite-integer-translate-over-repeat.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/composite-integer-translate-over-repeat.base.rgb24.ref.png b/test/reference/composite-integer-translate-over-repeat.base.rgb24.ref.png deleted file mode 100644 index c425749..0000000 Binary files a/test/reference/composite-integer-translate-over-repeat.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/composite-integer-translate-over-repeat.ps2.ref.png b/test/reference/composite-integer-translate-over-repeat.ps2.ref.png deleted file mode 100644 index f0e7b84..0000000 Binary files a/test/reference/composite-integer-translate-over-repeat.ps2.ref.png and /dev/null differ diff --git a/test/reference/composite-integer-translate-over-repeat.ps3.ref.png b/test/reference/composite-integer-translate-over-repeat.ps3.ref.png deleted file mode 100644 index f0e7b84..0000000 Binary files a/test/reference/composite-integer-translate-over-repeat.ps3.ref.png and /dev/null differ diff --git a/test/reference/composite-integer-translate-over-repeat.ref.png b/test/reference/composite-integer-translate-over-repeat.ref.png deleted file mode 100644 index c04db26..0000000 Binary files a/test/reference/composite-integer-translate-over-repeat.ref.png and /dev/null differ diff --git a/test/reference/composite-integer-translate-over.base.argb32.ref.png b/test/reference/composite-integer-translate-over.base.argb32.ref.png deleted file mode 100644 index 7ac3ddf..0000000 Binary files a/test/reference/composite-integer-translate-over.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/composite-integer-translate-over.base.rgb24.ref.png b/test/reference/composite-integer-translate-over.base.rgb24.ref.png deleted file mode 100644 index 7ac3ddf..0000000 Binary files a/test/reference/composite-integer-translate-over.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/composite-integer-translate-over.image16.ref.png b/test/reference/composite-integer-translate-over.image16.ref.png deleted file mode 100644 index acb0917..0000000 Binary files a/test/reference/composite-integer-translate-over.image16.ref.png and /dev/null differ diff --git a/test/reference/composite-integer-translate-over.ps2.ref.png b/test/reference/composite-integer-translate-over.ps2.ref.png deleted file mode 100644 index 8c8cc0d..0000000 Binary files a/test/reference/composite-integer-translate-over.ps2.ref.png and /dev/null differ diff --git a/test/reference/composite-integer-translate-over.ps3.ref.png b/test/reference/composite-integer-translate-over.ps3.ref.png deleted file mode 100644 index 8c8cc0d..0000000 Binary files a/test/reference/composite-integer-translate-over.ps3.ref.png and /dev/null differ diff --git a/test/reference/composite-integer-translate-over.ref.png b/test/reference/composite-integer-translate-over.ref.png deleted file mode 100644 index 630d993..0000000 Binary files a/test/reference/composite-integer-translate-over.ref.png and /dev/null differ diff --git a/test/reference/composite-integer-translate-source.base.argb32.ref.png b/test/reference/composite-integer-translate-source.base.argb32.ref.png deleted file mode 100644 index 7ac3ddf..0000000 Binary files a/test/reference/composite-integer-translate-source.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/composite-integer-translate-source.base.rgb24.ref.png b/test/reference/composite-integer-translate-source.base.rgb24.ref.png deleted file mode 100644 index 7ac3ddf..0000000 Binary files a/test/reference/composite-integer-translate-source.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/composite-integer-translate-source.image16.ref.png b/test/reference/composite-integer-translate-source.image16.ref.png deleted file mode 100644 index acb0917..0000000 Binary files a/test/reference/composite-integer-translate-source.image16.ref.png and /dev/null differ diff --git a/test/reference/composite-integer-translate-source.ps2.ref.png b/test/reference/composite-integer-translate-source.ps2.ref.png deleted file mode 100644 index 8c8cc0d..0000000 Binary files a/test/reference/composite-integer-translate-source.ps2.ref.png and /dev/null differ diff --git a/test/reference/composite-integer-translate-source.ps3.ref.png b/test/reference/composite-integer-translate-source.ps3.ref.png deleted file mode 100644 index 8c8cc0d..0000000 Binary files a/test/reference/composite-integer-translate-source.ps3.ref.png and /dev/null differ diff --git a/test/reference/composite-integer-translate-source.ref.png b/test/reference/composite-integer-translate-source.ref.png deleted file mode 100644 index da9a398..0000000 Binary files a/test/reference/composite-integer-translate-source.ref.png and /dev/null differ diff --git a/test/reference/composite-integer-translate-source.svg12.argb32.xfail.png b/test/reference/composite-integer-translate-source.svg12.argb32.xfail.png deleted file mode 100644 index c4f3197..0000000 Binary files a/test/reference/composite-integer-translate-source.svg12.argb32.xfail.png and /dev/null differ diff --git a/test/reference/composite-integer-translate-source.svg12.rgb24.xfail.png b/test/reference/composite-integer-translate-source.svg12.rgb24.xfail.png deleted file mode 100644 index c4f3197..0000000 Binary files a/test/reference/composite-integer-translate-source.svg12.rgb24.xfail.png and /dev/null differ diff --git a/test/reference/copy-disjoint.base.argb32.ref.png b/test/reference/copy-disjoint.base.argb32.ref.png deleted file mode 100644 index da9a3b1..0000000 Binary files a/test/reference/copy-disjoint.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/copy-disjoint.base.rgb24.ref.png b/test/reference/copy-disjoint.base.rgb24.ref.png deleted file mode 100644 index da9a3b1..0000000 Binary files a/test/reference/copy-disjoint.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/copy-disjoint.ref.png b/test/reference/copy-disjoint.ref.png deleted file mode 100644 index da9a3b1..0000000 Binary files a/test/reference/copy-disjoint.ref.png and /dev/null differ diff --git a/test/reference/copy-path.base.argb32.ref.png b/test/reference/copy-path.base.argb32.ref.png deleted file mode 100644 index 6ca6f48..0000000 Binary files a/test/reference/copy-path.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/copy-path.base.rgb24.ref.png b/test/reference/copy-path.base.rgb24.ref.png deleted file mode 100644 index 6ca6f48..0000000 Binary files a/test/reference/copy-path.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/copy-path.image16.ref.png b/test/reference/copy-path.image16.ref.png deleted file mode 100644 index 1b3cabc..0000000 Binary files a/test/reference/copy-path.image16.ref.png and /dev/null differ diff --git a/test/reference/copy-path.ps.ref.png b/test/reference/copy-path.ps.ref.png deleted file mode 100644 index 41423a0..0000000 Binary files a/test/reference/copy-path.ps.ref.png and /dev/null differ diff --git a/test/reference/copy-path.ref.png b/test/reference/copy-path.ref.png deleted file mode 100644 index b50e9e4..0000000 Binary files a/test/reference/copy-path.ref.png and /dev/null differ diff --git a/test/reference/copy-path.traps.argb32.ref.png b/test/reference/copy-path.traps.argb32.ref.png deleted file mode 100644 index 6ca6f48..0000000 Binary files a/test/reference/copy-path.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/copy-path.traps.rgb24.ref.png b/test/reference/copy-path.traps.rgb24.ref.png deleted file mode 100644 index 6ca6f48..0000000 Binary files a/test/reference/copy-path.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/coverage-abutting.ref.png b/test/reference/coverage-abutting.ref.png deleted file mode 100644 index 8e37ca3..0000000 Binary files a/test/reference/coverage-abutting.ref.png and /dev/null differ diff --git a/test/reference/coverage-column-triangles.ref.png b/test/reference/coverage-column-triangles.ref.png deleted file mode 100644 index aa61031..0000000 Binary files a/test/reference/coverage-column-triangles.ref.png and /dev/null differ diff --git a/test/reference/coverage-column-triangles.xfail.png b/test/reference/coverage-column-triangles.xfail.png deleted file mode 100644 index 566b415..0000000 Binary files a/test/reference/coverage-column-triangles.xfail.png and /dev/null differ diff --git a/test/reference/coverage-column-triangles.xlib.xfail.png b/test/reference/coverage-column-triangles.xlib.xfail.png deleted file mode 100644 index f433b7a..0000000 Binary files a/test/reference/coverage-column-triangles.xlib.xfail.png and /dev/null differ diff --git a/test/reference/coverage-intersecting-quads.ref.png b/test/reference/coverage-intersecting-quads.ref.png deleted file mode 100644 index f56cb55..0000000 Binary files a/test/reference/coverage-intersecting-quads.ref.png and /dev/null differ diff --git a/test/reference/coverage-intersecting-quads.xlib.xfail.png b/test/reference/coverage-intersecting-quads.xlib.xfail.png deleted file mode 100644 index d6b8c2e..0000000 Binary files a/test/reference/coverage-intersecting-quads.xlib.xfail.png and /dev/null differ diff --git a/test/reference/coverage-intersecting-triangles.ref.png b/test/reference/coverage-intersecting-triangles.ref.png deleted file mode 100644 index 40a48c1..0000000 Binary files a/test/reference/coverage-intersecting-triangles.ref.png and /dev/null differ diff --git a/test/reference/coverage-intersecting-triangles.xfail.png b/test/reference/coverage-intersecting-triangles.xfail.png deleted file mode 100644 index c0290e4..0000000 Binary files a/test/reference/coverage-intersecting-triangles.xfail.png and /dev/null differ diff --git a/test/reference/coverage-intersecting-triangles.xlib.xfail.png b/test/reference/coverage-intersecting-triangles.xlib.xfail.png deleted file mode 100644 index e64cd47..0000000 Binary files a/test/reference/coverage-intersecting-triangles.xlib.xfail.png and /dev/null differ diff --git a/test/reference/coverage-rectangles.ref.png b/test/reference/coverage-rectangles.ref.png deleted file mode 100644 index cc1d31c..0000000 Binary files a/test/reference/coverage-rectangles.ref.png and /dev/null differ diff --git a/test/reference/coverage-rectangles.xlib.xfail.png b/test/reference/coverage-rectangles.xlib.xfail.png deleted file mode 100644 index 622c2d7..0000000 Binary files a/test/reference/coverage-rectangles.xlib.xfail.png and /dev/null differ diff --git a/test/reference/coverage-rhombus.ref.png b/test/reference/coverage-rhombus.ref.png deleted file mode 100644 index 51e0835..0000000 Binary files a/test/reference/coverage-rhombus.ref.png and /dev/null differ diff --git a/test/reference/coverage-rhombus.xfail.png b/test/reference/coverage-rhombus.xfail.png deleted file mode 100644 index cbfc10a..0000000 Binary files a/test/reference/coverage-rhombus.xfail.png and /dev/null differ diff --git a/test/reference/coverage-row-triangles.ref.png b/test/reference/coverage-row-triangles.ref.png deleted file mode 100644 index aa61031..0000000 Binary files a/test/reference/coverage-row-triangles.ref.png and /dev/null differ diff --git a/test/reference/coverage-row-triangles.xfail.png b/test/reference/coverage-row-triangles.xfail.png deleted file mode 100644 index d451ba9..0000000 Binary files a/test/reference/coverage-row-triangles.xfail.png and /dev/null differ diff --git a/test/reference/coverage-row-triangles.xlib.xfail.png b/test/reference/coverage-row-triangles.xlib.xfail.png deleted file mode 100644 index f8582fb..0000000 Binary files a/test/reference/coverage-row-triangles.xlib.xfail.png and /dev/null differ diff --git a/test/reference/coverage-triangles.ref.png b/test/reference/coverage-triangles.ref.png deleted file mode 100644 index f56cb55..0000000 Binary files a/test/reference/coverage-triangles.ref.png and /dev/null differ diff --git a/test/reference/coverage-triangles.xfail.png b/test/reference/coverage-triangles.xfail.png deleted file mode 100644 index dea5983..0000000 Binary files a/test/reference/coverage-triangles.xfail.png and /dev/null differ diff --git a/test/reference/coverage-triangles.xlib.xfail.png b/test/reference/coverage-triangles.xlib.xfail.png deleted file mode 100644 index 133fd33..0000000 Binary files a/test/reference/coverage-triangles.xlib.xfail.png and /dev/null differ diff --git a/test/reference/create-from-png-stream.base.argb32.ref.png b/test/reference/create-from-png-stream.base.argb32.ref.png deleted file mode 100644 index 0a145d9..0000000 Binary files a/test/reference/create-from-png-stream.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/create-from-png-stream.base.rgb24.ref.png b/test/reference/create-from-png-stream.base.rgb24.ref.png deleted file mode 100644 index 0a145d9..0000000 Binary files a/test/reference/create-from-png-stream.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/create-from-png-stream.ref.png b/test/reference/create-from-png-stream.ref.png deleted file mode 100644 index 765adc4..0000000 Binary files a/test/reference/create-from-png-stream.ref.png and /dev/null differ diff --git a/test/reference/create-from-png.alpha.ref.png b/test/reference/create-from-png.alpha.ref.png deleted file mode 100644 index a5175a1..0000000 Binary files a/test/reference/create-from-png.alpha.ref.png and /dev/null differ diff --git a/test/reference/create-from-png.base.argb32.ref.png b/test/reference/create-from-png.base.argb32.ref.png deleted file mode 100644 index 0a145d9..0000000 Binary files a/test/reference/create-from-png.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/create-from-png.base.rgb24.ref.png b/test/reference/create-from-png.base.rgb24.ref.png deleted file mode 100644 index 0a145d9..0000000 Binary files a/test/reference/create-from-png.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/create-from-png.gray-alpha.ref.png b/test/reference/create-from-png.gray-alpha.ref.png deleted file mode 100644 index f5d47dc..0000000 Binary files a/test/reference/create-from-png.gray-alpha.ref.png and /dev/null differ diff --git a/test/reference/create-from-png.gray.ref.png b/test/reference/create-from-png.gray.ref.png deleted file mode 100644 index 12dc90b..0000000 Binary files a/test/reference/create-from-png.gray.ref.png and /dev/null differ diff --git a/test/reference/create-from-png.indexed-alpha.ref.png b/test/reference/create-from-png.indexed-alpha.ref.png deleted file mode 100644 index 9f32c69..0000000 Binary files a/test/reference/create-from-png.indexed-alpha.ref.png and /dev/null differ diff --git a/test/reference/create-from-png.indexed.ref.png b/test/reference/create-from-png.indexed.ref.png deleted file mode 100644 index 6b1d713..0000000 Binary files a/test/reference/create-from-png.indexed.ref.png and /dev/null differ diff --git a/test/reference/create-from-png.mask.argb32.ref.png b/test/reference/create-from-png.mask.argb32.ref.png deleted file mode 100644 index 0a145d9..0000000 Binary files a/test/reference/create-from-png.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/create-from-png.mask.rgb24.ref.png b/test/reference/create-from-png.mask.rgb24.ref.png deleted file mode 100644 index 0a145d9..0000000 Binary files a/test/reference/create-from-png.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/create-from-png.ref.png b/test/reference/create-from-png.ref.png deleted file mode 100644 index 0a145d9..0000000 Binary files a/test/reference/create-from-png.ref.png and /dev/null differ diff --git a/test/reference/create-from-png.traps.argb32.ref.png b/test/reference/create-from-png.traps.argb32.ref.png deleted file mode 100644 index 0a145d9..0000000 Binary files a/test/reference/create-from-png.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/create-from-png.traps.rgb24.ref.png b/test/reference/create-from-png.traps.rgb24.ref.png deleted file mode 100644 index 0a145d9..0000000 Binary files a/test/reference/create-from-png.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/culled-glyphs.base.argb32.ref.png b/test/reference/culled-glyphs.base.argb32.ref.png deleted file mode 100644 index 6701295..0000000 Binary files a/test/reference/culled-glyphs.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/culled-glyphs.base.rgb24.ref.png b/test/reference/culled-glyphs.base.rgb24.ref.png deleted file mode 100644 index 6701295..0000000 Binary files a/test/reference/culled-glyphs.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/culled-glyphs.image16.ref.png b/test/reference/culled-glyphs.image16.ref.png deleted file mode 100644 index 724cb8f..0000000 Binary files a/test/reference/culled-glyphs.image16.ref.png and /dev/null differ diff --git a/test/reference/culled-glyphs.ps.ref.png b/test/reference/culled-glyphs.ps.ref.png deleted file mode 100644 index f34fb95..0000000 Binary files a/test/reference/culled-glyphs.ps.ref.png and /dev/null differ diff --git a/test/reference/culled-glyphs.quartz.ref.png b/test/reference/culled-glyphs.quartz.ref.png deleted file mode 100644 index 1aa2342..0000000 Binary files a/test/reference/culled-glyphs.quartz.ref.png and /dev/null differ diff --git a/test/reference/culled-glyphs.ref.png b/test/reference/culled-glyphs.ref.png deleted file mode 100644 index 6701295..0000000 Binary files a/test/reference/culled-glyphs.ref.png and /dev/null differ diff --git a/test/reference/curve-to-as-line-to.base.argb32.ref.png b/test/reference/curve-to-as-line-to.base.argb32.ref.png deleted file mode 100644 index 15589db..0000000 Binary files a/test/reference/curve-to-as-line-to.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/curve-to-as-line-to.base.rgb24.ref.png b/test/reference/curve-to-as-line-to.base.rgb24.ref.png deleted file mode 100644 index 15589db..0000000 Binary files a/test/reference/curve-to-as-line-to.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/curve-to-as-line-to.mask.argb32.ref.png b/test/reference/curve-to-as-line-to.mask.argb32.ref.png deleted file mode 100644 index d241183..0000000 Binary files a/test/reference/curve-to-as-line-to.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/curve-to-as-line-to.mask.rgb24.ref.png b/test/reference/curve-to-as-line-to.mask.rgb24.ref.png deleted file mode 100644 index d241183..0000000 Binary files a/test/reference/curve-to-as-line-to.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/curve-to-as-line-to.ps.xfail.png b/test/reference/curve-to-as-line-to.ps.xfail.png deleted file mode 100644 index 3f31058..0000000 Binary files a/test/reference/curve-to-as-line-to.ps.xfail.png and /dev/null differ diff --git a/test/reference/curve-to-as-line-to.ref.png b/test/reference/curve-to-as-line-to.ref.png deleted file mode 100644 index 15589db..0000000 Binary files a/test/reference/curve-to-as-line-to.ref.png and /dev/null differ diff --git a/test/reference/curve-to-as-line-to.traps.argb32.ref.png b/test/reference/curve-to-as-line-to.traps.argb32.ref.png deleted file mode 100644 index 15589db..0000000 Binary files a/test/reference/curve-to-as-line-to.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/curve-to-as-line-to.traps.rgb24.ref.png b/test/reference/curve-to-as-line-to.traps.rgb24.ref.png deleted file mode 100644 index 15589db..0000000 Binary files a/test/reference/curve-to-as-line-to.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/dash-caps-joins.base.argb32.ref.png b/test/reference/dash-caps-joins.base.argb32.ref.png deleted file mode 100644 index b85b033..0000000 Binary files a/test/reference/dash-caps-joins.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/dash-caps-joins.base.rgb24.ref.png b/test/reference/dash-caps-joins.base.rgb24.ref.png deleted file mode 100644 index b85b033..0000000 Binary files a/test/reference/dash-caps-joins.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/dash-caps-joins.image16.ref.png b/test/reference/dash-caps-joins.image16.ref.png deleted file mode 100644 index 1f8d048..0000000 Binary files a/test/reference/dash-caps-joins.image16.ref.png and /dev/null differ diff --git a/test/reference/dash-caps-joins.mask.argb32.ref.png b/test/reference/dash-caps-joins.mask.argb32.ref.png deleted file mode 100644 index b09b86f..0000000 Binary files a/test/reference/dash-caps-joins.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/dash-caps-joins.mask.rgb24.ref.png b/test/reference/dash-caps-joins.mask.rgb24.ref.png deleted file mode 100644 index b09b86f..0000000 Binary files a/test/reference/dash-caps-joins.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/dash-caps-joins.ps.ref.png b/test/reference/dash-caps-joins.ps.ref.png deleted file mode 100644 index 466bc62..0000000 Binary files a/test/reference/dash-caps-joins.ps.ref.png and /dev/null differ diff --git a/test/reference/dash-caps-joins.quartz.xfail.png b/test/reference/dash-caps-joins.quartz.xfail.png deleted file mode 100644 index 0dc5433..0000000 Binary files a/test/reference/dash-caps-joins.quartz.xfail.png and /dev/null differ diff --git a/test/reference/dash-caps-joins.ref.png b/test/reference/dash-caps-joins.ref.png deleted file mode 100644 index 0600125..0000000 Binary files a/test/reference/dash-caps-joins.ref.png and /dev/null differ diff --git a/test/reference/dash-caps-joins.traps.argb32.ref.png b/test/reference/dash-caps-joins.traps.argb32.ref.png deleted file mode 100644 index b85b033..0000000 Binary files a/test/reference/dash-caps-joins.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/dash-caps-joins.traps.rgb24.ref.png b/test/reference/dash-caps-joins.traps.rgb24.ref.png deleted file mode 100644 index b85b033..0000000 Binary files a/test/reference/dash-caps-joins.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/dash-curve.image16.ref.png b/test/reference/dash-curve.image16.ref.png deleted file mode 100644 index d89ceda..0000000 Binary files a/test/reference/dash-curve.image16.ref.png and /dev/null differ diff --git a/test/reference/dash-curve.mask.argb32.ref.png b/test/reference/dash-curve.mask.argb32.ref.png deleted file mode 100644 index 8bebde2..0000000 Binary files a/test/reference/dash-curve.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/dash-curve.mask.rgb24.ref.png b/test/reference/dash-curve.mask.rgb24.ref.png deleted file mode 100644 index 8bebde2..0000000 Binary files a/test/reference/dash-curve.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/dash-curve.ps2.ref.png b/test/reference/dash-curve.ps2.ref.png deleted file mode 100644 index ffb402f..0000000 Binary files a/test/reference/dash-curve.ps2.ref.png and /dev/null differ diff --git a/test/reference/dash-curve.ps3.ref.png b/test/reference/dash-curve.ps3.ref.png deleted file mode 100644 index ffb402f..0000000 Binary files a/test/reference/dash-curve.ps3.ref.png and /dev/null differ diff --git a/test/reference/dash-curve.quartz.xfail.png b/test/reference/dash-curve.quartz.xfail.png deleted file mode 100644 index b68d7a7..0000000 Binary files a/test/reference/dash-curve.quartz.xfail.png and /dev/null differ diff --git a/test/reference/dash-curve.ref.png b/test/reference/dash-curve.ref.png deleted file mode 100644 index 8eefce2..0000000 Binary files a/test/reference/dash-curve.ref.png and /dev/null differ diff --git a/test/reference/dash-curve.traps.argb32.ref.png b/test/reference/dash-curve.traps.argb32.ref.png deleted file mode 100644 index a29f43d..0000000 Binary files a/test/reference/dash-curve.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/dash-curve.traps.rgb24.ref.png b/test/reference/dash-curve.traps.rgb24.ref.png deleted file mode 100644 index a29f43d..0000000 Binary files a/test/reference/dash-curve.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/dash-infinite-loop.base.argb32.ref.png b/test/reference/dash-infinite-loop.base.argb32.ref.png deleted file mode 100644 index c0cc739..0000000 Binary files a/test/reference/dash-infinite-loop.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/dash-infinite-loop.base.rgb24.ref.png b/test/reference/dash-infinite-loop.base.rgb24.ref.png deleted file mode 100644 index c0cc739..0000000 Binary files a/test/reference/dash-infinite-loop.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/dash-infinite-loop.ps.ref.png b/test/reference/dash-infinite-loop.ps.ref.png deleted file mode 100644 index bab313a..0000000 Binary files a/test/reference/dash-infinite-loop.ps.ref.png and /dev/null differ diff --git a/test/reference/dash-infinite-loop.ref.png b/test/reference/dash-infinite-loop.ref.png deleted file mode 100644 index 2ae1717..0000000 Binary files a/test/reference/dash-infinite-loop.ref.png and /dev/null differ diff --git a/test/reference/dash-infinite-loop.traps.argb32.ref.png b/test/reference/dash-infinite-loop.traps.argb32.ref.png deleted file mode 100644 index c0cc739..0000000 Binary files a/test/reference/dash-infinite-loop.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/dash-infinite-loop.traps.rgb24.ref.png b/test/reference/dash-infinite-loop.traps.rgb24.ref.png deleted file mode 100644 index c0cc739..0000000 Binary files a/test/reference/dash-infinite-loop.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/dash-no-dash.base.argb32.ref.png b/test/reference/dash-no-dash.base.argb32.ref.png deleted file mode 100644 index c150a4f..0000000 Binary files a/test/reference/dash-no-dash.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/dash-no-dash.base.rgb24.ref.png b/test/reference/dash-no-dash.base.rgb24.ref.png deleted file mode 100644 index c150a4f..0000000 Binary files a/test/reference/dash-no-dash.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/dash-no-dash.ref.png b/test/reference/dash-no-dash.ref.png deleted file mode 100644 index 9afd045..0000000 Binary files a/test/reference/dash-no-dash.ref.png and /dev/null differ diff --git a/test/reference/dash-offset-negative.base.argb32.ref.png b/test/reference/dash-offset-negative.base.argb32.ref.png deleted file mode 100644 index 77b9291..0000000 Binary files a/test/reference/dash-offset-negative.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/dash-offset-negative.base.rgb24.ref.png b/test/reference/dash-offset-negative.base.rgb24.ref.png deleted file mode 100644 index 77b9291..0000000 Binary files a/test/reference/dash-offset-negative.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/dash-offset-negative.pdf.ref.png b/test/reference/dash-offset-negative.pdf.ref.png deleted file mode 100644 index df22d08..0000000 Binary files a/test/reference/dash-offset-negative.pdf.ref.png and /dev/null differ diff --git a/test/reference/dash-offset-negative.ref.png b/test/reference/dash-offset-negative.ref.png deleted file mode 100644 index df22d08..0000000 Binary files a/test/reference/dash-offset-negative.ref.png and /dev/null differ diff --git a/test/reference/dash-offset-negative.traps.argb32.ref.png b/test/reference/dash-offset-negative.traps.argb32.ref.png deleted file mode 100644 index 77b9291..0000000 Binary files a/test/reference/dash-offset-negative.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/dash-offset-negative.traps.rgb24.ref.png b/test/reference/dash-offset-negative.traps.rgb24.ref.png deleted file mode 100644 index 77b9291..0000000 Binary files a/test/reference/dash-offset-negative.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/dash-offset.base.argb32.ref.png b/test/reference/dash-offset.base.argb32.ref.png deleted file mode 100644 index 52600c4..0000000 Binary files a/test/reference/dash-offset.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/dash-offset.base.rgb24.ref.png b/test/reference/dash-offset.base.rgb24.ref.png deleted file mode 100644 index 52600c4..0000000 Binary files a/test/reference/dash-offset.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/dash-offset.ref.png b/test/reference/dash-offset.ref.png deleted file mode 100644 index 52600c4..0000000 Binary files a/test/reference/dash-offset.ref.png and /dev/null differ diff --git a/test/reference/dash-scale.image16.ref.png b/test/reference/dash-scale.image16.ref.png deleted file mode 100644 index 2b4fca5..0000000 Binary files a/test/reference/dash-scale.image16.ref.png and /dev/null differ diff --git a/test/reference/dash-scale.mask.argb32.ref.png b/test/reference/dash-scale.mask.argb32.ref.png deleted file mode 100644 index deef9dc..0000000 Binary files a/test/reference/dash-scale.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/dash-scale.mask.rgb24.ref.png b/test/reference/dash-scale.mask.rgb24.ref.png deleted file mode 100644 index deef9dc..0000000 Binary files a/test/reference/dash-scale.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/dash-scale.ps.ref.png b/test/reference/dash-scale.ps.ref.png deleted file mode 100644 index f8c2527..0000000 Binary files a/test/reference/dash-scale.ps.ref.png and /dev/null differ diff --git a/test/reference/dash-scale.quartz.ref.png b/test/reference/dash-scale.quartz.ref.png deleted file mode 100644 index 62ccdf5..0000000 Binary files a/test/reference/dash-scale.quartz.ref.png and /dev/null differ diff --git a/test/reference/dash-scale.ref.png b/test/reference/dash-scale.ref.png deleted file mode 100644 index a169364..0000000 Binary files a/test/reference/dash-scale.ref.png and /dev/null differ diff --git a/test/reference/dash-scale.traps.argb32.ref.png b/test/reference/dash-scale.traps.argb32.ref.png deleted file mode 100644 index c87cad4..0000000 Binary files a/test/reference/dash-scale.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/dash-scale.traps.rgb24.ref.png b/test/reference/dash-scale.traps.rgb24.ref.png deleted file mode 100644 index c87cad4..0000000 Binary files a/test/reference/dash-scale.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/dash-state.base.argb32.ref.png b/test/reference/dash-state.base.argb32.ref.png deleted file mode 100644 index 5334110..0000000 Binary files a/test/reference/dash-state.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/dash-state.base.rgb24.ref.png b/test/reference/dash-state.base.rgb24.ref.png deleted file mode 100644 index 5334110..0000000 Binary files a/test/reference/dash-state.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/dash-state.image16.ref.png b/test/reference/dash-state.image16.ref.png deleted file mode 100644 index 07c77da..0000000 Binary files a/test/reference/dash-state.image16.ref.png and /dev/null differ diff --git a/test/reference/dash-state.ps2.ref.png b/test/reference/dash-state.ps2.ref.png deleted file mode 100644 index 88e208c..0000000 Binary files a/test/reference/dash-state.ps2.ref.png and /dev/null differ diff --git a/test/reference/dash-state.ps3.ref.png b/test/reference/dash-state.ps3.ref.png deleted file mode 100644 index 88e208c..0000000 Binary files a/test/reference/dash-state.ps3.ref.png and /dev/null differ diff --git a/test/reference/dash-state.quartz.xfail.png b/test/reference/dash-state.quartz.xfail.png deleted file mode 100644 index 993498c..0000000 Binary files a/test/reference/dash-state.quartz.xfail.png and /dev/null differ diff --git a/test/reference/dash-state.ref.png b/test/reference/dash-state.ref.png deleted file mode 100644 index 31551cf..0000000 Binary files a/test/reference/dash-state.ref.png and /dev/null differ diff --git a/test/reference/dash-state.traps.argb32.ref.png b/test/reference/dash-state.traps.argb32.ref.png deleted file mode 100644 index 5334110..0000000 Binary files a/test/reference/dash-state.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/dash-state.traps.rgb24.ref.png b/test/reference/dash-state.traps.rgb24.ref.png deleted file mode 100644 index 5334110..0000000 Binary files a/test/reference/dash-state.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/dash-zero-length.base.argb32.ref.png b/test/reference/dash-zero-length.base.argb32.ref.png deleted file mode 100644 index 367fe3c..0000000 Binary files a/test/reference/dash-zero-length.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/dash-zero-length.base.rgb24.ref.png b/test/reference/dash-zero-length.base.rgb24.ref.png deleted file mode 100644 index 9bd4e93..0000000 Binary files a/test/reference/dash-zero-length.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/dash-zero-length.mask.rgb24.ref.png b/test/reference/dash-zero-length.mask.rgb24.ref.png deleted file mode 100644 index b14bd8d..0000000 Binary files a/test/reference/dash-zero-length.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/dash-zero-length.ps2.ref.png b/test/reference/dash-zero-length.ps2.ref.png deleted file mode 100644 index 68fd3fb..0000000 Binary files a/test/reference/dash-zero-length.ps2.ref.png and /dev/null differ diff --git a/test/reference/dash-zero-length.ps2.rgb24.ref.png b/test/reference/dash-zero-length.ps2.rgb24.ref.png deleted file mode 100644 index 8a4a40f..0000000 Binary files a/test/reference/dash-zero-length.ps2.rgb24.ref.png and /dev/null differ diff --git a/test/reference/dash-zero-length.ps3.ref.png b/test/reference/dash-zero-length.ps3.ref.png deleted file mode 100644 index 68fd3fb..0000000 Binary files a/test/reference/dash-zero-length.ps3.ref.png and /dev/null differ diff --git a/test/reference/dash-zero-length.ps3.rgb24.ref.png b/test/reference/dash-zero-length.ps3.rgb24.ref.png deleted file mode 100644 index 8a4a40f..0000000 Binary files a/test/reference/dash-zero-length.ps3.rgb24.ref.png and /dev/null differ diff --git a/test/reference/dash-zero-length.ref.png b/test/reference/dash-zero-length.ref.png deleted file mode 100644 index fdc5f5e..0000000 Binary files a/test/reference/dash-zero-length.ref.png and /dev/null differ diff --git a/test/reference/dash-zero-length.traps.argb32.ref.png b/test/reference/dash-zero-length.traps.argb32.ref.png deleted file mode 100644 index 367fe3c..0000000 Binary files a/test/reference/dash-zero-length.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/dash-zero-length.traps.rgb24.ref.png b/test/reference/dash-zero-length.traps.rgb24.ref.png deleted file mode 100644 index 9bd4e93..0000000 Binary files a/test/reference/dash-zero-length.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/degenerate-arc.base.argb32.ref.png b/test/reference/degenerate-arc.base.argb32.ref.png deleted file mode 100644 index 9cf3b07..0000000 Binary files a/test/reference/degenerate-arc.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/degenerate-arc.base.rgb24.ref.png b/test/reference/degenerate-arc.base.rgb24.ref.png deleted file mode 100644 index 9cf3b07..0000000 Binary files a/test/reference/degenerate-arc.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/degenerate-arc.image16.ref.png b/test/reference/degenerate-arc.image16.ref.png deleted file mode 100644 index 690e4a4..0000000 Binary files a/test/reference/degenerate-arc.image16.ref.png and /dev/null differ diff --git a/test/reference/degenerate-arc.mask.argb32.ref.png b/test/reference/degenerate-arc.mask.argb32.ref.png deleted file mode 100644 index 4da4fd6..0000000 Binary files a/test/reference/degenerate-arc.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/degenerate-arc.mask.rgb24.ref.png b/test/reference/degenerate-arc.mask.rgb24.ref.png deleted file mode 100644 index 4da4fd6..0000000 Binary files a/test/reference/degenerate-arc.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/degenerate-arc.ps2.ref.png b/test/reference/degenerate-arc.ps2.ref.png deleted file mode 100644 index f6d9134..0000000 Binary files a/test/reference/degenerate-arc.ps2.ref.png and /dev/null differ diff --git a/test/reference/degenerate-arc.ps3.ref.png b/test/reference/degenerate-arc.ps3.ref.png deleted file mode 100644 index f6d9134..0000000 Binary files a/test/reference/degenerate-arc.ps3.ref.png and /dev/null differ diff --git a/test/reference/degenerate-arc.quartz.ref.png b/test/reference/degenerate-arc.quartz.ref.png deleted file mode 100644 index a43f6c9..0000000 Binary files a/test/reference/degenerate-arc.quartz.ref.png and /dev/null differ diff --git a/test/reference/degenerate-arc.ref.png b/test/reference/degenerate-arc.ref.png deleted file mode 100644 index 3242ca4..0000000 Binary files a/test/reference/degenerate-arc.ref.png and /dev/null differ diff --git a/test/reference/degenerate-arc.traps.argb32.ref.png b/test/reference/degenerate-arc.traps.argb32.ref.png deleted file mode 100644 index 9cf3b07..0000000 Binary files a/test/reference/degenerate-arc.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/degenerate-arc.traps.rgb24.ref.png b/test/reference/degenerate-arc.traps.rgb24.ref.png deleted file mode 100644 index 9cf3b07..0000000 Binary files a/test/reference/degenerate-arc.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/degenerate-arcs.base.argb32.ref.png b/test/reference/degenerate-arcs.base.argb32.ref.png deleted file mode 100644 index fc1869d..0000000 Binary files a/test/reference/degenerate-arcs.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/degenerate-arcs.base.rgb24.ref.png b/test/reference/degenerate-arcs.base.rgb24.ref.png deleted file mode 100644 index fc1869d..0000000 Binary files a/test/reference/degenerate-arcs.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/degenerate-arcs.image16.ref.png b/test/reference/degenerate-arcs.image16.ref.png deleted file mode 100644 index 595cb7b..0000000 Binary files a/test/reference/degenerate-arcs.image16.ref.png and /dev/null differ diff --git a/test/reference/degenerate-arcs.ref.png b/test/reference/degenerate-arcs.ref.png deleted file mode 100644 index fc1869d..0000000 Binary files a/test/reference/degenerate-arcs.ref.png and /dev/null differ diff --git a/test/reference/degenerate-curve-to.base.argb32.ref.png b/test/reference/degenerate-curve-to.base.argb32.ref.png deleted file mode 100644 index b676a1a..0000000 Binary files a/test/reference/degenerate-curve-to.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/degenerate-curve-to.base.rgb24.ref.png b/test/reference/degenerate-curve-to.base.rgb24.ref.png deleted file mode 100644 index b676a1a..0000000 Binary files a/test/reference/degenerate-curve-to.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/degenerate-curve-to.image16.ref.png b/test/reference/degenerate-curve-to.image16.ref.png deleted file mode 100644 index 8036d0f..0000000 Binary files a/test/reference/degenerate-curve-to.image16.ref.png and /dev/null differ diff --git a/test/reference/degenerate-curve-to.mask.argb32.ref.png b/test/reference/degenerate-curve-to.mask.argb32.ref.png deleted file mode 100644 index 18ab11e..0000000 Binary files a/test/reference/degenerate-curve-to.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/degenerate-curve-to.mask.rgb24.ref.png b/test/reference/degenerate-curve-to.mask.rgb24.ref.png deleted file mode 100644 index 18ab11e..0000000 Binary files a/test/reference/degenerate-curve-to.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/degenerate-curve-to.ps.xfail.png b/test/reference/degenerate-curve-to.ps.xfail.png deleted file mode 100644 index 1c07965..0000000 Binary files a/test/reference/degenerate-curve-to.ps.xfail.png and /dev/null differ diff --git a/test/reference/degenerate-curve-to.quartz.ref.png b/test/reference/degenerate-curve-to.quartz.ref.png deleted file mode 100644 index 0448343..0000000 Binary files a/test/reference/degenerate-curve-to.quartz.ref.png and /dev/null differ diff --git a/test/reference/degenerate-curve-to.ref.png b/test/reference/degenerate-curve-to.ref.png deleted file mode 100644 index f3fde87..0000000 Binary files a/test/reference/degenerate-curve-to.ref.png and /dev/null differ diff --git a/test/reference/degenerate-curve-to.traps.argb32.ref.png b/test/reference/degenerate-curve-to.traps.argb32.ref.png deleted file mode 100644 index b676a1a..0000000 Binary files a/test/reference/degenerate-curve-to.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/degenerate-curve-to.traps.rgb24.ref.png b/test/reference/degenerate-curve-to.traps.rgb24.ref.png deleted file mode 100644 index b676a1a..0000000 Binary files a/test/reference/degenerate-curve-to.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/degenerate-dash.base.argb32.ref.png b/test/reference/degenerate-dash.base.argb32.ref.png deleted file mode 100644 index ab8573a..0000000 Binary files a/test/reference/degenerate-dash.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/degenerate-dash.base.rgb24.ref.png b/test/reference/degenerate-dash.base.rgb24.ref.png deleted file mode 100644 index ab8573a..0000000 Binary files a/test/reference/degenerate-dash.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/degenerate-dash.mask.argb32.ref.png b/test/reference/degenerate-dash.mask.argb32.ref.png deleted file mode 100644 index 2ddfc8b..0000000 Binary files a/test/reference/degenerate-dash.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/degenerate-dash.mask.rgb24.ref.png b/test/reference/degenerate-dash.mask.rgb24.ref.png deleted file mode 100644 index 2ddfc8b..0000000 Binary files a/test/reference/degenerate-dash.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/degenerate-dash.ps.xfail.png b/test/reference/degenerate-dash.ps.xfail.png deleted file mode 100644 index d5f8884..0000000 Binary files a/test/reference/degenerate-dash.ps.xfail.png and /dev/null differ diff --git a/test/reference/degenerate-dash.quartz.xfail.png b/test/reference/degenerate-dash.quartz.xfail.png deleted file mode 100644 index 594437c..0000000 Binary files a/test/reference/degenerate-dash.quartz.xfail.png and /dev/null differ diff --git a/test/reference/degenerate-dash.ref.png b/test/reference/degenerate-dash.ref.png deleted file mode 100644 index e8635f1..0000000 Binary files a/test/reference/degenerate-dash.ref.png and /dev/null differ diff --git a/test/reference/degenerate-dash.traps.argb32.ref.png b/test/reference/degenerate-dash.traps.argb32.ref.png deleted file mode 100644 index ab8573a..0000000 Binary files a/test/reference/degenerate-dash.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/degenerate-dash.traps.rgb24.ref.png b/test/reference/degenerate-dash.traps.rgb24.ref.png deleted file mode 100644 index ab8573a..0000000 Binary files a/test/reference/degenerate-dash.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/degenerate-linear-gradient.base.argb32.ref.png b/test/reference/degenerate-linear-gradient.base.argb32.ref.png deleted file mode 100644 index ceed48a..0000000 Binary files a/test/reference/degenerate-linear-gradient.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/degenerate-linear-gradient.base.rgb24.ref.png b/test/reference/degenerate-linear-gradient.base.rgb24.ref.png deleted file mode 100644 index ceed48a..0000000 Binary files a/test/reference/degenerate-linear-gradient.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/degenerate-linear-gradient.ref.png b/test/reference/degenerate-linear-gradient.ref.png deleted file mode 100644 index ceed48a..0000000 Binary files a/test/reference/degenerate-linear-gradient.ref.png and /dev/null differ diff --git a/test/reference/degenerate-path.base.argb32.ref.png b/test/reference/degenerate-path.base.argb32.ref.png deleted file mode 100644 index b0fef0e..0000000 Binary files a/test/reference/degenerate-path.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/degenerate-path.base.rgb24.ref.png b/test/reference/degenerate-path.base.rgb24.ref.png deleted file mode 100644 index 33a8ac0..0000000 Binary files a/test/reference/degenerate-path.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/degenerate-path.mask.argb32.ref.png b/test/reference/degenerate-path.mask.argb32.ref.png deleted file mode 100644 index 0459397..0000000 Binary files a/test/reference/degenerate-path.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/degenerate-path.mask.rgb24.ref.png b/test/reference/degenerate-path.mask.rgb24.ref.png deleted file mode 100644 index 07fda63..0000000 Binary files a/test/reference/degenerate-path.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/degenerate-path.ps.argb32.xfail.png b/test/reference/degenerate-path.ps.argb32.xfail.png deleted file mode 100644 index 33d713c..0000000 Binary files a/test/reference/degenerate-path.ps.argb32.xfail.png and /dev/null differ diff --git a/test/reference/degenerate-path.ps.rgb24.xfail.png b/test/reference/degenerate-path.ps.rgb24.xfail.png deleted file mode 100644 index e73f314..0000000 Binary files a/test/reference/degenerate-path.ps.rgb24.xfail.png and /dev/null differ diff --git a/test/reference/degenerate-path.quartz.argb32.xfail.png b/test/reference/degenerate-path.quartz.argb32.xfail.png deleted file mode 100644 index d655e27..0000000 Binary files a/test/reference/degenerate-path.quartz.argb32.xfail.png and /dev/null differ diff --git a/test/reference/degenerate-path.quartz.rgb24.xfail.png b/test/reference/degenerate-path.quartz.rgb24.xfail.png deleted file mode 100644 index 5256951..0000000 Binary files a/test/reference/degenerate-path.quartz.rgb24.xfail.png and /dev/null differ diff --git a/test/reference/degenerate-path.ref.png b/test/reference/degenerate-path.ref.png deleted file mode 100644 index f3dafe6..0000000 Binary files a/test/reference/degenerate-path.ref.png and /dev/null differ diff --git a/test/reference/degenerate-path.traps.argb32.ref.png b/test/reference/degenerate-path.traps.argb32.ref.png deleted file mode 100644 index b0fef0e..0000000 Binary files a/test/reference/degenerate-path.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/degenerate-path.traps.rgb24.ref.png b/test/reference/degenerate-path.traps.rgb24.ref.png deleted file mode 100644 index 33a8ac0..0000000 Binary files a/test/reference/degenerate-path.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/degenerate-pen.base.argb32.ref.png b/test/reference/degenerate-pen.base.argb32.ref.png deleted file mode 100644 index 103b858..0000000 Binary files a/test/reference/degenerate-pen.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/degenerate-pen.base.rgb24.ref.png b/test/reference/degenerate-pen.base.rgb24.ref.png deleted file mode 100644 index 103b858..0000000 Binary files a/test/reference/degenerate-pen.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/degenerate-pen.image16.ref.png b/test/reference/degenerate-pen.image16.ref.png deleted file mode 100644 index 5501127..0000000 Binary files a/test/reference/degenerate-pen.image16.ref.png and /dev/null differ diff --git a/test/reference/degenerate-pen.ps.ref.png b/test/reference/degenerate-pen.ps.ref.png deleted file mode 100644 index 34d173b..0000000 Binary files a/test/reference/degenerate-pen.ps.ref.png and /dev/null differ diff --git a/test/reference/degenerate-pen.ref.png b/test/reference/degenerate-pen.ref.png deleted file mode 100644 index ea65d22..0000000 Binary files a/test/reference/degenerate-pen.ref.png and /dev/null differ diff --git a/test/reference/degenerate-pen.traps.argb32.ref.png b/test/reference/degenerate-pen.traps.argb32.ref.png deleted file mode 100644 index 103b858..0000000 Binary files a/test/reference/degenerate-pen.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/degenerate-pen.traps.rgb24.ref.png b/test/reference/degenerate-pen.traps.rgb24.ref.png deleted file mode 100644 index 103b858..0000000 Binary files a/test/reference/degenerate-pen.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/degenerate-radial-gradient.base.argb32.ref.png b/test/reference/degenerate-radial-gradient.base.argb32.ref.png deleted file mode 100644 index 9a5213b..0000000 Binary files a/test/reference/degenerate-radial-gradient.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/degenerate-radial-gradient.base.rgb24.ref.png b/test/reference/degenerate-radial-gradient.base.rgb24.ref.png deleted file mode 100644 index 9a5213b..0000000 Binary files a/test/reference/degenerate-radial-gradient.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/degenerate-radial-gradient.ref.png b/test/reference/degenerate-radial-gradient.ref.png deleted file mode 100644 index 9a5213b..0000000 Binary files a/test/reference/degenerate-radial-gradient.ref.png and /dev/null differ diff --git a/test/reference/degenerate-rel-curve-to.base.argb32.ref.png b/test/reference/degenerate-rel-curve-to.base.argb32.ref.png deleted file mode 100644 index 0353520..0000000 Binary files a/test/reference/degenerate-rel-curve-to.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/degenerate-rel-curve-to.base.rgb24.ref.png b/test/reference/degenerate-rel-curve-to.base.rgb24.ref.png deleted file mode 100644 index 0353520..0000000 Binary files a/test/reference/degenerate-rel-curve-to.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/degenerate-rel-curve-to.image16.ref.png b/test/reference/degenerate-rel-curve-to.image16.ref.png deleted file mode 100644 index ece8943..0000000 Binary files a/test/reference/degenerate-rel-curve-to.image16.ref.png and /dev/null differ diff --git a/test/reference/degenerate-rel-curve-to.mask.argb32.ref.png b/test/reference/degenerate-rel-curve-to.mask.argb32.ref.png deleted file mode 100644 index c4293ad..0000000 Binary files a/test/reference/degenerate-rel-curve-to.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/degenerate-rel-curve-to.mask.rgb24.ref.png b/test/reference/degenerate-rel-curve-to.mask.rgb24.ref.png deleted file mode 100644 index c4293ad..0000000 Binary files a/test/reference/degenerate-rel-curve-to.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/degenerate-rel-curve-to.ps.ref.png b/test/reference/degenerate-rel-curve-to.ps.ref.png deleted file mode 100644 index 98a1fc9..0000000 Binary files a/test/reference/degenerate-rel-curve-to.ps.ref.png and /dev/null differ diff --git a/test/reference/degenerate-rel-curve-to.quartz.ref.png b/test/reference/degenerate-rel-curve-to.quartz.ref.png deleted file mode 100644 index 2d21e04..0000000 Binary files a/test/reference/degenerate-rel-curve-to.quartz.ref.png and /dev/null differ diff --git a/test/reference/degenerate-rel-curve-to.ref.png b/test/reference/degenerate-rel-curve-to.ref.png deleted file mode 100644 index 4284bfa..0000000 Binary files a/test/reference/degenerate-rel-curve-to.ref.png and /dev/null differ diff --git a/test/reference/degenerate-rel-curve-to.traps.argb32.ref.png b/test/reference/degenerate-rel-curve-to.traps.argb32.ref.png deleted file mode 100644 index 0353520..0000000 Binary files a/test/reference/degenerate-rel-curve-to.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/degenerate-rel-curve-to.traps.rgb24.ref.png b/test/reference/degenerate-rel-curve-to.traps.rgb24.ref.png deleted file mode 100644 index 0353520..0000000 Binary files a/test/reference/degenerate-rel-curve-to.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/degenerate-solid-dash.ref.png b/test/reference/degenerate-solid-dash.ref.png deleted file mode 100644 index 9511289..0000000 Binary files a/test/reference/degenerate-solid-dash.ref.png and /dev/null differ diff --git a/test/reference/device-offset-fractional.base.argb32.ref.png b/test/reference/device-offset-fractional.base.argb32.ref.png deleted file mode 100644 index b1eef5f..0000000 Binary files a/test/reference/device-offset-fractional.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/device-offset-fractional.base.rgb24.ref.png b/test/reference/device-offset-fractional.base.rgb24.ref.png deleted file mode 100644 index b1eef5f..0000000 Binary files a/test/reference/device-offset-fractional.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/device-offset-fractional.gl.xfail.png b/test/reference/device-offset-fractional.gl.xfail.png deleted file mode 100644 index 96b0a6a..0000000 Binary files a/test/reference/device-offset-fractional.gl.xfail.png and /dev/null differ diff --git a/test/reference/device-offset-fractional.pdf.xfail.png b/test/reference/device-offset-fractional.pdf.xfail.png deleted file mode 100644 index 50bbd34..0000000 Binary files a/test/reference/device-offset-fractional.pdf.xfail.png and /dev/null differ diff --git a/test/reference/device-offset-fractional.ps2.ref.png b/test/reference/device-offset-fractional.ps2.ref.png deleted file mode 100644 index 5b44082..0000000 Binary files a/test/reference/device-offset-fractional.ps2.ref.png and /dev/null differ diff --git a/test/reference/device-offset-fractional.ps3.ref.png b/test/reference/device-offset-fractional.ps3.ref.png deleted file mode 100644 index 5b44082..0000000 Binary files a/test/reference/device-offset-fractional.ps3.ref.png and /dev/null differ diff --git a/test/reference/device-offset-fractional.ref.png b/test/reference/device-offset-fractional.ref.png deleted file mode 100644 index 9250d33..0000000 Binary files a/test/reference/device-offset-fractional.ref.png and /dev/null differ diff --git a/test/reference/device-offset-positive.base.argb32.ref.png b/test/reference/device-offset-positive.base.argb32.ref.png deleted file mode 100644 index 1115bca..0000000 Binary files a/test/reference/device-offset-positive.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/device-offset-positive.base.rgb24.ref.png b/test/reference/device-offset-positive.base.rgb24.ref.png deleted file mode 100644 index dcdd332..0000000 Binary files a/test/reference/device-offset-positive.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/device-offset-positive.ref.png b/test/reference/device-offset-positive.ref.png deleted file mode 100644 index bdf63af..0000000 Binary files a/test/reference/device-offset-positive.ref.png and /dev/null differ diff --git a/test/reference/device-offset-scale.base.argb32.ref.png b/test/reference/device-offset-scale.base.argb32.ref.png deleted file mode 100644 index fdffbf3..0000000 Binary files a/test/reference/device-offset-scale.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/device-offset-scale.base.rgb24.ref.png b/test/reference/device-offset-scale.base.rgb24.ref.png deleted file mode 100644 index fdffbf3..0000000 Binary files a/test/reference/device-offset-scale.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/device-offset-scale.ref.png b/test/reference/device-offset-scale.ref.png deleted file mode 100644 index 66b2973..0000000 Binary files a/test/reference/device-offset-scale.ref.png and /dev/null differ diff --git a/test/reference/device-offset-scale.svg.xfail.png b/test/reference/device-offset-scale.svg.xfail.png deleted file mode 100644 index 58a82d6..0000000 Binary files a/test/reference/device-offset-scale.svg.xfail.png and /dev/null differ diff --git a/test/reference/device-offset.base.argb32.ref.png b/test/reference/device-offset.base.argb32.ref.png deleted file mode 100644 index 43ced46..0000000 Binary files a/test/reference/device-offset.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/device-offset.base.rgb24.ref.png b/test/reference/device-offset.base.rgb24.ref.png deleted file mode 100644 index f19acba..0000000 Binary files a/test/reference/device-offset.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/device-offset.ref.png b/test/reference/device-offset.ref.png deleted file mode 100644 index 22cbfb4..0000000 Binary files a/test/reference/device-offset.ref.png and /dev/null differ diff --git a/test/reference/drunkard-tails.base.argb32.ref.png b/test/reference/drunkard-tails.base.argb32.ref.png deleted file mode 100644 index 92ab0b9..0000000 Binary files a/test/reference/drunkard-tails.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/drunkard-tails.base.rgb24.ref.png b/test/reference/drunkard-tails.base.rgb24.ref.png deleted file mode 100644 index 92ab0b9..0000000 Binary files a/test/reference/drunkard-tails.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/drunkard-tails.mask.argb32.ref.png b/test/reference/drunkard-tails.mask.argb32.ref.png deleted file mode 100644 index 053e470..0000000 Binary files a/test/reference/drunkard-tails.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/drunkard-tails.mask.rgb24.ref.png b/test/reference/drunkard-tails.mask.rgb24.ref.png deleted file mode 100644 index 053e470..0000000 Binary files a/test/reference/drunkard-tails.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/drunkard-tails.ps.ref.png b/test/reference/drunkard-tails.ps.ref.png deleted file mode 100644 index f68c8b5..0000000 Binary files a/test/reference/drunkard-tails.ps.ref.png and /dev/null differ diff --git a/test/reference/drunkard-tails.ref.png b/test/reference/drunkard-tails.ref.png deleted file mode 100644 index b38b897..0000000 Binary files a/test/reference/drunkard-tails.ref.png and /dev/null differ diff --git a/test/reference/drunkard-tails.traps.argb32.ref.png b/test/reference/drunkard-tails.traps.argb32.ref.png deleted file mode 100644 index 92ab0b9..0000000 Binary files a/test/reference/drunkard-tails.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/drunkard-tails.traps.rgb24.ref.png b/test/reference/drunkard-tails.traps.rgb24.ref.png deleted file mode 100644 index 92ab0b9..0000000 Binary files a/test/reference/drunkard-tails.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/egl-surface-source.base.argb32.ref.png b/test/reference/egl-surface-source.base.argb32.ref.png deleted file mode 100644 index 0182972..0000000 Binary files a/test/reference/egl-surface-source.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/egl-surface-source.base.rgb24.ref.png b/test/reference/egl-surface-source.base.rgb24.ref.png deleted file mode 100644 index 0d68a82..0000000 Binary files a/test/reference/egl-surface-source.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/egl-surface-source.image16.ref.png b/test/reference/egl-surface-source.image16.ref.png deleted file mode 100644 index 2a7460e..0000000 Binary files a/test/reference/egl-surface-source.image16.ref.png and /dev/null differ diff --git a/test/reference/egl-surface-source.ref.png b/test/reference/egl-surface-source.ref.png deleted file mode 100644 index 0182972..0000000 Binary files a/test/reference/egl-surface-source.ref.png and /dev/null differ diff --git a/test/reference/extend-pad-border.base.argb32.ref.png b/test/reference/extend-pad-border.base.argb32.ref.png deleted file mode 100644 index f4fc524..0000000 Binary files a/test/reference/extend-pad-border.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/extend-pad-border.base.rgb24.ref.png b/test/reference/extend-pad-border.base.rgb24.ref.png deleted file mode 100644 index f4fc524..0000000 Binary files a/test/reference/extend-pad-border.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/extend-pad-border.image16.ref.png b/test/reference/extend-pad-border.image16.ref.png deleted file mode 100644 index 2a1efd4..0000000 Binary files a/test/reference/extend-pad-border.image16.ref.png and /dev/null differ diff --git a/test/reference/extend-pad-border.pdf.ref.png b/test/reference/extend-pad-border.pdf.ref.png deleted file mode 100644 index f4fc524..0000000 Binary files a/test/reference/extend-pad-border.pdf.ref.png and /dev/null differ diff --git a/test/reference/extend-pad-border.ps.ref.png b/test/reference/extend-pad-border.ps.ref.png deleted file mode 100644 index b1f4c40..0000000 Binary files a/test/reference/extend-pad-border.ps.ref.png and /dev/null differ diff --git a/test/reference/extend-pad-border.quartz.ref.png b/test/reference/extend-pad-border.quartz.ref.png deleted file mode 100644 index 4ad67a1..0000000 Binary files a/test/reference/extend-pad-border.quartz.ref.png and /dev/null differ diff --git a/test/reference/extend-pad-border.ref.png b/test/reference/extend-pad-border.ref.png deleted file mode 100644 index f4fc524..0000000 Binary files a/test/reference/extend-pad-border.ref.png and /dev/null differ diff --git a/test/reference/extend-pad-border.svg.xfail.png b/test/reference/extend-pad-border.svg.xfail.png deleted file mode 100644 index 0fde36d..0000000 Binary files a/test/reference/extend-pad-border.svg.xfail.png and /dev/null differ diff --git a/test/reference/extend-pad-similar.base.argb32.ref.png b/test/reference/extend-pad-similar.base.argb32.ref.png deleted file mode 100644 index 9345221..0000000 Binary files a/test/reference/extend-pad-similar.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/extend-pad-similar.base.rgb24.ref.png b/test/reference/extend-pad-similar.base.rgb24.ref.png deleted file mode 100644 index 9345221..0000000 Binary files a/test/reference/extend-pad-similar.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/extend-pad-similar.quartz.xfail.png b/test/reference/extend-pad-similar.quartz.xfail.png deleted file mode 100644 index a2cf353..0000000 Binary files a/test/reference/extend-pad-similar.quartz.xfail.png and /dev/null differ diff --git a/test/reference/extend-pad-similar.ref.png b/test/reference/extend-pad-similar.ref.png deleted file mode 100644 index 82da7b6..0000000 Binary files a/test/reference/extend-pad-similar.ref.png and /dev/null differ diff --git a/test/reference/extend-pad-similar.svg.xfail.png b/test/reference/extend-pad-similar.svg.xfail.png deleted file mode 100644 index a2cf353..0000000 Binary files a/test/reference/extend-pad-similar.svg.xfail.png and /dev/null differ diff --git a/test/reference/extend-pad.base.argb32.ref.png b/test/reference/extend-pad.base.argb32.ref.png deleted file mode 100644 index 9345221..0000000 Binary files a/test/reference/extend-pad.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/extend-pad.base.rgb24.ref.png b/test/reference/extend-pad.base.rgb24.ref.png deleted file mode 100644 index 9345221..0000000 Binary files a/test/reference/extend-pad.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/extend-pad.ps.ref.png b/test/reference/extend-pad.ps.ref.png deleted file mode 100644 index a249ee2..0000000 Binary files a/test/reference/extend-pad.ps.ref.png and /dev/null differ diff --git a/test/reference/extend-pad.quartz.xfail.png b/test/reference/extend-pad.quartz.xfail.png deleted file mode 100644 index a2cf353..0000000 Binary files a/test/reference/extend-pad.quartz.xfail.png and /dev/null differ diff --git a/test/reference/extend-pad.ref.png b/test/reference/extend-pad.ref.png deleted file mode 100644 index 82da7b6..0000000 Binary files a/test/reference/extend-pad.ref.png and /dev/null differ diff --git a/test/reference/extend-pad.svg.xfail.png b/test/reference/extend-pad.svg.xfail.png deleted file mode 100644 index a2cf353..0000000 Binary files a/test/reference/extend-pad.svg.xfail.png and /dev/null differ diff --git a/test/reference/extend-reflect-similar.base.argb32.ref.png b/test/reference/extend-reflect-similar.base.argb32.ref.png deleted file mode 100644 index 5fc3448..0000000 Binary files a/test/reference/extend-reflect-similar.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/extend-reflect-similar.base.rgb24.ref.png b/test/reference/extend-reflect-similar.base.rgb24.ref.png deleted file mode 100644 index 5fc3448..0000000 Binary files a/test/reference/extend-reflect-similar.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/extend-reflect-similar.image16.ref.png b/test/reference/extend-reflect-similar.image16.ref.png deleted file mode 100644 index 27c6594..0000000 Binary files a/test/reference/extend-reflect-similar.image16.ref.png and /dev/null differ diff --git a/test/reference/extend-reflect-similar.ps2.ref.png b/test/reference/extend-reflect-similar.ps2.ref.png deleted file mode 100644 index acaee1b..0000000 Binary files a/test/reference/extend-reflect-similar.ps2.ref.png and /dev/null differ diff --git a/test/reference/extend-reflect-similar.ps3.ref.png b/test/reference/extend-reflect-similar.ps3.ref.png deleted file mode 100644 index acaee1b..0000000 Binary files a/test/reference/extend-reflect-similar.ps3.ref.png and /dev/null differ diff --git a/test/reference/extend-reflect-similar.ref.png b/test/reference/extend-reflect-similar.ref.png deleted file mode 100644 index 93a8b00..0000000 Binary files a/test/reference/extend-reflect-similar.ref.png and /dev/null differ diff --git a/test/reference/extend-reflect.base.argb32.ref.png b/test/reference/extend-reflect.base.argb32.ref.png deleted file mode 100644 index 5fc3448..0000000 Binary files a/test/reference/extend-reflect.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/extend-reflect.base.rgb24.ref.png b/test/reference/extend-reflect.base.rgb24.ref.png deleted file mode 100644 index 5fc3448..0000000 Binary files a/test/reference/extend-reflect.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/extend-reflect.image16.ref.png b/test/reference/extend-reflect.image16.ref.png deleted file mode 100644 index 27c6594..0000000 Binary files a/test/reference/extend-reflect.image16.ref.png and /dev/null differ diff --git a/test/reference/extend-reflect.ps2.ref.png b/test/reference/extend-reflect.ps2.ref.png deleted file mode 100644 index acaee1b..0000000 Binary files a/test/reference/extend-reflect.ps2.ref.png and /dev/null differ diff --git a/test/reference/extend-reflect.ps3.ref.png b/test/reference/extend-reflect.ps3.ref.png deleted file mode 100644 index acaee1b..0000000 Binary files a/test/reference/extend-reflect.ps3.ref.png and /dev/null differ diff --git a/test/reference/extend-reflect.ref.png b/test/reference/extend-reflect.ref.png deleted file mode 100644 index 93a8b00..0000000 Binary files a/test/reference/extend-reflect.ref.png and /dev/null differ diff --git a/test/reference/extend-repeat-similar.base.argb32.ref.png b/test/reference/extend-repeat-similar.base.argb32.ref.png deleted file mode 100644 index 81f0503..0000000 Binary files a/test/reference/extend-repeat-similar.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/extend-repeat-similar.base.rgb24.ref.png b/test/reference/extend-repeat-similar.base.rgb24.ref.png deleted file mode 100644 index 81f0503..0000000 Binary files a/test/reference/extend-repeat-similar.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/extend-repeat-similar.image16.ref.png b/test/reference/extend-repeat-similar.image16.ref.png deleted file mode 100644 index cdc742a..0000000 Binary files a/test/reference/extend-repeat-similar.image16.ref.png and /dev/null differ diff --git a/test/reference/extend-repeat-similar.ps2.ref.png b/test/reference/extend-repeat-similar.ps2.ref.png deleted file mode 100644 index 8218211..0000000 Binary files a/test/reference/extend-repeat-similar.ps2.ref.png and /dev/null differ diff --git a/test/reference/extend-repeat-similar.ps3.ref.png b/test/reference/extend-repeat-similar.ps3.ref.png deleted file mode 100644 index 8218211..0000000 Binary files a/test/reference/extend-repeat-similar.ps3.ref.png and /dev/null differ diff --git a/test/reference/extend-repeat-similar.ref.png b/test/reference/extend-repeat-similar.ref.png deleted file mode 100644 index ee2527f..0000000 Binary files a/test/reference/extend-repeat-similar.ref.png and /dev/null differ diff --git a/test/reference/extend-repeat.base.argb32.ref.png b/test/reference/extend-repeat.base.argb32.ref.png deleted file mode 100644 index 81f0503..0000000 Binary files a/test/reference/extend-repeat.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/extend-repeat.base.rgb24.ref.png b/test/reference/extend-repeat.base.rgb24.ref.png deleted file mode 100644 index 81f0503..0000000 Binary files a/test/reference/extend-repeat.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/extend-repeat.image16.ref.png b/test/reference/extend-repeat.image16.ref.png deleted file mode 100644 index cdc742a..0000000 Binary files a/test/reference/extend-repeat.image16.ref.png and /dev/null differ diff --git a/test/reference/extend-repeat.ps2.ref.png b/test/reference/extend-repeat.ps2.ref.png deleted file mode 100644 index 8218211..0000000 Binary files a/test/reference/extend-repeat.ps2.ref.png and /dev/null differ diff --git a/test/reference/extend-repeat.ps3.ref.png b/test/reference/extend-repeat.ps3.ref.png deleted file mode 100644 index 8218211..0000000 Binary files a/test/reference/extend-repeat.ps3.ref.png and /dev/null differ diff --git a/test/reference/extend-repeat.ref.png b/test/reference/extend-repeat.ref.png deleted file mode 100644 index ee2527f..0000000 Binary files a/test/reference/extend-repeat.ref.png and /dev/null differ diff --git a/test/reference/extended-blend-alpha-mask.argb32.ref.png b/test/reference/extended-blend-alpha-mask.argb32.ref.png deleted file mode 100644 index a1dd2a9..0000000 Binary files a/test/reference/extended-blend-alpha-mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/extended-blend-alpha-mask.base.argb32.ref.png b/test/reference/extended-blend-alpha-mask.base.argb32.ref.png deleted file mode 100644 index a1dd2a9..0000000 Binary files a/test/reference/extended-blend-alpha-mask.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/extended-blend-alpha-mask.base.rgb24.ref.png b/test/reference/extended-blend-alpha-mask.base.rgb24.ref.png deleted file mode 100644 index b5f12f1..0000000 Binary files a/test/reference/extended-blend-alpha-mask.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/extended-blend-alpha-mask.rgb24.ref.png b/test/reference/extended-blend-alpha-mask.rgb24.ref.png deleted file mode 100644 index b5f12f1..0000000 Binary files a/test/reference/extended-blend-alpha-mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/extended-blend-alpha.argb32.ref.png b/test/reference/extended-blend-alpha.argb32.ref.png deleted file mode 100644 index 4d56a21..0000000 Binary files a/test/reference/extended-blend-alpha.argb32.ref.png and /dev/null differ diff --git a/test/reference/extended-blend-alpha.base.argb32.ref.png b/test/reference/extended-blend-alpha.base.argb32.ref.png deleted file mode 100644 index 4d56a21..0000000 Binary files a/test/reference/extended-blend-alpha.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/extended-blend-alpha.base.rgb24.ref.png b/test/reference/extended-blend-alpha.base.rgb24.ref.png deleted file mode 100644 index 86d0e2d..0000000 Binary files a/test/reference/extended-blend-alpha.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/extended-blend-alpha.image16.ref.png b/test/reference/extended-blend-alpha.image16.ref.png deleted file mode 100644 index df96469..0000000 Binary files a/test/reference/extended-blend-alpha.image16.ref.png and /dev/null differ diff --git a/test/reference/extended-blend-alpha.quartz.argb32.ref.png b/test/reference/extended-blend-alpha.quartz.argb32.ref.png deleted file mode 100644 index e5701a6..0000000 Binary files a/test/reference/extended-blend-alpha.quartz.argb32.ref.png and /dev/null differ diff --git a/test/reference/extended-blend-alpha.quartz.rgb24.ref.png b/test/reference/extended-blend-alpha.quartz.rgb24.ref.png deleted file mode 100644 index 477d346..0000000 Binary files a/test/reference/extended-blend-alpha.quartz.rgb24.ref.png and /dev/null differ diff --git a/test/reference/extended-blend-alpha.rgb24.ref.png b/test/reference/extended-blend-alpha.rgb24.ref.png deleted file mode 100644 index 86d0e2d..0000000 Binary files a/test/reference/extended-blend-alpha.rgb24.ref.png and /dev/null differ diff --git a/test/reference/extended-blend-alpha.svg12.argb32.xfail.png b/test/reference/extended-blend-alpha.svg12.argb32.xfail.png deleted file mode 100644 index cc34416..0000000 Binary files a/test/reference/extended-blend-alpha.svg12.argb32.xfail.png and /dev/null differ diff --git a/test/reference/extended-blend-alpha.svg12.rgb24.xfail.png b/test/reference/extended-blend-alpha.svg12.rgb24.xfail.png deleted file mode 100644 index f80569e..0000000 Binary files a/test/reference/extended-blend-alpha.svg12.rgb24.xfail.png and /dev/null differ diff --git a/test/reference/extended-blend-mask.argb32.ref.png b/test/reference/extended-blend-mask.argb32.ref.png deleted file mode 100644 index 79a6e53..0000000 Binary files a/test/reference/extended-blend-mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/extended-blend-mask.base.argb32.ref.png b/test/reference/extended-blend-mask.base.argb32.ref.png deleted file mode 100644 index 5fa78e4..0000000 Binary files a/test/reference/extended-blend-mask.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/extended-blend-mask.base.rgb24.ref.png b/test/reference/extended-blend-mask.base.rgb24.ref.png deleted file mode 100644 index 1c85474..0000000 Binary files a/test/reference/extended-blend-mask.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/extended-blend-mask.rgb24.ref.png b/test/reference/extended-blend-mask.rgb24.ref.png deleted file mode 100644 index 400df6a..0000000 Binary files a/test/reference/extended-blend-mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/extended-blend-solid-alpha.argb32.ref.png b/test/reference/extended-blend-solid-alpha.argb32.ref.png deleted file mode 100644 index 4d56a21..0000000 Binary files a/test/reference/extended-blend-solid-alpha.argb32.ref.png and /dev/null differ diff --git a/test/reference/extended-blend-solid-alpha.base.argb32.ref.png b/test/reference/extended-blend-solid-alpha.base.argb32.ref.png deleted file mode 100644 index 4d56a21..0000000 Binary files a/test/reference/extended-blend-solid-alpha.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/extended-blend-solid-alpha.base.rgb24.ref.png b/test/reference/extended-blend-solid-alpha.base.rgb24.ref.png deleted file mode 100644 index 86d0e2d..0000000 Binary files a/test/reference/extended-blend-solid-alpha.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/extended-blend-solid-alpha.image16.ref.png b/test/reference/extended-blend-solid-alpha.image16.ref.png deleted file mode 100644 index df96469..0000000 Binary files a/test/reference/extended-blend-solid-alpha.image16.ref.png and /dev/null differ diff --git a/test/reference/extended-blend-solid-alpha.rgb24.ref.png b/test/reference/extended-blend-solid-alpha.rgb24.ref.png deleted file mode 100644 index 86d0e2d..0000000 Binary files a/test/reference/extended-blend-solid-alpha.rgb24.ref.png and /dev/null differ diff --git a/test/reference/extended-blend-solid.argb32.ref.png b/test/reference/extended-blend-solid.argb32.ref.png deleted file mode 100644 index 573c16a..0000000 Binary files a/test/reference/extended-blend-solid.argb32.ref.png and /dev/null differ diff --git a/test/reference/extended-blend-solid.base.argb32.ref.png b/test/reference/extended-blend-solid.base.argb32.ref.png deleted file mode 100644 index 902ef88..0000000 Binary files a/test/reference/extended-blend-solid.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/extended-blend-solid.base.rgb24.ref.png b/test/reference/extended-blend-solid.base.rgb24.ref.png deleted file mode 100644 index 4580e0d..0000000 Binary files a/test/reference/extended-blend-solid.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/extended-blend-solid.image16.ref.png b/test/reference/extended-blend-solid.image16.ref.png deleted file mode 100644 index 2052ea7..0000000 Binary files a/test/reference/extended-blend-solid.image16.ref.png and /dev/null differ diff --git a/test/reference/extended-blend-solid.rgb24.ref.png b/test/reference/extended-blend-solid.rgb24.ref.png deleted file mode 100644 index cdcb6ad..0000000 Binary files a/test/reference/extended-blend-solid.rgb24.ref.png and /dev/null differ diff --git a/test/reference/extended-blend.argb32.ref.png b/test/reference/extended-blend.argb32.ref.png deleted file mode 100644 index 573c16a..0000000 Binary files a/test/reference/extended-blend.argb32.ref.png and /dev/null differ diff --git a/test/reference/extended-blend.base.argb32.ref.png b/test/reference/extended-blend.base.argb32.ref.png deleted file mode 100644 index 902ef88..0000000 Binary files a/test/reference/extended-blend.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/extended-blend.base.rgb24.ref.png b/test/reference/extended-blend.base.rgb24.ref.png deleted file mode 100644 index 4580e0d..0000000 Binary files a/test/reference/extended-blend.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/extended-blend.image16.ref.png b/test/reference/extended-blend.image16.ref.png deleted file mode 100644 index 2052ea7..0000000 Binary files a/test/reference/extended-blend.image16.ref.png and /dev/null differ diff --git a/test/reference/extended-blend.quartz.argb32.ref.png b/test/reference/extended-blend.quartz.argb32.ref.png deleted file mode 100644 index 173c6e2..0000000 Binary files a/test/reference/extended-blend.quartz.argb32.ref.png and /dev/null differ diff --git a/test/reference/extended-blend.quartz.rgb24.ref.png b/test/reference/extended-blend.quartz.rgb24.ref.png deleted file mode 100644 index 56a1214..0000000 Binary files a/test/reference/extended-blend.quartz.rgb24.ref.png and /dev/null differ diff --git a/test/reference/extended-blend.rgb24.ref.png b/test/reference/extended-blend.rgb24.ref.png deleted file mode 100644 index cdcb6ad..0000000 Binary files a/test/reference/extended-blend.rgb24.ref.png and /dev/null differ diff --git a/test/reference/extended-blend.svg12.argb32.xfail.png b/test/reference/extended-blend.svg12.argb32.xfail.png deleted file mode 100644 index 93297a5..0000000 Binary files a/test/reference/extended-blend.svg12.argb32.xfail.png and /dev/null differ diff --git a/test/reference/extended-blend.svg12.rgb24.xfail.png b/test/reference/extended-blend.svg12.rgb24.xfail.png deleted file mode 100644 index 8db02c5..0000000 Binary files a/test/reference/extended-blend.svg12.rgb24.xfail.png and /dev/null differ diff --git a/test/reference/fallback-resolution.ppi144x144.ps.ref.png b/test/reference/fallback-resolution.ppi144x144.ps.ref.png deleted file mode 100644 index 0922f03..0000000 Binary files a/test/reference/fallback-resolution.ppi144x144.ps.ref.png and /dev/null differ diff --git a/test/reference/fallback-resolution.ppi144x144.ref.png b/test/reference/fallback-resolution.ppi144x144.ref.png deleted file mode 100644 index fd0666a..0000000 Binary files a/test/reference/fallback-resolution.ppi144x144.ref.png and /dev/null differ diff --git a/test/reference/fallback-resolution.ppi144x72.ps.ref.png b/test/reference/fallback-resolution.ppi144x72.ps.ref.png deleted file mode 100644 index 2f8d82d..0000000 Binary files a/test/reference/fallback-resolution.ppi144x72.ps.ref.png and /dev/null differ diff --git a/test/reference/fallback-resolution.ppi144x72.ref.png b/test/reference/fallback-resolution.ppi144x72.ref.png deleted file mode 100644 index ec6685c..0000000 Binary files a/test/reference/fallback-resolution.ppi144x72.ref.png and /dev/null differ diff --git a/test/reference/fallback-resolution.ppi288x288.pdf.ref.png b/test/reference/fallback-resolution.ppi288x288.pdf.ref.png deleted file mode 100644 index 181e110..0000000 Binary files a/test/reference/fallback-resolution.ppi288x288.pdf.ref.png and /dev/null differ diff --git a/test/reference/fallback-resolution.ppi288x288.ps.ref.png b/test/reference/fallback-resolution.ppi288x288.ps.ref.png deleted file mode 100644 index 99bccef..0000000 Binary files a/test/reference/fallback-resolution.ppi288x288.ps.ref.png and /dev/null differ diff --git a/test/reference/fallback-resolution.ppi288x288.svg.ref.png b/test/reference/fallback-resolution.ppi288x288.svg.ref.png deleted file mode 100644 index e71ff81..0000000 Binary files a/test/reference/fallback-resolution.ppi288x288.svg.ref.png and /dev/null differ diff --git a/test/reference/fallback-resolution.ppi288x72.ps.ref.png b/test/reference/fallback-resolution.ppi288x72.ps.ref.png deleted file mode 100644 index 89b9c51..0000000 Binary files a/test/reference/fallback-resolution.ppi288x72.ps.ref.png and /dev/null differ diff --git a/test/reference/fallback-resolution.ppi288x72.ref.png b/test/reference/fallback-resolution.ppi288x72.ref.png deleted file mode 100644 index 969c04f..0000000 Binary files a/test/reference/fallback-resolution.ppi288x72.ref.png and /dev/null differ diff --git a/test/reference/fallback-resolution.ppi576x576.pdf.ref.png b/test/reference/fallback-resolution.ppi576x576.pdf.ref.png deleted file mode 100644 index 5b37619..0000000 Binary files a/test/reference/fallback-resolution.ppi576x576.pdf.ref.png and /dev/null differ diff --git a/test/reference/fallback-resolution.ppi576x576.ps.ref.png b/test/reference/fallback-resolution.ppi576x576.ps.ref.png deleted file mode 100644 index 9dc4735..0000000 Binary files a/test/reference/fallback-resolution.ppi576x576.ps.ref.png and /dev/null differ diff --git a/test/reference/fallback-resolution.ppi576x576.svg.ref.png b/test/reference/fallback-resolution.ppi576x576.svg.ref.png deleted file mode 100644 index b5a97e3..0000000 Binary files a/test/reference/fallback-resolution.ppi576x576.svg.ref.png and /dev/null differ diff --git a/test/reference/fallback-resolution.ppi576x72.ps.ref.png b/test/reference/fallback-resolution.ppi576x72.ps.ref.png deleted file mode 100644 index 9ac6be4..0000000 Binary files a/test/reference/fallback-resolution.ppi576x72.ps.ref.png and /dev/null differ diff --git a/test/reference/fallback-resolution.ppi576x72.ref.png b/test/reference/fallback-resolution.ppi576x72.ref.png deleted file mode 100644 index bbab065..0000000 Binary files a/test/reference/fallback-resolution.ppi576x72.ref.png and /dev/null differ diff --git a/test/reference/fallback-resolution.ppi72x144.ps.ref.png b/test/reference/fallback-resolution.ppi72x144.ps.ref.png deleted file mode 100644 index 50b5a99..0000000 Binary files a/test/reference/fallback-resolution.ppi72x144.ps.ref.png and /dev/null differ diff --git a/test/reference/fallback-resolution.ppi72x144.ref.png b/test/reference/fallback-resolution.ppi72x144.ref.png deleted file mode 100644 index 3f55629..0000000 Binary files a/test/reference/fallback-resolution.ppi72x144.ref.png and /dev/null differ diff --git a/test/reference/fallback-resolution.ppi72x288.ps.ref.png b/test/reference/fallback-resolution.ppi72x288.ps.ref.png deleted file mode 100644 index b4ff82d..0000000 Binary files a/test/reference/fallback-resolution.ppi72x288.ps.ref.png and /dev/null differ diff --git a/test/reference/fallback-resolution.ppi72x288.ref.png b/test/reference/fallback-resolution.ppi72x288.ref.png deleted file mode 100644 index 9d50b64..0000000 Binary files a/test/reference/fallback-resolution.ppi72x288.ref.png and /dev/null differ diff --git a/test/reference/fallback-resolution.ppi72x576.ps.ref.png b/test/reference/fallback-resolution.ppi72x576.ps.ref.png deleted file mode 100644 index 6a3ddcb..0000000 Binary files a/test/reference/fallback-resolution.ppi72x576.ps.ref.png and /dev/null differ diff --git a/test/reference/fallback-resolution.ppi72x576.ref.png b/test/reference/fallback-resolution.ppi72x576.ref.png deleted file mode 100644 index 7b4d62e..0000000 Binary files a/test/reference/fallback-resolution.ppi72x576.ref.png and /dev/null differ diff --git a/test/reference/fallback-resolution.ppi72x72.ref.png b/test/reference/fallback-resolution.ppi72x72.ref.png deleted file mode 100644 index 690c0af..0000000 Binary files a/test/reference/fallback-resolution.ppi72x72.ref.png and /dev/null differ diff --git a/test/reference/fallback.argb32.ref.png b/test/reference/fallback.argb32.ref.png deleted file mode 100644 index b96e90a..0000000 Binary files a/test/reference/fallback.argb32.ref.png and /dev/null differ diff --git a/test/reference/fallback.base.argb32.ref.png b/test/reference/fallback.base.argb32.ref.png deleted file mode 100644 index c0c5f46..0000000 Binary files a/test/reference/fallback.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/fallback.base.rgb24.ref.png b/test/reference/fallback.base.rgb24.ref.png deleted file mode 100644 index 18b6a7c..0000000 Binary files a/test/reference/fallback.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/fallback.image16.rgb24.ref.png b/test/reference/fallback.image16.rgb24.ref.png deleted file mode 100644 index d90ab0e..0000000 Binary files a/test/reference/fallback.image16.rgb24.ref.png and /dev/null differ diff --git a/test/reference/fallback.mask.argb32.ref.png b/test/reference/fallback.mask.argb32.ref.png deleted file mode 100644 index b7ce573..0000000 Binary files a/test/reference/fallback.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/fallback.mask.rgb24.ref.png b/test/reference/fallback.mask.rgb24.ref.png deleted file mode 100644 index 16d3c14..0000000 Binary files a/test/reference/fallback.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/fallback.rgb24.ref.png b/test/reference/fallback.rgb24.ref.png deleted file mode 100644 index 3f92132..0000000 Binary files a/test/reference/fallback.rgb24.ref.png and /dev/null differ diff --git a/test/reference/fallback.traps.argb32.ref.png b/test/reference/fallback.traps.argb32.ref.png deleted file mode 100644 index c0c5f46..0000000 Binary files a/test/reference/fallback.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/fallback.traps.rgb24.ref.png b/test/reference/fallback.traps.rgb24.ref.png deleted file mode 100644 index 18b6a7c..0000000 Binary files a/test/reference/fallback.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/fill-alpha-pattern.base.argb32.ref.png b/test/reference/fill-alpha-pattern.base.argb32.ref.png deleted file mode 100644 index 4dafb83..0000000 Binary files a/test/reference/fill-alpha-pattern.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/fill-alpha-pattern.base.rgb24.ref.png b/test/reference/fill-alpha-pattern.base.rgb24.ref.png deleted file mode 100644 index 4dafb83..0000000 Binary files a/test/reference/fill-alpha-pattern.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/fill-alpha-pattern.image16.ref.png b/test/reference/fill-alpha-pattern.image16.ref.png deleted file mode 100644 index f323c10..0000000 Binary files a/test/reference/fill-alpha-pattern.image16.ref.png and /dev/null differ diff --git a/test/reference/fill-alpha-pattern.pdf.ref.png b/test/reference/fill-alpha-pattern.pdf.ref.png deleted file mode 100644 index ed7f404..0000000 Binary files a/test/reference/fill-alpha-pattern.pdf.ref.png and /dev/null differ diff --git a/test/reference/fill-alpha-pattern.ps3.argb32.ref.png b/test/reference/fill-alpha-pattern.ps3.argb32.ref.png deleted file mode 100644 index 28689a3..0000000 Binary files a/test/reference/fill-alpha-pattern.ps3.argb32.ref.png and /dev/null differ diff --git a/test/reference/fill-alpha-pattern.quartz.ref.png b/test/reference/fill-alpha-pattern.quartz.ref.png deleted file mode 100644 index b612e7a..0000000 Binary files a/test/reference/fill-alpha-pattern.quartz.ref.png and /dev/null differ diff --git a/test/reference/fill-alpha-pattern.ref.png b/test/reference/fill-alpha-pattern.ref.png deleted file mode 100644 index e32eb90..0000000 Binary files a/test/reference/fill-alpha-pattern.ref.png and /dev/null differ diff --git a/test/reference/fill-alpha-pattern.traps.argb32.ref.png b/test/reference/fill-alpha-pattern.traps.argb32.ref.png deleted file mode 100644 index 4dafb83..0000000 Binary files a/test/reference/fill-alpha-pattern.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/fill-alpha-pattern.traps.rgb24.ref.png b/test/reference/fill-alpha-pattern.traps.rgb24.ref.png deleted file mode 100644 index 4dafb83..0000000 Binary files a/test/reference/fill-alpha-pattern.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/fill-alpha.base.argb32.ref.png b/test/reference/fill-alpha.base.argb32.ref.png deleted file mode 100644 index 85df919..0000000 Binary files a/test/reference/fill-alpha.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/fill-alpha.base.rgb24.ref.png b/test/reference/fill-alpha.base.rgb24.ref.png deleted file mode 100644 index 85df919..0000000 Binary files a/test/reference/fill-alpha.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/fill-alpha.image16.ref.png b/test/reference/fill-alpha.image16.ref.png deleted file mode 100644 index 08252b6..0000000 Binary files a/test/reference/fill-alpha.image16.ref.png and /dev/null differ diff --git a/test/reference/fill-alpha.ps.argb32.ref.png b/test/reference/fill-alpha.ps.argb32.ref.png deleted file mode 100644 index 8d70d53..0000000 Binary files a/test/reference/fill-alpha.ps.argb32.ref.png and /dev/null differ diff --git a/test/reference/fill-alpha.quartz.ref.png b/test/reference/fill-alpha.quartz.ref.png deleted file mode 100644 index 81cee81..0000000 Binary files a/test/reference/fill-alpha.quartz.ref.png and /dev/null differ diff --git a/test/reference/fill-alpha.ref.png b/test/reference/fill-alpha.ref.png deleted file mode 100644 index 25c1ac6..0000000 Binary files a/test/reference/fill-alpha.ref.png and /dev/null differ diff --git a/test/reference/fill-alpha.traps.argb32.ref.png b/test/reference/fill-alpha.traps.argb32.ref.png deleted file mode 100644 index 85df919..0000000 Binary files a/test/reference/fill-alpha.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/fill-alpha.traps.rgb24.ref.png b/test/reference/fill-alpha.traps.rgb24.ref.png deleted file mode 100644 index 85df919..0000000 Binary files a/test/reference/fill-alpha.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/fill-and-stroke-alpha-add.base.argb32.ref.png b/test/reference/fill-and-stroke-alpha-add.base.argb32.ref.png deleted file mode 100644 index 71d2b22..0000000 Binary files a/test/reference/fill-and-stroke-alpha-add.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/fill-and-stroke-alpha-add.base.rgb24.ref.png b/test/reference/fill-and-stroke-alpha-add.base.rgb24.ref.png deleted file mode 100644 index 71d2b22..0000000 Binary files a/test/reference/fill-and-stroke-alpha-add.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/fill-and-stroke-alpha-add.image16.ref.png b/test/reference/fill-and-stroke-alpha-add.image16.ref.png deleted file mode 100644 index 3162c81..0000000 Binary files a/test/reference/fill-and-stroke-alpha-add.image16.ref.png and /dev/null differ diff --git a/test/reference/fill-and-stroke-alpha-add.quartz.ref.png b/test/reference/fill-and-stroke-alpha-add.quartz.ref.png deleted file mode 100644 index 1d89752..0000000 Binary files a/test/reference/fill-and-stroke-alpha-add.quartz.ref.png and /dev/null differ diff --git a/test/reference/fill-and-stroke-alpha-add.ref.png b/test/reference/fill-and-stroke-alpha-add.ref.png deleted file mode 100644 index f10ffc2..0000000 Binary files a/test/reference/fill-and-stroke-alpha-add.ref.png and /dev/null differ diff --git a/test/reference/fill-and-stroke-alpha-add.svg12.xfail.png b/test/reference/fill-and-stroke-alpha-add.svg12.xfail.png deleted file mode 100644 index c1d7d6f..0000000 Binary files a/test/reference/fill-and-stroke-alpha-add.svg12.xfail.png and /dev/null differ diff --git a/test/reference/fill-and-stroke-alpha-add.traps.argb32.ref.png b/test/reference/fill-and-stroke-alpha-add.traps.argb32.ref.png deleted file mode 100644 index 71d2b22..0000000 Binary files a/test/reference/fill-and-stroke-alpha-add.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/fill-and-stroke-alpha-add.traps.rgb24.ref.png b/test/reference/fill-and-stroke-alpha-add.traps.rgb24.ref.png deleted file mode 100644 index 71d2b22..0000000 Binary files a/test/reference/fill-and-stroke-alpha-add.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/fill-and-stroke-alpha.base.argb32.ref.png b/test/reference/fill-and-stroke-alpha.base.argb32.ref.png deleted file mode 100644 index c85b933..0000000 Binary files a/test/reference/fill-and-stroke-alpha.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/fill-and-stroke-alpha.base.rgb24.ref.png b/test/reference/fill-and-stroke-alpha.base.rgb24.ref.png deleted file mode 100644 index c85b933..0000000 Binary files a/test/reference/fill-and-stroke-alpha.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/fill-and-stroke-alpha.image16.ref.png b/test/reference/fill-and-stroke-alpha.image16.ref.png deleted file mode 100644 index cde5bd9..0000000 Binary files a/test/reference/fill-and-stroke-alpha.image16.ref.png and /dev/null differ diff --git a/test/reference/fill-and-stroke-alpha.ref.png b/test/reference/fill-and-stroke-alpha.ref.png deleted file mode 100644 index 8e81157..0000000 Binary files a/test/reference/fill-and-stroke-alpha.ref.png and /dev/null differ diff --git a/test/reference/fill-and-stroke-alpha.traps.argb32.ref.png b/test/reference/fill-and-stroke-alpha.traps.argb32.ref.png deleted file mode 100644 index c85b933..0000000 Binary files a/test/reference/fill-and-stroke-alpha.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/fill-and-stroke-alpha.traps.rgb24.ref.png b/test/reference/fill-and-stroke-alpha.traps.rgb24.ref.png deleted file mode 100644 index c85b933..0000000 Binary files a/test/reference/fill-and-stroke-alpha.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/fill-and-stroke.base.argb32.ref.png b/test/reference/fill-and-stroke.base.argb32.ref.png deleted file mode 100644 index 3f32060..0000000 Binary files a/test/reference/fill-and-stroke.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/fill-and-stroke.base.rgb24.ref.png b/test/reference/fill-and-stroke.base.rgb24.ref.png deleted file mode 100644 index 2797921..0000000 Binary files a/test/reference/fill-and-stroke.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/fill-and-stroke.image16.ref.png b/test/reference/fill-and-stroke.image16.ref.png deleted file mode 100644 index f562509..0000000 Binary files a/test/reference/fill-and-stroke.image16.ref.png and /dev/null differ diff --git a/test/reference/fill-and-stroke.ps.argb32.ref.png b/test/reference/fill-and-stroke.ps.argb32.ref.png deleted file mode 100644 index 8cf8d9c..0000000 Binary files a/test/reference/fill-and-stroke.ps.argb32.ref.png and /dev/null differ diff --git a/test/reference/fill-and-stroke.ps.rgb24.ref.png b/test/reference/fill-and-stroke.ps.rgb24.ref.png deleted file mode 100644 index fceda26..0000000 Binary files a/test/reference/fill-and-stroke.ps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/fill-and-stroke.quartz.argb32.ref.png b/test/reference/fill-and-stroke.quartz.argb32.ref.png deleted file mode 100644 index 9440719..0000000 Binary files a/test/reference/fill-and-stroke.quartz.argb32.ref.png and /dev/null differ diff --git a/test/reference/fill-and-stroke.quartz.rgb24.ref.png b/test/reference/fill-and-stroke.quartz.rgb24.ref.png deleted file mode 100644 index 5ba2197..0000000 Binary files a/test/reference/fill-and-stroke.quartz.rgb24.ref.png and /dev/null differ diff --git a/test/reference/fill-and-stroke.ref.png b/test/reference/fill-and-stroke.ref.png deleted file mode 100644 index c71a4e5..0000000 Binary files a/test/reference/fill-and-stroke.ref.png and /dev/null differ diff --git a/test/reference/fill-and-stroke.traps.argb32.ref.png b/test/reference/fill-and-stroke.traps.argb32.ref.png deleted file mode 100644 index 3f32060..0000000 Binary files a/test/reference/fill-and-stroke.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/fill-and-stroke.traps.rgb24.ref.png b/test/reference/fill-and-stroke.traps.rgb24.ref.png deleted file mode 100644 index 2797921..0000000 Binary files a/test/reference/fill-and-stroke.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/fill-degenerate-sort-order.argb32.ref.png b/test/reference/fill-degenerate-sort-order.argb32.ref.png deleted file mode 100644 index bed9b5c..0000000 Binary files a/test/reference/fill-degenerate-sort-order.argb32.ref.png and /dev/null differ diff --git a/test/reference/fill-degenerate-sort-order.base.argb32.ref.png b/test/reference/fill-degenerate-sort-order.base.argb32.ref.png deleted file mode 100644 index 860ee1b..0000000 Binary files a/test/reference/fill-degenerate-sort-order.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/fill-degenerate-sort-order.base.rgb24.ref.png b/test/reference/fill-degenerate-sort-order.base.rgb24.ref.png deleted file mode 100644 index 18b08fc..0000000 Binary files a/test/reference/fill-degenerate-sort-order.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/fill-degenerate-sort-order.image16.ref.png b/test/reference/fill-degenerate-sort-order.image16.ref.png deleted file mode 100644 index 6dc2078..0000000 Binary files a/test/reference/fill-degenerate-sort-order.image16.ref.png and /dev/null differ diff --git a/test/reference/fill-degenerate-sort-order.ps.argb32.xfail.png b/test/reference/fill-degenerate-sort-order.ps.argb32.xfail.png deleted file mode 100644 index 79ea630..0000000 Binary files a/test/reference/fill-degenerate-sort-order.ps.argb32.xfail.png and /dev/null differ diff --git a/test/reference/fill-degenerate-sort-order.ps.rgb24.xfail.png b/test/reference/fill-degenerate-sort-order.ps.rgb24.xfail.png deleted file mode 100644 index b4c45f9..0000000 Binary files a/test/reference/fill-degenerate-sort-order.ps.rgb24.xfail.png and /dev/null differ diff --git a/test/reference/fill-degenerate-sort-order.quartz.argb32.ref.png b/test/reference/fill-degenerate-sort-order.quartz.argb32.ref.png deleted file mode 100644 index a8b9f15..0000000 Binary files a/test/reference/fill-degenerate-sort-order.quartz.argb32.ref.png and /dev/null differ diff --git a/test/reference/fill-degenerate-sort-order.quartz.rgb24.ref.png b/test/reference/fill-degenerate-sort-order.quartz.rgb24.ref.png deleted file mode 100644 index 703467c..0000000 Binary files a/test/reference/fill-degenerate-sort-order.quartz.rgb24.ref.png and /dev/null differ diff --git a/test/reference/fill-degenerate-sort-order.rgb24.ref.png b/test/reference/fill-degenerate-sort-order.rgb24.ref.png deleted file mode 100644 index 3f26e30..0000000 Binary files a/test/reference/fill-degenerate-sort-order.rgb24.ref.png and /dev/null differ diff --git a/test/reference/fill-degenerate-sort-order.traps.argb32.ref.png b/test/reference/fill-degenerate-sort-order.traps.argb32.ref.png deleted file mode 100644 index 860ee1b..0000000 Binary files a/test/reference/fill-degenerate-sort-order.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/fill-degenerate-sort-order.traps.rgb24.ref.png b/test/reference/fill-degenerate-sort-order.traps.rgb24.ref.png deleted file mode 100644 index 18b08fc..0000000 Binary files a/test/reference/fill-degenerate-sort-order.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/fill-disjoint.base.argb32.ref.png b/test/reference/fill-disjoint.base.argb32.ref.png deleted file mode 100644 index da9a3b1..0000000 Binary files a/test/reference/fill-disjoint.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/fill-disjoint.base.rgb24.ref.png b/test/reference/fill-disjoint.base.rgb24.ref.png deleted file mode 100644 index da9a3b1..0000000 Binary files a/test/reference/fill-disjoint.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/fill-disjoint.ref.png b/test/reference/fill-disjoint.ref.png deleted file mode 100644 index da9a3b1..0000000 Binary files a/test/reference/fill-disjoint.ref.png and /dev/null differ diff --git a/test/reference/fill-empty.base.argb32.ref.png b/test/reference/fill-empty.base.argb32.ref.png deleted file mode 100644 index 8c26f7e..0000000 Binary files a/test/reference/fill-empty.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/fill-empty.base.rgb24.ref.png b/test/reference/fill-empty.base.rgb24.ref.png deleted file mode 100644 index dc7a8a0..0000000 Binary files a/test/reference/fill-empty.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/fill-empty.ref.png b/test/reference/fill-empty.ref.png deleted file mode 100644 index 8c26f7e..0000000 Binary files a/test/reference/fill-empty.ref.png and /dev/null differ diff --git a/test/reference/fill-empty.svg12.rgb24.xfail.png b/test/reference/fill-empty.svg12.rgb24.xfail.png deleted file mode 100644 index 8c26f7e..0000000 Binary files a/test/reference/fill-empty.svg12.rgb24.xfail.png and /dev/null differ diff --git a/test/reference/fill-image.base.argb32.ref.png b/test/reference/fill-image.base.argb32.ref.png deleted file mode 100644 index 1e67073..0000000 Binary files a/test/reference/fill-image.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/fill-image.base.rgb24.ref.png b/test/reference/fill-image.base.rgb24.ref.png deleted file mode 100644 index 1e67073..0000000 Binary files a/test/reference/fill-image.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/fill-image.image16.ref.png b/test/reference/fill-image.image16.ref.png deleted file mode 100644 index 3a9b7c7..0000000 Binary files a/test/reference/fill-image.image16.ref.png and /dev/null differ diff --git a/test/reference/fill-image.ps.ref.png b/test/reference/fill-image.ps.ref.png deleted file mode 100644 index 9713701..0000000 Binary files a/test/reference/fill-image.ps.ref.png and /dev/null differ diff --git a/test/reference/fill-image.quartz.ref.png b/test/reference/fill-image.quartz.ref.png deleted file mode 100644 index bb205a7..0000000 Binary files a/test/reference/fill-image.quartz.ref.png and /dev/null differ diff --git a/test/reference/fill-image.ref.png b/test/reference/fill-image.ref.png deleted file mode 100644 index e521be4..0000000 Binary files a/test/reference/fill-image.ref.png and /dev/null differ diff --git a/test/reference/fill-image.traps.argb32.ref.png b/test/reference/fill-image.traps.argb32.ref.png deleted file mode 100644 index 1e67073..0000000 Binary files a/test/reference/fill-image.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/fill-image.traps.rgb24.ref.png b/test/reference/fill-image.traps.rgb24.ref.png deleted file mode 100644 index 1e67073..0000000 Binary files a/test/reference/fill-image.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/fill-missed-stop.base.argb32.ref.png b/test/reference/fill-missed-stop.base.argb32.ref.png deleted file mode 100644 index 223fb36..0000000 Binary files a/test/reference/fill-missed-stop.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/fill-missed-stop.base.rgb24.ref.png b/test/reference/fill-missed-stop.base.rgb24.ref.png deleted file mode 100644 index f56b4b2..0000000 Binary files a/test/reference/fill-missed-stop.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/fill-missed-stop.pdf.argb32.ref.png b/test/reference/fill-missed-stop.pdf.argb32.ref.png deleted file mode 100644 index 7d56e3e..0000000 Binary files a/test/reference/fill-missed-stop.pdf.argb32.ref.png and /dev/null differ diff --git a/test/reference/fill-missed-stop.ps2.argb32.ref.png b/test/reference/fill-missed-stop.ps2.argb32.ref.png deleted file mode 100644 index b94a708..0000000 Binary files a/test/reference/fill-missed-stop.ps2.argb32.ref.png and /dev/null differ diff --git a/test/reference/fill-missed-stop.ps2.rgb24.ref.png b/test/reference/fill-missed-stop.ps2.rgb24.ref.png deleted file mode 100644 index fd54c7b..0000000 Binary files a/test/reference/fill-missed-stop.ps2.rgb24.ref.png and /dev/null differ diff --git a/test/reference/fill-missed-stop.ps3.argb32.ref.png b/test/reference/fill-missed-stop.ps3.argb32.ref.png deleted file mode 100644 index b94a708..0000000 Binary files a/test/reference/fill-missed-stop.ps3.argb32.ref.png and /dev/null differ diff --git a/test/reference/fill-missed-stop.ps3.rgb24.ref.png b/test/reference/fill-missed-stop.ps3.rgb24.ref.png deleted file mode 100644 index fd54c7b..0000000 Binary files a/test/reference/fill-missed-stop.ps3.rgb24.ref.png and /dev/null differ diff --git a/test/reference/fill-missed-stop.ref.png b/test/reference/fill-missed-stop.ref.png deleted file mode 100644 index 477eec9..0000000 Binary files a/test/reference/fill-missed-stop.ref.png and /dev/null differ diff --git a/test/reference/fill-missed-stop.traps.argb32.ref.png b/test/reference/fill-missed-stop.traps.argb32.ref.png deleted file mode 100644 index 223fb36..0000000 Binary files a/test/reference/fill-missed-stop.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/fill-missed-stop.traps.rgb24.ref.png b/test/reference/fill-missed-stop.traps.rgb24.ref.png deleted file mode 100644 index f56b4b2..0000000 Binary files a/test/reference/fill-missed-stop.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/fill-rule.argb32.ref.png b/test/reference/fill-rule.argb32.ref.png deleted file mode 100644 index 9a0ea40..0000000 Binary files a/test/reference/fill-rule.argb32.ref.png and /dev/null differ diff --git a/test/reference/fill-rule.base.argb32.ref.png b/test/reference/fill-rule.base.argb32.ref.png deleted file mode 100644 index e2e10d4..0000000 Binary files a/test/reference/fill-rule.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/fill-rule.base.rgb24.ref.png b/test/reference/fill-rule.base.rgb24.ref.png deleted file mode 100644 index 49fb39c..0000000 Binary files a/test/reference/fill-rule.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/fill-rule.image16.ref.png b/test/reference/fill-rule.image16.ref.png deleted file mode 100644 index 27613f7..0000000 Binary files a/test/reference/fill-rule.image16.ref.png and /dev/null differ diff --git a/test/reference/fill-rule.ps2.argb32.ref.png b/test/reference/fill-rule.ps2.argb32.ref.png deleted file mode 100644 index c9bdf90..0000000 Binary files a/test/reference/fill-rule.ps2.argb32.ref.png and /dev/null differ diff --git a/test/reference/fill-rule.ps2.rgb24.ref.png b/test/reference/fill-rule.ps2.rgb24.ref.png deleted file mode 100644 index 617a20b..0000000 Binary files a/test/reference/fill-rule.ps2.rgb24.ref.png and /dev/null differ diff --git a/test/reference/fill-rule.ps3.argb32.ref.png b/test/reference/fill-rule.ps3.argb32.ref.png deleted file mode 100644 index c9bdf90..0000000 Binary files a/test/reference/fill-rule.ps3.argb32.ref.png and /dev/null differ diff --git a/test/reference/fill-rule.ps3.rgb24.ref.png b/test/reference/fill-rule.ps3.rgb24.ref.png deleted file mode 100644 index 617a20b..0000000 Binary files a/test/reference/fill-rule.ps3.rgb24.ref.png and /dev/null differ diff --git a/test/reference/fill-rule.quartz.argb32.ref.png b/test/reference/fill-rule.quartz.argb32.ref.png deleted file mode 100644 index 2ac5340..0000000 Binary files a/test/reference/fill-rule.quartz.argb32.ref.png and /dev/null differ diff --git a/test/reference/fill-rule.quartz.rgb24.ref.png b/test/reference/fill-rule.quartz.rgb24.ref.png deleted file mode 100644 index bd671d6..0000000 Binary files a/test/reference/fill-rule.quartz.rgb24.ref.png and /dev/null differ diff --git a/test/reference/fill-rule.rgb24.ref.png b/test/reference/fill-rule.rgb24.ref.png deleted file mode 100644 index 25023a2..0000000 Binary files a/test/reference/fill-rule.rgb24.ref.png and /dev/null differ diff --git a/test/reference/fill-rule.traps.argb32.ref.png b/test/reference/fill-rule.traps.argb32.ref.png deleted file mode 100644 index e2e10d4..0000000 Binary files a/test/reference/fill-rule.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/fill-rule.traps.rgb24.ref.png b/test/reference/fill-rule.traps.rgb24.ref.png deleted file mode 100644 index 49fb39c..0000000 Binary files a/test/reference/fill-rule.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/fill-xlib-fallback.rgb24.ref.png b/test/reference/fill-xlib-fallback.rgb24.ref.png deleted file mode 100644 index 1e67073..0000000 Binary files a/test/reference/fill-xlib-fallback.rgb24.ref.png and /dev/null differ diff --git a/test/reference/fill-xlib-window.rgb24.ref.png b/test/reference/fill-xlib-window.rgb24.ref.png deleted file mode 100644 index 1e67073..0000000 Binary files a/test/reference/fill-xlib-window.rgb24.ref.png and /dev/null differ diff --git a/test/reference/fill-xlib.ref.png b/test/reference/fill-xlib.ref.png deleted file mode 100644 index 1e67073..0000000 Binary files a/test/reference/fill-xlib.ref.png and /dev/null differ diff --git a/test/reference/fill.image.argb32.ref.png b/test/reference/fill.image.argb32.ref.png deleted file mode 100644 index 70c6bcc..0000000 Binary files a/test/reference/fill.image.argb32.ref.png and /dev/null differ diff --git a/test/reference/fill.image.rgb24.ref.png b/test/reference/fill.image.rgb24.ref.png deleted file mode 100644 index 70c6bcc..0000000 Binary files a/test/reference/fill.image.rgb24.ref.png and /dev/null differ diff --git a/test/reference/filter-bilinear-extents.base.argb32.ref.png b/test/reference/filter-bilinear-extents.base.argb32.ref.png deleted file mode 100644 index 797e798..0000000 Binary files a/test/reference/filter-bilinear-extents.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/filter-bilinear-extents.base.rgb24.ref.png b/test/reference/filter-bilinear-extents.base.rgb24.ref.png deleted file mode 100644 index 797e798..0000000 Binary files a/test/reference/filter-bilinear-extents.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/filter-bilinear-extents.image16.ref.png b/test/reference/filter-bilinear-extents.image16.ref.png deleted file mode 100644 index 5b7755b..0000000 Binary files a/test/reference/filter-bilinear-extents.image16.ref.png and /dev/null differ diff --git a/test/reference/filter-bilinear-extents.pdf.xfail.png b/test/reference/filter-bilinear-extents.pdf.xfail.png deleted file mode 100644 index e6c4bb4..0000000 Binary files a/test/reference/filter-bilinear-extents.pdf.xfail.png and /dev/null differ diff --git a/test/reference/filter-bilinear-extents.ps2.ref.png b/test/reference/filter-bilinear-extents.ps2.ref.png deleted file mode 100644 index 97c105c..0000000 Binary files a/test/reference/filter-bilinear-extents.ps2.ref.png and /dev/null differ diff --git a/test/reference/filter-bilinear-extents.ps3.ref.png b/test/reference/filter-bilinear-extents.ps3.ref.png deleted file mode 100644 index 97c105c..0000000 Binary files a/test/reference/filter-bilinear-extents.ps3.ref.png and /dev/null differ diff --git a/test/reference/filter-bilinear-extents.quartz.xfail.png b/test/reference/filter-bilinear-extents.quartz.xfail.png deleted file mode 100644 index 312ee80..0000000 Binary files a/test/reference/filter-bilinear-extents.quartz.xfail.png and /dev/null differ diff --git a/test/reference/filter-bilinear-extents.ref.png b/test/reference/filter-bilinear-extents.ref.png deleted file mode 100644 index 797e798..0000000 Binary files a/test/reference/filter-bilinear-extents.ref.png and /dev/null differ diff --git a/test/reference/filter-nearest-offset.base.argb32.ref.png b/test/reference/filter-nearest-offset.base.argb32.ref.png deleted file mode 100644 index 8cca9a1..0000000 Binary files a/test/reference/filter-nearest-offset.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/filter-nearest-offset.base.rgb24.ref.png b/test/reference/filter-nearest-offset.base.rgb24.ref.png deleted file mode 100644 index 8cca9a1..0000000 Binary files a/test/reference/filter-nearest-offset.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/filter-nearest-offset.gl.xfail.png b/test/reference/filter-nearest-offset.gl.xfail.png deleted file mode 100644 index a777e7c..0000000 Binary files a/test/reference/filter-nearest-offset.gl.xfail.png and /dev/null differ diff --git a/test/reference/filter-nearest-offset.pdf.xfail.png b/test/reference/filter-nearest-offset.pdf.xfail.png deleted file mode 100644 index 3042821..0000000 Binary files a/test/reference/filter-nearest-offset.pdf.xfail.png and /dev/null differ diff --git a/test/reference/filter-nearest-offset.ps2.ref.png b/test/reference/filter-nearest-offset.ps2.ref.png deleted file mode 100644 index 185f779..0000000 Binary files a/test/reference/filter-nearest-offset.ps2.ref.png and /dev/null differ diff --git a/test/reference/filter-nearest-offset.ps3.ref.png b/test/reference/filter-nearest-offset.ps3.ref.png deleted file mode 100644 index 185f779..0000000 Binary files a/test/reference/filter-nearest-offset.ps3.ref.png and /dev/null differ diff --git a/test/reference/filter-nearest-offset.ref.png b/test/reference/filter-nearest-offset.ref.png deleted file mode 100644 index af81aee..0000000 Binary files a/test/reference/filter-nearest-offset.ref.png and /dev/null differ diff --git a/test/reference/filter-nearest-offset.svg.xfail.png b/test/reference/filter-nearest-offset.svg.xfail.png deleted file mode 100644 index a46dc76..0000000 Binary files a/test/reference/filter-nearest-offset.svg.xfail.png and /dev/null differ diff --git a/test/reference/filter-nearest-transformed.base.argb32.ref.png b/test/reference/filter-nearest-transformed.base.argb32.ref.png deleted file mode 100644 index 24adf8b..0000000 Binary files a/test/reference/filter-nearest-transformed.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/filter-nearest-transformed.base.rgb24.ref.png b/test/reference/filter-nearest-transformed.base.rgb24.ref.png deleted file mode 100644 index 24adf8b..0000000 Binary files a/test/reference/filter-nearest-transformed.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/filter-nearest-transformed.gl.xfail.png b/test/reference/filter-nearest-transformed.gl.xfail.png deleted file mode 100644 index ba8170b..0000000 Binary files a/test/reference/filter-nearest-transformed.gl.xfail.png and /dev/null differ diff --git a/test/reference/filter-nearest-transformed.image16.ref.png b/test/reference/filter-nearest-transformed.image16.ref.png deleted file mode 100644 index a02e1e1..0000000 Binary files a/test/reference/filter-nearest-transformed.image16.ref.png and /dev/null differ diff --git a/test/reference/filter-nearest-transformed.pdf.xfail.png b/test/reference/filter-nearest-transformed.pdf.xfail.png deleted file mode 100644 index e5b8378..0000000 Binary files a/test/reference/filter-nearest-transformed.pdf.xfail.png and /dev/null differ diff --git a/test/reference/filter-nearest-transformed.quartz.xfail.png b/test/reference/filter-nearest-transformed.quartz.xfail.png deleted file mode 100644 index 246cdf4..0000000 Binary files a/test/reference/filter-nearest-transformed.quartz.xfail.png and /dev/null differ diff --git a/test/reference/filter-nearest-transformed.ref.png b/test/reference/filter-nearest-transformed.ref.png deleted file mode 100644 index dc413b4..0000000 Binary files a/test/reference/filter-nearest-transformed.ref.png and /dev/null differ diff --git a/test/reference/filter-nearest-transformed.svg.xfail.png b/test/reference/filter-nearest-transformed.svg.xfail.png deleted file mode 100644 index e6bbe28..0000000 Binary files a/test/reference/filter-nearest-transformed.svg.xfail.png and /dev/null differ diff --git a/test/reference/finer-grained-fallbacks.base.argb32.ref.png b/test/reference/finer-grained-fallbacks.base.argb32.ref.png deleted file mode 100644 index accb01b..0000000 Binary files a/test/reference/finer-grained-fallbacks.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/finer-grained-fallbacks.base.rgb24.ref.png b/test/reference/finer-grained-fallbacks.base.rgb24.ref.png deleted file mode 100644 index 0e6094c..0000000 Binary files a/test/reference/finer-grained-fallbacks.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/finer-grained-fallbacks.gl.argb32.ref.png b/test/reference/finer-grained-fallbacks.gl.argb32.ref.png deleted file mode 100644 index 69ec487..0000000 Binary files a/test/reference/finer-grained-fallbacks.gl.argb32.ref.png and /dev/null differ diff --git a/test/reference/finer-grained-fallbacks.image16.ref.png b/test/reference/finer-grained-fallbacks.image16.ref.png deleted file mode 100644 index 3b104ef..0000000 Binary files a/test/reference/finer-grained-fallbacks.image16.ref.png and /dev/null differ diff --git a/test/reference/finer-grained-fallbacks.mask.argb32.ref.png b/test/reference/finer-grained-fallbacks.mask.argb32.ref.png deleted file mode 100644 index 8cd99d0..0000000 Binary files a/test/reference/finer-grained-fallbacks.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/finer-grained-fallbacks.mask.rgb24.ref.png b/test/reference/finer-grained-fallbacks.mask.rgb24.ref.png deleted file mode 100644 index 5d6cd94..0000000 Binary files a/test/reference/finer-grained-fallbacks.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/finer-grained-fallbacks.ps2.argb32.ref.png b/test/reference/finer-grained-fallbacks.ps2.argb32.ref.png deleted file mode 100644 index 19c132f..0000000 Binary files a/test/reference/finer-grained-fallbacks.ps2.argb32.ref.png and /dev/null differ diff --git a/test/reference/finer-grained-fallbacks.ps2.ref.png b/test/reference/finer-grained-fallbacks.ps2.ref.png deleted file mode 100644 index 1744100..0000000 Binary files a/test/reference/finer-grained-fallbacks.ps2.ref.png and /dev/null differ diff --git a/test/reference/finer-grained-fallbacks.ps2.rgb24.ref.png b/test/reference/finer-grained-fallbacks.ps2.rgb24.ref.png deleted file mode 100644 index 3f94a3a..0000000 Binary files a/test/reference/finer-grained-fallbacks.ps2.rgb24.ref.png and /dev/null differ diff --git a/test/reference/finer-grained-fallbacks.ps3.argb32.ref.png b/test/reference/finer-grained-fallbacks.ps3.argb32.ref.png deleted file mode 100644 index 19c132f..0000000 Binary files a/test/reference/finer-grained-fallbacks.ps3.argb32.ref.png and /dev/null differ diff --git a/test/reference/finer-grained-fallbacks.ps3.ref.png b/test/reference/finer-grained-fallbacks.ps3.ref.png deleted file mode 100644 index 1744100..0000000 Binary files a/test/reference/finer-grained-fallbacks.ps3.ref.png and /dev/null differ diff --git a/test/reference/finer-grained-fallbacks.ps3.rgb24.ref.png b/test/reference/finer-grained-fallbacks.ps3.rgb24.ref.png deleted file mode 100644 index 3f94a3a..0000000 Binary files a/test/reference/finer-grained-fallbacks.ps3.rgb24.ref.png and /dev/null differ diff --git a/test/reference/finer-grained-fallbacks.quartz.argb32.ref.png b/test/reference/finer-grained-fallbacks.quartz.argb32.ref.png deleted file mode 100644 index dc05761..0000000 Binary files a/test/reference/finer-grained-fallbacks.quartz.argb32.ref.png and /dev/null differ diff --git a/test/reference/finer-grained-fallbacks.quartz.rgb24.ref.png b/test/reference/finer-grained-fallbacks.quartz.rgb24.ref.png deleted file mode 100644 index 1fdedd0..0000000 Binary files a/test/reference/finer-grained-fallbacks.quartz.rgb24.ref.png and /dev/null differ diff --git a/test/reference/finer-grained-fallbacks.ref.png b/test/reference/finer-grained-fallbacks.ref.png deleted file mode 100644 index cb18717..0000000 Binary files a/test/reference/finer-grained-fallbacks.ref.png and /dev/null differ diff --git a/test/reference/finer-grained-fallbacks.svg12.argb32.ref.png b/test/reference/finer-grained-fallbacks.svg12.argb32.ref.png deleted file mode 100644 index 5aaf86b..0000000 Binary files a/test/reference/finer-grained-fallbacks.svg12.argb32.ref.png and /dev/null differ diff --git a/test/reference/finer-grained-fallbacks.svg12.rgb24.ref.png b/test/reference/finer-grained-fallbacks.svg12.rgb24.ref.png deleted file mode 100644 index ad55366..0000000 Binary files a/test/reference/finer-grained-fallbacks.svg12.rgb24.ref.png and /dev/null differ diff --git a/test/reference/finer-grained-fallbacks.traps.argb32.ref.png b/test/reference/finer-grained-fallbacks.traps.argb32.ref.png deleted file mode 100644 index accb01b..0000000 Binary files a/test/reference/finer-grained-fallbacks.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/finer-grained-fallbacks.traps.rgb24.ref.png b/test/reference/finer-grained-fallbacks.traps.rgb24.ref.png deleted file mode 100644 index 0e6094c..0000000 Binary files a/test/reference/finer-grained-fallbacks.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/finer-grained-fallbacks.xlib-fallback.ref.png b/test/reference/finer-grained-fallbacks.xlib-fallback.ref.png deleted file mode 100644 index c2af714..0000000 Binary files a/test/reference/finer-grained-fallbacks.xlib-fallback.ref.png and /dev/null differ diff --git a/test/reference/font-matrix-translation.base.argb32.ref.png b/test/reference/font-matrix-translation.base.argb32.ref.png deleted file mode 100644 index a4a1082..0000000 Binary files a/test/reference/font-matrix-translation.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/font-matrix-translation.base.rgb24.ref.png b/test/reference/font-matrix-translation.base.rgb24.ref.png deleted file mode 100644 index a4a1082..0000000 Binary files a/test/reference/font-matrix-translation.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/font-matrix-translation.image16.ref.png b/test/reference/font-matrix-translation.image16.ref.png deleted file mode 100644 index f76b9ae..0000000 Binary files a/test/reference/font-matrix-translation.image16.ref.png and /dev/null differ diff --git a/test/reference/font-matrix-translation.ps2.argb32.ref.png b/test/reference/font-matrix-translation.ps2.argb32.ref.png deleted file mode 100644 index 41d05a0..0000000 Binary files a/test/reference/font-matrix-translation.ps2.argb32.ref.png and /dev/null differ diff --git a/test/reference/font-matrix-translation.ps2.rgb24.ref.png b/test/reference/font-matrix-translation.ps2.rgb24.ref.png deleted file mode 100644 index 41d05a0..0000000 Binary files a/test/reference/font-matrix-translation.ps2.rgb24.ref.png and /dev/null differ diff --git a/test/reference/font-matrix-translation.ps3.argb32.ref.png b/test/reference/font-matrix-translation.ps3.argb32.ref.png deleted file mode 100644 index 41d05a0..0000000 Binary files a/test/reference/font-matrix-translation.ps3.argb32.ref.png and /dev/null differ diff --git a/test/reference/font-matrix-translation.ps3.rgb24.ref.png b/test/reference/font-matrix-translation.ps3.rgb24.ref.png deleted file mode 100644 index 41d05a0..0000000 Binary files a/test/reference/font-matrix-translation.ps3.rgb24.ref.png and /dev/null differ diff --git a/test/reference/font-matrix-translation.quartz.ref.png b/test/reference/font-matrix-translation.quartz.ref.png deleted file mode 100644 index 187e2c1..0000000 Binary files a/test/reference/font-matrix-translation.quartz.ref.png and /dev/null differ diff --git a/test/reference/font-matrix-translation.ref.png b/test/reference/font-matrix-translation.ref.png deleted file mode 100644 index a4a1082..0000000 Binary files a/test/reference/font-matrix-translation.ref.png and /dev/null differ diff --git a/test/reference/font-matrix-translation.svg.ref.png b/test/reference/font-matrix-translation.svg.ref.png deleted file mode 100644 index e35f9be..0000000 Binary files a/test/reference/font-matrix-translation.svg.ref.png and /dev/null differ diff --git a/test/reference/font-matrix-translation.traps.ref.png b/test/reference/font-matrix-translation.traps.ref.png deleted file mode 100644 index a4a1082..0000000 Binary files a/test/reference/font-matrix-translation.traps.ref.png and /dev/null differ diff --git a/test/reference/ft-show-glyphs-positioning.base.argb32.ref.png b/test/reference/ft-show-glyphs-positioning.base.argb32.ref.png deleted file mode 100644 index af6dcaf..0000000 Binary files a/test/reference/ft-show-glyphs-positioning.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/ft-show-glyphs-positioning.base.rgb24.ref.png b/test/reference/ft-show-glyphs-positioning.base.rgb24.ref.png deleted file mode 100644 index af6dcaf..0000000 Binary files a/test/reference/ft-show-glyphs-positioning.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/ft-show-glyphs-positioning.image16.ref.png b/test/reference/ft-show-glyphs-positioning.image16.ref.png deleted file mode 100644 index f3d9f0d..0000000 Binary files a/test/reference/ft-show-glyphs-positioning.image16.ref.png and /dev/null differ diff --git a/test/reference/ft-show-glyphs-positioning.pdf.ref.png b/test/reference/ft-show-glyphs-positioning.pdf.ref.png deleted file mode 100644 index 0d62fd3..0000000 Binary files a/test/reference/ft-show-glyphs-positioning.pdf.ref.png and /dev/null differ diff --git a/test/reference/ft-show-glyphs-positioning.ps2.ref.png b/test/reference/ft-show-glyphs-positioning.ps2.ref.png deleted file mode 100644 index c5fbf30..0000000 Binary files a/test/reference/ft-show-glyphs-positioning.ps2.ref.png and /dev/null differ diff --git a/test/reference/ft-show-glyphs-positioning.ps3.ref.png b/test/reference/ft-show-glyphs-positioning.ps3.ref.png deleted file mode 100644 index c5fbf30..0000000 Binary files a/test/reference/ft-show-glyphs-positioning.ps3.ref.png and /dev/null differ diff --git a/test/reference/ft-show-glyphs-positioning.ref.png b/test/reference/ft-show-glyphs-positioning.ref.png deleted file mode 100644 index af6dcaf..0000000 Binary files a/test/reference/ft-show-glyphs-positioning.ref.png and /dev/null differ diff --git a/test/reference/ft-show-glyphs-positioning.svg.ref.png b/test/reference/ft-show-glyphs-positioning.svg.ref.png deleted file mode 100644 index 04fe674..0000000 Binary files a/test/reference/ft-show-glyphs-positioning.svg.ref.png and /dev/null differ diff --git a/test/reference/ft-show-glyphs-positioning.traps.ref.png b/test/reference/ft-show-glyphs-positioning.traps.ref.png deleted file mode 100644 index af6dcaf..0000000 Binary files a/test/reference/ft-show-glyphs-positioning.traps.ref.png and /dev/null differ diff --git a/test/reference/ft-show-glyphs-table.base.argb32.ref.png b/test/reference/ft-show-glyphs-table.base.argb32.ref.png deleted file mode 100644 index ed69124..0000000 Binary files a/test/reference/ft-show-glyphs-table.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/ft-show-glyphs-table.base.rgb24.ref.png b/test/reference/ft-show-glyphs-table.base.rgb24.ref.png deleted file mode 100644 index ed69124..0000000 Binary files a/test/reference/ft-show-glyphs-table.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/ft-show-glyphs-table.image16.ref.png b/test/reference/ft-show-glyphs-table.image16.ref.png deleted file mode 100644 index af01a49..0000000 Binary files a/test/reference/ft-show-glyphs-table.image16.ref.png and /dev/null differ diff --git a/test/reference/ft-show-glyphs-table.ps2.ref.png b/test/reference/ft-show-glyphs-table.ps2.ref.png deleted file mode 100644 index 5143663..0000000 Binary files a/test/reference/ft-show-glyphs-table.ps2.ref.png and /dev/null differ diff --git a/test/reference/ft-show-glyphs-table.ps3.ref.png b/test/reference/ft-show-glyphs-table.ps3.ref.png deleted file mode 100644 index 5143663..0000000 Binary files a/test/reference/ft-show-glyphs-table.ps3.ref.png and /dev/null differ diff --git a/test/reference/ft-show-glyphs-table.quartz.xfail.png b/test/reference/ft-show-glyphs-table.quartz.xfail.png deleted file mode 100644 index 0e131b2..0000000 Binary files a/test/reference/ft-show-glyphs-table.quartz.xfail.png and /dev/null differ diff --git a/test/reference/ft-show-glyphs-table.ref.png b/test/reference/ft-show-glyphs-table.ref.png deleted file mode 100644 index ed69124..0000000 Binary files a/test/reference/ft-show-glyphs-table.ref.png and /dev/null differ diff --git a/test/reference/ft-show-glyphs-table.svg.ref.png b/test/reference/ft-show-glyphs-table.svg.ref.png deleted file mode 100644 index e0654b7..0000000 Binary files a/test/reference/ft-show-glyphs-table.svg.ref.png and /dev/null differ diff --git a/test/reference/ft-show-glyphs-table.traps.ref.png b/test/reference/ft-show-glyphs-table.traps.ref.png deleted file mode 100644 index ed69124..0000000 Binary files a/test/reference/ft-show-glyphs-table.traps.ref.png and /dev/null differ diff --git a/test/reference/ft-text-antialias-none.base.argb32.ref.png b/test/reference/ft-text-antialias-none.base.argb32.ref.png deleted file mode 100644 index c638c9e..0000000 Binary files a/test/reference/ft-text-antialias-none.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/ft-text-antialias-none.base.rgb24.ref.png b/test/reference/ft-text-antialias-none.base.rgb24.ref.png deleted file mode 100644 index c638c9e..0000000 Binary files a/test/reference/ft-text-antialias-none.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/ft-text-antialias-none.ps2.argb32.ref.png b/test/reference/ft-text-antialias-none.ps2.argb32.ref.png deleted file mode 100644 index 4f7ee83..0000000 Binary files a/test/reference/ft-text-antialias-none.ps2.argb32.ref.png and /dev/null differ diff --git a/test/reference/ft-text-antialias-none.ps3.argb32.ref.png b/test/reference/ft-text-antialias-none.ps3.argb32.ref.png deleted file mode 100644 index 4f7ee83..0000000 Binary files a/test/reference/ft-text-antialias-none.ps3.argb32.ref.png and /dev/null differ diff --git a/test/reference/ft-text-antialias-none.ref.png b/test/reference/ft-text-antialias-none.ref.png deleted file mode 100644 index cb0c132..0000000 Binary files a/test/reference/ft-text-antialias-none.ref.png and /dev/null differ diff --git a/test/reference/ft-text-vertical-layout-type1.base.argb32.ref.png b/test/reference/ft-text-vertical-layout-type1.base.argb32.ref.png deleted file mode 100644 index 09c4cbb..0000000 Binary files a/test/reference/ft-text-vertical-layout-type1.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/ft-text-vertical-layout-type1.base.rgb24.ref.png b/test/reference/ft-text-vertical-layout-type1.base.rgb24.ref.png deleted file mode 100644 index 09c4cbb..0000000 Binary files a/test/reference/ft-text-vertical-layout-type1.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/ft-text-vertical-layout-type1.image16.ref.png b/test/reference/ft-text-vertical-layout-type1.image16.ref.png deleted file mode 100644 index 4985907..0000000 Binary files a/test/reference/ft-text-vertical-layout-type1.image16.ref.png and /dev/null differ diff --git a/test/reference/ft-text-vertical-layout-type1.pdf.ref.png b/test/reference/ft-text-vertical-layout-type1.pdf.ref.png deleted file mode 100644 index 1f52ff2..0000000 Binary files a/test/reference/ft-text-vertical-layout-type1.pdf.ref.png and /dev/null differ diff --git a/test/reference/ft-text-vertical-layout-type1.ps.ref.png b/test/reference/ft-text-vertical-layout-type1.ps.ref.png deleted file mode 100644 index bb99239..0000000 Binary files a/test/reference/ft-text-vertical-layout-type1.ps.ref.png and /dev/null differ diff --git a/test/reference/ft-text-vertical-layout-type1.quartz.xfail.png b/test/reference/ft-text-vertical-layout-type1.quartz.xfail.png deleted file mode 100644 index a603b35..0000000 Binary files a/test/reference/ft-text-vertical-layout-type1.quartz.xfail.png and /dev/null differ diff --git a/test/reference/ft-text-vertical-layout-type1.ref.png b/test/reference/ft-text-vertical-layout-type1.ref.png deleted file mode 100644 index 7a5670e..0000000 Binary files a/test/reference/ft-text-vertical-layout-type1.ref.png and /dev/null differ diff --git a/test/reference/ft-text-vertical-layout-type1.svg.ref.png b/test/reference/ft-text-vertical-layout-type1.svg.ref.png deleted file mode 100644 index 0be400c..0000000 Binary files a/test/reference/ft-text-vertical-layout-type1.svg.ref.png and /dev/null differ diff --git a/test/reference/ft-text-vertical-layout-type1.traps.argb32.ref.png b/test/reference/ft-text-vertical-layout-type1.traps.argb32.ref.png deleted file mode 100644 index 09c4cbb..0000000 Binary files a/test/reference/ft-text-vertical-layout-type1.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/ft-text-vertical-layout-type1.traps.rgb24.ref.png b/test/reference/ft-text-vertical-layout-type1.traps.rgb24.ref.png deleted file mode 100644 index 09c4cbb..0000000 Binary files a/test/reference/ft-text-vertical-layout-type1.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/ft-text-vertical-layout-type1.xfail.png b/test/reference/ft-text-vertical-layout-type1.xfail.png deleted file mode 100644 index 063bbd9..0000000 Binary files a/test/reference/ft-text-vertical-layout-type1.xfail.png and /dev/null differ diff --git a/test/reference/ft-text-vertical-layout-type3.base.argb32.ref.png b/test/reference/ft-text-vertical-layout-type3.base.argb32.ref.png deleted file mode 100644 index 82374b7..0000000 Binary files a/test/reference/ft-text-vertical-layout-type3.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/ft-text-vertical-layout-type3.base.rgb24.ref.png b/test/reference/ft-text-vertical-layout-type3.base.rgb24.ref.png deleted file mode 100644 index 82374b7..0000000 Binary files a/test/reference/ft-text-vertical-layout-type3.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/ft-text-vertical-layout-type3.image16.ref.png b/test/reference/ft-text-vertical-layout-type3.image16.ref.png deleted file mode 100644 index a5c3c11..0000000 Binary files a/test/reference/ft-text-vertical-layout-type3.image16.ref.png and /dev/null differ diff --git a/test/reference/ft-text-vertical-layout-type3.mask.argb32.ref.png b/test/reference/ft-text-vertical-layout-type3.mask.argb32.ref.png deleted file mode 100644 index 7f7b428..0000000 Binary files a/test/reference/ft-text-vertical-layout-type3.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/ft-text-vertical-layout-type3.mask.rgb24.ref.png b/test/reference/ft-text-vertical-layout-type3.mask.rgb24.ref.png deleted file mode 100644 index 7f7b428..0000000 Binary files a/test/reference/ft-text-vertical-layout-type3.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/ft-text-vertical-layout-type3.pdf.ref.png b/test/reference/ft-text-vertical-layout-type3.pdf.ref.png deleted file mode 100644 index a05ec1d..0000000 Binary files a/test/reference/ft-text-vertical-layout-type3.pdf.ref.png and /dev/null differ diff --git a/test/reference/ft-text-vertical-layout-type3.ps.ref.png b/test/reference/ft-text-vertical-layout-type3.ps.ref.png deleted file mode 100644 index f8aafa2..0000000 Binary files a/test/reference/ft-text-vertical-layout-type3.ps.ref.png and /dev/null differ diff --git a/test/reference/ft-text-vertical-layout-type3.quartz.ref.png b/test/reference/ft-text-vertical-layout-type3.quartz.ref.png deleted file mode 100644 index 4a063f3..0000000 Binary files a/test/reference/ft-text-vertical-layout-type3.quartz.ref.png and /dev/null differ diff --git a/test/reference/ft-text-vertical-layout-type3.ref.png b/test/reference/ft-text-vertical-layout-type3.ref.png deleted file mode 100644 index 5f64d88..0000000 Binary files a/test/reference/ft-text-vertical-layout-type3.ref.png and /dev/null differ diff --git a/test/reference/ft-text-vertical-layout-type3.svg.ref.png b/test/reference/ft-text-vertical-layout-type3.svg.ref.png deleted file mode 100644 index cddb955..0000000 Binary files a/test/reference/ft-text-vertical-layout-type3.svg.ref.png and /dev/null differ diff --git a/test/reference/ft-text-vertical-layout-type3.traps.argb32.ref.png b/test/reference/ft-text-vertical-layout-type3.traps.argb32.ref.png deleted file mode 100644 index 82374b7..0000000 Binary files a/test/reference/ft-text-vertical-layout-type3.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/ft-text-vertical-layout-type3.traps.rgb24.ref.png b/test/reference/ft-text-vertical-layout-type3.traps.rgb24.ref.png deleted file mode 100644 index 82374b7..0000000 Binary files a/test/reference/ft-text-vertical-layout-type3.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/get-group-target.base.argb32.ref.png b/test/reference/get-group-target.base.argb32.ref.png deleted file mode 100644 index d162775..0000000 Binary files a/test/reference/get-group-target.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/get-group-target.base.rgb24.ref.png b/test/reference/get-group-target.base.rgb24.ref.png deleted file mode 100644 index d162775..0000000 Binary files a/test/reference/get-group-target.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/get-group-target.ref.png b/test/reference/get-group-target.ref.png deleted file mode 100644 index 316a93f..0000000 Binary files a/test/reference/get-group-target.ref.png and /dev/null differ diff --git a/test/reference/gl-surface-source.base.argb32.ref.png b/test/reference/gl-surface-source.base.argb32.ref.png deleted file mode 100644 index 0182972..0000000 Binary files a/test/reference/gl-surface-source.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/gl-surface-source.base.rgb24.ref.png b/test/reference/gl-surface-source.base.rgb24.ref.png deleted file mode 100644 index 0d68a82..0000000 Binary files a/test/reference/gl-surface-source.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/gl-surface-source.image16.ref.png b/test/reference/gl-surface-source.image16.ref.png deleted file mode 100644 index 2a7460e..0000000 Binary files a/test/reference/gl-surface-source.image16.ref.png and /dev/null differ diff --git a/test/reference/gl-surface-source.ref.png b/test/reference/gl-surface-source.ref.png deleted file mode 100644 index 0182972..0000000 Binary files a/test/reference/gl-surface-source.ref.png and /dev/null differ diff --git a/test/reference/glyph-cache-pressure.base.argb32.ref.png b/test/reference/glyph-cache-pressure.base.argb32.ref.png deleted file mode 100644 index a6e1b06..0000000 Binary files a/test/reference/glyph-cache-pressure.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/glyph-cache-pressure.base.rgb24.ref.png b/test/reference/glyph-cache-pressure.base.rgb24.ref.png deleted file mode 100644 index a6e1b06..0000000 Binary files a/test/reference/glyph-cache-pressure.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/glyph-cache-pressure.image16.ref.png b/test/reference/glyph-cache-pressure.image16.ref.png deleted file mode 100644 index f3985bd..0000000 Binary files a/test/reference/glyph-cache-pressure.image16.ref.png and /dev/null differ diff --git a/test/reference/glyph-cache-pressure.ps2.ref.png b/test/reference/glyph-cache-pressure.ps2.ref.png deleted file mode 100644 index 88fa447..0000000 Binary files a/test/reference/glyph-cache-pressure.ps2.ref.png and /dev/null differ diff --git a/test/reference/glyph-cache-pressure.ps3.ref.png b/test/reference/glyph-cache-pressure.ps3.ref.png deleted file mode 100644 index 88fa447..0000000 Binary files a/test/reference/glyph-cache-pressure.ps3.ref.png and /dev/null differ diff --git a/test/reference/glyph-cache-pressure.quartz.ref.png b/test/reference/glyph-cache-pressure.quartz.ref.png deleted file mode 100644 index 6291e84..0000000 Binary files a/test/reference/glyph-cache-pressure.quartz.ref.png and /dev/null differ diff --git a/test/reference/glyph-cache-pressure.ref.png b/test/reference/glyph-cache-pressure.ref.png deleted file mode 100644 index a6e1b06..0000000 Binary files a/test/reference/glyph-cache-pressure.ref.png and /dev/null differ diff --git a/test/reference/glyph-cache-pressure.traps.ref.png b/test/reference/glyph-cache-pressure.traps.ref.png deleted file mode 100644 index a6e1b06..0000000 Binary files a/test/reference/glyph-cache-pressure.traps.ref.png and /dev/null differ diff --git a/test/reference/gradient-alpha.base.argb32.ref.png b/test/reference/gradient-alpha.base.argb32.ref.png deleted file mode 100644 index f64b26a..0000000 Binary files a/test/reference/gradient-alpha.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/gradient-alpha.base.rgb24.ref.png b/test/reference/gradient-alpha.base.rgb24.ref.png deleted file mode 100644 index 3c7258d..0000000 Binary files a/test/reference/gradient-alpha.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/gradient-alpha.ps2.argb32.ref.png b/test/reference/gradient-alpha.ps2.argb32.ref.png deleted file mode 100644 index 37eafba..0000000 Binary files a/test/reference/gradient-alpha.ps2.argb32.ref.png and /dev/null differ diff --git a/test/reference/gradient-alpha.ps2.rgb24.ref.png b/test/reference/gradient-alpha.ps2.rgb24.ref.png deleted file mode 100644 index 2432c29..0000000 Binary files a/test/reference/gradient-alpha.ps2.rgb24.ref.png and /dev/null differ diff --git a/test/reference/gradient-alpha.ps3.argb32.ref.png b/test/reference/gradient-alpha.ps3.argb32.ref.png deleted file mode 100644 index 37eafba..0000000 Binary files a/test/reference/gradient-alpha.ps3.argb32.ref.png and /dev/null differ diff --git a/test/reference/gradient-alpha.ps3.rgb24.ref.png b/test/reference/gradient-alpha.ps3.rgb24.ref.png deleted file mode 100644 index 2432c29..0000000 Binary files a/test/reference/gradient-alpha.ps3.rgb24.ref.png and /dev/null differ diff --git a/test/reference/gradient-alpha.ref.png b/test/reference/gradient-alpha.ref.png deleted file mode 100644 index f64b26a..0000000 Binary files a/test/reference/gradient-alpha.ref.png and /dev/null differ diff --git a/test/reference/gradient-constant-alpha.base.argb32.ref.png b/test/reference/gradient-constant-alpha.base.argb32.ref.png deleted file mode 100644 index 7f49e2c..0000000 Binary files a/test/reference/gradient-constant-alpha.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/gradient-constant-alpha.base.rgb24.ref.png b/test/reference/gradient-constant-alpha.base.rgb24.ref.png deleted file mode 100644 index 69cd596..0000000 Binary files a/test/reference/gradient-constant-alpha.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/gradient-constant-alpha.ps3.ref.png b/test/reference/gradient-constant-alpha.ps3.ref.png deleted file mode 100644 index 7089f4f..0000000 Binary files a/test/reference/gradient-constant-alpha.ps3.ref.png and /dev/null differ diff --git a/test/reference/gradient-constant-alpha.ps3.rgb24.ref.png b/test/reference/gradient-constant-alpha.ps3.rgb24.ref.png deleted file mode 100644 index 5962925..0000000 Binary files a/test/reference/gradient-constant-alpha.ps3.rgb24.ref.png and /dev/null differ diff --git a/test/reference/gradient-constant-alpha.quartz.argb32.ref.png b/test/reference/gradient-constant-alpha.quartz.argb32.ref.png deleted file mode 100644 index a426f5a..0000000 Binary files a/test/reference/gradient-constant-alpha.quartz.argb32.ref.png and /dev/null differ diff --git a/test/reference/gradient-constant-alpha.ref.png b/test/reference/gradient-constant-alpha.ref.png deleted file mode 100644 index 7f49e2c..0000000 Binary files a/test/reference/gradient-constant-alpha.ref.png and /dev/null differ diff --git a/test/reference/gradient-zero-stops-mask.base.argb32.ref.png b/test/reference/gradient-zero-stops-mask.base.argb32.ref.png deleted file mode 100644 index 0a50f4c..0000000 Binary files a/test/reference/gradient-zero-stops-mask.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/gradient-zero-stops-mask.base.rgb24.ref.png b/test/reference/gradient-zero-stops-mask.base.rgb24.ref.png deleted file mode 100644 index 21465ce..0000000 Binary files a/test/reference/gradient-zero-stops-mask.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/gradient-zero-stops-mask.ref.png b/test/reference/gradient-zero-stops-mask.ref.png deleted file mode 100644 index 0a50f4c..0000000 Binary files a/test/reference/gradient-zero-stops-mask.ref.png and /dev/null differ diff --git a/test/reference/gradient-zero-stops.base.argb32.ref.png b/test/reference/gradient-zero-stops.base.argb32.ref.png deleted file mode 100644 index 0a50f4c..0000000 Binary files a/test/reference/gradient-zero-stops.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/gradient-zero-stops.base.rgb24.ref.png b/test/reference/gradient-zero-stops.base.rgb24.ref.png deleted file mode 100644 index 21465ce..0000000 Binary files a/test/reference/gradient-zero-stops.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/gradient-zero-stops.ref.png b/test/reference/gradient-zero-stops.ref.png deleted file mode 100644 index 3f18670..0000000 Binary files a/test/reference/gradient-zero-stops.ref.png and /dev/null differ diff --git a/test/reference/group-clip.base.argb32.ref.png b/test/reference/group-clip.base.argb32.ref.png deleted file mode 100644 index 7b8a753..0000000 Binary files a/test/reference/group-clip.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/group-clip.base.rgb24.ref.png b/test/reference/group-clip.base.rgb24.ref.png deleted file mode 100644 index 7b8a753..0000000 Binary files a/test/reference/group-clip.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/group-clip.image16.ref.png b/test/reference/group-clip.image16.ref.png deleted file mode 100644 index 98b66ef..0000000 Binary files a/test/reference/group-clip.image16.ref.png and /dev/null differ diff --git a/test/reference/group-clip.ref.png b/test/reference/group-clip.ref.png deleted file mode 100644 index 7b8a753..0000000 Binary files a/test/reference/group-clip.ref.png and /dev/null differ diff --git a/test/reference/group-paint.base.argb32.ref.png b/test/reference/group-paint.base.argb32.ref.png deleted file mode 100644 index 1ed070c..0000000 Binary files a/test/reference/group-paint.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/group-paint.base.rgb24.ref.png b/test/reference/group-paint.base.rgb24.ref.png deleted file mode 100644 index 1ed070c..0000000 Binary files a/test/reference/group-paint.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/group-paint.ref.png b/test/reference/group-paint.ref.png deleted file mode 100644 index f2e111b..0000000 Binary files a/test/reference/group-paint.ref.png and /dev/null differ diff --git a/test/reference/group-unaligned.base.argb32.ref.png b/test/reference/group-unaligned.base.argb32.ref.png deleted file mode 100644 index 451e171..0000000 Binary files a/test/reference/group-unaligned.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/group-unaligned.base.rgb24.ref.png b/test/reference/group-unaligned.base.rgb24.ref.png deleted file mode 100644 index 451e171..0000000 Binary files a/test/reference/group-unaligned.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/group-unaligned.image16.ref.png b/test/reference/group-unaligned.image16.ref.png deleted file mode 100644 index 6a60a6e..0000000 Binary files a/test/reference/group-unaligned.image16.ref.png and /dev/null differ diff --git a/test/reference/group-unaligned.ps.ref.png b/test/reference/group-unaligned.ps.ref.png deleted file mode 100644 index f108998..0000000 Binary files a/test/reference/group-unaligned.ps.ref.png and /dev/null differ diff --git a/test/reference/group-unaligned.ps.rgb24.xfail.png b/test/reference/group-unaligned.ps.rgb24.xfail.png deleted file mode 100644 index 5672cb0..0000000 Binary files a/test/reference/group-unaligned.ps.rgb24.xfail.png and /dev/null differ diff --git a/test/reference/group-unaligned.quartz.ref.png b/test/reference/group-unaligned.quartz.ref.png deleted file mode 100644 index 1711025..0000000 Binary files a/test/reference/group-unaligned.quartz.ref.png and /dev/null differ diff --git a/test/reference/group-unaligned.ref.png b/test/reference/group-unaligned.ref.png deleted file mode 100644 index 6356e6c..0000000 Binary files a/test/reference/group-unaligned.ref.png and /dev/null differ diff --git a/test/reference/group-unaligned.svg.argb32.xfail.png b/test/reference/group-unaligned.svg.argb32.xfail.png deleted file mode 100644 index 01c34be..0000000 Binary files a/test/reference/group-unaligned.svg.argb32.xfail.png and /dev/null differ diff --git a/test/reference/group-unaligned.svg.rgb24.xfail.png b/test/reference/group-unaligned.svg.rgb24.xfail.png deleted file mode 100644 index c0f1861..0000000 Binary files a/test/reference/group-unaligned.svg.rgb24.xfail.png and /dev/null differ diff --git a/test/reference/group-unaligned.traps.argb32.ref.png b/test/reference/group-unaligned.traps.argb32.ref.png deleted file mode 100644 index 451e171..0000000 Binary files a/test/reference/group-unaligned.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/group-unaligned.traps.rgb24.ref.png b/test/reference/group-unaligned.traps.rgb24.ref.png deleted file mode 100644 index 451e171..0000000 Binary files a/test/reference/group-unaligned.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/group-unaligned.xlib-fallback.ref.png b/test/reference/group-unaligned.xlib-fallback.ref.png deleted file mode 100644 index 5ddbc16..0000000 Binary files a/test/reference/group-unaligned.xlib-fallback.ref.png and /dev/null differ diff --git a/test/reference/halo-transform.base.argb32.ref.png b/test/reference/halo-transform.base.argb32.ref.png deleted file mode 100644 index 45cb90f..0000000 Binary files a/test/reference/halo-transform.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/halo-transform.base.rgb24.ref.png b/test/reference/halo-transform.base.rgb24.ref.png deleted file mode 100644 index 45cb90f..0000000 Binary files a/test/reference/halo-transform.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/halo-transform.image16.ref.png b/test/reference/halo-transform.image16.ref.png deleted file mode 100644 index b2268f0..0000000 Binary files a/test/reference/halo-transform.image16.ref.png and /dev/null differ diff --git a/test/reference/halo-transform.ps.ref.png b/test/reference/halo-transform.ps.ref.png deleted file mode 100644 index 89e1f76..0000000 Binary files a/test/reference/halo-transform.ps.ref.png and /dev/null differ diff --git a/test/reference/halo-transform.quartz.ref.png b/test/reference/halo-transform.quartz.ref.png deleted file mode 100644 index 91a99ba..0000000 Binary files a/test/reference/halo-transform.quartz.ref.png and /dev/null differ diff --git a/test/reference/halo-transform.ref.png b/test/reference/halo-transform.ref.png deleted file mode 100644 index f549c0d..0000000 Binary files a/test/reference/halo-transform.ref.png and /dev/null differ diff --git a/test/reference/halo-transform.traps.ref.png b/test/reference/halo-transform.traps.ref.png deleted file mode 100644 index 45cb90f..0000000 Binary files a/test/reference/halo-transform.traps.ref.png and /dev/null differ diff --git a/test/reference/halo.base.argb32.ref.png b/test/reference/halo.base.argb32.ref.png deleted file mode 100644 index c915a24..0000000 Binary files a/test/reference/halo.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/halo.base.rgb24.ref.png b/test/reference/halo.base.rgb24.ref.png deleted file mode 100644 index c915a24..0000000 Binary files a/test/reference/halo.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/halo.image16.ref.png b/test/reference/halo.image16.ref.png deleted file mode 100644 index a813cd9..0000000 Binary files a/test/reference/halo.image16.ref.png and /dev/null differ diff --git a/test/reference/halo.mask.argb32.ref.png b/test/reference/halo.mask.argb32.ref.png deleted file mode 100644 index 191ee47..0000000 Binary files a/test/reference/halo.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/halo.mask.rgb24.ref.png b/test/reference/halo.mask.rgb24.ref.png deleted file mode 100644 index 191ee47..0000000 Binary files a/test/reference/halo.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/halo.ps.ref.png b/test/reference/halo.ps.ref.png deleted file mode 100644 index 1426d2e..0000000 Binary files a/test/reference/halo.ps.ref.png and /dev/null differ diff --git a/test/reference/halo.quartz.ref.png b/test/reference/halo.quartz.ref.png deleted file mode 100644 index c5cf999..0000000 Binary files a/test/reference/halo.quartz.ref.png and /dev/null differ diff --git a/test/reference/halo.ref.png b/test/reference/halo.ref.png deleted file mode 100644 index dc1316d..0000000 Binary files a/test/reference/halo.ref.png and /dev/null differ diff --git a/test/reference/halo.traps.ref.png b/test/reference/halo.traps.ref.png deleted file mode 100644 index c915a24..0000000 Binary files a/test/reference/halo.traps.ref.png and /dev/null differ diff --git a/test/reference/hatchings.base.argb32.ref.png b/test/reference/hatchings.base.argb32.ref.png deleted file mode 100644 index 73e156d..0000000 Binary files a/test/reference/hatchings.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/hatchings.base.rgb24.ref.png b/test/reference/hatchings.base.rgb24.ref.png deleted file mode 100644 index 73e156d..0000000 Binary files a/test/reference/hatchings.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/hatchings.mask.argb32.ref.png b/test/reference/hatchings.mask.argb32.ref.png deleted file mode 100644 index 77fe853..0000000 Binary files a/test/reference/hatchings.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/hatchings.mask.rgb24.ref.png b/test/reference/hatchings.mask.rgb24.ref.png deleted file mode 100644 index 77fe853..0000000 Binary files a/test/reference/hatchings.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/hatchings.ref.png b/test/reference/hatchings.ref.png deleted file mode 100644 index 215d61f..0000000 Binary files a/test/reference/hatchings.ref.png and /dev/null differ diff --git a/test/reference/hatchings.traps.argb32.ref.png b/test/reference/hatchings.traps.argb32.ref.png deleted file mode 100644 index 3b72949..0000000 Binary files a/test/reference/hatchings.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/hatchings.traps.rgb24.ref.png b/test/reference/hatchings.traps.rgb24.ref.png deleted file mode 100644 index 3b72949..0000000 Binary files a/test/reference/hatchings.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/horizontal-clip.base.argb32.ref.png b/test/reference/horizontal-clip.base.argb32.ref.png deleted file mode 100644 index 43dd07f..0000000 Binary files a/test/reference/horizontal-clip.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/horizontal-clip.base.rgb24.ref.png b/test/reference/horizontal-clip.base.rgb24.ref.png deleted file mode 100644 index 43dd07f..0000000 Binary files a/test/reference/horizontal-clip.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/horizontal-clip.ref.png b/test/reference/horizontal-clip.ref.png deleted file mode 100644 index 43dd07f..0000000 Binary files a/test/reference/horizontal-clip.ref.png and /dev/null differ diff --git a/test/reference/huge-linear.base.argb32.ref.png b/test/reference/huge-linear.base.argb32.ref.png deleted file mode 100644 index f89217b..0000000 Binary files a/test/reference/huge-linear.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/huge-linear.base.rgb24.ref.png b/test/reference/huge-linear.base.rgb24.ref.png deleted file mode 100644 index f89217b..0000000 Binary files a/test/reference/huge-linear.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/huge-linear.image16.ref.png b/test/reference/huge-linear.image16.ref.png deleted file mode 100644 index 56dc58a..0000000 Binary files a/test/reference/huge-linear.image16.ref.png and /dev/null differ diff --git a/test/reference/huge-linear.pdf.ref.png b/test/reference/huge-linear.pdf.ref.png deleted file mode 100644 index 8313470..0000000 Binary files a/test/reference/huge-linear.pdf.ref.png and /dev/null differ diff --git a/test/reference/huge-linear.ps3.ref.png b/test/reference/huge-linear.ps3.ref.png deleted file mode 100644 index d55239b..0000000 Binary files a/test/reference/huge-linear.ps3.ref.png and /dev/null differ diff --git a/test/reference/huge-linear.quartz.ref.png b/test/reference/huge-linear.quartz.ref.png deleted file mode 100644 index 3d12f7b..0000000 Binary files a/test/reference/huge-linear.quartz.ref.png and /dev/null differ diff --git a/test/reference/huge-linear.ref.png b/test/reference/huge-linear.ref.png deleted file mode 100644 index c20a8b7..0000000 Binary files a/test/reference/huge-linear.ref.png and /dev/null differ diff --git a/test/reference/huge-radial.base.argb32.ref.png b/test/reference/huge-radial.base.argb32.ref.png deleted file mode 100644 index 541bb30..0000000 Binary files a/test/reference/huge-radial.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/huge-radial.base.rgb24.ref.png b/test/reference/huge-radial.base.rgb24.ref.png deleted file mode 100644 index 541bb30..0000000 Binary files a/test/reference/huge-radial.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/huge-radial.image16.ref.png b/test/reference/huge-radial.image16.ref.png deleted file mode 100644 index 3913190..0000000 Binary files a/test/reference/huge-radial.image16.ref.png and /dev/null differ diff --git a/test/reference/huge-radial.ps3.ref.png b/test/reference/huge-radial.ps3.ref.png deleted file mode 100644 index c231948..0000000 Binary files a/test/reference/huge-radial.ps3.ref.png and /dev/null differ diff --git a/test/reference/huge-radial.quartz.ref.png b/test/reference/huge-radial.quartz.ref.png deleted file mode 100644 index d823f86..0000000 Binary files a/test/reference/huge-radial.quartz.ref.png and /dev/null differ diff --git a/test/reference/huge-radial.ref.png b/test/reference/huge-radial.ref.png deleted file mode 100644 index 541bb30..0000000 Binary files a/test/reference/huge-radial.ref.png and /dev/null differ diff --git a/test/reference/image-bug-710072-aligned.base.argb32.ref.png b/test/reference/image-bug-710072-aligned.base.argb32.ref.png deleted file mode 100644 index 42abd20..0000000 Binary files a/test/reference/image-bug-710072-aligned.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/image-bug-710072-aligned.base.rgb24.ref.png b/test/reference/image-bug-710072-aligned.base.rgb24.ref.png deleted file mode 100644 index 42abd20..0000000 Binary files a/test/reference/image-bug-710072-aligned.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/image-bug-710072-aligned.ref.png b/test/reference/image-bug-710072-aligned.ref.png deleted file mode 100644 index 42abd20..0000000 Binary files a/test/reference/image-bug-710072-aligned.ref.png and /dev/null differ diff --git a/test/reference/image-bug-710072-unaligned.base.argb32.ref.png b/test/reference/image-bug-710072-unaligned.base.argb32.ref.png deleted file mode 100644 index 0a5a6e6..0000000 Binary files a/test/reference/image-bug-710072-unaligned.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/image-bug-710072-unaligned.base.rgb24.ref.png b/test/reference/image-bug-710072-unaligned.base.rgb24.ref.png deleted file mode 100644 index 0a5a6e6..0000000 Binary files a/test/reference/image-bug-710072-unaligned.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/image-bug-710072-unaligned.ref.png b/test/reference/image-bug-710072-unaligned.ref.png deleted file mode 100644 index 13efa30..0000000 Binary files a/test/reference/image-bug-710072-unaligned.ref.png and /dev/null differ diff --git a/test/reference/image-bug-710072-unaligned.traps.argb32.ref.png b/test/reference/image-bug-710072-unaligned.traps.argb32.ref.png deleted file mode 100644 index 0a5a6e6..0000000 Binary files a/test/reference/image-bug-710072-unaligned.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/image-bug-710072-unaligned.traps.rgb24.ref.png b/test/reference/image-bug-710072-unaligned.traps.rgb24.ref.png deleted file mode 100644 index 0a5a6e6..0000000 Binary files a/test/reference/image-bug-710072-unaligned.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/image-bug-710072-unaligned.xlib-fallback.rgb24.ref.png b/test/reference/image-bug-710072-unaligned.xlib-fallback.rgb24.ref.png deleted file mode 100644 index 0a5a6e6..0000000 Binary files a/test/reference/image-bug-710072-unaligned.xlib-fallback.rgb24.ref.png and /dev/null differ diff --git a/test/reference/image-bug-710072-unaligned.xlib-window.rgb24.ref.png b/test/reference/image-bug-710072-unaligned.xlib-window.rgb24.ref.png deleted file mode 100644 index 0a5a6e6..0000000 Binary files a/test/reference/image-bug-710072-unaligned.xlib-window.rgb24.ref.png and /dev/null differ diff --git a/test/reference/image-surface-source.base.argb32.ref.png b/test/reference/image-surface-source.base.argb32.ref.png deleted file mode 100644 index 0182972..0000000 Binary files a/test/reference/image-surface-source.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/image-surface-source.base.rgb24.ref.png b/test/reference/image-surface-source.base.rgb24.ref.png deleted file mode 100644 index 0d68a82..0000000 Binary files a/test/reference/image-surface-source.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/image-surface-source.image16.ref.png b/test/reference/image-surface-source.image16.ref.png deleted file mode 100644 index 2a7460e..0000000 Binary files a/test/reference/image-surface-source.image16.ref.png and /dev/null differ diff --git a/test/reference/image-surface-source.ps2.ref.png b/test/reference/image-surface-source.ps2.ref.png deleted file mode 100644 index 1023158..0000000 Binary files a/test/reference/image-surface-source.ps2.ref.png and /dev/null differ diff --git a/test/reference/image-surface-source.ps3.ref.png b/test/reference/image-surface-source.ps3.ref.png deleted file mode 100644 index 1023158..0000000 Binary files a/test/reference/image-surface-source.ps3.ref.png and /dev/null differ diff --git a/test/reference/image-surface-source.ref.png b/test/reference/image-surface-source.ref.png deleted file mode 100644 index 0182972..0000000 Binary files a/test/reference/image-surface-source.ref.png and /dev/null differ diff --git a/test/reference/image-surface-source.svg12.argb32.xfail.png b/test/reference/image-surface-source.svg12.argb32.xfail.png deleted file mode 100644 index 6ebcaf9..0000000 Binary files a/test/reference/image-surface-source.svg12.argb32.xfail.png and /dev/null differ diff --git a/test/reference/image-surface-source.svg12.rgb24.xfail.png b/test/reference/image-surface-source.svg12.rgb24.xfail.png deleted file mode 100644 index 6ebcaf9..0000000 Binary files a/test/reference/image-surface-source.svg12.rgb24.xfail.png and /dev/null differ diff --git a/test/reference/implicit-close.base.argb32.ref.png b/test/reference/implicit-close.base.argb32.ref.png deleted file mode 100644 index fdd7561..0000000 Binary files a/test/reference/implicit-close.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/implicit-close.base.rgb24.ref.png b/test/reference/implicit-close.base.rgb24.ref.png deleted file mode 100644 index fdd7561..0000000 Binary files a/test/reference/implicit-close.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/implicit-close.ps.ref.png b/test/reference/implicit-close.ps.ref.png deleted file mode 100644 index 66baf24..0000000 Binary files a/test/reference/implicit-close.ps.ref.png and /dev/null differ diff --git a/test/reference/implicit-close.ref.png b/test/reference/implicit-close.ref.png deleted file mode 100644 index f15f8a3..0000000 Binary files a/test/reference/implicit-close.ref.png and /dev/null differ diff --git a/test/reference/implicit-close.traps.argb32.ref.png b/test/reference/implicit-close.traps.argb32.ref.png deleted file mode 100644 index fdd7561..0000000 Binary files a/test/reference/implicit-close.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/implicit-close.traps.rgb24.ref.png b/test/reference/implicit-close.traps.rgb24.ref.png deleted file mode 100644 index fdd7561..0000000 Binary files a/test/reference/implicit-close.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/infinite-join.base.argb32.ref.png b/test/reference/infinite-join.base.argb32.ref.png deleted file mode 100644 index 9e7572b..0000000 Binary files a/test/reference/infinite-join.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/infinite-join.base.rgb24.ref.png b/test/reference/infinite-join.base.rgb24.ref.png deleted file mode 100644 index 9e7572b..0000000 Binary files a/test/reference/infinite-join.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/infinite-join.ps2.ref.png b/test/reference/infinite-join.ps2.ref.png deleted file mode 100644 index 6fba8f4..0000000 Binary files a/test/reference/infinite-join.ps2.ref.png and /dev/null differ diff --git a/test/reference/infinite-join.ps3.ref.png b/test/reference/infinite-join.ps3.ref.png deleted file mode 100644 index 6fba8f4..0000000 Binary files a/test/reference/infinite-join.ps3.ref.png and /dev/null differ diff --git a/test/reference/infinite-join.ref.png b/test/reference/infinite-join.ref.png deleted file mode 100644 index 54a9112..0000000 Binary files a/test/reference/infinite-join.ref.png and /dev/null differ diff --git a/test/reference/infinite-join.traps.argb32.ref.png b/test/reference/infinite-join.traps.argb32.ref.png deleted file mode 100644 index 9e7572b..0000000 Binary files a/test/reference/infinite-join.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/infinite-join.traps.rgb24.ref.png b/test/reference/infinite-join.traps.rgb24.ref.png deleted file mode 100644 index 9e7572b..0000000 Binary files a/test/reference/infinite-join.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/inverse-text.base.argb32.ref.png b/test/reference/inverse-text.base.argb32.ref.png deleted file mode 100644 index b7bbb97..0000000 Binary files a/test/reference/inverse-text.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/inverse-text.base.rgb24.ref.png b/test/reference/inverse-text.base.rgb24.ref.png deleted file mode 100644 index b7bbb97..0000000 Binary files a/test/reference/inverse-text.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/inverse-text.mask.argb32.ref.png b/test/reference/inverse-text.mask.argb32.ref.png deleted file mode 100644 index b7bbb97..0000000 Binary files a/test/reference/inverse-text.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/inverse-text.mask.rgb24.ref.png b/test/reference/inverse-text.mask.rgb24.ref.png deleted file mode 100644 index b7bbb97..0000000 Binary files a/test/reference/inverse-text.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/inverse-text.ref.png b/test/reference/inverse-text.ref.png deleted file mode 100644 index b7bbb97..0000000 Binary files a/test/reference/inverse-text.ref.png and /dev/null differ diff --git a/test/reference/inverse-text.traps.ref.png b/test/reference/inverse-text.traps.ref.png deleted file mode 100644 index b7bbb97..0000000 Binary files a/test/reference/inverse-text.traps.ref.png and /dev/null differ diff --git a/test/reference/inverted-clip.argb32.ref.png b/test/reference/inverted-clip.argb32.ref.png deleted file mode 100644 index f97d377..0000000 Binary files a/test/reference/inverted-clip.argb32.ref.png and /dev/null differ diff --git a/test/reference/inverted-clip.base.xfail.png b/test/reference/inverted-clip.base.xfail.png deleted file mode 100644 index 080b782..0000000 Binary files a/test/reference/inverted-clip.base.xfail.png and /dev/null differ diff --git a/test/reference/inverted-clip.rgb24.ref.png b/test/reference/inverted-clip.rgb24.ref.png deleted file mode 100644 index df945ec..0000000 Binary files a/test/reference/inverted-clip.rgb24.ref.png and /dev/null differ diff --git a/test/reference/inverted-clip.traps.xfail.png b/test/reference/inverted-clip.traps.xfail.png deleted file mode 100644 index 5962795..0000000 Binary files a/test/reference/inverted-clip.traps.xfail.png and /dev/null differ diff --git a/test/reference/inverted-clip.xfail.png b/test/reference/inverted-clip.xfail.png deleted file mode 100644 index 080b782..0000000 Binary files a/test/reference/inverted-clip.xfail.png and /dev/null differ diff --git a/test/reference/joins-loop.base.argb32.ref.png b/test/reference/joins-loop.base.argb32.ref.png deleted file mode 100644 index 95400df..0000000 Binary files a/test/reference/joins-loop.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/joins-loop.base.rgb24.ref.png b/test/reference/joins-loop.base.rgb24.ref.png deleted file mode 100644 index 95400df..0000000 Binary files a/test/reference/joins-loop.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/joins-loop.ref.png b/test/reference/joins-loop.ref.png deleted file mode 100644 index ecd6b23..0000000 Binary files a/test/reference/joins-loop.ref.png and /dev/null differ diff --git a/test/reference/joins-loop.traps.argb32.ref.png b/test/reference/joins-loop.traps.argb32.ref.png deleted file mode 100644 index 95400df..0000000 Binary files a/test/reference/joins-loop.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/joins-loop.traps.rgb24.ref.png b/test/reference/joins-loop.traps.rgb24.ref.png deleted file mode 100644 index 95400df..0000000 Binary files a/test/reference/joins-loop.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/joins-retrace.base.argb32.ref.png b/test/reference/joins-retrace.base.argb32.ref.png deleted file mode 100644 index efbf91a..0000000 Binary files a/test/reference/joins-retrace.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/joins-retrace.base.rgb24.ref.png b/test/reference/joins-retrace.base.rgb24.ref.png deleted file mode 100644 index efbf91a..0000000 Binary files a/test/reference/joins-retrace.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/joins-retrace.mask.argb32.ref.png b/test/reference/joins-retrace.mask.argb32.ref.png deleted file mode 100644 index 22b0ecf..0000000 Binary files a/test/reference/joins-retrace.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/joins-retrace.mask.rgb24.ref.png b/test/reference/joins-retrace.mask.rgb24.ref.png deleted file mode 100644 index 22b0ecf..0000000 Binary files a/test/reference/joins-retrace.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/joins-retrace.ref.png b/test/reference/joins-retrace.ref.png deleted file mode 100644 index c21c80a..0000000 Binary files a/test/reference/joins-retrace.ref.png and /dev/null differ diff --git a/test/reference/joins-retrace.traps.argb32.ref.png b/test/reference/joins-retrace.traps.argb32.ref.png deleted file mode 100644 index efbf91a..0000000 Binary files a/test/reference/joins-retrace.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/joins-retrace.traps.rgb24.ref.png b/test/reference/joins-retrace.traps.rgb24.ref.png deleted file mode 100644 index efbf91a..0000000 Binary files a/test/reference/joins-retrace.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/joins-star.base.argb32.ref.png b/test/reference/joins-star.base.argb32.ref.png deleted file mode 100644 index f1de705..0000000 Binary files a/test/reference/joins-star.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/joins-star.base.rgb24.ref.png b/test/reference/joins-star.base.rgb24.ref.png deleted file mode 100644 index f1de705..0000000 Binary files a/test/reference/joins-star.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/joins-star.ref.png b/test/reference/joins-star.ref.png deleted file mode 100644 index 6fea13e..0000000 Binary files a/test/reference/joins-star.ref.png and /dev/null differ diff --git a/test/reference/joins-star.traps.argb32.ref.png b/test/reference/joins-star.traps.argb32.ref.png deleted file mode 100644 index f1de705..0000000 Binary files a/test/reference/joins-star.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/joins-star.traps.rgb24.ref.png b/test/reference/joins-star.traps.rgb24.ref.png deleted file mode 100644 index f1de705..0000000 Binary files a/test/reference/joins-star.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/joins.base.argb32.ref.png b/test/reference/joins.base.argb32.ref.png deleted file mode 100644 index 0b190c2..0000000 Binary files a/test/reference/joins.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/joins.base.rgb24.ref.png b/test/reference/joins.base.rgb24.ref.png deleted file mode 100644 index 0b190c2..0000000 Binary files a/test/reference/joins.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/joins.image16.ref.png b/test/reference/joins.image16.ref.png deleted file mode 100644 index 57f9bb1..0000000 Binary files a/test/reference/joins.image16.ref.png and /dev/null differ diff --git a/test/reference/joins.mask.argb32.ref.png b/test/reference/joins.mask.argb32.ref.png deleted file mode 100644 index a1d069d..0000000 Binary files a/test/reference/joins.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/joins.mask.rgb24.ref.png b/test/reference/joins.mask.rgb24.ref.png deleted file mode 100644 index a1d069d..0000000 Binary files a/test/reference/joins.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/joins.ps.ref.png b/test/reference/joins.ps.ref.png deleted file mode 100644 index 0d5adea..0000000 Binary files a/test/reference/joins.ps.ref.png and /dev/null differ diff --git a/test/reference/joins.quartz.ref.png b/test/reference/joins.quartz.ref.png deleted file mode 100644 index 59b8fdb..0000000 Binary files a/test/reference/joins.quartz.ref.png and /dev/null differ diff --git a/test/reference/joins.ref.png b/test/reference/joins.ref.png deleted file mode 100644 index d1e34fe..0000000 Binary files a/test/reference/joins.ref.png and /dev/null differ diff --git a/test/reference/joins.traps.argb32.ref.png b/test/reference/joins.traps.argb32.ref.png deleted file mode 100644 index 0b190c2..0000000 Binary files a/test/reference/joins.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/joins.traps.rgb24.ref.png b/test/reference/joins.traps.rgb24.ref.png deleted file mode 100644 index 0b190c2..0000000 Binary files a/test/reference/joins.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/large-clip.base.argb32.ref.png b/test/reference/large-clip.base.argb32.ref.png deleted file mode 100644 index 3c3464b..0000000 Binary files a/test/reference/large-clip.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/large-clip.base.rgb24.ref.png b/test/reference/large-clip.base.rgb24.ref.png deleted file mode 100644 index 3c3464b..0000000 Binary files a/test/reference/large-clip.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/large-clip.ref.png b/test/reference/large-clip.ref.png deleted file mode 100644 index 9e46d2d..0000000 Binary files a/test/reference/large-clip.ref.png and /dev/null differ diff --git a/test/reference/large-font.base.argb32.ref.png b/test/reference/large-font.base.argb32.ref.png deleted file mode 100644 index 503061a..0000000 Binary files a/test/reference/large-font.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/large-font.base.rgb24.ref.png b/test/reference/large-font.base.rgb24.ref.png deleted file mode 100644 index 503061a..0000000 Binary files a/test/reference/large-font.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/large-font.image16.ref.png b/test/reference/large-font.image16.ref.png deleted file mode 100644 index d5d11a5..0000000 Binary files a/test/reference/large-font.image16.ref.png and /dev/null differ diff --git a/test/reference/large-font.ref.png b/test/reference/large-font.ref.png deleted file mode 100644 index da5c431..0000000 Binary files a/test/reference/large-font.ref.png and /dev/null differ diff --git a/test/reference/large-source-roi.base.argb32.ref.png b/test/reference/large-source-roi.base.argb32.ref.png deleted file mode 100644 index 216a065..0000000 Binary files a/test/reference/large-source-roi.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/large-source-roi.base.rgb24.ref.png b/test/reference/large-source-roi.base.rgb24.ref.png deleted file mode 100644 index 216a065..0000000 Binary files a/test/reference/large-source-roi.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/large-source-roi.ref.png b/test/reference/large-source-roi.ref.png deleted file mode 100644 index b8dc8b1..0000000 Binary files a/test/reference/large-source-roi.ref.png and /dev/null differ diff --git a/test/reference/large-source.base.argb32.ref.png b/test/reference/large-source.base.argb32.ref.png deleted file mode 100644 index a54455f..0000000 Binary files a/test/reference/large-source.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/large-source.base.rgb24.ref.png b/test/reference/large-source.base.rgb24.ref.png deleted file mode 100644 index a54455f..0000000 Binary files a/test/reference/large-source.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/large-source.ref.png b/test/reference/large-source.ref.png deleted file mode 100644 index 5d96dd3..0000000 Binary files a/test/reference/large-source.ref.png and /dev/null differ diff --git a/test/reference/large-twin-antialias-mixed.base.argb32.ref.png b/test/reference/large-twin-antialias-mixed.base.argb32.ref.png deleted file mode 100644 index a0b265f..0000000 Binary files a/test/reference/large-twin-antialias-mixed.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/large-twin-antialias-mixed.base.rgb24.ref.png b/test/reference/large-twin-antialias-mixed.base.rgb24.ref.png deleted file mode 100644 index a0b265f..0000000 Binary files a/test/reference/large-twin-antialias-mixed.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/large-twin-antialias-mixed.image16.ref.png b/test/reference/large-twin-antialias-mixed.image16.ref.png deleted file mode 100644 index 93f071e..0000000 Binary files a/test/reference/large-twin-antialias-mixed.image16.ref.png and /dev/null differ diff --git a/test/reference/large-twin-antialias-mixed.ref.png b/test/reference/large-twin-antialias-mixed.ref.png deleted file mode 100644 index 73755ab..0000000 Binary files a/test/reference/large-twin-antialias-mixed.ref.png and /dev/null differ diff --git a/test/reference/large-twin-antialias-mixed.traps.argb32.ref.png b/test/reference/large-twin-antialias-mixed.traps.argb32.ref.png deleted file mode 100644 index a0b265f..0000000 Binary files a/test/reference/large-twin-antialias-mixed.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/large-twin-antialias-mixed.traps.rgb24.ref.png b/test/reference/large-twin-antialias-mixed.traps.rgb24.ref.png deleted file mode 100644 index a0b265f..0000000 Binary files a/test/reference/large-twin-antialias-mixed.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/leaky-dash.base.argb32.ref.png b/test/reference/leaky-dash.base.argb32.ref.png deleted file mode 100644 index 0973ece..0000000 Binary files a/test/reference/leaky-dash.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/leaky-dash.base.rgb24.ref.png b/test/reference/leaky-dash.base.rgb24.ref.png deleted file mode 100644 index 0973ece..0000000 Binary files a/test/reference/leaky-dash.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/leaky-dash.ps2.argb32.ref.png b/test/reference/leaky-dash.ps2.argb32.ref.png deleted file mode 100644 index 93b8640..0000000 Binary files a/test/reference/leaky-dash.ps2.argb32.ref.png and /dev/null differ diff --git a/test/reference/leaky-dash.ps2.rgb24.ref.png b/test/reference/leaky-dash.ps2.rgb24.ref.png deleted file mode 100644 index c11eb48..0000000 Binary files a/test/reference/leaky-dash.ps2.rgb24.ref.png and /dev/null differ diff --git a/test/reference/leaky-dash.ps3.argb32.ref.png b/test/reference/leaky-dash.ps3.argb32.ref.png deleted file mode 100644 index 93b8640..0000000 Binary files a/test/reference/leaky-dash.ps3.argb32.ref.png and /dev/null differ diff --git a/test/reference/leaky-dash.ps3.rgb24.ref.png b/test/reference/leaky-dash.ps3.rgb24.ref.png deleted file mode 100644 index c11eb48..0000000 Binary files a/test/reference/leaky-dash.ps3.rgb24.ref.png and /dev/null differ diff --git a/test/reference/leaky-dash.quartz.ref.png b/test/reference/leaky-dash.quartz.ref.png deleted file mode 100644 index 9692819..0000000 Binary files a/test/reference/leaky-dash.quartz.ref.png and /dev/null differ diff --git a/test/reference/leaky-dash.ref.png b/test/reference/leaky-dash.ref.png deleted file mode 100644 index 87facc5..0000000 Binary files a/test/reference/leaky-dash.ref.png and /dev/null differ diff --git a/test/reference/leaky-dashed-rectangle.base.argb32.ref.png b/test/reference/leaky-dashed-rectangle.base.argb32.ref.png deleted file mode 100644 index de35420..0000000 Binary files a/test/reference/leaky-dashed-rectangle.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/leaky-dashed-rectangle.base.rgb24.ref.png b/test/reference/leaky-dashed-rectangle.base.rgb24.ref.png deleted file mode 100644 index de35420..0000000 Binary files a/test/reference/leaky-dashed-rectangle.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/leaky-dashed-rectangle.image16.ref.png b/test/reference/leaky-dashed-rectangle.image16.ref.png deleted file mode 100644 index f61db4c..0000000 Binary files a/test/reference/leaky-dashed-rectangle.image16.ref.png and /dev/null differ diff --git a/test/reference/leaky-dashed-rectangle.pdf.ref.png b/test/reference/leaky-dashed-rectangle.pdf.ref.png deleted file mode 100644 index 72efd49..0000000 Binary files a/test/reference/leaky-dashed-rectangle.pdf.ref.png and /dev/null differ diff --git a/test/reference/leaky-dashed-rectangle.ps.ref.png b/test/reference/leaky-dashed-rectangle.ps.ref.png deleted file mode 100644 index 1e0a138..0000000 Binary files a/test/reference/leaky-dashed-rectangle.ps.ref.png and /dev/null differ diff --git a/test/reference/leaky-dashed-rectangle.quartz.ref.png b/test/reference/leaky-dashed-rectangle.quartz.ref.png deleted file mode 100644 index fad8588..0000000 Binary files a/test/reference/leaky-dashed-rectangle.quartz.ref.png and /dev/null differ diff --git a/test/reference/leaky-dashed-rectangle.ref.png b/test/reference/leaky-dashed-rectangle.ref.png deleted file mode 100644 index 05f4584..0000000 Binary files a/test/reference/leaky-dashed-rectangle.ref.png and /dev/null differ diff --git a/test/reference/leaky-dashed-rectangle.traps.argb32.ref.png b/test/reference/leaky-dashed-rectangle.traps.argb32.ref.png deleted file mode 100644 index de35420..0000000 Binary files a/test/reference/leaky-dashed-rectangle.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/leaky-dashed-rectangle.traps.rgb24.ref.png b/test/reference/leaky-dashed-rectangle.traps.rgb24.ref.png deleted file mode 100644 index de35420..0000000 Binary files a/test/reference/leaky-dashed-rectangle.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/leaky-dashed-stroke.base.argb32.ref.png b/test/reference/leaky-dashed-stroke.base.argb32.ref.png deleted file mode 100644 index da6807f..0000000 Binary files a/test/reference/leaky-dashed-stroke.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/leaky-dashed-stroke.base.rgb24.ref.png b/test/reference/leaky-dashed-stroke.base.rgb24.ref.png deleted file mode 100644 index da6807f..0000000 Binary files a/test/reference/leaky-dashed-stroke.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/leaky-dashed-stroke.image16.ref.png b/test/reference/leaky-dashed-stroke.image16.ref.png deleted file mode 100644 index f90bb23..0000000 Binary files a/test/reference/leaky-dashed-stroke.image16.ref.png and /dev/null differ diff --git a/test/reference/leaky-dashed-stroke.ps.ref.png b/test/reference/leaky-dashed-stroke.ps.ref.png deleted file mode 100644 index 7d581e9..0000000 Binary files a/test/reference/leaky-dashed-stroke.ps.ref.png and /dev/null differ diff --git a/test/reference/leaky-dashed-stroke.quartz.ref.png b/test/reference/leaky-dashed-stroke.quartz.ref.png deleted file mode 100644 index adbfd61..0000000 Binary files a/test/reference/leaky-dashed-stroke.quartz.ref.png and /dev/null differ diff --git a/test/reference/leaky-dashed-stroke.ref.png b/test/reference/leaky-dashed-stroke.ref.png deleted file mode 100644 index 1b85692..0000000 Binary files a/test/reference/leaky-dashed-stroke.ref.png and /dev/null differ diff --git a/test/reference/leaky-dashed-stroke.traps.argb32.ref.png b/test/reference/leaky-dashed-stroke.traps.argb32.ref.png deleted file mode 100644 index da6807f..0000000 Binary files a/test/reference/leaky-dashed-stroke.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/leaky-dashed-stroke.traps.rgb24.ref.png b/test/reference/leaky-dashed-stroke.traps.rgb24.ref.png deleted file mode 100644 index da6807f..0000000 Binary files a/test/reference/leaky-dashed-stroke.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/leaky-polygon.base.argb32.ref.png b/test/reference/leaky-polygon.base.argb32.ref.png deleted file mode 100644 index 1cb7a3c..0000000 Binary files a/test/reference/leaky-polygon.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/leaky-polygon.base.rgb24.ref.png b/test/reference/leaky-polygon.base.rgb24.ref.png deleted file mode 100644 index 1cb7a3c..0000000 Binary files a/test/reference/leaky-polygon.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/leaky-polygon.image16.ref.png b/test/reference/leaky-polygon.image16.ref.png deleted file mode 100644 index e91d0fa..0000000 Binary files a/test/reference/leaky-polygon.image16.ref.png and /dev/null differ diff --git a/test/reference/leaky-polygon.ps.ref.png b/test/reference/leaky-polygon.ps.ref.png deleted file mode 100644 index dd8a104..0000000 Binary files a/test/reference/leaky-polygon.ps.ref.png and /dev/null differ diff --git a/test/reference/leaky-polygon.ref.png b/test/reference/leaky-polygon.ref.png deleted file mode 100644 index d2a06a3..0000000 Binary files a/test/reference/leaky-polygon.ref.png and /dev/null differ diff --git a/test/reference/leaky-polygon.traps.argb32.ref.png b/test/reference/leaky-polygon.traps.argb32.ref.png deleted file mode 100644 index 1cb7a3c..0000000 Binary files a/test/reference/leaky-polygon.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/leaky-polygon.traps.rgb24.ref.png b/test/reference/leaky-polygon.traps.rgb24.ref.png deleted file mode 100644 index 1cb7a3c..0000000 Binary files a/test/reference/leaky-polygon.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/line-width-large-overlap-dashed.base.argb32.ref.png b/test/reference/line-width-large-overlap-dashed.base.argb32.ref.png deleted file mode 100644 index e6cdcc2..0000000 Binary files a/test/reference/line-width-large-overlap-dashed.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/line-width-large-overlap-dashed.base.rgb24.ref.png b/test/reference/line-width-large-overlap-dashed.base.rgb24.ref.png deleted file mode 100644 index e6cdcc2..0000000 Binary files a/test/reference/line-width-large-overlap-dashed.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/line-width-large-overlap-dashed.mask.argb32.ref.png b/test/reference/line-width-large-overlap-dashed.mask.argb32.ref.png deleted file mode 100644 index 8cd4d31..0000000 Binary files a/test/reference/line-width-large-overlap-dashed.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/line-width-large-overlap-dashed.mask.rgb24.ref.png b/test/reference/line-width-large-overlap-dashed.mask.rgb24.ref.png deleted file mode 100644 index 8cd4d31..0000000 Binary files a/test/reference/line-width-large-overlap-dashed.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/line-width-large-overlap-dashed.ref.png b/test/reference/line-width-large-overlap-dashed.ref.png deleted file mode 100644 index 12379ac..0000000 Binary files a/test/reference/line-width-large-overlap-dashed.ref.png and /dev/null differ diff --git a/test/reference/line-width-large-overlap-dashed.traps.argb32.ref.png b/test/reference/line-width-large-overlap-dashed.traps.argb32.ref.png deleted file mode 100644 index 12379ac..0000000 Binary files a/test/reference/line-width-large-overlap-dashed.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/line-width-large-overlap-dashed.traps.rgb24.ref.png b/test/reference/line-width-large-overlap-dashed.traps.rgb24.ref.png deleted file mode 100644 index 12379ac..0000000 Binary files a/test/reference/line-width-large-overlap-dashed.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/line-width-large-overlap-flipped.base.argb32.ref.png b/test/reference/line-width-large-overlap-flipped.base.argb32.ref.png deleted file mode 100644 index 3c3464b..0000000 Binary files a/test/reference/line-width-large-overlap-flipped.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/line-width-large-overlap-flipped.base.rgb24.ref.png b/test/reference/line-width-large-overlap-flipped.base.rgb24.ref.png deleted file mode 100644 index 3c3464b..0000000 Binary files a/test/reference/line-width-large-overlap-flipped.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/line-width-large-overlap-flipped.ref.png b/test/reference/line-width-large-overlap-flipped.ref.png deleted file mode 100644 index 3c3464b..0000000 Binary files a/test/reference/line-width-large-overlap-flipped.ref.png and /dev/null differ diff --git a/test/reference/line-width-large-overlap-flopped.base.argb32.ref.png b/test/reference/line-width-large-overlap-flopped.base.argb32.ref.png deleted file mode 100644 index 3c3464b..0000000 Binary files a/test/reference/line-width-large-overlap-flopped.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/line-width-large-overlap-flopped.base.rgb24.ref.png b/test/reference/line-width-large-overlap-flopped.base.rgb24.ref.png deleted file mode 100644 index 3c3464b..0000000 Binary files a/test/reference/line-width-large-overlap-flopped.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/line-width-large-overlap-flopped.ref.png b/test/reference/line-width-large-overlap-flopped.ref.png deleted file mode 100644 index 3c3464b..0000000 Binary files a/test/reference/line-width-large-overlap-flopped.ref.png and /dev/null differ diff --git a/test/reference/line-width-large-overlap-offset.base.argb32.ref.png b/test/reference/line-width-large-overlap-offset.base.argb32.ref.png deleted file mode 100644 index 3c3464b..0000000 Binary files a/test/reference/line-width-large-overlap-offset.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/line-width-large-overlap-offset.base.rgb24.ref.png b/test/reference/line-width-large-overlap-offset.base.rgb24.ref.png deleted file mode 100644 index 3c3464b..0000000 Binary files a/test/reference/line-width-large-overlap-offset.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/line-width-large-overlap-offset.ref.png b/test/reference/line-width-large-overlap-offset.ref.png deleted file mode 100644 index 3c3464b..0000000 Binary files a/test/reference/line-width-large-overlap-offset.ref.png and /dev/null differ diff --git a/test/reference/line-width-large-overlap-rotated.base.argb32.ref.png b/test/reference/line-width-large-overlap-rotated.base.argb32.ref.png deleted file mode 100644 index 87fe752..0000000 Binary files a/test/reference/line-width-large-overlap-rotated.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/line-width-large-overlap-rotated.base.rgb24.ref.png b/test/reference/line-width-large-overlap-rotated.base.rgb24.ref.png deleted file mode 100644 index 87fe752..0000000 Binary files a/test/reference/line-width-large-overlap-rotated.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/line-width-large-overlap-rotated.ref.png b/test/reference/line-width-large-overlap-rotated.ref.png deleted file mode 100644 index 3eeebb2..0000000 Binary files a/test/reference/line-width-large-overlap-rotated.ref.png and /dev/null differ diff --git a/test/reference/line-width-large-overlap-rotated.traps.ref.png b/test/reference/line-width-large-overlap-rotated.traps.ref.png deleted file mode 100644 index 87fe752..0000000 Binary files a/test/reference/line-width-large-overlap-rotated.traps.ref.png and /dev/null differ diff --git a/test/reference/line-width-large-overlap.base.argb32.ref.png b/test/reference/line-width-large-overlap.base.argb32.ref.png deleted file mode 100644 index 3c3464b..0000000 Binary files a/test/reference/line-width-large-overlap.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/line-width-large-overlap.base.rgb24.ref.png b/test/reference/line-width-large-overlap.base.rgb24.ref.png deleted file mode 100644 index 3c3464b..0000000 Binary files a/test/reference/line-width-large-overlap.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/line-width-large-overlap.ref.png b/test/reference/line-width-large-overlap.ref.png deleted file mode 100644 index 3c3464b..0000000 Binary files a/test/reference/line-width-large-overlap.ref.png and /dev/null differ diff --git a/test/reference/line-width-overlap-dashed.base.argb32.ref.png b/test/reference/line-width-overlap-dashed.base.argb32.ref.png deleted file mode 100644 index 066b182..0000000 Binary files a/test/reference/line-width-overlap-dashed.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/line-width-overlap-dashed.base.rgb24.ref.png b/test/reference/line-width-overlap-dashed.base.rgb24.ref.png deleted file mode 100644 index 066b182..0000000 Binary files a/test/reference/line-width-overlap-dashed.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/line-width-overlap-dashed.mask.argb32.ref.png b/test/reference/line-width-overlap-dashed.mask.argb32.ref.png deleted file mode 100644 index 0de187d..0000000 Binary files a/test/reference/line-width-overlap-dashed.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/line-width-overlap-dashed.mask.rgb24.ref.png b/test/reference/line-width-overlap-dashed.mask.rgb24.ref.png deleted file mode 100644 index 0de187d..0000000 Binary files a/test/reference/line-width-overlap-dashed.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/line-width-overlap-dashed.ref.png b/test/reference/line-width-overlap-dashed.ref.png deleted file mode 100644 index 065d699..0000000 Binary files a/test/reference/line-width-overlap-dashed.ref.png and /dev/null differ diff --git a/test/reference/line-width-overlap-dashed.traps.argb32.ref.png b/test/reference/line-width-overlap-dashed.traps.argb32.ref.png deleted file mode 100644 index 065d699..0000000 Binary files a/test/reference/line-width-overlap-dashed.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/line-width-overlap-dashed.traps.rgb24.ref.png b/test/reference/line-width-overlap-dashed.traps.rgb24.ref.png deleted file mode 100644 index 065d699..0000000 Binary files a/test/reference/line-width-overlap-dashed.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/line-width-overlap-flipped.base.argb32.ref.png b/test/reference/line-width-overlap-flipped.base.argb32.ref.png deleted file mode 100644 index 13d70c8..0000000 Binary files a/test/reference/line-width-overlap-flipped.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/line-width-overlap-flipped.base.rgb24.ref.png b/test/reference/line-width-overlap-flipped.base.rgb24.ref.png deleted file mode 100644 index 13d70c8..0000000 Binary files a/test/reference/line-width-overlap-flipped.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/line-width-overlap-flipped.ref.png b/test/reference/line-width-overlap-flipped.ref.png deleted file mode 100644 index 09911bc..0000000 Binary files a/test/reference/line-width-overlap-flipped.ref.png and /dev/null differ diff --git a/test/reference/line-width-overlap-flopped.base.argb32.ref.png b/test/reference/line-width-overlap-flopped.base.argb32.ref.png deleted file mode 100644 index 13d70c8..0000000 Binary files a/test/reference/line-width-overlap-flopped.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/line-width-overlap-flopped.base.rgb24.ref.png b/test/reference/line-width-overlap-flopped.base.rgb24.ref.png deleted file mode 100644 index 13d70c8..0000000 Binary files a/test/reference/line-width-overlap-flopped.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/line-width-overlap-flopped.ref.png b/test/reference/line-width-overlap-flopped.ref.png deleted file mode 100644 index 09911bc..0000000 Binary files a/test/reference/line-width-overlap-flopped.ref.png and /dev/null differ diff --git a/test/reference/line-width-overlap-offset.base.argb32.ref.png b/test/reference/line-width-overlap-offset.base.argb32.ref.png deleted file mode 100644 index 13a138b..0000000 Binary files a/test/reference/line-width-overlap-offset.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/line-width-overlap-offset.base.rgb24.ref.png b/test/reference/line-width-overlap-offset.base.rgb24.ref.png deleted file mode 100644 index 13a138b..0000000 Binary files a/test/reference/line-width-overlap-offset.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/line-width-overlap-offset.ref.png b/test/reference/line-width-overlap-offset.ref.png deleted file mode 100644 index eafa50b..0000000 Binary files a/test/reference/line-width-overlap-offset.ref.png and /dev/null differ diff --git a/test/reference/line-width-overlap-offset.traps.ref.png b/test/reference/line-width-overlap-offset.traps.ref.png deleted file mode 100644 index 13a138b..0000000 Binary files a/test/reference/line-width-overlap-offset.traps.ref.png and /dev/null differ diff --git a/test/reference/line-width-overlap-rotated.base.argb32.ref.png b/test/reference/line-width-overlap-rotated.base.argb32.ref.png deleted file mode 100644 index fa7290d..0000000 Binary files a/test/reference/line-width-overlap-rotated.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/line-width-overlap-rotated.base.rgb24.ref.png b/test/reference/line-width-overlap-rotated.base.rgb24.ref.png deleted file mode 100644 index fa7290d..0000000 Binary files a/test/reference/line-width-overlap-rotated.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/line-width-overlap-rotated.ref.png b/test/reference/line-width-overlap-rotated.ref.png deleted file mode 100644 index cce46c7..0000000 Binary files a/test/reference/line-width-overlap-rotated.ref.png and /dev/null differ diff --git a/test/reference/line-width-overlap-rotated.traps.argb32.ref.png b/test/reference/line-width-overlap-rotated.traps.argb32.ref.png deleted file mode 100644 index fa7290d..0000000 Binary files a/test/reference/line-width-overlap-rotated.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/line-width-overlap-rotated.traps.rgb24.ref.png b/test/reference/line-width-overlap-rotated.traps.rgb24.ref.png deleted file mode 100644 index fa7290d..0000000 Binary files a/test/reference/line-width-overlap-rotated.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/line-width-overlap.base.argb32.ref.png b/test/reference/line-width-overlap.base.argb32.ref.png deleted file mode 100644 index 13d70c8..0000000 Binary files a/test/reference/line-width-overlap.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/line-width-overlap.base.rgb24.ref.png b/test/reference/line-width-overlap.base.rgb24.ref.png deleted file mode 100644 index 13d70c8..0000000 Binary files a/test/reference/line-width-overlap.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/line-width-overlap.ref.png b/test/reference/line-width-overlap.ref.png deleted file mode 100644 index 13d70c8..0000000 Binary files a/test/reference/line-width-overlap.ref.png and /dev/null differ diff --git a/test/reference/line-width-scale.base.argb32.ref.png b/test/reference/line-width-scale.base.argb32.ref.png deleted file mode 100644 index 41d55b0..0000000 Binary files a/test/reference/line-width-scale.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/line-width-scale.base.rgb24.ref.png b/test/reference/line-width-scale.base.rgb24.ref.png deleted file mode 100644 index 41d55b0..0000000 Binary files a/test/reference/line-width-scale.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/line-width-scale.image16.ref.png b/test/reference/line-width-scale.image16.ref.png deleted file mode 100644 index a784f65..0000000 Binary files a/test/reference/line-width-scale.image16.ref.png and /dev/null differ diff --git a/test/reference/line-width-scale.ps2.ref.png b/test/reference/line-width-scale.ps2.ref.png deleted file mode 100644 index 57999b8..0000000 Binary files a/test/reference/line-width-scale.ps2.ref.png and /dev/null differ diff --git a/test/reference/line-width-scale.ps3.ref.png b/test/reference/line-width-scale.ps3.ref.png deleted file mode 100644 index 57999b8..0000000 Binary files a/test/reference/line-width-scale.ps3.ref.png and /dev/null differ diff --git a/test/reference/line-width-scale.quartz.ref.png b/test/reference/line-width-scale.quartz.ref.png deleted file mode 100644 index afdc9da..0000000 Binary files a/test/reference/line-width-scale.quartz.ref.png and /dev/null differ diff --git a/test/reference/line-width-scale.ref.png b/test/reference/line-width-scale.ref.png deleted file mode 100644 index 5767bc7..0000000 Binary files a/test/reference/line-width-scale.ref.png and /dev/null differ diff --git a/test/reference/line-width-scale.traps.argb32.ref.png b/test/reference/line-width-scale.traps.argb32.ref.png deleted file mode 100644 index 41d55b0..0000000 Binary files a/test/reference/line-width-scale.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/line-width-scale.traps.rgb24.ref.png b/test/reference/line-width-scale.traps.rgb24.ref.png deleted file mode 100644 index 41d55b0..0000000 Binary files a/test/reference/line-width-scale.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/line-width-tolerance.base.argb32.ref.png b/test/reference/line-width-tolerance.base.argb32.ref.png deleted file mode 100644 index f890a52..0000000 Binary files a/test/reference/line-width-tolerance.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/line-width-tolerance.base.rgb24.ref.png b/test/reference/line-width-tolerance.base.rgb24.ref.png deleted file mode 100644 index f890a52..0000000 Binary files a/test/reference/line-width-tolerance.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/line-width-tolerance.ref.png b/test/reference/line-width-tolerance.ref.png deleted file mode 100644 index 9c4d439..0000000 Binary files a/test/reference/line-width-tolerance.ref.png and /dev/null differ diff --git a/test/reference/line-width-tolerance.traps.argb32.ref.png b/test/reference/line-width-tolerance.traps.argb32.ref.png deleted file mode 100644 index f890a52..0000000 Binary files a/test/reference/line-width-tolerance.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/line-width-tolerance.traps.rgb24.ref.png b/test/reference/line-width-tolerance.traps.rgb24.ref.png deleted file mode 100644 index f890a52..0000000 Binary files a/test/reference/line-width-tolerance.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/line-width.base.argb32.ref.png b/test/reference/line-width.base.argb32.ref.png deleted file mode 100644 index 208d170..0000000 Binary files a/test/reference/line-width.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/line-width.base.rgb24.ref.png b/test/reference/line-width.base.rgb24.ref.png deleted file mode 100644 index 208d170..0000000 Binary files a/test/reference/line-width.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/line-width.ref.png b/test/reference/line-width.ref.png deleted file mode 100644 index 2a78828..0000000 Binary files a/test/reference/line-width.ref.png and /dev/null differ diff --git a/test/reference/line-width.traps.argb32.ref.png b/test/reference/line-width.traps.argb32.ref.png deleted file mode 100644 index 208d170..0000000 Binary files a/test/reference/line-width.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/line-width.traps.rgb24.ref.png b/test/reference/line-width.traps.rgb24.ref.png deleted file mode 100644 index 208d170..0000000 Binary files a/test/reference/line-width.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/linear-gradient-extend.base.argb32.ref.png b/test/reference/linear-gradient-extend.base.argb32.ref.png deleted file mode 100644 index 79ce747..0000000 Binary files a/test/reference/linear-gradient-extend.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/linear-gradient-extend.base.rgb24.ref.png b/test/reference/linear-gradient-extend.base.rgb24.ref.png deleted file mode 100644 index 79ce747..0000000 Binary files a/test/reference/linear-gradient-extend.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/linear-gradient-extend.ref.png b/test/reference/linear-gradient-extend.ref.png deleted file mode 100644 index 79ce747..0000000 Binary files a/test/reference/linear-gradient-extend.ref.png and /dev/null differ diff --git a/test/reference/linear-gradient-large.base.argb32.ref.png b/test/reference/linear-gradient-large.base.argb32.ref.png deleted file mode 100644 index f1f37ab..0000000 Binary files a/test/reference/linear-gradient-large.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/linear-gradient-large.base.rgb24.ref.png b/test/reference/linear-gradient-large.base.rgb24.ref.png deleted file mode 100644 index f1f37ab..0000000 Binary files a/test/reference/linear-gradient-large.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/linear-gradient-large.quartz.ref.png b/test/reference/linear-gradient-large.quartz.ref.png deleted file mode 100644 index 68f0829..0000000 Binary files a/test/reference/linear-gradient-large.quartz.ref.png and /dev/null differ diff --git a/test/reference/linear-gradient-large.ref.png b/test/reference/linear-gradient-large.ref.png deleted file mode 100644 index f1f37ab..0000000 Binary files a/test/reference/linear-gradient-large.ref.png and /dev/null differ diff --git a/test/reference/linear-gradient-one-stop.base.argb32.ref.png b/test/reference/linear-gradient-one-stop.base.argb32.ref.png deleted file mode 100644 index da02fda..0000000 Binary files a/test/reference/linear-gradient-one-stop.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/linear-gradient-one-stop.base.rgb24.ref.png b/test/reference/linear-gradient-one-stop.base.rgb24.ref.png deleted file mode 100644 index efc12ee..0000000 Binary files a/test/reference/linear-gradient-one-stop.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/linear-gradient-one-stop.ref.png b/test/reference/linear-gradient-one-stop.ref.png deleted file mode 100644 index da02fda..0000000 Binary files a/test/reference/linear-gradient-one-stop.ref.png and /dev/null differ diff --git a/test/reference/linear-gradient-reflect.base.argb32.ref.png b/test/reference/linear-gradient-reflect.base.argb32.ref.png deleted file mode 100644 index b68dccb..0000000 Binary files a/test/reference/linear-gradient-reflect.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/linear-gradient-reflect.base.rgb24.ref.png b/test/reference/linear-gradient-reflect.base.rgb24.ref.png deleted file mode 100644 index b68dccb..0000000 Binary files a/test/reference/linear-gradient-reflect.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/linear-gradient-reflect.image16.ref.png b/test/reference/linear-gradient-reflect.image16.ref.png deleted file mode 100644 index de74afc..0000000 Binary files a/test/reference/linear-gradient-reflect.image16.ref.png and /dev/null differ diff --git a/test/reference/linear-gradient-reflect.pdf.argb32.ref.png b/test/reference/linear-gradient-reflect.pdf.argb32.ref.png deleted file mode 100644 index 46e1c0f..0000000 Binary files a/test/reference/linear-gradient-reflect.pdf.argb32.ref.png and /dev/null differ diff --git a/test/reference/linear-gradient-reflect.pdf.rgb24.ref.png b/test/reference/linear-gradient-reflect.pdf.rgb24.ref.png deleted file mode 100644 index 46e1c0f..0000000 Binary files a/test/reference/linear-gradient-reflect.pdf.rgb24.ref.png and /dev/null differ diff --git a/test/reference/linear-gradient-reflect.ps3.ref.png b/test/reference/linear-gradient-reflect.ps3.ref.png deleted file mode 100644 index ea6d25c..0000000 Binary files a/test/reference/linear-gradient-reflect.ps3.ref.png and /dev/null differ diff --git a/test/reference/linear-gradient-reflect.quartz.ref.png b/test/reference/linear-gradient-reflect.quartz.ref.png deleted file mode 100644 index 89bac91..0000000 Binary files a/test/reference/linear-gradient-reflect.quartz.ref.png and /dev/null differ diff --git a/test/reference/linear-gradient-reflect.ref.png b/test/reference/linear-gradient-reflect.ref.png deleted file mode 100644 index b68dccb..0000000 Binary files a/test/reference/linear-gradient-reflect.ref.png and /dev/null differ diff --git a/test/reference/linear-gradient-subset.base.argb32.ref.png b/test/reference/linear-gradient-subset.base.argb32.ref.png deleted file mode 100644 index e03d3d6..0000000 Binary files a/test/reference/linear-gradient-subset.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/linear-gradient-subset.base.rgb24.ref.png b/test/reference/linear-gradient-subset.base.rgb24.ref.png deleted file mode 100644 index e03d3d6..0000000 Binary files a/test/reference/linear-gradient-subset.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/linear-gradient-subset.image16.ref.png b/test/reference/linear-gradient-subset.image16.ref.png deleted file mode 100644 index 9d04057..0000000 Binary files a/test/reference/linear-gradient-subset.image16.ref.png and /dev/null differ diff --git a/test/reference/linear-gradient-subset.ps3.ref.png b/test/reference/linear-gradient-subset.ps3.ref.png deleted file mode 100644 index db0a4c0..0000000 Binary files a/test/reference/linear-gradient-subset.ps3.ref.png and /dev/null differ diff --git a/test/reference/linear-gradient-subset.quartz.ref.png b/test/reference/linear-gradient-subset.quartz.ref.png deleted file mode 100644 index 85d80ad..0000000 Binary files a/test/reference/linear-gradient-subset.quartz.ref.png and /dev/null differ diff --git a/test/reference/linear-gradient-subset.ref.png b/test/reference/linear-gradient-subset.ref.png deleted file mode 100644 index 8e95d10..0000000 Binary files a/test/reference/linear-gradient-subset.ref.png and /dev/null differ diff --git a/test/reference/linear-gradient-subset.traps.argb32.ref.png b/test/reference/linear-gradient-subset.traps.argb32.ref.png deleted file mode 100644 index e03d3d6..0000000 Binary files a/test/reference/linear-gradient-subset.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/linear-gradient-subset.traps.rgb24.ref.png b/test/reference/linear-gradient-subset.traps.rgb24.ref.png deleted file mode 100644 index e03d3d6..0000000 Binary files a/test/reference/linear-gradient-subset.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/linear-gradient.base.argb32.ref.png b/test/reference/linear-gradient.base.argb32.ref.png deleted file mode 100644 index 083a9b8..0000000 Binary files a/test/reference/linear-gradient.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/linear-gradient.base.rgb24.ref.png b/test/reference/linear-gradient.base.rgb24.ref.png deleted file mode 100644 index 083a9b8..0000000 Binary files a/test/reference/linear-gradient.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/linear-gradient.image16.ref.png b/test/reference/linear-gradient.image16.ref.png deleted file mode 100644 index 183d3d9..0000000 Binary files a/test/reference/linear-gradient.image16.ref.png and /dev/null differ diff --git a/test/reference/linear-gradient.ps3.ref.png b/test/reference/linear-gradient.ps3.ref.png deleted file mode 100644 index c2fa71b..0000000 Binary files a/test/reference/linear-gradient.ps3.ref.png and /dev/null differ diff --git a/test/reference/linear-gradient.quartz.ref.png b/test/reference/linear-gradient.quartz.ref.png deleted file mode 100644 index 1c3e7c2..0000000 Binary files a/test/reference/linear-gradient.quartz.ref.png and /dev/null differ diff --git a/test/reference/linear-gradient.ref.png b/test/reference/linear-gradient.ref.png deleted file mode 100644 index 32c99a4..0000000 Binary files a/test/reference/linear-gradient.ref.png and /dev/null differ diff --git a/test/reference/linear-gradient.traps.argb32.ref.png b/test/reference/linear-gradient.traps.argb32.ref.png deleted file mode 100644 index 083a9b8..0000000 Binary files a/test/reference/linear-gradient.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/linear-gradient.traps.rgb24.ref.png b/test/reference/linear-gradient.traps.rgb24.ref.png deleted file mode 100644 index 083a9b8..0000000 Binary files a/test/reference/linear-gradient.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/linear-step-function.base.argb32.ref.png b/test/reference/linear-step-function.base.argb32.ref.png deleted file mode 100644 index 0ed126e..0000000 Binary files a/test/reference/linear-step-function.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/linear-step-function.base.rgb24.ref.png b/test/reference/linear-step-function.base.rgb24.ref.png deleted file mode 100644 index 0ed126e..0000000 Binary files a/test/reference/linear-step-function.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/linear-step-function.mask.argb32.ref.png b/test/reference/linear-step-function.mask.argb32.ref.png deleted file mode 100644 index 0ed126e..0000000 Binary files a/test/reference/linear-step-function.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/linear-step-function.mask.rgb24.ref.png b/test/reference/linear-step-function.mask.rgb24.ref.png deleted file mode 100644 index 0ed126e..0000000 Binary files a/test/reference/linear-step-function.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/linear-step-function.traps.argb32.ref.png b/test/reference/linear-step-function.traps.argb32.ref.png deleted file mode 100644 index 0ed126e..0000000 Binary files a/test/reference/linear-step-function.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/linear-step-function.traps.rgb24.ref.png b/test/reference/linear-step-function.traps.rgb24.ref.png deleted file mode 100644 index 0ed126e..0000000 Binary files a/test/reference/linear-step-function.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/linear-step-function.xfail.png b/test/reference/linear-step-function.xfail.png deleted file mode 100644 index b8afd21..0000000 Binary files a/test/reference/linear-step-function.xfail.png and /dev/null differ diff --git a/test/reference/linear-uniform.base.argb32.ref.png b/test/reference/linear-uniform.base.argb32.ref.png deleted file mode 100644 index 94ca336..0000000 Binary files a/test/reference/linear-uniform.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/linear-uniform.base.rgb24.ref.png b/test/reference/linear-uniform.base.rgb24.ref.png deleted file mode 100644 index 94ca336..0000000 Binary files a/test/reference/linear-uniform.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/linear-uniform.image16.ref.png b/test/reference/linear-uniform.image16.ref.png deleted file mode 100644 index 7bf4bf5..0000000 Binary files a/test/reference/linear-uniform.image16.ref.png and /dev/null differ diff --git a/test/reference/linear-uniform.ref.png b/test/reference/linear-uniform.ref.png deleted file mode 100644 index 94ca336..0000000 Binary files a/test/reference/linear-uniform.ref.png and /dev/null differ diff --git a/test/reference/long-dashed-lines.base.argb32.ref.png b/test/reference/long-dashed-lines.base.argb32.ref.png deleted file mode 100644 index ccd3d5d..0000000 Binary files a/test/reference/long-dashed-lines.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/long-dashed-lines.base.rgb24.ref.png b/test/reference/long-dashed-lines.base.rgb24.ref.png deleted file mode 100644 index ccd3d5d..0000000 Binary files a/test/reference/long-dashed-lines.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/long-dashed-lines.image16.ref.png b/test/reference/long-dashed-lines.image16.ref.png deleted file mode 100644 index 8abac9b..0000000 Binary files a/test/reference/long-dashed-lines.image16.ref.png and /dev/null differ diff --git a/test/reference/long-dashed-lines.ps2.ref.png b/test/reference/long-dashed-lines.ps2.ref.png deleted file mode 100644 index 7fce667..0000000 Binary files a/test/reference/long-dashed-lines.ps2.ref.png and /dev/null differ diff --git a/test/reference/long-dashed-lines.ps3.ref.png b/test/reference/long-dashed-lines.ps3.ref.png deleted file mode 100644 index 7fce667..0000000 Binary files a/test/reference/long-dashed-lines.ps3.ref.png and /dev/null differ diff --git a/test/reference/long-dashed-lines.quartz.ref.png b/test/reference/long-dashed-lines.quartz.ref.png deleted file mode 100644 index 3f68d21..0000000 Binary files a/test/reference/long-dashed-lines.quartz.ref.png and /dev/null differ diff --git a/test/reference/long-dashed-lines.ref.png b/test/reference/long-dashed-lines.ref.png deleted file mode 100644 index 9c7208c..0000000 Binary files a/test/reference/long-dashed-lines.ref.png and /dev/null differ diff --git a/test/reference/long-dashed-lines.traps.argb32.ref.png b/test/reference/long-dashed-lines.traps.argb32.ref.png deleted file mode 100644 index ccd3d5d..0000000 Binary files a/test/reference/long-dashed-lines.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/long-dashed-lines.traps.rgb24.ref.png b/test/reference/long-dashed-lines.traps.rgb24.ref.png deleted file mode 100644 index ccd3d5d..0000000 Binary files a/test/reference/long-dashed-lines.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/long-lines.base.argb32.ref.png b/test/reference/long-lines.base.argb32.ref.png deleted file mode 100644 index fe91163..0000000 Binary files a/test/reference/long-lines.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/long-lines.base.rgb24.ref.png b/test/reference/long-lines.base.rgb24.ref.png deleted file mode 100644 index fe91163..0000000 Binary files a/test/reference/long-lines.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/long-lines.mask.argb32.ref.png b/test/reference/long-lines.mask.argb32.ref.png deleted file mode 100644 index fe91163..0000000 Binary files a/test/reference/long-lines.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/long-lines.mask.rgb24.ref.png b/test/reference/long-lines.mask.rgb24.ref.png deleted file mode 100644 index fe91163..0000000 Binary files a/test/reference/long-lines.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/long-lines.traps.argb32.ref.png b/test/reference/long-lines.traps.argb32.ref.png deleted file mode 100644 index fe91163..0000000 Binary files a/test/reference/long-lines.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/long-lines.traps.rgb24.ref.png b/test/reference/long-lines.traps.rgb24.ref.png deleted file mode 100644 index fe91163..0000000 Binary files a/test/reference/long-lines.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/map-all-to-image.base.argb32.ref.png b/test/reference/map-all-to-image.base.argb32.ref.png deleted file mode 100644 index c56d969..0000000 Binary files a/test/reference/map-all-to-image.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/map-all-to-image.base.rgb24.ref.png b/test/reference/map-all-to-image.base.rgb24.ref.png deleted file mode 100644 index c56d969..0000000 Binary files a/test/reference/map-all-to-image.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/map-all-to-image.ref.png b/test/reference/map-all-to-image.ref.png deleted file mode 100644 index c56d969..0000000 Binary files a/test/reference/map-all-to-image.ref.png and /dev/null differ diff --git a/test/reference/map-all-to-xlib-fallback.rgb24.ref.png b/test/reference/map-all-to-xlib-fallback.rgb24.ref.png deleted file mode 100644 index c56d969..0000000 Binary files a/test/reference/map-all-to-xlib-fallback.rgb24.ref.png and /dev/null differ diff --git a/test/reference/map-all-to-xlib-window.rgb24.ref.png b/test/reference/map-all-to-xlib-window.rgb24.ref.png deleted file mode 100644 index c56d969..0000000 Binary files a/test/reference/map-all-to-xlib-window.rgb24.ref.png and /dev/null differ diff --git a/test/reference/map-all-to-xlib.ref.png b/test/reference/map-all-to-xlib.ref.png deleted file mode 100644 index c56d969..0000000 Binary files a/test/reference/map-all-to-xlib.ref.png and /dev/null differ diff --git a/test/reference/map-bit-to-image.base.argb32.ref.png b/test/reference/map-bit-to-image.base.argb32.ref.png deleted file mode 100644 index b42dcb6..0000000 Binary files a/test/reference/map-bit-to-image.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/map-bit-to-image.base.rgb24.ref.png b/test/reference/map-bit-to-image.base.rgb24.ref.png deleted file mode 100644 index b42dcb6..0000000 Binary files a/test/reference/map-bit-to-image.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/map-bit-to-image.ref.png b/test/reference/map-bit-to-image.ref.png deleted file mode 100644 index b42dcb6..0000000 Binary files a/test/reference/map-bit-to-image.ref.png and /dev/null differ diff --git a/test/reference/map-bit-to-xlib-fallback.rgb24.ref.png b/test/reference/map-bit-to-xlib-fallback.rgb24.ref.png deleted file mode 100644 index b42dcb6..0000000 Binary files a/test/reference/map-bit-to-xlib-fallback.rgb24.ref.png and /dev/null differ diff --git a/test/reference/map-bit-to-xlib-window.rgb24.ref.png b/test/reference/map-bit-to-xlib-window.rgb24.ref.png deleted file mode 100644 index b42dcb6..0000000 Binary files a/test/reference/map-bit-to-xlib-window.rgb24.ref.png and /dev/null differ diff --git a/test/reference/map-bit-to-xlib.ref.png b/test/reference/map-bit-to-xlib.ref.png deleted file mode 100644 index b42dcb6..0000000 Binary files a/test/reference/map-bit-to-xlib.ref.png and /dev/null differ diff --git a/test/reference/map-to-image-fill.base.argb32.ref.png b/test/reference/map-to-image-fill.base.argb32.ref.png deleted file mode 100644 index c2893e0..0000000 Binary files a/test/reference/map-to-image-fill.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/map-to-image-fill.base.rgb24.ref.png b/test/reference/map-to-image-fill.base.rgb24.ref.png deleted file mode 100644 index c2893e0..0000000 Binary files a/test/reference/map-to-image-fill.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/map-to-image-fill.ref.png b/test/reference/map-to-image-fill.ref.png deleted file mode 100644 index c2893e0..0000000 Binary files a/test/reference/map-to-image-fill.ref.png and /dev/null differ diff --git a/test/reference/mask-alpha.argb32.ref.png b/test/reference/mask-alpha.argb32.ref.png deleted file mode 100644 index 90717f0..0000000 Binary files a/test/reference/mask-alpha.argb32.ref.png and /dev/null differ diff --git a/test/reference/mask-alpha.base.argb32.ref.png b/test/reference/mask-alpha.base.argb32.ref.png deleted file mode 100644 index a0b9017..0000000 Binary files a/test/reference/mask-alpha.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/mask-alpha.base.rgb24.ref.png b/test/reference/mask-alpha.base.rgb24.ref.png deleted file mode 100644 index d8f4b8f..0000000 Binary files a/test/reference/mask-alpha.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/mask-alpha.image16.ref.png b/test/reference/mask-alpha.image16.ref.png deleted file mode 100644 index dbf121a..0000000 Binary files a/test/reference/mask-alpha.image16.ref.png and /dev/null differ diff --git a/test/reference/mask-alpha.ps.ref.png b/test/reference/mask-alpha.ps.ref.png deleted file mode 100644 index b0058dd..0000000 Binary files a/test/reference/mask-alpha.ps.ref.png and /dev/null differ diff --git a/test/reference/mask-alpha.quartz.argb32.ref.png b/test/reference/mask-alpha.quartz.argb32.ref.png deleted file mode 100644 index 1d530ee..0000000 Binary files a/test/reference/mask-alpha.quartz.argb32.ref.png and /dev/null differ diff --git a/test/reference/mask-alpha.rgb24.ref.png b/test/reference/mask-alpha.rgb24.ref.png deleted file mode 100644 index 9999b8a..0000000 Binary files a/test/reference/mask-alpha.rgb24.ref.png and /dev/null differ diff --git a/test/reference/mask-alpha.svg.rgb24.xfail.png b/test/reference/mask-alpha.svg.rgb24.xfail.png deleted file mode 100644 index 15ebf75..0000000 Binary files a/test/reference/mask-alpha.svg.rgb24.xfail.png and /dev/null differ diff --git a/test/reference/mask-alpha.traps.argb32.ref.png b/test/reference/mask-alpha.traps.argb32.ref.png deleted file mode 100644 index a0b9017..0000000 Binary files a/test/reference/mask-alpha.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/mask-alpha.traps.rgb24.ref.png b/test/reference/mask-alpha.traps.rgb24.ref.png deleted file mode 100644 index d8f4b8f..0000000 Binary files a/test/reference/mask-alpha.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/mask-ctm.base.argb32.ref.png b/test/reference/mask-ctm.base.argb32.ref.png deleted file mode 100644 index 07d903d..0000000 Binary files a/test/reference/mask-ctm.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/mask-ctm.base.rgb24.ref.png b/test/reference/mask-ctm.base.rgb24.ref.png deleted file mode 100644 index de3fa09..0000000 Binary files a/test/reference/mask-ctm.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/mask-ctm.ref.png b/test/reference/mask-ctm.ref.png deleted file mode 100644 index 88a0402..0000000 Binary files a/test/reference/mask-ctm.ref.png and /dev/null differ diff --git a/test/reference/mask-glyphs.gl.ref.png b/test/reference/mask-glyphs.gl.ref.png deleted file mode 100644 index d341097..0000000 Binary files a/test/reference/mask-glyphs.gl.ref.png and /dev/null differ diff --git a/test/reference/mask-glyphs.image16.ref.png b/test/reference/mask-glyphs.image16.ref.png deleted file mode 100644 index 177e795..0000000 Binary files a/test/reference/mask-glyphs.image16.ref.png and /dev/null differ diff --git a/test/reference/mask-glyphs.pdf.ref.png b/test/reference/mask-glyphs.pdf.ref.png deleted file mode 100644 index 673ef92..0000000 Binary files a/test/reference/mask-glyphs.pdf.ref.png and /dev/null differ diff --git a/test/reference/mask-glyphs.ref.png b/test/reference/mask-glyphs.ref.png deleted file mode 100644 index 5beda0d..0000000 Binary files a/test/reference/mask-glyphs.ref.png and /dev/null differ diff --git a/test/reference/mask-glyphs.svg.ref.png b/test/reference/mask-glyphs.svg.ref.png deleted file mode 100644 index bbc44f2..0000000 Binary files a/test/reference/mask-glyphs.svg.ref.png and /dev/null differ diff --git a/test/reference/mask-surface-ctm.base.argb32.ref.png b/test/reference/mask-surface-ctm.base.argb32.ref.png deleted file mode 100644 index 07d903d..0000000 Binary files a/test/reference/mask-surface-ctm.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/mask-surface-ctm.base.rgb24.ref.png b/test/reference/mask-surface-ctm.base.rgb24.ref.png deleted file mode 100644 index de3fa09..0000000 Binary files a/test/reference/mask-surface-ctm.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/mask-surface-ctm.ref.png b/test/reference/mask-surface-ctm.ref.png deleted file mode 100644 index 744b1dd..0000000 Binary files a/test/reference/mask-surface-ctm.ref.png and /dev/null differ diff --git a/test/reference/mask-transformed-image.base.argb32.ref.png b/test/reference/mask-transformed-image.base.argb32.ref.png deleted file mode 100644 index af84b39..0000000 Binary files a/test/reference/mask-transformed-image.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/mask-transformed-image.base.rgb24.ref.png b/test/reference/mask-transformed-image.base.rgb24.ref.png deleted file mode 100644 index af84b39..0000000 Binary files a/test/reference/mask-transformed-image.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/mask-transformed-image.image16.ref.png b/test/reference/mask-transformed-image.image16.ref.png deleted file mode 100644 index 9e196ef..0000000 Binary files a/test/reference/mask-transformed-image.image16.ref.png and /dev/null differ diff --git a/test/reference/mask-transformed-image.pdf.ref.png b/test/reference/mask-transformed-image.pdf.ref.png deleted file mode 100644 index 33ec279..0000000 Binary files a/test/reference/mask-transformed-image.pdf.ref.png and /dev/null differ diff --git a/test/reference/mask-transformed-image.quartz.ref.png b/test/reference/mask-transformed-image.quartz.ref.png deleted file mode 100644 index 58ac575..0000000 Binary files a/test/reference/mask-transformed-image.quartz.ref.png and /dev/null differ diff --git a/test/reference/mask-transformed-image.ref.png b/test/reference/mask-transformed-image.ref.png deleted file mode 100644 index af84b39..0000000 Binary files a/test/reference/mask-transformed-image.ref.png and /dev/null differ diff --git a/test/reference/mask-transformed-similar.base.argb32.ref.png b/test/reference/mask-transformed-similar.base.argb32.ref.png deleted file mode 100644 index af84b39..0000000 Binary files a/test/reference/mask-transformed-similar.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/mask-transformed-similar.base.rgb24.ref.png b/test/reference/mask-transformed-similar.base.rgb24.ref.png deleted file mode 100644 index af84b39..0000000 Binary files a/test/reference/mask-transformed-similar.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/mask-transformed-similar.image16.ref.png b/test/reference/mask-transformed-similar.image16.ref.png deleted file mode 100644 index 9e196ef..0000000 Binary files a/test/reference/mask-transformed-similar.image16.ref.png and /dev/null differ diff --git a/test/reference/mask-transformed-similar.pdf.ref.png b/test/reference/mask-transformed-similar.pdf.ref.png deleted file mode 100644 index e8d3879..0000000 Binary files a/test/reference/mask-transformed-similar.pdf.ref.png and /dev/null differ diff --git a/test/reference/mask-transformed-similar.quartz.ref.png b/test/reference/mask-transformed-similar.quartz.ref.png deleted file mode 100644 index 58ac575..0000000 Binary files a/test/reference/mask-transformed-similar.quartz.ref.png and /dev/null differ diff --git a/test/reference/mask-transformed-similar.recording.ref.png b/test/reference/mask-transformed-similar.recording.ref.png deleted file mode 100644 index 33ec279..0000000 Binary files a/test/reference/mask-transformed-similar.recording.ref.png and /dev/null differ diff --git a/test/reference/mask-transformed-similar.ref.png b/test/reference/mask-transformed-similar.ref.png deleted file mode 100644 index af84b39..0000000 Binary files a/test/reference/mask-transformed-similar.ref.png and /dev/null differ diff --git a/test/reference/mask-transformed-similar.svg.ref.png b/test/reference/mask-transformed-similar.svg.ref.png deleted file mode 100644 index a5b9b00..0000000 Binary files a/test/reference/mask-transformed-similar.svg.ref.png and /dev/null differ diff --git a/test/reference/mask-transformed-xlib-fallback.rgb24.ref.png b/test/reference/mask-transformed-xlib-fallback.rgb24.ref.png deleted file mode 100644 index 09eb43a..0000000 Binary files a/test/reference/mask-transformed-xlib-fallback.rgb24.ref.png and /dev/null differ diff --git a/test/reference/mask-transformed-xlib-window.rgb24.ref.png b/test/reference/mask-transformed-xlib-window.rgb24.ref.png deleted file mode 100644 index 09eb43a..0000000 Binary files a/test/reference/mask-transformed-xlib-window.rgb24.ref.png and /dev/null differ diff --git a/test/reference/mask-transformed-xlib.ref.png b/test/reference/mask-transformed-xlib.ref.png deleted file mode 100644 index 09eb43a..0000000 Binary files a/test/reference/mask-transformed-xlib.ref.png and /dev/null differ diff --git a/test/reference/mask.argb32.ref.png b/test/reference/mask.argb32.ref.png deleted file mode 100644 index a4c683c..0000000 Binary files a/test/reference/mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/mask.base.argb32.ref.png b/test/reference/mask.base.argb32.ref.png deleted file mode 100644 index 7ee6b45..0000000 Binary files a/test/reference/mask.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/mask.base.rgb24.ref.png b/test/reference/mask.base.rgb24.ref.png deleted file mode 100644 index b0ceb35..0000000 Binary files a/test/reference/mask.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/mask.image16.ref.png b/test/reference/mask.image16.ref.png deleted file mode 100644 index 4ab52de..0000000 Binary files a/test/reference/mask.image16.ref.png and /dev/null differ diff --git a/test/reference/mask.pdf.argb32.ref.png b/test/reference/mask.pdf.argb32.ref.png deleted file mode 100644 index 33769ee..0000000 Binary files a/test/reference/mask.pdf.argb32.ref.png and /dev/null differ diff --git a/test/reference/mask.pdf.rgb24.ref.png b/test/reference/mask.pdf.rgb24.ref.png deleted file mode 100644 index dbd49a8..0000000 Binary files a/test/reference/mask.pdf.rgb24.ref.png and /dev/null differ diff --git a/test/reference/mask.quartz.argb32.ref.png b/test/reference/mask.quartz.argb32.ref.png deleted file mode 100644 index c7ab76e..0000000 Binary files a/test/reference/mask.quartz.argb32.ref.png and /dev/null differ diff --git a/test/reference/mask.quartz.rgb24.ref.png b/test/reference/mask.quartz.rgb24.ref.png deleted file mode 100644 index f475ba9..0000000 Binary files a/test/reference/mask.quartz.rgb24.ref.png and /dev/null differ diff --git a/test/reference/mask.rgb24.ref.png b/test/reference/mask.rgb24.ref.png deleted file mode 100644 index 1bd1833..0000000 Binary files a/test/reference/mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/mask.svg.argb32.xfail.png b/test/reference/mask.svg.argb32.xfail.png deleted file mode 100644 index 8672480..0000000 Binary files a/test/reference/mask.svg.argb32.xfail.png and /dev/null differ diff --git a/test/reference/mask.svg.rgb24.xfail.png b/test/reference/mask.svg.rgb24.xfail.png deleted file mode 100644 index 743a758..0000000 Binary files a/test/reference/mask.svg.rgb24.xfail.png and /dev/null differ diff --git a/test/reference/mask.traps.argb32.ref.png b/test/reference/mask.traps.argb32.ref.png deleted file mode 100644 index 3286ce6..0000000 Binary files a/test/reference/mask.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/mask.traps.rgb24.ref.png b/test/reference/mask.traps.rgb24.ref.png deleted file mode 100644 index edcabaf..0000000 Binary files a/test/reference/mask.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/mesh-pattern-accuracy.base.argb32.ref.png b/test/reference/mesh-pattern-accuracy.base.argb32.ref.png deleted file mode 100644 index dfc19ff..0000000 Binary files a/test/reference/mesh-pattern-accuracy.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/mesh-pattern-accuracy.base.rgb24.ref.png b/test/reference/mesh-pattern-accuracy.base.rgb24.ref.png deleted file mode 100644 index dfc19ff..0000000 Binary files a/test/reference/mesh-pattern-accuracy.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/mesh-pattern-accuracy.image16.ref.png b/test/reference/mesh-pattern-accuracy.image16.ref.png deleted file mode 100644 index a82e4fb..0000000 Binary files a/test/reference/mesh-pattern-accuracy.image16.ref.png and /dev/null differ diff --git a/test/reference/mesh-pattern-accuracy.ref.png b/test/reference/mesh-pattern-accuracy.ref.png deleted file mode 100644 index dfc19ff..0000000 Binary files a/test/reference/mesh-pattern-accuracy.ref.png and /dev/null differ diff --git a/test/reference/mesh-pattern-conical.base.argb32.ref.png b/test/reference/mesh-pattern-conical.base.argb32.ref.png deleted file mode 100644 index f5dc21d..0000000 Binary files a/test/reference/mesh-pattern-conical.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/mesh-pattern-conical.base.rgb24.ref.png b/test/reference/mesh-pattern-conical.base.rgb24.ref.png deleted file mode 100644 index f5dc21d..0000000 Binary files a/test/reference/mesh-pattern-conical.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/mesh-pattern-conical.image16.ref.png b/test/reference/mesh-pattern-conical.image16.ref.png deleted file mode 100644 index b8f9416..0000000 Binary files a/test/reference/mesh-pattern-conical.image16.ref.png and /dev/null differ diff --git a/test/reference/mesh-pattern-conical.ref.png b/test/reference/mesh-pattern-conical.ref.png deleted file mode 100644 index f5dc21d..0000000 Binary files a/test/reference/mesh-pattern-conical.ref.png and /dev/null differ diff --git a/test/reference/mesh-pattern-control-points.base.argb32.ref.png b/test/reference/mesh-pattern-control-points.base.argb32.ref.png deleted file mode 100644 index 841fc3e..0000000 Binary files a/test/reference/mesh-pattern-control-points.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/mesh-pattern-control-points.base.rgb24.ref.png b/test/reference/mesh-pattern-control-points.base.rgb24.ref.png deleted file mode 100644 index 841fc3e..0000000 Binary files a/test/reference/mesh-pattern-control-points.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/mesh-pattern-control-points.image16.ref.png b/test/reference/mesh-pattern-control-points.image16.ref.png deleted file mode 100644 index b664ef9..0000000 Binary files a/test/reference/mesh-pattern-control-points.image16.ref.png and /dev/null differ diff --git a/test/reference/mesh-pattern-control-points.ref.png b/test/reference/mesh-pattern-control-points.ref.png deleted file mode 100644 index 841fc3e..0000000 Binary files a/test/reference/mesh-pattern-control-points.ref.png and /dev/null differ diff --git a/test/reference/mesh-pattern-fold.base.argb32.ref.png b/test/reference/mesh-pattern-fold.base.argb32.ref.png deleted file mode 100644 index 6275b82..0000000 Binary files a/test/reference/mesh-pattern-fold.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/mesh-pattern-fold.base.rgb24.ref.png b/test/reference/mesh-pattern-fold.base.rgb24.ref.png deleted file mode 100644 index 6275b82..0000000 Binary files a/test/reference/mesh-pattern-fold.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/mesh-pattern-fold.image16.ref.png b/test/reference/mesh-pattern-fold.image16.ref.png deleted file mode 100644 index 4264ad2..0000000 Binary files a/test/reference/mesh-pattern-fold.image16.ref.png and /dev/null differ diff --git a/test/reference/mesh-pattern-fold.ref.png b/test/reference/mesh-pattern-fold.ref.png deleted file mode 100644 index 6275b82..0000000 Binary files a/test/reference/mesh-pattern-fold.ref.png and /dev/null differ diff --git a/test/reference/mesh-pattern-overlap.base.argb32.ref.png b/test/reference/mesh-pattern-overlap.base.argb32.ref.png deleted file mode 100644 index 1394c9e..0000000 Binary files a/test/reference/mesh-pattern-overlap.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/mesh-pattern-overlap.base.rgb24.ref.png b/test/reference/mesh-pattern-overlap.base.rgb24.ref.png deleted file mode 100644 index 1394c9e..0000000 Binary files a/test/reference/mesh-pattern-overlap.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/mesh-pattern-overlap.image16.ref.png b/test/reference/mesh-pattern-overlap.image16.ref.png deleted file mode 100644 index a67f7dd..0000000 Binary files a/test/reference/mesh-pattern-overlap.image16.ref.png and /dev/null differ diff --git a/test/reference/mesh-pattern-overlap.ref.png b/test/reference/mesh-pattern-overlap.ref.png deleted file mode 100644 index 1394c9e..0000000 Binary files a/test/reference/mesh-pattern-overlap.ref.png and /dev/null differ diff --git a/test/reference/mesh-pattern-transformed.base.argb32.ref.png b/test/reference/mesh-pattern-transformed.base.argb32.ref.png deleted file mode 100644 index 9aa482f..0000000 Binary files a/test/reference/mesh-pattern-transformed.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/mesh-pattern-transformed.base.rgb24.ref.png b/test/reference/mesh-pattern-transformed.base.rgb24.ref.png deleted file mode 100644 index 9aa482f..0000000 Binary files a/test/reference/mesh-pattern-transformed.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/mesh-pattern-transformed.image16.ref.png b/test/reference/mesh-pattern-transformed.image16.ref.png deleted file mode 100644 index 0645b86..0000000 Binary files a/test/reference/mesh-pattern-transformed.image16.ref.png and /dev/null differ diff --git a/test/reference/mesh-pattern-transformed.ref.png b/test/reference/mesh-pattern-transformed.ref.png deleted file mode 100644 index 9aa482f..0000000 Binary files a/test/reference/mesh-pattern-transformed.ref.png and /dev/null differ diff --git a/test/reference/mesh-pattern.base.argb32.ref.png b/test/reference/mesh-pattern.base.argb32.ref.png deleted file mode 100644 index 1f76639..0000000 Binary files a/test/reference/mesh-pattern.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/mesh-pattern.base.rgb24.ref.png b/test/reference/mesh-pattern.base.rgb24.ref.png deleted file mode 100644 index 1f76639..0000000 Binary files a/test/reference/mesh-pattern.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/mesh-pattern.image16.ref.png b/test/reference/mesh-pattern.image16.ref.png deleted file mode 100644 index bd63538..0000000 Binary files a/test/reference/mesh-pattern.image16.ref.png and /dev/null differ diff --git a/test/reference/mesh-pattern.ref.png b/test/reference/mesh-pattern.ref.png deleted file mode 100644 index 1f76639..0000000 Binary files a/test/reference/mesh-pattern.ref.png and /dev/null differ diff --git a/test/reference/mime-data.base.argb32.ref.png b/test/reference/mime-data.base.argb32.ref.png deleted file mode 100644 index 4bc007c..0000000 Binary files a/test/reference/mime-data.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/mime-data.base.rgb24.ref.png b/test/reference/mime-data.base.rgb24.ref.png deleted file mode 100644 index 4bc007c..0000000 Binary files a/test/reference/mime-data.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/mime-data.pdf.ref.png b/test/reference/mime-data.pdf.ref.png deleted file mode 100644 index 76c17f8..0000000 Binary files a/test/reference/mime-data.pdf.ref.png and /dev/null differ diff --git a/test/reference/mime-data.ps.ref.png b/test/reference/mime-data.ps.ref.png deleted file mode 100644 index 7ec7d9b..0000000 Binary files a/test/reference/mime-data.ps.ref.png and /dev/null differ diff --git a/test/reference/mime-data.ref.png b/test/reference/mime-data.ref.png deleted file mode 100644 index 4bc007c..0000000 Binary files a/test/reference/mime-data.ref.png and /dev/null differ diff --git a/test/reference/mime-data.script.ref.png b/test/reference/mime-data.script.ref.png deleted file mode 100644 index 07691b1..0000000 Binary files a/test/reference/mime-data.script.ref.png and /dev/null differ diff --git a/test/reference/mime-data.svg.ref.png b/test/reference/mime-data.svg.ref.png deleted file mode 100644 index a4bbb1b..0000000 Binary files a/test/reference/mime-data.svg.ref.png and /dev/null differ diff --git a/test/reference/miter-precision.base.argb32.ref.png b/test/reference/miter-precision.base.argb32.ref.png deleted file mode 100644 index b881dd4..0000000 Binary files a/test/reference/miter-precision.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/miter-precision.base.rgb24.ref.png b/test/reference/miter-precision.base.rgb24.ref.png deleted file mode 100644 index b881dd4..0000000 Binary files a/test/reference/miter-precision.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/miter-precision.ps2.ref.png b/test/reference/miter-precision.ps2.ref.png deleted file mode 100644 index c2b69ad..0000000 Binary files a/test/reference/miter-precision.ps2.ref.png and /dev/null differ diff --git a/test/reference/miter-precision.ps3.ref.png b/test/reference/miter-precision.ps3.ref.png deleted file mode 100644 index c2b69ad..0000000 Binary files a/test/reference/miter-precision.ps3.ref.png and /dev/null differ diff --git a/test/reference/miter-precision.ref.png b/test/reference/miter-precision.ref.png deleted file mode 100644 index a2c333e..0000000 Binary files a/test/reference/miter-precision.ref.png and /dev/null differ diff --git a/test/reference/miter-precision.traps.argb32.ref.png b/test/reference/miter-precision.traps.argb32.ref.png deleted file mode 100644 index b881dd4..0000000 Binary files a/test/reference/miter-precision.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/miter-precision.traps.rgb24.ref.png b/test/reference/miter-precision.traps.rgb24.ref.png deleted file mode 100644 index b881dd4..0000000 Binary files a/test/reference/miter-precision.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/move-to-show-surface.base.argb32.ref.png b/test/reference/move-to-show-surface.base.argb32.ref.png deleted file mode 100644 index 0a145d9..0000000 Binary files a/test/reference/move-to-show-surface.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/move-to-show-surface.base.rgb24.ref.png b/test/reference/move-to-show-surface.base.rgb24.ref.png deleted file mode 100644 index 0a145d9..0000000 Binary files a/test/reference/move-to-show-surface.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/move-to-show-surface.ref.png b/test/reference/move-to-show-surface.ref.png deleted file mode 100644 index 765adc4..0000000 Binary files a/test/reference/move-to-show-surface.ref.png and /dev/null differ diff --git a/test/reference/negative-stride-image.base.argb32.ref.png b/test/reference/negative-stride-image.base.argb32.ref.png deleted file mode 100644 index 4428456..0000000 Binary files a/test/reference/negative-stride-image.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/negative-stride-image.base.rgb24.ref.png b/test/reference/negative-stride-image.base.rgb24.ref.png deleted file mode 100644 index 4428456..0000000 Binary files a/test/reference/negative-stride-image.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/negative-stride-image.image16.ref.png b/test/reference/negative-stride-image.image16.ref.png deleted file mode 100644 index 4b15914..0000000 Binary files a/test/reference/negative-stride-image.image16.ref.png and /dev/null differ diff --git a/test/reference/negative-stride-image.ps.ref.png b/test/reference/negative-stride-image.ps.ref.png deleted file mode 100644 index 953c9a1..0000000 Binary files a/test/reference/negative-stride-image.ps.ref.png and /dev/null differ diff --git a/test/reference/negative-stride-image.ref.png b/test/reference/negative-stride-image.ref.png deleted file mode 100644 index 4428456..0000000 Binary files a/test/reference/negative-stride-image.ref.png and /dev/null differ diff --git a/test/reference/new-sub-path.base.argb32.ref.png b/test/reference/new-sub-path.base.argb32.ref.png deleted file mode 100644 index 13e0675..0000000 Binary files a/test/reference/new-sub-path.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/new-sub-path.base.rgb24.ref.png b/test/reference/new-sub-path.base.rgb24.ref.png deleted file mode 100644 index b69e4ab..0000000 Binary files a/test/reference/new-sub-path.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/new-sub-path.pdf.argb32.ref.png b/test/reference/new-sub-path.pdf.argb32.ref.png deleted file mode 100644 index 41fe131..0000000 Binary files a/test/reference/new-sub-path.pdf.argb32.ref.png and /dev/null differ diff --git a/test/reference/new-sub-path.ps2.argb32.ref.png b/test/reference/new-sub-path.ps2.argb32.ref.png deleted file mode 100644 index 45253db..0000000 Binary files a/test/reference/new-sub-path.ps2.argb32.ref.png and /dev/null differ diff --git a/test/reference/new-sub-path.ps2.rgb24.ref.png b/test/reference/new-sub-path.ps2.rgb24.ref.png deleted file mode 100644 index bceb5b7..0000000 Binary files a/test/reference/new-sub-path.ps2.rgb24.ref.png and /dev/null differ diff --git a/test/reference/new-sub-path.ps3.argb32.ref.png b/test/reference/new-sub-path.ps3.argb32.ref.png deleted file mode 100644 index 45253db..0000000 Binary files a/test/reference/new-sub-path.ps3.argb32.ref.png and /dev/null differ diff --git a/test/reference/new-sub-path.ps3.rgb24.ref.png b/test/reference/new-sub-path.ps3.rgb24.ref.png deleted file mode 100644 index bceb5b7..0000000 Binary files a/test/reference/new-sub-path.ps3.rgb24.ref.png and /dev/null differ diff --git a/test/reference/new-sub-path.quartz.ref.png b/test/reference/new-sub-path.quartz.ref.png deleted file mode 100644 index 20d49ba..0000000 Binary files a/test/reference/new-sub-path.quartz.ref.png and /dev/null differ diff --git a/test/reference/new-sub-path.ref.png b/test/reference/new-sub-path.ref.png deleted file mode 100644 index 87a6c91..0000000 Binary files a/test/reference/new-sub-path.ref.png and /dev/null differ diff --git a/test/reference/new-sub-path.traps.argb32.ref.png b/test/reference/new-sub-path.traps.argb32.ref.png deleted file mode 100644 index 13e0675..0000000 Binary files a/test/reference/new-sub-path.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/new-sub-path.traps.rgb24.ref.png b/test/reference/new-sub-path.traps.rgb24.ref.png deleted file mode 100644 index b69e4ab..0000000 Binary files a/test/reference/new-sub-path.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/nil-surface.base.argb32.ref.png b/test/reference/nil-surface.base.argb32.ref.png deleted file mode 100644 index 50e35a2..0000000 Binary files a/test/reference/nil-surface.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/nil-surface.base.rgb24.ref.png b/test/reference/nil-surface.base.rgb24.ref.png deleted file mode 100644 index 7d5589c..0000000 Binary files a/test/reference/nil-surface.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/nil-surface.ref.png b/test/reference/nil-surface.ref.png deleted file mode 100644 index 79dd2bc..0000000 Binary files a/test/reference/nil-surface.ref.png and /dev/null differ diff --git a/test/reference/operator-alpha-alpha.base.argb32.ref.png b/test/reference/operator-alpha-alpha.base.argb32.ref.png deleted file mode 100644 index fc173cb..0000000 Binary files a/test/reference/operator-alpha-alpha.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/operator-alpha-alpha.base.rgb24.ref.png b/test/reference/operator-alpha-alpha.base.rgb24.ref.png deleted file mode 100644 index fc173cb..0000000 Binary files a/test/reference/operator-alpha-alpha.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/operator-alpha-alpha.image16.ref.png b/test/reference/operator-alpha-alpha.image16.ref.png deleted file mode 100644 index 31eba5f..0000000 Binary files a/test/reference/operator-alpha-alpha.image16.ref.png and /dev/null differ diff --git a/test/reference/operator-alpha-alpha.pdf.xfail.png b/test/reference/operator-alpha-alpha.pdf.xfail.png deleted file mode 100644 index 0a06685..0000000 Binary files a/test/reference/operator-alpha-alpha.pdf.xfail.png and /dev/null differ diff --git a/test/reference/operator-alpha-alpha.ps.xfail.png b/test/reference/operator-alpha-alpha.ps.xfail.png deleted file mode 100644 index e7c4fea..0000000 Binary files a/test/reference/operator-alpha-alpha.ps.xfail.png and /dev/null differ diff --git a/test/reference/operator-alpha-alpha.ref.png b/test/reference/operator-alpha-alpha.ref.png deleted file mode 100644 index 695d0d0..0000000 Binary files a/test/reference/operator-alpha-alpha.ref.png and /dev/null differ diff --git a/test/reference/operator-alpha-alpha.svg.xfail.png b/test/reference/operator-alpha-alpha.svg.xfail.png deleted file mode 100644 index c7dc8cb..0000000 Binary files a/test/reference/operator-alpha-alpha.svg.xfail.png and /dev/null differ diff --git a/test/reference/operator-alpha-alpha.traps.argb32.ref.png b/test/reference/operator-alpha-alpha.traps.argb32.ref.png deleted file mode 100644 index fc173cb..0000000 Binary files a/test/reference/operator-alpha-alpha.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/operator-alpha-alpha.traps.rgb24.ref.png b/test/reference/operator-alpha-alpha.traps.rgb24.ref.png deleted file mode 100644 index fc173cb..0000000 Binary files a/test/reference/operator-alpha-alpha.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/operator-alpha.argb32.ref.png b/test/reference/operator-alpha.argb32.ref.png deleted file mode 100644 index b4f3b71..0000000 Binary files a/test/reference/operator-alpha.argb32.ref.png and /dev/null differ diff --git a/test/reference/operator-alpha.base.argb32.ref.png b/test/reference/operator-alpha.base.argb32.ref.png deleted file mode 100644 index b4f3b71..0000000 Binary files a/test/reference/operator-alpha.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/operator-alpha.base.rgb24.ref.png b/test/reference/operator-alpha.base.rgb24.ref.png deleted file mode 100644 index bc7be3a..0000000 Binary files a/test/reference/operator-alpha.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/operator-alpha.rgb24.ref.png b/test/reference/operator-alpha.rgb24.ref.png deleted file mode 100644 index bc7be3a..0000000 Binary files a/test/reference/operator-alpha.rgb24.ref.png and /dev/null differ diff --git a/test/reference/operator-alpha.svg12.argb32.xfail.png b/test/reference/operator-alpha.svg12.argb32.xfail.png deleted file mode 100644 index e821d20..0000000 Binary files a/test/reference/operator-alpha.svg12.argb32.xfail.png and /dev/null differ diff --git a/test/reference/operator-alpha.svg12.rgb24.xfail.png b/test/reference/operator-alpha.svg12.rgb24.xfail.png deleted file mode 100644 index 42d9dde..0000000 Binary files a/test/reference/operator-alpha.svg12.rgb24.xfail.png and /dev/null differ diff --git a/test/reference/operator-clear.argb32.ref.png b/test/reference/operator-clear.argb32.ref.png deleted file mode 100644 index 2ce556e..0000000 Binary files a/test/reference/operator-clear.argb32.ref.png and /dev/null differ diff --git a/test/reference/operator-clear.base.argb32.ref.png b/test/reference/operator-clear.base.argb32.ref.png deleted file mode 100644 index c49b4a8..0000000 Binary files a/test/reference/operator-clear.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/operator-clear.base.rgb24.ref.png b/test/reference/operator-clear.base.rgb24.ref.png deleted file mode 100644 index 51d38d1..0000000 Binary files a/test/reference/operator-clear.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/operator-clear.mask.rgb24.ref.png b/test/reference/operator-clear.mask.rgb24.ref.png deleted file mode 100644 index 3d58ab3..0000000 Binary files a/test/reference/operator-clear.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/operator-clear.ps2.argb32.ref.png b/test/reference/operator-clear.ps2.argb32.ref.png deleted file mode 100644 index 92b4111..0000000 Binary files a/test/reference/operator-clear.ps2.argb32.ref.png and /dev/null differ diff --git a/test/reference/operator-clear.ps3.argb32.ref.png b/test/reference/operator-clear.ps3.argb32.ref.png deleted file mode 100644 index 92b4111..0000000 Binary files a/test/reference/operator-clear.ps3.argb32.ref.png and /dev/null differ diff --git a/test/reference/operator-clear.quartz.argb32.ref.png b/test/reference/operator-clear.quartz.argb32.ref.png deleted file mode 100644 index caf265e..0000000 Binary files a/test/reference/operator-clear.quartz.argb32.ref.png and /dev/null differ diff --git a/test/reference/operator-clear.quartz.rgb24.ref.png b/test/reference/operator-clear.quartz.rgb24.ref.png deleted file mode 100644 index a07a6e0..0000000 Binary files a/test/reference/operator-clear.quartz.rgb24.ref.png and /dev/null differ diff --git a/test/reference/operator-clear.rgb24.ref.png b/test/reference/operator-clear.rgb24.ref.png deleted file mode 100644 index 533b49a..0000000 Binary files a/test/reference/operator-clear.rgb24.ref.png and /dev/null differ diff --git a/test/reference/operator-clear.svg12.argb32.xfail.png b/test/reference/operator-clear.svg12.argb32.xfail.png deleted file mode 100644 index 7dfbd28..0000000 Binary files a/test/reference/operator-clear.svg12.argb32.xfail.png and /dev/null differ diff --git a/test/reference/operator-clear.svg12.rgb24.xfail.png b/test/reference/operator-clear.svg12.rgb24.xfail.png deleted file mode 100644 index c561bc3..0000000 Binary files a/test/reference/operator-clear.svg12.rgb24.xfail.png and /dev/null differ diff --git a/test/reference/operator-clear.traps.argb32.ref.png b/test/reference/operator-clear.traps.argb32.ref.png deleted file mode 100644 index c49b4a8..0000000 Binary files a/test/reference/operator-clear.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/operator-clear.traps.rgb24.ref.png b/test/reference/operator-clear.traps.rgb24.ref.png deleted file mode 100644 index 51d38d1..0000000 Binary files a/test/reference/operator-clear.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/operator-source.argb32.ref.png b/test/reference/operator-source.argb32.ref.png deleted file mode 100644 index 5fd5c43..0000000 Binary files a/test/reference/operator-source.argb32.ref.png and /dev/null differ diff --git a/test/reference/operator-source.base.argb32.ref.png b/test/reference/operator-source.base.argb32.ref.png deleted file mode 100644 index 42e24f2..0000000 Binary files a/test/reference/operator-source.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/operator-source.base.rgb24.ref.png b/test/reference/operator-source.base.rgb24.ref.png deleted file mode 100644 index 4736d58..0000000 Binary files a/test/reference/operator-source.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/operator-source.image16.ref.png b/test/reference/operator-source.image16.ref.png deleted file mode 100644 index 4556260..0000000 Binary files a/test/reference/operator-source.image16.ref.png and /dev/null differ diff --git a/test/reference/operator-source.mask.argb32.ref.png b/test/reference/operator-source.mask.argb32.ref.png deleted file mode 100644 index 74ad1da..0000000 Binary files a/test/reference/operator-source.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/operator-source.mask.rgb24.ref.png b/test/reference/operator-source.mask.rgb24.ref.png deleted file mode 100644 index c003356..0000000 Binary files a/test/reference/operator-source.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/operator-source.rgb24.ref.png b/test/reference/operator-source.rgb24.ref.png deleted file mode 100644 index c7846e5..0000000 Binary files a/test/reference/operator-source.rgb24.ref.png and /dev/null differ diff --git a/test/reference/operator-source.traps.argb32.ref.png b/test/reference/operator-source.traps.argb32.ref.png deleted file mode 100644 index 42e24f2..0000000 Binary files a/test/reference/operator-source.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/operator-source.traps.rgb24.ref.png b/test/reference/operator-source.traps.rgb24.ref.png deleted file mode 100644 index 4736d58..0000000 Binary files a/test/reference/operator-source.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/operator-source.xlib-fallback.ref.png b/test/reference/operator-source.xlib-fallback.ref.png deleted file mode 100644 index 4527ce7..0000000 Binary files a/test/reference/operator-source.xlib-fallback.ref.png and /dev/null differ diff --git a/test/reference/operator.argb32.ref.png b/test/reference/operator.argb32.ref.png deleted file mode 100644 index 34fce98..0000000 Binary files a/test/reference/operator.argb32.ref.png and /dev/null differ diff --git a/test/reference/operator.base.argb32.ref.png b/test/reference/operator.base.argb32.ref.png deleted file mode 100644 index 34fce98..0000000 Binary files a/test/reference/operator.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/operator.base.rgb24.ref.png b/test/reference/operator.base.rgb24.ref.png deleted file mode 100644 index aa6103d..0000000 Binary files a/test/reference/operator.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/operator.rgb24.ref.png b/test/reference/operator.rgb24.ref.png deleted file mode 100644 index aa6103d..0000000 Binary files a/test/reference/operator.rgb24.ref.png and /dev/null differ diff --git a/test/reference/operator.svg12.argb32.xfail.png b/test/reference/operator.svg12.argb32.xfail.png deleted file mode 100644 index 3996221..0000000 Binary files a/test/reference/operator.svg12.argb32.xfail.png and /dev/null differ diff --git a/test/reference/operator.svg12.rgb24.xfail.png b/test/reference/operator.svg12.rgb24.xfail.png deleted file mode 100644 index 198d4b1..0000000 Binary files a/test/reference/operator.svg12.rgb24.xfail.png and /dev/null differ diff --git a/test/reference/outline-tolerance.ref.png b/test/reference/outline-tolerance.ref.png deleted file mode 100644 index 2733836..0000000 Binary files a/test/reference/outline-tolerance.ref.png and /dev/null differ diff --git a/test/reference/over-above-source.argb32.ref.png b/test/reference/over-above-source.argb32.ref.png deleted file mode 100644 index 479437f..0000000 Binary files a/test/reference/over-above-source.argb32.ref.png and /dev/null differ diff --git a/test/reference/over-above-source.base.argb32.ref.png b/test/reference/over-above-source.base.argb32.ref.png deleted file mode 100644 index 8a0183a..0000000 Binary files a/test/reference/over-above-source.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/over-above-source.base.rgb24.ref.png b/test/reference/over-above-source.base.rgb24.ref.png deleted file mode 100644 index 85c1997..0000000 Binary files a/test/reference/over-above-source.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/over-above-source.ps2.argb32.ref.png b/test/reference/over-above-source.ps2.argb32.ref.png deleted file mode 100644 index 7c90d08..0000000 Binary files a/test/reference/over-above-source.ps2.argb32.ref.png and /dev/null differ diff --git a/test/reference/over-above-source.ps3.argb32.ref.png b/test/reference/over-above-source.ps3.argb32.ref.png deleted file mode 100644 index 7c90d08..0000000 Binary files a/test/reference/over-above-source.ps3.argb32.ref.png and /dev/null differ diff --git a/test/reference/over-above-source.quartz.argb32.ref.png b/test/reference/over-above-source.quartz.argb32.ref.png deleted file mode 100644 index eeb3622..0000000 Binary files a/test/reference/over-above-source.quartz.argb32.ref.png and /dev/null differ diff --git a/test/reference/over-above-source.quartz.rgb24.ref.png b/test/reference/over-above-source.quartz.rgb24.ref.png deleted file mode 100644 index 2ab3476..0000000 Binary files a/test/reference/over-above-source.quartz.rgb24.ref.png and /dev/null differ diff --git a/test/reference/over-above-source.rgb24.ref.png b/test/reference/over-above-source.rgb24.ref.png deleted file mode 100644 index 6fc2f52..0000000 Binary files a/test/reference/over-above-source.rgb24.ref.png and /dev/null differ diff --git a/test/reference/over-above-source.svg12.rgb24.xfail.png b/test/reference/over-above-source.svg12.rgb24.xfail.png deleted file mode 100644 index b2939c2..0000000 Binary files a/test/reference/over-above-source.svg12.rgb24.xfail.png and /dev/null differ diff --git a/test/reference/over-above-source.traps.argb32.ref.png b/test/reference/over-above-source.traps.argb32.ref.png deleted file mode 100644 index 8a0183a..0000000 Binary files a/test/reference/over-above-source.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/over-above-source.traps.rgb24.ref.png b/test/reference/over-above-source.traps.rgb24.ref.png deleted file mode 100644 index 85c1997..0000000 Binary files a/test/reference/over-above-source.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/over-around-source.argb32.ref.png b/test/reference/over-around-source.argb32.ref.png deleted file mode 100644 index abc81c7..0000000 Binary files a/test/reference/over-around-source.argb32.ref.png and /dev/null differ diff --git a/test/reference/over-around-source.base.argb32.ref.png b/test/reference/over-around-source.base.argb32.ref.png deleted file mode 100644 index fca7505..0000000 Binary files a/test/reference/over-around-source.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/over-around-source.base.rgb24.ref.png b/test/reference/over-around-source.base.rgb24.ref.png deleted file mode 100644 index e8dd91d..0000000 Binary files a/test/reference/over-around-source.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/over-around-source.image16.ref.png b/test/reference/over-around-source.image16.ref.png deleted file mode 100644 index f571b7d..0000000 Binary files a/test/reference/over-around-source.image16.ref.png and /dev/null differ diff --git a/test/reference/over-around-source.pdf.argb32.ref.png b/test/reference/over-around-source.pdf.argb32.ref.png deleted file mode 100644 index da700af..0000000 Binary files a/test/reference/over-around-source.pdf.argb32.ref.png and /dev/null differ diff --git a/test/reference/over-around-source.ps2.argb32.ref.png b/test/reference/over-around-source.ps2.argb32.ref.png deleted file mode 100644 index 4391759..0000000 Binary files a/test/reference/over-around-source.ps2.argb32.ref.png and /dev/null differ diff --git a/test/reference/over-around-source.ps2.rgb24.ref.png b/test/reference/over-around-source.ps2.rgb24.ref.png deleted file mode 100644 index ee325ea..0000000 Binary files a/test/reference/over-around-source.ps2.rgb24.ref.png and /dev/null differ diff --git a/test/reference/over-around-source.ps3.argb32.ref.png b/test/reference/over-around-source.ps3.argb32.ref.png deleted file mode 100644 index 4391759..0000000 Binary files a/test/reference/over-around-source.ps3.argb32.ref.png and /dev/null differ diff --git a/test/reference/over-around-source.ps3.rgb24.ref.png b/test/reference/over-around-source.ps3.rgb24.ref.png deleted file mode 100644 index ee325ea..0000000 Binary files a/test/reference/over-around-source.ps3.rgb24.ref.png and /dev/null differ diff --git a/test/reference/over-around-source.quartz.argb32.ref.png b/test/reference/over-around-source.quartz.argb32.ref.png deleted file mode 100644 index 26ab8e5..0000000 Binary files a/test/reference/over-around-source.quartz.argb32.ref.png and /dev/null differ diff --git a/test/reference/over-around-source.rgb24.ref.png b/test/reference/over-around-source.rgb24.ref.png deleted file mode 100644 index 41ade95..0000000 Binary files a/test/reference/over-around-source.rgb24.ref.png and /dev/null differ diff --git a/test/reference/over-around-source.svg12.argb32.xfail.png b/test/reference/over-around-source.svg12.argb32.xfail.png deleted file mode 100644 index bb29538..0000000 Binary files a/test/reference/over-around-source.svg12.argb32.xfail.png and /dev/null differ diff --git a/test/reference/over-around-source.svg12.rgb24.xfail.png b/test/reference/over-around-source.svg12.rgb24.xfail.png deleted file mode 100644 index bb29538..0000000 Binary files a/test/reference/over-around-source.svg12.rgb24.xfail.png and /dev/null differ diff --git a/test/reference/over-around-source.traps.argb32.ref.png b/test/reference/over-around-source.traps.argb32.ref.png deleted file mode 100644 index fca7505..0000000 Binary files a/test/reference/over-around-source.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/over-around-source.traps.rgb24.ref.png b/test/reference/over-around-source.traps.rgb24.ref.png deleted file mode 100644 index e8dd91d..0000000 Binary files a/test/reference/over-around-source.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/over-below-source.argb32.ref.png b/test/reference/over-below-source.argb32.ref.png deleted file mode 100644 index 5191609..0000000 Binary files a/test/reference/over-below-source.argb32.ref.png and /dev/null differ diff --git a/test/reference/over-below-source.base.argb32.ref.png b/test/reference/over-below-source.base.argb32.ref.png deleted file mode 100644 index c659363..0000000 Binary files a/test/reference/over-below-source.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/over-below-source.base.rgb24.ref.png b/test/reference/over-below-source.base.rgb24.ref.png deleted file mode 100644 index 88a85ac..0000000 Binary files a/test/reference/over-below-source.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/over-below-source.pdf.argb32.ref.png b/test/reference/over-below-source.pdf.argb32.ref.png deleted file mode 100644 index b9c4fe2..0000000 Binary files a/test/reference/over-below-source.pdf.argb32.ref.png and /dev/null differ diff --git a/test/reference/over-below-source.ps2.argb32.ref.png b/test/reference/over-below-source.ps2.argb32.ref.png deleted file mode 100644 index c05bda5..0000000 Binary files a/test/reference/over-below-source.ps2.argb32.ref.png and /dev/null differ diff --git a/test/reference/over-below-source.ps2.rgb24.ref.png b/test/reference/over-below-source.ps2.rgb24.ref.png deleted file mode 100644 index 07e10d4..0000000 Binary files a/test/reference/over-below-source.ps2.rgb24.ref.png and /dev/null differ diff --git a/test/reference/over-below-source.ps3.argb32.ref.png b/test/reference/over-below-source.ps3.argb32.ref.png deleted file mode 100644 index c05bda5..0000000 Binary files a/test/reference/over-below-source.ps3.argb32.ref.png and /dev/null differ diff --git a/test/reference/over-below-source.ps3.rgb24.ref.png b/test/reference/over-below-source.ps3.rgb24.ref.png deleted file mode 100644 index 07e10d4..0000000 Binary files a/test/reference/over-below-source.ps3.rgb24.ref.png and /dev/null differ diff --git a/test/reference/over-below-source.rgb24.ref.png b/test/reference/over-below-source.rgb24.ref.png deleted file mode 100644 index 20ee671..0000000 Binary files a/test/reference/over-below-source.rgb24.ref.png and /dev/null differ diff --git a/test/reference/over-below-source.svg12.argb32.xfail.png b/test/reference/over-below-source.svg12.argb32.xfail.png deleted file mode 100644 index c80705b..0000000 Binary files a/test/reference/over-below-source.svg12.argb32.xfail.png and /dev/null differ diff --git a/test/reference/over-below-source.svg12.rgb24.xfail.png b/test/reference/over-below-source.svg12.rgb24.xfail.png deleted file mode 100644 index c80705b..0000000 Binary files a/test/reference/over-below-source.svg12.rgb24.xfail.png and /dev/null differ diff --git a/test/reference/over-below-source.traps.argb32.ref.png b/test/reference/over-below-source.traps.argb32.ref.png deleted file mode 100644 index c659363..0000000 Binary files a/test/reference/over-below-source.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/over-below-source.traps.rgb24.ref.png b/test/reference/over-below-source.traps.rgb24.ref.png deleted file mode 100644 index 88a85ac..0000000 Binary files a/test/reference/over-below-source.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/over-between-source.argb32.ref.png b/test/reference/over-between-source.argb32.ref.png deleted file mode 100644 index 9ba86f0..0000000 Binary files a/test/reference/over-between-source.argb32.ref.png and /dev/null differ diff --git a/test/reference/over-between-source.base.argb32.ref.png b/test/reference/over-between-source.base.argb32.ref.png deleted file mode 100644 index a8fe66a..0000000 Binary files a/test/reference/over-between-source.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/over-between-source.base.rgb24.ref.png b/test/reference/over-between-source.base.rgb24.ref.png deleted file mode 100644 index bb77a9b..0000000 Binary files a/test/reference/over-between-source.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/over-between-source.ps2.argb32.ref.png b/test/reference/over-between-source.ps2.argb32.ref.png deleted file mode 100644 index dd95940..0000000 Binary files a/test/reference/over-between-source.ps2.argb32.ref.png and /dev/null differ diff --git a/test/reference/over-between-source.ps3.argb32.ref.png b/test/reference/over-between-source.ps3.argb32.ref.png deleted file mode 100644 index dd95940..0000000 Binary files a/test/reference/over-between-source.ps3.argb32.ref.png and /dev/null differ diff --git a/test/reference/over-between-source.quartz.argb32.ref.png b/test/reference/over-between-source.quartz.argb32.ref.png deleted file mode 100644 index adb17ae..0000000 Binary files a/test/reference/over-between-source.quartz.argb32.ref.png and /dev/null differ diff --git a/test/reference/over-between-source.rgb24.ref.png b/test/reference/over-between-source.rgb24.ref.png deleted file mode 100644 index b0d31e6..0000000 Binary files a/test/reference/over-between-source.rgb24.ref.png and /dev/null differ diff --git a/test/reference/over-between-source.svg12.argb32.xfail.png b/test/reference/over-between-source.svg12.argb32.xfail.png deleted file mode 100644 index c80705b..0000000 Binary files a/test/reference/over-between-source.svg12.argb32.xfail.png and /dev/null differ diff --git a/test/reference/over-between-source.svg12.rgb24.xfail.png b/test/reference/over-between-source.svg12.rgb24.xfail.png deleted file mode 100644 index c80705b..0000000 Binary files a/test/reference/over-between-source.svg12.rgb24.xfail.png and /dev/null differ diff --git a/test/reference/over-between-source.traps.argb32.ref.png b/test/reference/over-between-source.traps.argb32.ref.png deleted file mode 100644 index a8fe66a..0000000 Binary files a/test/reference/over-between-source.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/over-between-source.traps.rgb24.ref.png b/test/reference/over-between-source.traps.rgb24.ref.png deleted file mode 100644 index bb77a9b..0000000 Binary files a/test/reference/over-between-source.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/overlapping-boxes.base.argb32.ref.png b/test/reference/overlapping-boxes.base.argb32.ref.png deleted file mode 100644 index 278e62a..0000000 Binary files a/test/reference/overlapping-boxes.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/overlapping-boxes.base.rgb24.ref.png b/test/reference/overlapping-boxes.base.rgb24.ref.png deleted file mode 100644 index f35d0e6..0000000 Binary files a/test/reference/overlapping-boxes.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/overlapping-boxes.ref.png b/test/reference/overlapping-boxes.ref.png deleted file mode 100644 index 1c68438..0000000 Binary files a/test/reference/overlapping-boxes.ref.png and /dev/null differ diff --git a/test/reference/overlapping-boxes.traps.argb32.ref.png b/test/reference/overlapping-boxes.traps.argb32.ref.png deleted file mode 100644 index 278e62a..0000000 Binary files a/test/reference/overlapping-boxes.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/overlapping-boxes.traps.rgb24.ref.png b/test/reference/overlapping-boxes.traps.rgb24.ref.png deleted file mode 100644 index f35d0e6..0000000 Binary files a/test/reference/overlapping-boxes.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/overlapping-dash-caps.base.argb32.ref.png b/test/reference/overlapping-dash-caps.base.argb32.ref.png deleted file mode 100644 index 849a516..0000000 Binary files a/test/reference/overlapping-dash-caps.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/overlapping-dash-caps.base.rgb24.ref.png b/test/reference/overlapping-dash-caps.base.rgb24.ref.png deleted file mode 100644 index 849a516..0000000 Binary files a/test/reference/overlapping-dash-caps.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/overlapping-dash-caps.mask.argb32.ref.png b/test/reference/overlapping-dash-caps.mask.argb32.ref.png deleted file mode 100644 index 367d683..0000000 Binary files a/test/reference/overlapping-dash-caps.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/overlapping-dash-caps.mask.rgb24.ref.png b/test/reference/overlapping-dash-caps.mask.rgb24.ref.png deleted file mode 100644 index 367d683..0000000 Binary files a/test/reference/overlapping-dash-caps.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/overlapping-dash-caps.ref.png b/test/reference/overlapping-dash-caps.ref.png deleted file mode 100644 index 1a2abf7..0000000 Binary files a/test/reference/overlapping-dash-caps.ref.png and /dev/null differ diff --git a/test/reference/overlapping-dash-caps.traps.argb32.ref.png b/test/reference/overlapping-dash-caps.traps.argb32.ref.png deleted file mode 100644 index 849a516..0000000 Binary files a/test/reference/overlapping-dash-caps.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/overlapping-dash-caps.traps.rgb24.ref.png b/test/reference/overlapping-dash-caps.traps.rgb24.ref.png deleted file mode 100644 index 849a516..0000000 Binary files a/test/reference/overlapping-dash-caps.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/overlapping-glyphs.base.argb32.ref.png b/test/reference/overlapping-glyphs.base.argb32.ref.png deleted file mode 100644 index 11bf4e1..0000000 Binary files a/test/reference/overlapping-glyphs.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/overlapping-glyphs.base.rgb24.ref.png b/test/reference/overlapping-glyphs.base.rgb24.ref.png deleted file mode 100644 index 6b65510..0000000 Binary files a/test/reference/overlapping-glyphs.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/overlapping-glyphs.pdf.argb32.xfail.png b/test/reference/overlapping-glyphs.pdf.argb32.xfail.png deleted file mode 100644 index e3e4337..0000000 Binary files a/test/reference/overlapping-glyphs.pdf.argb32.xfail.png and /dev/null differ diff --git a/test/reference/overlapping-glyphs.pdf.rgb24.xfail.png b/test/reference/overlapping-glyphs.pdf.rgb24.xfail.png deleted file mode 100644 index a3f1d70..0000000 Binary files a/test/reference/overlapping-glyphs.pdf.rgb24.xfail.png and /dev/null differ diff --git a/test/reference/overlapping-glyphs.quartz.argb32.ref.png b/test/reference/overlapping-glyphs.quartz.argb32.ref.png deleted file mode 100644 index eaa0cb9..0000000 Binary files a/test/reference/overlapping-glyphs.quartz.argb32.ref.png and /dev/null differ diff --git a/test/reference/overlapping-glyphs.quartz.rgb24.ref.png b/test/reference/overlapping-glyphs.quartz.rgb24.ref.png deleted file mode 100644 index c2b5fc0..0000000 Binary files a/test/reference/overlapping-glyphs.quartz.rgb24.ref.png and /dev/null differ diff --git a/test/reference/overlapping-glyphs.ref.png b/test/reference/overlapping-glyphs.ref.png deleted file mode 100644 index 4ec4ee5..0000000 Binary files a/test/reference/overlapping-glyphs.ref.png and /dev/null differ diff --git a/test/reference/overlapping-glyphs.svg.argb32.ref.png b/test/reference/overlapping-glyphs.svg.argb32.ref.png deleted file mode 100644 index ce38499..0000000 Binary files a/test/reference/overlapping-glyphs.svg.argb32.ref.png and /dev/null differ diff --git a/test/reference/overlapping-glyphs.svg.rgb24.ref.png b/test/reference/overlapping-glyphs.svg.rgb24.ref.png deleted file mode 100644 index ce38499..0000000 Binary files a/test/reference/overlapping-glyphs.svg.rgb24.ref.png and /dev/null differ diff --git a/test/reference/overlapping-glyphs.traps.argb32.ref.png b/test/reference/overlapping-glyphs.traps.argb32.ref.png deleted file mode 100644 index 11bf4e1..0000000 Binary files a/test/reference/overlapping-glyphs.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/overlapping-glyphs.traps.rgb24.ref.png b/test/reference/overlapping-glyphs.traps.rgb24.ref.png deleted file mode 100644 index 6b65510..0000000 Binary files a/test/reference/overlapping-glyphs.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/paint-clip-fill-aa.base.argb32.ref.png b/test/reference/paint-clip-fill-aa.base.argb32.ref.png deleted file mode 100644 index 768322a..0000000 Binary files a/test/reference/paint-clip-fill-aa.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/paint-clip-fill-aa.base.rgb24.ref.png b/test/reference/paint-clip-fill-aa.base.rgb24.ref.png deleted file mode 100644 index 768322a..0000000 Binary files a/test/reference/paint-clip-fill-aa.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/paint-clip-fill-aa.ref.png b/test/reference/paint-clip-fill-aa.ref.png deleted file mode 100644 index a8cf417..0000000 Binary files a/test/reference/paint-clip-fill-aa.ref.png and /dev/null differ diff --git a/test/reference/paint-clip-fill-mono.base.argb32.ref.png b/test/reference/paint-clip-fill-mono.base.argb32.ref.png deleted file mode 100644 index 768322a..0000000 Binary files a/test/reference/paint-clip-fill-mono.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/paint-clip-fill-mono.base.rgb24.ref.png b/test/reference/paint-clip-fill-mono.base.rgb24.ref.png deleted file mode 100644 index 768322a..0000000 Binary files a/test/reference/paint-clip-fill-mono.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/paint-clip-fill-mono.ref.png b/test/reference/paint-clip-fill-mono.ref.png deleted file mode 100644 index a8cf417..0000000 Binary files a/test/reference/paint-clip-fill-mono.ref.png and /dev/null differ diff --git a/test/reference/paint-repeat.base.argb32.ref.png b/test/reference/paint-repeat.base.argb32.ref.png deleted file mode 100644 index 8cdd9b4..0000000 Binary files a/test/reference/paint-repeat.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/paint-repeat.base.rgb24.ref.png b/test/reference/paint-repeat.base.rgb24.ref.png deleted file mode 100644 index 8cdd9b4..0000000 Binary files a/test/reference/paint-repeat.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/paint-repeat.ref.png b/test/reference/paint-repeat.ref.png deleted file mode 100644 index 2cc48f3..0000000 Binary files a/test/reference/paint-repeat.ref.png and /dev/null differ diff --git a/test/reference/paint-source-alpha.base.argb32.ref.png b/test/reference/paint-source-alpha.base.argb32.ref.png deleted file mode 100644 index 65d9c17..0000000 Binary files a/test/reference/paint-source-alpha.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/paint-source-alpha.base.rgb24.ref.png b/test/reference/paint-source-alpha.base.rgb24.ref.png deleted file mode 100644 index 65d9c17..0000000 Binary files a/test/reference/paint-source-alpha.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/paint-source-alpha.image16.ref.png b/test/reference/paint-source-alpha.image16.ref.png deleted file mode 100644 index 12bd89d..0000000 Binary files a/test/reference/paint-source-alpha.image16.ref.png and /dev/null differ diff --git a/test/reference/paint-source-alpha.ref.png b/test/reference/paint-source-alpha.ref.png deleted file mode 100644 index 548bcd7..0000000 Binary files a/test/reference/paint-source-alpha.ref.png and /dev/null differ diff --git a/test/reference/paint-source-alpha.svg.ref.png b/test/reference/paint-source-alpha.svg.ref.png deleted file mode 100644 index 763bb59..0000000 Binary files a/test/reference/paint-source-alpha.svg.ref.png and /dev/null differ diff --git a/test/reference/paint-with-alpha-clip-mask.base.argb32.ref.png b/test/reference/paint-with-alpha-clip-mask.base.argb32.ref.png deleted file mode 100644 index 95746ff..0000000 Binary files a/test/reference/paint-with-alpha-clip-mask.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/paint-with-alpha-clip-mask.base.rgb24.ref.png b/test/reference/paint-with-alpha-clip-mask.base.rgb24.ref.png deleted file mode 100644 index 95746ff..0000000 Binary files a/test/reference/paint-with-alpha-clip-mask.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/paint-with-alpha-clip-mask.mask.argb32.ref.png b/test/reference/paint-with-alpha-clip-mask.mask.argb32.ref.png deleted file mode 100644 index 95746ff..0000000 Binary files a/test/reference/paint-with-alpha-clip-mask.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/paint-with-alpha-clip-mask.mask.rgb24.ref.png b/test/reference/paint-with-alpha-clip-mask.mask.rgb24.ref.png deleted file mode 100644 index 95746ff..0000000 Binary files a/test/reference/paint-with-alpha-clip-mask.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/paint-with-alpha-clip-mask.ref.png b/test/reference/paint-with-alpha-clip-mask.ref.png deleted file mode 100644 index 4ee4c41..0000000 Binary files a/test/reference/paint-with-alpha-clip-mask.ref.png and /dev/null differ diff --git a/test/reference/paint-with-alpha-clip-mask.traps.argb32.ref.png b/test/reference/paint-with-alpha-clip-mask.traps.argb32.ref.png deleted file mode 100644 index 201bd0d..0000000 Binary files a/test/reference/paint-with-alpha-clip-mask.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/paint-with-alpha-clip-mask.traps.rgb24.ref.png b/test/reference/paint-with-alpha-clip-mask.traps.rgb24.ref.png deleted file mode 100644 index 201bd0d..0000000 Binary files a/test/reference/paint-with-alpha-clip-mask.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/paint-with-alpha-clip.base.argb32.ref.png b/test/reference/paint-with-alpha-clip.base.argb32.ref.png deleted file mode 100644 index c1da67e..0000000 Binary files a/test/reference/paint-with-alpha-clip.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/paint-with-alpha-clip.base.rgb24.ref.png b/test/reference/paint-with-alpha-clip.base.rgb24.ref.png deleted file mode 100644 index c1da67e..0000000 Binary files a/test/reference/paint-with-alpha-clip.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/paint-with-alpha-clip.mask.argb32.ref.png b/test/reference/paint-with-alpha-clip.mask.argb32.ref.png deleted file mode 100644 index c1da67e..0000000 Binary files a/test/reference/paint-with-alpha-clip.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/paint-with-alpha-clip.mask.rgb24.ref.png b/test/reference/paint-with-alpha-clip.mask.rgb24.ref.png deleted file mode 100644 index c1da67e..0000000 Binary files a/test/reference/paint-with-alpha-clip.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/paint-with-alpha-clip.ref.png b/test/reference/paint-with-alpha-clip.ref.png deleted file mode 100644 index 4bad4e8..0000000 Binary files a/test/reference/paint-with-alpha-clip.ref.png and /dev/null differ diff --git a/test/reference/paint-with-alpha-clip.traps.argb32.ref.png b/test/reference/paint-with-alpha-clip.traps.argb32.ref.png deleted file mode 100644 index c1da67e..0000000 Binary files a/test/reference/paint-with-alpha-clip.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/paint-with-alpha-clip.traps.rgb24.ref.png b/test/reference/paint-with-alpha-clip.traps.rgb24.ref.png deleted file mode 100644 index c1da67e..0000000 Binary files a/test/reference/paint-with-alpha-clip.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/paint-with-alpha-group-clip.ref.png b/test/reference/paint-with-alpha-group-clip.ref.png deleted file mode 100644 index e2dfb06..0000000 Binary files a/test/reference/paint-with-alpha-group-clip.ref.png and /dev/null differ diff --git a/test/reference/paint-with-alpha-solid-clip.base.argb32.ref.png b/test/reference/paint-with-alpha-solid-clip.base.argb32.ref.png deleted file mode 100644 index 59d226d..0000000 Binary files a/test/reference/paint-with-alpha-solid-clip.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/paint-with-alpha-solid-clip.base.rgb24.ref.png b/test/reference/paint-with-alpha-solid-clip.base.rgb24.ref.png deleted file mode 100644 index 59d226d..0000000 Binary files a/test/reference/paint-with-alpha-solid-clip.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/paint-with-alpha-solid-clip.mask.argb32.ref.png b/test/reference/paint-with-alpha-solid-clip.mask.argb32.ref.png deleted file mode 100644 index 2cd2df2..0000000 Binary files a/test/reference/paint-with-alpha-solid-clip.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/paint-with-alpha-solid-clip.mask.rgb24.ref.png b/test/reference/paint-with-alpha-solid-clip.mask.rgb24.ref.png deleted file mode 100644 index 2cd2df2..0000000 Binary files a/test/reference/paint-with-alpha-solid-clip.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/paint-with-alpha-solid-clip.ref.png b/test/reference/paint-with-alpha-solid-clip.ref.png deleted file mode 100644 index 59d226d..0000000 Binary files a/test/reference/paint-with-alpha-solid-clip.ref.png and /dev/null differ diff --git a/test/reference/paint-with-alpha-solid-clip.traps.argb32.ref.png b/test/reference/paint-with-alpha-solid-clip.traps.argb32.ref.png deleted file mode 100644 index 2cd2df2..0000000 Binary files a/test/reference/paint-with-alpha-solid-clip.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/paint-with-alpha-solid-clip.traps.rgb24.ref.png b/test/reference/paint-with-alpha-solid-clip.traps.rgb24.ref.png deleted file mode 100644 index 2cd2df2..0000000 Binary files a/test/reference/paint-with-alpha-solid-clip.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/paint-with-alpha.base.argb32.ref.png b/test/reference/paint-with-alpha.base.argb32.ref.png deleted file mode 100644 index 65d9c17..0000000 Binary files a/test/reference/paint-with-alpha.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/paint-with-alpha.base.rgb24.ref.png b/test/reference/paint-with-alpha.base.rgb24.ref.png deleted file mode 100644 index 65d9c17..0000000 Binary files a/test/reference/paint-with-alpha.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/paint-with-alpha.image16.ref.png b/test/reference/paint-with-alpha.image16.ref.png deleted file mode 100644 index 12bd89d..0000000 Binary files a/test/reference/paint-with-alpha.image16.ref.png and /dev/null differ diff --git a/test/reference/paint-with-alpha.ref.png b/test/reference/paint-with-alpha.ref.png deleted file mode 100644 index ab7ce3e..0000000 Binary files a/test/reference/paint-with-alpha.ref.png and /dev/null differ diff --git a/test/reference/paint-with-alpha.svg.ref.png b/test/reference/paint-with-alpha.svg.ref.png deleted file mode 100644 index c0df8eb..0000000 Binary files a/test/reference/paint-with-alpha.svg.ref.png and /dev/null differ diff --git a/test/reference/paint.base.argb32.ref.png b/test/reference/paint.base.argb32.ref.png deleted file mode 100644 index 22cc7a1..0000000 Binary files a/test/reference/paint.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/paint.base.rgb24.ref.png b/test/reference/paint.base.rgb24.ref.png deleted file mode 100644 index 22cc7a1..0000000 Binary files a/test/reference/paint.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/paint.ref.png b/test/reference/paint.ref.png deleted file mode 100644 index fff03b3..0000000 Binary files a/test/reference/paint.ref.png and /dev/null differ diff --git a/test/reference/partial-clip-text-bottom.base.argb32.ref.png b/test/reference/partial-clip-text-bottom.base.argb32.ref.png deleted file mode 100644 index 6a299d4..0000000 Binary files a/test/reference/partial-clip-text-bottom.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/partial-clip-text-bottom.base.rgb24.ref.png b/test/reference/partial-clip-text-bottom.base.rgb24.ref.png deleted file mode 100644 index 6a299d4..0000000 Binary files a/test/reference/partial-clip-text-bottom.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/partial-clip-text-bottom.ref.png b/test/reference/partial-clip-text-bottom.ref.png deleted file mode 100644 index 6a299d4..0000000 Binary files a/test/reference/partial-clip-text-bottom.ref.png and /dev/null differ diff --git a/test/reference/partial-clip-text-left.base.argb32.ref.png b/test/reference/partial-clip-text-left.base.argb32.ref.png deleted file mode 100644 index 54a1a85..0000000 Binary files a/test/reference/partial-clip-text-left.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/partial-clip-text-left.base.rgb24.ref.png b/test/reference/partial-clip-text-left.base.rgb24.ref.png deleted file mode 100644 index 54a1a85..0000000 Binary files a/test/reference/partial-clip-text-left.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/partial-clip-text-left.ref.png b/test/reference/partial-clip-text-left.ref.png deleted file mode 100644 index 54a1a85..0000000 Binary files a/test/reference/partial-clip-text-left.ref.png and /dev/null differ diff --git a/test/reference/partial-clip-text-right.base.argb32.ref.png b/test/reference/partial-clip-text-right.base.argb32.ref.png deleted file mode 100644 index 2fbdca0..0000000 Binary files a/test/reference/partial-clip-text-right.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/partial-clip-text-right.base.rgb24.ref.png b/test/reference/partial-clip-text-right.base.rgb24.ref.png deleted file mode 100644 index 2fbdca0..0000000 Binary files a/test/reference/partial-clip-text-right.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/partial-clip-text-right.ref.png b/test/reference/partial-clip-text-right.ref.png deleted file mode 100644 index 2fbdca0..0000000 Binary files a/test/reference/partial-clip-text-right.ref.png and /dev/null differ diff --git a/test/reference/partial-clip-text-right.traps.ref.png b/test/reference/partial-clip-text-right.traps.ref.png deleted file mode 100644 index 2fbdca0..0000000 Binary files a/test/reference/partial-clip-text-right.traps.ref.png and /dev/null differ diff --git a/test/reference/partial-clip-text-top.base.argb32.ref.png b/test/reference/partial-clip-text-top.base.argb32.ref.png deleted file mode 100644 index d18475b..0000000 Binary files a/test/reference/partial-clip-text-top.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/partial-clip-text-top.base.rgb24.ref.png b/test/reference/partial-clip-text-top.base.rgb24.ref.png deleted file mode 100644 index d18475b..0000000 Binary files a/test/reference/partial-clip-text-top.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/partial-clip-text-top.ps.ref.png b/test/reference/partial-clip-text-top.ps.ref.png deleted file mode 100644 index 049bba5..0000000 Binary files a/test/reference/partial-clip-text-top.ps.ref.png and /dev/null differ diff --git a/test/reference/partial-clip-text-top.quartz.ref.png b/test/reference/partial-clip-text-top.quartz.ref.png deleted file mode 100644 index 33ac283..0000000 Binary files a/test/reference/partial-clip-text-top.quartz.ref.png and /dev/null differ diff --git a/test/reference/partial-clip-text-top.ref.png b/test/reference/partial-clip-text-top.ref.png deleted file mode 100644 index d18475b..0000000 Binary files a/test/reference/partial-clip-text-top.ref.png and /dev/null differ diff --git a/test/reference/partial-clip-text-top.svg.ref.png b/test/reference/partial-clip-text-top.svg.ref.png deleted file mode 100644 index dc3fc58..0000000 Binary files a/test/reference/partial-clip-text-top.svg.ref.png and /dev/null differ diff --git a/test/reference/partial-clip-text-top.traps.ref.png b/test/reference/partial-clip-text-top.traps.ref.png deleted file mode 100644 index d18475b..0000000 Binary files a/test/reference/partial-clip-text-top.traps.ref.png and /dev/null differ diff --git a/test/reference/partial-coverage-half-reference.base.argb32.ref.png b/test/reference/partial-coverage-half-reference.base.argb32.ref.png deleted file mode 100644 index 17f4ff0..0000000 Binary files a/test/reference/partial-coverage-half-reference.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/partial-coverage-half-reference.base.rgb24.ref.png b/test/reference/partial-coverage-half-reference.base.rgb24.ref.png deleted file mode 100644 index 17f4ff0..0000000 Binary files a/test/reference/partial-coverage-half-reference.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/partial-coverage-half-reference.ref.png b/test/reference/partial-coverage-half-reference.ref.png deleted file mode 100644 index 17f4ff0..0000000 Binary files a/test/reference/partial-coverage-half-reference.ref.png and /dev/null differ diff --git a/test/reference/partial-coverage-half-triangles.ref.png b/test/reference/partial-coverage-half-triangles.ref.png deleted file mode 100644 index 17f4ff0..0000000 Binary files a/test/reference/partial-coverage-half-triangles.ref.png and /dev/null differ diff --git a/test/reference/partial-coverage-intersecting-quads.ref.png b/test/reference/partial-coverage-intersecting-quads.ref.png deleted file mode 100644 index 17f4ff0..0000000 Binary files a/test/reference/partial-coverage-intersecting-quads.ref.png and /dev/null differ diff --git a/test/reference/partial-coverage-intersecting-quads.xfail.png b/test/reference/partial-coverage-intersecting-quads.xfail.png deleted file mode 100644 index a6635b9..0000000 Binary files a/test/reference/partial-coverage-intersecting-quads.xfail.png and /dev/null differ diff --git a/test/reference/partial-coverage-intersecting-triangles.ref.png b/test/reference/partial-coverage-intersecting-triangles.ref.png deleted file mode 100644 index 9e4a6fe..0000000 Binary files a/test/reference/partial-coverage-intersecting-triangles.ref.png and /dev/null differ diff --git a/test/reference/partial-coverage-overlap-half-triangles-eo.ref.png b/test/reference/partial-coverage-overlap-half-triangles-eo.ref.png deleted file mode 100644 index 17f4ff0..0000000 Binary files a/test/reference/partial-coverage-overlap-half-triangles-eo.ref.png and /dev/null differ diff --git a/test/reference/partial-coverage-overlap-half-triangles.ref.png b/test/reference/partial-coverage-overlap-half-triangles.ref.png deleted file mode 100644 index 17f4ff0..0000000 Binary files a/test/reference/partial-coverage-overlap-half-triangles.ref.png and /dev/null differ diff --git a/test/reference/partial-coverage-overlap-three-quarter-triangles.ref.png b/test/reference/partial-coverage-overlap-three-quarter-triangles.ref.png deleted file mode 100644 index ea16dc4..0000000 Binary files a/test/reference/partial-coverage-overlap-three-quarter-triangles.ref.png and /dev/null differ diff --git a/test/reference/partial-coverage-rectangles.ref.png b/test/reference/partial-coverage-rectangles.ref.png deleted file mode 100644 index 9e4a6fe..0000000 Binary files a/test/reference/partial-coverage-rectangles.ref.png and /dev/null differ diff --git a/test/reference/partial-coverage-reference.base.argb32.ref.png b/test/reference/partial-coverage-reference.base.argb32.ref.png deleted file mode 100644 index 9e4a6fe..0000000 Binary files a/test/reference/partial-coverage-reference.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/partial-coverage-reference.base.rgb24.ref.png b/test/reference/partial-coverage-reference.base.rgb24.ref.png deleted file mode 100644 index 9e4a6fe..0000000 Binary files a/test/reference/partial-coverage-reference.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/partial-coverage-reference.ref.png b/test/reference/partial-coverage-reference.ref.png deleted file mode 100644 index 9e4a6fe..0000000 Binary files a/test/reference/partial-coverage-reference.ref.png and /dev/null differ diff --git a/test/reference/partial-coverage-three-quarter-reference.base.argb32.ref.png b/test/reference/partial-coverage-three-quarter-reference.base.argb32.ref.png deleted file mode 100644 index ea16dc4..0000000 Binary files a/test/reference/partial-coverage-three-quarter-reference.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/partial-coverage-three-quarter-reference.base.rgb24.ref.png b/test/reference/partial-coverage-three-quarter-reference.base.rgb24.ref.png deleted file mode 100644 index ea16dc4..0000000 Binary files a/test/reference/partial-coverage-three-quarter-reference.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/partial-coverage-three-quarter-reference.ref.png b/test/reference/partial-coverage-three-quarter-reference.ref.png deleted file mode 100644 index ea16dc4..0000000 Binary files a/test/reference/partial-coverage-three-quarter-reference.ref.png and /dev/null differ diff --git a/test/reference/partial-coverage-triangles.ref.png b/test/reference/partial-coverage-triangles.ref.png deleted file mode 100644 index 9e4a6fe..0000000 Binary files a/test/reference/partial-coverage-triangles.ref.png and /dev/null differ diff --git a/test/reference/pass-through.base.argb32.ref.png b/test/reference/pass-through.base.argb32.ref.png deleted file mode 100644 index 058a192..0000000 Binary files a/test/reference/pass-through.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/pass-through.base.rgb24.ref.png b/test/reference/pass-through.base.rgb24.ref.png deleted file mode 100644 index 1be631a..0000000 Binary files a/test/reference/pass-through.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/pass-through.ref.png b/test/reference/pass-through.ref.png deleted file mode 100644 index 058a192..0000000 Binary files a/test/reference/pass-through.ref.png and /dev/null differ diff --git a/test/reference/path-append.base.argb32.ref.png b/test/reference/path-append.base.argb32.ref.png deleted file mode 100644 index 6fb6b2a..0000000 Binary files a/test/reference/path-append.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/path-append.base.rgb24.ref.png b/test/reference/path-append.base.rgb24.ref.png deleted file mode 100644 index 6fb6b2a..0000000 Binary files a/test/reference/path-append.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/path-append.image16.ref.png b/test/reference/path-append.image16.ref.png deleted file mode 100644 index 5d939bb..0000000 Binary files a/test/reference/path-append.image16.ref.png and /dev/null differ diff --git a/test/reference/path-append.ps.ref.png b/test/reference/path-append.ps.ref.png deleted file mode 100644 index 2c8df16..0000000 Binary files a/test/reference/path-append.ps.ref.png and /dev/null differ diff --git a/test/reference/path-append.quartz.ref.png b/test/reference/path-append.quartz.ref.png deleted file mode 100644 index 665d3cc..0000000 Binary files a/test/reference/path-append.quartz.ref.png and /dev/null differ diff --git a/test/reference/path-append.ref.png b/test/reference/path-append.ref.png deleted file mode 100644 index 33af231..0000000 Binary files a/test/reference/path-append.ref.png and /dev/null differ diff --git a/test/reference/path-append.test-fallback.ref.png b/test/reference/path-append.test-fallback.ref.png deleted file mode 100644 index fa72ac0..0000000 Binary files a/test/reference/path-append.test-fallback.ref.png and /dev/null differ diff --git a/test/reference/path-append.traps.argb32.ref.png b/test/reference/path-append.traps.argb32.ref.png deleted file mode 100644 index 6fb6b2a..0000000 Binary files a/test/reference/path-append.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/path-append.traps.rgb24.ref.png b/test/reference/path-append.traps.rgb24.ref.png deleted file mode 100644 index 6fb6b2a..0000000 Binary files a/test/reference/path-append.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/path-append.xlib-fallback.ref.png b/test/reference/path-append.xlib-fallback.ref.png deleted file mode 100644 index d34cce1..0000000 Binary files a/test/reference/path-append.xlib-fallback.ref.png and /dev/null differ diff --git a/test/reference/path-stroke-twice.base.argb32.ref.png b/test/reference/path-stroke-twice.base.argb32.ref.png deleted file mode 100644 index 48dd2c7..0000000 Binary files a/test/reference/path-stroke-twice.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/path-stroke-twice.base.rgb24.ref.png b/test/reference/path-stroke-twice.base.rgb24.ref.png deleted file mode 100644 index 48dd2c7..0000000 Binary files a/test/reference/path-stroke-twice.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/path-stroke-twice.image16.ref.png b/test/reference/path-stroke-twice.image16.ref.png deleted file mode 100644 index 9f162ad..0000000 Binary files a/test/reference/path-stroke-twice.image16.ref.png and /dev/null differ diff --git a/test/reference/path-stroke-twice.ps.ref.png b/test/reference/path-stroke-twice.ps.ref.png deleted file mode 100644 index 23e8147..0000000 Binary files a/test/reference/path-stroke-twice.ps.ref.png and /dev/null differ diff --git a/test/reference/path-stroke-twice.ref.png b/test/reference/path-stroke-twice.ref.png deleted file mode 100644 index 743c6ce..0000000 Binary files a/test/reference/path-stroke-twice.ref.png and /dev/null differ diff --git a/test/reference/path-stroke-twice.traps.argb32.ref.png b/test/reference/path-stroke-twice.traps.argb32.ref.png deleted file mode 100644 index 48dd2c7..0000000 Binary files a/test/reference/path-stroke-twice.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/path-stroke-twice.traps.rgb24.ref.png b/test/reference/path-stroke-twice.traps.rgb24.ref.png deleted file mode 100644 index 48dd2c7..0000000 Binary files a/test/reference/path-stroke-twice.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/pattern-getters.base.argb32.ref.png b/test/reference/pattern-getters.base.argb32.ref.png deleted file mode 100644 index 3cc39a8..0000000 Binary files a/test/reference/pattern-getters.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/pattern-getters.base.rgb24.ref.png b/test/reference/pattern-getters.base.rgb24.ref.png deleted file mode 100644 index 3cc39a8..0000000 Binary files a/test/reference/pattern-getters.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/pattern-getters.ref.png b/test/reference/pattern-getters.ref.png deleted file mode 100644 index 80304b0..0000000 Binary files a/test/reference/pattern-getters.ref.png and /dev/null differ diff --git a/test/reference/pdf-isolated-group.base.argb32.ref.png b/test/reference/pdf-isolated-group.base.argb32.ref.png deleted file mode 100644 index 6c8522c..0000000 Binary files a/test/reference/pdf-isolated-group.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/pdf-isolated-group.base.rgb24.ref.png b/test/reference/pdf-isolated-group.base.rgb24.ref.png deleted file mode 100644 index 6c8522c..0000000 Binary files a/test/reference/pdf-isolated-group.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/pdf-isolated-group.ref.png b/test/reference/pdf-isolated-group.ref.png deleted file mode 100644 index 6c8522c..0000000 Binary files a/test/reference/pdf-isolated-group.ref.png and /dev/null differ diff --git a/test/reference/pdf-surface-source.base.argb32.ref.png b/test/reference/pdf-surface-source.base.argb32.ref.png deleted file mode 100644 index 0182972..0000000 Binary files a/test/reference/pdf-surface-source.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/pdf-surface-source.base.rgb24.ref.png b/test/reference/pdf-surface-source.base.rgb24.ref.png deleted file mode 100644 index 0d68a82..0000000 Binary files a/test/reference/pdf-surface-source.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/pdf-surface-source.image16.ref.png b/test/reference/pdf-surface-source.image16.ref.png deleted file mode 100644 index 2a7460e..0000000 Binary files a/test/reference/pdf-surface-source.image16.ref.png and /dev/null differ diff --git a/test/reference/pdf-surface-source.ref.png b/test/reference/pdf-surface-source.ref.png deleted file mode 100644 index 0182972..0000000 Binary files a/test/reference/pdf-surface-source.ref.png and /dev/null differ diff --git a/test/reference/pdf-surface-source.svg12.argb32.xfail.png b/test/reference/pdf-surface-source.svg12.argb32.xfail.png deleted file mode 100644 index 6ebcaf9..0000000 Binary files a/test/reference/pdf-surface-source.svg12.argb32.xfail.png and /dev/null differ diff --git a/test/reference/pdf-surface-source.svg12.rgb24.xfail.png b/test/reference/pdf-surface-source.svg12.rgb24.xfail.png deleted file mode 100644 index 6ebcaf9..0000000 Binary files a/test/reference/pdf-surface-source.svg12.rgb24.xfail.png and /dev/null differ diff --git a/test/reference/pixman-downscale-best-24.ref.png b/test/reference/pixman-downscale-best-24.ref.png deleted file mode 100644 index df0f9c0..0000000 Binary files a/test/reference/pixman-downscale-best-24.ref.png and /dev/null differ diff --git a/test/reference/pixman-downscale-best-95.image.rgb24.ref.png b/test/reference/pixman-downscale-best-95.image.rgb24.ref.png deleted file mode 100644 index 5885c4b..0000000 Binary files a/test/reference/pixman-downscale-best-95.image.rgb24.ref.png and /dev/null differ diff --git a/test/reference/pixman-downscale-best-95.image16.rgb24.ref.png b/test/reference/pixman-downscale-best-95.image16.rgb24.ref.png deleted file mode 100644 index 3778399..0000000 Binary files a/test/reference/pixman-downscale-best-95.image16.rgb24.ref.png and /dev/null differ diff --git a/test/reference/pixman-downscale-best-95.pdf.ref.png b/test/reference/pixman-downscale-best-95.pdf.ref.png deleted file mode 100644 index 71b518e..0000000 Binary files a/test/reference/pixman-downscale-best-95.pdf.ref.png and /dev/null differ diff --git a/test/reference/pixman-downscale-best-95.ps2.ref.png b/test/reference/pixman-downscale-best-95.ps2.ref.png deleted file mode 100644 index 08983dc..0000000 Binary files a/test/reference/pixman-downscale-best-95.ps2.ref.png and /dev/null differ diff --git a/test/reference/pixman-downscale-best-95.ps3.ref.png b/test/reference/pixman-downscale-best-95.ps3.ref.png deleted file mode 100644 index 08983dc..0000000 Binary files a/test/reference/pixman-downscale-best-95.ps3.ref.png and /dev/null differ diff --git a/test/reference/pixman-downscale-best-95.recording.rgb24.ref.png b/test/reference/pixman-downscale-best-95.recording.rgb24.ref.png deleted file mode 100644 index 5885c4b..0000000 Binary files a/test/reference/pixman-downscale-best-95.recording.rgb24.ref.png and /dev/null differ diff --git a/test/reference/pixman-downscale-best-95.ref.png b/test/reference/pixman-downscale-best-95.ref.png deleted file mode 100644 index 1b98e8f..0000000 Binary files a/test/reference/pixman-downscale-best-95.ref.png and /dev/null differ diff --git a/test/reference/pixman-downscale-best-95.script.ref.png b/test/reference/pixman-downscale-best-95.script.ref.png deleted file mode 100644 index f3bd7ff..0000000 Binary files a/test/reference/pixman-downscale-best-95.script.ref.png and /dev/null differ diff --git a/test/reference/pixman-downscale-best-95.svg11.ref.png b/test/reference/pixman-downscale-best-95.svg11.ref.png deleted file mode 100644 index 777f448..0000000 Binary files a/test/reference/pixman-downscale-best-95.svg11.ref.png and /dev/null differ diff --git a/test/reference/pixman-downscale-best-95.svg12.ref.png b/test/reference/pixman-downscale-best-95.svg12.ref.png deleted file mode 100644 index 777f448..0000000 Binary files a/test/reference/pixman-downscale-best-95.svg12.ref.png and /dev/null differ diff --git a/test/reference/pixman-downscale-best-95.test-base.rgb24.ref.png b/test/reference/pixman-downscale-best-95.test-base.rgb24.ref.png deleted file mode 100644 index 5885c4b..0000000 Binary files a/test/reference/pixman-downscale-best-95.test-base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/pixman-downscale-best-95.test-fallback.rgb24.ref.png b/test/reference/pixman-downscale-best-95.test-fallback.rgb24.ref.png deleted file mode 100644 index 5885c4b..0000000 Binary files a/test/reference/pixman-downscale-best-95.test-fallback.rgb24.ref.png and /dev/null differ diff --git a/test/reference/pixman-downscale-best-95.test-mask.rgb24.ref.png b/test/reference/pixman-downscale-best-95.test-mask.rgb24.ref.png deleted file mode 100644 index 5885c4b..0000000 Binary files a/test/reference/pixman-downscale-best-95.test-mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/pixman-downscale-best-95.test-paginated.rgb24.ref.png b/test/reference/pixman-downscale-best-95.test-paginated.rgb24.ref.png deleted file mode 100644 index 5885c4b..0000000 Binary files a/test/reference/pixman-downscale-best-95.test-paginated.rgb24.ref.png and /dev/null differ diff --git a/test/reference/pixman-downscale-best-95.test-spans.rgb24.ref.png b/test/reference/pixman-downscale-best-95.test-spans.rgb24.ref.png deleted file mode 100644 index 5885c4b..0000000 Binary files a/test/reference/pixman-downscale-best-95.test-spans.rgb24.ref.png and /dev/null differ diff --git a/test/reference/pixman-downscale-best-95.test-traps.rgb24.ref.png b/test/reference/pixman-downscale-best-95.test-traps.rgb24.ref.png deleted file mode 100644 index 5885c4b..0000000 Binary files a/test/reference/pixman-downscale-best-95.test-traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/pixman-downscale-best-95.xcb-fallback.rgb24.ref.png b/test/reference/pixman-downscale-best-95.xcb-fallback.rgb24.ref.png deleted file mode 100644 index 5885c4b..0000000 Binary files a/test/reference/pixman-downscale-best-95.xcb-fallback.rgb24.ref.png and /dev/null differ diff --git a/test/reference/pixman-downscale-best-95.xcb-render-0_0.rgb24.ref.png b/test/reference/pixman-downscale-best-95.xcb-render-0_0.rgb24.ref.png deleted file mode 100644 index 5885c4b..0000000 Binary files a/test/reference/pixman-downscale-best-95.xcb-render-0_0.rgb24.ref.png and /dev/null differ diff --git a/test/reference/pixman-downscale-best-95.xcb-window&.rgb24.ref.png b/test/reference/pixman-downscale-best-95.xcb-window&.rgb24.ref.png deleted file mode 100644 index 777f448..0000000 Binary files a/test/reference/pixman-downscale-best-95.xcb-window&.rgb24.ref.png and /dev/null differ diff --git a/test/reference/pixman-downscale-best-95.xcb-window.rgb24.ref.png b/test/reference/pixman-downscale-best-95.xcb-window.rgb24.ref.png deleted file mode 100644 index 777f448..0000000 Binary files a/test/reference/pixman-downscale-best-95.xcb-window.rgb24.ref.png and /dev/null differ diff --git a/test/reference/pixman-downscale-best-95.xcb.ref.png b/test/reference/pixman-downscale-best-95.xcb.ref.png deleted file mode 100644 index 777f448..0000000 Binary files a/test/reference/pixman-downscale-best-95.xcb.ref.png and /dev/null differ diff --git a/test/reference/pixman-downscale-best-95.xlib-fallback.rgb24.ref.png b/test/reference/pixman-downscale-best-95.xlib-fallback.rgb24.ref.png deleted file mode 100644 index 5885c4b..0000000 Binary files a/test/reference/pixman-downscale-best-95.xlib-fallback.rgb24.ref.png and /dev/null differ diff --git a/test/reference/pixman-downscale-best-95.xlib-render-0_0.rgb24.ref.png b/test/reference/pixman-downscale-best-95.xlib-render-0_0.rgb24.ref.png deleted file mode 100644 index 5885c4b..0000000 Binary files a/test/reference/pixman-downscale-best-95.xlib-render-0_0.rgb24.ref.png and /dev/null differ diff --git a/test/reference/pixman-downscale-best-95.xlib-window.rgb24.ref.png b/test/reference/pixman-downscale-best-95.xlib-window.rgb24.ref.png deleted file mode 100644 index 777f448..0000000 Binary files a/test/reference/pixman-downscale-best-95.xlib-window.rgb24.ref.png and /dev/null differ diff --git a/test/reference/pixman-downscale-best-95.xlib.ref.png b/test/reference/pixman-downscale-best-95.xlib.ref.png deleted file mode 100644 index 777f448..0000000 Binary files a/test/reference/pixman-downscale-best-95.xlib.ref.png and /dev/null differ diff --git a/test/reference/pixman-downscale-best-96.ref.png b/test/reference/pixman-downscale-best-96.ref.png deleted file mode 100644 index 0d68a82..0000000 Binary files a/test/reference/pixman-downscale-best-96.ref.png and /dev/null differ diff --git a/test/reference/pixman-downscale-bilinear-24.ref.png b/test/reference/pixman-downscale-bilinear-24.ref.png deleted file mode 100644 index df0f9c0..0000000 Binary files a/test/reference/pixman-downscale-bilinear-24.ref.png and /dev/null differ diff --git a/test/reference/pixman-downscale-bilinear-95.image16.rgb24.ref.png b/test/reference/pixman-downscale-bilinear-95.image16.rgb24.ref.png deleted file mode 100644 index 9d67251..0000000 Binary files a/test/reference/pixman-downscale-bilinear-95.image16.rgb24.ref.png and /dev/null differ diff --git a/test/reference/pixman-downscale-bilinear-95.pdf.ref.png b/test/reference/pixman-downscale-bilinear-95.pdf.ref.png deleted file mode 100644 index 71b518e..0000000 Binary files a/test/reference/pixman-downscale-bilinear-95.pdf.ref.png and /dev/null differ diff --git a/test/reference/pixman-downscale-bilinear-95.ps2.ref.png b/test/reference/pixman-downscale-bilinear-95.ps2.ref.png deleted file mode 100644 index 08983dc..0000000 Binary files a/test/reference/pixman-downscale-bilinear-95.ps2.ref.png and /dev/null differ diff --git a/test/reference/pixman-downscale-bilinear-95.ps3.ref.png b/test/reference/pixman-downscale-bilinear-95.ps3.ref.png deleted file mode 100644 index 08983dc..0000000 Binary files a/test/reference/pixman-downscale-bilinear-95.ps3.ref.png and /dev/null differ diff --git a/test/reference/pixman-downscale-bilinear-95.ref.png b/test/reference/pixman-downscale-bilinear-95.ref.png deleted file mode 100644 index 777f448..0000000 Binary files a/test/reference/pixman-downscale-bilinear-95.ref.png and /dev/null differ diff --git a/test/reference/pixman-downscale-bilinear-95.script.ref.png b/test/reference/pixman-downscale-bilinear-95.script.ref.png deleted file mode 100644 index fa4c04c..0000000 Binary files a/test/reference/pixman-downscale-bilinear-95.script.ref.png and /dev/null differ diff --git a/test/reference/pixman-downscale-bilinear-96.ref.png b/test/reference/pixman-downscale-bilinear-96.ref.png deleted file mode 100644 index 0d68a82..0000000 Binary files a/test/reference/pixman-downscale-bilinear-96.ref.png and /dev/null differ diff --git a/test/reference/pixman-downscale-fast-24.ref.png b/test/reference/pixman-downscale-fast-24.ref.png deleted file mode 100644 index df0f9c0..0000000 Binary files a/test/reference/pixman-downscale-fast-24.ref.png and /dev/null differ diff --git a/test/reference/pixman-downscale-fast-95.image16.rgb24.ref.png b/test/reference/pixman-downscale-fast-95.image16.rgb24.ref.png deleted file mode 100644 index a2b6715..0000000 Binary files a/test/reference/pixman-downscale-fast-95.image16.rgb24.ref.png and /dev/null differ diff --git a/test/reference/pixman-downscale-fast-95.pdf.ref.png b/test/reference/pixman-downscale-fast-95.pdf.ref.png deleted file mode 100644 index 71b518e..0000000 Binary files a/test/reference/pixman-downscale-fast-95.pdf.ref.png and /dev/null differ diff --git a/test/reference/pixman-downscale-fast-95.ps2.ref.png b/test/reference/pixman-downscale-fast-95.ps2.ref.png deleted file mode 100644 index af93ae7..0000000 Binary files a/test/reference/pixman-downscale-fast-95.ps2.ref.png and /dev/null differ diff --git a/test/reference/pixman-downscale-fast-95.ps3.ref.png b/test/reference/pixman-downscale-fast-95.ps3.ref.png deleted file mode 100644 index af93ae7..0000000 Binary files a/test/reference/pixman-downscale-fast-95.ps3.ref.png and /dev/null differ diff --git a/test/reference/pixman-downscale-fast-95.ref.png b/test/reference/pixman-downscale-fast-95.ref.png deleted file mode 100644 index 3340423..0000000 Binary files a/test/reference/pixman-downscale-fast-95.ref.png and /dev/null differ diff --git a/test/reference/pixman-downscale-fast-95.svg11.ref.png b/test/reference/pixman-downscale-fast-95.svg11.ref.png deleted file mode 100644 index 777f448..0000000 Binary files a/test/reference/pixman-downscale-fast-95.svg11.ref.png and /dev/null differ diff --git a/test/reference/pixman-downscale-fast-95.svg12.ref.png b/test/reference/pixman-downscale-fast-95.svg12.ref.png deleted file mode 100644 index 777f448..0000000 Binary files a/test/reference/pixman-downscale-fast-95.svg12.ref.png and /dev/null differ diff --git a/test/reference/pixman-downscale-fast-96.ref.png b/test/reference/pixman-downscale-fast-96.ref.png deleted file mode 100644 index 0d68a82..0000000 Binary files a/test/reference/pixman-downscale-fast-96.ref.png and /dev/null differ diff --git a/test/reference/pixman-downscale-good-24.ref.png b/test/reference/pixman-downscale-good-24.ref.png deleted file mode 100644 index df0f9c0..0000000 Binary files a/test/reference/pixman-downscale-good-24.ref.png and /dev/null differ diff --git a/test/reference/pixman-downscale-good-95.image16.rgb24.ref.png b/test/reference/pixman-downscale-good-95.image16.rgb24.ref.png deleted file mode 100644 index 9d67251..0000000 Binary files a/test/reference/pixman-downscale-good-95.image16.rgb24.ref.png and /dev/null differ diff --git a/test/reference/pixman-downscale-good-95.pdf.ref.png b/test/reference/pixman-downscale-good-95.pdf.ref.png deleted file mode 100644 index 71b518e..0000000 Binary files a/test/reference/pixman-downscale-good-95.pdf.ref.png and /dev/null differ diff --git a/test/reference/pixman-downscale-good-95.ps2.ref.png b/test/reference/pixman-downscale-good-95.ps2.ref.png deleted file mode 100644 index 08983dc..0000000 Binary files a/test/reference/pixman-downscale-good-95.ps2.ref.png and /dev/null differ diff --git a/test/reference/pixman-downscale-good-95.ps3.ref.png b/test/reference/pixman-downscale-good-95.ps3.ref.png deleted file mode 100644 index 08983dc..0000000 Binary files a/test/reference/pixman-downscale-good-95.ps3.ref.png and /dev/null differ diff --git a/test/reference/pixman-downscale-good-95.ref.png b/test/reference/pixman-downscale-good-95.ref.png deleted file mode 100644 index 777f448..0000000 Binary files a/test/reference/pixman-downscale-good-95.ref.png and /dev/null differ diff --git a/test/reference/pixman-downscale-good-95.script.ref.png b/test/reference/pixman-downscale-good-95.script.ref.png deleted file mode 100644 index fa4c04c..0000000 Binary files a/test/reference/pixman-downscale-good-95.script.ref.png and /dev/null differ diff --git a/test/reference/pixman-downscale-good-96.ref.png b/test/reference/pixman-downscale-good-96.ref.png deleted file mode 100644 index 0d68a82..0000000 Binary files a/test/reference/pixman-downscale-good-96.ref.png and /dev/null differ diff --git a/test/reference/pixman-downscale-nearest-24.ref.png b/test/reference/pixman-downscale-nearest-24.ref.png deleted file mode 100644 index df0f9c0..0000000 Binary files a/test/reference/pixman-downscale-nearest-24.ref.png and /dev/null differ diff --git a/test/reference/pixman-downscale-nearest-95.image16.rgb24.ref.png b/test/reference/pixman-downscale-nearest-95.image16.rgb24.ref.png deleted file mode 100644 index a2b6715..0000000 Binary files a/test/reference/pixman-downscale-nearest-95.image16.rgb24.ref.png and /dev/null differ diff --git a/test/reference/pixman-downscale-nearest-95.pdf.ref.png b/test/reference/pixman-downscale-nearest-95.pdf.ref.png deleted file mode 100644 index 71b518e..0000000 Binary files a/test/reference/pixman-downscale-nearest-95.pdf.ref.png and /dev/null differ diff --git a/test/reference/pixman-downscale-nearest-95.ps2.ref.png b/test/reference/pixman-downscale-nearest-95.ps2.ref.png deleted file mode 100644 index af93ae7..0000000 Binary files a/test/reference/pixman-downscale-nearest-95.ps2.ref.png and /dev/null differ diff --git a/test/reference/pixman-downscale-nearest-95.ps3.ref.png b/test/reference/pixman-downscale-nearest-95.ps3.ref.png deleted file mode 100644 index af93ae7..0000000 Binary files a/test/reference/pixman-downscale-nearest-95.ps3.ref.png and /dev/null differ diff --git a/test/reference/pixman-downscale-nearest-95.ref.png b/test/reference/pixman-downscale-nearest-95.ref.png deleted file mode 100644 index 3340423..0000000 Binary files a/test/reference/pixman-downscale-nearest-95.ref.png and /dev/null differ diff --git a/test/reference/pixman-downscale-nearest-95.svg11.ref.png b/test/reference/pixman-downscale-nearest-95.svg11.ref.png deleted file mode 100644 index 777f448..0000000 Binary files a/test/reference/pixman-downscale-nearest-95.svg11.ref.png and /dev/null differ diff --git a/test/reference/pixman-downscale-nearest-95.svg12.ref.png b/test/reference/pixman-downscale-nearest-95.svg12.ref.png deleted file mode 100644 index 777f448..0000000 Binary files a/test/reference/pixman-downscale-nearest-95.svg12.ref.png and /dev/null differ diff --git a/test/reference/pixman-downscale-nearest-96.ref.png b/test/reference/pixman-downscale-nearest-96.ref.png deleted file mode 100644 index 0d68a82..0000000 Binary files a/test/reference/pixman-downscale-nearest-96.ref.png and /dev/null differ diff --git a/test/reference/pixman-rotate.base.argb32.ref.png b/test/reference/pixman-rotate.base.argb32.ref.png deleted file mode 100644 index 7e47a4d..0000000 Binary files a/test/reference/pixman-rotate.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/pixman-rotate.base.rgb24.ref.png b/test/reference/pixman-rotate.base.rgb24.ref.png deleted file mode 100644 index 397acbe..0000000 Binary files a/test/reference/pixman-rotate.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/pixman-rotate.ps.argb32.ref.png b/test/reference/pixman-rotate.ps.argb32.ref.png deleted file mode 100644 index 0e91688..0000000 Binary files a/test/reference/pixman-rotate.ps.argb32.ref.png and /dev/null differ diff --git a/test/reference/pixman-rotate.ref.png b/test/reference/pixman-rotate.ref.png deleted file mode 100644 index 7e47a4d..0000000 Binary files a/test/reference/pixman-rotate.ref.png and /dev/null differ diff --git a/test/reference/ps-eps.ref.png b/test/reference/ps-eps.ref.png deleted file mode 100644 index 9aadb08..0000000 Binary files a/test/reference/ps-eps.ref.png and /dev/null differ diff --git a/test/reference/ps-surface-source.base.argb32.ref.png b/test/reference/ps-surface-source.base.argb32.ref.png deleted file mode 100644 index 0182972..0000000 Binary files a/test/reference/ps-surface-source.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/ps-surface-source.base.rgb24.ref.png b/test/reference/ps-surface-source.base.rgb24.ref.png deleted file mode 100644 index 0d68a82..0000000 Binary files a/test/reference/ps-surface-source.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/ps-surface-source.image16.ref.png b/test/reference/ps-surface-source.image16.ref.png deleted file mode 100644 index 2a7460e..0000000 Binary files a/test/reference/ps-surface-source.image16.ref.png and /dev/null differ diff --git a/test/reference/ps-surface-source.ref.png b/test/reference/ps-surface-source.ref.png deleted file mode 100644 index 0182972..0000000 Binary files a/test/reference/ps-surface-source.ref.png and /dev/null differ diff --git a/test/reference/ps-surface-source.svg12.argb32.xfail.png b/test/reference/ps-surface-source.svg12.argb32.xfail.png deleted file mode 100644 index 6ebcaf9..0000000 Binary files a/test/reference/ps-surface-source.svg12.argb32.xfail.png and /dev/null differ diff --git a/test/reference/ps-surface-source.svg12.rgb24.xfail.png b/test/reference/ps-surface-source.svg12.rgb24.xfail.png deleted file mode 100644 index 6ebcaf9..0000000 Binary files a/test/reference/ps-surface-source.svg12.rgb24.xfail.png and /dev/null differ diff --git a/test/reference/pthread-same-source.image16.ref.png b/test/reference/pthread-same-source.image16.ref.png deleted file mode 100644 index 67eb22f..0000000 Binary files a/test/reference/pthread-same-source.image16.ref.png and /dev/null differ diff --git a/test/reference/pthread-same-source.quartz.xfail.png b/test/reference/pthread-same-source.quartz.xfail.png deleted file mode 100644 index ffed619..0000000 Binary files a/test/reference/pthread-same-source.quartz.xfail.png and /dev/null differ diff --git a/test/reference/pthread-same-source.ref.png b/test/reference/pthread-same-source.ref.png deleted file mode 100644 index c1c186b..0000000 Binary files a/test/reference/pthread-same-source.ref.png and /dev/null differ diff --git a/test/reference/pthread-show-text.base.argb32.ref.png b/test/reference/pthread-show-text.base.argb32.ref.png deleted file mode 100644 index 90d0af3..0000000 Binary files a/test/reference/pthread-show-text.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/pthread-show-text.base.rgb24.ref.png b/test/reference/pthread-show-text.base.rgb24.ref.png deleted file mode 100644 index 90d0af3..0000000 Binary files a/test/reference/pthread-show-text.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/pthread-show-text.image16.ref.png b/test/reference/pthread-show-text.image16.ref.png deleted file mode 100644 index a1d1af5..0000000 Binary files a/test/reference/pthread-show-text.image16.ref.png and /dev/null differ diff --git a/test/reference/pthread-show-text.pdf.ref.png b/test/reference/pthread-show-text.pdf.ref.png deleted file mode 100644 index bb72fc2..0000000 Binary files a/test/reference/pthread-show-text.pdf.ref.png and /dev/null differ diff --git a/test/reference/pthread-show-text.ps.ref.png b/test/reference/pthread-show-text.ps.ref.png deleted file mode 100644 index 807b73f..0000000 Binary files a/test/reference/pthread-show-text.ps.ref.png and /dev/null differ diff --git a/test/reference/pthread-show-text.quartz.ref.png b/test/reference/pthread-show-text.quartz.ref.png deleted file mode 100644 index cc9bb25..0000000 Binary files a/test/reference/pthread-show-text.quartz.ref.png and /dev/null differ diff --git a/test/reference/pthread-show-text.ref.png b/test/reference/pthread-show-text.ref.png deleted file mode 100644 index 90d0af3..0000000 Binary files a/test/reference/pthread-show-text.ref.png and /dev/null differ diff --git a/test/reference/pthread-show-text.traps.ref.png b/test/reference/pthread-show-text.traps.ref.png deleted file mode 100644 index 90d0af3..0000000 Binary files a/test/reference/pthread-show-text.traps.ref.png and /dev/null differ diff --git a/test/reference/pthread-show-text.xlib-fallback.ref.png b/test/reference/pthread-show-text.xlib-fallback.ref.png deleted file mode 100644 index d96abed..0000000 Binary files a/test/reference/pthread-show-text.xlib-fallback.ref.png and /dev/null differ diff --git a/test/reference/pthread-similar.base.argb32.ref.png b/test/reference/pthread-similar.base.argb32.ref.png deleted file mode 100644 index a22210d..0000000 Binary files a/test/reference/pthread-similar.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/pthread-similar.base.rgb24.ref.png b/test/reference/pthread-similar.base.rgb24.ref.png deleted file mode 100644 index a22210d..0000000 Binary files a/test/reference/pthread-similar.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/pthread-similar.ref.png b/test/reference/pthread-similar.ref.png deleted file mode 100644 index c8763ba..0000000 Binary files a/test/reference/pthread-similar.ref.png and /dev/null differ diff --git a/test/reference/push-group-color.base.argb32.ref.png b/test/reference/push-group-color.base.argb32.ref.png deleted file mode 100644 index 11b1014..0000000 Binary files a/test/reference/push-group-color.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/push-group-color.base.rgb24.ref.png b/test/reference/push-group-color.base.rgb24.ref.png deleted file mode 100644 index 11b1014..0000000 Binary files a/test/reference/push-group-color.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/push-group-color.image16.ref.png b/test/reference/push-group-color.image16.ref.png deleted file mode 100644 index 6378b75..0000000 Binary files a/test/reference/push-group-color.image16.ref.png and /dev/null differ diff --git a/test/reference/push-group-color.ps2.ref.png b/test/reference/push-group-color.ps2.ref.png deleted file mode 100644 index daf827e..0000000 Binary files a/test/reference/push-group-color.ps2.ref.png and /dev/null differ diff --git a/test/reference/push-group-color.ps3.ref.png b/test/reference/push-group-color.ps3.ref.png deleted file mode 100644 index 291fcec..0000000 Binary files a/test/reference/push-group-color.ps3.ref.png and /dev/null differ diff --git a/test/reference/push-group-color.quartz.ref.png b/test/reference/push-group-color.quartz.ref.png deleted file mode 100644 index bca7c56..0000000 Binary files a/test/reference/push-group-color.quartz.ref.png and /dev/null differ diff --git a/test/reference/push-group-color.ref.png b/test/reference/push-group-color.ref.png deleted file mode 100644 index a2842b0..0000000 Binary files a/test/reference/push-group-color.ref.png and /dev/null differ diff --git a/test/reference/push-group-color.traps.argb32.ref.png b/test/reference/push-group-color.traps.argb32.ref.png deleted file mode 100644 index 11b1014..0000000 Binary files a/test/reference/push-group-color.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/push-group-color.traps.rgb24.ref.png b/test/reference/push-group-color.traps.rgb24.ref.png deleted file mode 100644 index 11b1014..0000000 Binary files a/test/reference/push-group-color.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/push-group-path-offset.base.argb32.ref.png b/test/reference/push-group-path-offset.base.argb32.ref.png deleted file mode 100644 index b836a91..0000000 Binary files a/test/reference/push-group-path-offset.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/push-group-path-offset.base.rgb24.ref.png b/test/reference/push-group-path-offset.base.rgb24.ref.png deleted file mode 100644 index b836a91..0000000 Binary files a/test/reference/push-group-path-offset.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/push-group-path-offset.ref.png b/test/reference/push-group-path-offset.ref.png deleted file mode 100644 index b836a91..0000000 Binary files a/test/reference/push-group-path-offset.ref.png and /dev/null differ diff --git a/test/reference/push-group.argb32.ref.png b/test/reference/push-group.argb32.ref.png deleted file mode 100644 index 28dcf0c..0000000 Binary files a/test/reference/push-group.argb32.ref.png and /dev/null differ diff --git a/test/reference/push-group.base.argb32.ref.png b/test/reference/push-group.base.argb32.ref.png deleted file mode 100644 index 9d27f45..0000000 Binary files a/test/reference/push-group.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/push-group.base.rgb24.ref.png b/test/reference/push-group.base.rgb24.ref.png deleted file mode 100644 index e19694f..0000000 Binary files a/test/reference/push-group.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/push-group.image16.ref.png b/test/reference/push-group.image16.ref.png deleted file mode 100644 index 9990405..0000000 Binary files a/test/reference/push-group.image16.ref.png and /dev/null differ diff --git a/test/reference/push-group.quartz.argb32.ref.png b/test/reference/push-group.quartz.argb32.ref.png deleted file mode 100644 index b3867b9..0000000 Binary files a/test/reference/push-group.quartz.argb32.ref.png and /dev/null differ diff --git a/test/reference/push-group.quartz.rgb24.ref.png b/test/reference/push-group.quartz.rgb24.ref.png deleted file mode 100644 index 1fd6ef3..0000000 Binary files a/test/reference/push-group.quartz.rgb24.ref.png and /dev/null differ diff --git a/test/reference/push-group.rgb24.ref.png b/test/reference/push-group.rgb24.ref.png deleted file mode 100644 index ca67068..0000000 Binary files a/test/reference/push-group.rgb24.ref.png and /dev/null differ diff --git a/test/reference/push-group.traps.argb32.ref.png b/test/reference/push-group.traps.argb32.ref.png deleted file mode 100644 index 9d27f45..0000000 Binary files a/test/reference/push-group.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/push-group.traps.rgb24.ref.png b/test/reference/push-group.traps.rgb24.ref.png deleted file mode 100644 index e19694f..0000000 Binary files a/test/reference/push-group.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/quartz-surface-source.ps2.ref.png b/test/reference/quartz-surface-source.ps2.ref.png deleted file mode 100644 index 1023158..0000000 Binary files a/test/reference/quartz-surface-source.ps2.ref.png and /dev/null differ diff --git a/test/reference/quartz-surface-source.ps3.ref.png b/test/reference/quartz-surface-source.ps3.ref.png deleted file mode 100644 index 1023158..0000000 Binary files a/test/reference/quartz-surface-source.ps3.ref.png and /dev/null differ diff --git a/test/reference/quartz-surface-source.ref.png b/test/reference/quartz-surface-source.ref.png deleted file mode 100644 index 0182972..0000000 Binary files a/test/reference/quartz-surface-source.ref.png and /dev/null differ diff --git a/test/reference/radial-gradient-extend.base.argb32.ref.png b/test/reference/radial-gradient-extend.base.argb32.ref.png deleted file mode 100644 index 3d7de5e..0000000 Binary files a/test/reference/radial-gradient-extend.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/radial-gradient-extend.base.rgb24.ref.png b/test/reference/radial-gradient-extend.base.rgb24.ref.png deleted file mode 100644 index 3d7de5e..0000000 Binary files a/test/reference/radial-gradient-extend.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/radial-gradient-extend.mask.argb32.ref.png b/test/reference/radial-gradient-extend.mask.argb32.ref.png deleted file mode 100644 index 3d7de5e..0000000 Binary files a/test/reference/radial-gradient-extend.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/radial-gradient-extend.mask.rgb24.ref.png b/test/reference/radial-gradient-extend.mask.rgb24.ref.png deleted file mode 100644 index 3d7de5e..0000000 Binary files a/test/reference/radial-gradient-extend.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/radial-gradient-extend.ps3.ref.png b/test/reference/radial-gradient-extend.ps3.ref.png deleted file mode 100644 index e84041e..0000000 Binary files a/test/reference/radial-gradient-extend.ps3.ref.png and /dev/null differ diff --git a/test/reference/radial-gradient-extend.ref.png b/test/reference/radial-gradient-extend.ref.png deleted file mode 100644 index 3d7de5e..0000000 Binary files a/test/reference/radial-gradient-extend.ref.png and /dev/null differ diff --git a/test/reference/radial-gradient-extend.traps.argb32.ref.png b/test/reference/radial-gradient-extend.traps.argb32.ref.png deleted file mode 100644 index 3d7de5e..0000000 Binary files a/test/reference/radial-gradient-extend.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/radial-gradient-extend.traps.rgb24.ref.png b/test/reference/radial-gradient-extend.traps.rgb24.ref.png deleted file mode 100644 index 3d7de5e..0000000 Binary files a/test/reference/radial-gradient-extend.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/radial-gradient-mask-source.argb32.ref.png b/test/reference/radial-gradient-mask-source.argb32.ref.png deleted file mode 100644 index 2bf65b3..0000000 Binary files a/test/reference/radial-gradient-mask-source.argb32.ref.png and /dev/null differ diff --git a/test/reference/radial-gradient-mask-source.base.argb32.ref.png b/test/reference/radial-gradient-mask-source.base.argb32.ref.png deleted file mode 100644 index 2bf65b3..0000000 Binary files a/test/reference/radial-gradient-mask-source.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/radial-gradient-mask-source.base.rgb24.ref.png b/test/reference/radial-gradient-mask-source.base.rgb24.ref.png deleted file mode 100644 index 5533519..0000000 Binary files a/test/reference/radial-gradient-mask-source.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/radial-gradient-mask-source.image16.ref.png b/test/reference/radial-gradient-mask-source.image16.ref.png deleted file mode 100644 index edb93a9..0000000 Binary files a/test/reference/radial-gradient-mask-source.image16.ref.png and /dev/null differ diff --git a/test/reference/radial-gradient-mask-source.mask.rgb24.ref.png b/test/reference/radial-gradient-mask-source.mask.rgb24.ref.png deleted file mode 100644 index 5533519..0000000 Binary files a/test/reference/radial-gradient-mask-source.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/radial-gradient-mask-source.quartz.argb32.ref.png b/test/reference/radial-gradient-mask-source.quartz.argb32.ref.png deleted file mode 100644 index 5f734f6..0000000 Binary files a/test/reference/radial-gradient-mask-source.quartz.argb32.ref.png and /dev/null differ diff --git a/test/reference/radial-gradient-mask-source.quartz.rgb24.ref.png b/test/reference/radial-gradient-mask-source.quartz.rgb24.ref.png deleted file mode 100644 index 4ae71f7..0000000 Binary files a/test/reference/radial-gradient-mask-source.quartz.rgb24.ref.png and /dev/null differ diff --git a/test/reference/radial-gradient-mask-source.traps.rgb24.ref.png b/test/reference/radial-gradient-mask-source.traps.rgb24.ref.png deleted file mode 100644 index 5533519..0000000 Binary files a/test/reference/radial-gradient-mask-source.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/radial-gradient-mask.base.argb32.ref.png b/test/reference/radial-gradient-mask.base.argb32.ref.png deleted file mode 100644 index 4db39aa..0000000 Binary files a/test/reference/radial-gradient-mask.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/radial-gradient-mask.base.rgb24.ref.png b/test/reference/radial-gradient-mask.base.rgb24.ref.png deleted file mode 100644 index 4db39aa..0000000 Binary files a/test/reference/radial-gradient-mask.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/radial-gradient-mask.image16.ref.png b/test/reference/radial-gradient-mask.image16.ref.png deleted file mode 100644 index 78712ca..0000000 Binary files a/test/reference/radial-gradient-mask.image16.ref.png and /dev/null differ diff --git a/test/reference/radial-gradient-mask.quartz.ref.png b/test/reference/radial-gradient-mask.quartz.ref.png deleted file mode 100644 index c1bd506..0000000 Binary files a/test/reference/radial-gradient-mask.quartz.ref.png and /dev/null differ diff --git a/test/reference/radial-gradient-mask.ref.png b/test/reference/radial-gradient-mask.ref.png deleted file mode 100644 index 4db39aa..0000000 Binary files a/test/reference/radial-gradient-mask.ref.png and /dev/null differ diff --git a/test/reference/radial-gradient-one-stop.base.argb32.ref.png b/test/reference/radial-gradient-one-stop.base.argb32.ref.png deleted file mode 100644 index fb35be6..0000000 Binary files a/test/reference/radial-gradient-one-stop.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/radial-gradient-one-stop.base.rgb24.ref.png b/test/reference/radial-gradient-one-stop.base.rgb24.ref.png deleted file mode 100644 index fb35be6..0000000 Binary files a/test/reference/radial-gradient-one-stop.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/radial-gradient-one-stop.quartz.ref.png b/test/reference/radial-gradient-one-stop.quartz.ref.png deleted file mode 100644 index da991b1..0000000 Binary files a/test/reference/radial-gradient-one-stop.quartz.ref.png and /dev/null differ diff --git a/test/reference/radial-gradient-one-stop.ref.png b/test/reference/radial-gradient-one-stop.ref.png deleted file mode 100644 index fb35be6..0000000 Binary files a/test/reference/radial-gradient-one-stop.ref.png and /dev/null differ diff --git a/test/reference/radial-gradient-source.base.argb32.ref.png b/test/reference/radial-gradient-source.base.argb32.ref.png deleted file mode 100644 index 4ab4796..0000000 Binary files a/test/reference/radial-gradient-source.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/radial-gradient-source.base.rgb24.ref.png b/test/reference/radial-gradient-source.base.rgb24.ref.png deleted file mode 100644 index afaa241..0000000 Binary files a/test/reference/radial-gradient-source.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/radial-gradient-source.image16.ref.png b/test/reference/radial-gradient-source.image16.ref.png deleted file mode 100644 index f992b6f..0000000 Binary files a/test/reference/radial-gradient-source.image16.ref.png and /dev/null differ diff --git a/test/reference/radial-gradient-source.quartz.argb32.ref.png b/test/reference/radial-gradient-source.quartz.argb32.ref.png deleted file mode 100644 index 421c0b9..0000000 Binary files a/test/reference/radial-gradient-source.quartz.argb32.ref.png and /dev/null differ diff --git a/test/reference/radial-gradient-source.quartz.rgb24.ref.png b/test/reference/radial-gradient-source.quartz.rgb24.ref.png deleted file mode 100644 index 22f2b90..0000000 Binary files a/test/reference/radial-gradient-source.quartz.rgb24.ref.png and /dev/null differ diff --git a/test/reference/radial-gradient-source.ref.png b/test/reference/radial-gradient-source.ref.png deleted file mode 100644 index 4ab4796..0000000 Binary files a/test/reference/radial-gradient-source.ref.png and /dev/null differ diff --git a/test/reference/radial-gradient.base.argb32.ref.png b/test/reference/radial-gradient.base.argb32.ref.png deleted file mode 100644 index a2cbbc8..0000000 Binary files a/test/reference/radial-gradient.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/radial-gradient.base.rgb24.ref.png b/test/reference/radial-gradient.base.rgb24.ref.png deleted file mode 100644 index a2cbbc8..0000000 Binary files a/test/reference/radial-gradient.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/radial-gradient.image16.ref.png b/test/reference/radial-gradient.image16.ref.png deleted file mode 100644 index 91202d3..0000000 Binary files a/test/reference/radial-gradient.image16.ref.png and /dev/null differ diff --git a/test/reference/radial-gradient.quartz.ref.png b/test/reference/radial-gradient.quartz.ref.png deleted file mode 100644 index f01c6eb..0000000 Binary files a/test/reference/radial-gradient.quartz.ref.png and /dev/null differ diff --git a/test/reference/radial-gradient.ref.png b/test/reference/radial-gradient.ref.png deleted file mode 100644 index a2cbbc8..0000000 Binary files a/test/reference/radial-gradient.ref.png and /dev/null differ diff --git a/test/reference/radial-outer-focus.base.argb32.ref.png b/test/reference/radial-outer-focus.base.argb32.ref.png deleted file mode 100644 index 21f0bf6..0000000 Binary files a/test/reference/radial-outer-focus.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/radial-outer-focus.base.rgb24.ref.png b/test/reference/radial-outer-focus.base.rgb24.ref.png deleted file mode 100644 index 21f0bf6..0000000 Binary files a/test/reference/radial-outer-focus.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/radial-outer-focus.mask.argb32.ref.png b/test/reference/radial-outer-focus.mask.argb32.ref.png deleted file mode 100644 index 21f0bf6..0000000 Binary files a/test/reference/radial-outer-focus.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/radial-outer-focus.mask.rgb24.ref.png b/test/reference/radial-outer-focus.mask.rgb24.ref.png deleted file mode 100644 index 21f0bf6..0000000 Binary files a/test/reference/radial-outer-focus.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/radial-outer-focus.traps.argb32.ref.png b/test/reference/radial-outer-focus.traps.argb32.ref.png deleted file mode 100644 index 21f0bf6..0000000 Binary files a/test/reference/radial-outer-focus.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/radial-outer-focus.traps.rgb24.ref.png b/test/reference/radial-outer-focus.traps.rgb24.ref.png deleted file mode 100644 index 21f0bf6..0000000 Binary files a/test/reference/radial-outer-focus.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/radial-outer-focus.xfail.png b/test/reference/radial-outer-focus.xfail.png deleted file mode 100644 index 53e9f82..0000000 Binary files a/test/reference/radial-outer-focus.xfail.png and /dev/null differ diff --git a/test/reference/random-clip.base.argb32.ref.png b/test/reference/random-clip.base.argb32.ref.png deleted file mode 100644 index 2750fb1..0000000 Binary files a/test/reference/random-clip.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/random-clip.base.argb32.xfail.png b/test/reference/random-clip.base.argb32.xfail.png deleted file mode 100644 index 15f9158..0000000 Binary files a/test/reference/random-clip.base.argb32.xfail.png and /dev/null differ diff --git a/test/reference/random-clip.base.rgb24.ref.png b/test/reference/random-clip.base.rgb24.ref.png deleted file mode 100644 index 2750fb1..0000000 Binary files a/test/reference/random-clip.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/random-clip.base.rgb24.xfail.png b/test/reference/random-clip.base.rgb24.xfail.png deleted file mode 100644 index 15f9158..0000000 Binary files a/test/reference/random-clip.base.rgb24.xfail.png and /dev/null differ diff --git a/test/reference/random-clip.mask.argb32.ref.png b/test/reference/random-clip.mask.argb32.ref.png deleted file mode 100644 index 41643cb..0000000 Binary files a/test/reference/random-clip.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/random-clip.mask.rgb24.ref.png b/test/reference/random-clip.mask.rgb24.ref.png deleted file mode 100644 index 41643cb..0000000 Binary files a/test/reference/random-clip.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/random-clip.ref.png b/test/reference/random-clip.ref.png deleted file mode 100644 index de7a605..0000000 Binary files a/test/reference/random-clip.ref.png and /dev/null differ diff --git a/test/reference/random-clip.traps.argb32.ref.png b/test/reference/random-clip.traps.argb32.ref.png deleted file mode 100644 index 01cc60a..0000000 Binary files a/test/reference/random-clip.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/random-clip.traps.rgb24.ref.png b/test/reference/random-clip.traps.rgb24.ref.png deleted file mode 100644 index 01cc60a..0000000 Binary files a/test/reference/random-clip.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/random-intersections-curves-eo.base.argb32.ref.png b/test/reference/random-intersections-curves-eo.base.argb32.ref.png deleted file mode 100644 index ee10cb4..0000000 Binary files a/test/reference/random-intersections-curves-eo.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/random-intersections-curves-eo.base.rgb24.ref.png b/test/reference/random-intersections-curves-eo.base.rgb24.ref.png deleted file mode 100644 index ee10cb4..0000000 Binary files a/test/reference/random-intersections-curves-eo.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/random-intersections-curves-eo.image16.ref.png b/test/reference/random-intersections-curves-eo.image16.ref.png deleted file mode 100644 index 0663270..0000000 Binary files a/test/reference/random-intersections-curves-eo.image16.ref.png and /dev/null differ diff --git a/test/reference/random-intersections-curves-eo.pdf.ref.png b/test/reference/random-intersections-curves-eo.pdf.ref.png deleted file mode 100644 index befa3c8..0000000 Binary files a/test/reference/random-intersections-curves-eo.pdf.ref.png and /dev/null differ diff --git a/test/reference/random-intersections-curves-eo.ps.ref.png b/test/reference/random-intersections-curves-eo.ps.ref.png deleted file mode 100644 index 374ace9..0000000 Binary files a/test/reference/random-intersections-curves-eo.ps.ref.png and /dev/null differ diff --git a/test/reference/random-intersections-curves-eo.quartz.ref.png b/test/reference/random-intersections-curves-eo.quartz.ref.png deleted file mode 100644 index 2a44a5a..0000000 Binary files a/test/reference/random-intersections-curves-eo.quartz.ref.png and /dev/null differ diff --git a/test/reference/random-intersections-curves-eo.ref.png b/test/reference/random-intersections-curves-eo.ref.png deleted file mode 100644 index 1c12f22..0000000 Binary files a/test/reference/random-intersections-curves-eo.ref.png and /dev/null differ diff --git a/test/reference/random-intersections-curves-eo.traps.argb32.ref.png b/test/reference/random-intersections-curves-eo.traps.argb32.ref.png deleted file mode 100644 index ee10cb4..0000000 Binary files a/test/reference/random-intersections-curves-eo.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/random-intersections-curves-eo.traps.rgb24.ref.png b/test/reference/random-intersections-curves-eo.traps.rgb24.ref.png deleted file mode 100644 index ee10cb4..0000000 Binary files a/test/reference/random-intersections-curves-eo.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/random-intersections-curves-eo.xlib-fallback.ref.png b/test/reference/random-intersections-curves-eo.xlib-fallback.ref.png deleted file mode 100644 index d91af0b..0000000 Binary files a/test/reference/random-intersections-curves-eo.xlib-fallback.ref.png and /dev/null differ diff --git a/test/reference/random-intersections-curves-nz.base.argb32.ref.png b/test/reference/random-intersections-curves-nz.base.argb32.ref.png deleted file mode 100644 index 77f8129..0000000 Binary files a/test/reference/random-intersections-curves-nz.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/random-intersections-curves-nz.base.rgb24.ref.png b/test/reference/random-intersections-curves-nz.base.rgb24.ref.png deleted file mode 100644 index 77f8129..0000000 Binary files a/test/reference/random-intersections-curves-nz.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/random-intersections-curves-nz.image16.ref.png b/test/reference/random-intersections-curves-nz.image16.ref.png deleted file mode 100644 index 5fbc711..0000000 Binary files a/test/reference/random-intersections-curves-nz.image16.ref.png and /dev/null differ diff --git a/test/reference/random-intersections-curves-nz.pdf.ref.png b/test/reference/random-intersections-curves-nz.pdf.ref.png deleted file mode 100644 index a374934..0000000 Binary files a/test/reference/random-intersections-curves-nz.pdf.ref.png and /dev/null differ diff --git a/test/reference/random-intersections-curves-nz.ps.ref.png b/test/reference/random-intersections-curves-nz.ps.ref.png deleted file mode 100644 index 6cc5814..0000000 Binary files a/test/reference/random-intersections-curves-nz.ps.ref.png and /dev/null differ diff --git a/test/reference/random-intersections-curves-nz.quartz.ref.png b/test/reference/random-intersections-curves-nz.quartz.ref.png deleted file mode 100644 index cf799bb..0000000 Binary files a/test/reference/random-intersections-curves-nz.quartz.ref.png and /dev/null differ diff --git a/test/reference/random-intersections-curves-nz.ref.png b/test/reference/random-intersections-curves-nz.ref.png deleted file mode 100644 index f251d27..0000000 Binary files a/test/reference/random-intersections-curves-nz.ref.png and /dev/null differ diff --git a/test/reference/random-intersections-curves-nz.traps.argb32.ref.png b/test/reference/random-intersections-curves-nz.traps.argb32.ref.png deleted file mode 100644 index 77f8129..0000000 Binary files a/test/reference/random-intersections-curves-nz.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/random-intersections-curves-nz.traps.rgb24.ref.png b/test/reference/random-intersections-curves-nz.traps.rgb24.ref.png deleted file mode 100644 index 77f8129..0000000 Binary files a/test/reference/random-intersections-curves-nz.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/random-intersections-curves-nz.xlib-fallback.ref.png b/test/reference/random-intersections-curves-nz.xlib-fallback.ref.png deleted file mode 100644 index f72f8f1..0000000 Binary files a/test/reference/random-intersections-curves-nz.xlib-fallback.ref.png and /dev/null differ diff --git a/test/reference/random-intersections-eo.base.argb32.ref.png b/test/reference/random-intersections-eo.base.argb32.ref.png deleted file mode 100644 index 037f926..0000000 Binary files a/test/reference/random-intersections-eo.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/random-intersections-eo.base.rgb24.ref.png b/test/reference/random-intersections-eo.base.rgb24.ref.png deleted file mode 100644 index 037f926..0000000 Binary files a/test/reference/random-intersections-eo.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/random-intersections-eo.image16.ref.png b/test/reference/random-intersections-eo.image16.ref.png deleted file mode 100644 index cf214d4..0000000 Binary files a/test/reference/random-intersections-eo.image16.ref.png and /dev/null differ diff --git a/test/reference/random-intersections-eo.ps.ref.png b/test/reference/random-intersections-eo.ps.ref.png deleted file mode 100644 index 49b359a..0000000 Binary files a/test/reference/random-intersections-eo.ps.ref.png and /dev/null differ diff --git a/test/reference/random-intersections-eo.quartz.ref.png b/test/reference/random-intersections-eo.quartz.ref.png deleted file mode 100644 index 859abb0..0000000 Binary files a/test/reference/random-intersections-eo.quartz.ref.png and /dev/null differ diff --git a/test/reference/random-intersections-eo.ref.png b/test/reference/random-intersections-eo.ref.png deleted file mode 100644 index ccd3f80..0000000 Binary files a/test/reference/random-intersections-eo.ref.png and /dev/null differ diff --git a/test/reference/random-intersections-eo.traps.argb32.ref.png b/test/reference/random-intersections-eo.traps.argb32.ref.png deleted file mode 100644 index 037f926..0000000 Binary files a/test/reference/random-intersections-eo.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/random-intersections-eo.traps.rgb24.ref.png b/test/reference/random-intersections-eo.traps.rgb24.ref.png deleted file mode 100644 index 037f926..0000000 Binary files a/test/reference/random-intersections-eo.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/random-intersections-nonzero.base.argb32.ref.png b/test/reference/random-intersections-nonzero.base.argb32.ref.png deleted file mode 100644 index 7eb9a0a..0000000 Binary files a/test/reference/random-intersections-nonzero.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/random-intersections-nonzero.base.rgb24.ref.png b/test/reference/random-intersections-nonzero.base.rgb24.ref.png deleted file mode 100644 index 7eb9a0a..0000000 Binary files a/test/reference/random-intersections-nonzero.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/random-intersections-nonzero.image16.ref.png b/test/reference/random-intersections-nonzero.image16.ref.png deleted file mode 100644 index 370abd9..0000000 Binary files a/test/reference/random-intersections-nonzero.image16.ref.png and /dev/null differ diff --git a/test/reference/random-intersections-nonzero.ps.ref.png b/test/reference/random-intersections-nonzero.ps.ref.png deleted file mode 100644 index 53a151f..0000000 Binary files a/test/reference/random-intersections-nonzero.ps.ref.png and /dev/null differ diff --git a/test/reference/random-intersections-nonzero.quartz.ref.png b/test/reference/random-intersections-nonzero.quartz.ref.png deleted file mode 100644 index f4310ea..0000000 Binary files a/test/reference/random-intersections-nonzero.quartz.ref.png and /dev/null differ diff --git a/test/reference/random-intersections-nonzero.ref.png b/test/reference/random-intersections-nonzero.ref.png deleted file mode 100644 index 6f02ea0..0000000 Binary files a/test/reference/random-intersections-nonzero.ref.png and /dev/null differ diff --git a/test/reference/random-intersections-nonzero.traps.argb32.ref.png b/test/reference/random-intersections-nonzero.traps.argb32.ref.png deleted file mode 100644 index 7eb9a0a..0000000 Binary files a/test/reference/random-intersections-nonzero.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/random-intersections-nonzero.traps.rgb24.ref.png b/test/reference/random-intersections-nonzero.traps.rgb24.ref.png deleted file mode 100644 index 7eb9a0a..0000000 Binary files a/test/reference/random-intersections-nonzero.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/raster-source.base.argb32.ref.png b/test/reference/raster-source.base.argb32.ref.png deleted file mode 100644 index ac5e560..0000000 Binary files a/test/reference/raster-source.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/raster-source.base.rgb24.ref.png b/test/reference/raster-source.base.rgb24.ref.png deleted file mode 100644 index ac5e560..0000000 Binary files a/test/reference/raster-source.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/raster-source.ps.ref.png b/test/reference/raster-source.ps.ref.png deleted file mode 100644 index 2ffc114..0000000 Binary files a/test/reference/raster-source.ps.ref.png and /dev/null differ diff --git a/test/reference/raster-source.ref.png b/test/reference/raster-source.ref.png deleted file mode 100644 index ac5e560..0000000 Binary files a/test/reference/raster-source.ref.png and /dev/null differ diff --git a/test/reference/record-extend-none-similar.base.argb32.ref.png b/test/reference/record-extend-none-similar.base.argb32.ref.png deleted file mode 100644 index 7d5c49f..0000000 Binary files a/test/reference/record-extend-none-similar.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/record-extend-none-similar.base.rgb24.ref.png b/test/reference/record-extend-none-similar.base.rgb24.ref.png deleted file mode 100644 index 7d5c49f..0000000 Binary files a/test/reference/record-extend-none-similar.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record-extend-none-similar.ref.png b/test/reference/record-extend-none-similar.ref.png deleted file mode 100644 index d63c31c..0000000 Binary files a/test/reference/record-extend-none-similar.ref.png and /dev/null differ diff --git a/test/reference/record-extend-none-similar.traps.argb32.ref.png b/test/reference/record-extend-none-similar.traps.argb32.ref.png deleted file mode 100644 index 7d5c49f..0000000 Binary files a/test/reference/record-extend-none-similar.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/record-extend-none-similar.traps.rgb24.ref.png b/test/reference/record-extend-none-similar.traps.rgb24.ref.png deleted file mode 100644 index 7d5c49f..0000000 Binary files a/test/reference/record-extend-none-similar.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record-extend-none.base.argb32.ref.png b/test/reference/record-extend-none.base.argb32.ref.png deleted file mode 100644 index d63c31c..0000000 Binary files a/test/reference/record-extend-none.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/record-extend-none.base.rgb24.ref.png b/test/reference/record-extend-none.base.rgb24.ref.png deleted file mode 100644 index d63c31c..0000000 Binary files a/test/reference/record-extend-none.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record-extend-none.ref.png b/test/reference/record-extend-none.ref.png deleted file mode 100644 index d63c31c..0000000 Binary files a/test/reference/record-extend-none.ref.png and /dev/null differ diff --git a/test/reference/record-extend-pad-similar.base.argb32.ref.png b/test/reference/record-extend-pad-similar.base.argb32.ref.png deleted file mode 100644 index da3de96..0000000 Binary files a/test/reference/record-extend-pad-similar.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/record-extend-pad-similar.base.rgb24.ref.png b/test/reference/record-extend-pad-similar.base.rgb24.ref.png deleted file mode 100644 index da3de96..0000000 Binary files a/test/reference/record-extend-pad-similar.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record-extend-pad-similar.ref.png b/test/reference/record-extend-pad-similar.ref.png deleted file mode 100644 index 1291525..0000000 Binary files a/test/reference/record-extend-pad-similar.ref.png and /dev/null differ diff --git a/test/reference/record-extend-pad-similar.traps.argb32.ref.png b/test/reference/record-extend-pad-similar.traps.argb32.ref.png deleted file mode 100644 index da3de96..0000000 Binary files a/test/reference/record-extend-pad-similar.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/record-extend-pad-similar.traps.rgb24.ref.png b/test/reference/record-extend-pad-similar.traps.rgb24.ref.png deleted file mode 100644 index da3de96..0000000 Binary files a/test/reference/record-extend-pad-similar.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record-extend-pad.base.argb32.ref.png b/test/reference/record-extend-pad.base.argb32.ref.png deleted file mode 100644 index 1291525..0000000 Binary files a/test/reference/record-extend-pad.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/record-extend-pad.base.rgb24.ref.png b/test/reference/record-extend-pad.base.rgb24.ref.png deleted file mode 100644 index 1291525..0000000 Binary files a/test/reference/record-extend-pad.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record-extend-pad.ref.png b/test/reference/record-extend-pad.ref.png deleted file mode 100644 index 1291525..0000000 Binary files a/test/reference/record-extend-pad.ref.png and /dev/null differ diff --git a/test/reference/record-extend-reflect-similar.base.argb32.ref.png b/test/reference/record-extend-reflect-similar.base.argb32.ref.png deleted file mode 100644 index da3de96..0000000 Binary files a/test/reference/record-extend-reflect-similar.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/record-extend-reflect-similar.base.rgb24.ref.png b/test/reference/record-extend-reflect-similar.base.rgb24.ref.png deleted file mode 100644 index da3de96..0000000 Binary files a/test/reference/record-extend-reflect-similar.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record-extend-reflect-similar.ref.png b/test/reference/record-extend-reflect-similar.ref.png deleted file mode 100644 index aec5c94..0000000 Binary files a/test/reference/record-extend-reflect-similar.ref.png and /dev/null differ diff --git a/test/reference/record-extend-reflect-similar.traps.argb32.ref.png b/test/reference/record-extend-reflect-similar.traps.argb32.ref.png deleted file mode 100644 index da3de96..0000000 Binary files a/test/reference/record-extend-reflect-similar.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/record-extend-reflect-similar.traps.rgb24.ref.png b/test/reference/record-extend-reflect-similar.traps.rgb24.ref.png deleted file mode 100644 index da3de96..0000000 Binary files a/test/reference/record-extend-reflect-similar.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record-extend-reflect.base.argb32.ref.png b/test/reference/record-extend-reflect.base.argb32.ref.png deleted file mode 100644 index aec5c94..0000000 Binary files a/test/reference/record-extend-reflect.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/record-extend-reflect.base.rgb24.ref.png b/test/reference/record-extend-reflect.base.rgb24.ref.png deleted file mode 100644 index aec5c94..0000000 Binary files a/test/reference/record-extend-reflect.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record-extend-reflect.ref.png b/test/reference/record-extend-reflect.ref.png deleted file mode 100644 index aec5c94..0000000 Binary files a/test/reference/record-extend-reflect.ref.png and /dev/null differ diff --git a/test/reference/record-extend-repeat-similar.base.argb32.ref.png b/test/reference/record-extend-repeat-similar.base.argb32.ref.png deleted file mode 100644 index da3de96..0000000 Binary files a/test/reference/record-extend-repeat-similar.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/record-extend-repeat-similar.base.rgb24.ref.png b/test/reference/record-extend-repeat-similar.base.rgb24.ref.png deleted file mode 100644 index da3de96..0000000 Binary files a/test/reference/record-extend-repeat-similar.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record-extend-repeat-similar.ref.png b/test/reference/record-extend-repeat-similar.ref.png deleted file mode 100644 index d4db9bf..0000000 Binary files a/test/reference/record-extend-repeat-similar.ref.png and /dev/null differ diff --git a/test/reference/record-extend-repeat-similar.traps.argb32.ref.png b/test/reference/record-extend-repeat-similar.traps.argb32.ref.png deleted file mode 100644 index da3de96..0000000 Binary files a/test/reference/record-extend-repeat-similar.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/record-extend-repeat-similar.traps.rgb24.ref.png b/test/reference/record-extend-repeat-similar.traps.rgb24.ref.png deleted file mode 100644 index da3de96..0000000 Binary files a/test/reference/record-extend-repeat-similar.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record-extend-repeat.base.argb32.ref.png b/test/reference/record-extend-repeat.base.argb32.ref.png deleted file mode 100644 index d4db9bf..0000000 Binary files a/test/reference/record-extend-repeat.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/record-extend-repeat.base.rgb24.ref.png b/test/reference/record-extend-repeat.base.rgb24.ref.png deleted file mode 100644 index d4db9bf..0000000 Binary files a/test/reference/record-extend-repeat.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record-extend-repeat.ref.png b/test/reference/record-extend-repeat.ref.png deleted file mode 100644 index d4db9bf..0000000 Binary files a/test/reference/record-extend-repeat.ref.png and /dev/null differ diff --git a/test/reference/record-fill-alpha.base.argb32.ref.png b/test/reference/record-fill-alpha.base.argb32.ref.png deleted file mode 100644 index 5a2ebad..0000000 Binary files a/test/reference/record-fill-alpha.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/record-fill-alpha.base.rgb24.ref.png b/test/reference/record-fill-alpha.base.rgb24.ref.png deleted file mode 100644 index 5a2ebad..0000000 Binary files a/test/reference/record-fill-alpha.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record-fill-alpha.base.xfail.png b/test/reference/record-fill-alpha.base.xfail.png deleted file mode 100644 index 5a2ebad..0000000 Binary files a/test/reference/record-fill-alpha.base.xfail.png and /dev/null differ diff --git a/test/reference/record-fill-alpha.image16.rgb24.ref.png b/test/reference/record-fill-alpha.image16.rgb24.ref.png deleted file mode 100644 index 8ba164e..0000000 Binary files a/test/reference/record-fill-alpha.image16.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record-fill-alpha.ref.png b/test/reference/record-fill-alpha.ref.png deleted file mode 100644 index 25c1ac6..0000000 Binary files a/test/reference/record-fill-alpha.ref.png and /dev/null differ diff --git a/test/reference/record-fill-alpha.traps.argb32.ref.png b/test/reference/record-fill-alpha.traps.argb32.ref.png deleted file mode 100644 index 85df919..0000000 Binary files a/test/reference/record-fill-alpha.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/record-fill-alpha.traps.rgb24.ref.png b/test/reference/record-fill-alpha.traps.rgb24.ref.png deleted file mode 100644 index 85df919..0000000 Binary files a/test/reference/record-fill-alpha.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record-fill-alpha.xfail.png b/test/reference/record-fill-alpha.xfail.png deleted file mode 100644 index 630c024..0000000 Binary files a/test/reference/record-fill-alpha.xfail.png and /dev/null differ diff --git a/test/reference/record-mesh.base.argb32.ref.png b/test/reference/record-mesh.base.argb32.ref.png deleted file mode 100644 index 4921ba3..0000000 Binary files a/test/reference/record-mesh.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/record-mesh.base.rgb24.ref.png b/test/reference/record-mesh.base.rgb24.ref.png deleted file mode 100644 index 4921ba3..0000000 Binary files a/test/reference/record-mesh.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record-mesh.image16.rgb24.ref.png b/test/reference/record-mesh.image16.rgb24.ref.png deleted file mode 100644 index df7bd03..0000000 Binary files a/test/reference/record-mesh.image16.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record-mesh.ref.png b/test/reference/record-mesh.ref.png deleted file mode 100644 index 4921ba3..0000000 Binary files a/test/reference/record-mesh.ref.png and /dev/null differ diff --git a/test/reference/record-paint-alpha-clip-mask.base.argb32.ref.png b/test/reference/record-paint-alpha-clip-mask.base.argb32.ref.png deleted file mode 100644 index f7bb8ff..0000000 Binary files a/test/reference/record-paint-alpha-clip-mask.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/record-paint-alpha-clip-mask.base.rgb24.ref.png b/test/reference/record-paint-alpha-clip-mask.base.rgb24.ref.png deleted file mode 100644 index f7bb8ff..0000000 Binary files a/test/reference/record-paint-alpha-clip-mask.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record-paint-alpha-clip-mask.base.xfail.png b/test/reference/record-paint-alpha-clip-mask.base.xfail.png deleted file mode 100644 index f7bb8ff..0000000 Binary files a/test/reference/record-paint-alpha-clip-mask.base.xfail.png and /dev/null differ diff --git a/test/reference/record-paint-alpha-clip-mask.image16.rgb24.ref.png b/test/reference/record-paint-alpha-clip-mask.image16.rgb24.ref.png deleted file mode 100644 index f069c13..0000000 Binary files a/test/reference/record-paint-alpha-clip-mask.image16.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record-paint-alpha-clip-mask.ref.png b/test/reference/record-paint-alpha-clip-mask.ref.png deleted file mode 100644 index 4ee4c41..0000000 Binary files a/test/reference/record-paint-alpha-clip-mask.ref.png and /dev/null differ diff --git a/test/reference/record-paint-alpha-clip-mask.traps.argb32.ref.png b/test/reference/record-paint-alpha-clip-mask.traps.argb32.ref.png deleted file mode 100644 index 201bd0d..0000000 Binary files a/test/reference/record-paint-alpha-clip-mask.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/record-paint-alpha-clip-mask.traps.rgb24.ref.png b/test/reference/record-paint-alpha-clip-mask.traps.rgb24.ref.png deleted file mode 100644 index 201bd0d..0000000 Binary files a/test/reference/record-paint-alpha-clip-mask.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record-paint-alpha-clip-mask.xfail.png b/test/reference/record-paint-alpha-clip-mask.xfail.png deleted file mode 100644 index 3bc8cd5..0000000 Binary files a/test/reference/record-paint-alpha-clip-mask.xfail.png and /dev/null differ diff --git a/test/reference/record-paint-alpha-clip.base.argb32.ref.png b/test/reference/record-paint-alpha-clip.base.argb32.ref.png deleted file mode 100644 index 9f6841e..0000000 Binary files a/test/reference/record-paint-alpha-clip.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/record-paint-alpha-clip.base.rgb24.ref.png b/test/reference/record-paint-alpha-clip.base.rgb24.ref.png deleted file mode 100644 index 9f6841e..0000000 Binary files a/test/reference/record-paint-alpha-clip.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record-paint-alpha-clip.image16.rgb24.ref.png b/test/reference/record-paint-alpha-clip.image16.rgb24.ref.png deleted file mode 100644 index 6eb92c3..0000000 Binary files a/test/reference/record-paint-alpha-clip.image16.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record-paint-alpha-clip.ref.png b/test/reference/record-paint-alpha-clip.ref.png deleted file mode 100644 index 4bad4e8..0000000 Binary files a/test/reference/record-paint-alpha-clip.ref.png and /dev/null differ diff --git a/test/reference/record-paint-alpha-clip.traps.argb32.ref.png b/test/reference/record-paint-alpha-clip.traps.argb32.ref.png deleted file mode 100644 index c1da67e..0000000 Binary files a/test/reference/record-paint-alpha-clip.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/record-paint-alpha-clip.traps.rgb24.ref.png b/test/reference/record-paint-alpha-clip.traps.rgb24.ref.png deleted file mode 100644 index c1da67e..0000000 Binary files a/test/reference/record-paint-alpha-clip.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record-paint-alpha-solid-clip.base.argb32.ref.png b/test/reference/record-paint-alpha-solid-clip.base.argb32.ref.png deleted file mode 100644 index 59d226d..0000000 Binary files a/test/reference/record-paint-alpha-solid-clip.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/record-paint-alpha-solid-clip.base.rgb24.ref.png b/test/reference/record-paint-alpha-solid-clip.base.rgb24.ref.png deleted file mode 100644 index 59d226d..0000000 Binary files a/test/reference/record-paint-alpha-solid-clip.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record-paint-alpha-solid-clip.image16.rgb24.ref.png b/test/reference/record-paint-alpha-solid-clip.image16.rgb24.ref.png deleted file mode 100644 index 111293d..0000000 Binary files a/test/reference/record-paint-alpha-solid-clip.image16.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record-paint-alpha-solid-clip.ref.png b/test/reference/record-paint-alpha-solid-clip.ref.png deleted file mode 100644 index 59d226d..0000000 Binary files a/test/reference/record-paint-alpha-solid-clip.ref.png and /dev/null differ diff --git a/test/reference/record-paint-alpha-solid-clip.traps.argb32.ref.png b/test/reference/record-paint-alpha-solid-clip.traps.argb32.ref.png deleted file mode 100644 index 2cd2df2..0000000 Binary files a/test/reference/record-paint-alpha-solid-clip.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/record-paint-alpha-solid-clip.traps.rgb24.ref.png b/test/reference/record-paint-alpha-solid-clip.traps.rgb24.ref.png deleted file mode 100644 index 2cd2df2..0000000 Binary files a/test/reference/record-paint-alpha-solid-clip.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record-paint-alpha.base.argb32.ref.png b/test/reference/record-paint-alpha.base.argb32.ref.png deleted file mode 100644 index 65d9c17..0000000 Binary files a/test/reference/record-paint-alpha.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/record-paint-alpha.base.rgb24.ref.png b/test/reference/record-paint-alpha.base.rgb24.ref.png deleted file mode 100644 index 65d9c17..0000000 Binary files a/test/reference/record-paint-alpha.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record-paint-alpha.image16.rgb24.ref.png b/test/reference/record-paint-alpha.image16.rgb24.ref.png deleted file mode 100644 index 12bd89d..0000000 Binary files a/test/reference/record-paint-alpha.image16.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record-paint-alpha.ref.png b/test/reference/record-paint-alpha.ref.png deleted file mode 100644 index 487b8b6..0000000 Binary files a/test/reference/record-paint-alpha.ref.png and /dev/null differ diff --git a/test/reference/record-paint.base.argb32.ref.png b/test/reference/record-paint.base.argb32.ref.png deleted file mode 100644 index 22cc7a1..0000000 Binary files a/test/reference/record-paint.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/record-paint.base.rgb24.ref.png b/test/reference/record-paint.base.rgb24.ref.png deleted file mode 100644 index 22cc7a1..0000000 Binary files a/test/reference/record-paint.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record-paint.ref.png b/test/reference/record-paint.ref.png deleted file mode 100644 index fff03b3..0000000 Binary files a/test/reference/record-paint.ref.png and /dev/null differ diff --git a/test/reference/record-select-font-face.base.argb32.ref.png b/test/reference/record-select-font-face.base.argb32.ref.png deleted file mode 100644 index 63c7cca..0000000 Binary files a/test/reference/record-select-font-face.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/record-select-font-face.base.rgb24.ref.png b/test/reference/record-select-font-face.base.rgb24.ref.png deleted file mode 100644 index 63c7cca..0000000 Binary files a/test/reference/record-select-font-face.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record-select-font-face.image16.rgb24.ref.png b/test/reference/record-select-font-face.image16.rgb24.ref.png deleted file mode 100644 index 88388e5..0000000 Binary files a/test/reference/record-select-font-face.image16.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record-select-font-face.ref.png b/test/reference/record-select-font-face.ref.png deleted file mode 100644 index 1334a9a..0000000 Binary files a/test/reference/record-select-font-face.ref.png and /dev/null differ diff --git a/test/reference/record-select-font-face.xfail.png b/test/reference/record-select-font-face.xfail.png deleted file mode 100644 index 1f57d69..0000000 Binary files a/test/reference/record-select-font-face.xfail.png and /dev/null differ diff --git a/test/reference/record-self-intersecting.base.argb32.ref.png b/test/reference/record-self-intersecting.base.argb32.ref.png deleted file mode 100644 index d554d83..0000000 Binary files a/test/reference/record-self-intersecting.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/record-self-intersecting.base.rgb24.ref.png b/test/reference/record-self-intersecting.base.rgb24.ref.png deleted file mode 100644 index d554d83..0000000 Binary files a/test/reference/record-self-intersecting.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record-self-intersecting.image16.rgb24.ref.png b/test/reference/record-self-intersecting.image16.rgb24.ref.png deleted file mode 100644 index cab3507..0000000 Binary files a/test/reference/record-self-intersecting.image16.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record-self-intersecting.ref.png b/test/reference/record-self-intersecting.ref.png deleted file mode 100644 index d554d83..0000000 Binary files a/test/reference/record-self-intersecting.ref.png and /dev/null differ diff --git a/test/reference/record-text-transform.base.argb32.ref.png b/test/reference/record-text-transform.base.argb32.ref.png deleted file mode 100644 index 8e74785..0000000 Binary files a/test/reference/record-text-transform.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/record-text-transform.base.rgb24.ref.png b/test/reference/record-text-transform.base.rgb24.ref.png deleted file mode 100644 index 8e74785..0000000 Binary files a/test/reference/record-text-transform.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record-text-transform.image16.rgb24.ref.png b/test/reference/record-text-transform.image16.rgb24.ref.png deleted file mode 100644 index 4603899..0000000 Binary files a/test/reference/record-text-transform.image16.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record-text-transform.ref.png b/test/reference/record-text-transform.ref.png deleted file mode 100644 index 4603bc5..0000000 Binary files a/test/reference/record-text-transform.ref.png and /dev/null differ diff --git a/test/reference/record1414x-fill-alpha.base.argb32.ref.png b/test/reference/record1414x-fill-alpha.base.argb32.ref.png deleted file mode 100644 index 6967343..0000000 Binary files a/test/reference/record1414x-fill-alpha.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/record1414x-fill-alpha.base.rgb24.ref.png b/test/reference/record1414x-fill-alpha.base.rgb24.ref.png deleted file mode 100644 index 6967343..0000000 Binary files a/test/reference/record1414x-fill-alpha.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record1414x-fill-alpha.base.xfail.png b/test/reference/record1414x-fill-alpha.base.xfail.png deleted file mode 100644 index 6967343..0000000 Binary files a/test/reference/record1414x-fill-alpha.base.xfail.png and /dev/null differ diff --git a/test/reference/record1414x-fill-alpha.ref.png b/test/reference/record1414x-fill-alpha.ref.png deleted file mode 100644 index 8e9f322..0000000 Binary files a/test/reference/record1414x-fill-alpha.ref.png and /dev/null differ diff --git a/test/reference/record1414x-fill-alpha.xfail.png b/test/reference/record1414x-fill-alpha.xfail.png deleted file mode 100644 index 9393186..0000000 Binary files a/test/reference/record1414x-fill-alpha.xfail.png and /dev/null differ diff --git a/test/reference/record1414x-paint-alpha-clip-mask.base.argb32.ref.png b/test/reference/record1414x-paint-alpha-clip-mask.base.argb32.ref.png deleted file mode 100644 index 0ae9861..0000000 Binary files a/test/reference/record1414x-paint-alpha-clip-mask.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/record1414x-paint-alpha-clip-mask.base.rgb24.ref.png b/test/reference/record1414x-paint-alpha-clip-mask.base.rgb24.ref.png deleted file mode 100644 index 0ae9861..0000000 Binary files a/test/reference/record1414x-paint-alpha-clip-mask.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record1414x-paint-alpha-clip-mask.ref.png b/test/reference/record1414x-paint-alpha-clip-mask.ref.png deleted file mode 100644 index e381b73..0000000 Binary files a/test/reference/record1414x-paint-alpha-clip-mask.ref.png and /dev/null differ diff --git a/test/reference/record1414x-paint-alpha-clip.base.argb32.ref.png b/test/reference/record1414x-paint-alpha-clip.base.argb32.ref.png deleted file mode 100644 index d1b57ae..0000000 Binary files a/test/reference/record1414x-paint-alpha-clip.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/record1414x-paint-alpha-clip.base.rgb24.ref.png b/test/reference/record1414x-paint-alpha-clip.base.rgb24.ref.png deleted file mode 100644 index d1b57ae..0000000 Binary files a/test/reference/record1414x-paint-alpha-clip.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record1414x-paint-alpha-clip.ref.png b/test/reference/record1414x-paint-alpha-clip.ref.png deleted file mode 100644 index 6c11f1d..0000000 Binary files a/test/reference/record1414x-paint-alpha-clip.ref.png and /dev/null differ diff --git a/test/reference/record1414x-paint-alpha-solid-clip.base.argb32.ref.png b/test/reference/record1414x-paint-alpha-solid-clip.base.argb32.ref.png deleted file mode 100644 index 86d3f51..0000000 Binary files a/test/reference/record1414x-paint-alpha-solid-clip.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/record1414x-paint-alpha-solid-clip.base.rgb24.ref.png b/test/reference/record1414x-paint-alpha-solid-clip.base.rgb24.ref.png deleted file mode 100644 index 86d3f51..0000000 Binary files a/test/reference/record1414x-paint-alpha-solid-clip.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record1414x-paint-alpha-solid-clip.ref.png b/test/reference/record1414x-paint-alpha-solid-clip.ref.png deleted file mode 100644 index 7a8e594..0000000 Binary files a/test/reference/record1414x-paint-alpha-solid-clip.ref.png and /dev/null differ diff --git a/test/reference/record1414x-paint-alpha.base.argb32.ref.png b/test/reference/record1414x-paint-alpha.base.argb32.ref.png deleted file mode 100644 index eee74ce..0000000 Binary files a/test/reference/record1414x-paint-alpha.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/record1414x-paint-alpha.base.rgb24.ref.png b/test/reference/record1414x-paint-alpha.base.rgb24.ref.png deleted file mode 100644 index eee74ce..0000000 Binary files a/test/reference/record1414x-paint-alpha.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record1414x-paint-alpha.ref.png b/test/reference/record1414x-paint-alpha.ref.png deleted file mode 100644 index eee74ce..0000000 Binary files a/test/reference/record1414x-paint-alpha.ref.png and /dev/null differ diff --git a/test/reference/record1414x-paint.base.argb32.ref.png b/test/reference/record1414x-paint.base.argb32.ref.png deleted file mode 100644 index e0a1341..0000000 Binary files a/test/reference/record1414x-paint.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/record1414x-paint.base.rgb24.ref.png b/test/reference/record1414x-paint.base.rgb24.ref.png deleted file mode 100644 index e0a1341..0000000 Binary files a/test/reference/record1414x-paint.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record1414x-paint.ref.png b/test/reference/record1414x-paint.ref.png deleted file mode 100644 index e0a1341..0000000 Binary files a/test/reference/record1414x-paint.ref.png and /dev/null differ diff --git a/test/reference/record1414x-select-font-face.base.argb32.ref.png b/test/reference/record1414x-select-font-face.base.argb32.ref.png deleted file mode 100644 index ac30b23..0000000 Binary files a/test/reference/record1414x-select-font-face.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/record1414x-select-font-face.base.rgb24.ref.png b/test/reference/record1414x-select-font-face.base.rgb24.ref.png deleted file mode 100644 index ac30b23..0000000 Binary files a/test/reference/record1414x-select-font-face.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record1414x-select-font-face.ref.png b/test/reference/record1414x-select-font-face.ref.png deleted file mode 100644 index 6c52067..0000000 Binary files a/test/reference/record1414x-select-font-face.ref.png and /dev/null differ diff --git a/test/reference/record1414x-self-intersecting.base.argb32.ref.png b/test/reference/record1414x-self-intersecting.base.argb32.ref.png deleted file mode 100644 index 62f91c9..0000000 Binary files a/test/reference/record1414x-self-intersecting.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/record1414x-self-intersecting.base.rgb24.ref.png b/test/reference/record1414x-self-intersecting.base.rgb24.ref.png deleted file mode 100644 index 62f91c9..0000000 Binary files a/test/reference/record1414x-self-intersecting.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record1414x-self-intersecting.ref.png b/test/reference/record1414x-self-intersecting.ref.png deleted file mode 100644 index 62f91c9..0000000 Binary files a/test/reference/record1414x-self-intersecting.ref.png and /dev/null differ diff --git a/test/reference/record1414x-text-transform.base.argb32.ref.png b/test/reference/record1414x-text-transform.base.argb32.ref.png deleted file mode 100644 index 624e368..0000000 Binary files a/test/reference/record1414x-text-transform.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/record1414x-text-transform.base.rgb24.ref.png b/test/reference/record1414x-text-transform.base.rgb24.ref.png deleted file mode 100644 index 624e368..0000000 Binary files a/test/reference/record1414x-text-transform.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record1414x-text-transform.ref.png b/test/reference/record1414x-text-transform.ref.png deleted file mode 100644 index 3bb8b12..0000000 Binary files a/test/reference/record1414x-text-transform.ref.png and /dev/null differ diff --git a/test/reference/record2x-fill-alpha.base.argb32.ref.png b/test/reference/record2x-fill-alpha.base.argb32.ref.png deleted file mode 100644 index b96ff8d..0000000 Binary files a/test/reference/record2x-fill-alpha.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/record2x-fill-alpha.base.rgb24.ref.png b/test/reference/record2x-fill-alpha.base.rgb24.ref.png deleted file mode 100644 index b96ff8d..0000000 Binary files a/test/reference/record2x-fill-alpha.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record2x-fill-alpha.base.xfail.png b/test/reference/record2x-fill-alpha.base.xfail.png deleted file mode 100644 index b96ff8d..0000000 Binary files a/test/reference/record2x-fill-alpha.base.xfail.png and /dev/null differ diff --git a/test/reference/record2x-fill-alpha.ref.png b/test/reference/record2x-fill-alpha.ref.png deleted file mode 100644 index 91787bd..0000000 Binary files a/test/reference/record2x-fill-alpha.ref.png and /dev/null differ diff --git a/test/reference/record2x-fill-alpha.xfail.png b/test/reference/record2x-fill-alpha.xfail.png deleted file mode 100644 index 3b70c01..0000000 Binary files a/test/reference/record2x-fill-alpha.xfail.png and /dev/null differ diff --git a/test/reference/record2x-paint-alpha-clip-mask.base.argb32.ref.png b/test/reference/record2x-paint-alpha-clip-mask.base.argb32.ref.png deleted file mode 100644 index ebfa1db..0000000 Binary files a/test/reference/record2x-paint-alpha-clip-mask.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/record2x-paint-alpha-clip-mask.base.rgb24.ref.png b/test/reference/record2x-paint-alpha-clip-mask.base.rgb24.ref.png deleted file mode 100644 index ebfa1db..0000000 Binary files a/test/reference/record2x-paint-alpha-clip-mask.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record2x-paint-alpha-clip-mask.ref.png b/test/reference/record2x-paint-alpha-clip-mask.ref.png deleted file mode 100644 index dd1ca05..0000000 Binary files a/test/reference/record2x-paint-alpha-clip-mask.ref.png and /dev/null differ diff --git a/test/reference/record2x-paint-alpha-clip.base.argb32.ref.png b/test/reference/record2x-paint-alpha-clip.base.argb32.ref.png deleted file mode 100644 index b3829d5..0000000 Binary files a/test/reference/record2x-paint-alpha-clip.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/record2x-paint-alpha-clip.base.rgb24.ref.png b/test/reference/record2x-paint-alpha-clip.base.rgb24.ref.png deleted file mode 100644 index b3829d5..0000000 Binary files a/test/reference/record2x-paint-alpha-clip.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record2x-paint-alpha-clip.ref.png b/test/reference/record2x-paint-alpha-clip.ref.png deleted file mode 100644 index b3829d5..0000000 Binary files a/test/reference/record2x-paint-alpha-clip.ref.png and /dev/null differ diff --git a/test/reference/record2x-paint-alpha-solid-clip.base.argb32.ref.png b/test/reference/record2x-paint-alpha-solid-clip.base.argb32.ref.png deleted file mode 100644 index 06e350f..0000000 Binary files a/test/reference/record2x-paint-alpha-solid-clip.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/record2x-paint-alpha-solid-clip.base.rgb24.ref.png b/test/reference/record2x-paint-alpha-solid-clip.base.rgb24.ref.png deleted file mode 100644 index 06e350f..0000000 Binary files a/test/reference/record2x-paint-alpha-solid-clip.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record2x-paint-alpha-solid-clip.ref.png b/test/reference/record2x-paint-alpha-solid-clip.ref.png deleted file mode 100644 index 06e350f..0000000 Binary files a/test/reference/record2x-paint-alpha-solid-clip.ref.png and /dev/null differ diff --git a/test/reference/record2x-paint-alpha.base.argb32.ref.png b/test/reference/record2x-paint-alpha.base.argb32.ref.png deleted file mode 100644 index 3a02b67..0000000 Binary files a/test/reference/record2x-paint-alpha.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/record2x-paint-alpha.base.rgb24.ref.png b/test/reference/record2x-paint-alpha.base.rgb24.ref.png deleted file mode 100644 index 3a02b67..0000000 Binary files a/test/reference/record2x-paint-alpha.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record2x-paint-alpha.ref.png b/test/reference/record2x-paint-alpha.ref.png deleted file mode 100644 index 3a02b67..0000000 Binary files a/test/reference/record2x-paint-alpha.ref.png and /dev/null differ diff --git a/test/reference/record2x-paint.base.argb32.ref.png b/test/reference/record2x-paint.base.argb32.ref.png deleted file mode 100644 index 792a1d0..0000000 Binary files a/test/reference/record2x-paint.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/record2x-paint.base.rgb24.ref.png b/test/reference/record2x-paint.base.rgb24.ref.png deleted file mode 100644 index 792a1d0..0000000 Binary files a/test/reference/record2x-paint.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record2x-paint.ref.png b/test/reference/record2x-paint.ref.png deleted file mode 100644 index 792a1d0..0000000 Binary files a/test/reference/record2x-paint.ref.png and /dev/null differ diff --git a/test/reference/record2x-select-font-face.base.argb32.ref.png b/test/reference/record2x-select-font-face.base.argb32.ref.png deleted file mode 100644 index f0b268f..0000000 Binary files a/test/reference/record2x-select-font-face.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/record2x-select-font-face.base.rgb24.ref.png b/test/reference/record2x-select-font-face.base.rgb24.ref.png deleted file mode 100644 index f0b268f..0000000 Binary files a/test/reference/record2x-select-font-face.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record2x-select-font-face.ref.png b/test/reference/record2x-select-font-face.ref.png deleted file mode 100644 index 7a99795..0000000 Binary files a/test/reference/record2x-select-font-face.ref.png and /dev/null differ diff --git a/test/reference/record2x-self-intersecting.base.argb32.ref.png b/test/reference/record2x-self-intersecting.base.argb32.ref.png deleted file mode 100644 index 2836dae..0000000 Binary files a/test/reference/record2x-self-intersecting.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/record2x-self-intersecting.base.rgb24.ref.png b/test/reference/record2x-self-intersecting.base.rgb24.ref.png deleted file mode 100644 index 2836dae..0000000 Binary files a/test/reference/record2x-self-intersecting.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record2x-self-intersecting.ref.png b/test/reference/record2x-self-intersecting.ref.png deleted file mode 100644 index 2836dae..0000000 Binary files a/test/reference/record2x-self-intersecting.ref.png and /dev/null differ diff --git a/test/reference/record2x-text-transform.base.argb32.ref.png b/test/reference/record2x-text-transform.base.argb32.ref.png deleted file mode 100644 index 9811c1b..0000000 Binary files a/test/reference/record2x-text-transform.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/record2x-text-transform.base.rgb24.ref.png b/test/reference/record2x-text-transform.base.rgb24.ref.png deleted file mode 100644 index 9811c1b..0000000 Binary files a/test/reference/record2x-text-transform.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record2x-text-transform.ref.png b/test/reference/record2x-text-transform.ref.png deleted file mode 100644 index 6c21785..0000000 Binary files a/test/reference/record2x-text-transform.ref.png and /dev/null differ diff --git a/test/reference/record90-fill-alpha.base.argb32.ref.png b/test/reference/record90-fill-alpha.base.argb32.ref.png deleted file mode 100644 index 4c743f5..0000000 Binary files a/test/reference/record90-fill-alpha.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/record90-fill-alpha.base.rgb24.ref.png b/test/reference/record90-fill-alpha.base.rgb24.ref.png deleted file mode 100644 index 4c743f5..0000000 Binary files a/test/reference/record90-fill-alpha.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record90-fill-alpha.ref.png b/test/reference/record90-fill-alpha.ref.png deleted file mode 100644 index bf3b260..0000000 Binary files a/test/reference/record90-fill-alpha.ref.png and /dev/null differ diff --git a/test/reference/record90-fill-alpha.xfail.png b/test/reference/record90-fill-alpha.xfail.png deleted file mode 100644 index ad1e65c..0000000 Binary files a/test/reference/record90-fill-alpha.xfail.png and /dev/null differ diff --git a/test/reference/record90-paint-alpha-clip-mask.base.argb32.ref.png b/test/reference/record90-paint-alpha-clip-mask.base.argb32.ref.png deleted file mode 100644 index 976192c..0000000 Binary files a/test/reference/record90-paint-alpha-clip-mask.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/record90-paint-alpha-clip-mask.base.rgb24.ref.png b/test/reference/record90-paint-alpha-clip-mask.base.rgb24.ref.png deleted file mode 100644 index 976192c..0000000 Binary files a/test/reference/record90-paint-alpha-clip-mask.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record90-paint-alpha-clip-mask.ref.png b/test/reference/record90-paint-alpha-clip-mask.ref.png deleted file mode 100644 index 5c2106b..0000000 Binary files a/test/reference/record90-paint-alpha-clip-mask.ref.png and /dev/null differ diff --git a/test/reference/record90-paint-alpha-clip-mask.xfail.png b/test/reference/record90-paint-alpha-clip-mask.xfail.png deleted file mode 100644 index bad037f..0000000 Binary files a/test/reference/record90-paint-alpha-clip-mask.xfail.png and /dev/null differ diff --git a/test/reference/record90-paint-alpha-clip.base.argb32.ref.png b/test/reference/record90-paint-alpha-clip.base.argb32.ref.png deleted file mode 100644 index d687e3b..0000000 Binary files a/test/reference/record90-paint-alpha-clip.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/record90-paint-alpha-clip.base.rgb24.ref.png b/test/reference/record90-paint-alpha-clip.base.rgb24.ref.png deleted file mode 100644 index d687e3b..0000000 Binary files a/test/reference/record90-paint-alpha-clip.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record90-paint-alpha-clip.ref.png b/test/reference/record90-paint-alpha-clip.ref.png deleted file mode 100644 index 3fae802..0000000 Binary files a/test/reference/record90-paint-alpha-clip.ref.png and /dev/null differ diff --git a/test/reference/record90-paint-alpha-clip.xfail.png b/test/reference/record90-paint-alpha-clip.xfail.png deleted file mode 100644 index d687e3b..0000000 Binary files a/test/reference/record90-paint-alpha-clip.xfail.png and /dev/null differ diff --git a/test/reference/record90-paint-alpha-solid-clip.base.argb32.ref.png b/test/reference/record90-paint-alpha-solid-clip.base.argb32.ref.png deleted file mode 100644 index 48a01ea..0000000 Binary files a/test/reference/record90-paint-alpha-solid-clip.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/record90-paint-alpha-solid-clip.base.rgb24.ref.png b/test/reference/record90-paint-alpha-solid-clip.base.rgb24.ref.png deleted file mode 100644 index 48a01ea..0000000 Binary files a/test/reference/record90-paint-alpha-solid-clip.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record90-paint-alpha-solid-clip.ref.png b/test/reference/record90-paint-alpha-solid-clip.ref.png deleted file mode 100644 index 17bff57..0000000 Binary files a/test/reference/record90-paint-alpha-solid-clip.ref.png and /dev/null differ diff --git a/test/reference/record90-paint-alpha.base.argb32.ref.png b/test/reference/record90-paint-alpha.base.argb32.ref.png deleted file mode 100644 index 57aa95d..0000000 Binary files a/test/reference/record90-paint-alpha.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/record90-paint-alpha.base.rgb24.ref.png b/test/reference/record90-paint-alpha.base.rgb24.ref.png deleted file mode 100644 index 57aa95d..0000000 Binary files a/test/reference/record90-paint-alpha.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record90-paint-alpha.ref.png b/test/reference/record90-paint-alpha.ref.png deleted file mode 100644 index 5e9cb58..0000000 Binary files a/test/reference/record90-paint-alpha.ref.png and /dev/null differ diff --git a/test/reference/record90-paint.base.argb32.ref.png b/test/reference/record90-paint.base.argb32.ref.png deleted file mode 100644 index 22cc7a1..0000000 Binary files a/test/reference/record90-paint.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/record90-paint.base.rgb24.ref.png b/test/reference/record90-paint.base.rgb24.ref.png deleted file mode 100644 index 22cc7a1..0000000 Binary files a/test/reference/record90-paint.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record90-paint.ref.png b/test/reference/record90-paint.ref.png deleted file mode 100644 index 22cc7a1..0000000 Binary files a/test/reference/record90-paint.ref.png and /dev/null differ diff --git a/test/reference/record90-select-font-face.base.argb32.ref.png b/test/reference/record90-select-font-face.base.argb32.ref.png deleted file mode 100644 index 13ed998..0000000 Binary files a/test/reference/record90-select-font-face.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/record90-select-font-face.base.rgb24.ref.png b/test/reference/record90-select-font-face.base.rgb24.ref.png deleted file mode 100644 index 13ed998..0000000 Binary files a/test/reference/record90-select-font-face.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record90-select-font-face.ref.png b/test/reference/record90-select-font-face.ref.png deleted file mode 100644 index 189a315..0000000 Binary files a/test/reference/record90-select-font-face.ref.png and /dev/null differ diff --git a/test/reference/record90-self-intersecting.base.argb32.ref.png b/test/reference/record90-self-intersecting.base.argb32.ref.png deleted file mode 100644 index 7df179e..0000000 Binary files a/test/reference/record90-self-intersecting.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/record90-self-intersecting.base.rgb24.ref.png b/test/reference/record90-self-intersecting.base.rgb24.ref.png deleted file mode 100644 index 7df179e..0000000 Binary files a/test/reference/record90-self-intersecting.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record90-self-intersecting.ref.png b/test/reference/record90-self-intersecting.ref.png deleted file mode 100644 index 15ce4c0..0000000 Binary files a/test/reference/record90-self-intersecting.ref.png and /dev/null differ diff --git a/test/reference/record90-text-transform.base.argb32.ref.png b/test/reference/record90-text-transform.base.argb32.ref.png deleted file mode 100644 index e8fa722..0000000 Binary files a/test/reference/record90-text-transform.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/record90-text-transform.base.rgb24.ref.png b/test/reference/record90-text-transform.base.rgb24.ref.png deleted file mode 100644 index e8fa722..0000000 Binary files a/test/reference/record90-text-transform.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/record90-text-transform.ref.png b/test/reference/record90-text-transform.ref.png deleted file mode 100644 index 22f6c1f..0000000 Binary files a/test/reference/record90-text-transform.ref.png and /dev/null differ diff --git a/test/reference/recordflip-fill-alpha.ref.png b/test/reference/recordflip-fill-alpha.ref.png deleted file mode 100644 index 289a915..0000000 Binary files a/test/reference/recordflip-fill-alpha.ref.png and /dev/null differ diff --git a/test/reference/recordflip-paint-alpha-clip-mask.ref.png b/test/reference/recordflip-paint-alpha-clip-mask.ref.png deleted file mode 100644 index 842fa35..0000000 Binary files a/test/reference/recordflip-paint-alpha-clip-mask.ref.png and /dev/null differ diff --git a/test/reference/recordflip-paint-alpha-clip.ref.png b/test/reference/recordflip-paint-alpha-clip.ref.png deleted file mode 100644 index d619b6d..0000000 Binary files a/test/reference/recordflip-paint-alpha-clip.ref.png and /dev/null differ diff --git a/test/reference/recordflip-paint-alpha-solid-clip.ref.png b/test/reference/recordflip-paint-alpha-solid-clip.ref.png deleted file mode 100644 index 10dde68..0000000 Binary files a/test/reference/recordflip-paint-alpha-solid-clip.ref.png and /dev/null differ diff --git a/test/reference/recordflip-paint-alpha.ref.png b/test/reference/recordflip-paint-alpha.ref.png deleted file mode 100644 index 599acfb..0000000 Binary files a/test/reference/recordflip-paint-alpha.ref.png and /dev/null differ diff --git a/test/reference/recordflip-paint.ref.png b/test/reference/recordflip-paint.ref.png deleted file mode 100644 index 22cc7a1..0000000 Binary files a/test/reference/recordflip-paint.ref.png and /dev/null differ diff --git a/test/reference/recordflip-select-font-face.ref.png b/test/reference/recordflip-select-font-face.ref.png deleted file mode 100644 index eb71085..0000000 Binary files a/test/reference/recordflip-select-font-face.ref.png and /dev/null differ diff --git a/test/reference/recordflip-self-intersecting.ref.png b/test/reference/recordflip-self-intersecting.ref.png deleted file mode 100644 index d554d83..0000000 Binary files a/test/reference/recordflip-self-intersecting.ref.png and /dev/null differ diff --git a/test/reference/recordflip-text-transform.ref.png b/test/reference/recordflip-text-transform.ref.png deleted file mode 100644 index 31784d7..0000000 Binary files a/test/reference/recordflip-text-transform.ref.png and /dev/null differ diff --git a/test/reference/recordflip-whole-fill-alpha.ref.png b/test/reference/recordflip-whole-fill-alpha.ref.png deleted file mode 100644 index 289a915..0000000 Binary files a/test/reference/recordflip-whole-fill-alpha.ref.png and /dev/null differ diff --git a/test/reference/recordflip-whole-paint-alpha-clip-mask.ref.png b/test/reference/recordflip-whole-paint-alpha-clip-mask.ref.png deleted file mode 100644 index 842fa35..0000000 Binary files a/test/reference/recordflip-whole-paint-alpha-clip-mask.ref.png and /dev/null differ diff --git a/test/reference/recordflip-whole-paint-alpha-clip.ref.png b/test/reference/recordflip-whole-paint-alpha-clip.ref.png deleted file mode 100644 index d619b6d..0000000 Binary files a/test/reference/recordflip-whole-paint-alpha-clip.ref.png and /dev/null differ diff --git a/test/reference/recordflip-whole-paint-alpha-solid-clip.ref.png b/test/reference/recordflip-whole-paint-alpha-solid-clip.ref.png deleted file mode 100644 index 10dde68..0000000 Binary files a/test/reference/recordflip-whole-paint-alpha-solid-clip.ref.png and /dev/null differ diff --git a/test/reference/recordflip-whole-paint-alpha.ref.png b/test/reference/recordflip-whole-paint-alpha.ref.png deleted file mode 100644 index 599acfb..0000000 Binary files a/test/reference/recordflip-whole-paint-alpha.ref.png and /dev/null differ diff --git a/test/reference/recordflip-whole-paint.ref.png b/test/reference/recordflip-whole-paint.ref.png deleted file mode 100644 index 22cc7a1..0000000 Binary files a/test/reference/recordflip-whole-paint.ref.png and /dev/null differ diff --git a/test/reference/recordflip-whole-select-font-face.ref.png b/test/reference/recordflip-whole-select-font-face.ref.png deleted file mode 100644 index eb71085..0000000 Binary files a/test/reference/recordflip-whole-select-font-face.ref.png and /dev/null differ diff --git a/test/reference/recordflip-whole-self-intersecting.ref.png b/test/reference/recordflip-whole-self-intersecting.ref.png deleted file mode 100644 index d554d83..0000000 Binary files a/test/reference/recordflip-whole-self-intersecting.ref.png and /dev/null differ diff --git a/test/reference/recordflip-whole-text-transform.ref.png b/test/reference/recordflip-whole-text-transform.ref.png deleted file mode 100644 index 31784d7..0000000 Binary files a/test/reference/recordflip-whole-text-transform.ref.png and /dev/null differ diff --git a/test/reference/recording-surface-extend-none.argb32.ref.png b/test/reference/recording-surface-extend-none.argb32.ref.png deleted file mode 100644 index 1389887..0000000 Binary files a/test/reference/recording-surface-extend-none.argb32.ref.png and /dev/null differ diff --git a/test/reference/recording-surface-extend-none.base.argb32.ref.png b/test/reference/recording-surface-extend-none.base.argb32.ref.png deleted file mode 100644 index d612250..0000000 Binary files a/test/reference/recording-surface-extend-none.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/recording-surface-extend-none.base.rgb24.ref.png b/test/reference/recording-surface-extend-none.base.rgb24.ref.png deleted file mode 100644 index 0a57b44..0000000 Binary files a/test/reference/recording-surface-extend-none.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/recording-surface-extend-none.rgb24.ref.png b/test/reference/recording-surface-extend-none.rgb24.ref.png deleted file mode 100644 index 6a8b81e..0000000 Binary files a/test/reference/recording-surface-extend-none.rgb24.ref.png and /dev/null differ diff --git a/test/reference/recording-surface-extend-none.traps.argb32.ref.png b/test/reference/recording-surface-extend-none.traps.argb32.ref.png deleted file mode 100644 index d612250..0000000 Binary files a/test/reference/recording-surface-extend-none.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/recording-surface-extend-none.traps.rgb24.ref.png b/test/reference/recording-surface-extend-none.traps.rgb24.ref.png deleted file mode 100644 index 0a57b44..0000000 Binary files a/test/reference/recording-surface-extend-none.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/recording-surface-extend-pad.argb32.ref.png b/test/reference/recording-surface-extend-pad.argb32.ref.png deleted file mode 100644 index 9efed65..0000000 Binary files a/test/reference/recording-surface-extend-pad.argb32.ref.png and /dev/null differ diff --git a/test/reference/recording-surface-extend-pad.base.argb32.ref.png b/test/reference/recording-surface-extend-pad.base.argb32.ref.png deleted file mode 100644 index 7ec94c5..0000000 Binary files a/test/reference/recording-surface-extend-pad.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/recording-surface-extend-pad.base.rgb24.ref.png b/test/reference/recording-surface-extend-pad.base.rgb24.ref.png deleted file mode 100644 index 8a064cd..0000000 Binary files a/test/reference/recording-surface-extend-pad.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/recording-surface-extend-pad.rgb24.ref.png b/test/reference/recording-surface-extend-pad.rgb24.ref.png deleted file mode 100644 index 7336890..0000000 Binary files a/test/reference/recording-surface-extend-pad.rgb24.ref.png and /dev/null differ diff --git a/test/reference/recording-surface-extend-pad.traps.argb32.ref.png b/test/reference/recording-surface-extend-pad.traps.argb32.ref.png deleted file mode 100644 index 7ec94c5..0000000 Binary files a/test/reference/recording-surface-extend-pad.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/recording-surface-extend-pad.traps.rgb24.ref.png b/test/reference/recording-surface-extend-pad.traps.rgb24.ref.png deleted file mode 100644 index 8a064cd..0000000 Binary files a/test/reference/recording-surface-extend-pad.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/recording-surface-extend-reflect.argb32.ref.png b/test/reference/recording-surface-extend-reflect.argb32.ref.png deleted file mode 100644 index f63ccee..0000000 Binary files a/test/reference/recording-surface-extend-reflect.argb32.ref.png and /dev/null differ diff --git a/test/reference/recording-surface-extend-reflect.base.argb32.ref.png b/test/reference/recording-surface-extend-reflect.base.argb32.ref.png deleted file mode 100644 index 4699d42..0000000 Binary files a/test/reference/recording-surface-extend-reflect.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/recording-surface-extend-reflect.base.rgb24.ref.png b/test/reference/recording-surface-extend-reflect.base.rgb24.ref.png deleted file mode 100644 index 4975d75..0000000 Binary files a/test/reference/recording-surface-extend-reflect.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/recording-surface-extend-reflect.rgb24.ref.png b/test/reference/recording-surface-extend-reflect.rgb24.ref.png deleted file mode 100644 index 26d4ae9..0000000 Binary files a/test/reference/recording-surface-extend-reflect.rgb24.ref.png and /dev/null differ diff --git a/test/reference/recording-surface-extend-reflect.traps.argb32.ref.png b/test/reference/recording-surface-extend-reflect.traps.argb32.ref.png deleted file mode 100644 index 4699d42..0000000 Binary files a/test/reference/recording-surface-extend-reflect.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/recording-surface-extend-reflect.traps.rgb24.ref.png b/test/reference/recording-surface-extend-reflect.traps.rgb24.ref.png deleted file mode 100644 index 4975d75..0000000 Binary files a/test/reference/recording-surface-extend-reflect.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/recording-surface-extend-repeat.argb32.ref.png b/test/reference/recording-surface-extend-repeat.argb32.ref.png deleted file mode 100644 index 99d880c..0000000 Binary files a/test/reference/recording-surface-extend-repeat.argb32.ref.png and /dev/null differ diff --git a/test/reference/recording-surface-extend-repeat.base.argb32.ref.png b/test/reference/recording-surface-extend-repeat.base.argb32.ref.png deleted file mode 100644 index 305c022..0000000 Binary files a/test/reference/recording-surface-extend-repeat.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/recording-surface-extend-repeat.base.rgb24.ref.png b/test/reference/recording-surface-extend-repeat.base.rgb24.ref.png deleted file mode 100644 index c3e296c..0000000 Binary files a/test/reference/recording-surface-extend-repeat.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/recording-surface-extend-repeat.rgb24.ref.png b/test/reference/recording-surface-extend-repeat.rgb24.ref.png deleted file mode 100644 index 474e6e9..0000000 Binary files a/test/reference/recording-surface-extend-repeat.rgb24.ref.png and /dev/null differ diff --git a/test/reference/recording-surface-extend-repeat.traps.argb32.ref.png b/test/reference/recording-surface-extend-repeat.traps.argb32.ref.png deleted file mode 100644 index 305c022..0000000 Binary files a/test/reference/recording-surface-extend-repeat.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/recording-surface-extend-repeat.traps.rgb24.ref.png b/test/reference/recording-surface-extend-repeat.traps.rgb24.ref.png deleted file mode 100644 index c3e296c..0000000 Binary files a/test/reference/recording-surface-extend-repeat.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/recording-surface-over.argb32.ref.png b/test/reference/recording-surface-over.argb32.ref.png deleted file mode 100644 index 1389887..0000000 Binary files a/test/reference/recording-surface-over.argb32.ref.png and /dev/null differ diff --git a/test/reference/recording-surface-over.base.argb32.ref.png b/test/reference/recording-surface-over.base.argb32.ref.png deleted file mode 100644 index d612250..0000000 Binary files a/test/reference/recording-surface-over.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/recording-surface-over.base.rgb24.ref.png b/test/reference/recording-surface-over.base.rgb24.ref.png deleted file mode 100644 index 0a57b44..0000000 Binary files a/test/reference/recording-surface-over.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/recording-surface-over.gl.argb32.ref.png b/test/reference/recording-surface-over.gl.argb32.ref.png deleted file mode 100644 index 50e6f5a..0000000 Binary files a/test/reference/recording-surface-over.gl.argb32.ref.png and /dev/null differ diff --git a/test/reference/recording-surface-over.image16.ref.png b/test/reference/recording-surface-over.image16.ref.png deleted file mode 100644 index 0202893..0000000 Binary files a/test/reference/recording-surface-over.image16.ref.png and /dev/null differ diff --git a/test/reference/recording-surface-over.pdf.argb32.ref.png b/test/reference/recording-surface-over.pdf.argb32.ref.png deleted file mode 100644 index a06386b..0000000 Binary files a/test/reference/recording-surface-over.pdf.argb32.ref.png and /dev/null differ diff --git a/test/reference/recording-surface-over.pdf.rgb24.ref.png b/test/reference/recording-surface-over.pdf.rgb24.ref.png deleted file mode 100644 index bf69f9e..0000000 Binary files a/test/reference/recording-surface-over.pdf.rgb24.ref.png and /dev/null differ diff --git a/test/reference/recording-surface-over.ps.argb32.ref.png b/test/reference/recording-surface-over.ps.argb32.ref.png deleted file mode 100644 index ac66323..0000000 Binary files a/test/reference/recording-surface-over.ps.argb32.ref.png and /dev/null differ diff --git a/test/reference/recording-surface-over.ps.rgb24.ref.png b/test/reference/recording-surface-over.ps.rgb24.ref.png deleted file mode 100644 index fab3382..0000000 Binary files a/test/reference/recording-surface-over.ps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/recording-surface-over.quartz.argb32.ref.png b/test/reference/recording-surface-over.quartz.argb32.ref.png deleted file mode 100644 index 09d9559..0000000 Binary files a/test/reference/recording-surface-over.quartz.argb32.ref.png and /dev/null differ diff --git a/test/reference/recording-surface-over.quartz.rgb24.ref.png b/test/reference/recording-surface-over.quartz.rgb24.ref.png deleted file mode 100644 index 96aff40..0000000 Binary files a/test/reference/recording-surface-over.quartz.rgb24.ref.png and /dev/null differ diff --git a/test/reference/recording-surface-over.rgb24.ref.png b/test/reference/recording-surface-over.rgb24.ref.png deleted file mode 100644 index 6a8b81e..0000000 Binary files a/test/reference/recording-surface-over.rgb24.ref.png and /dev/null differ diff --git a/test/reference/recording-surface-over.svg.argb32.ref.png b/test/reference/recording-surface-over.svg.argb32.ref.png deleted file mode 100644 index ff4154d..0000000 Binary files a/test/reference/recording-surface-over.svg.argb32.ref.png and /dev/null differ diff --git a/test/reference/recording-surface-over.svg.rgb24.ref.png b/test/reference/recording-surface-over.svg.rgb24.ref.png deleted file mode 100644 index d2d5372..0000000 Binary files a/test/reference/recording-surface-over.svg.rgb24.ref.png and /dev/null differ diff --git a/test/reference/recording-surface-over.traps.argb32.ref.png b/test/reference/recording-surface-over.traps.argb32.ref.png deleted file mode 100644 index d612250..0000000 Binary files a/test/reference/recording-surface-over.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/recording-surface-over.traps.rgb24.ref.png b/test/reference/recording-surface-over.traps.rgb24.ref.png deleted file mode 100644 index 0a57b44..0000000 Binary files a/test/reference/recording-surface-over.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/recording-surface-source.argb32.ref.png b/test/reference/recording-surface-source.argb32.ref.png deleted file mode 100644 index afe6587..0000000 Binary files a/test/reference/recording-surface-source.argb32.ref.png and /dev/null differ diff --git a/test/reference/recording-surface-source.base.argb32.ref.png b/test/reference/recording-surface-source.base.argb32.ref.png deleted file mode 100644 index 3fe1057..0000000 Binary files a/test/reference/recording-surface-source.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/recording-surface-source.base.rgb24.ref.png b/test/reference/recording-surface-source.base.rgb24.ref.png deleted file mode 100644 index d2605bd..0000000 Binary files a/test/reference/recording-surface-source.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/recording-surface-source.rgb24.ref.png b/test/reference/recording-surface-source.rgb24.ref.png deleted file mode 100644 index 76ec389..0000000 Binary files a/test/reference/recording-surface-source.rgb24.ref.png and /dev/null differ diff --git a/test/reference/recording-surface-source.traps.argb32.ref.png b/test/reference/recording-surface-source.traps.argb32.ref.png deleted file mode 100644 index 3fe1057..0000000 Binary files a/test/reference/recording-surface-source.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/recording-surface-source.traps.rgb24.ref.png b/test/reference/recording-surface-source.traps.rgb24.ref.png deleted file mode 100644 index d2605bd..0000000 Binary files a/test/reference/recording-surface-source.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/rectangle-rounding-error.base.argb32.ref.png b/test/reference/rectangle-rounding-error.base.argb32.ref.png deleted file mode 100644 index 6cc1b21..0000000 Binary files a/test/reference/rectangle-rounding-error.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/rectangle-rounding-error.base.rgb24.ref.png b/test/reference/rectangle-rounding-error.base.rgb24.ref.png deleted file mode 100644 index 6cc1b21..0000000 Binary files a/test/reference/rectangle-rounding-error.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/rectangle-rounding-error.ref.png b/test/reference/rectangle-rounding-error.ref.png deleted file mode 100644 index 413345d..0000000 Binary files a/test/reference/rectangle-rounding-error.ref.png and /dev/null differ diff --git a/test/reference/rectilinear-dash-scale-unaligned.ref.png b/test/reference/rectilinear-dash-scale-unaligned.ref.png deleted file mode 100644 index 19dbe7f..0000000 Binary files a/test/reference/rectilinear-dash-scale-unaligned.ref.png and /dev/null differ diff --git a/test/reference/rectilinear-dash-scale-unaligned.traps.ref.png b/test/reference/rectilinear-dash-scale-unaligned.traps.ref.png deleted file mode 100644 index 02abfaa..0000000 Binary files a/test/reference/rectilinear-dash-scale-unaligned.traps.ref.png and /dev/null differ diff --git a/test/reference/rectilinear-dash-scale.ref.png b/test/reference/rectilinear-dash-scale.ref.png deleted file mode 100644 index 1ab868c..0000000 Binary files a/test/reference/rectilinear-dash-scale.ref.png and /dev/null differ diff --git a/test/reference/rectilinear-dash.base.argb32.ref.png b/test/reference/rectilinear-dash.base.argb32.ref.png deleted file mode 100644 index 33e7851..0000000 Binary files a/test/reference/rectilinear-dash.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/rectilinear-dash.base.rgb24.ref.png b/test/reference/rectilinear-dash.base.rgb24.ref.png deleted file mode 100644 index 33e7851..0000000 Binary files a/test/reference/rectilinear-dash.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/rectilinear-dash.mask.argb32.ref.png b/test/reference/rectilinear-dash.mask.argb32.ref.png deleted file mode 100644 index 33e7851..0000000 Binary files a/test/reference/rectilinear-dash.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/rectilinear-dash.mask.rgb24.ref.png b/test/reference/rectilinear-dash.mask.rgb24.ref.png deleted file mode 100644 index 33e7851..0000000 Binary files a/test/reference/rectilinear-dash.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/rectilinear-dash.quartz.xfail.png b/test/reference/rectilinear-dash.quartz.xfail.png deleted file mode 100644 index 5101845..0000000 Binary files a/test/reference/rectilinear-dash.quartz.xfail.png and /dev/null differ diff --git a/test/reference/rectilinear-dash.ref.png b/test/reference/rectilinear-dash.ref.png deleted file mode 100644 index 33e7851..0000000 Binary files a/test/reference/rectilinear-dash.ref.png and /dev/null differ diff --git a/test/reference/rectilinear-dash.traps.argb32.ref.png b/test/reference/rectilinear-dash.traps.argb32.ref.png deleted file mode 100644 index 33e7851..0000000 Binary files a/test/reference/rectilinear-dash.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/rectilinear-dash.traps.rgb24.ref.png b/test/reference/rectilinear-dash.traps.rgb24.ref.png deleted file mode 100644 index 33e7851..0000000 Binary files a/test/reference/rectilinear-dash.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/rectilinear-fill.base.argb32.ref.png b/test/reference/rectilinear-fill.base.argb32.ref.png deleted file mode 100644 index dbaf383..0000000 Binary files a/test/reference/rectilinear-fill.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/rectilinear-fill.base.rgb24.ref.png b/test/reference/rectilinear-fill.base.rgb24.ref.png deleted file mode 100644 index dbaf383..0000000 Binary files a/test/reference/rectilinear-fill.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/rectilinear-fill.ref.png b/test/reference/rectilinear-fill.ref.png deleted file mode 100644 index 84b5967..0000000 Binary files a/test/reference/rectilinear-fill.ref.png and /dev/null differ diff --git a/test/reference/rectilinear-grid.base.argb32.ref.png b/test/reference/rectilinear-grid.base.argb32.ref.png deleted file mode 100644 index 7176cb4..0000000 Binary files a/test/reference/rectilinear-grid.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/rectilinear-grid.base.rgb24.ref.png b/test/reference/rectilinear-grid.base.rgb24.ref.png deleted file mode 100644 index 7176cb4..0000000 Binary files a/test/reference/rectilinear-grid.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/rectilinear-grid.image16.ref.png b/test/reference/rectilinear-grid.image16.ref.png deleted file mode 100644 index 4d4c4da..0000000 Binary files a/test/reference/rectilinear-grid.image16.ref.png and /dev/null differ diff --git a/test/reference/rectilinear-grid.ref.png b/test/reference/rectilinear-grid.ref.png deleted file mode 100644 index 8d47ef5..0000000 Binary files a/test/reference/rectilinear-grid.ref.png and /dev/null differ diff --git a/test/reference/rectilinear-grid.traps.argb32.ref.png b/test/reference/rectilinear-grid.traps.argb32.ref.png deleted file mode 100644 index 7176cb4..0000000 Binary files a/test/reference/rectilinear-grid.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/rectilinear-grid.traps.rgb24.ref.png b/test/reference/rectilinear-grid.traps.rgb24.ref.png deleted file mode 100644 index 7176cb4..0000000 Binary files a/test/reference/rectilinear-grid.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/rectilinear-miter-limit.base.argb32.ref.png b/test/reference/rectilinear-miter-limit.base.argb32.ref.png deleted file mode 100644 index ddf7570..0000000 Binary files a/test/reference/rectilinear-miter-limit.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/rectilinear-miter-limit.base.rgb24.ref.png b/test/reference/rectilinear-miter-limit.base.rgb24.ref.png deleted file mode 100644 index ddf7570..0000000 Binary files a/test/reference/rectilinear-miter-limit.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/rectilinear-miter-limit.ps2.ref.png b/test/reference/rectilinear-miter-limit.ps2.ref.png deleted file mode 100644 index 8213060..0000000 Binary files a/test/reference/rectilinear-miter-limit.ps2.ref.png and /dev/null differ diff --git a/test/reference/rectilinear-miter-limit.ps3.ref.png b/test/reference/rectilinear-miter-limit.ps3.ref.png deleted file mode 100644 index 8213060..0000000 Binary files a/test/reference/rectilinear-miter-limit.ps3.ref.png and /dev/null differ diff --git a/test/reference/rectilinear-miter-limit.ref.png b/test/reference/rectilinear-miter-limit.ref.png deleted file mode 100644 index d64d581..0000000 Binary files a/test/reference/rectilinear-miter-limit.ref.png and /dev/null differ diff --git a/test/reference/rectilinear-miter-limit.traps.argb32.ref.png b/test/reference/rectilinear-miter-limit.traps.argb32.ref.png deleted file mode 100644 index ddf7570..0000000 Binary files a/test/reference/rectilinear-miter-limit.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/rectilinear-miter-limit.traps.rgb24.ref.png b/test/reference/rectilinear-miter-limit.traps.rgb24.ref.png deleted file mode 100644 index ddf7570..0000000 Binary files a/test/reference/rectilinear-miter-limit.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/rectilinear-stroke.base.argb32.ref.png b/test/reference/rectilinear-stroke.base.argb32.ref.png deleted file mode 100644 index 260909b..0000000 Binary files a/test/reference/rectilinear-stroke.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/rectilinear-stroke.base.rgb24.ref.png b/test/reference/rectilinear-stroke.base.rgb24.ref.png deleted file mode 100644 index 260909b..0000000 Binary files a/test/reference/rectilinear-stroke.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/rectilinear-stroke.quartz.xfail.png b/test/reference/rectilinear-stroke.quartz.xfail.png deleted file mode 100644 index e2a508e..0000000 Binary files a/test/reference/rectilinear-stroke.quartz.xfail.png and /dev/null differ diff --git a/test/reference/rectilinear-stroke.ref.png b/test/reference/rectilinear-stroke.ref.png deleted file mode 100644 index 0a40b0d..0000000 Binary files a/test/reference/rectilinear-stroke.ref.png and /dev/null differ diff --git a/test/reference/reflected-stroke.base.argb32.ref.png b/test/reference/reflected-stroke.base.argb32.ref.png deleted file mode 100644 index 3b99f1c..0000000 Binary files a/test/reference/reflected-stroke.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/reflected-stroke.base.rgb24.ref.png b/test/reference/reflected-stroke.base.rgb24.ref.png deleted file mode 100644 index 3b99f1c..0000000 Binary files a/test/reference/reflected-stroke.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/reflected-stroke.image16.ref.png b/test/reference/reflected-stroke.image16.ref.png deleted file mode 100644 index ab12737..0000000 Binary files a/test/reference/reflected-stroke.image16.ref.png and /dev/null differ diff --git a/test/reference/reflected-stroke.mask.argb32.ref.png b/test/reference/reflected-stroke.mask.argb32.ref.png deleted file mode 100644 index 9a7d6bc..0000000 Binary files a/test/reference/reflected-stroke.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/reflected-stroke.mask.rgb24.ref.png b/test/reference/reflected-stroke.mask.rgb24.ref.png deleted file mode 100644 index 9a7d6bc..0000000 Binary files a/test/reference/reflected-stroke.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/reflected-stroke.ps.ref.png b/test/reference/reflected-stroke.ps.ref.png deleted file mode 100644 index 5a28eef..0000000 Binary files a/test/reference/reflected-stroke.ps.ref.png and /dev/null differ diff --git a/test/reference/reflected-stroke.ref.png b/test/reference/reflected-stroke.ref.png deleted file mode 100644 index c05eb96..0000000 Binary files a/test/reference/reflected-stroke.ref.png and /dev/null differ diff --git a/test/reference/reflected-stroke.traps.argb32.ref.png b/test/reference/reflected-stroke.traps.argb32.ref.png deleted file mode 100644 index 3b99f1c..0000000 Binary files a/test/reference/reflected-stroke.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/reflected-stroke.traps.rgb24.ref.png b/test/reference/reflected-stroke.traps.rgb24.ref.png deleted file mode 100644 index 3b99f1c..0000000 Binary files a/test/reference/reflected-stroke.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/rel-path.base.argb32.ref.png b/test/reference/rel-path.base.argb32.ref.png deleted file mode 100644 index 5c9cf21..0000000 Binary files a/test/reference/rel-path.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/rel-path.base.rgb24.ref.png b/test/reference/rel-path.base.rgb24.ref.png deleted file mode 100644 index 72e975a..0000000 Binary files a/test/reference/rel-path.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/rel-path.mask.rgb24.ref.png b/test/reference/rel-path.mask.rgb24.ref.png deleted file mode 100644 index 78d8a08..0000000 Binary files a/test/reference/rel-path.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/rel-path.ps2.rgb24.ref.png b/test/reference/rel-path.ps2.rgb24.ref.png deleted file mode 100644 index ccdcebb..0000000 Binary files a/test/reference/rel-path.ps2.rgb24.ref.png and /dev/null differ diff --git a/test/reference/rel-path.ps3.rgb24.ref.png b/test/reference/rel-path.ps3.rgb24.ref.png deleted file mode 100644 index ccdcebb..0000000 Binary files a/test/reference/rel-path.ps3.rgb24.ref.png and /dev/null differ diff --git a/test/reference/rel-path.ref.png b/test/reference/rel-path.ref.png deleted file mode 100644 index 67fe178..0000000 Binary files a/test/reference/rel-path.ref.png and /dev/null differ diff --git a/test/reference/rel-path.traps.argb32.ref.png b/test/reference/rel-path.traps.argb32.ref.png deleted file mode 100644 index 5c9cf21..0000000 Binary files a/test/reference/rel-path.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/rel-path.traps.rgb24.ref.png b/test/reference/rel-path.traps.rgb24.ref.png deleted file mode 100644 index 72e975a..0000000 Binary files a/test/reference/rel-path.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/rgb24-ignore-alpha.base.argb32.ref.png b/test/reference/rgb24-ignore-alpha.base.argb32.ref.png deleted file mode 100644 index 922eddd..0000000 Binary files a/test/reference/rgb24-ignore-alpha.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/rgb24-ignore-alpha.base.rgb24.ref.png b/test/reference/rgb24-ignore-alpha.base.rgb24.ref.png deleted file mode 100644 index 922eddd..0000000 Binary files a/test/reference/rgb24-ignore-alpha.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/rgb24-ignore-alpha.ref.png b/test/reference/rgb24-ignore-alpha.ref.png deleted file mode 100644 index ab1d8fa..0000000 Binary files a/test/reference/rgb24-ignore-alpha.ref.png and /dev/null differ diff --git a/test/reference/rotate-clip-image-surface-paint.base.argb32.ref.png b/test/reference/rotate-clip-image-surface-paint.base.argb32.ref.png deleted file mode 100644 index 7f74b2b..0000000 Binary files a/test/reference/rotate-clip-image-surface-paint.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/rotate-clip-image-surface-paint.base.rgb24.ref.png b/test/reference/rotate-clip-image-surface-paint.base.rgb24.ref.png deleted file mode 100644 index 7f74b2b..0000000 Binary files a/test/reference/rotate-clip-image-surface-paint.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/rotate-clip-image-surface-paint.ref.png b/test/reference/rotate-clip-image-surface-paint.ref.png deleted file mode 100644 index 90746fd..0000000 Binary files a/test/reference/rotate-clip-image-surface-paint.ref.png and /dev/null differ diff --git a/test/reference/rotate-clip-image-surface-paint.traps.argb32.ref.png b/test/reference/rotate-clip-image-surface-paint.traps.argb32.ref.png deleted file mode 100644 index 9d991d9..0000000 Binary files a/test/reference/rotate-clip-image-surface-paint.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/rotate-clip-image-surface-paint.traps.rgb24.ref.png b/test/reference/rotate-clip-image-surface-paint.traps.rgb24.ref.png deleted file mode 100644 index 9d991d9..0000000 Binary files a/test/reference/rotate-clip-image-surface-paint.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/rotate-clip-image-surface-paint.xlib-fallback.rgb24.ref.png b/test/reference/rotate-clip-image-surface-paint.xlib-fallback.rgb24.ref.png deleted file mode 100644 index 9d991d9..0000000 Binary files a/test/reference/rotate-clip-image-surface-paint.xlib-fallback.rgb24.ref.png and /dev/null differ diff --git a/test/reference/rotate-clip-image-surface-paint.xlib-window.rgb24.ref.png b/test/reference/rotate-clip-image-surface-paint.xlib-window.rgb24.ref.png deleted file mode 100644 index 9d991d9..0000000 Binary files a/test/reference/rotate-clip-image-surface-paint.xlib-window.rgb24.ref.png and /dev/null differ diff --git a/test/reference/rotate-clip.surface-paint.image.argb32.ref.png b/test/reference/rotate-clip.surface-paint.image.argb32.ref.png deleted file mode 100644 index 63e6f96..0000000 Binary files a/test/reference/rotate-clip.surface-paint.image.argb32.ref.png and /dev/null differ diff --git a/test/reference/rotate-clip.surface-paint.image.rgb24.ref.png b/test/reference/rotate-clip.surface-paint.image.rgb24.ref.png deleted file mode 100644 index 63e6f96..0000000 Binary files a/test/reference/rotate-clip.surface-paint.image.rgb24.ref.png and /dev/null differ diff --git a/test/reference/rotate-image-surface-paint.base.argb32.ref.png b/test/reference/rotate-image-surface-paint.base.argb32.ref.png deleted file mode 100644 index 06a4820..0000000 Binary files a/test/reference/rotate-image-surface-paint.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/rotate-image-surface-paint.base.rgb24.ref.png b/test/reference/rotate-image-surface-paint.base.rgb24.ref.png deleted file mode 100644 index 06a4820..0000000 Binary files a/test/reference/rotate-image-surface-paint.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/rotate-image-surface-paint.pdf.xfail.png b/test/reference/rotate-image-surface-paint.pdf.xfail.png deleted file mode 100644 index e1892e5..0000000 Binary files a/test/reference/rotate-image-surface-paint.pdf.xfail.png and /dev/null differ diff --git a/test/reference/rotate-image-surface-paint.ps.ref.png b/test/reference/rotate-image-surface-paint.ps.ref.png deleted file mode 100644 index 4e46364..0000000 Binary files a/test/reference/rotate-image-surface-paint.ps.ref.png and /dev/null differ diff --git a/test/reference/rotate-image-surface-paint.quartz.ref.png b/test/reference/rotate-image-surface-paint.quartz.ref.png deleted file mode 100644 index a716b63..0000000 Binary files a/test/reference/rotate-image-surface-paint.quartz.ref.png and /dev/null differ diff --git a/test/reference/rotate-image-surface-paint.ref.png b/test/reference/rotate-image-surface-paint.ref.png deleted file mode 100644 index 06a4820..0000000 Binary files a/test/reference/rotate-image-surface-paint.ref.png and /dev/null differ diff --git a/test/reference/rotate-image-surface-paint.svg.ref.png b/test/reference/rotate-image-surface-paint.svg.ref.png deleted file mode 100644 index e0db245..0000000 Binary files a/test/reference/rotate-image-surface-paint.svg.ref.png and /dev/null differ diff --git a/test/reference/rotate-image-surface-paint.svg.xfail.png b/test/reference/rotate-image-surface-paint.svg.xfail.png deleted file mode 100644 index 4040784..0000000 Binary files a/test/reference/rotate-image-surface-paint.svg.xfail.png and /dev/null differ diff --git a/test/reference/rotate-stroke-box.ref.png b/test/reference/rotate-stroke-box.ref.png deleted file mode 100644 index ef155f0..0000000 Binary files a/test/reference/rotate-stroke-box.ref.png and /dev/null differ diff --git a/test/reference/rotated-clip.base.argb32.ref.png b/test/reference/rotated-clip.base.argb32.ref.png deleted file mode 100644 index e553a13..0000000 Binary files a/test/reference/rotated-clip.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/rotated-clip.base.rgb24.ref.png b/test/reference/rotated-clip.base.rgb24.ref.png deleted file mode 100644 index e553a13..0000000 Binary files a/test/reference/rotated-clip.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/rotated-clip.image16.ref.png b/test/reference/rotated-clip.image16.ref.png deleted file mode 100644 index 26d9a1a..0000000 Binary files a/test/reference/rotated-clip.image16.ref.png and /dev/null differ diff --git a/test/reference/rotated-clip.mask.argb32.ref.png b/test/reference/rotated-clip.mask.argb32.ref.png deleted file mode 100644 index 8168f9d..0000000 Binary files a/test/reference/rotated-clip.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/rotated-clip.mask.rgb24.ref.png b/test/reference/rotated-clip.mask.rgb24.ref.png deleted file mode 100644 index 8168f9d..0000000 Binary files a/test/reference/rotated-clip.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/rotated-clip.ps.ref.png b/test/reference/rotated-clip.ps.ref.png deleted file mode 100644 index a2a0ace..0000000 Binary files a/test/reference/rotated-clip.ps.ref.png and /dev/null differ diff --git a/test/reference/rotated-clip.quartz.ref.png b/test/reference/rotated-clip.quartz.ref.png deleted file mode 100644 index 6282846..0000000 Binary files a/test/reference/rotated-clip.quartz.ref.png and /dev/null differ diff --git a/test/reference/rotated-clip.ref.png b/test/reference/rotated-clip.ref.png deleted file mode 100644 index f5468c7..0000000 Binary files a/test/reference/rotated-clip.ref.png and /dev/null differ diff --git a/test/reference/rotated-clip.traps.argb32.ref.png b/test/reference/rotated-clip.traps.argb32.ref.png deleted file mode 100644 index ca0f0af..0000000 Binary files a/test/reference/rotated-clip.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/rotated-clip.traps.rgb24.ref.png b/test/reference/rotated-clip.traps.rgb24.ref.png deleted file mode 100644 index ca0f0af..0000000 Binary files a/test/reference/rotated-clip.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/rounded-rectangle-fill.base.argb32.ref.png b/test/reference/rounded-rectangle-fill.base.argb32.ref.png deleted file mode 100644 index 52a355d..0000000 Binary files a/test/reference/rounded-rectangle-fill.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/rounded-rectangle-fill.base.rgb24.ref.png b/test/reference/rounded-rectangle-fill.base.rgb24.ref.png deleted file mode 100644 index 52a355d..0000000 Binary files a/test/reference/rounded-rectangle-fill.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/rounded-rectangle-fill.image16.ref.png b/test/reference/rounded-rectangle-fill.image16.ref.png deleted file mode 100644 index 0739e5d..0000000 Binary files a/test/reference/rounded-rectangle-fill.image16.ref.png and /dev/null differ diff --git a/test/reference/rounded-rectangle-fill.ps.ref.png b/test/reference/rounded-rectangle-fill.ps.ref.png deleted file mode 100644 index 215ad3a..0000000 Binary files a/test/reference/rounded-rectangle-fill.ps.ref.png and /dev/null differ diff --git a/test/reference/rounded-rectangle-fill.quartz.ref.png b/test/reference/rounded-rectangle-fill.quartz.ref.png deleted file mode 100644 index ee685ca..0000000 Binary files a/test/reference/rounded-rectangle-fill.quartz.ref.png and /dev/null differ diff --git a/test/reference/rounded-rectangle-fill.ref.png b/test/reference/rounded-rectangle-fill.ref.png deleted file mode 100644 index e9bab0f..0000000 Binary files a/test/reference/rounded-rectangle-fill.ref.png and /dev/null differ diff --git a/test/reference/rounded-rectangle-fill.traps.argb32.ref.png b/test/reference/rounded-rectangle-fill.traps.argb32.ref.png deleted file mode 100644 index 52a355d..0000000 Binary files a/test/reference/rounded-rectangle-fill.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/rounded-rectangle-fill.traps.rgb24.ref.png b/test/reference/rounded-rectangle-fill.traps.rgb24.ref.png deleted file mode 100644 index 52a355d..0000000 Binary files a/test/reference/rounded-rectangle-fill.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/rounded-rectangle-stroke.base.argb32.ref.png b/test/reference/rounded-rectangle-stroke.base.argb32.ref.png deleted file mode 100644 index 490821e..0000000 Binary files a/test/reference/rounded-rectangle-stroke.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/rounded-rectangle-stroke.base.rgb24.ref.png b/test/reference/rounded-rectangle-stroke.base.rgb24.ref.png deleted file mode 100644 index 490821e..0000000 Binary files a/test/reference/rounded-rectangle-stroke.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/rounded-rectangle-stroke.image16.ref.png b/test/reference/rounded-rectangle-stroke.image16.ref.png deleted file mode 100644 index f32a2e0..0000000 Binary files a/test/reference/rounded-rectangle-stroke.image16.ref.png and /dev/null differ diff --git a/test/reference/rounded-rectangle-stroke.mask.argb32.ref.png b/test/reference/rounded-rectangle-stroke.mask.argb32.ref.png deleted file mode 100644 index 3f2a1fb..0000000 Binary files a/test/reference/rounded-rectangle-stroke.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/rounded-rectangle-stroke.mask.rgb24.ref.png b/test/reference/rounded-rectangle-stroke.mask.rgb24.ref.png deleted file mode 100644 index 3f2a1fb..0000000 Binary files a/test/reference/rounded-rectangle-stroke.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/rounded-rectangle-stroke.ps.ref.png b/test/reference/rounded-rectangle-stroke.ps.ref.png deleted file mode 100644 index dd5fc97..0000000 Binary files a/test/reference/rounded-rectangle-stroke.ps.ref.png and /dev/null differ diff --git a/test/reference/rounded-rectangle-stroke.ref.png b/test/reference/rounded-rectangle-stroke.ref.png deleted file mode 100644 index a985960..0000000 Binary files a/test/reference/rounded-rectangle-stroke.ref.png and /dev/null differ diff --git a/test/reference/rounded-rectangle-stroke.traps.argb32.ref.png b/test/reference/rounded-rectangle-stroke.traps.argb32.ref.png deleted file mode 100644 index 490821e..0000000 Binary files a/test/reference/rounded-rectangle-stroke.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/rounded-rectangle-stroke.traps.rgb24.ref.png b/test/reference/rounded-rectangle-stroke.traps.rgb24.ref.png deleted file mode 100644 index 490821e..0000000 Binary files a/test/reference/rounded-rectangle-stroke.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/sample-diagonal.ref.png b/test/reference/sample-diagonal.ref.png deleted file mode 100644 index f866c2e..0000000 Binary files a/test/reference/sample-diagonal.ref.png and /dev/null differ diff --git a/test/reference/sample-horizontal.ref.png b/test/reference/sample-horizontal.ref.png deleted file mode 100644 index 75f866b..0000000 Binary files a/test/reference/sample-horizontal.ref.png and /dev/null differ diff --git a/test/reference/sample-vertical.ref.png b/test/reference/sample-vertical.ref.png deleted file mode 100644 index 75f866b..0000000 Binary files a/test/reference/sample-vertical.ref.png and /dev/null differ diff --git a/test/reference/scale-down-source-surface-paint.base.argb32.ref.png b/test/reference/scale-down-source-surface-paint.base.argb32.ref.png deleted file mode 100644 index 7477094..0000000 Binary files a/test/reference/scale-down-source-surface-paint.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/scale-down-source-surface-paint.base.rgb24.ref.png b/test/reference/scale-down-source-surface-paint.base.rgb24.ref.png deleted file mode 100644 index 7477094..0000000 Binary files a/test/reference/scale-down-source-surface-paint.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/scale-down-source-surface-paint.ref.png b/test/reference/scale-down-source-surface-paint.ref.png deleted file mode 100644 index 5c969d2..0000000 Binary files a/test/reference/scale-down-source-surface-paint.ref.png and /dev/null differ diff --git a/test/reference/scale-offset-image.base.argb32.ref.png b/test/reference/scale-offset-image.base.argb32.ref.png deleted file mode 100644 index 19cd614..0000000 Binary files a/test/reference/scale-offset-image.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/scale-offset-image.base.rgb24.ref.png b/test/reference/scale-offset-image.base.rgb24.ref.png deleted file mode 100644 index 19cd614..0000000 Binary files a/test/reference/scale-offset-image.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/scale-offset-image.gl.ref.png b/test/reference/scale-offset-image.gl.ref.png deleted file mode 100644 index d2a845c..0000000 Binary files a/test/reference/scale-offset-image.gl.ref.png and /dev/null differ diff --git a/test/reference/scale-offset-image.image16.ref.png b/test/reference/scale-offset-image.image16.ref.png deleted file mode 100644 index e67949d..0000000 Binary files a/test/reference/scale-offset-image.image16.ref.png and /dev/null differ diff --git a/test/reference/scale-offset-image.pdf.argb32.ref.png b/test/reference/scale-offset-image.pdf.argb32.ref.png deleted file mode 100644 index 74abfae..0000000 Binary files a/test/reference/scale-offset-image.pdf.argb32.ref.png and /dev/null differ diff --git a/test/reference/scale-offset-image.pdf.rgb24.ref.png b/test/reference/scale-offset-image.pdf.rgb24.ref.png deleted file mode 100644 index 74abfae..0000000 Binary files a/test/reference/scale-offset-image.pdf.rgb24.ref.png and /dev/null differ diff --git a/test/reference/scale-offset-image.ps.ref.png b/test/reference/scale-offset-image.ps.ref.png deleted file mode 100644 index 19941f0..0000000 Binary files a/test/reference/scale-offset-image.ps.ref.png and /dev/null differ diff --git a/test/reference/scale-offset-image.quartz.ref.png b/test/reference/scale-offset-image.quartz.ref.png deleted file mode 100644 index f7a5e72..0000000 Binary files a/test/reference/scale-offset-image.quartz.ref.png and /dev/null differ diff --git a/test/reference/scale-offset-image.ref.png b/test/reference/scale-offset-image.ref.png deleted file mode 100644 index ab1ced8..0000000 Binary files a/test/reference/scale-offset-image.ref.png and /dev/null differ diff --git a/test/reference/scale-offset-image.script.xfail.png b/test/reference/scale-offset-image.script.xfail.png deleted file mode 100644 index b89bb66..0000000 Binary files a/test/reference/scale-offset-image.script.xfail.png and /dev/null differ diff --git a/test/reference/scale-offset-image.traps.argb32.ref.png b/test/reference/scale-offset-image.traps.argb32.ref.png deleted file mode 100644 index 19cd614..0000000 Binary files a/test/reference/scale-offset-image.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/scale-offset-image.traps.rgb24.ref.png b/test/reference/scale-offset-image.traps.rgb24.ref.png deleted file mode 100644 index 19cd614..0000000 Binary files a/test/reference/scale-offset-image.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/scale-offset-image.xfail.png b/test/reference/scale-offset-image.xfail.png deleted file mode 100644 index f0db601..0000000 Binary files a/test/reference/scale-offset-image.xfail.png and /dev/null differ diff --git a/test/reference/scale-offset-image.xlib-fallback.xfail.png b/test/reference/scale-offset-image.xlib-fallback.xfail.png deleted file mode 100644 index 3e09d6f..0000000 Binary files a/test/reference/scale-offset-image.xlib-fallback.xfail.png and /dev/null differ diff --git a/test/reference/scale-offset-similar.base.argb32.ref.png b/test/reference/scale-offset-similar.base.argb32.ref.png deleted file mode 100644 index 19cd614..0000000 Binary files a/test/reference/scale-offset-similar.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/scale-offset-similar.base.rgb24.ref.png b/test/reference/scale-offset-similar.base.rgb24.ref.png deleted file mode 100644 index 19cd614..0000000 Binary files a/test/reference/scale-offset-similar.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/scale-offset-similar.gl.ref.png b/test/reference/scale-offset-similar.gl.ref.png deleted file mode 100644 index d2a845c..0000000 Binary files a/test/reference/scale-offset-similar.gl.ref.png and /dev/null differ diff --git a/test/reference/scale-offset-similar.image16.ref.png b/test/reference/scale-offset-similar.image16.ref.png deleted file mode 100644 index e67949d..0000000 Binary files a/test/reference/scale-offset-similar.image16.ref.png and /dev/null differ diff --git a/test/reference/scale-offset-similar.pdf.argb32.ref.png b/test/reference/scale-offset-similar.pdf.argb32.ref.png deleted file mode 100644 index c1e2765..0000000 Binary files a/test/reference/scale-offset-similar.pdf.argb32.ref.png and /dev/null differ diff --git a/test/reference/scale-offset-similar.pdf.rgb24.ref.png b/test/reference/scale-offset-similar.pdf.rgb24.ref.png deleted file mode 100644 index c1e2765..0000000 Binary files a/test/reference/scale-offset-similar.pdf.rgb24.ref.png and /dev/null differ diff --git a/test/reference/scale-offset-similar.ps.ref.png b/test/reference/scale-offset-similar.ps.ref.png deleted file mode 100644 index 8c10d30..0000000 Binary files a/test/reference/scale-offset-similar.ps.ref.png and /dev/null differ diff --git a/test/reference/scale-offset-similar.quartz.ref.png b/test/reference/scale-offset-similar.quartz.ref.png deleted file mode 100644 index f7a5e72..0000000 Binary files a/test/reference/scale-offset-similar.quartz.ref.png and /dev/null differ diff --git a/test/reference/scale-offset-similar.recording.xfail.png b/test/reference/scale-offset-similar.recording.xfail.png deleted file mode 100644 index 0f2553e..0000000 Binary files a/test/reference/scale-offset-similar.recording.xfail.png and /dev/null differ diff --git a/test/reference/scale-offset-similar.ref.png b/test/reference/scale-offset-similar.ref.png deleted file mode 100644 index 8b3649a..0000000 Binary files a/test/reference/scale-offset-similar.ref.png and /dev/null differ diff --git a/test/reference/scale-offset-similar.script.xfail.png b/test/reference/scale-offset-similar.script.xfail.png deleted file mode 100644 index b89bb66..0000000 Binary files a/test/reference/scale-offset-similar.script.xfail.png and /dev/null differ diff --git a/test/reference/scale-offset-similar.traps.argb32.ref.png b/test/reference/scale-offset-similar.traps.argb32.ref.png deleted file mode 100644 index 19cd614..0000000 Binary files a/test/reference/scale-offset-similar.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/scale-offset-similar.traps.rgb24.ref.png b/test/reference/scale-offset-similar.traps.rgb24.ref.png deleted file mode 100644 index 19cd614..0000000 Binary files a/test/reference/scale-offset-similar.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/scale-offset-similar.xfail.png b/test/reference/scale-offset-similar.xfail.png deleted file mode 100644 index f0db601..0000000 Binary files a/test/reference/scale-offset-similar.xfail.png and /dev/null differ diff --git a/test/reference/scale-offset-similar.xlib-fallback.xfail.png b/test/reference/scale-offset-similar.xlib-fallback.xfail.png deleted file mode 100644 index 3e09d6f..0000000 Binary files a/test/reference/scale-offset-similar.xlib-fallback.xfail.png and /dev/null differ diff --git a/test/reference/scale-offset-similar.xlib.xfail.png b/test/reference/scale-offset-similar.xlib.xfail.png deleted file mode 100644 index eb48516..0000000 Binary files a/test/reference/scale-offset-similar.xlib.xfail.png and /dev/null differ diff --git a/test/reference/scale-offset-xlib-fallback.rgb24.ref.png b/test/reference/scale-offset-xlib-fallback.rgb24.ref.png deleted file mode 100644 index dbb1225..0000000 Binary files a/test/reference/scale-offset-xlib-fallback.rgb24.ref.png and /dev/null differ diff --git a/test/reference/scale-offset-xlib-window.rgb24.ref.png b/test/reference/scale-offset-xlib-window.rgb24.ref.png deleted file mode 100644 index dbb1225..0000000 Binary files a/test/reference/scale-offset-xlib-window.rgb24.ref.png and /dev/null differ diff --git a/test/reference/scale-offset-xlib.ref.png b/test/reference/scale-offset-xlib.ref.png deleted file mode 100644 index dbb1225..0000000 Binary files a/test/reference/scale-offset-xlib.ref.png and /dev/null differ diff --git a/test/reference/scale-offset.image.argb32.ref.png b/test/reference/scale-offset.image.argb32.ref.png deleted file mode 100644 index 1247063..0000000 Binary files a/test/reference/scale-offset.image.argb32.ref.png and /dev/null differ diff --git a/test/reference/scale-offset.image.rgb24.ref.png b/test/reference/scale-offset.image.rgb24.ref.png deleted file mode 100644 index 1247063..0000000 Binary files a/test/reference/scale-offset.image.rgb24.ref.png and /dev/null differ diff --git a/test/reference/scale-source-surface-paint.base.argb32.ref.png b/test/reference/scale-source-surface-paint.base.argb32.ref.png deleted file mode 100644 index e159d15..0000000 Binary files a/test/reference/scale-source-surface-paint.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/scale-source-surface-paint.base.rgb24.ref.png b/test/reference/scale-source-surface-paint.base.rgb24.ref.png deleted file mode 100644 index 3491a7c..0000000 Binary files a/test/reference/scale-source-surface-paint.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/scale-source-surface-paint.pdf.argb32.xfail.png b/test/reference/scale-source-surface-paint.pdf.argb32.xfail.png deleted file mode 100644 index 7ecac17..0000000 Binary files a/test/reference/scale-source-surface-paint.pdf.argb32.xfail.png and /dev/null differ diff --git a/test/reference/scale-source-surface-paint.pdf.rgb24.xfail.png b/test/reference/scale-source-surface-paint.pdf.rgb24.xfail.png deleted file mode 100644 index fa1291f..0000000 Binary files a/test/reference/scale-source-surface-paint.pdf.rgb24.xfail.png and /dev/null differ diff --git a/test/reference/scale-source-surface-paint.ref.png b/test/reference/scale-source-surface-paint.ref.png deleted file mode 100644 index ec3c059..0000000 Binary files a/test/reference/scale-source-surface-paint.ref.png and /dev/null differ diff --git a/test/reference/scale-source-surface-paint.svg.argb32.xfail.png b/test/reference/scale-source-surface-paint.svg.argb32.xfail.png deleted file mode 100644 index ed946d4..0000000 Binary files a/test/reference/scale-source-surface-paint.svg.argb32.xfail.png and /dev/null differ diff --git a/test/reference/scale-source-surface-paint.svg.rgb24.xfail.png b/test/reference/scale-source-surface-paint.svg.rgb24.xfail.png deleted file mode 100644 index 7d065d4..0000000 Binary files a/test/reference/scale-source-surface-paint.svg.rgb24.xfail.png and /dev/null differ diff --git a/test/reference/select-font-face.base.argb32.ref.png b/test/reference/select-font-face.base.argb32.ref.png deleted file mode 100644 index 1334a9a..0000000 Binary files a/test/reference/select-font-face.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/select-font-face.base.rgb24.ref.png b/test/reference/select-font-face.base.rgb24.ref.png deleted file mode 100644 index 1334a9a..0000000 Binary files a/test/reference/select-font-face.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/select-font-face.image16.ref.png b/test/reference/select-font-face.image16.ref.png deleted file mode 100644 index 2c3191c..0000000 Binary files a/test/reference/select-font-face.image16.ref.png and /dev/null differ diff --git a/test/reference/select-font-face.ps2.ref.png b/test/reference/select-font-face.ps2.ref.png deleted file mode 100644 index 6c2f361..0000000 Binary files a/test/reference/select-font-face.ps2.ref.png and /dev/null differ diff --git a/test/reference/select-font-face.ps3.ref.png b/test/reference/select-font-face.ps3.ref.png deleted file mode 100644 index 6c2f361..0000000 Binary files a/test/reference/select-font-face.ps3.ref.png and /dev/null differ diff --git a/test/reference/select-font-face.quartz.ref.png b/test/reference/select-font-face.quartz.ref.png deleted file mode 100644 index 69fd2e2..0000000 Binary files a/test/reference/select-font-face.quartz.ref.png and /dev/null differ diff --git a/test/reference/select-font-face.ref.png b/test/reference/select-font-face.ref.png deleted file mode 100644 index 1334a9a..0000000 Binary files a/test/reference/select-font-face.ref.png and /dev/null differ diff --git a/test/reference/select-font-face.traps.ref.png b/test/reference/select-font-face.traps.ref.png deleted file mode 100644 index 1334a9a..0000000 Binary files a/test/reference/select-font-face.traps.ref.png and /dev/null differ diff --git a/test/reference/self-copy-overlap.base.argb32.ref.png b/test/reference/self-copy-overlap.base.argb32.ref.png deleted file mode 100644 index a70e819..0000000 Binary files a/test/reference/self-copy-overlap.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/self-copy-overlap.base.rgb24.ref.png b/test/reference/self-copy-overlap.base.rgb24.ref.png deleted file mode 100644 index e9cd7b5..0000000 Binary files a/test/reference/self-copy-overlap.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/self-copy-overlap.mask.argb32.ref.png b/test/reference/self-copy-overlap.mask.argb32.ref.png deleted file mode 100644 index a70e819..0000000 Binary files a/test/reference/self-copy-overlap.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/self-copy-overlap.mask.rgb24.ref.png b/test/reference/self-copy-overlap.mask.rgb24.ref.png deleted file mode 100644 index e9cd7b5..0000000 Binary files a/test/reference/self-copy-overlap.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/self-copy-overlap.traps.argb32.ref.png b/test/reference/self-copy-overlap.traps.argb32.ref.png deleted file mode 100644 index a70e819..0000000 Binary files a/test/reference/self-copy-overlap.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/self-copy-overlap.traps.rgb24.ref.png b/test/reference/self-copy-overlap.traps.rgb24.ref.png deleted file mode 100644 index e9cd7b5..0000000 Binary files a/test/reference/self-copy-overlap.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/self-copy.base.argb32.ref.png b/test/reference/self-copy.base.argb32.ref.png deleted file mode 100644 index daa4dcb..0000000 Binary files a/test/reference/self-copy.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/self-copy.base.rgb24.ref.png b/test/reference/self-copy.base.rgb24.ref.png deleted file mode 100644 index daa4dcb..0000000 Binary files a/test/reference/self-copy.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/self-copy.ps2.ref.png b/test/reference/self-copy.ps2.ref.png deleted file mode 100644 index 5c9dd57..0000000 Binary files a/test/reference/self-copy.ps2.ref.png and /dev/null differ diff --git a/test/reference/self-copy.ps3.ref.png b/test/reference/self-copy.ps3.ref.png deleted file mode 100644 index 5c9dd57..0000000 Binary files a/test/reference/self-copy.ps3.ref.png and /dev/null differ diff --git a/test/reference/self-copy.ref.png b/test/reference/self-copy.ref.png deleted file mode 100644 index d8221d8..0000000 Binary files a/test/reference/self-copy.ref.png and /dev/null differ diff --git a/test/reference/self-copy.traps.argb32.ref.png b/test/reference/self-copy.traps.argb32.ref.png deleted file mode 100644 index daa4dcb..0000000 Binary files a/test/reference/self-copy.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/self-copy.traps.rgb24.ref.png b/test/reference/self-copy.traps.rgb24.ref.png deleted file mode 100644 index daa4dcb..0000000 Binary files a/test/reference/self-copy.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/self-intersecting.base.argb32.ref.png b/test/reference/self-intersecting.base.argb32.ref.png deleted file mode 100644 index f0068e6..0000000 Binary files a/test/reference/self-intersecting.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/self-intersecting.base.rgb24.ref.png b/test/reference/self-intersecting.base.rgb24.ref.png deleted file mode 100644 index f0068e6..0000000 Binary files a/test/reference/self-intersecting.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/self-intersecting.ps.ref.png b/test/reference/self-intersecting.ps.ref.png deleted file mode 100644 index 84fde01..0000000 Binary files a/test/reference/self-intersecting.ps.ref.png and /dev/null differ diff --git a/test/reference/self-intersecting.quartz.xfail.png b/test/reference/self-intersecting.quartz.xfail.png deleted file mode 100644 index 4d08713..0000000 Binary files a/test/reference/self-intersecting.quartz.xfail.png and /dev/null differ diff --git a/test/reference/self-intersecting.ref.png b/test/reference/self-intersecting.ref.png deleted file mode 100644 index d554d83..0000000 Binary files a/test/reference/self-intersecting.ref.png and /dev/null differ diff --git a/test/reference/self-intersecting.traps.argb32.ref.png b/test/reference/self-intersecting.traps.argb32.ref.png deleted file mode 100644 index f0068e6..0000000 Binary files a/test/reference/self-intersecting.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/self-intersecting.traps.rgb24.ref.png b/test/reference/self-intersecting.traps.rgb24.ref.png deleted file mode 100644 index f0068e6..0000000 Binary files a/test/reference/self-intersecting.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/set-source.base.argb32.ref.png b/test/reference/set-source.base.argb32.ref.png deleted file mode 100644 index 222b372..0000000 Binary files a/test/reference/set-source.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/set-source.base.rgb24.ref.png b/test/reference/set-source.base.rgb24.ref.png deleted file mode 100644 index 5e13c82..0000000 Binary files a/test/reference/set-source.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/set-source.ref.png b/test/reference/set-source.ref.png deleted file mode 100644 index 19793e0..0000000 Binary files a/test/reference/set-source.ref.png and /dev/null differ diff --git a/test/reference/shape-general-convex.base.argb32.ref.png b/test/reference/shape-general-convex.base.argb32.ref.png deleted file mode 100644 index fc2d3f0..0000000 Binary files a/test/reference/shape-general-convex.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/shape-general-convex.base.rgb24.ref.png b/test/reference/shape-general-convex.base.rgb24.ref.png deleted file mode 100644 index fc2d3f0..0000000 Binary files a/test/reference/shape-general-convex.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/shape-general-convex.ps.ref.png b/test/reference/shape-general-convex.ps.ref.png deleted file mode 100644 index 6cdd615..0000000 Binary files a/test/reference/shape-general-convex.ps.ref.png and /dev/null differ diff --git a/test/reference/shape-general-convex.ref.png b/test/reference/shape-general-convex.ref.png deleted file mode 100644 index 2f648d5..0000000 Binary files a/test/reference/shape-general-convex.ref.png and /dev/null differ diff --git a/test/reference/shape-general-convex.traps.argb32.ref.png b/test/reference/shape-general-convex.traps.argb32.ref.png deleted file mode 100644 index fc2d3f0..0000000 Binary files a/test/reference/shape-general-convex.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/shape-general-convex.traps.rgb24.ref.png b/test/reference/shape-general-convex.traps.rgb24.ref.png deleted file mode 100644 index fc2d3f0..0000000 Binary files a/test/reference/shape-general-convex.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/shape-sierpinski.base.argb32.ref.png b/test/reference/shape-sierpinski.base.argb32.ref.png deleted file mode 100644 index 69755d2..0000000 Binary files a/test/reference/shape-sierpinski.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/shape-sierpinski.base.rgb24.ref.png b/test/reference/shape-sierpinski.base.rgb24.ref.png deleted file mode 100644 index 69755d2..0000000 Binary files a/test/reference/shape-sierpinski.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/shape-sierpinski.pdf.argb32.ref.png b/test/reference/shape-sierpinski.pdf.argb32.ref.png deleted file mode 100644 index 4e70fbd..0000000 Binary files a/test/reference/shape-sierpinski.pdf.argb32.ref.png and /dev/null differ diff --git a/test/reference/shape-sierpinski.pdf.rgb24.ref.png b/test/reference/shape-sierpinski.pdf.rgb24.ref.png deleted file mode 100644 index 4e70fbd..0000000 Binary files a/test/reference/shape-sierpinski.pdf.rgb24.ref.png and /dev/null differ diff --git a/test/reference/shape-sierpinski.ps.ref.png b/test/reference/shape-sierpinski.ps.ref.png deleted file mode 100644 index 700c9f1..0000000 Binary files a/test/reference/shape-sierpinski.ps.ref.png and /dev/null differ diff --git a/test/reference/shape-sierpinski.ps3.argb32.ref.png b/test/reference/shape-sierpinski.ps3.argb32.ref.png deleted file mode 100644 index 700c9f1..0000000 Binary files a/test/reference/shape-sierpinski.ps3.argb32.ref.png and /dev/null differ diff --git a/test/reference/shape-sierpinski.ps3.rgb24.ref.png b/test/reference/shape-sierpinski.ps3.rgb24.ref.png deleted file mode 100644 index 700c9f1..0000000 Binary files a/test/reference/shape-sierpinski.ps3.rgb24.ref.png and /dev/null differ diff --git a/test/reference/shape-sierpinski.ref.png b/test/reference/shape-sierpinski.ref.png deleted file mode 100644 index 5d98367..0000000 Binary files a/test/reference/shape-sierpinski.ref.png and /dev/null differ diff --git a/test/reference/shape-sierpinski.traps.argb32.ref.png b/test/reference/shape-sierpinski.traps.argb32.ref.png deleted file mode 100644 index 69755d2..0000000 Binary files a/test/reference/shape-sierpinski.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/shape-sierpinski.traps.rgb24.ref.png b/test/reference/shape-sierpinski.traps.rgb24.ref.png deleted file mode 100644 index 69755d2..0000000 Binary files a/test/reference/shape-sierpinski.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/show-glyphs-advance.base.argb32.ref.png b/test/reference/show-glyphs-advance.base.argb32.ref.png deleted file mode 100644 index e65ad05..0000000 Binary files a/test/reference/show-glyphs-advance.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/show-glyphs-advance.base.rgb24.ref.png b/test/reference/show-glyphs-advance.base.rgb24.ref.png deleted file mode 100644 index e65ad05..0000000 Binary files a/test/reference/show-glyphs-advance.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/show-glyphs-advance.image16.ref.png b/test/reference/show-glyphs-advance.image16.ref.png deleted file mode 100644 index dd2f18d..0000000 Binary files a/test/reference/show-glyphs-advance.image16.ref.png and /dev/null differ diff --git a/test/reference/show-glyphs-advance.ps.ref.png b/test/reference/show-glyphs-advance.ps.ref.png deleted file mode 100644 index 96a80f9..0000000 Binary files a/test/reference/show-glyphs-advance.ps.ref.png and /dev/null differ diff --git a/test/reference/show-glyphs-advance.quartz.ref.png b/test/reference/show-glyphs-advance.quartz.ref.png deleted file mode 100644 index 4750308..0000000 Binary files a/test/reference/show-glyphs-advance.quartz.ref.png and /dev/null differ diff --git a/test/reference/show-glyphs-advance.ref.png b/test/reference/show-glyphs-advance.ref.png deleted file mode 100644 index e65ad05..0000000 Binary files a/test/reference/show-glyphs-advance.ref.png and /dev/null differ diff --git a/test/reference/show-glyphs-advance.svg.ref.png b/test/reference/show-glyphs-advance.svg.ref.png deleted file mode 100644 index 914d4d6..0000000 Binary files a/test/reference/show-glyphs-advance.svg.ref.png and /dev/null differ diff --git a/test/reference/show-glyphs-advance.traps.ref.png b/test/reference/show-glyphs-advance.traps.ref.png deleted file mode 100644 index e65ad05..0000000 Binary files a/test/reference/show-glyphs-advance.traps.ref.png and /dev/null differ diff --git a/test/reference/show-glyphs-many.base.argb32.ref.png b/test/reference/show-glyphs-many.base.argb32.ref.png deleted file mode 100644 index b638015..0000000 Binary files a/test/reference/show-glyphs-many.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/show-glyphs-many.base.rgb24.ref.png b/test/reference/show-glyphs-many.base.rgb24.ref.png deleted file mode 100644 index b638015..0000000 Binary files a/test/reference/show-glyphs-many.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/show-glyphs-many.ref.png b/test/reference/show-glyphs-many.ref.png deleted file mode 100644 index b61c5f7..0000000 Binary files a/test/reference/show-glyphs-many.ref.png and /dev/null differ diff --git a/test/reference/show-text-current-point.base.argb32.ref.png b/test/reference/show-text-current-point.base.argb32.ref.png deleted file mode 100644 index d60d4ac..0000000 Binary files a/test/reference/show-text-current-point.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/show-text-current-point.base.rgb24.ref.png b/test/reference/show-text-current-point.base.rgb24.ref.png deleted file mode 100644 index d60d4ac..0000000 Binary files a/test/reference/show-text-current-point.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/show-text-current-point.image16.ref.png b/test/reference/show-text-current-point.image16.ref.png deleted file mode 100644 index b2b933f..0000000 Binary files a/test/reference/show-text-current-point.image16.ref.png and /dev/null differ diff --git a/test/reference/show-text-current-point.ps2.ref.png b/test/reference/show-text-current-point.ps2.ref.png deleted file mode 100644 index b42c48e..0000000 Binary files a/test/reference/show-text-current-point.ps2.ref.png and /dev/null differ diff --git a/test/reference/show-text-current-point.ps3.ref.png b/test/reference/show-text-current-point.ps3.ref.png deleted file mode 100644 index b42c48e..0000000 Binary files a/test/reference/show-text-current-point.ps3.ref.png and /dev/null differ diff --git a/test/reference/show-text-current-point.quartz.ref.png b/test/reference/show-text-current-point.quartz.ref.png deleted file mode 100644 index a531381..0000000 Binary files a/test/reference/show-text-current-point.quartz.ref.png and /dev/null differ diff --git a/test/reference/show-text-current-point.ref.png b/test/reference/show-text-current-point.ref.png deleted file mode 100644 index d60d4ac..0000000 Binary files a/test/reference/show-text-current-point.ref.png and /dev/null differ diff --git a/test/reference/show-text-current-point.traps.ref.png b/test/reference/show-text-current-point.traps.ref.png deleted file mode 100644 index d60d4ac..0000000 Binary files a/test/reference/show-text-current-point.traps.ref.png and /dev/null differ diff --git a/test/reference/simple-edge.ref.png b/test/reference/simple-edge.ref.png deleted file mode 100644 index 4757b0a..0000000 Binary files a/test/reference/simple-edge.ref.png and /dev/null differ diff --git a/test/reference/simple-edge.xfail.png b/test/reference/simple-edge.xfail.png deleted file mode 100644 index 2daad97..0000000 Binary files a/test/reference/simple-edge.xfail.png and /dev/null differ diff --git a/test/reference/skew-extreme.base.argb32.ref.png b/test/reference/skew-extreme.base.argb32.ref.png deleted file mode 100644 index 5e00606..0000000 Binary files a/test/reference/skew-extreme.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/skew-extreme.base.rgb24.ref.png b/test/reference/skew-extreme.base.rgb24.ref.png deleted file mode 100644 index 5e00606..0000000 Binary files a/test/reference/skew-extreme.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/skew-extreme.ps2.ref.png b/test/reference/skew-extreme.ps2.ref.png deleted file mode 100644 index 69f1d37..0000000 Binary files a/test/reference/skew-extreme.ps2.ref.png and /dev/null differ diff --git a/test/reference/skew-extreme.ps3.ref.png b/test/reference/skew-extreme.ps3.ref.png deleted file mode 100644 index 69f1d37..0000000 Binary files a/test/reference/skew-extreme.ps3.ref.png and /dev/null differ diff --git a/test/reference/skew-extreme.ref.png b/test/reference/skew-extreme.ref.png deleted file mode 100644 index 69e026d..0000000 Binary files a/test/reference/skew-extreme.ref.png and /dev/null differ diff --git a/test/reference/skew-extreme.traps.argb32.ref.png b/test/reference/skew-extreme.traps.argb32.ref.png deleted file mode 100644 index 5e00606..0000000 Binary files a/test/reference/skew-extreme.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/skew-extreme.traps.rgb24.ref.png b/test/reference/skew-extreme.traps.rgb24.ref.png deleted file mode 100644 index 5e00606..0000000 Binary files a/test/reference/skew-extreme.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/smask-fill.base.argb32.ref.png b/test/reference/smask-fill.base.argb32.ref.png deleted file mode 100644 index 30bc98e..0000000 Binary files a/test/reference/smask-fill.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/smask-fill.base.rgb24.ref.png b/test/reference/smask-fill.base.rgb24.ref.png deleted file mode 100644 index 30bc98e..0000000 Binary files a/test/reference/smask-fill.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/smask-fill.image16.ref.png b/test/reference/smask-fill.image16.ref.png deleted file mode 100644 index 25a6d5b..0000000 Binary files a/test/reference/smask-fill.image16.ref.png and /dev/null differ diff --git a/test/reference/smask-fill.pdf.ref.png b/test/reference/smask-fill.pdf.ref.png deleted file mode 100644 index cfd40b0..0000000 Binary files a/test/reference/smask-fill.pdf.ref.png and /dev/null differ diff --git a/test/reference/smask-fill.quartz.ref.png b/test/reference/smask-fill.quartz.ref.png deleted file mode 100644 index ae05476..0000000 Binary files a/test/reference/smask-fill.quartz.ref.png and /dev/null differ diff --git a/test/reference/smask-fill.ref.png b/test/reference/smask-fill.ref.png deleted file mode 100644 index c7aff5a..0000000 Binary files a/test/reference/smask-fill.ref.png and /dev/null differ diff --git a/test/reference/smask-fill.svg.ref.png b/test/reference/smask-fill.svg.ref.png deleted file mode 100644 index 824e8cf..0000000 Binary files a/test/reference/smask-fill.svg.ref.png and /dev/null differ diff --git a/test/reference/smask-fill.traps.argb32.ref.png b/test/reference/smask-fill.traps.argb32.ref.png deleted file mode 100644 index 30bc98e..0000000 Binary files a/test/reference/smask-fill.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/smask-fill.traps.rgb24.ref.png b/test/reference/smask-fill.traps.rgb24.ref.png deleted file mode 100644 index 30bc98e..0000000 Binary files a/test/reference/smask-fill.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/smask-image-mask.base.argb32.ref.png b/test/reference/smask-image-mask.base.argb32.ref.png deleted file mode 100644 index 12063bd..0000000 Binary files a/test/reference/smask-image-mask.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/smask-image-mask.base.rgb24.ref.png b/test/reference/smask-image-mask.base.rgb24.ref.png deleted file mode 100644 index 12063bd..0000000 Binary files a/test/reference/smask-image-mask.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/smask-image-mask.pdf.ref.png b/test/reference/smask-image-mask.pdf.ref.png deleted file mode 100644 index 7ac43e4..0000000 Binary files a/test/reference/smask-image-mask.pdf.ref.png and /dev/null differ diff --git a/test/reference/smask-image-mask.ref.png b/test/reference/smask-image-mask.ref.png deleted file mode 100644 index 12063bd..0000000 Binary files a/test/reference/smask-image-mask.ref.png and /dev/null differ diff --git a/test/reference/smask-mask.base.argb32.ref.png b/test/reference/smask-mask.base.argb32.ref.png deleted file mode 100644 index 80329c2..0000000 Binary files a/test/reference/smask-mask.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/smask-mask.base.rgb24.ref.png b/test/reference/smask-mask.base.rgb24.ref.png deleted file mode 100644 index 80329c2..0000000 Binary files a/test/reference/smask-mask.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/smask-mask.image16.ref.png b/test/reference/smask-mask.image16.ref.png deleted file mode 100644 index 5024521..0000000 Binary files a/test/reference/smask-mask.image16.ref.png and /dev/null differ diff --git a/test/reference/smask-mask.pdf.ref.png b/test/reference/smask-mask.pdf.ref.png deleted file mode 100644 index 59c9740..0000000 Binary files a/test/reference/smask-mask.pdf.ref.png and /dev/null differ diff --git a/test/reference/smask-mask.quartz.ref.png b/test/reference/smask-mask.quartz.ref.png deleted file mode 100644 index 98ba299..0000000 Binary files a/test/reference/smask-mask.quartz.ref.png and /dev/null differ diff --git a/test/reference/smask-mask.ref.png b/test/reference/smask-mask.ref.png deleted file mode 100644 index 80329c2..0000000 Binary files a/test/reference/smask-mask.ref.png and /dev/null differ diff --git a/test/reference/smask-mask.svg.ref.png b/test/reference/smask-mask.svg.ref.png deleted file mode 100644 index ae46036..0000000 Binary files a/test/reference/smask-mask.svg.ref.png and /dev/null differ diff --git a/test/reference/smask-paint.base.argb32.ref.png b/test/reference/smask-paint.base.argb32.ref.png deleted file mode 100644 index 95af29a..0000000 Binary files a/test/reference/smask-paint.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/smask-paint.base.rgb24.ref.png b/test/reference/smask-paint.base.rgb24.ref.png deleted file mode 100644 index 95af29a..0000000 Binary files a/test/reference/smask-paint.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/smask-paint.image16.ref.png b/test/reference/smask-paint.image16.ref.png deleted file mode 100644 index dc371df..0000000 Binary files a/test/reference/smask-paint.image16.ref.png and /dev/null differ diff --git a/test/reference/smask-paint.pdf.ref.png b/test/reference/smask-paint.pdf.ref.png deleted file mode 100644 index 623a92d..0000000 Binary files a/test/reference/smask-paint.pdf.ref.png and /dev/null differ diff --git a/test/reference/smask-paint.quartz.ref.png b/test/reference/smask-paint.quartz.ref.png deleted file mode 100644 index 4ee25fd..0000000 Binary files a/test/reference/smask-paint.quartz.ref.png and /dev/null differ diff --git a/test/reference/smask-paint.ref.png b/test/reference/smask-paint.ref.png deleted file mode 100644 index 95af29a..0000000 Binary files a/test/reference/smask-paint.ref.png and /dev/null differ diff --git a/test/reference/smask-paint.svg.ref.png b/test/reference/smask-paint.svg.ref.png deleted file mode 100644 index 93a423f..0000000 Binary files a/test/reference/smask-paint.svg.ref.png and /dev/null differ diff --git a/test/reference/smask-stroke.base.argb32.ref.png b/test/reference/smask-stroke.base.argb32.ref.png deleted file mode 100644 index c6a557d..0000000 Binary files a/test/reference/smask-stroke.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/smask-stroke.base.rgb24.ref.png b/test/reference/smask-stroke.base.rgb24.ref.png deleted file mode 100644 index c6a557d..0000000 Binary files a/test/reference/smask-stroke.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/smask-stroke.image16.ref.png b/test/reference/smask-stroke.image16.ref.png deleted file mode 100644 index ea2138a..0000000 Binary files a/test/reference/smask-stroke.image16.ref.png and /dev/null differ diff --git a/test/reference/smask-stroke.pdf.xfail.png b/test/reference/smask-stroke.pdf.xfail.png deleted file mode 100644 index 9a1a771..0000000 Binary files a/test/reference/smask-stroke.pdf.xfail.png and /dev/null differ diff --git a/test/reference/smask-stroke.quartz.ref.png b/test/reference/smask-stroke.quartz.ref.png deleted file mode 100644 index f6f0d1b..0000000 Binary files a/test/reference/smask-stroke.quartz.ref.png and /dev/null differ diff --git a/test/reference/smask-stroke.ref.png b/test/reference/smask-stroke.ref.png deleted file mode 100644 index 5d8c799..0000000 Binary files a/test/reference/smask-stroke.ref.png and /dev/null differ diff --git a/test/reference/smask-stroke.traps.argb32.ref.png b/test/reference/smask-stroke.traps.argb32.ref.png deleted file mode 100644 index c6a557d..0000000 Binary files a/test/reference/smask-stroke.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/smask-stroke.traps.rgb24.ref.png b/test/reference/smask-stroke.traps.rgb24.ref.png deleted file mode 100644 index c6a557d..0000000 Binary files a/test/reference/smask-stroke.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/smask-text.base.argb32.ref.png b/test/reference/smask-text.base.argb32.ref.png deleted file mode 100644 index 344ac20..0000000 Binary files a/test/reference/smask-text.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/smask-text.base.rgb24.ref.png b/test/reference/smask-text.base.rgb24.ref.png deleted file mode 100644 index 344ac20..0000000 Binary files a/test/reference/smask-text.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/smask-text.image16.ref.png b/test/reference/smask-text.image16.ref.png deleted file mode 100644 index 098043d..0000000 Binary files a/test/reference/smask-text.image16.ref.png and /dev/null differ diff --git a/test/reference/smask-text.mask.argb32.ref.png b/test/reference/smask-text.mask.argb32.ref.png deleted file mode 100644 index 344ac20..0000000 Binary files a/test/reference/smask-text.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/smask-text.mask.rgb24.ref.png b/test/reference/smask-text.mask.rgb24.ref.png deleted file mode 100644 index 344ac20..0000000 Binary files a/test/reference/smask-text.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/smask-text.pdf.ref.png b/test/reference/smask-text.pdf.ref.png deleted file mode 100644 index fa49056..0000000 Binary files a/test/reference/smask-text.pdf.ref.png and /dev/null differ diff --git a/test/reference/smask-text.ps2.ref.png b/test/reference/smask-text.ps2.ref.png deleted file mode 100644 index ae61325..0000000 Binary files a/test/reference/smask-text.ps2.ref.png and /dev/null differ diff --git a/test/reference/smask-text.ps3.ref.png b/test/reference/smask-text.ps3.ref.png deleted file mode 100644 index ae61325..0000000 Binary files a/test/reference/smask-text.ps3.ref.png and /dev/null differ diff --git a/test/reference/smask-text.quartz.ref.png b/test/reference/smask-text.quartz.ref.png deleted file mode 100644 index 096dc98..0000000 Binary files a/test/reference/smask-text.quartz.ref.png and /dev/null differ diff --git a/test/reference/smask-text.ref.png b/test/reference/smask-text.ref.png deleted file mode 100644 index 66ef289..0000000 Binary files a/test/reference/smask-text.ref.png and /dev/null differ diff --git a/test/reference/smask-text.script.ref.png b/test/reference/smask-text.script.ref.png deleted file mode 100644 index 62b2de5..0000000 Binary files a/test/reference/smask-text.script.ref.png and /dev/null differ diff --git a/test/reference/smask-text.svg.ref.png b/test/reference/smask-text.svg.ref.png deleted file mode 100644 index 65f225e..0000000 Binary files a/test/reference/smask-text.svg.ref.png and /dev/null differ diff --git a/test/reference/smask-text.traps.ref.png b/test/reference/smask-text.traps.ref.png deleted file mode 100644 index 66ef289..0000000 Binary files a/test/reference/smask-text.traps.ref.png and /dev/null differ diff --git a/test/reference/smask-text.xlib-fallback.ref.png b/test/reference/smask-text.xlib-fallback.ref.png deleted file mode 100644 index bb393b5..0000000 Binary files a/test/reference/smask-text.xlib-fallback.ref.png and /dev/null differ diff --git a/test/reference/smask.base.argb32.ref.png b/test/reference/smask.base.argb32.ref.png deleted file mode 100644 index 357e8e7..0000000 Binary files a/test/reference/smask.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/smask.base.rgb24.ref.png b/test/reference/smask.base.rgb24.ref.png deleted file mode 100644 index 357e8e7..0000000 Binary files a/test/reference/smask.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/smask.image16.ref.png b/test/reference/smask.image16.ref.png deleted file mode 100644 index d817c80..0000000 Binary files a/test/reference/smask.image16.ref.png and /dev/null differ diff --git a/test/reference/smask.mask.argb32.ref.png b/test/reference/smask.mask.argb32.ref.png deleted file mode 100644 index dab308d..0000000 Binary files a/test/reference/smask.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/smask.mask.rgb24.ref.png b/test/reference/smask.mask.rgb24.ref.png deleted file mode 100644 index dab308d..0000000 Binary files a/test/reference/smask.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/smask.pdf.xfail.png b/test/reference/smask.pdf.xfail.png deleted file mode 100644 index f8b559c..0000000 Binary files a/test/reference/smask.pdf.xfail.png and /dev/null differ diff --git a/test/reference/smask.ps.ref.png b/test/reference/smask.ps.ref.png deleted file mode 100644 index 31ccc17..0000000 Binary files a/test/reference/smask.ps.ref.png and /dev/null differ diff --git a/test/reference/smask.quartz.ref.png b/test/reference/smask.quartz.ref.png deleted file mode 100644 index f9ab00f..0000000 Binary files a/test/reference/smask.quartz.ref.png and /dev/null differ diff --git a/test/reference/smask.ref.png b/test/reference/smask.ref.png deleted file mode 100644 index d49e8f5..0000000 Binary files a/test/reference/smask.ref.png and /dev/null differ diff --git a/test/reference/smask.script.ref.png b/test/reference/smask.script.ref.png deleted file mode 100644 index 3b672d6..0000000 Binary files a/test/reference/smask.script.ref.png and /dev/null differ diff --git a/test/reference/smask.svg.ref.png b/test/reference/smask.svg.ref.png deleted file mode 100644 index b9c0308..0000000 Binary files a/test/reference/smask.svg.ref.png and /dev/null differ diff --git a/test/reference/smask.traps.ref.png b/test/reference/smask.traps.ref.png deleted file mode 100644 index 357e8e7..0000000 Binary files a/test/reference/smask.traps.ref.png and /dev/null differ diff --git a/test/reference/smask.xlib-fallback.ref.png b/test/reference/smask.xlib-fallback.ref.png deleted file mode 100644 index b5919de..0000000 Binary files a/test/reference/smask.xlib-fallback.ref.png and /dev/null differ diff --git a/test/reference/solid-pattern-cache-stress.base.argb32.ref.png b/test/reference/solid-pattern-cache-stress.base.argb32.ref.png deleted file mode 100644 index 08a2ce1..0000000 Binary files a/test/reference/solid-pattern-cache-stress.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/solid-pattern-cache-stress.base.rgb24.ref.png b/test/reference/solid-pattern-cache-stress.base.rgb24.ref.png deleted file mode 100644 index 08a2ce1..0000000 Binary files a/test/reference/solid-pattern-cache-stress.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/solid-pattern-cache-stress.ref.png b/test/reference/solid-pattern-cache-stress.ref.png deleted file mode 100644 index e0e8498..0000000 Binary files a/test/reference/solid-pattern-cache-stress.ref.png and /dev/null differ diff --git a/test/reference/source-clip-scale.base.argb32.ref.png b/test/reference/source-clip-scale.base.argb32.ref.png deleted file mode 100644 index 4b63ad9..0000000 Binary files a/test/reference/source-clip-scale.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/source-clip-scale.base.rgb24.ref.png b/test/reference/source-clip-scale.base.rgb24.ref.png deleted file mode 100644 index 4b63ad9..0000000 Binary files a/test/reference/source-clip-scale.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/source-clip-scale.gl.ref.png b/test/reference/source-clip-scale.gl.ref.png deleted file mode 100644 index fcffbef..0000000 Binary files a/test/reference/source-clip-scale.gl.ref.png and /dev/null differ diff --git a/test/reference/source-clip-scale.pdf.ref.png b/test/reference/source-clip-scale.pdf.ref.png deleted file mode 100644 index 78c7710..0000000 Binary files a/test/reference/source-clip-scale.pdf.ref.png and /dev/null differ diff --git a/test/reference/source-clip-scale.ps2.argb32.ref.png b/test/reference/source-clip-scale.ps2.argb32.ref.png deleted file mode 100644 index be57d77..0000000 Binary files a/test/reference/source-clip-scale.ps2.argb32.ref.png and /dev/null differ diff --git a/test/reference/source-clip-scale.ps2.rgb24.ref.png b/test/reference/source-clip-scale.ps2.rgb24.ref.png deleted file mode 100644 index be57d77..0000000 Binary files a/test/reference/source-clip-scale.ps2.rgb24.ref.png and /dev/null differ diff --git a/test/reference/source-clip-scale.ps3.argb32.ref.png b/test/reference/source-clip-scale.ps3.argb32.ref.png deleted file mode 100644 index be57d77..0000000 Binary files a/test/reference/source-clip-scale.ps3.argb32.ref.png and /dev/null differ diff --git a/test/reference/source-clip-scale.ps3.rgb24.ref.png b/test/reference/source-clip-scale.ps3.rgb24.ref.png deleted file mode 100644 index be57d77..0000000 Binary files a/test/reference/source-clip-scale.ps3.rgb24.ref.png and /dev/null differ diff --git a/test/reference/source-clip-scale.quartz.ref.png b/test/reference/source-clip-scale.quartz.ref.png deleted file mode 100644 index 3665009..0000000 Binary files a/test/reference/source-clip-scale.quartz.ref.png and /dev/null differ diff --git a/test/reference/source-clip-scale.recording.ref.png b/test/reference/source-clip-scale.recording.ref.png deleted file mode 100644 index bbf7c9b..0000000 Binary files a/test/reference/source-clip-scale.recording.ref.png and /dev/null differ diff --git a/test/reference/source-clip-scale.ref.png b/test/reference/source-clip-scale.ref.png deleted file mode 100644 index 1519ff8..0000000 Binary files a/test/reference/source-clip-scale.ref.png and /dev/null differ diff --git a/test/reference/source-clip-scale.svg.ref.png b/test/reference/source-clip-scale.svg.ref.png deleted file mode 100644 index bbf7c9b..0000000 Binary files a/test/reference/source-clip-scale.svg.ref.png and /dev/null differ diff --git a/test/reference/source-clip.base.argb32.ref.png b/test/reference/source-clip.base.argb32.ref.png deleted file mode 100644 index 821bc6c..0000000 Binary files a/test/reference/source-clip.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/source-clip.base.rgb24.ref.png b/test/reference/source-clip.base.rgb24.ref.png deleted file mode 100644 index 821bc6c..0000000 Binary files a/test/reference/source-clip.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/source-clip.ref.png b/test/reference/source-clip.ref.png deleted file mode 100644 index 22454be..0000000 Binary files a/test/reference/source-clip.ref.png and /dev/null differ diff --git a/test/reference/source-surface-scale-paint.base.argb32.ref.png b/test/reference/source-surface-scale-paint.base.argb32.ref.png deleted file mode 100644 index 087ef75..0000000 Binary files a/test/reference/source-surface-scale-paint.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/source-surface-scale-paint.base.rgb24.ref.png b/test/reference/source-surface-scale-paint.base.rgb24.ref.png deleted file mode 100644 index 322af21..0000000 Binary files a/test/reference/source-surface-scale-paint.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/source-surface-scale-paint.ref.png b/test/reference/source-surface-scale-paint.ref.png deleted file mode 100644 index a81f93d..0000000 Binary files a/test/reference/source-surface-scale-paint.ref.png and /dev/null differ diff --git a/test/reference/spline-decomposition.base.argb32.ref.png b/test/reference/spline-decomposition.base.argb32.ref.png deleted file mode 100644 index babde7d..0000000 Binary files a/test/reference/spline-decomposition.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/spline-decomposition.base.rgb24.ref.png b/test/reference/spline-decomposition.base.rgb24.ref.png deleted file mode 100644 index babde7d..0000000 Binary files a/test/reference/spline-decomposition.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/spline-decomposition.image16.ref.png b/test/reference/spline-decomposition.image16.ref.png deleted file mode 100644 index 4084b00..0000000 Binary files a/test/reference/spline-decomposition.image16.ref.png and /dev/null differ diff --git a/test/reference/spline-decomposition.pdf.ref.png b/test/reference/spline-decomposition.pdf.ref.png deleted file mode 100644 index 5afa094..0000000 Binary files a/test/reference/spline-decomposition.pdf.ref.png and /dev/null differ diff --git a/test/reference/spline-decomposition.ps.ref.png b/test/reference/spline-decomposition.ps.ref.png deleted file mode 100644 index 51e2938..0000000 Binary files a/test/reference/spline-decomposition.ps.ref.png and /dev/null differ diff --git a/test/reference/spline-decomposition.quartz.xfail.png b/test/reference/spline-decomposition.quartz.xfail.png deleted file mode 100644 index 18d67fb..0000000 Binary files a/test/reference/spline-decomposition.quartz.xfail.png and /dev/null differ diff --git a/test/reference/spline-decomposition.ref.png b/test/reference/spline-decomposition.ref.png deleted file mode 100644 index 356a3a5..0000000 Binary files a/test/reference/spline-decomposition.ref.png and /dev/null differ diff --git a/test/reference/spline-decomposition.svg.ref.png b/test/reference/spline-decomposition.svg.ref.png deleted file mode 100644 index 5afa094..0000000 Binary files a/test/reference/spline-decomposition.svg.ref.png and /dev/null differ diff --git a/test/reference/spline-decomposition.traps.argb32.ref.png b/test/reference/spline-decomposition.traps.argb32.ref.png deleted file mode 100644 index babde7d..0000000 Binary files a/test/reference/spline-decomposition.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/spline-decomposition.traps.rgb24.ref.png b/test/reference/spline-decomposition.traps.rgb24.ref.png deleted file mode 100644 index babde7d..0000000 Binary files a/test/reference/spline-decomposition.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/stride-12-image.base.argb32.ref.png b/test/reference/stride-12-image.base.argb32.ref.png deleted file mode 100644 index 4428456..0000000 Binary files a/test/reference/stride-12-image.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/stride-12-image.base.rgb24.ref.png b/test/reference/stride-12-image.base.rgb24.ref.png deleted file mode 100644 index 4428456..0000000 Binary files a/test/reference/stride-12-image.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/stride-12-image.image16.ref.png b/test/reference/stride-12-image.image16.ref.png deleted file mode 100644 index 4b15914..0000000 Binary files a/test/reference/stride-12-image.image16.ref.png and /dev/null differ diff --git a/test/reference/stride-12-image.ps.ref.png b/test/reference/stride-12-image.ps.ref.png deleted file mode 100644 index 953c9a1..0000000 Binary files a/test/reference/stride-12-image.ps.ref.png and /dev/null differ diff --git a/test/reference/stride-12-image.ref.png b/test/reference/stride-12-image.ref.png deleted file mode 100644 index 4428456..0000000 Binary files a/test/reference/stride-12-image.ref.png and /dev/null differ diff --git a/test/reference/stride-12-xlib-fallback.rgb24.ref.png b/test/reference/stride-12-xlib-fallback.rgb24.ref.png deleted file mode 100644 index 4428456..0000000 Binary files a/test/reference/stride-12-xlib-fallback.rgb24.ref.png and /dev/null differ diff --git a/test/reference/stride-12-xlib-window.rgb24.ref.png b/test/reference/stride-12-xlib-window.rgb24.ref.png deleted file mode 100644 index 4428456..0000000 Binary files a/test/reference/stride-12-xlib-window.rgb24.ref.png and /dev/null differ diff --git a/test/reference/stride-12-xlib.ref.png b/test/reference/stride-12-xlib.ref.png deleted file mode 100644 index 4428456..0000000 Binary files a/test/reference/stride-12-xlib.ref.png and /dev/null differ diff --git a/test/reference/stroke-clipped.ref.png b/test/reference/stroke-clipped.ref.png deleted file mode 100644 index fbe5788..0000000 Binary files a/test/reference/stroke-clipped.ref.png and /dev/null differ diff --git a/test/reference/stroke-ctm-caps.base.argb32.ref.png b/test/reference/stroke-ctm-caps.base.argb32.ref.png deleted file mode 100644 index efe2faa..0000000 Binary files a/test/reference/stroke-ctm-caps.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/stroke-ctm-caps.base.rgb24.ref.png b/test/reference/stroke-ctm-caps.base.rgb24.ref.png deleted file mode 100644 index efe2faa..0000000 Binary files a/test/reference/stroke-ctm-caps.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/stroke-ctm-caps.image16.ref.png b/test/reference/stroke-ctm-caps.image16.ref.png deleted file mode 100644 index f5f551e..0000000 Binary files a/test/reference/stroke-ctm-caps.image16.ref.png and /dev/null differ diff --git a/test/reference/stroke-ctm-caps.mask.argb32.ref.png b/test/reference/stroke-ctm-caps.mask.argb32.ref.png deleted file mode 100644 index 3a77d3e..0000000 Binary files a/test/reference/stroke-ctm-caps.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/stroke-ctm-caps.mask.rgb24.ref.png b/test/reference/stroke-ctm-caps.mask.rgb24.ref.png deleted file mode 100644 index 3a77d3e..0000000 Binary files a/test/reference/stroke-ctm-caps.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/stroke-ctm-caps.ps2.ref.png b/test/reference/stroke-ctm-caps.ps2.ref.png deleted file mode 100644 index 63c1064..0000000 Binary files a/test/reference/stroke-ctm-caps.ps2.ref.png and /dev/null differ diff --git a/test/reference/stroke-ctm-caps.ps3.ref.png b/test/reference/stroke-ctm-caps.ps3.ref.png deleted file mode 100644 index 63c1064..0000000 Binary files a/test/reference/stroke-ctm-caps.ps3.ref.png and /dev/null differ diff --git a/test/reference/stroke-ctm-caps.quartz.ref.png b/test/reference/stroke-ctm-caps.quartz.ref.png deleted file mode 100644 index c9da2c9..0000000 Binary files a/test/reference/stroke-ctm-caps.quartz.ref.png and /dev/null differ diff --git a/test/reference/stroke-ctm-caps.ref.png b/test/reference/stroke-ctm-caps.ref.png deleted file mode 100644 index 33ff0fa..0000000 Binary files a/test/reference/stroke-ctm-caps.ref.png and /dev/null differ diff --git a/test/reference/stroke-ctm-caps.traps.argb32.ref.png b/test/reference/stroke-ctm-caps.traps.argb32.ref.png deleted file mode 100644 index efe2faa..0000000 Binary files a/test/reference/stroke-ctm-caps.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/stroke-ctm-caps.traps.rgb24.ref.png b/test/reference/stroke-ctm-caps.traps.rgb24.ref.png deleted file mode 100644 index efe2faa..0000000 Binary files a/test/reference/stroke-ctm-caps.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/stroke-image.base.argb32.ref.png b/test/reference/stroke-image.base.argb32.ref.png deleted file mode 100644 index 75737d5..0000000 Binary files a/test/reference/stroke-image.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/stroke-image.base.rgb24.ref.png b/test/reference/stroke-image.base.rgb24.ref.png deleted file mode 100644 index 75737d5..0000000 Binary files a/test/reference/stroke-image.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/stroke-image.image16.ref.png b/test/reference/stroke-image.image16.ref.png deleted file mode 100644 index cef40bd..0000000 Binary files a/test/reference/stroke-image.image16.ref.png and /dev/null differ diff --git a/test/reference/stroke-image.pdf.ref.png b/test/reference/stroke-image.pdf.ref.png deleted file mode 100644 index 790369c..0000000 Binary files a/test/reference/stroke-image.pdf.ref.png and /dev/null differ diff --git a/test/reference/stroke-image.ps.ref.png b/test/reference/stroke-image.ps.ref.png deleted file mode 100644 index 71889ac..0000000 Binary files a/test/reference/stroke-image.ps.ref.png and /dev/null differ diff --git a/test/reference/stroke-image.quartz.ref.png b/test/reference/stroke-image.quartz.ref.png deleted file mode 100644 index f9a60f2..0000000 Binary files a/test/reference/stroke-image.quartz.ref.png and /dev/null differ diff --git a/test/reference/stroke-image.ref.png b/test/reference/stroke-image.ref.png deleted file mode 100644 index f126afe..0000000 Binary files a/test/reference/stroke-image.ref.png and /dev/null differ diff --git a/test/reference/stroke-image.traps.argb32.ref.png b/test/reference/stroke-image.traps.argb32.ref.png deleted file mode 100644 index 75737d5..0000000 Binary files a/test/reference/stroke-image.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/stroke-image.traps.rgb24.ref.png b/test/reference/stroke-image.traps.rgb24.ref.png deleted file mode 100644 index 75737d5..0000000 Binary files a/test/reference/stroke-image.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/stroke-open-box.base.argb32.ref.png b/test/reference/stroke-open-box.base.argb32.ref.png deleted file mode 100644 index b5f5bd5..0000000 Binary files a/test/reference/stroke-open-box.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/stroke-open-box.base.rgb24.ref.png b/test/reference/stroke-open-box.base.rgb24.ref.png deleted file mode 100644 index b5f5bd5..0000000 Binary files a/test/reference/stroke-open-box.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/stroke-open-box.ref.png b/test/reference/stroke-open-box.ref.png deleted file mode 100644 index b5f5bd5..0000000 Binary files a/test/reference/stroke-open-box.ref.png and /dev/null differ diff --git a/test/reference/stroke-pattern.base.argb32.ref.png b/test/reference/stroke-pattern.base.argb32.ref.png deleted file mode 100644 index 67bb031..0000000 Binary files a/test/reference/stroke-pattern.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/stroke-pattern.base.rgb24.ref.png b/test/reference/stroke-pattern.base.rgb24.ref.png deleted file mode 100644 index 67bb031..0000000 Binary files a/test/reference/stroke-pattern.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/stroke-pattern.ref.png b/test/reference/stroke-pattern.ref.png deleted file mode 100644 index e299c58..0000000 Binary files a/test/reference/stroke-pattern.ref.png and /dev/null differ diff --git a/test/reference/stroke-pattern.traps.ref.png b/test/reference/stroke-pattern.traps.ref.png deleted file mode 100644 index 67bb031..0000000 Binary files a/test/reference/stroke-pattern.traps.ref.png and /dev/null differ diff --git a/test/reference/stroke-xlib-fallback.rgb24.ref.png b/test/reference/stroke-xlib-fallback.rgb24.ref.png deleted file mode 100644 index 75737d5..0000000 Binary files a/test/reference/stroke-xlib-fallback.rgb24.ref.png and /dev/null differ diff --git a/test/reference/stroke-xlib-window.rgb24.ref.png b/test/reference/stroke-xlib-window.rgb24.ref.png deleted file mode 100644 index 75737d5..0000000 Binary files a/test/reference/stroke-xlib-window.rgb24.ref.png and /dev/null differ diff --git a/test/reference/stroke-xlib.ref.png b/test/reference/stroke-xlib.ref.png deleted file mode 100644 index 75737d5..0000000 Binary files a/test/reference/stroke-xlib.ref.png and /dev/null differ diff --git a/test/reference/stroke.image.argb32.ref.png b/test/reference/stroke.image.argb32.ref.png deleted file mode 100644 index 0dc701f..0000000 Binary files a/test/reference/stroke.image.argb32.ref.png and /dev/null differ diff --git a/test/reference/stroke.image.rgb24.ref.png b/test/reference/stroke.image.rgb24.ref.png deleted file mode 100644 index 0dc701f..0000000 Binary files a/test/reference/stroke.image.rgb24.ref.png and /dev/null differ diff --git a/test/reference/subsurface-image-repeat.base.argb32.ref.png b/test/reference/subsurface-image-repeat.base.argb32.ref.png deleted file mode 100644 index 3dd6306..0000000 Binary files a/test/reference/subsurface-image-repeat.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/subsurface-image-repeat.base.rgb24.ref.png b/test/reference/subsurface-image-repeat.base.rgb24.ref.png deleted file mode 100644 index 3dd6306..0000000 Binary files a/test/reference/subsurface-image-repeat.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/subsurface-image-repeat.image16.ref.png b/test/reference/subsurface-image-repeat.image16.ref.png deleted file mode 100644 index a62f210..0000000 Binary files a/test/reference/subsurface-image-repeat.image16.ref.png and /dev/null differ diff --git a/test/reference/subsurface-image-repeat.ref.png b/test/reference/subsurface-image-repeat.ref.png deleted file mode 100644 index 3dd6306..0000000 Binary files a/test/reference/subsurface-image-repeat.ref.png and /dev/null differ diff --git a/test/reference/subsurface-modify-child.base.argb32.ref.png b/test/reference/subsurface-modify-child.base.argb32.ref.png deleted file mode 100644 index c37e22e..0000000 Binary files a/test/reference/subsurface-modify-child.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/subsurface-modify-child.base.rgb24.ref.png b/test/reference/subsurface-modify-child.base.rgb24.ref.png deleted file mode 100644 index c37e22e..0000000 Binary files a/test/reference/subsurface-modify-child.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/subsurface-modify-child.ref.png b/test/reference/subsurface-modify-child.ref.png deleted file mode 100644 index c37e22e..0000000 Binary files a/test/reference/subsurface-modify-child.ref.png and /dev/null differ diff --git a/test/reference/subsurface-modify-parent.base.argb32.ref.png b/test/reference/subsurface-modify-parent.base.argb32.ref.png deleted file mode 100644 index c37e22e..0000000 Binary files a/test/reference/subsurface-modify-parent.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/subsurface-modify-parent.base.rgb24.ref.png b/test/reference/subsurface-modify-parent.base.rgb24.ref.png deleted file mode 100644 index c37e22e..0000000 Binary files a/test/reference/subsurface-modify-parent.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/subsurface-modify-parent.ref.png b/test/reference/subsurface-modify-parent.ref.png deleted file mode 100644 index c37e22e..0000000 Binary files a/test/reference/subsurface-modify-parent.ref.png and /dev/null differ diff --git a/test/reference/subsurface-outside-target.base.argb32.ref.png b/test/reference/subsurface-outside-target.base.argb32.ref.png deleted file mode 100644 index 337cdd8..0000000 Binary files a/test/reference/subsurface-outside-target.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/subsurface-outside-target.base.rgb24.ref.png b/test/reference/subsurface-outside-target.base.rgb24.ref.png deleted file mode 100644 index 368936e..0000000 Binary files a/test/reference/subsurface-outside-target.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/subsurface-outside-target.ref.png b/test/reference/subsurface-outside-target.ref.png deleted file mode 100644 index 337cdd8..0000000 Binary files a/test/reference/subsurface-outside-target.ref.png and /dev/null differ diff --git a/test/reference/subsurface-pad.base.argb32.ref.png b/test/reference/subsurface-pad.base.argb32.ref.png deleted file mode 100644 index eeb9f8f..0000000 Binary files a/test/reference/subsurface-pad.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/subsurface-pad.base.rgb24.ref.png b/test/reference/subsurface-pad.base.rgb24.ref.png deleted file mode 100644 index eeb9f8f..0000000 Binary files a/test/reference/subsurface-pad.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/subsurface-pad.quartz.xfail.png b/test/reference/subsurface-pad.quartz.xfail.png deleted file mode 100644 index c37e22e..0000000 Binary files a/test/reference/subsurface-pad.quartz.xfail.png and /dev/null differ diff --git a/test/reference/subsurface-pad.ref.png b/test/reference/subsurface-pad.ref.png deleted file mode 100644 index eeb9f8f..0000000 Binary files a/test/reference/subsurface-pad.ref.png and /dev/null differ diff --git a/test/reference/subsurface-reflect.base.argb32.ref.png b/test/reference/subsurface-reflect.base.argb32.ref.png deleted file mode 100644 index 55643f4..0000000 Binary files a/test/reference/subsurface-reflect.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/subsurface-reflect.base.rgb24.ref.png b/test/reference/subsurface-reflect.base.rgb24.ref.png deleted file mode 100644 index 55643f4..0000000 Binary files a/test/reference/subsurface-reflect.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/subsurface-reflect.ref.png b/test/reference/subsurface-reflect.ref.png deleted file mode 100644 index 55643f4..0000000 Binary files a/test/reference/subsurface-reflect.ref.png and /dev/null differ diff --git a/test/reference/subsurface-repeat.base.argb32.ref.png b/test/reference/subsurface-repeat.base.argb32.ref.png deleted file mode 100644 index c37e22e..0000000 Binary files a/test/reference/subsurface-repeat.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/subsurface-repeat.base.rgb24.ref.png b/test/reference/subsurface-repeat.base.rgb24.ref.png deleted file mode 100644 index c37e22e..0000000 Binary files a/test/reference/subsurface-repeat.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/subsurface-repeat.ref.png b/test/reference/subsurface-repeat.ref.png deleted file mode 100644 index c37e22e..0000000 Binary files a/test/reference/subsurface-repeat.ref.png and /dev/null differ diff --git a/test/reference/subsurface-scale.base.argb32.ref.png b/test/reference/subsurface-scale.base.argb32.ref.png deleted file mode 100644 index 3b70c2f..0000000 Binary files a/test/reference/subsurface-scale.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/subsurface-scale.base.rgb24.ref.png b/test/reference/subsurface-scale.base.rgb24.ref.png deleted file mode 100644 index 3b70c2f..0000000 Binary files a/test/reference/subsurface-scale.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/subsurface-scale.ref.png b/test/reference/subsurface-scale.ref.png deleted file mode 100644 index 69bb0fb..0000000 Binary files a/test/reference/subsurface-scale.ref.png and /dev/null differ diff --git a/test/reference/subsurface-scale.traps.argb32.ref.png b/test/reference/subsurface-scale.traps.argb32.ref.png deleted file mode 100644 index 3b70c2f..0000000 Binary files a/test/reference/subsurface-scale.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/subsurface-scale.traps.rgb24.ref.png b/test/reference/subsurface-scale.traps.rgb24.ref.png deleted file mode 100644 index 3b70c2f..0000000 Binary files a/test/reference/subsurface-scale.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/subsurface-similar-repeat.base.argb32.ref.png b/test/reference/subsurface-similar-repeat.base.argb32.ref.png deleted file mode 100644 index c37e22e..0000000 Binary files a/test/reference/subsurface-similar-repeat.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/subsurface-similar-repeat.base.rgb24.ref.png b/test/reference/subsurface-similar-repeat.base.rgb24.ref.png deleted file mode 100644 index c37e22e..0000000 Binary files a/test/reference/subsurface-similar-repeat.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/subsurface-similar-repeat.ref.png b/test/reference/subsurface-similar-repeat.ref.png deleted file mode 100644 index c37e22e..0000000 Binary files a/test/reference/subsurface-similar-repeat.ref.png and /dev/null differ diff --git a/test/reference/subsurface.base.argb32.ref.png b/test/reference/subsurface.base.argb32.ref.png deleted file mode 100644 index d203559..0000000 Binary files a/test/reference/subsurface.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/subsurface.base.rgb24.ref.png b/test/reference/subsurface.base.rgb24.ref.png deleted file mode 100644 index d203559..0000000 Binary files a/test/reference/subsurface.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/subsurface.image16.ref.png b/test/reference/subsurface.image16.ref.png deleted file mode 100644 index ba9b7ed..0000000 Binary files a/test/reference/subsurface.image16.ref.png and /dev/null differ diff --git a/test/reference/subsurface.ps.ref.png b/test/reference/subsurface.ps.ref.png deleted file mode 100644 index 51e19fc..0000000 Binary files a/test/reference/subsurface.ps.ref.png and /dev/null differ diff --git a/test/reference/subsurface.ref.png b/test/reference/subsurface.ref.png deleted file mode 100644 index feeb5dc..0000000 Binary files a/test/reference/subsurface.ref.png and /dev/null differ diff --git a/test/reference/subsurface.traps.argb32.ref.png b/test/reference/subsurface.traps.argb32.ref.png deleted file mode 100644 index d203559..0000000 Binary files a/test/reference/subsurface.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/subsurface.traps.rgb24.ref.png b/test/reference/subsurface.traps.rgb24.ref.png deleted file mode 100644 index d203559..0000000 Binary files a/test/reference/subsurface.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/surface-pattern-big-scale-down.base.argb32.ref.png b/test/reference/surface-pattern-big-scale-down.base.argb32.ref.png deleted file mode 100644 index c050990..0000000 Binary files a/test/reference/surface-pattern-big-scale-down.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/surface-pattern-big-scale-down.base.rgb24.ref.png b/test/reference/surface-pattern-big-scale-down.base.rgb24.ref.png deleted file mode 100644 index c050990..0000000 Binary files a/test/reference/surface-pattern-big-scale-down.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/surface-pattern-big-scale-down.ps.ref.png b/test/reference/surface-pattern-big-scale-down.ps.ref.png deleted file mode 100644 index 13fb093..0000000 Binary files a/test/reference/surface-pattern-big-scale-down.ps.ref.png and /dev/null differ diff --git a/test/reference/surface-pattern-big-scale-down.quartz.ref.png b/test/reference/surface-pattern-big-scale-down.quartz.ref.png deleted file mode 100644 index 32deb2d..0000000 Binary files a/test/reference/surface-pattern-big-scale-down.quartz.ref.png and /dev/null differ diff --git a/test/reference/surface-pattern-big-scale-down.ref.png b/test/reference/surface-pattern-big-scale-down.ref.png deleted file mode 100644 index c050990..0000000 Binary files a/test/reference/surface-pattern-big-scale-down.ref.png and /dev/null differ diff --git a/test/reference/surface-pattern-operator.argb32.ref.png b/test/reference/surface-pattern-operator.argb32.ref.png deleted file mode 100644 index 6757371..0000000 Binary files a/test/reference/surface-pattern-operator.argb32.ref.png and /dev/null differ diff --git a/test/reference/surface-pattern-operator.base.argb32.ref.png b/test/reference/surface-pattern-operator.base.argb32.ref.png deleted file mode 100644 index c274fcf..0000000 Binary files a/test/reference/surface-pattern-operator.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/surface-pattern-operator.base.rgb24.ref.png b/test/reference/surface-pattern-operator.base.rgb24.ref.png deleted file mode 100644 index 23e540d..0000000 Binary files a/test/reference/surface-pattern-operator.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/surface-pattern-operator.image16.ref.png b/test/reference/surface-pattern-operator.image16.ref.png deleted file mode 100644 index 507e49c..0000000 Binary files a/test/reference/surface-pattern-operator.image16.ref.png and /dev/null differ diff --git a/test/reference/surface-pattern-operator.pdf.argb32.xfail.png b/test/reference/surface-pattern-operator.pdf.argb32.xfail.png deleted file mode 100644 index 371d084..0000000 Binary files a/test/reference/surface-pattern-operator.pdf.argb32.xfail.png and /dev/null differ diff --git a/test/reference/surface-pattern-operator.pdf.rgb24.xfail.png b/test/reference/surface-pattern-operator.pdf.rgb24.xfail.png deleted file mode 100644 index a2da18d..0000000 Binary files a/test/reference/surface-pattern-operator.pdf.rgb24.xfail.png and /dev/null differ diff --git a/test/reference/surface-pattern-operator.quartz.argb32.ref.png b/test/reference/surface-pattern-operator.quartz.argb32.ref.png deleted file mode 100644 index 5e934b2..0000000 Binary files a/test/reference/surface-pattern-operator.quartz.argb32.ref.png and /dev/null differ diff --git a/test/reference/surface-pattern-operator.quartz.rgb24.ref.png b/test/reference/surface-pattern-operator.quartz.rgb24.ref.png deleted file mode 100644 index 30408c1..0000000 Binary files a/test/reference/surface-pattern-operator.quartz.rgb24.ref.png and /dev/null differ diff --git a/test/reference/surface-pattern-operator.rgb24.ref.png b/test/reference/surface-pattern-operator.rgb24.ref.png deleted file mode 100644 index aee0959..0000000 Binary files a/test/reference/surface-pattern-operator.rgb24.ref.png and /dev/null differ diff --git a/test/reference/surface-pattern-operator.traps.argb32.ref.png b/test/reference/surface-pattern-operator.traps.argb32.ref.png deleted file mode 100644 index c274fcf..0000000 Binary files a/test/reference/surface-pattern-operator.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/surface-pattern-operator.traps.rgb24.ref.png b/test/reference/surface-pattern-operator.traps.rgb24.ref.png deleted file mode 100644 index 23e540d..0000000 Binary files a/test/reference/surface-pattern-operator.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/surface-pattern-scale-down-extend-none.base.argb32.ref.png b/test/reference/surface-pattern-scale-down-extend-none.base.argb32.ref.png deleted file mode 100644 index 9df14cc..0000000 Binary files a/test/reference/surface-pattern-scale-down-extend-none.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/surface-pattern-scale-down-extend-none.base.rgb24.ref.png b/test/reference/surface-pattern-scale-down-extend-none.base.rgb24.ref.png deleted file mode 100644 index 9df14cc..0000000 Binary files a/test/reference/surface-pattern-scale-down-extend-none.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/surface-pattern-scale-down-extend-none.quartz.ref.png b/test/reference/surface-pattern-scale-down-extend-none.quartz.ref.png deleted file mode 100644 index e126cbb..0000000 Binary files a/test/reference/surface-pattern-scale-down-extend-none.quartz.ref.png and /dev/null differ diff --git a/test/reference/surface-pattern-scale-down-extend-none.ref.png b/test/reference/surface-pattern-scale-down-extend-none.ref.png deleted file mode 100644 index 9df14cc..0000000 Binary files a/test/reference/surface-pattern-scale-down-extend-none.ref.png and /dev/null differ diff --git a/test/reference/surface-pattern-scale-down-extend-pad.base.argb32.ref.png b/test/reference/surface-pattern-scale-down-extend-pad.base.argb32.ref.png deleted file mode 100644 index 2ee9419..0000000 Binary files a/test/reference/surface-pattern-scale-down-extend-pad.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/surface-pattern-scale-down-extend-pad.base.rgb24.ref.png b/test/reference/surface-pattern-scale-down-extend-pad.base.rgb24.ref.png deleted file mode 100644 index 2ee9419..0000000 Binary files a/test/reference/surface-pattern-scale-down-extend-pad.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/surface-pattern-scale-down-extend-pad.quartz.xfail.png b/test/reference/surface-pattern-scale-down-extend-pad.quartz.xfail.png deleted file mode 100644 index 6b8f754..0000000 Binary files a/test/reference/surface-pattern-scale-down-extend-pad.quartz.xfail.png and /dev/null differ diff --git a/test/reference/surface-pattern-scale-down-extend-pad.ref.png b/test/reference/surface-pattern-scale-down-extend-pad.ref.png deleted file mode 100644 index 2ee9419..0000000 Binary files a/test/reference/surface-pattern-scale-down-extend-pad.ref.png and /dev/null differ diff --git a/test/reference/surface-pattern-scale-down-extend-reflect.base.argb32.ref.png b/test/reference/surface-pattern-scale-down-extend-reflect.base.argb32.ref.png deleted file mode 100644 index f2e93a7..0000000 Binary files a/test/reference/surface-pattern-scale-down-extend-reflect.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/surface-pattern-scale-down-extend-reflect.base.rgb24.ref.png b/test/reference/surface-pattern-scale-down-extend-reflect.base.rgb24.ref.png deleted file mode 100644 index f2e93a7..0000000 Binary files a/test/reference/surface-pattern-scale-down-extend-reflect.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/surface-pattern-scale-down-extend-reflect.quartz.ref.png b/test/reference/surface-pattern-scale-down-extend-reflect.quartz.ref.png deleted file mode 100644 index ef5e62e..0000000 Binary files a/test/reference/surface-pattern-scale-down-extend-reflect.quartz.ref.png and /dev/null differ diff --git a/test/reference/surface-pattern-scale-down-extend-reflect.ref.png b/test/reference/surface-pattern-scale-down-extend-reflect.ref.png deleted file mode 100644 index f2e93a7..0000000 Binary files a/test/reference/surface-pattern-scale-down-extend-reflect.ref.png and /dev/null differ diff --git a/test/reference/surface-pattern-scale-down-extend-repeat.base.argb32.ref.png b/test/reference/surface-pattern-scale-down-extend-repeat.base.argb32.ref.png deleted file mode 100644 index c5cff0f..0000000 Binary files a/test/reference/surface-pattern-scale-down-extend-repeat.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/surface-pattern-scale-down-extend-repeat.base.rgb24.ref.png b/test/reference/surface-pattern-scale-down-extend-repeat.base.rgb24.ref.png deleted file mode 100644 index c5cff0f..0000000 Binary files a/test/reference/surface-pattern-scale-down-extend-repeat.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/surface-pattern-scale-down-extend-repeat.quartz.ref.png b/test/reference/surface-pattern-scale-down-extend-repeat.quartz.ref.png deleted file mode 100644 index 6b8f754..0000000 Binary files a/test/reference/surface-pattern-scale-down-extend-repeat.quartz.ref.png and /dev/null differ diff --git a/test/reference/surface-pattern-scale-down-extend-repeat.ref.png b/test/reference/surface-pattern-scale-down-extend-repeat.ref.png deleted file mode 100644 index c5cff0f..0000000 Binary files a/test/reference/surface-pattern-scale-down-extend-repeat.ref.png and /dev/null differ diff --git a/test/reference/surface-pattern-scale-down.base.argb32.ref.png b/test/reference/surface-pattern-scale-down.base.argb32.ref.png deleted file mode 100644 index 8bb58a2..0000000 Binary files a/test/reference/surface-pattern-scale-down.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/surface-pattern-scale-down.base.rgb24.ref.png b/test/reference/surface-pattern-scale-down.base.rgb24.ref.png deleted file mode 100644 index 8bb58a2..0000000 Binary files a/test/reference/surface-pattern-scale-down.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/surface-pattern-scale-down.image16.ref.png b/test/reference/surface-pattern-scale-down.image16.ref.png deleted file mode 100644 index 8be8fb0..0000000 Binary files a/test/reference/surface-pattern-scale-down.image16.ref.png and /dev/null differ diff --git a/test/reference/surface-pattern-scale-down.pdf.ref.png b/test/reference/surface-pattern-scale-down.pdf.ref.png deleted file mode 100644 index 1e32a44..0000000 Binary files a/test/reference/surface-pattern-scale-down.pdf.ref.png and /dev/null differ diff --git a/test/reference/surface-pattern-scale-down.ps2.ref.png b/test/reference/surface-pattern-scale-down.ps2.ref.png deleted file mode 100644 index 5fb6395..0000000 Binary files a/test/reference/surface-pattern-scale-down.ps2.ref.png and /dev/null differ diff --git a/test/reference/surface-pattern-scale-down.ps3.ref.png b/test/reference/surface-pattern-scale-down.ps3.ref.png deleted file mode 100644 index 5fb6395..0000000 Binary files a/test/reference/surface-pattern-scale-down.ps3.ref.png and /dev/null differ diff --git a/test/reference/surface-pattern-scale-down.quartz.ref.png b/test/reference/surface-pattern-scale-down.quartz.ref.png deleted file mode 100644 index 5b3ace4..0000000 Binary files a/test/reference/surface-pattern-scale-down.quartz.ref.png and /dev/null differ diff --git a/test/reference/surface-pattern-scale-down.ref.png b/test/reference/surface-pattern-scale-down.ref.png deleted file mode 100644 index 8bb58a2..0000000 Binary files a/test/reference/surface-pattern-scale-down.ref.png and /dev/null differ diff --git a/test/reference/surface-pattern-scale-up.base.argb32.ref.png b/test/reference/surface-pattern-scale-up.base.argb32.ref.png deleted file mode 100644 index e8d84e2..0000000 Binary files a/test/reference/surface-pattern-scale-up.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/surface-pattern-scale-up.base.rgb24.ref.png b/test/reference/surface-pattern-scale-up.base.rgb24.ref.png deleted file mode 100644 index e8d84e2..0000000 Binary files a/test/reference/surface-pattern-scale-up.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/surface-pattern-scale-up.image16.ref.png b/test/reference/surface-pattern-scale-up.image16.ref.png deleted file mode 100644 index 5207bd3..0000000 Binary files a/test/reference/surface-pattern-scale-up.image16.ref.png and /dev/null differ diff --git a/test/reference/surface-pattern-scale-up.pdf.ref.png b/test/reference/surface-pattern-scale-up.pdf.ref.png deleted file mode 100644 index 593d058..0000000 Binary files a/test/reference/surface-pattern-scale-up.pdf.ref.png and /dev/null differ diff --git a/test/reference/surface-pattern-scale-up.ps2.ref.png b/test/reference/surface-pattern-scale-up.ps2.ref.png deleted file mode 100644 index f2eac7a..0000000 Binary files a/test/reference/surface-pattern-scale-up.ps2.ref.png and /dev/null differ diff --git a/test/reference/surface-pattern-scale-up.ps3.ref.png b/test/reference/surface-pattern-scale-up.ps3.ref.png deleted file mode 100644 index f2eac7a..0000000 Binary files a/test/reference/surface-pattern-scale-up.ps3.ref.png and /dev/null differ diff --git a/test/reference/surface-pattern-scale-up.quartz.xfail.png b/test/reference/surface-pattern-scale-up.quartz.xfail.png deleted file mode 100644 index ed52ee8..0000000 Binary files a/test/reference/surface-pattern-scale-up.quartz.xfail.png and /dev/null differ diff --git a/test/reference/surface-pattern-scale-up.ref.png b/test/reference/surface-pattern-scale-up.ref.png deleted file mode 100644 index e8d84e2..0000000 Binary files a/test/reference/surface-pattern-scale-up.ref.png and /dev/null differ diff --git a/test/reference/surface-pattern.base.argb32.ref.png b/test/reference/surface-pattern.base.argb32.ref.png deleted file mode 100644 index 079ebfb..0000000 Binary files a/test/reference/surface-pattern.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/surface-pattern.base.rgb24.ref.png b/test/reference/surface-pattern.base.rgb24.ref.png deleted file mode 100644 index 079ebfb..0000000 Binary files a/test/reference/surface-pattern.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/surface-pattern.image16.ref.png b/test/reference/surface-pattern.image16.ref.png deleted file mode 100644 index 9090097..0000000 Binary files a/test/reference/surface-pattern.image16.ref.png and /dev/null differ diff --git a/test/reference/surface-pattern.pdf.xfail.png b/test/reference/surface-pattern.pdf.xfail.png deleted file mode 100644 index fadc2c2..0000000 Binary files a/test/reference/surface-pattern.pdf.xfail.png and /dev/null differ diff --git a/test/reference/surface-pattern.ps.xfail.png b/test/reference/surface-pattern.ps.xfail.png deleted file mode 100644 index 02fbde8..0000000 Binary files a/test/reference/surface-pattern.ps.xfail.png and /dev/null differ diff --git a/test/reference/surface-pattern.quartz.xfail.png b/test/reference/surface-pattern.quartz.xfail.png deleted file mode 100644 index 4ac47de..0000000 Binary files a/test/reference/surface-pattern.quartz.xfail.png and /dev/null differ diff --git a/test/reference/surface-pattern.ref.png b/test/reference/surface-pattern.ref.png deleted file mode 100644 index 079ebfb..0000000 Binary files a/test/reference/surface-pattern.ref.png and /dev/null differ diff --git a/test/reference/surface-pattern.svg.xfail.png b/test/reference/surface-pattern.svg.xfail.png deleted file mode 100644 index cdbcf47..0000000 Binary files a/test/reference/surface-pattern.svg.xfail.png and /dev/null differ diff --git a/test/reference/svg-surface-source.base.argb32.ref.png b/test/reference/svg-surface-source.base.argb32.ref.png deleted file mode 100644 index 0182972..0000000 Binary files a/test/reference/svg-surface-source.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/svg-surface-source.base.rgb24.ref.png b/test/reference/svg-surface-source.base.rgb24.ref.png deleted file mode 100644 index 0d68a82..0000000 Binary files a/test/reference/svg-surface-source.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/svg-surface-source.image16.ref.png b/test/reference/svg-surface-source.image16.ref.png deleted file mode 100644 index 2a7460e..0000000 Binary files a/test/reference/svg-surface-source.image16.ref.png and /dev/null differ diff --git a/test/reference/svg-surface-source.ref.png b/test/reference/svg-surface-source.ref.png deleted file mode 100644 index 0182972..0000000 Binary files a/test/reference/svg-surface-source.ref.png and /dev/null differ diff --git a/test/reference/svg-surface-source.svg12.argb32.xfail.png b/test/reference/svg-surface-source.svg12.argb32.xfail.png deleted file mode 100644 index 6ebcaf9..0000000 Binary files a/test/reference/svg-surface-source.svg12.argb32.xfail.png and /dev/null differ diff --git a/test/reference/svg-surface-source.svg12.rgb24.xfail.png b/test/reference/svg-surface-source.svg12.rgb24.xfail.png deleted file mode 100644 index 6ebcaf9..0000000 Binary files a/test/reference/svg-surface-source.svg12.rgb24.xfail.png and /dev/null differ diff --git a/test/reference/text-antialias-gray.base.argb32.ref.png b/test/reference/text-antialias-gray.base.argb32.ref.png deleted file mode 100644 index 06b805e..0000000 Binary files a/test/reference/text-antialias-gray.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/text-antialias-gray.base.rgb24.ref.png b/test/reference/text-antialias-gray.base.rgb24.ref.png deleted file mode 100644 index 06b805e..0000000 Binary files a/test/reference/text-antialias-gray.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/text-antialias-gray.image16.ref.png b/test/reference/text-antialias-gray.image16.ref.png deleted file mode 100644 index c86dbae..0000000 Binary files a/test/reference/text-antialias-gray.image16.ref.png and /dev/null differ diff --git a/test/reference/text-antialias-gray.quartz.ref.png b/test/reference/text-antialias-gray.quartz.ref.png deleted file mode 100644 index 63926a8..0000000 Binary files a/test/reference/text-antialias-gray.quartz.ref.png and /dev/null differ diff --git a/test/reference/text-antialias-gray.ref.png b/test/reference/text-antialias-gray.ref.png deleted file mode 100644 index 06b805e..0000000 Binary files a/test/reference/text-antialias-gray.ref.png and /dev/null differ diff --git a/test/reference/text-antialias-gray.traps.ref.png b/test/reference/text-antialias-gray.traps.ref.png deleted file mode 100644 index 06b805e..0000000 Binary files a/test/reference/text-antialias-gray.traps.ref.png and /dev/null differ diff --git a/test/reference/text-antialias-none.base.argb32.ref.png b/test/reference/text-antialias-none.base.argb32.ref.png deleted file mode 100644 index 86c09cd..0000000 Binary files a/test/reference/text-antialias-none.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/text-antialias-none.base.rgb24.ref.png b/test/reference/text-antialias-none.base.rgb24.ref.png deleted file mode 100644 index 86c09cd..0000000 Binary files a/test/reference/text-antialias-none.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/text-antialias-none.quartz.ref.png b/test/reference/text-antialias-none.quartz.ref.png deleted file mode 100644 index 872b21d..0000000 Binary files a/test/reference/text-antialias-none.quartz.ref.png and /dev/null differ diff --git a/test/reference/text-antialias-none.ref.png b/test/reference/text-antialias-none.ref.png deleted file mode 100644 index bdd77bd..0000000 Binary files a/test/reference/text-antialias-none.ref.png and /dev/null differ diff --git a/test/reference/text-antialias-subpixel-bgr.base.argb32.ref.png b/test/reference/text-antialias-subpixel-bgr.base.argb32.ref.png deleted file mode 100644 index f8d5130..0000000 Binary files a/test/reference/text-antialias-subpixel-bgr.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/text-antialias-subpixel-bgr.base.rgb24.ref.png b/test/reference/text-antialias-subpixel-bgr.base.rgb24.ref.png deleted file mode 100644 index f8d5130..0000000 Binary files a/test/reference/text-antialias-subpixel-bgr.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/text-antialias-subpixel-bgr.image16.ref.png b/test/reference/text-antialias-subpixel-bgr.image16.ref.png deleted file mode 100644 index 5a4e193..0000000 Binary files a/test/reference/text-antialias-subpixel-bgr.image16.ref.png and /dev/null differ diff --git a/test/reference/text-antialias-subpixel-bgr.mask.argb32.ref.png b/test/reference/text-antialias-subpixel-bgr.mask.argb32.ref.png deleted file mode 100644 index f8d5130..0000000 Binary files a/test/reference/text-antialias-subpixel-bgr.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/text-antialias-subpixel-bgr.mask.rgb24.ref.png b/test/reference/text-antialias-subpixel-bgr.mask.rgb24.ref.png deleted file mode 100644 index f8d5130..0000000 Binary files a/test/reference/text-antialias-subpixel-bgr.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/text-antialias-subpixel-bgr.ref.png b/test/reference/text-antialias-subpixel-bgr.ref.png deleted file mode 100644 index c362182..0000000 Binary files a/test/reference/text-antialias-subpixel-bgr.ref.png and /dev/null differ diff --git a/test/reference/text-antialias-subpixel-bgr.traps.ref.png b/test/reference/text-antialias-subpixel-bgr.traps.ref.png deleted file mode 100644 index a221472..0000000 Binary files a/test/reference/text-antialias-subpixel-bgr.traps.ref.png and /dev/null differ diff --git a/test/reference/text-antialias-subpixel-rgb.base.argb32.ref.png b/test/reference/text-antialias-subpixel-rgb.base.argb32.ref.png deleted file mode 100644 index f8d5130..0000000 Binary files a/test/reference/text-antialias-subpixel-rgb.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/text-antialias-subpixel-rgb.base.rgb24.ref.png b/test/reference/text-antialias-subpixel-rgb.base.rgb24.ref.png deleted file mode 100644 index f8d5130..0000000 Binary files a/test/reference/text-antialias-subpixel-rgb.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/text-antialias-subpixel-rgb.image16.ref.png b/test/reference/text-antialias-subpixel-rgb.image16.ref.png deleted file mode 100644 index cf049b9..0000000 Binary files a/test/reference/text-antialias-subpixel-rgb.image16.ref.png and /dev/null differ diff --git a/test/reference/text-antialias-subpixel-rgb.mask.argb32.ref.png b/test/reference/text-antialias-subpixel-rgb.mask.argb32.ref.png deleted file mode 100644 index f8d5130..0000000 Binary files a/test/reference/text-antialias-subpixel-rgb.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/text-antialias-subpixel-rgb.mask.rgb24.ref.png b/test/reference/text-antialias-subpixel-rgb.mask.rgb24.ref.png deleted file mode 100644 index f8d5130..0000000 Binary files a/test/reference/text-antialias-subpixel-rgb.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/text-antialias-subpixel-rgb.ref.png b/test/reference/text-antialias-subpixel-rgb.ref.png deleted file mode 100644 index 0cbf3f1..0000000 Binary files a/test/reference/text-antialias-subpixel-rgb.ref.png and /dev/null differ diff --git a/test/reference/text-antialias-subpixel-rgb.traps.ref.png b/test/reference/text-antialias-subpixel-rgb.traps.ref.png deleted file mode 100644 index af5e0ae..0000000 Binary files a/test/reference/text-antialias-subpixel-rgb.traps.ref.png and /dev/null differ diff --git a/test/reference/text-antialias-subpixel-vbgr.base.argb32.ref.png b/test/reference/text-antialias-subpixel-vbgr.base.argb32.ref.png deleted file mode 100644 index 9fd35ea..0000000 Binary files a/test/reference/text-antialias-subpixel-vbgr.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/text-antialias-subpixel-vbgr.base.rgb24.ref.png b/test/reference/text-antialias-subpixel-vbgr.base.rgb24.ref.png deleted file mode 100644 index 9fd35ea..0000000 Binary files a/test/reference/text-antialias-subpixel-vbgr.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/text-antialias-subpixel-vbgr.image16.ref.png b/test/reference/text-antialias-subpixel-vbgr.image16.ref.png deleted file mode 100644 index 6ef721a..0000000 Binary files a/test/reference/text-antialias-subpixel-vbgr.image16.ref.png and /dev/null differ diff --git a/test/reference/text-antialias-subpixel-vbgr.mask.argb32.ref.png b/test/reference/text-antialias-subpixel-vbgr.mask.argb32.ref.png deleted file mode 100644 index 9fd35ea..0000000 Binary files a/test/reference/text-antialias-subpixel-vbgr.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/text-antialias-subpixel-vbgr.mask.rgb24.ref.png b/test/reference/text-antialias-subpixel-vbgr.mask.rgb24.ref.png deleted file mode 100644 index 9fd35ea..0000000 Binary files a/test/reference/text-antialias-subpixel-vbgr.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/text-antialias-subpixel-vbgr.ref.png b/test/reference/text-antialias-subpixel-vbgr.ref.png deleted file mode 100644 index 7c89df9..0000000 Binary files a/test/reference/text-antialias-subpixel-vbgr.ref.png and /dev/null differ diff --git a/test/reference/text-antialias-subpixel-vbgr.traps.ref.png b/test/reference/text-antialias-subpixel-vbgr.traps.ref.png deleted file mode 100644 index 905579b..0000000 Binary files a/test/reference/text-antialias-subpixel-vbgr.traps.ref.png and /dev/null differ diff --git a/test/reference/text-antialias-subpixel-vrgb.base.argb32.ref.png b/test/reference/text-antialias-subpixel-vrgb.base.argb32.ref.png deleted file mode 100644 index 9fd35ea..0000000 Binary files a/test/reference/text-antialias-subpixel-vrgb.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/text-antialias-subpixel-vrgb.base.rgb24.ref.png b/test/reference/text-antialias-subpixel-vrgb.base.rgb24.ref.png deleted file mode 100644 index 9fd35ea..0000000 Binary files a/test/reference/text-antialias-subpixel-vrgb.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/text-antialias-subpixel-vrgb.image16.ref.png b/test/reference/text-antialias-subpixel-vrgb.image16.ref.png deleted file mode 100644 index cb3586b..0000000 Binary files a/test/reference/text-antialias-subpixel-vrgb.image16.ref.png and /dev/null differ diff --git a/test/reference/text-antialias-subpixel-vrgb.mask.argb32.ref.png b/test/reference/text-antialias-subpixel-vrgb.mask.argb32.ref.png deleted file mode 100644 index 9fd35ea..0000000 Binary files a/test/reference/text-antialias-subpixel-vrgb.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/text-antialias-subpixel-vrgb.mask.rgb24.ref.png b/test/reference/text-antialias-subpixel-vrgb.mask.rgb24.ref.png deleted file mode 100644 index 9fd35ea..0000000 Binary files a/test/reference/text-antialias-subpixel-vrgb.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/text-antialias-subpixel-vrgb.ref.png b/test/reference/text-antialias-subpixel-vrgb.ref.png deleted file mode 100644 index 103c7e4..0000000 Binary files a/test/reference/text-antialias-subpixel-vrgb.ref.png and /dev/null differ diff --git a/test/reference/text-antialias-subpixel-vrgb.traps.ref.png b/test/reference/text-antialias-subpixel-vrgb.traps.ref.png deleted file mode 100644 index f7c5bef..0000000 Binary files a/test/reference/text-antialias-subpixel-vrgb.traps.ref.png and /dev/null differ diff --git a/test/reference/text-antialias-subpixel.base.argb32.ref.png b/test/reference/text-antialias-subpixel.base.argb32.ref.png deleted file mode 100644 index f8d5130..0000000 Binary files a/test/reference/text-antialias-subpixel.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/text-antialias-subpixel.base.argb32.xfail.png b/test/reference/text-antialias-subpixel.base.argb32.xfail.png deleted file mode 100644 index 4a6bde4..0000000 Binary files a/test/reference/text-antialias-subpixel.base.argb32.xfail.png and /dev/null differ diff --git a/test/reference/text-antialias-subpixel.base.rgb24.ref.png b/test/reference/text-antialias-subpixel.base.rgb24.ref.png deleted file mode 100644 index f8d5130..0000000 Binary files a/test/reference/text-antialias-subpixel.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/text-antialias-subpixel.base.rgb24.xfail.png b/test/reference/text-antialias-subpixel.base.rgb24.xfail.png deleted file mode 100644 index 4a6bde4..0000000 Binary files a/test/reference/text-antialias-subpixel.base.rgb24.xfail.png and /dev/null differ diff --git a/test/reference/text-antialias-subpixel.image16.ref.png b/test/reference/text-antialias-subpixel.image16.ref.png deleted file mode 100644 index 81fad89..0000000 Binary files a/test/reference/text-antialias-subpixel.image16.ref.png and /dev/null differ diff --git a/test/reference/text-antialias-subpixel.mask.argb32.ref.png b/test/reference/text-antialias-subpixel.mask.argb32.ref.png deleted file mode 100644 index f8d5130..0000000 Binary files a/test/reference/text-antialias-subpixel.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/text-antialias-subpixel.mask.rgb24.ref.png b/test/reference/text-antialias-subpixel.mask.rgb24.ref.png deleted file mode 100644 index f8d5130..0000000 Binary files a/test/reference/text-antialias-subpixel.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/text-antialias-subpixel.quartz.ref.png b/test/reference/text-antialias-subpixel.quartz.ref.png deleted file mode 100644 index f5b1aa8..0000000 Binary files a/test/reference/text-antialias-subpixel.quartz.ref.png and /dev/null differ diff --git a/test/reference/text-antialias-subpixel.ref.png b/test/reference/text-antialias-subpixel.ref.png deleted file mode 100644 index 0cbf3f1..0000000 Binary files a/test/reference/text-antialias-subpixel.ref.png and /dev/null differ diff --git a/test/reference/text-antialias-subpixel.traps.ref.png b/test/reference/text-antialias-subpixel.traps.ref.png deleted file mode 100644 index af5e0ae..0000000 Binary files a/test/reference/text-antialias-subpixel.traps.ref.png and /dev/null differ diff --git a/test/reference/text-glyph-range.base.argb32.ref.png b/test/reference/text-glyph-range.base.argb32.ref.png deleted file mode 100644 index 3268699..0000000 Binary files a/test/reference/text-glyph-range.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/text-glyph-range.base.rgb24.ref.png b/test/reference/text-glyph-range.base.rgb24.ref.png deleted file mode 100644 index 3268699..0000000 Binary files a/test/reference/text-glyph-range.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/text-glyph-range.image16.ref.png b/test/reference/text-glyph-range.image16.ref.png deleted file mode 100644 index 51daa16..0000000 Binary files a/test/reference/text-glyph-range.image16.ref.png and /dev/null differ diff --git a/test/reference/text-glyph-range.ps.ref.png b/test/reference/text-glyph-range.ps.ref.png deleted file mode 100644 index 96bc85a..0000000 Binary files a/test/reference/text-glyph-range.ps.ref.png and /dev/null differ diff --git a/test/reference/text-glyph-range.quartz.ref.png b/test/reference/text-glyph-range.quartz.ref.png deleted file mode 100644 index e4a14b2..0000000 Binary files a/test/reference/text-glyph-range.quartz.ref.png and /dev/null differ diff --git a/test/reference/text-glyph-range.ref.png b/test/reference/text-glyph-range.ref.png deleted file mode 100644 index 648fef5..0000000 Binary files a/test/reference/text-glyph-range.ref.png and /dev/null differ diff --git a/test/reference/text-glyph-range.traps.ref.png b/test/reference/text-glyph-range.traps.ref.png deleted file mode 100644 index 3268699..0000000 Binary files a/test/reference/text-glyph-range.traps.ref.png and /dev/null differ diff --git a/test/reference/text-pattern.base.argb32.ref.png b/test/reference/text-pattern.base.argb32.ref.png deleted file mode 100644 index 79f18e4..0000000 Binary files a/test/reference/text-pattern.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/text-pattern.base.rgb24.ref.png b/test/reference/text-pattern.base.rgb24.ref.png deleted file mode 100644 index b073b98..0000000 Binary files a/test/reference/text-pattern.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/text-pattern.pdf.argb32.ref.png b/test/reference/text-pattern.pdf.argb32.ref.png deleted file mode 100644 index 5eef739..0000000 Binary files a/test/reference/text-pattern.pdf.argb32.ref.png and /dev/null differ diff --git a/test/reference/text-pattern.pdf.rgb24.ref.png b/test/reference/text-pattern.pdf.rgb24.ref.png deleted file mode 100644 index 27a1195..0000000 Binary files a/test/reference/text-pattern.pdf.rgb24.ref.png and /dev/null differ diff --git a/test/reference/text-pattern.ps2.argb32.ref.png b/test/reference/text-pattern.ps2.argb32.ref.png deleted file mode 100644 index bdea146..0000000 Binary files a/test/reference/text-pattern.ps2.argb32.ref.png and /dev/null differ diff --git a/test/reference/text-pattern.ps2.rgb24.ref.png b/test/reference/text-pattern.ps2.rgb24.ref.png deleted file mode 100644 index bdea146..0000000 Binary files a/test/reference/text-pattern.ps2.rgb24.ref.png and /dev/null differ diff --git a/test/reference/text-pattern.ps3.argb32.ref.png b/test/reference/text-pattern.ps3.argb32.ref.png deleted file mode 100644 index 411a531..0000000 Binary files a/test/reference/text-pattern.ps3.argb32.ref.png and /dev/null differ diff --git a/test/reference/text-pattern.ps3.rgb24.ref.png b/test/reference/text-pattern.ps3.rgb24.ref.png deleted file mode 100644 index f696a99..0000000 Binary files a/test/reference/text-pattern.ps3.rgb24.ref.png and /dev/null differ diff --git a/test/reference/text-pattern.quartz.argb32.ref.png b/test/reference/text-pattern.quartz.argb32.ref.png deleted file mode 100644 index 1a15964..0000000 Binary files a/test/reference/text-pattern.quartz.argb32.ref.png and /dev/null differ diff --git a/test/reference/text-pattern.quartz.rgb24.ref.png b/test/reference/text-pattern.quartz.rgb24.ref.png deleted file mode 100644 index f19dd76..0000000 Binary files a/test/reference/text-pattern.quartz.rgb24.ref.png and /dev/null differ diff --git a/test/reference/text-pattern.ref.png b/test/reference/text-pattern.ref.png deleted file mode 100644 index 95410fa..0000000 Binary files a/test/reference/text-pattern.ref.png and /dev/null differ diff --git a/test/reference/text-pattern.svg.argb32.ref.png b/test/reference/text-pattern.svg.argb32.ref.png deleted file mode 100644 index f472858..0000000 Binary files a/test/reference/text-pattern.svg.argb32.ref.png and /dev/null differ diff --git a/test/reference/text-pattern.svg.rgb24.ref.png b/test/reference/text-pattern.svg.rgb24.ref.png deleted file mode 100644 index 2b2064e..0000000 Binary files a/test/reference/text-pattern.svg.rgb24.ref.png and /dev/null differ diff --git a/test/reference/text-pattern.traps.argb32.ref.png b/test/reference/text-pattern.traps.argb32.ref.png deleted file mode 100644 index 79f18e4..0000000 Binary files a/test/reference/text-pattern.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/text-pattern.traps.rgb24.ref.png b/test/reference/text-pattern.traps.rgb24.ref.png deleted file mode 100644 index b073b98..0000000 Binary files a/test/reference/text-pattern.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/text-rotate.base.argb32.ref.png b/test/reference/text-rotate.base.argb32.ref.png deleted file mode 100644 index ff3fe84..0000000 Binary files a/test/reference/text-rotate.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/text-rotate.base.rgb24.ref.png b/test/reference/text-rotate.base.rgb24.ref.png deleted file mode 100644 index ff3fe84..0000000 Binary files a/test/reference/text-rotate.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/text-rotate.image16.ref.png b/test/reference/text-rotate.image16.ref.png deleted file mode 100644 index fddd002..0000000 Binary files a/test/reference/text-rotate.image16.ref.png and /dev/null differ diff --git a/test/reference/text-rotate.mask.argb32.ref.png b/test/reference/text-rotate.mask.argb32.ref.png deleted file mode 100644 index b455aab..0000000 Binary files a/test/reference/text-rotate.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/text-rotate.mask.rgb24.ref.png b/test/reference/text-rotate.mask.rgb24.ref.png deleted file mode 100644 index b455aab..0000000 Binary files a/test/reference/text-rotate.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/text-rotate.pdf.ref.png b/test/reference/text-rotate.pdf.ref.png deleted file mode 100644 index b533075..0000000 Binary files a/test/reference/text-rotate.pdf.ref.png and /dev/null differ diff --git a/test/reference/text-rotate.ps.ref.png b/test/reference/text-rotate.ps.ref.png deleted file mode 100644 index c68d02d..0000000 Binary files a/test/reference/text-rotate.ps.ref.png and /dev/null differ diff --git a/test/reference/text-rotate.quartz.ref.png b/test/reference/text-rotate.quartz.ref.png deleted file mode 100644 index 113e727..0000000 Binary files a/test/reference/text-rotate.quartz.ref.png and /dev/null differ diff --git a/test/reference/text-rotate.ref.png b/test/reference/text-rotate.ref.png deleted file mode 100644 index 432de31..0000000 Binary files a/test/reference/text-rotate.ref.png and /dev/null differ diff --git a/test/reference/text-rotate.svg.ref.png b/test/reference/text-rotate.svg.ref.png deleted file mode 100644 index 9d887a0..0000000 Binary files a/test/reference/text-rotate.svg.ref.png and /dev/null differ diff --git a/test/reference/text-rotate.traps.ref.png b/test/reference/text-rotate.traps.ref.png deleted file mode 100644 index ff3fe84..0000000 Binary files a/test/reference/text-rotate.traps.ref.png and /dev/null differ diff --git a/test/reference/text-rotate.xlib-fallback.ref.png b/test/reference/text-rotate.xlib-fallback.ref.png deleted file mode 100644 index ce06330..0000000 Binary files a/test/reference/text-rotate.xlib-fallback.ref.png and /dev/null differ diff --git a/test/reference/text-transform.base.argb32.ref.png b/test/reference/text-transform.base.argb32.ref.png deleted file mode 100644 index 4603bc5..0000000 Binary files a/test/reference/text-transform.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/text-transform.base.rgb24.ref.png b/test/reference/text-transform.base.rgb24.ref.png deleted file mode 100644 index 4603bc5..0000000 Binary files a/test/reference/text-transform.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/text-transform.image16.ref.png b/test/reference/text-transform.image16.ref.png deleted file mode 100644 index 59caca8..0000000 Binary files a/test/reference/text-transform.image16.ref.png and /dev/null differ diff --git a/test/reference/text-transform.pdf.argb32.ref.png b/test/reference/text-transform.pdf.argb32.ref.png deleted file mode 100644 index 7a2f3a7..0000000 Binary files a/test/reference/text-transform.pdf.argb32.ref.png and /dev/null differ diff --git a/test/reference/text-transform.pdf.rgb24.ref.png b/test/reference/text-transform.pdf.rgb24.ref.png deleted file mode 100644 index 7a2f3a7..0000000 Binary files a/test/reference/text-transform.pdf.rgb24.ref.png and /dev/null differ diff --git a/test/reference/text-transform.ps2.ref.png b/test/reference/text-transform.ps2.ref.png deleted file mode 100644 index 07896b3..0000000 Binary files a/test/reference/text-transform.ps2.ref.png and /dev/null differ diff --git a/test/reference/text-transform.ps3.ref.png b/test/reference/text-transform.ps3.ref.png deleted file mode 100644 index 07896b3..0000000 Binary files a/test/reference/text-transform.ps3.ref.png and /dev/null differ diff --git a/test/reference/text-transform.ref.png b/test/reference/text-transform.ref.png deleted file mode 100644 index 6f36b9d..0000000 Binary files a/test/reference/text-transform.ref.png and /dev/null differ diff --git a/test/reference/text-transform.svg.ref.png b/test/reference/text-transform.svg.ref.png deleted file mode 100644 index 1473a64..0000000 Binary files a/test/reference/text-transform.svg.ref.png and /dev/null differ diff --git a/test/reference/tiger.base.argb32.ref.png b/test/reference/tiger.base.argb32.ref.png deleted file mode 100644 index bc7f668..0000000 Binary files a/test/reference/tiger.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/tiger.base.rgb24.ref.png b/test/reference/tiger.base.rgb24.ref.png deleted file mode 100644 index bc7f668..0000000 Binary files a/test/reference/tiger.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/tiger.ref.png b/test/reference/tiger.ref.png deleted file mode 100644 index b8b2175..0000000 Binary files a/test/reference/tiger.ref.png and /dev/null differ diff --git a/test/reference/tiger.traps.argb32.ref.png b/test/reference/tiger.traps.argb32.ref.png deleted file mode 100644 index bc7f668..0000000 Binary files a/test/reference/tiger.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/tiger.traps.rgb24.ref.png b/test/reference/tiger.traps.rgb24.ref.png deleted file mode 100644 index bc7f668..0000000 Binary files a/test/reference/tiger.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/tighten-bounds.argb32.ref.png b/test/reference/tighten-bounds.argb32.ref.png deleted file mode 100644 index 042038c..0000000 Binary files a/test/reference/tighten-bounds.argb32.ref.png and /dev/null differ diff --git a/test/reference/tighten-bounds.base.argb32.ref.png b/test/reference/tighten-bounds.base.argb32.ref.png deleted file mode 100644 index dad3a7f..0000000 Binary files a/test/reference/tighten-bounds.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/tighten-bounds.base.rgb24.ref.png b/test/reference/tighten-bounds.base.rgb24.ref.png deleted file mode 100644 index 9d3a252..0000000 Binary files a/test/reference/tighten-bounds.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/tighten-bounds.rgb24.ref.png b/test/reference/tighten-bounds.rgb24.ref.png deleted file mode 100644 index 2815881..0000000 Binary files a/test/reference/tighten-bounds.rgb24.ref.png and /dev/null differ diff --git a/test/reference/tighten-bounds.traps.argb32.ref.png b/test/reference/tighten-bounds.traps.argb32.ref.png deleted file mode 100644 index 291a841..0000000 Binary files a/test/reference/tighten-bounds.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/tighten-bounds.traps.rgb24.ref.png b/test/reference/tighten-bounds.traps.rgb24.ref.png deleted file mode 100644 index f31c17c..0000000 Binary files a/test/reference/tighten-bounds.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/transforms.base.argb32.ref.png b/test/reference/transforms.base.argb32.ref.png deleted file mode 100644 index 3ce9176..0000000 Binary files a/test/reference/transforms.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/transforms.base.rgb24.ref.png b/test/reference/transforms.base.rgb24.ref.png deleted file mode 100644 index 3ce9176..0000000 Binary files a/test/reference/transforms.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/transforms.image16.ref.png b/test/reference/transforms.image16.ref.png deleted file mode 100644 index e9a1813..0000000 Binary files a/test/reference/transforms.image16.ref.png and /dev/null differ diff --git a/test/reference/transforms.ps2.ref.png b/test/reference/transforms.ps2.ref.png deleted file mode 100644 index 6d195aa..0000000 Binary files a/test/reference/transforms.ps2.ref.png and /dev/null differ diff --git a/test/reference/transforms.ps3.ref.png b/test/reference/transforms.ps3.ref.png deleted file mode 100644 index 6d195aa..0000000 Binary files a/test/reference/transforms.ps3.ref.png and /dev/null differ diff --git a/test/reference/transforms.ref.png b/test/reference/transforms.ref.png deleted file mode 100644 index 390bad4..0000000 Binary files a/test/reference/transforms.ref.png and /dev/null differ diff --git a/test/reference/transforms.traps.argb32.ref.png b/test/reference/transforms.traps.argb32.ref.png deleted file mode 100644 index 3ce9176..0000000 Binary files a/test/reference/transforms.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/transforms.traps.rgb24.ref.png b/test/reference/transforms.traps.rgb24.ref.png deleted file mode 100644 index 3ce9176..0000000 Binary files a/test/reference/transforms.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/translate-show-surface.base.argb32.ref.png b/test/reference/translate-show-surface.base.argb32.ref.png deleted file mode 100644 index 0a145d9..0000000 Binary files a/test/reference/translate-show-surface.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/translate-show-surface.base.rgb24.ref.png b/test/reference/translate-show-surface.base.rgb24.ref.png deleted file mode 100644 index 0a145d9..0000000 Binary files a/test/reference/translate-show-surface.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/translate-show-surface.ref.png b/test/reference/translate-show-surface.ref.png deleted file mode 100644 index 765adc4..0000000 Binary files a/test/reference/translate-show-surface.ref.png and /dev/null differ diff --git a/test/reference/trap-clip.argb32.ref.png b/test/reference/trap-clip.argb32.ref.png deleted file mode 100644 index 08e6c68..0000000 Binary files a/test/reference/trap-clip.argb32.ref.png and /dev/null differ diff --git a/test/reference/trap-clip.base.argb32.ref.png b/test/reference/trap-clip.base.argb32.ref.png deleted file mode 100644 index 285934b..0000000 Binary files a/test/reference/trap-clip.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/trap-clip.base.rgb24.ref.png b/test/reference/trap-clip.base.rgb24.ref.png deleted file mode 100644 index ed89be7..0000000 Binary files a/test/reference/trap-clip.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/trap-clip.image16.ref.png b/test/reference/trap-clip.image16.ref.png deleted file mode 100644 index e9ef2cf..0000000 Binary files a/test/reference/trap-clip.image16.ref.png and /dev/null differ diff --git a/test/reference/trap-clip.mask.argb32.ref.png b/test/reference/trap-clip.mask.argb32.ref.png deleted file mode 100644 index 98cd0a2..0000000 Binary files a/test/reference/trap-clip.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/trap-clip.mask.rgb24.ref.png b/test/reference/trap-clip.mask.rgb24.ref.png deleted file mode 100644 index c013153..0000000 Binary files a/test/reference/trap-clip.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/trap-clip.ps2.argb32.ref.png b/test/reference/trap-clip.ps2.argb32.ref.png deleted file mode 100644 index 4db9f8e..0000000 Binary files a/test/reference/trap-clip.ps2.argb32.ref.png and /dev/null differ diff --git a/test/reference/trap-clip.ps2.rgb24.ref.png b/test/reference/trap-clip.ps2.rgb24.ref.png deleted file mode 100644 index de309b9..0000000 Binary files a/test/reference/trap-clip.ps2.rgb24.ref.png and /dev/null differ diff --git a/test/reference/trap-clip.ps3.argb32.ref.png b/test/reference/trap-clip.ps3.argb32.ref.png deleted file mode 100644 index 17d74be..0000000 Binary files a/test/reference/trap-clip.ps3.argb32.ref.png and /dev/null differ diff --git a/test/reference/trap-clip.ps3.rgb24.ref.png b/test/reference/trap-clip.ps3.rgb24.ref.png deleted file mode 100644 index 236b75c..0000000 Binary files a/test/reference/trap-clip.ps3.rgb24.ref.png and /dev/null differ diff --git a/test/reference/trap-clip.quartz.argb32.ref.png b/test/reference/trap-clip.quartz.argb32.ref.png deleted file mode 100644 index e045ea4..0000000 Binary files a/test/reference/trap-clip.quartz.argb32.ref.png and /dev/null differ diff --git a/test/reference/trap-clip.quartz.rgb24.ref.png b/test/reference/trap-clip.quartz.rgb24.ref.png deleted file mode 100644 index 1044d86..0000000 Binary files a/test/reference/trap-clip.quartz.rgb24.ref.png and /dev/null differ diff --git a/test/reference/trap-clip.rgb24.ref.png b/test/reference/trap-clip.rgb24.ref.png deleted file mode 100644 index 9c51d62..0000000 Binary files a/test/reference/trap-clip.rgb24.ref.png and /dev/null differ diff --git a/test/reference/trap-clip.test-paginated.argb32.ref.png b/test/reference/trap-clip.test-paginated.argb32.ref.png deleted file mode 100644 index 7259edc..0000000 Binary files a/test/reference/trap-clip.test-paginated.argb32.ref.png and /dev/null differ diff --git a/test/reference/trap-clip.traps.argb32.ref.png b/test/reference/trap-clip.traps.argb32.ref.png deleted file mode 100644 index 170d378..0000000 Binary files a/test/reference/trap-clip.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/trap-clip.traps.rgb24.ref.png b/test/reference/trap-clip.traps.rgb24.ref.png deleted file mode 100644 index b1129b0..0000000 Binary files a/test/reference/trap-clip.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/twin-antialias-gray.base.argb32.ref.png b/test/reference/twin-antialias-gray.base.argb32.ref.png deleted file mode 100644 index 0692dea..0000000 Binary files a/test/reference/twin-antialias-gray.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/twin-antialias-gray.base.rgb24.ref.png b/test/reference/twin-antialias-gray.base.rgb24.ref.png deleted file mode 100644 index 0692dea..0000000 Binary files a/test/reference/twin-antialias-gray.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/twin-antialias-gray.image16.ref.png b/test/reference/twin-antialias-gray.image16.ref.png deleted file mode 100644 index 1fadcb1..0000000 Binary files a/test/reference/twin-antialias-gray.image16.ref.png and /dev/null differ diff --git a/test/reference/twin-antialias-gray.mask.argb32.ref.png b/test/reference/twin-antialias-gray.mask.argb32.ref.png deleted file mode 100644 index 6b091af..0000000 Binary files a/test/reference/twin-antialias-gray.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/twin-antialias-gray.mask.rgb24.ref.png b/test/reference/twin-antialias-gray.mask.rgb24.ref.png deleted file mode 100644 index 6b091af..0000000 Binary files a/test/reference/twin-antialias-gray.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/twin-antialias-gray.ref.png b/test/reference/twin-antialias-gray.ref.png deleted file mode 100644 index 602e005..0000000 Binary files a/test/reference/twin-antialias-gray.ref.png and /dev/null differ diff --git a/test/reference/twin-antialias-gray.traps.argb32.ref.png b/test/reference/twin-antialias-gray.traps.argb32.ref.png deleted file mode 100644 index 0692dea..0000000 Binary files a/test/reference/twin-antialias-gray.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/twin-antialias-gray.traps.rgb24.ref.png b/test/reference/twin-antialias-gray.traps.rgb24.ref.png deleted file mode 100644 index 0692dea..0000000 Binary files a/test/reference/twin-antialias-gray.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/twin-antialias-mixed.base.argb32.ref.png b/test/reference/twin-antialias-mixed.base.argb32.ref.png deleted file mode 100644 index ba8180e..0000000 Binary files a/test/reference/twin-antialias-mixed.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/twin-antialias-mixed.base.rgb24.ref.png b/test/reference/twin-antialias-mixed.base.rgb24.ref.png deleted file mode 100644 index ba8180e..0000000 Binary files a/test/reference/twin-antialias-mixed.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/twin-antialias-mixed.image16.ref.png b/test/reference/twin-antialias-mixed.image16.ref.png deleted file mode 100644 index 10c4980..0000000 Binary files a/test/reference/twin-antialias-mixed.image16.ref.png and /dev/null differ diff --git a/test/reference/twin-antialias-mixed.ref.png b/test/reference/twin-antialias-mixed.ref.png deleted file mode 100644 index 28e85a3..0000000 Binary files a/test/reference/twin-antialias-mixed.ref.png and /dev/null differ diff --git a/test/reference/twin-antialias-mixed.traps.argb32.ref.png b/test/reference/twin-antialias-mixed.traps.argb32.ref.png deleted file mode 100644 index ba8180e..0000000 Binary files a/test/reference/twin-antialias-mixed.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/twin-antialias-mixed.traps.rgb24.ref.png b/test/reference/twin-antialias-mixed.traps.rgb24.ref.png deleted file mode 100644 index ba8180e..0000000 Binary files a/test/reference/twin-antialias-mixed.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/twin-antialias-none.base.argb32.ref.png b/test/reference/twin-antialias-none.base.argb32.ref.png deleted file mode 100644 index 02cf333..0000000 Binary files a/test/reference/twin-antialias-none.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/twin-antialias-none.base.rgb24.ref.png b/test/reference/twin-antialias-none.base.rgb24.ref.png deleted file mode 100644 index 02cf333..0000000 Binary files a/test/reference/twin-antialias-none.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/twin-antialias-none.ref.png b/test/reference/twin-antialias-none.ref.png deleted file mode 100644 index 28ad303..0000000 Binary files a/test/reference/twin-antialias-none.ref.png and /dev/null differ diff --git a/test/reference/twin-antialias-none.traps.argb32.ref.png b/test/reference/twin-antialias-none.traps.argb32.ref.png deleted file mode 100644 index 02cf333..0000000 Binary files a/test/reference/twin-antialias-none.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/twin-antialias-none.traps.rgb24.ref.png b/test/reference/twin-antialias-none.traps.rgb24.ref.png deleted file mode 100644 index 02cf333..0000000 Binary files a/test/reference/twin-antialias-none.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/twin-antialias-subpixel.base.argb32.ref.png b/test/reference/twin-antialias-subpixel.base.argb32.ref.png deleted file mode 100644 index 0692dea..0000000 Binary files a/test/reference/twin-antialias-subpixel.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/twin-antialias-subpixel.base.rgb24.ref.png b/test/reference/twin-antialias-subpixel.base.rgb24.ref.png deleted file mode 100644 index 0692dea..0000000 Binary files a/test/reference/twin-antialias-subpixel.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/twin-antialias-subpixel.image16.ref.png b/test/reference/twin-antialias-subpixel.image16.ref.png deleted file mode 100644 index 1fadcb1..0000000 Binary files a/test/reference/twin-antialias-subpixel.image16.ref.png and /dev/null differ diff --git a/test/reference/twin-antialias-subpixel.mask.argb32.ref.png b/test/reference/twin-antialias-subpixel.mask.argb32.ref.png deleted file mode 100644 index 6b091af..0000000 Binary files a/test/reference/twin-antialias-subpixel.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/twin-antialias-subpixel.mask.rgb24.ref.png b/test/reference/twin-antialias-subpixel.mask.rgb24.ref.png deleted file mode 100644 index 6b091af..0000000 Binary files a/test/reference/twin-antialias-subpixel.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/twin-antialias-subpixel.ref.png b/test/reference/twin-antialias-subpixel.ref.png deleted file mode 100644 index 602e005..0000000 Binary files a/test/reference/twin-antialias-subpixel.ref.png and /dev/null differ diff --git a/test/reference/twin-antialias-subpixel.traps.argb32.ref.png b/test/reference/twin-antialias-subpixel.traps.argb32.ref.png deleted file mode 100644 index 0692dea..0000000 Binary files a/test/reference/twin-antialias-subpixel.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/twin-antialias-subpixel.traps.rgb24.ref.png b/test/reference/twin-antialias-subpixel.traps.rgb24.ref.png deleted file mode 100644 index 0692dea..0000000 Binary files a/test/reference/twin-antialias-subpixel.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/twin.base.argb32.ref.png b/test/reference/twin.base.argb32.ref.png deleted file mode 100644 index 0692dea..0000000 Binary files a/test/reference/twin.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/twin.base.rgb24.ref.png b/test/reference/twin.base.rgb24.ref.png deleted file mode 100644 index 0692dea..0000000 Binary files a/test/reference/twin.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/twin.image16.ref.png b/test/reference/twin.image16.ref.png deleted file mode 100644 index 1fadcb1..0000000 Binary files a/test/reference/twin.image16.ref.png and /dev/null differ diff --git a/test/reference/twin.mask.argb32.ref.png b/test/reference/twin.mask.argb32.ref.png deleted file mode 100644 index 6b091af..0000000 Binary files a/test/reference/twin.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/twin.mask.rgb24.ref.png b/test/reference/twin.mask.rgb24.ref.png deleted file mode 100644 index 6b091af..0000000 Binary files a/test/reference/twin.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/twin.ps.ref.png b/test/reference/twin.ps.ref.png deleted file mode 100644 index 25c71b4..0000000 Binary files a/test/reference/twin.ps.ref.png and /dev/null differ diff --git a/test/reference/twin.ref.png b/test/reference/twin.ref.png deleted file mode 100644 index 602e005..0000000 Binary files a/test/reference/twin.ref.png and /dev/null differ diff --git a/test/reference/twin.svg.ref.png b/test/reference/twin.svg.ref.png deleted file mode 100644 index 628a83c..0000000 Binary files a/test/reference/twin.svg.ref.png and /dev/null differ diff --git a/test/reference/twin.traps.argb32.ref.png b/test/reference/twin.traps.argb32.ref.png deleted file mode 100644 index 0692dea..0000000 Binary files a/test/reference/twin.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/twin.traps.rgb24.ref.png b/test/reference/twin.traps.rgb24.ref.png deleted file mode 100644 index 0692dea..0000000 Binary files a/test/reference/twin.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/unaligned-box.base.argb32.ref.png b/test/reference/unaligned-box.base.argb32.ref.png deleted file mode 100644 index 48e23b8..0000000 Binary files a/test/reference/unaligned-box.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/unaligned-box.base.rgb24.ref.png b/test/reference/unaligned-box.base.rgb24.ref.png deleted file mode 100644 index 48e23b8..0000000 Binary files a/test/reference/unaligned-box.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/unaligned-box.ref.png b/test/reference/unaligned-box.ref.png deleted file mode 100644 index ec7c489..0000000 Binary files a/test/reference/unaligned-box.ref.png and /dev/null differ diff --git a/test/reference/unaligned-box.traps.argb32.ref.png b/test/reference/unaligned-box.traps.argb32.ref.png deleted file mode 100644 index 48e23b8..0000000 Binary files a/test/reference/unaligned-box.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/unaligned-box.traps.rgb24.ref.png b/test/reference/unaligned-box.traps.rgb24.ref.png deleted file mode 100644 index 48e23b8..0000000 Binary files a/test/reference/unaligned-box.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/unantialiased-shapes.base.argb32.ref.png b/test/reference/unantialiased-shapes.base.argb32.ref.png deleted file mode 100644 index a55ba88..0000000 Binary files a/test/reference/unantialiased-shapes.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/unantialiased-shapes.base.rgb24.ref.png b/test/reference/unantialiased-shapes.base.rgb24.ref.png deleted file mode 100644 index a55ba88..0000000 Binary files a/test/reference/unantialiased-shapes.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/unantialiased-shapes.quartz.ref.png b/test/reference/unantialiased-shapes.quartz.ref.png deleted file mode 100644 index 349ece7..0000000 Binary files a/test/reference/unantialiased-shapes.quartz.ref.png and /dev/null differ diff --git a/test/reference/unantialiased-shapes.ref.png b/test/reference/unantialiased-shapes.ref.png deleted file mode 100644 index d9f466e..0000000 Binary files a/test/reference/unantialiased-shapes.ref.png and /dev/null differ diff --git a/test/reference/unantialiased-shapes.traps.argb32.ref.png b/test/reference/unantialiased-shapes.traps.argb32.ref.png deleted file mode 100644 index cb2ce3d..0000000 Binary files a/test/reference/unantialiased-shapes.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/unantialiased-shapes.traps.rgb24.ref.png b/test/reference/unantialiased-shapes.traps.rgb24.ref.png deleted file mode 100644 index cb2ce3d..0000000 Binary files a/test/reference/unantialiased-shapes.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/unbounded-operator.argb32.ref.png b/test/reference/unbounded-operator.argb32.ref.png deleted file mode 100644 index 0b43388..0000000 Binary files a/test/reference/unbounded-operator.argb32.ref.png and /dev/null differ diff --git a/test/reference/unbounded-operator.base.argb32.ref.png b/test/reference/unbounded-operator.base.argb32.ref.png deleted file mode 100644 index fe86a94..0000000 Binary files a/test/reference/unbounded-operator.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/unbounded-operator.base.rgb24.ref.png b/test/reference/unbounded-operator.base.rgb24.ref.png deleted file mode 100644 index c8555af..0000000 Binary files a/test/reference/unbounded-operator.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/unbounded-operator.gl.argb32.xfail.png b/test/reference/unbounded-operator.gl.argb32.xfail.png deleted file mode 100644 index 34e32eb..0000000 Binary files a/test/reference/unbounded-operator.gl.argb32.xfail.png and /dev/null differ diff --git a/test/reference/unbounded-operator.gl.rgb24.xfail.png b/test/reference/unbounded-operator.gl.rgb24.xfail.png deleted file mode 100644 index b91da8f..0000000 Binary files a/test/reference/unbounded-operator.gl.rgb24.xfail.png and /dev/null differ diff --git a/test/reference/unbounded-operator.image16.ref.png b/test/reference/unbounded-operator.image16.ref.png deleted file mode 100644 index 17dfb46..0000000 Binary files a/test/reference/unbounded-operator.image16.ref.png and /dev/null differ diff --git a/test/reference/unbounded-operator.mask.argb32.ref.png b/test/reference/unbounded-operator.mask.argb32.ref.png deleted file mode 100644 index 08f4356..0000000 Binary files a/test/reference/unbounded-operator.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/unbounded-operator.mask.rgb24.ref.png b/test/reference/unbounded-operator.mask.rgb24.ref.png deleted file mode 100644 index 80d20dc..0000000 Binary files a/test/reference/unbounded-operator.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/unbounded-operator.pdf.argb32.ref.png b/test/reference/unbounded-operator.pdf.argb32.ref.png deleted file mode 100644 index 4aa476d..0000000 Binary files a/test/reference/unbounded-operator.pdf.argb32.ref.png and /dev/null differ diff --git a/test/reference/unbounded-operator.ps2.argb32.ref.png b/test/reference/unbounded-operator.ps2.argb32.ref.png deleted file mode 100644 index 4aa476d..0000000 Binary files a/test/reference/unbounded-operator.ps2.argb32.ref.png and /dev/null differ diff --git a/test/reference/unbounded-operator.ps3.argb32.ref.png b/test/reference/unbounded-operator.ps3.argb32.ref.png deleted file mode 100644 index 4aa476d..0000000 Binary files a/test/reference/unbounded-operator.ps3.argb32.ref.png and /dev/null differ diff --git a/test/reference/unbounded-operator.quartz.argb32.ref.png b/test/reference/unbounded-operator.quartz.argb32.ref.png deleted file mode 100644 index b2e9916..0000000 Binary files a/test/reference/unbounded-operator.quartz.argb32.ref.png and /dev/null differ diff --git a/test/reference/unbounded-operator.quartz.rgb24.ref.png b/test/reference/unbounded-operator.quartz.rgb24.ref.png deleted file mode 100644 index ea41dc8..0000000 Binary files a/test/reference/unbounded-operator.quartz.rgb24.ref.png and /dev/null differ diff --git a/test/reference/unbounded-operator.rgb24.ref.png b/test/reference/unbounded-operator.rgb24.ref.png deleted file mode 100644 index c9b5b34..0000000 Binary files a/test/reference/unbounded-operator.rgb24.ref.png and /dev/null differ diff --git a/test/reference/unbounded-operator.svg12.argb32.ref.png b/test/reference/unbounded-operator.svg12.argb32.ref.png deleted file mode 100644 index 45b173f..0000000 Binary files a/test/reference/unbounded-operator.svg12.argb32.ref.png and /dev/null differ diff --git a/test/reference/unbounded-operator.svg12.rgb24.xfail.png b/test/reference/unbounded-operator.svg12.rgb24.xfail.png deleted file mode 100644 index 828a9db..0000000 Binary files a/test/reference/unbounded-operator.svg12.rgb24.xfail.png and /dev/null differ diff --git a/test/reference/unbounded-operator.traps.argb32.ref.png b/test/reference/unbounded-operator.traps.argb32.ref.png deleted file mode 100644 index fe86a94..0000000 Binary files a/test/reference/unbounded-operator.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/unbounded-operator.traps.rgb24.ref.png b/test/reference/unbounded-operator.traps.rgb24.ref.png deleted file mode 100644 index c8555af..0000000 Binary files a/test/reference/unbounded-operator.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/unclosed-strokes.base.argb32.ref.png b/test/reference/unclosed-strokes.base.argb32.ref.png deleted file mode 100644 index 34cedbd..0000000 Binary files a/test/reference/unclosed-strokes.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/unclosed-strokes.base.rgb24.ref.png b/test/reference/unclosed-strokes.base.rgb24.ref.png deleted file mode 100644 index 34cedbd..0000000 Binary files a/test/reference/unclosed-strokes.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/unclosed-strokes.ref.png b/test/reference/unclosed-strokes.ref.png deleted file mode 100644 index 7649c03..0000000 Binary files a/test/reference/unclosed-strokes.ref.png and /dev/null differ diff --git a/test/reference/unclosed-strokes.traps.argb32.ref.png b/test/reference/unclosed-strokes.traps.argb32.ref.png deleted file mode 100644 index 34cedbd..0000000 Binary files a/test/reference/unclosed-strokes.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/unclosed-strokes.traps.rgb24.ref.png b/test/reference/unclosed-strokes.traps.rgb24.ref.png deleted file mode 100644 index 34cedbd..0000000 Binary files a/test/reference/unclosed-strokes.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/user-font-mask.base.argb32.ref.png b/test/reference/user-font-mask.base.argb32.ref.png deleted file mode 100644 index 02a9a5e..0000000 Binary files a/test/reference/user-font-mask.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/user-font-mask.base.rgb24.ref.png b/test/reference/user-font-mask.base.rgb24.ref.png deleted file mode 100644 index 02a9a5e..0000000 Binary files a/test/reference/user-font-mask.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/user-font-mask.image16.ref.png b/test/reference/user-font-mask.image16.ref.png deleted file mode 100644 index 0a63dde..0000000 Binary files a/test/reference/user-font-mask.image16.ref.png and /dev/null differ diff --git a/test/reference/user-font-mask.pdf.ref.png b/test/reference/user-font-mask.pdf.ref.png deleted file mode 100644 index ebf1485..0000000 Binary files a/test/reference/user-font-mask.pdf.ref.png and /dev/null differ diff --git a/test/reference/user-font-mask.ps2.ref.png b/test/reference/user-font-mask.ps2.ref.png deleted file mode 100644 index ebf1485..0000000 Binary files a/test/reference/user-font-mask.ps2.ref.png and /dev/null differ diff --git a/test/reference/user-font-mask.ps3.ref.png b/test/reference/user-font-mask.ps3.ref.png deleted file mode 100644 index ebf1485..0000000 Binary files a/test/reference/user-font-mask.ps3.ref.png and /dev/null differ diff --git a/test/reference/user-font-mask.ref.png b/test/reference/user-font-mask.ref.png deleted file mode 100644 index 02a9a5e..0000000 Binary files a/test/reference/user-font-mask.ref.png and /dev/null differ diff --git a/test/reference/user-font-mask.svg.ref.png b/test/reference/user-font-mask.svg.ref.png deleted file mode 100644 index 1a8f2c8..0000000 Binary files a/test/reference/user-font-mask.svg.ref.png and /dev/null differ diff --git a/test/reference/user-font-proxy.base.argb32.ref.png b/test/reference/user-font-proxy.base.argb32.ref.png deleted file mode 100644 index 094938c..0000000 Binary files a/test/reference/user-font-proxy.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/user-font-proxy.base.rgb24.ref.png b/test/reference/user-font-proxy.base.rgb24.ref.png deleted file mode 100644 index 094938c..0000000 Binary files a/test/reference/user-font-proxy.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/user-font-proxy.image16.ref.png b/test/reference/user-font-proxy.image16.ref.png deleted file mode 100644 index 5b44351..0000000 Binary files a/test/reference/user-font-proxy.image16.ref.png and /dev/null differ diff --git a/test/reference/user-font-proxy.pdf.argb32.ref.png b/test/reference/user-font-proxy.pdf.argb32.ref.png deleted file mode 100644 index cffa9ed..0000000 Binary files a/test/reference/user-font-proxy.pdf.argb32.ref.png and /dev/null differ diff --git a/test/reference/user-font-proxy.pdf.ref.png b/test/reference/user-font-proxy.pdf.ref.png deleted file mode 100644 index afe7cb0..0000000 Binary files a/test/reference/user-font-proxy.pdf.ref.png and /dev/null differ diff --git a/test/reference/user-font-proxy.pdf.rgb24.ref.png b/test/reference/user-font-proxy.pdf.rgb24.ref.png deleted file mode 100644 index cffa9ed..0000000 Binary files a/test/reference/user-font-proxy.pdf.rgb24.ref.png and /dev/null differ diff --git a/test/reference/user-font-proxy.ps.ref.png b/test/reference/user-font-proxy.ps.ref.png deleted file mode 100644 index a7b348b..0000000 Binary files a/test/reference/user-font-proxy.ps.ref.png and /dev/null differ diff --git a/test/reference/user-font-proxy.quartz.ref.png b/test/reference/user-font-proxy.quartz.ref.png deleted file mode 100644 index 3bead3d..0000000 Binary files a/test/reference/user-font-proxy.quartz.ref.png and /dev/null differ diff --git a/test/reference/user-font-proxy.ref.png b/test/reference/user-font-proxy.ref.png deleted file mode 100644 index aa4f255..0000000 Binary files a/test/reference/user-font-proxy.ref.png and /dev/null differ diff --git a/test/reference/user-font-proxy.svg.ref.png b/test/reference/user-font-proxy.svg.ref.png deleted file mode 100644 index 6c45848..0000000 Binary files a/test/reference/user-font-proxy.svg.ref.png and /dev/null differ diff --git a/test/reference/user-font-proxy.traps.ref.png b/test/reference/user-font-proxy.traps.ref.png deleted file mode 100644 index 094938c..0000000 Binary files a/test/reference/user-font-proxy.traps.ref.png and /dev/null differ diff --git a/test/reference/user-font-rescale.base.argb32.ref.png b/test/reference/user-font-rescale.base.argb32.ref.png deleted file mode 100644 index 0939060..0000000 Binary files a/test/reference/user-font-rescale.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/user-font-rescale.base.rgb24.ref.png b/test/reference/user-font-rescale.base.rgb24.ref.png deleted file mode 100644 index 0939060..0000000 Binary files a/test/reference/user-font-rescale.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/user-font-rescale.image16.ref.png b/test/reference/user-font-rescale.image16.ref.png deleted file mode 100644 index a6be0d3..0000000 Binary files a/test/reference/user-font-rescale.image16.ref.png and /dev/null differ diff --git a/test/reference/user-font-rescale.ps.ref.png b/test/reference/user-font-rescale.ps.ref.png deleted file mode 100644 index 1ee4b13..0000000 Binary files a/test/reference/user-font-rescale.ps.ref.png and /dev/null differ diff --git a/test/reference/user-font-rescale.quartz.ref.png b/test/reference/user-font-rescale.quartz.ref.png deleted file mode 100644 index 5fa2984..0000000 Binary files a/test/reference/user-font-rescale.quartz.ref.png and /dev/null differ diff --git a/test/reference/user-font-rescale.ref.png b/test/reference/user-font-rescale.ref.png deleted file mode 100644 index 0939060..0000000 Binary files a/test/reference/user-font-rescale.ref.png and /dev/null differ diff --git a/test/reference/user-font-rescale.svg.ref.png b/test/reference/user-font-rescale.svg.ref.png deleted file mode 100644 index 6ed2a19..0000000 Binary files a/test/reference/user-font-rescale.svg.ref.png and /dev/null differ diff --git a/test/reference/user-font-rescale.traps.ref.png b/test/reference/user-font-rescale.traps.ref.png deleted file mode 100644 index 0939060..0000000 Binary files a/test/reference/user-font-rescale.traps.ref.png and /dev/null differ diff --git a/test/reference/user-font.base.argb32.ref.png b/test/reference/user-font.base.argb32.ref.png deleted file mode 100644 index 896dbab..0000000 Binary files a/test/reference/user-font.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/user-font.base.rgb24.ref.png b/test/reference/user-font.base.rgb24.ref.png deleted file mode 100644 index 896dbab..0000000 Binary files a/test/reference/user-font.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/user-font.image16.ref.png b/test/reference/user-font.image16.ref.png deleted file mode 100644 index fcdfb57..0000000 Binary files a/test/reference/user-font.image16.ref.png and /dev/null differ diff --git a/test/reference/user-font.mask.argb32.ref.png b/test/reference/user-font.mask.argb32.ref.png deleted file mode 100644 index b234a88..0000000 Binary files a/test/reference/user-font.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/user-font.mask.rgb24.ref.png b/test/reference/user-font.mask.rgb24.ref.png deleted file mode 100644 index b234a88..0000000 Binary files a/test/reference/user-font.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/user-font.pdf.ref.png b/test/reference/user-font.pdf.ref.png deleted file mode 100644 index de86407..0000000 Binary files a/test/reference/user-font.pdf.ref.png and /dev/null differ diff --git a/test/reference/user-font.ps.ref.png b/test/reference/user-font.ps.ref.png deleted file mode 100644 index 63f2896..0000000 Binary files a/test/reference/user-font.ps.ref.png and /dev/null differ diff --git a/test/reference/user-font.quartz.ref.png b/test/reference/user-font.quartz.ref.png deleted file mode 100644 index 8c0ec94..0000000 Binary files a/test/reference/user-font.quartz.ref.png and /dev/null differ diff --git a/test/reference/user-font.ref.png b/test/reference/user-font.ref.png deleted file mode 100644 index 4cff7e9..0000000 Binary files a/test/reference/user-font.ref.png and /dev/null differ diff --git a/test/reference/user-font.svg.ref.png b/test/reference/user-font.svg.ref.png deleted file mode 100644 index 1ff6ea0..0000000 Binary files a/test/reference/user-font.svg.ref.png and /dev/null differ diff --git a/test/reference/user-font.traps.argb32.ref.png b/test/reference/user-font.traps.argb32.ref.png deleted file mode 100644 index 896dbab..0000000 Binary files a/test/reference/user-font.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/user-font.traps.rgb24.ref.png b/test/reference/user-font.traps.rgb24.ref.png deleted file mode 100644 index 896dbab..0000000 Binary files a/test/reference/user-font.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/white-in-noop.base.argb32.ref.png b/test/reference/white-in-noop.base.argb32.ref.png deleted file mode 100644 index f42bb8d..0000000 Binary files a/test/reference/white-in-noop.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/white-in-noop.base.rgb24.ref.png b/test/reference/white-in-noop.base.rgb24.ref.png deleted file mode 100644 index f42bb8d..0000000 Binary files a/test/reference/white-in-noop.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/white-in-noop.ref.png b/test/reference/white-in-noop.ref.png deleted file mode 100644 index f42bb8d..0000000 Binary files a/test/reference/white-in-noop.ref.png and /dev/null differ diff --git a/test/reference/world-map-fill.base.argb32.ref.png b/test/reference/world-map-fill.base.argb32.ref.png deleted file mode 100644 index 926c1a8..0000000 Binary files a/test/reference/world-map-fill.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/world-map-fill.base.rgb24.ref.png b/test/reference/world-map-fill.base.rgb24.ref.png deleted file mode 100644 index 926c1a8..0000000 Binary files a/test/reference/world-map-fill.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/world-map-fill.image16.ref.png b/test/reference/world-map-fill.image16.ref.png deleted file mode 100644 index c97cb57..0000000 Binary files a/test/reference/world-map-fill.image16.ref.png and /dev/null differ diff --git a/test/reference/world-map-fill.ref.png b/test/reference/world-map-fill.ref.png deleted file mode 100644 index 23cec50..0000000 Binary files a/test/reference/world-map-fill.ref.png and /dev/null differ diff --git a/test/reference/world-map-fill.traps.argb32.ref.png b/test/reference/world-map-fill.traps.argb32.ref.png deleted file mode 100644 index 926c1a8..0000000 Binary files a/test/reference/world-map-fill.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/world-map-fill.traps.rgb24.ref.png b/test/reference/world-map-fill.traps.rgb24.ref.png deleted file mode 100644 index 926c1a8..0000000 Binary files a/test/reference/world-map-fill.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/world-map-stroke.base.argb32.ref.png b/test/reference/world-map-stroke.base.argb32.ref.png deleted file mode 100644 index d00c945..0000000 Binary files a/test/reference/world-map-stroke.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/world-map-stroke.base.rgb24.ref.png b/test/reference/world-map-stroke.base.rgb24.ref.png deleted file mode 100644 index d00c945..0000000 Binary files a/test/reference/world-map-stroke.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/world-map-stroke.image16.ref.png b/test/reference/world-map-stroke.image16.ref.png deleted file mode 100644 index 771ff0b..0000000 Binary files a/test/reference/world-map-stroke.image16.ref.png and /dev/null differ diff --git a/test/reference/world-map-stroke.mask.argb32.ref.png b/test/reference/world-map-stroke.mask.argb32.ref.png deleted file mode 100644 index ec0d502..0000000 Binary files a/test/reference/world-map-stroke.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/world-map-stroke.mask.rgb24.ref.png b/test/reference/world-map-stroke.mask.rgb24.ref.png deleted file mode 100644 index ec0d502..0000000 Binary files a/test/reference/world-map-stroke.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/world-map-stroke.ref.png b/test/reference/world-map-stroke.ref.png deleted file mode 100644 index 5c6e7d5..0000000 Binary files a/test/reference/world-map-stroke.ref.png and /dev/null differ diff --git a/test/reference/world-map-stroke.traps.argb32.ref.png b/test/reference/world-map-stroke.traps.argb32.ref.png deleted file mode 100644 index d00c945..0000000 Binary files a/test/reference/world-map-stroke.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/world-map-stroke.traps.rgb24.ref.png b/test/reference/world-map-stroke.traps.rgb24.ref.png deleted file mode 100644 index d00c945..0000000 Binary files a/test/reference/world-map-stroke.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/world-map.base.argb32.ref.png b/test/reference/world-map.base.argb32.ref.png deleted file mode 100644 index 6bae50d..0000000 Binary files a/test/reference/world-map.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/world-map.base.rgb24.ref.png b/test/reference/world-map.base.rgb24.ref.png deleted file mode 100644 index 6bae50d..0000000 Binary files a/test/reference/world-map.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/world-map.image16.ref.png b/test/reference/world-map.image16.ref.png deleted file mode 100644 index ea7ae8a..0000000 Binary files a/test/reference/world-map.image16.ref.png and /dev/null differ diff --git a/test/reference/world-map.mask.argb32.ref.png b/test/reference/world-map.mask.argb32.ref.png deleted file mode 100644 index 218a303..0000000 Binary files a/test/reference/world-map.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/world-map.mask.rgb24.ref.png b/test/reference/world-map.mask.rgb24.ref.png deleted file mode 100644 index 218a303..0000000 Binary files a/test/reference/world-map.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/world-map.ref.png b/test/reference/world-map.ref.png deleted file mode 100644 index 1274367..0000000 Binary files a/test/reference/world-map.ref.png and /dev/null differ diff --git a/test/reference/world-map.traps.argb32.ref.png b/test/reference/world-map.traps.argb32.ref.png deleted file mode 100644 index 6bae50d..0000000 Binary files a/test/reference/world-map.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/world-map.traps.rgb24.ref.png b/test/reference/world-map.traps.rgb24.ref.png deleted file mode 100644 index 6bae50d..0000000 Binary files a/test/reference/world-map.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/xcb-huge-image-shm.base.argb32.ref.png b/test/reference/xcb-huge-image-shm.base.argb32.ref.png deleted file mode 100644 index a0b24c8..0000000 Binary files a/test/reference/xcb-huge-image-shm.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/xcb-huge-image-shm.base.rgb24.ref.png b/test/reference/xcb-huge-image-shm.base.rgb24.ref.png deleted file mode 100644 index a0b24c8..0000000 Binary files a/test/reference/xcb-huge-image-shm.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/xcb-huge-image-shm.ref.png b/test/reference/xcb-huge-image-shm.ref.png deleted file mode 100644 index 5c274f8..0000000 Binary files a/test/reference/xcb-huge-image-shm.ref.png and /dev/null differ diff --git a/test/reference/xcb-huge-subimage.ref.png b/test/reference/xcb-huge-subimage.ref.png deleted file mode 100644 index 5c274f8..0000000 Binary files a/test/reference/xcb-huge-subimage.ref.png and /dev/null differ diff --git a/test/reference/xcb-snapshot-assert.base.argb32.ref.png b/test/reference/xcb-snapshot-assert.base.argb32.ref.png deleted file mode 100644 index 850ce59..0000000 Binary files a/test/reference/xcb-snapshot-assert.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/xcb-snapshot-assert.base.rgb24.ref.png b/test/reference/xcb-snapshot-assert.base.rgb24.ref.png deleted file mode 100644 index 850ce59..0000000 Binary files a/test/reference/xcb-snapshot-assert.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/xcb-snapshot-assert.ref.png b/test/reference/xcb-snapshot-assert.ref.png deleted file mode 100644 index 850ce59..0000000 Binary files a/test/reference/xcb-snapshot-assert.ref.png and /dev/null differ diff --git a/test/reference/xcb-stress-cache.base.argb32.ref.png b/test/reference/xcb-stress-cache.base.argb32.ref.png deleted file mode 100644 index 850ce59..0000000 Binary files a/test/reference/xcb-stress-cache.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/xcb-stress-cache.base.rgb24.ref.png b/test/reference/xcb-stress-cache.base.rgb24.ref.png deleted file mode 100644 index 850ce59..0000000 Binary files a/test/reference/xcb-stress-cache.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/xcb-stress-cache.ref.png b/test/reference/xcb-stress-cache.ref.png deleted file mode 100644 index 850ce59..0000000 Binary files a/test/reference/xcb-stress-cache.ref.png and /dev/null differ diff --git a/test/reference/xcb-surface-source.base.argb32.ref.png b/test/reference/xcb-surface-source.base.argb32.ref.png deleted file mode 100644 index 0182972..0000000 Binary files a/test/reference/xcb-surface-source.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/xcb-surface-source.base.rgb24.ref.png b/test/reference/xcb-surface-source.base.rgb24.ref.png deleted file mode 100644 index 0d68a82..0000000 Binary files a/test/reference/xcb-surface-source.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/xcb-surface-source.image16.ref.png b/test/reference/xcb-surface-source.image16.ref.png deleted file mode 100644 index 2a7460e..0000000 Binary files a/test/reference/xcb-surface-source.image16.ref.png and /dev/null differ diff --git a/test/reference/xcb-surface-source.ps.argb32.ref.png b/test/reference/xcb-surface-source.ps.argb32.ref.png deleted file mode 100644 index 910f895..0000000 Binary files a/test/reference/xcb-surface-source.ps.argb32.ref.png and /dev/null differ diff --git a/test/reference/xcb-surface-source.ps.rgb24.ref.png b/test/reference/xcb-surface-source.ps.rgb24.ref.png deleted file mode 100644 index 636b0f5..0000000 Binary files a/test/reference/xcb-surface-source.ps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/xcb-surface-source.ref.png b/test/reference/xcb-surface-source.ref.png deleted file mode 100644 index 0182972..0000000 Binary files a/test/reference/xcb-surface-source.ref.png and /dev/null differ diff --git a/test/reference/xcomposite-projection.base.argb32.ref.png b/test/reference/xcomposite-projection.base.argb32.ref.png deleted file mode 100644 index ea4dddf..0000000 Binary files a/test/reference/xcomposite-projection.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/xcomposite-projection.base.rgb24.ref.png b/test/reference/xcomposite-projection.base.rgb24.ref.png deleted file mode 100644 index ea4dddf..0000000 Binary files a/test/reference/xcomposite-projection.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/xcomposite-projection.image16.ref.png b/test/reference/xcomposite-projection.image16.ref.png deleted file mode 100644 index f9bc3b6..0000000 Binary files a/test/reference/xcomposite-projection.image16.ref.png and /dev/null differ diff --git a/test/reference/xcomposite-projection.mask.argb32.ref.png b/test/reference/xcomposite-projection.mask.argb32.ref.png deleted file mode 100644 index 9ccabda..0000000 Binary files a/test/reference/xcomposite-projection.mask.argb32.ref.png and /dev/null differ diff --git a/test/reference/xcomposite-projection.mask.rgb24.ref.png b/test/reference/xcomposite-projection.mask.rgb24.ref.png deleted file mode 100644 index 9ccabda..0000000 Binary files a/test/reference/xcomposite-projection.mask.rgb24.ref.png and /dev/null differ diff --git a/test/reference/xcomposite-projection.quartz.ref.png b/test/reference/xcomposite-projection.quartz.ref.png deleted file mode 100644 index 0221607..0000000 Binary files a/test/reference/xcomposite-projection.quartz.ref.png and /dev/null differ diff --git a/test/reference/xcomposite-projection.ref.png b/test/reference/xcomposite-projection.ref.png deleted file mode 100644 index abbea08..0000000 Binary files a/test/reference/xcomposite-projection.ref.png and /dev/null differ diff --git a/test/reference/xcomposite-projection.traps.argb32.ref.png b/test/reference/xcomposite-projection.traps.argb32.ref.png deleted file mode 100644 index ea4dddf..0000000 Binary files a/test/reference/xcomposite-projection.traps.argb32.ref.png and /dev/null differ diff --git a/test/reference/xcomposite-projection.traps.rgb24.ref.png b/test/reference/xcomposite-projection.traps.rgb24.ref.png deleted file mode 100644 index ea4dddf..0000000 Binary files a/test/reference/xcomposite-projection.traps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/xlib-expose-event.base.argb32.ref.png b/test/reference/xlib-expose-event.base.argb32.ref.png deleted file mode 100644 index fd71f5a..0000000 Binary files a/test/reference/xlib-expose-event.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/xlib-expose-event.base.rgb24.ref.png b/test/reference/xlib-expose-event.base.rgb24.ref.png deleted file mode 100644 index fd71f5a..0000000 Binary files a/test/reference/xlib-expose-event.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/xlib-expose-event.image16.ref.png b/test/reference/xlib-expose-event.image16.ref.png deleted file mode 100644 index 54d5f26..0000000 Binary files a/test/reference/xlib-expose-event.image16.ref.png and /dev/null differ diff --git a/test/reference/xlib-expose-event.ps.ref.png b/test/reference/xlib-expose-event.ps.ref.png deleted file mode 100644 index 88f49c1..0000000 Binary files a/test/reference/xlib-expose-event.ps.ref.png and /dev/null differ diff --git a/test/reference/xlib-expose-event.ref.png b/test/reference/xlib-expose-event.ref.png deleted file mode 100644 index 1cca0e7..0000000 Binary files a/test/reference/xlib-expose-event.ref.png and /dev/null differ diff --git a/test/reference/xlib-surface-source.base.argb32.ref.png b/test/reference/xlib-surface-source.base.argb32.ref.png deleted file mode 100644 index 0182972..0000000 Binary files a/test/reference/xlib-surface-source.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/xlib-surface-source.base.rgb24.ref.png b/test/reference/xlib-surface-source.base.rgb24.ref.png deleted file mode 100644 index 0d68a82..0000000 Binary files a/test/reference/xlib-surface-source.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/xlib-surface-source.image16.ref.png b/test/reference/xlib-surface-source.image16.ref.png deleted file mode 100644 index 2a7460e..0000000 Binary files a/test/reference/xlib-surface-source.image16.ref.png and /dev/null differ diff --git a/test/reference/xlib-surface-source.ps.argb32.ref.png b/test/reference/xlib-surface-source.ps.argb32.ref.png deleted file mode 100644 index 910f895..0000000 Binary files a/test/reference/xlib-surface-source.ps.argb32.ref.png and /dev/null differ diff --git a/test/reference/xlib-surface-source.ps.rgb24.ref.png b/test/reference/xlib-surface-source.ps.rgb24.ref.png deleted file mode 100644 index 636b0f5..0000000 Binary files a/test/reference/xlib-surface-source.ps.rgb24.ref.png and /dev/null differ diff --git a/test/reference/xlib-surface-source.ref.png b/test/reference/xlib-surface-source.ref.png deleted file mode 100644 index 0182972..0000000 Binary files a/test/reference/xlib-surface-source.ref.png and /dev/null differ diff --git a/test/reference/xlib-surface-source.svg12.argb32.xfail.png b/test/reference/xlib-surface-source.svg12.argb32.xfail.png deleted file mode 100644 index 6ebcaf9..0000000 Binary files a/test/reference/xlib-surface-source.svg12.argb32.xfail.png and /dev/null differ diff --git a/test/reference/xlib-surface-source.svg12.rgb24.xfail.png b/test/reference/xlib-surface-source.svg12.rgb24.xfail.png deleted file mode 100644 index 6ebcaf9..0000000 Binary files a/test/reference/xlib-surface-source.svg12.rgb24.xfail.png and /dev/null differ diff --git a/test/reference/zero-alpha.base.argb32.ref.png b/test/reference/zero-alpha.base.argb32.ref.png deleted file mode 100644 index 595c0ae..0000000 Binary files a/test/reference/zero-alpha.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/zero-alpha.base.rgb24.ref.png b/test/reference/zero-alpha.base.rgb24.ref.png deleted file mode 100644 index 595c0ae..0000000 Binary files a/test/reference/zero-alpha.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/zero-alpha.ref.png b/test/reference/zero-alpha.ref.png deleted file mode 100644 index d03727d..0000000 Binary files a/test/reference/zero-alpha.ref.png and /dev/null differ diff --git a/test/reference/zero-mask.base.argb32.ref.png b/test/reference/zero-mask.base.argb32.ref.png deleted file mode 100644 index ffae8d9..0000000 Binary files a/test/reference/zero-mask.base.argb32.ref.png and /dev/null differ diff --git a/test/reference/zero-mask.base.rgb24.ref.png b/test/reference/zero-mask.base.rgb24.ref.png deleted file mode 100644 index 263c3d1..0000000 Binary files a/test/reference/zero-mask.base.rgb24.ref.png and /dev/null differ diff --git a/test/reference/zero-mask.ref.png b/test/reference/zero-mask.ref.png deleted file mode 100644 index ffae8d9..0000000 Binary files a/test/reference/zero-mask.ref.png and /dev/null differ diff --git a/test/reflected-stroke.c b/test/reflected-stroke.c deleted file mode 100644 index 895396a..0000000 --- a/test/reflected-stroke.c +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright © 2008 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * the author not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. The author makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL THE AUTHOR. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -static void -draw_symbol (cairo_t *cr) -{ - double dash[] = {6, 3}; - - cairo_rectangle (cr, -25, -25, 50, 50); - cairo_stroke (cr); - - cairo_move_to (cr, 0, -25); - cairo_curve_to (cr, 12.5, -12.5, 12.5, -12.5, 0, 0); - cairo_curve_to (cr, -12.5, 12.5, -12.5, 12.5, 0, 25); - cairo_curve_to (cr, 12.5, 12.5, 12.5, 12.5, 0, 0); - cairo_stroke (cr); - - cairo_save (cr); - cairo_set_dash (cr, dash, ARRAY_LENGTH (dash), 0.); - cairo_move_to (cr, 0, 0); - cairo_arc (cr, 0, 0, 12.5, 0, 3 * M_PI / 2); - cairo_close_path (cr); - cairo_stroke (cr); - cairo_restore (cr); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - cairo_set_source_rgb (cr, 0, 0, 0); - - cairo_save (cr); - cairo_translate (cr, 50, 50); - cairo_scale (cr, 1, 1); - draw_symbol (cr); - cairo_restore (cr); - - cairo_save (cr); - cairo_translate (cr, 150, 50); - cairo_scale (cr, -1, 1); - draw_symbol (cr); - cairo_restore (cr); - - cairo_save (cr); - cairo_translate (cr, 150, 150); - cairo_scale (cr, -1, -1); - draw_symbol (cr); - cairo_restore (cr); - - cairo_save (cr); - cairo_translate (cr, 50, 150); - cairo_scale (cr, 1, -1); - draw_symbol (cr); - cairo_restore (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (reflected_stroke, - "Exercises the stroker with a reflected ctm", - "stroke, transform", /* keywords */ - NULL, /* requirements */ - 200, 200, - NULL, draw) diff --git a/test/rel-path.c b/test/rel-path.c deleted file mode 100644 index d1ef259..0000000 --- a/test/rel-path.c +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Copyright © 2005 Keith Packard - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Keith Packard not be used in - * advertising or publicity pertaining to distribution of the software without - * specific, written prior permission. Keith Packard makes no - * representations about the suitability of this software for any purpose. It - * is provided "as is" without express or implied warranty. - * - * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, - * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - */ - -#include "cairo-test.h" - -#define SIZE 10 - -static cairo_status_t -invalid_rel_move_to (cairo_surface_t *target) -{ - cairo_t *cr; - cairo_status_t status; - - cr = cairo_create (target); - cairo_rel_move_to (cr, SIZE, SIZE/2); - status = cairo_status (cr); - cairo_destroy (cr); - - return status; -} - -static cairo_status_t -invalid_rel_line_to (cairo_surface_t *target) -{ - cairo_t *cr; - cairo_status_t status; - - cr = cairo_create (target); - cairo_rel_line_to (cr, -SIZE, SIZE/2); - status = cairo_status (cr); - cairo_destroy (cr); - - return status; -} - -static cairo_status_t -invalid_rel_curve_to (cairo_surface_t *target) -{ - cairo_t *cr; - cairo_status_t status; - - cr = cairo_create (target); - cairo_rel_curve_to (cr, - SIZE/2, -SIZE/2, - SIZE*2/3, -SIZE/3, - SIZE/2, -SIZE); - status = cairo_status (cr); - cairo_destroy (cr); - - return status; -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - const cairo_test_context_t *ctx = cairo_test_get_context (cr); - cairo_status_t status; - cairo_test_status_t result; - - /* first test that a relative move without a current point fails... */ - status = invalid_rel_move_to (cairo_get_target (cr)); - if (status != CAIRO_STATUS_NO_CURRENT_POINT) { - result = cairo_test_status_from_status (ctx, status); - if (result == CAIRO_TEST_NO_MEMORY) - return result; - - cairo_test_log (ctx, "Error: invalid cairo_rel_move_to() did not raise NO_CURRENT_POINT\n"); - return result; - } - - status = invalid_rel_line_to (cairo_get_target (cr)); - if (status != CAIRO_STATUS_NO_CURRENT_POINT) { - result = cairo_test_status_from_status (ctx, status); - if (result == CAIRO_TEST_NO_MEMORY) - return result; - - cairo_test_log (ctx, "Error: invalid cairo_rel_line_to() did not raise NO_CURRENT_POINT\n"); - return result; - } - - status = invalid_rel_curve_to (cairo_get_target (cr)); - if (status != CAIRO_STATUS_NO_CURRENT_POINT) { - result = cairo_test_status_from_status (ctx, status); - if (result == CAIRO_TEST_NO_MEMORY) - return result; - - cairo_test_log (ctx, "Error: invalid cairo_rel_curve_to() did not raise NO_CURRENT_POINT\n"); - return result; - } - - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_move_to (cr, 0, 0); - cairo_rel_move_to (cr, SIZE, SIZE/2); - cairo_rel_line_to (cr, -SIZE, SIZE/2); - cairo_rel_curve_to (cr, - SIZE/2, -SIZE/2, - SIZE*2/3, -SIZE/3, - SIZE/2, -SIZE); - - cairo_stroke (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (rel_path, - "Tests calls to various relative path functions", - "path", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, draw) diff --git a/test/rgb24-ignore-alpha.c b/test/rgb24-ignore-alpha.c deleted file mode 100644 index 1c9d57e..0000000 --- a/test/rgb24-ignore-alpha.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright © 2007 Red Hat, Inc. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" - -#define WIDTH 2 -#define HEIGHT 2 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_t *surface; - /* Four green pixels with different "alpha" values, (but which - * should be entirely ignored). */ - uint32_t colors[4] = { - 0xff00ff00, 0x8800ff00, - 0x4400ff00, 0x0000ff00 - }; - - surface = cairo_image_surface_create_for_data ((unsigned char *) colors, - CAIRO_FORMAT_RGB24, 2, 2, 8); - - cairo_set_source_surface (cr, surface, 0, 0); - cairo_paint (cr); - - cairo_surface_finish (surface); /* colors will go out of scope */ - cairo_surface_destroy (surface); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (rgb24_ignore_alpha, - "Test that when using an RGB24 image as a source, there is no alpha channel", - "image, alpha", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/romedalen.jpg b/test/romedalen.jpg deleted file mode 100644 index d655e3d..0000000 Binary files a/test/romedalen.jpg and /dev/null differ diff --git a/test/romedalen.png b/test/romedalen.png deleted file mode 100644 index 0c41eb0..0000000 Binary files a/test/romedalen.png and /dev/null differ diff --git a/test/rotate-image-surface-paint.c b/test/rotate-image-surface-paint.c deleted file mode 100644 index 42fda6e..0000000 --- a/test/rotate-image-surface-paint.c +++ /dev/null @@ -1,172 +0,0 @@ -/* - * Copyright © 2005, 2007 Red Hat, Inc. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" - -#define SIZE 20 -#define PAD 2 - -static cairo_pattern_t * -create_image_source (int size) -{ - cairo_surface_t *surface; - cairo_pattern_t *pattern; - cairo_t *cr; - - /* Create an image surface with my favorite four colors in each - * quadrant. */ - surface = cairo_image_surface_create (CAIRO_FORMAT_RGB24, size, size); - cr = cairo_create (surface); - cairo_surface_destroy (surface); - - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_rectangle (cr, 0, 0, size / 2, size / 2); - cairo_fill (cr); - - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_rectangle (cr, size / 2, 0, size - size / 2, size / 2); - cairo_fill (cr); - - cairo_set_source_rgb (cr, 0, 1, 0); - cairo_rectangle (cr, 0, size / 2, size / 2, size - size / 2); - cairo_fill (cr); - - cairo_set_source_rgb (cr, 0, 0, 1); - cairo_rectangle (cr, size / 2, size / 2, size - size / 2, size - size / 2); - cairo_fill (cr); - - pattern = cairo_pattern_create_for_surface (cairo_get_target (cr)); - cairo_destroy (cr); - - return pattern; -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_pattern_t *source; - int surface_size = sqrt ((SIZE - 2*PAD)*(SIZE - 2*PAD)/2); - - /* Use a gray (neutral) background, so we can spot if the backend pads - * with any other colour. - */ - cairo_set_source_rgb (cr, .5, .5, .5); - cairo_paint (cr); - - cairo_translate(cr, SIZE/2, SIZE/2); - cairo_rotate (cr, M_PI / 4.0); - cairo_translate (cr, -surface_size/2, -surface_size/2); - - source = create_image_source (surface_size); - cairo_pattern_set_filter (source, CAIRO_FILTER_NEAREST); - cairo_set_source(cr, source); - cairo_pattern_destroy (source); - - cairo_paint (cr); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -clip_draw (cairo_t *cr, int width, int height) -{ - cairo_pattern_t *source; - int surface_size = sqrt ((SIZE - 2*PAD)*(SIZE - 2*PAD)/2); - - /* Use a gray (neutral) background, so we can spot if the backend pads - * with any other colour. - */ - cairo_set_source_rgb (cr, .5, .5, .5); - cairo_paint (cr); - - cairo_rectangle (cr, 2*PAD, 2*PAD, SIZE-4*PAD, SIZE-4*PAD); - cairo_clip (cr); - - cairo_translate(cr, SIZE/2, SIZE/2); - cairo_rotate (cr, M_PI / 4.0); - cairo_translate (cr, -surface_size/2, -surface_size/2); - - source = create_image_source (surface_size); - cairo_pattern_set_filter (source, CAIRO_FILTER_NEAREST); - cairo_set_source(cr, source); - cairo_pattern_destroy (source); - - cairo_paint (cr); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -draw_clip (cairo_t *cr, int width, int height) -{ - cairo_pattern_t *source; - int surface_size = sqrt ((SIZE - 2*PAD)*(SIZE - 2*PAD)/2); - - /* Use a gray (neutral) background, so we can spot if the backend pads - * with any other colour. - */ - cairo_set_source_rgb (cr, .5, .5, .5); - cairo_paint (cr); - - cairo_translate(cr, SIZE/2, SIZE/2); - cairo_rotate (cr, M_PI / 4.0); - cairo_translate (cr, -surface_size/2, -surface_size/2); - - cairo_rectangle (cr, PAD, PAD, surface_size-2*PAD, surface_size-2*PAD); - cairo_clip (cr); - - source = create_image_source (surface_size); - cairo_pattern_set_filter (source, CAIRO_FILTER_NEAREST); - cairo_set_source(cr, source); - cairo_pattern_destroy (source); - - cairo_paint (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (rotate_image_surface_paint, - "Test call sequence: image_surface_create; rotate; set_source_surface; paint" - "\nThis test is known to fail on the ps backend currently", - "image, transform, paint", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, draw) - -CAIRO_TEST (clip_rotate_image_surface_paint, - "Test call sequence: image_surface_create; rotate; set_source_surface; paint" - "\nThis test is known to fail on the ps backend currently", - "image, transform, paint", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, clip_draw) -CAIRO_TEST (rotate_clip_image_surface_paint, - "Test call sequence: image_surface_create; rotate; set_source_surface; paint" - "\nThis test is known to fail on the ps backend currently", - "image, transform, paint", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, draw_clip) diff --git a/test/rotate-stroke-box.c b/test/rotate-stroke-box.c deleted file mode 100644 index 862abc9..0000000 --- a/test/rotate-stroke-box.c +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright © 2013 Adrian Johnson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Adrian Johnson - */ - -#include "cairo-test.h" -#include - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_save (cr); - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - cairo_restore (cr); - - cairo_rectangle (cr, 5, 5, 20, 20); - cairo_rotate (cr, M_PI/4); - cairo_stroke (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (rotate_stroke_box, - "Ensure rectangle path optimization works when the stroking transform is non rectilinear", - "path", /* keywords */ - NULL, /* requirements */ - 30, 30, - NULL, draw) diff --git a/test/rotated-clip.c b/test/rotated-clip.c deleted file mode 100644 index 4ca4566..0000000 --- a/test/rotated-clip.c +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright © 2007 Adrian Johnson - * Copyright © 2009 Chris Wilson - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Adrian Johnson - * Chris Wilson - */ - -#include "cairo-test.h" - -#define PAT_WIDTH 120 -#define PAT_HEIGHT 120 -#define SIZE (PAT_WIDTH*2) -#define PAD 2 -#define WIDTH (PAD + SIZE + PAD) -#define HEIGHT WIDTH - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_matrix_t m; - - /* make the output opaque */ - cairo_set_source_rgb (cr, 0, 0, 0); - cairo_paint (cr); - - cairo_translate (cr, PAD, PAD); - - cairo_matrix_init_scale (&m, 2, 1.5); - cairo_matrix_rotate (&m, 1); - cairo_matrix_translate (&m, -PAT_WIDTH/4.0, -PAT_WIDTH/2.0); - cairo_matrix_invert (&m); - cairo_set_matrix (cr, &m); - - cairo_rectangle (cr, 0, 0, PAT_WIDTH, PAT_HEIGHT); - cairo_clip (cr); - - cairo_set_source_rgba (cr, 1, 0, 1, 0.5); - cairo_rectangle (cr, PAT_WIDTH/6.0, PAT_HEIGHT/6.0, PAT_WIDTH/4.0, PAT_HEIGHT/4.0); - cairo_fill (cr); - - cairo_set_source_rgba (cr, 0, 1, 1, 0.5); - cairo_rectangle (cr, PAT_WIDTH/2.0, PAT_HEIGHT/2.0, PAT_WIDTH/4.0, PAT_HEIGHT/4.0); - cairo_fill (cr); - - cairo_set_line_width (cr, 1); - cairo_move_to (cr, PAT_WIDTH/6.0, 0); - cairo_line_to (cr, 0, 0); - cairo_line_to (cr, 0, PAT_HEIGHT/6.0); - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_stroke (cr); - - cairo_move_to (cr, PAT_WIDTH/6.0, PAT_HEIGHT); - cairo_line_to (cr, 0, PAT_HEIGHT); - cairo_line_to (cr, 0, 5*PAT_HEIGHT/6.0); - cairo_set_source_rgb (cr, 0, 1, 0); - cairo_stroke (cr); - - cairo_move_to (cr, 5*PAT_WIDTH/6.0, 0); - cairo_line_to (cr, PAT_WIDTH, 0); - cairo_line_to (cr, PAT_WIDTH, PAT_HEIGHT/6.0); - cairo_set_source_rgb (cr, 0, 0, 1); - cairo_stroke (cr); - - cairo_move_to (cr, 5*PAT_WIDTH/6.0, PAT_HEIGHT); - cairo_line_to (cr, PAT_WIDTH, PAT_HEIGHT); - cairo_line_to (cr, PAT_WIDTH, 5*PAT_HEIGHT/6.0); - cairo_set_source_rgb (cr, 1, 1, 0); - cairo_stroke (cr); - - cairo_set_source_rgb (cr, 0.5, 0.5, 0.5); - cairo_set_line_width (cr, PAT_WIDTH/10.0); - - cairo_move_to (cr, 0, PAT_HEIGHT/4.0); - cairo_line_to (cr, PAT_WIDTH, PAT_HEIGHT/4.0); - cairo_stroke (cr); - - cairo_move_to (cr, PAT_WIDTH/4.0, 0); - cairo_line_to (cr, PAT_WIDTH/4.0, PAT_WIDTH); - cairo_stroke (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (rotated_clip, - "Test clipping with non identity pattern matrix", - "clip", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/rounded-rectangle-fill.c b/test/rounded-rectangle-fill.c deleted file mode 100644 index d211cf6..0000000 --- a/test/rounded-rectangle-fill.c +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright © 2009 Chris Wilson - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -#define SIZE 80 - -/* A very simple test to exercise the scan rasterisers with constant regions. */ - -static void -rounded_rectangle (cairo_t *cr, int x, int y, int w, int h, int r) -{ - cairo_new_sub_path (cr); - cairo_arc (cr, x + r, y + r, r, M_PI, 3 * M_PI / 2); - cairo_arc (cr, x + w - r, y + r, r, 3 *M_PI / 2, 2 * M_PI); - cairo_arc (cr, x + w - r, y + h - r, r, 0, M_PI / 2); - cairo_arc (cr, x + r, y + h - r, r, M_PI / 2, M_PI); - cairo_close_path (cr); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - /* Paint background white, then draw in black. */ - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); /* white */ - cairo_paint (cr); - cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); /* black */ - - cairo_set_fill_rule (cr, CAIRO_FILL_RULE_EVEN_ODD); - rounded_rectangle (cr, 5, 5, width-10, height-10, 15); - rounded_rectangle (cr, 15, 15, width-30, height-30, 5); - cairo_fill (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (rounded_rectangle_fill, - "Tests handling of rounded rectangles, the UI designers favourite", - "fill, rounded-rectangle", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, draw) diff --git a/test/rounded-rectangle-stroke.c b/test/rounded-rectangle-stroke.c deleted file mode 100644 index 22bc515..0000000 --- a/test/rounded-rectangle-stroke.c +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright © 2009 Chris Wilson - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -#define SIZE 80 - -/* A very simple test to exercise the scan rasterisers with constant regions. */ - -static void -rounded_rectangle (cairo_t *cr, int x, int y, int w, int h, int r) -{ - cairo_new_sub_path (cr); - cairo_arc (cr, x + r, y + r, r, M_PI, 3 * M_PI / 2); - cairo_arc (cr, x + w - r, y + r, r, 3 *M_PI / 2, 2 * M_PI); - cairo_arc (cr, x + w - r, y + h - r, r, 0, M_PI / 2); - cairo_arc (cr, x + r, y + h - r, r, M_PI / 2, M_PI); - cairo_close_path (cr); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - /* Paint background white, then draw in black. */ - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); /* white */ - cairo_paint (cr); - cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); /* black */ - - cairo_set_line_width (cr, 10); - rounded_rectangle (cr, 10, 10, width-20, height-20, 10); - cairo_stroke (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (rounded_rectangle_stroke, - "Tests handling of rounded rectangles, the UI designers favourite", - "stroke, rounded-rectangle", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, draw) diff --git a/test/run-cairo-test-suite.sh b/test/run-cairo-test-suite.sh deleted file mode 100755 index 567d2b1..0000000 --- a/test/run-cairo-test-suite.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/bash - -set -m - -if `which gnome-screensaver-command`; then - gnome-screensaver-command -i -n "cairo-test-suite" -r "Cairo needs to read back from the screen in order to test rendering to xlib" & - pid=$! - - restore_screensaver() { kill $pid; } -else - restore_screensaver() { :; } -fi - -trap cleanup SIGINT SIGTERM - -./cairo-test-suite "$*" - -restore_screensaver diff --git a/test/sample.c b/test/sample.c deleted file mode 100644 index caf6877..0000000 --- a/test/sample.c +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Copyright 2012 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -/* Test the fidelity of the rasterisation, because Cairo is my favourite - * driver test suite. - */ - -#define GENERATE_REFERENCE 0 - -#define WIDTH 256 -#define HEIGHT 40 - -#include "../src/cairo-fixed-type-private.h" -#define PRECISION (1 << CAIRO_FIXED_FRAC_BITS) - -static cairo_test_status_t -vertical (cairo_t *cr, int width, int height) -{ - int x; - - cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); - cairo_paint (cr); - - cairo_set_source_rgba (cr, 1, 1, 1, 1); - for (x = -HEIGHT*PRECISION-2; x <= (WIDTH+HEIGHT)*PRECISION+2; x += 4) { - cairo_move_to (cr, x / (double)PRECISION - 2, -2); - cairo_rel_line_to (cr, 0, HEIGHT + 4); - } - cairo_set_line_width (cr, 2 / (double)PRECISION); - cairo_stroke (cr); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -horizontal (cairo_t *cr, int width, int height) -{ - int x; - - cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); - cairo_paint (cr); - - cairo_set_source_rgba (cr, 1, 1, 1, 1); - for (x = -HEIGHT*PRECISION-2; x <= (WIDTH+HEIGHT)*PRECISION+2; x += 4) { - cairo_move_to (cr, -2, x / (double)PRECISION - 2); - cairo_rel_line_to (cr, HEIGHT + 4, 0); - } - cairo_set_line_width (cr, 2 / (double)PRECISION); - cairo_stroke (cr); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -diagonal (cairo_t *cr, int width, int height) -{ - int x; - - cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); - cairo_paint (cr); - - cairo_set_source_rgba (cr, 1, 1, 1, 1); - for (x = -HEIGHT*PRECISION-2; x <= (WIDTH+HEIGHT)*PRECISION+2; x += 6) { - cairo_move_to (cr, x / (double)PRECISION - 2, -2); - cairo_rel_line_to (cr, HEIGHT + 4, HEIGHT + 4); - } - cairo_set_line_width (cr, 2 / (double)PRECISION); - cairo_stroke (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (sample_vertical, - "Check the fidelity of the rasterisation.", - NULL, /* keywords */ - "target=raster slow", /* requirements */ - WIDTH, HEIGHT, - NULL, vertical) - -CAIRO_TEST (sample_horizontal, - "Check the fidelity of the rasterisation.", - NULL, /* keywords */ - "target=raster slow", /* requirements */ - WIDTH, HEIGHT, - NULL, horizontal) - -CAIRO_TEST (sample_diagonal, - "Check the fidelity of the rasterisation.", - NULL, /* keywords */ - "target=raster slow", /* requirements */ - WIDTH, HEIGHT, - NULL, diagonal) diff --git a/test/scale-down-source-surface-paint.c b/test/scale-down-source-surface-paint.c deleted file mode 100644 index 8cf0e06..0000000 --- a/test/scale-down-source-surface-paint.c +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright © 2005,2007 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_t *surface; - uint32_t data[16] = { - 0xffffffff, 0xffffffff, 0xffff0000, 0xffff0000, - 0xffffffff, 0xffffffff, 0xffff0000, 0xffff0000, - - 0xff00ff00, 0xff00ff00, 0xff0000ff, 0xff0000ff, - 0xff00ff00, 0xff00ff00, 0xff0000ff, 0xff0000ff - }; - - /* First paint opaque background (black) so we don't need separate - * ARGB32 and RGB24 reference images. */ - cairo_set_source_rgb (cr, 0, 0, 0); /* black */ - cairo_paint (cr); - - surface = cairo_image_surface_create_for_data ((unsigned char *) data, - CAIRO_FORMAT_RGB24, 4, 4, 16); - - cairo_scale (cr, 0.5, 0.5); - - cairo_set_source_surface (cr, surface, 4, 4); - cairo_pattern_set_filter (cairo_get_source (cr), CAIRO_FILTER_NEAREST); - cairo_paint (cr); - - cairo_surface_finish (surface); /* data will go out of scope */ - cairo_surface_destroy (surface); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (scale_down_source_surface_paint, - "Test call sequence: cairo_scale; cairo_set_source_surface; cairo_paint, with a scale < 1.0", - "paint, transform", /* keywords */ - NULL, /* requirements */ - 6, 6, - NULL, draw) diff --git a/test/scale-offset-image.c b/test/scale-offset-image.c deleted file mode 100644 index 7243a06..0000000 --- a/test/scale-offset-image.c +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Copyright 2008 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -/* - * Test case derived from the bug report by Michel Iwaniec: - * http://lists.cairographics.org/archives/cairo/2008-November/015660.html - */ - -#include "cairo-test.h" - -static cairo_surface_t * -create_source (cairo_surface_t *target, int width, int height) -{ - cairo_surface_t *similar; - cairo_t *cr; - - similar = cairo_image_surface_create (CAIRO_FORMAT_RGB24, - width, height); - cr = cairo_create (similar); - cairo_surface_destroy (similar); - - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_rectangle (cr, - width - 4, height - 4, - 2, 2); - cairo_fill (cr); - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_rectangle (cr, - width - 2, height - 4, - 2, 2); - cairo_fill (cr); - cairo_set_source_rgb (cr, 0, 1, 0); - cairo_rectangle (cr, - width - 4, height - 2, - 2, 2); - cairo_fill (cr); - cairo_set_source_rgb (cr, 0, 0, 1); - cairo_rectangle (cr, - width - 2, height - 2, - 2, 2); - cairo_fill (cr); - - similar = cairo_surface_reference (cairo_get_target (cr)); - cairo_destroy (cr); - - return similar; -} - -static void -draw_grid (cairo_t *cr, cairo_pattern_t *pattern, int dst_x, int dst_y) -{ - cairo_matrix_t m; - - cairo_save (cr); - cairo_translate (cr, dst_x, dst_y); - cairo_scale (cr, 16, 16); - cairo_rotate (cr, 1); - - cairo_matrix_init_translate (&m, 2560-4, 1280-4); - cairo_pattern_set_matrix (pattern, &m); - cairo_set_source (cr, pattern); - cairo_rectangle (cr, 0, 0, 4, 4); - cairo_fill (cr); - - cairo_set_source_rgb (cr, .7, .7, .7); - cairo_set_line_width (cr, 1./16); - cairo_move_to (cr, 0, 0); - cairo_line_to (cr, 4, 0); - cairo_move_to (cr, 0, 2); - cairo_line_to (cr, 4, 2); - cairo_move_to (cr, 0, 4); - cairo_line_to (cr, 4, 4); - cairo_move_to (cr, 0, 0); - cairo_line_to (cr, 0, 4); - cairo_move_to (cr, 2, 0); - cairo_line_to (cr, 2, 4); - cairo_move_to (cr, 4, 0); - cairo_line_to (cr, 4, 4); - cairo_stroke (cr); - - cairo_restore (cr); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_t *source; - cairo_pattern_t *pattern; - - cairo_paint (cr); - - source = create_source (cairo_get_target (cr), 2560, 1280); - pattern = cairo_pattern_create_for_surface (source); - cairo_surface_destroy (source); - - cairo_pattern_set_filter (pattern, CAIRO_FILTER_NEAREST); - cairo_pattern_set_extend (pattern, CAIRO_EXTEND_NONE); - - draw_grid (cr, pattern, 50, 0); - draw_grid (cr, pattern, 130, 0); - draw_grid (cr, pattern, 210, 0); - draw_grid (cr, pattern, 290, 0); - - draw_grid (cr, pattern, 50, 230); - draw_grid (cr, pattern, 130, 230); - draw_grid (cr, pattern, 210, 230); - draw_grid (cr, pattern, 290, 230); - - cairo_pattern_destroy (pattern); - - return CAIRO_TEST_SUCCESS; -} - -/* XFAIL: loss of precision converting a cairo matrix to */ -CAIRO_TEST (scale_offset_image, - "Tests drawing surfaces under various scales and transforms", - "surface, scale-offset", /* keywords */ - NULL, /* requirements */ - 320, 320, - NULL, draw) - diff --git a/test/scale-offset-similar.c b/test/scale-offset-similar.c deleted file mode 100644 index e9e6a2b..0000000 --- a/test/scale-offset-similar.c +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Copyright 2008 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -/* - * Test case derived from the bug report by Michel Iwaniec: - * http://lists.cairographics.org/archives/cairo/2008-November/015660.html - */ - -#include "cairo-test.h" - -static cairo_surface_t * -create_source (cairo_surface_t *target, int width, int height) -{ - cairo_surface_t *similar; - cairo_t *cr; - - similar = cairo_surface_create_similar (target, - CAIRO_CONTENT_COLOR, - width, height); - cr = cairo_create (similar); - cairo_surface_destroy (similar); - - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_rectangle (cr, - width - 4, height - 4, - 2, 2); - cairo_fill (cr); - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_rectangle (cr, - width - 2, height - 4, - 2, 2); - cairo_fill (cr); - cairo_set_source_rgb (cr, 0, 1, 0); - cairo_rectangle (cr, - width - 4, height - 2, - 2, 2); - cairo_fill (cr); - cairo_set_source_rgb (cr, 0, 0, 1); - cairo_rectangle (cr, - width - 2, height - 2, - 2, 2); - cairo_fill (cr); - - similar = cairo_surface_reference (cairo_get_target (cr)); - cairo_destroy (cr); - - return similar; -} - -static void -draw_grid (cairo_t *cr, cairo_pattern_t *pattern, int dst_x, int dst_y) -{ - cairo_matrix_t m; - - cairo_save (cr); - cairo_translate (cr, dst_x, dst_y); - cairo_scale (cr, 16, 16); - cairo_rotate (cr, 1); - - cairo_matrix_init_translate (&m, 2560-4, 1280-4); - cairo_pattern_set_matrix (pattern, &m); - cairo_set_source (cr, pattern); - cairo_rectangle (cr, 0, 0, 4, 4); - cairo_fill (cr); - - cairo_set_source_rgb (cr, .7, .7, .7); - cairo_set_line_width (cr, 1./16); - cairo_move_to (cr, 0, 0); - cairo_line_to (cr, 4, 0); - cairo_move_to (cr, 0, 2); - cairo_line_to (cr, 4, 2); - cairo_move_to (cr, 0, 4); - cairo_line_to (cr, 4, 4); - cairo_move_to (cr, 0, 0); - cairo_line_to (cr, 0, 4); - cairo_move_to (cr, 2, 0); - cairo_line_to (cr, 2, 4); - cairo_move_to (cr, 4, 0); - cairo_line_to (cr, 4, 4); - cairo_stroke (cr); - - cairo_restore (cr); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_t *source; - cairo_pattern_t *pattern; - - cairo_paint (cr); - - source = create_source (cairo_get_target (cr), 2560, 1280); - pattern = cairo_pattern_create_for_surface (source); - cairo_surface_destroy (source); - - cairo_pattern_set_filter (pattern, CAIRO_FILTER_NEAREST); - cairo_pattern_set_extend (pattern, CAIRO_EXTEND_NONE); - - draw_grid (cr, pattern, 50, 0); - draw_grid (cr, pattern, 130, 0); - draw_grid (cr, pattern, 210, 0); - draw_grid (cr, pattern, 290, 0); - - draw_grid (cr, pattern, 50, 230); - draw_grid (cr, pattern, 130, 230); - draw_grid (cr, pattern, 210, 230); - draw_grid (cr, pattern, 290, 230); - - cairo_pattern_destroy (pattern); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (scale_offset_similar, - "Tests drawing surfaces under various scales and transforms", - "surface, scale-offset", /* keywords */ - NULL, /* requirements */ - 320, 320, - NULL, draw) - diff --git a/test/scale-source-surface-paint.c b/test/scale-source-surface-paint.c deleted file mode 100644 index 0c0a3ac..0000000 --- a/test/scale-source-surface-paint.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_t *surface; - uint32_t data[16] = { - 0xffffffff, 0xffffffff, 0xffff0000, 0xffff0000, - 0xffffffff, 0xffffffff, 0xffff0000, 0xffff0000, - - 0xff00ff00, 0xff00ff00, 0xff0000ff, 0xff0000ff, - 0xff00ff00, 0xff00ff00, 0xff0000ff, 0xff0000ff - }; - - surface = cairo_image_surface_create_for_data ((unsigned char *) data, - CAIRO_FORMAT_RGB24, 4, 4, 16); - - cairo_scale (cr, 2, 2); - - cairo_set_source_surface (cr, surface, 1 , 1); - cairo_pattern_set_filter (cairo_get_source (cr), CAIRO_FILTER_NEAREST); - cairo_paint (cr); - - cairo_surface_finish (surface); /* data will go out of scope */ - cairo_surface_destroy (surface); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (scale_source_surface_paint, - "Test call sequence: cairo_scale; cairo_set_source_surface; cairo_paint", - "paint, transform", /* keywords */ - NULL, /* requirements */ - 12, 12, - NULL, draw) diff --git a/test/scaled-font-zero-matrix.c b/test/scaled-font-zero-matrix.c deleted file mode 100644 index d4f79a6..0000000 --- a/test/scaled-font-zero-matrix.c +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright © 2008 Mozilla Corporation - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Mozilla Corporation not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Mozilla Corporation makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * MOZILLA CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL MOZILLA CORPORATION BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Authors: Jeff Muizelaar - */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_font_face_t *font_face; - cairo_font_options_t *font_options; - cairo_scaled_font_t *scaled_font; - cairo_matrix_t identity; - cairo_matrix_t zero; - - cairo_matrix_init_identity(&identity); - - zero = identity; - cairo_matrix_scale(&zero, 0, 0); - - font_face = cairo_get_font_face (cr); - font_options = cairo_font_options_create (); - cairo_get_font_options (cr, font_options); - scaled_font = cairo_scaled_font_create (font_face, - &identity, - &zero, - font_options); - cairo_set_scaled_font (cr, scaled_font); - cairo_show_text (cr, "Hello"); - cairo_scaled_font_destroy (scaled_font); - cairo_font_options_destroy (font_options); - - return cairo_test_status_from_status (cairo_test_get_context (cr), - cairo_status(cr)); -} - -CAIRO_TEST (scaled_font_zero_matrix, - "Test that scaled fonts with a degenerate matrix work", - "zero, matrix, degenerate, scaled-font", /* keywords */ - NULL, /* requirements */ - 0, 0, - NULL, draw) diff --git a/test/scarab.jpg b/test/scarab.jpg deleted file mode 100644 index 6a66ff7..0000000 Binary files a/test/scarab.jpg and /dev/null differ diff --git a/test/select-font-face.c b/test/select-font-face.c deleted file mode 100644 index ec4b27c..0000000 --- a/test/select-font-face.c +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright © 2006 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" - -#define TEXT_SIZE 12 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - /* We draw in the default black, so paint white first. */ - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); /* white */ - cairo_paint (cr); - - cairo_set_source_rgb (cr, 0, 0, 0); /* black */ - - cairo_set_font_size (cr, TEXT_SIZE); - cairo_move_to (cr, 0, TEXT_SIZE); - - cairo_select_font_face (cr, CAIRO_TEST_FONT_FAMILY " Serif", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - cairo_show_text (cr, "i-am-serif"); - - cairo_select_font_face (cr, CAIRO_TEST_FONT_FAMILY " Sans", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - cairo_show_text (cr, " i-am-sans"); - - cairo_select_font_face (cr, CAIRO_TEST_FONT_FAMILY " Sans Mono", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - cairo_show_text (cr, " i-am-mono"); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (select_font_face, - "Tests using cairo_select_font_face to draw text in different faces", - "font", /* keywords */ - NULL, /* requirements */ - 192, TEXT_SIZE + 4, - NULL, draw) diff --git a/test/select-font-no-show-text.c b/test/select-font-no-show-text.c deleted file mode 100644 index b2b4796..0000000 --- a/test/select-font-no-show-text.c +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl Worth - */ - -/* Bug history - * - * 2005-04-12 Carl Worth - * - * I noticed that if we call cairo_select_font_face, but then do a - * cairo_destroy before ever drawing any text, then we get: - * - * *** glibc detected *** double free or corruption (fasttop): 0x083274d0 *** - * Aborted - * - * 2005-04-14 Owen Taylor - * - * Fixed... just a stray free(). - */ - -#include "cairo-test.h" -#include - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_select_font_face (cr, CAIRO_TEST_FONT_FAMILY " Sans", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_BOLD); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (select_font_no_show_text, - "Test calling cairo_select_font_face but never drawing text.", - "font", /* keywords */ - NULL, /* requirements */ - 0, 0, - NULL, draw) diff --git a/test/self-copy-overlap.c b/test/self-copy-overlap.c deleted file mode 100644 index 6e3b39c..0000000 --- a/test/self-copy-overlap.c +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright 2008 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -/* Question: are patterns mutable? The answer depends on who you ask... */ - -#include "cairo-test.h" - -/* This test is only interesting if the target has alpha */ -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_set_source_rgba (cr, 0, 0, 0, .01); - cairo_paint (cr); - - cairo_set_source_surface (cr, cairo_get_target (cr), 1, 1); - cairo_paint (cr); - - return CAIRO_TEST_SUCCESS; -} - -/* - * XFAIL: vector surfaces take snapshot of patterns in contrast to the raster - * backends which don't. One solution would be to clone overlapping areas of - * dst/source, so patterns were effectively snapshotted across all backends. - */ -CAIRO_TEST (self_copy_overlap, - "Tests painting to itself using itself as the source" - "\nBackends treat this case inconsistently---vector backends are creating snapshots.", - "self-copy", /* keywords */ - NULL, /* requirements */ - 200, 200, - NULL, draw) diff --git a/test/self-copy.c b/test/self-copy.c deleted file mode 100644 index bef02e9..0000000 --- a/test/self-copy.c +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Owen Taylor - */ - -#include "cairo-test.h" -#include -#include - -#define SIZE 40 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_pattern_t *pattern; - cairo_matrix_t matrix; - - /* Paint a diagonal division as a test image */ - cairo_set_source_rgb (cr, 1, 1, 1); /* White */ - cairo_paint (cr); - - cairo_move_to (cr, SIZE, 0); - cairo_line_to (cr, SIZE, SIZE); - cairo_line_to (cr, 0, SIZE); - - cairo_set_source_rgb (cr, 0, 0, 0); - cairo_fill (cr); - - /* Create a pattern with the target surface as the source, - * offset by SIZE/2 - */ - pattern = cairo_pattern_create_for_surface (cairo_get_group_target (cr)); - - cairo_matrix_init_translate (&matrix, - SIZE / 2, - SIZE / 2); - cairo_pattern_set_matrix (pattern, &matrix); - - cairo_set_source (cr, pattern); - cairo_pattern_destroy (pattern); - - /* Copy two rectangles from the upper-left quarter of the image to - * the lower right. It will work if we use cairo_fill(), but the - * cairo_clip() cairo_paint() combination fails because the clip - * on the surface as a destination affects it as the source as - * well. - */ - cairo_rectangle (cr, - 2 * SIZE / 4, 2 * SIZE / 4, - SIZE / 4, SIZE / 4); - cairo_rectangle (cr, - 3 * SIZE / 4, 3 * SIZE / 4, - SIZE / 4, SIZE / 4); - cairo_clip (cr); - cairo_paint (cr); - - return CAIRO_TEST_SUCCESS; - -} - -CAIRO_TEST (self_copy, - "Test copying from a surface to itself with a clip", - "paint", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, draw) diff --git a/test/self-intersecting.c b/test/self-intersecting.c deleted file mode 100644 index 8053235..0000000 --- a/test/self-intersecting.c +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - */ - -/* Bug history - * - * 2005-06-01 Carl Worth - * - * There's a long-standing bug in that self-intersecting paths give - * an incorrect result when stroked. The problem is that the - * trapezoids are generated incrementally along the stroke and as - * such, are not disjoint. The errant intersections of these - * trapezoids then leads to overfilled pixels. - * - * The test belows first creates and fills a path. Then it creates a - * second path which has a stroked boundary identical to the first - * filled path. But the results of the two operations are - * different. The most obvious difference is in the central region - * where the entire path intersects itself. But notice that every - * time the path turns there are also errors on the inside of the - * turn, (since the subsequent trapezoids along the path intersect). - */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - cairo_translate (cr, 1.0, 1.0); - - cairo_set_source_rgb (cr, 1, 0, 0); /* red */ - - /* First draw the desired shape with a fill */ - cairo_rectangle (cr, 0.5, 0.5, 4.0, 4.0); - cairo_rectangle (cr, 3.5, 3.5, 4.0, 4.0); - cairo_rectangle (cr, 3.5, 1.5, -2.0, 2.0); - cairo_rectangle (cr, 6.5, 4.5, -2.0, 2.0); - - cairo_fill (cr); - - /* Then try the same thing with a stroke */ - cairo_translate (cr, 0, 10); - cairo_move_to (cr, 1.0, 1.0); - cairo_rel_line_to (cr, 3.0, 0.0); - cairo_rel_line_to (cr, 0.0, 6.0); - cairo_rel_line_to (cr, 3.0, 0.0); - cairo_rel_line_to (cr, 0.0, -3.0); - cairo_rel_line_to (cr, -6.0, 0.0); - cairo_close_path (cr); - - cairo_set_line_width (cr, 1.0); - cairo_stroke (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (self_intersecting, - "Test strokes of self-intersecting paths" - "\nSelf-intersecting strokes are wrong due to incremental trapezoidization.", - "stroke, trap", /* keywords */ - NULL, /* requirements */ - 10, 20, - NULL, draw) diff --git a/test/set-source.c b/test/set-source.c deleted file mode 100644 index 7e54626..0000000 --- a/test/set-source.c +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - int i; - uint32_t color = 0x8019334c; - cairo_surface_t *surface; - cairo_pattern_t *pattern; - - surface = cairo_image_surface_create_for_data ((unsigned char *) &color, - CAIRO_FORMAT_ARGB32, 1, 1, 4); - pattern = cairo_pattern_create_for_surface (surface); - cairo_pattern_set_extend (pattern, CAIRO_EXTEND_REPEAT); - - /* Several different means of making mostly the same color (though - * we can't get anything but alpha==1.0 out of - * cairo_set_source_rgb. */ - for (i=0; i < width; i++) { - switch (i) { - case 0: - cairo_set_source_rgb (cr, .6, .7, .8); - break; - case 1: - cairo_set_source_rgba (cr, .2, .4, .6, 0.5); - break; - case 2: -#if WE_HAD_SUPPORT_FOR_PREMULTIPLIED - cairo_set_source_rgba_premultiplied (cr, .1, .2, .3, 0.5); -#else - cairo_set_source_rgba (cr, .2, .4, .6, 0.5); -#endif - break; - case 3: - default: - cairo_set_source (cr, pattern); - break; - } - - cairo_rectangle (cr, i, 0, 1, height); - cairo_fill (cr); - } - - cairo_pattern_destroy (pattern); - cairo_surface_finish (surface); /* data will go out of scope */ - cairo_surface_destroy (surface); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (set_source, - "Tests calls to various set_source functions", - "api", /* keywords */ - NULL, /* requirements */ - 5, 5, - NULL, draw) diff --git a/test/shape-general-convex.c b/test/shape-general-convex.c deleted file mode 100644 index b9241bb..0000000 --- a/test/shape-general-convex.c +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright © 2011 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Chris Wilson - */ - -/* A general convex shape with a twist. */ - -#include "cairo-test.h" - -#define SIZE (100) -#define PAD 4 - -static void -limacon (cairo_t *cr, double a, double b, double radius) -{ - int i; - - cairo_save (cr); - cairo_translate (cr, PAD, 0); - for (i = 0; i < 360; i++) { - double theta = i * M_PI / 180; - double r = b + a * cos (theta); - double x = radius * r * cos (theta); - double y = radius * r * sin (theta); - cairo_line_to (cr, x, y); - } - cairo_close_path (cr); - cairo_restore (cr); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - cairo_save (cr); - cairo_translate (cr, 2*PAD, PAD); - - cairo_translate (cr, SIZE/2, SIZE/2); - limacon (cr, 1, .5, SIZE/3); /* trivia, this is a trisectrix */ - - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_fill_preserve (cr); - - cairo_set_source_rgb (cr, 0, 0, 0); - cairo_stroke (cr); - - cairo_scale (cr, -1, 1); - - limacon (cr, 1, .5, SIZE/3); /* trivia, this is a trisectrix */ - - cairo_set_source_rgb (cr, 0, 0, 1); - cairo_fill_preserve (cr); - - cairo_set_source_rgb (cr, 0, 0, 0); - cairo_stroke (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (shape_general_convex, - "A general shape that is not as convex as it first appears", - "fill,stroke", /* keywords */ - NULL, /* requirements */ - SIZE+4*PAD, SIZE+4*PAD, - NULL, draw) diff --git a/test/shape-sierpinski.c b/test/shape-sierpinski.c deleted file mode 100644 index 9d20170..0000000 --- a/test/shape-sierpinski.c +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright © 2011 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Chris Wilson - */ - -/* I thought I spied a bug... */ - -#include "cairo-test.h" - -#define WIDTH (1024) -#define HEIGHT (600) - -static const double m_1_sqrt_3 = 0.577359269; - -static void -T (cairo_t *cr, int size) -{ - cairo_move_to (cr, 0, 0); - cairo_line_to (cr, size, 0); - cairo_line_to (cr, size/2, size*m_1_sqrt_3); - - size /= 2; - if (size >= 4) { - T (cr, size); - cairo_save (cr); { - cairo_translate (cr, size, 0); - T (cr, size); - } cairo_restore (cr); - cairo_save (cr); { - cairo_translate (cr, size/2, size*m_1_sqrt_3); - T (cr, size); - } cairo_restore (cr); - } -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - cairo_translate (cr, 0, 8); - - cairo_set_source_rgb (cr, 0, 0, 0); - cairo_set_line_width (cr, 1.); - - T (cr, WIDTH); - - cairo_translate (cr, 0, 2*HEIGHT-16); - cairo_scale (cr, 1, -1); - - T (cr, WIDTH); - - cairo_stroke (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (shape_sierpinski, - "A fractal triangle", - "stroke", /* keywords */ - NULL, /* requirements */ - WIDTH, 2*HEIGHT, - NULL, draw) diff --git a/test/show-glyphs-advance.c b/test/show-glyphs-advance.c deleted file mode 100644 index 5fe9ec8..0000000 --- a/test/show-glyphs-advance.c +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Copyright © 2006 Red Hat, Inc. - * Copyright © 2011 Andrea Canciani - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Carl D. Worth - * Andrea Canciani - */ - -#include "cairo-test.h" - -static cairo_test_status_t -get_glyph (const cairo_test_context_t *ctx, - cairo_scaled_font_t *scaled_font, - const char *utf8, - cairo_glyph_t *glyph) -{ - cairo_glyph_t *text_to_glyphs; - cairo_status_t status; - int i; - - text_to_glyphs = glyph; - i = 1; - status = cairo_scaled_font_text_to_glyphs (scaled_font, - 0, 0, - utf8, -1, - &text_to_glyphs, &i, - NULL, NULL, - 0); - if (status != CAIRO_STATUS_SUCCESS) - return cairo_test_status_from_status (ctx, status); - - if (text_to_glyphs != glyph) { - *glyph = text_to_glyphs[0]; - cairo_glyph_free (text_to_glyphs); - } - - return CAIRO_TEST_SUCCESS; -} - -static const char *characters[] = { "A", "B", "C", "D" }; - -#define NUM_CHARS ARRAY_LENGTH (characters) - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - const cairo_test_context_t *ctx = cairo_test_get_context (cr); - cairo_scaled_font_t *scaled_font; - cairo_glyph_t *glyphs = xmalloc (NUM_CHARS * sizeof (cairo_glyph_t)); - int i; - cairo_status_t status; - - /* Paint white background. */ - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - scaled_font = cairo_get_scaled_font (cr); - - for (i = 0; i < NUM_CHARS; i++) { - status = get_glyph (ctx, scaled_font, characters[i], &glyphs[i]); - if (status) - goto BAIL; - - glyphs[i].x = 10.0 + 10.0 * (i % 2); - glyphs[i].y = 20.0 + 10.0 * (i / 2); - } - - cairo_set_source_rgb (cr, 0, 0, 0); - cairo_show_glyphs (cr, glyphs, 4); - - cairo_translate (cr, 40., 20.); - cairo_rotate (cr, M_PI / 4.); - - cairo_show_glyphs (cr, glyphs, NUM_CHARS); - - BAIL: - free(glyphs); - - return status; -} - -CAIRO_TEST (show_glyphs_advance, - "Test that glyph advances work as expected along both axes", - "text, matrix", /* keywords */ - NULL, /* requirements */ - 64, 64, - NULL, draw) diff --git a/test/show-glyphs-many.c b/test/show-glyphs-many.c deleted file mode 100644 index f689fe0..0000000 --- a/test/show-glyphs-many.c +++ /dev/null @@ -1,176 +0,0 @@ -/* - * Copyright © 2006 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" - -#include - -/* Bug history - * - * 2006-01-07 Jon Hellan - * - * Jon opened the following bug report: - * - * _XError from XRenderCompositeText8 - * https://bugs.freedesktop.org/show_bug.cgi?id=5528 - * - * 2006-03-02 Carl Worth - * - * I wrote this test case to demonstrate the bug. - * - * Approach: - * - * Draw 65535 glyphs white-on-white all on top of each other. - * - * Rationale: - * - * The number 65535 comes from the original bug report. - * - * I would use cairo_show_text with a long string of 'x's say, - * but then the surface would need to be enormous to contain - * them. A smaller surface could be used, but I fear that at some - * point the off-surface glyph drawing would be optimized away - * and not exercise the bug. - * - * So, to keep the surface size under control, I use - * cairo_show_glyphs which allows me to place the glyphs all on - * top of each other. But, since cairo doesn't provide any - * character-to-glyphs mapping, I can't get a reliable glyph - * index (for character 'x' for example). So I just "guess" a - * glyph index and use white-on-white drawing to ignore the - * result. (I don't care what's drawn---I just want to ensure - * that things don't crash.) - * - * Status: I replicated bug. The largest value of NUM_GLYPHS for - * which I saw success is 21842. - * - * 2008-30-08 Chris Wilson - * This is also a valid test case for: - * - * Bug 5913 crash on overlong string - * https://bugs.freedesktop.org/show_bug.cgi?id=5913 - * - * which is still causing a crash in the Xlib backend - presumably, just - * a miscalculation of the length of the available request. - */ - -#define TEXT_SIZE 12 -#define NUM_GLYPHS 65535 - -static cairo_test_status_t -get_glyph (const cairo_test_context_t *ctx, - cairo_scaled_font_t *scaled_font, - const char *utf8, - cairo_glyph_t *glyph) -{ - cairo_glyph_t *text_to_glyphs; - cairo_status_t status; - int i; - - text_to_glyphs = glyph; - i = 1; - status = cairo_scaled_font_text_to_glyphs (scaled_font, - 0, 0, - utf8, -1, - &text_to_glyphs, &i, - NULL, NULL, - 0); - if (status != CAIRO_STATUS_SUCCESS) - return cairo_test_status_from_status (ctx, status); - - if (text_to_glyphs != glyph) { - *glyph = text_to_glyphs[0]; - cairo_glyph_free (text_to_glyphs); - } - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - const cairo_test_context_t *ctx = cairo_test_get_context (cr); - cairo_glyph_t *glyphs = xmalloc (NUM_GLYPHS * sizeof (cairo_glyph_t)); - cairo_scaled_font_t *scaled_font; - const char *characters[] = { /* try to exercise different widths of index */ - "m", /* Latin letter m, index=0x50 */ - "μ", /* Greek letter mu, index=0x349 */ - NULL, - }, **utf8; - int i, j; - cairo_status_t status; - - /* Paint white background. */ - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - cairo_select_font_face (cr, "Sans", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - cairo_set_font_size (cr, TEXT_SIZE); - scaled_font = cairo_get_scaled_font (cr); - - for (utf8 = characters; *utf8 != NULL; utf8++) { - status = get_glyph (ctx, scaled_font, *utf8, &glyphs[0]); - if (status) - goto BAIL; - - if (glyphs[0].index) { - glyphs[0].x = 1.0; - glyphs[0].y = height - 1; - for (i=1; i < NUM_GLYPHS; i++) - glyphs[i] = glyphs[0]; - - cairo_show_glyphs (cr, glyphs, NUM_GLYPHS); - } - } - - /* we can pack ~21k 1-byte glyphs into a single XRenderCompositeGlyphs8 */ - status = get_glyph (ctx, scaled_font, "m", &glyphs[0]); - if (status) - goto BAIL; - for (i=1; i < 21500; i++) - glyphs[i] = glyphs[0]; - /* so check expanding the current 1-byte request for 2-byte glyphs */ - status = get_glyph (ctx, scaled_font, "μ", &glyphs[i]); - if (status) - goto BAIL; - for (j=i+1; j < NUM_GLYPHS; j++) - glyphs[j] = glyphs[i]; - - cairo_show_glyphs (cr, glyphs, NUM_GLYPHS); - - BAIL: - free(glyphs); - - return status; -} - -CAIRO_TEST (show_glyphs_many, - "Test that cairo_show_glyphs works when handed 'many' glyphs", - "text, stress", /* keywords */ - NULL, /* requirements */ - 9, 11, - NULL, draw) diff --git a/test/show-text-current-point.c b/test/show-text-current-point.c deleted file mode 100644 index 2fe32a8..0000000 --- a/test/show-text-current-point.c +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" - -#define TEXT_SIZE 12 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - /* We draw in the default black, so paint white first. */ - cairo_save (cr); - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); /* white */ - cairo_paint (cr); - cairo_restore (cr); - - cairo_select_font_face (cr, CAIRO_TEST_FONT_FAMILY " Sans", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - cairo_set_font_size (cr, TEXT_SIZE); - - cairo_set_source_rgb (cr, 0, 0, 0); /* black */ - - cairo_move_to (cr, 0, TEXT_SIZE); - cairo_show_text (cr, "Hello from the "); - cairo_show_text (cr, "show-text-current-point"); - cairo_show_text (cr, " test."); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (show_text_current_point, - "Test that cairo_show_text adjusts the current point properly", - "text, api", /* keywords */ - NULL, /* requirements */ - 263, TEXT_SIZE + 4, - NULL, draw) diff --git a/test/simple.c b/test/simple.c deleted file mode 100644 index 7ec8a9a..0000000 --- a/test/simple.c +++ /dev/null @@ -1,347 +0,0 @@ -/* - * Copyright 2014 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -/* Test the fidelity of the rasterisation, because Cairo is my favourite - * driver test suite. - */ - -#define GENERATE_REFERENCE 0 - -#include "../src/cairo-fixed-type-private.h" - -#if GENERATE_REFERENCE -#include -struct coverage { - int width, height; - struct { - int uncovered_area; - int covered_height; - } cells[0]; -}; - -static int pfloor (int v) -{ - return v >> CAIRO_FIXED_FRAC_BITS; -} - -static int pfrac (int v) -{ - return v & ((1 << CAIRO_FIXED_FRAC_BITS) - 1); -} - -static void add_edge (struct coverage *coverage, - int x1, int y1, int x2, int y2, - int sign) -{ - int dx, dy; - int dxdy_quo, dxdy_rem; - int xq, xr; - int y, t; - - if (y2 < y1) { - t = y1; - y1 = y2; - y2 = t; - - t = x1; - x1 = x2; - x2 = t; - - sign = -sign; - } - - dx = x2 - x1; - dy = y2 - y1; - if (dy == 0) - return; - - dy *= 2; - - dxdy_quo = 2*dx / dy; - dxdy_rem = 2*dx % dy; - - xq = x1 + dxdy_quo / 2; - xr = dxdy_rem / 2; - if (xr < 0) { - xq--; - xr += dy; - } - - for (y = MAX(0, y1); y < MIN(y2, 256*coverage->height); y++) { - int x = xq + (xr >= dy/2); - - if (x < 256*coverage->width) { - int i = pfloor (y) * coverage->width; - if (x > 0) { - i += pfloor (x); - coverage->cells[i].uncovered_area += sign * pfrac(x); - } - coverage->cells[i].covered_height += sign; - } - - xq += dxdy_quo; - xr += dxdy_rem; - if (xr < 0) { - xq--; - xr += dy; - } else if (xr >= dy) { - xq++; - xr -= dy; - } - } -} - -static struct coverage * -coverage_create (int width, int height) -{ - int size; - struct coverage *c; - - size = sizeof (struct coverage); - size += width * height * sizeof (int) * 2; - - c = malloc (size); - if (c == NULL) - return c; - - memset(c, 0, size); - c->width = width; - c->height = height; - - return c; -} - -static cairo_surface_t * -coverage_to_alpha (struct coverage *c) -{ - cairo_surface_t *image; - uint8_t *data; - int x, y, stride; - - image = cairo_image_surface_create (CAIRO_FORMAT_A8, c->width, c->height); - - data = cairo_image_surface_get_data (image); - stride = cairo_image_surface_get_stride (image); - - cairo_surface_flush (image); - for (y = 0; y < c->height; y++) { - uint8_t *row = data + y *stride; - int cover = 0; - for (x = 0; x < c->width; x++) { - int v = y*c->width + x; - - cover += c->cells[v].covered_height * 256; - v = cover - c->cells[v].uncovered_area; - - v /= 256; - if (v < 0) - v = -v; - row[x] = v - (v >> 8); - } - } - cairo_surface_mark_dirty (image); - - free (c); - return image; -} -#endif - -static cairo_test_status_t -edge (cairo_t *cr, int width, int height) -{ - cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); - cairo_paint (cr); - - cairo_set_operator (cr, CAIRO_OPERATOR_ADD); - -#if GENERATE_REFERENCE - { - struct coverage *c; - cairo_surface_t *mask; - - cairo_set_source_rgb (cr, 1, 0, 0); - - c = coverage_create (width, height); - add_edge (c, 128*256, 129*256, 129*256, 1*256, 1); - add_edge (c, 128*256, 129*256, 128*256, 131*256, -1); - add_edge (c, 128*256, 131*256, 129*256, 259*256, -1); - add_edge (c, 130*256, 129*256, 129*256, 1*256, -1); - add_edge (c, 130*256, 129*256, 130*256, 131*256, 1); - add_edge (c, 130*256, 131*256, 129*256, 259*256, 1); - mask = coverage_to_alpha (c); - cairo_mask_surface (cr, mask, 0, 0); - cairo_surface_destroy (mask); - - c = coverage_create (width, height); - add_edge (c, 128*256/2, 129*256/2, 129*256/2, 1*256/2, 1); - add_edge (c, 128*256/2, 129*256/2, 128*256/2, 131*256/2, -1); - add_edge (c, 128*256/2, 131*256/2, 129*256/2, 259*256/2, -1); - add_edge (c, 130*256/2, 129*256/2, 129*256/2, 1*256/2, -1); - add_edge (c, 130*256/2, 129*256/2, 130*256/2, 131*256/2, 1); - add_edge (c, 130*256/2, 131*256/2, 129*256/2, 259*256/2, 1); - mask = coverage_to_alpha (c); - cairo_mask_surface (cr, mask, 0, 0); - cairo_surface_destroy (mask); - - c = coverage_create (width, height); - add_edge (c, (192-2)*256, 129*256, 192*256, 1*256, 1); - add_edge (c, (192-2)*256, 129*256, (192-2)*256, 131*256, -1); - add_edge (c, (192-2)*256, 131*256, 192*256, 259*256, -1); - add_edge (c, (192+2)*256, 129*256, 192*256, 1*256, -1); - add_edge (c, (192+2)*256, 129*256, (192+2)*256, 131*256, 1); - add_edge (c, (192+2)*256, 131*256, 192*256, 259*256, 1); - mask = coverage_to_alpha (c); - cairo_mask_surface (cr, mask, 0, 0); - cairo_surface_destroy (mask); - - c = coverage_create (width, height); - add_edge (c, (256-4)*256, 129*256, 256*256, 1*256, 1); - add_edge (c, (256-4)*256, 129*256, (256-4)*256, 131*256, -1); - add_edge (c, (256-4)*256, 131*256, 256*256, 259*256, -1); - add_edge (c, (256+4)*256, 129*256, 256*256, 1*256, -1); - add_edge (c, (256+4)*256, 129*256, (256+4)*256, 131*256, 1); - add_edge (c, (256+4)*256, 131*256, 256*256, 259*256, 1); - mask = coverage_to_alpha (c); - cairo_mask_surface (cr, mask, 0, 0); - cairo_surface_destroy (mask); - - cairo_set_source_rgb (cr, 0, 1, 0); - - c = coverage_create (width, height); - add_edge (c, 1*256, 129*256, 129*256, 128*256, 1); - add_edge (c, 131*256, 128*256, 259*256, 129*256, 1); - add_edge (c, 1*256, 129*256, 129*256, 130*256, -1); - add_edge (c, 131*256, 130*256, 259*256, 129*256, -1); - mask = coverage_to_alpha (c); - cairo_mask_surface (cr, mask, 0, 0); - cairo_surface_destroy (mask); - - c = coverage_create (width, height); - add_edge (c, 1*256/2, 129*256/2, 129*256/2, 128*256/2, 1); - add_edge (c, 131*256/2, 128*256/2, 259*256/2, 129*256/2, 1); - add_edge (c, 1*256/2, 129*256/2, 129*256/2, 130*256/2, -1); - add_edge (c, 131*256/2, 130*256/2, 259*256/2, 129*256/2, -1); - mask = coverage_to_alpha (c); - cairo_mask_surface (cr, mask, 0, 0); - cairo_surface_destroy (mask); - - c = coverage_create (width, height); - add_edge (c, 1*256, (192-0)*256, 129*256, (192-2)*256, 1); - add_edge (c, 131*256, (192-2)*256, 259*256, (192-0)*256, 1); - add_edge (c, 1*256, (192+0)*256, 129*256, (192+2)*256, -1); - add_edge (c, 131*256, (192+2)*256, 259*256, (192+0)*256, -1); - mask = coverage_to_alpha (c); - cairo_mask_surface (cr, mask, 0, 0); - cairo_surface_destroy (mask); - - c = coverage_create (width, height); - add_edge (c, 1*256, (256-0)*256, 129*256, (256-4)*256, 1); - add_edge (c, 131*256, (256-4)*256, 259*256, (256-0)*256, 1); - add_edge (c, 1*256, (256+0)*256, 129*256, (256+4)*256, -1); - add_edge (c, 131*256, (256+4)*256, 259*256, (256+0)*256, -1); - mask = coverage_to_alpha (c); - cairo_mask_surface (cr, mask, 0, 0); - cairo_surface_destroy (mask); - } -#else - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_move_to (cr, 129, 1); - cairo_line_to (cr, 128, 129); - cairo_line_to (cr, 128, 131); - cairo_line_to (cr, 129, 259); - cairo_line_to (cr, 130, 131); - cairo_line_to (cr, 130, 129); - cairo_fill (cr); - - cairo_move_to (cr, 129/2., 1/2.); - cairo_line_to (cr, 128/2., 129/2.); - cairo_line_to (cr, 128/2., 131/2.); - cairo_line_to (cr, 129/2., 259/2.); - cairo_line_to (cr, 130/2., 131/2.); - cairo_line_to (cr, 130/2., 129/2.); - cairo_fill (cr); - - cairo_move_to (cr, 192, 1); - cairo_line_to (cr, 192-2, 129); - cairo_line_to (cr, 192-2, 131); - cairo_line_to (cr, 192, 259); - cairo_line_to (cr, 192+2, 131); - cairo_line_to (cr, 192+2, 129); - cairo_fill (cr); - - cairo_move_to (cr, 256, 1); - cairo_line_to (cr, 256-4, 129); - cairo_line_to (cr, 256-4, 131); - cairo_line_to (cr, 256, 259); - cairo_line_to (cr, 256+4, 131); - cairo_line_to (cr, 256+4, 129); - cairo_fill (cr); - - cairo_set_source_rgb (cr, 0, 1, 0); - cairo_move_to (cr, 1, 129); - cairo_line_to (cr, 129, 128); - cairo_line_to (cr, 131, 128); - cairo_line_to (cr, 259, 129); - cairo_line_to (cr, 131, 130); - cairo_line_to (cr, 129, 130); - cairo_fill (cr); - - cairo_move_to (cr, 1/2., 129/2.); - cairo_line_to (cr, 129/2., 128/2.); - cairo_line_to (cr, 131/2., 128/2.); - cairo_line_to (cr, 259/2., 129/2.); - cairo_line_to (cr, 131/2., 130/2.); - cairo_line_to (cr, 129/2., 130/2.); - cairo_fill (cr); - - cairo_move_to (cr, 1, 192); - cairo_line_to (cr, 129, 192-2); - cairo_line_to (cr, 131, 192-2); - cairo_line_to (cr, 259, 192); - cairo_line_to (cr, 131, 192+2); - cairo_line_to (cr, 129, 192+2); - cairo_fill (cr); - - cairo_move_to (cr, 1, 256); - cairo_line_to (cr, 129, 256-4); - cairo_line_to (cr, 131, 256-4); - cairo_line_to (cr, 259, 256); - cairo_line_to (cr, 131, 256+4); - cairo_line_to (cr, 129, 256+4); - cairo_fill (cr); -#endif - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (simple_edge, - "Check the fidelity of the rasterisation.", - NULL, /* keywords */ - "target=raster", /* requirements */ - 260, 260, - NULL, edge) diff --git a/test/skew-extreme.c b/test/skew-extreme.c deleted file mode 100644 index 69299a8..0000000 --- a/test/skew-extreme.c +++ /dev/null @@ -1,118 +0,0 @@ -/* - * Copyright © 2007 Red Hat, Inc. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Carl Worth - */ - -#include "cairo-test.h" - -/* This test case is designed to exercise the following bug: - * - * Skew transforms were broken by the cairo update in December - * https://bugzilla.mozilla.org/show_bug.cgi?id=373632 - * - * What's happening is that the rectangle is being skewed into the - * following shape: - * - * a__b - * \ \ - * \ \ - * \ \ - * \ \ - * \ \ - * d\_\c - * - * and the bug is that _cairo_traps_tessellate_convex_quad is - * comparing b.x as less then d.x and therfore determining that the bc - * edge is left of the ad edge. The fix is simply to compare c.x to - * d.x instead of b.x to d.x . - */ - -#define PAD 2 -#define LINE_WIDTH 10 -#define LINE_LENGTH (2 * LINE_WIDTH) -#define SKEW_FACTOR 5.0 -#define WIDTH (PAD + (LINE_LENGTH * SKEW_FACTOR) + LINE_WIDTH + PAD) -#define HEIGHT (PAD + LINE_WIDTH + (LINE_LENGTH * SKEW_FACTOR) + LINE_WIDTH + PAD) - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - /* We draw in the default black, so paint white first. */ - cairo_save (cr); - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); /* white */ - cairo_paint (cr); - cairo_restore (cr); - - cairo_translate (cr, PAD, PAD); - - cairo_set_line_width (cr, LINE_WIDTH); - cairo_set_line_cap (cr, CAIRO_LINE_CAP_BUTT); - - cairo_save (cr); - { - cairo_matrix_t skew_x = { - 1.0, 0.0, - SKEW_FACTOR, 1.0, - 0.0, 0.0 - }; - - cairo_translate (cr, LINE_WIDTH / 2.0, 0.0); - - cairo_transform (cr, &skew_x); - - cairo_move_to (cr, 0.0, 0.0); - cairo_line_to (cr, 0.0, LINE_LENGTH); - cairo_stroke (cr); - } - cairo_restore (cr); - - cairo_translate (cr, 0.0, LINE_WIDTH); - - cairo_save (cr); - { - cairo_matrix_t skew_y = { - 1.0, SKEW_FACTOR, - 0.0, 1.0, - 0.0, 0.0 - }; - - cairo_translate (cr, 0.0, LINE_WIDTH / 2.0); - - cairo_transform (cr, &skew_y); - - cairo_move_to (cr, 0.0, 0.0); - cairo_line_to (cr, LINE_LENGTH, 0.0); - cairo_stroke (cr); - } - cairo_restore (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (skew_extreme, - "Test cases of extreme skew.", - "transform, stroke", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/smask-fill.c b/test/smask-fill.c deleted file mode 100644 index cb38610..0000000 --- a/test/smask-fill.c +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright © 2008 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_t *mask; - cairo_pattern_t *pattern; - cairo_t *cr2; - - cairo_set_source_rgb (cr, 0, 0, 1.0); - cairo_paint (cr); - - mask = cairo_surface_create_similar (cairo_get_group_target (cr), - CAIRO_CONTENT_ALPHA, - width, height); - cr2 = cairo_create (mask); - cairo_surface_destroy (mask); - - cairo_save (cr2); { - cairo_set_operator (cr2, CAIRO_OPERATOR_CLEAR); - cairo_paint (cr2); - } cairo_restore (cr2); - - pattern = cairo_pattern_create_linear (0, 0, width, height); - cairo_pattern_add_color_stop_rgba (pattern, 0.00, 0., 0., 0., 0.); - cairo_pattern_add_color_stop_rgba (pattern, 0.25, 1., 1., 1., 1.); - cairo_pattern_add_color_stop_rgba (pattern, 0.50, 1., 1., 1., .5); - cairo_pattern_add_color_stop_rgba (pattern, 0.75, 1., 1., 1., 1.); - cairo_pattern_add_color_stop_rgba (pattern, 1.00, 0., 0., 0., 0.); - cairo_set_source (cr2, pattern); - cairo_pattern_destroy (pattern); - - cairo_arc (cr2, 0.5 * width, 0.5 * height, 0.45 * height, 0, 2 * M_PI); - cairo_fill (cr2); - - cairo_set_source_rgb (cr, 1.0, 0, 0); - cairo_mask_surface (cr, cairo_get_target (cr2), 0, 0); - cairo_destroy (cr2); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (smask_fill, - "Test the support of \"soft\" masks with fills", - "smask, fill", /* keywords */ - NULL, /* requirements */ - 60, 60, - NULL, draw) diff --git a/test/smask-image-mask.c b/test/smask-image-mask.c deleted file mode 100644 index 3d8b5d5..0000000 --- a/test/smask-image-mask.c +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright © 2008 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - uint32_t data[] = { - 0xaa000000, 0x55000000, - 0x55000000, 0xaa000000, - }; - - cairo_surface_t *mask, *mask2; - cairo_pattern_t *pattern; - cairo_t *cr2; - - cairo_set_source_rgb (cr, 0, 0, 1.0); - cairo_paint (cr); - - mask = cairo_surface_create_similar (cairo_get_group_target (cr), - CAIRO_CONTENT_ALPHA, - width, height); - cr2 = cairo_create (mask); - cairo_surface_destroy (mask); - - cairo_save (cr2); { - cairo_set_operator (cr2, CAIRO_OPERATOR_CLEAR); - cairo_paint (cr2); - } cairo_restore (cr2); - - pattern = cairo_pattern_create_linear (0, 0, width, height); - cairo_pattern_add_color_stop_rgba (pattern, 0.00, 0., 0., 0., 0.); - cairo_pattern_add_color_stop_rgba (pattern, 0.25, 1., 1., 1., 1.); - cairo_pattern_add_color_stop_rgba (pattern, 0.50, 1., 1., 1., .5); - cairo_pattern_add_color_stop_rgba (pattern, 0.75, 1., 1., 1., 1.); - cairo_pattern_add_color_stop_rgba (pattern, 1.00, 0., 0., 0., 0.); - cairo_set_source (cr2, pattern); - cairo_pattern_destroy (pattern); - - mask2 = cairo_image_surface_create_for_data ((unsigned char *) data, - CAIRO_FORMAT_ARGB32, 2, 2, 8); - pattern = cairo_pattern_create_for_surface (mask2); - cairo_pattern_set_extend (pattern, CAIRO_EXTEND_REPEAT); - cairo_mask (cr2, pattern); - cairo_pattern_destroy (pattern); - - cairo_set_source_rgb (cr, 1.0, 0, 0); - cairo_mask_surface (cr, cairo_get_target (cr2), 0, 0); - cairo_destroy (cr2); - - cairo_surface_finish (mask2); /* data will go out of scope */ - cairo_surface_destroy (mask2); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (smask_image_mask, - "Test the support of \"soft\" masks with a secondary image mask", - "smask, image", /* keywords */ - NULL, /* requirements */ - 60, 60, - NULL, draw) diff --git a/test/smask-mask.c b/test/smask-mask.c deleted file mode 100644 index 11cff82..0000000 --- a/test/smask-mask.c +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright © 2008 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_t *mask; - cairo_pattern_t *pattern; - cairo_t *cr2, *cr3; - - cairo_set_source_rgb (cr, 0, 0, 1.0); - cairo_paint (cr); - - mask = cairo_surface_create_similar (cairo_get_group_target (cr), - CAIRO_CONTENT_ALPHA, - width, height); - cr2 = cairo_create (mask); - cairo_surface_destroy (mask); - - mask = cairo_surface_create_similar (cairo_get_group_target (cr2), - CAIRO_CONTENT_ALPHA, - width, height); - cr3 = cairo_create (mask); - cairo_surface_destroy (mask); - - cairo_save (cr3); { - cairo_set_operator (cr3, CAIRO_OPERATOR_CLEAR); - cairo_paint (cr3); - } cairo_restore (cr3); - - pattern = cairo_pattern_create_linear (0, 0, width, height); - cairo_pattern_add_color_stop_rgba (pattern, 0.00, 0., 0., 0., 0.); - cairo_pattern_add_color_stop_rgba (pattern, 0.25, 1., 1., 1., 1.); - cairo_pattern_add_color_stop_rgba (pattern, 0.50, 1., 1., 1., .5); - cairo_pattern_add_color_stop_rgba (pattern, 0.75, 1., 1., 1., 1.); - cairo_pattern_add_color_stop_rgba (pattern, 1.00, 0., 0., 0., 0.); - cairo_set_source (cr3, pattern); - cairo_pattern_destroy (pattern); - cairo_paint (cr3); - - - cairo_save (cr2); { - cairo_set_operator (cr2, CAIRO_OPERATOR_CLEAR); - cairo_paint (cr2); - } cairo_restore (cr2); - - pattern = cairo_pattern_create_radial ( - 0.5 * width, 0.5 * height, 0, - 0.5 * width, 0.5 * height, 0.5 *height); - cairo_pattern_add_color_stop_rgba (pattern, 0.00, 0., 0., 0., 0.); - cairo_pattern_add_color_stop_rgba (pattern, 0.25, 1., 1., 1., 1.); - cairo_pattern_add_color_stop_rgba (pattern, 0.50, 1., 1., 1., .5); - cairo_pattern_add_color_stop_rgba (pattern, 1.00, 1., 1., 1., 1.); - cairo_set_source (cr2, pattern); - cairo_pattern_destroy (pattern); - - cairo_mask_surface (cr2, cairo_get_target (cr3), 0, 0); - cairo_destroy (cr3); - - cairo_set_source_rgb (cr, 1.0, 0, 0); - cairo_mask_surface (cr, cairo_get_target (cr2), 0, 0); - cairo_destroy (cr2); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (smask_mask, - "Test the support of \"soft\" masks with a secondary mask", - "smask, mask", /* keywords */ - NULL, /* requirements */ - 60, 60, - NULL, draw) diff --git a/test/smask-paint.c b/test/smask-paint.c deleted file mode 100644 index ee781ca..0000000 --- a/test/smask-paint.c +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright © 2008 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_t *mask; - cairo_pattern_t *pattern; - cairo_t *cr2; - - mask = cairo_surface_create_similar (cairo_get_group_target (cr), - CAIRO_CONTENT_ALPHA, - width, height); - cr2 = cairo_create (mask); - cairo_surface_destroy (mask); - - cairo_save (cr2); { - cairo_set_operator (cr2, CAIRO_OPERATOR_CLEAR); - cairo_paint (cr2); - } cairo_restore (cr2); - - pattern = cairo_pattern_create_linear (0, 0, width, height); - cairo_pattern_add_color_stop_rgba (pattern, 0.00, 0., 0., 0., 0.); - cairo_pattern_add_color_stop_rgba (pattern, 0.25, 1., 1., 1., 1.); - cairo_pattern_add_color_stop_rgba (pattern, 0.50, 1., 1., 1., .5); - cairo_pattern_add_color_stop_rgba (pattern, 0.75, 1., 1., 1., 1.); - cairo_pattern_add_color_stop_rgba (pattern, 1.00, 0., 0., 0., 0.); - cairo_set_source (cr2, pattern); - cairo_pattern_destroy (pattern); - - cairo_paint (cr2); - - cairo_set_source_rgb (cr, 0, 0, 1.0); - cairo_paint (cr); - - pattern = cairo_pattern_create_radial ( - 0.5 * width, 0.5 * height, 0, - 0.5 * width, 0.5 * height, 0.5 *height); - cairo_pattern_add_color_stop_rgba (pattern, 0.00, 0., 0., 0., 0.); - cairo_pattern_add_color_stop_rgba (pattern, 0.25, 1., 0., 0., 1.); - cairo_pattern_add_color_stop_rgba (pattern, 0.50, 1., 0., 0., .5); - cairo_pattern_add_color_stop_rgba (pattern, 1.00, 1., 0., 0., 1.); - cairo_set_source (cr, pattern); - cairo_pattern_destroy (pattern); - - cairo_mask_surface (cr, cairo_get_target (cr2), 0, 0); - cairo_destroy (cr2); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (smask_paint, - "Test the support of \"soft\" masks with paints", - "smask, paint", /* keywords */ - NULL, /* requirements */ - 60, 60, - NULL, draw) diff --git a/test/smask-stroke.c b/test/smask-stroke.c deleted file mode 100644 index 2a8e7e8..0000000 --- a/test/smask-stroke.c +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright © 2008 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_t *mask; - cairo_pattern_t *pattern; - cairo_t *cr2; - - cairo_set_source_rgb (cr, 0, 0, 1.0); - cairo_paint (cr); - - mask = cairo_surface_create_similar (cairo_get_group_target (cr), - CAIRO_CONTENT_ALPHA, - width, height); - cr2 = cairo_create (mask); - cairo_surface_destroy (mask); - - cairo_save (cr2); { - cairo_set_operator (cr2, CAIRO_OPERATOR_CLEAR); - cairo_paint (cr2); - } cairo_restore (cr2); - - pattern = cairo_pattern_create_linear (0, 0, width, height); - cairo_pattern_add_color_stop_rgba (pattern, 0.00, 0., 0., 0., 0.); - cairo_pattern_add_color_stop_rgba (pattern, 0.25, 1., 1., 1., 1.); - cairo_pattern_add_color_stop_rgba (pattern, 0.50, 1., 1., 1., .5); - cairo_pattern_add_color_stop_rgba (pattern, 0.75, 1., 1., 1., 1.); - cairo_pattern_add_color_stop_rgba (pattern, 1.00, 0., 0., 0., 0.); - cairo_set_source (cr2, pattern); - cairo_pattern_destroy (pattern); - - cairo_arc (cr2, 0.5 * width, 0.5 * height, 0.4 * height, 0, 2 * M_PI); - cairo_stroke (cr2); - - cairo_set_source_rgb (cr, 1.0, 0, 0); - cairo_mask_surface (cr, cairo_get_target (cr2), 0, 0); - cairo_destroy (cr2); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (smask_stroke, - "Test the support of \"soft\" masks with strokes", - "smask, stroke", /* keywords */ - NULL, /* requirements */ - 60, 60, - NULL, draw) diff --git a/test/smask-text.c b/test/smask-text.c deleted file mode 100644 index f36ae26..0000000 --- a/test/smask-text.c +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright © 2008 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_t *mask; - cairo_pattern_t *pattern; - cairo_t *cr2; - cairo_text_extents_t extents; - - cairo_set_source_rgb (cr, 0, 0, 1.0); - cairo_paint (cr); - - mask = cairo_surface_create_similar (cairo_get_group_target (cr), - CAIRO_CONTENT_ALPHA, - width, height); - cr2 = cairo_create (mask); - cairo_surface_destroy (mask); - - cairo_save (cr2); { - cairo_set_operator (cr2, CAIRO_OPERATOR_CLEAR); - cairo_paint (cr2); - } cairo_restore (cr2); - - pattern = cairo_pattern_create_linear (0, 0, width, height); - cairo_pattern_add_color_stop_rgba (pattern, 0.00, 0., 0., 0., 0.); - cairo_pattern_add_color_stop_rgba (pattern, 0.25, 1., 1., 1., 1.); - cairo_pattern_add_color_stop_rgba (pattern, 0.50, 1., 1., 1., .5); - cairo_pattern_add_color_stop_rgba (pattern, 0.75, 1., 1., 1., 1.); - cairo_pattern_add_color_stop_rgba (pattern, 1.00, 0., 0., 0., 0.); - cairo_set_source (cr2, pattern); - cairo_pattern_destroy (pattern); - - cairo_select_font_face (cr2, - CAIRO_TEST_FONT_FAMILY " Sans", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - cairo_set_font_size (cr2, 0.5 * height); - - cairo_text_extents (cr2, "cairo", &extents); - cairo_move_to (cr2, - floor ((width - extents.width) / 2 + 0.5) - extents.x_bearing, - floor ((height - extents.height) / 2 - 0.5) - extents.y_bearing); - cairo_show_text (cr2, "cairo"); - - cairo_set_source_rgb (cr, 1.0, 0, 0); - cairo_mask_surface (cr, cairo_get_target (cr2), 0, 0); - cairo_destroy (cr2); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (smask_text, - "Test the support of \"soft\" masks with text", - "smask, text", /* keywords */ - NULL, /* keywords */ - 120, 60, - NULL, draw) diff --git a/test/smask.c b/test/smask.c deleted file mode 100644 index 4cf3adb..0000000 --- a/test/smask.c +++ /dev/null @@ -1,123 +0,0 @@ -/* - * Copyright © 2008 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - uint32_t data[] = { - 0x80000000, 0x80000000, - 0x80000000, 0x80000000, - }; - - cairo_surface_t *mask, *mask2; - cairo_pattern_t *pattern; - cairo_t *cr2; - cairo_text_extents_t extents; - - mask = cairo_surface_create_similar (cairo_get_group_target (cr), - CAIRO_CONTENT_ALPHA, - width, height); - cr2 = cairo_create (mask); - cairo_surface_destroy (mask); - - cairo_save (cr2); { - cairo_set_operator (cr2, CAIRO_OPERATOR_CLEAR); - cairo_paint (cr2); - } cairo_restore (cr2); - - pattern = cairo_pattern_create_linear (0, 0, 0, height); - cairo_pattern_add_color_stop_rgba (pattern, 0.00, 0., 0., 0., 0.0); - cairo_pattern_add_color_stop_rgba (pattern, 0.80, 0., 0., 0., 0.0); - cairo_pattern_add_color_stop_rgba (pattern, 0.90, 1., 1., 1., 0.25); - cairo_pattern_add_color_stop_rgba (pattern, 1.00, 1., 1., 1., 1.0); - cairo_set_source (cr2, pattern); - cairo_pattern_destroy (pattern); - - cairo_paint (cr2); - - pattern = cairo_pattern_create_linear (0, 0, width, height); - cairo_pattern_add_color_stop_rgba (pattern, 0.00, 0., 0., 0., 0.); - cairo_pattern_add_color_stop_rgba (pattern, 0.25, 1., 1., 1., 1.); - cairo_pattern_add_color_stop_rgba (pattern, 0.50, 1., 1., 1., .5); - cairo_pattern_add_color_stop_rgba (pattern, 0.75, 1., 1., 1., 1.); - cairo_pattern_add_color_stop_rgba (pattern, 1.00, 0., 0., 0., 0.); - cairo_set_source (cr2, pattern); - cairo_pattern_destroy (pattern); - - mask2 = cairo_image_surface_create_for_data ((unsigned char *) data, - CAIRO_FORMAT_ARGB32, 2, 2, 8); - pattern = cairo_pattern_create_for_surface (mask2); - cairo_pattern_set_extend (pattern, CAIRO_EXTEND_REPEAT); - cairo_mask (cr2, pattern); - cairo_pattern_destroy (pattern); - - cairo_arc (cr2, 0.5 * width, 0.5 * height - 10, 0.2 * height, 0, 2 * M_PI); - cairo_fill (cr2); - - cairo_arc (cr2, 0.5 * width, 0.5 * height - 10, 0.25 * height, 0, 2 * M_PI); - cairo_stroke (cr2); - - cairo_select_font_face (cr2, - CAIRO_TEST_FONT_FAMILY " Sans", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - cairo_set_font_size (cr2, 0.3 * height); - - cairo_text_extents (cr2, "FG", &extents); - cairo_move_to (cr2, - floor ((width - extents.width) / 2 + 0.5) - extents.x_bearing, - floor (height - extents.height - 0.5) - extents.y_bearing - 5); - cairo_show_text (cr2, "FG"); - - cairo_set_source_rgb (cr, 0, 0, 1.0); - cairo_paint (cr); - - pattern = cairo_pattern_create_radial ( - 0.5 * width, 0.5 * height, 0, - 0.5 * width, 0.5 * height, 0.5 *height); - cairo_pattern_add_color_stop_rgba (pattern, 0.00, 0., 0., 0., 0.); - cairo_pattern_add_color_stop_rgba (pattern, 0.25, 1., 0., 0., 1.); - cairo_pattern_add_color_stop_rgba (pattern, 0.50, 1., 0., 0., .5); - cairo_pattern_add_color_stop_rgba (pattern, 1.00, 1., 0., 0., 1.); - cairo_set_source (cr, pattern); - cairo_pattern_destroy (pattern); - - cairo_mask_surface (cr, cairo_get_target (cr2), 0, 0); - cairo_destroy (cr2); - - cairo_surface_finish (mask2); /* data will go out of scope */ - cairo_surface_destroy (mask2); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (smask, - "Test the support of \"soft\" masks", - "smask", /* keywords */ - NULL, /* requirements */ - 60, 60, - NULL, draw) diff --git a/test/solid-pattern-cache-stress.c b/test/solid-pattern-cache-stress.c deleted file mode 100644 index c2a1c15..0000000 --- a/test/solid-pattern-cache-stress.c +++ /dev/null @@ -1,212 +0,0 @@ -/* - * Copyright © 2007 Chris Wilson. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson. Not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#if HAVE_CONFIG_H -#include "config.h" -#endif - -#include "cairo-test.h" -#include /* drand48() */ - -#define LOOPS 10 -#define NRAND 100 - -#ifndef HAVE_DRAND48 -#define drand48() (rand () / (double) RAND_MAX) -#endif - -static cairo_scaled_font_t *scaled_font; - -static cairo_t * -_cairo_create_similar (cairo_t *cr, int width, int height) -{ - cairo_surface_t *similar; - - similar = cairo_surface_create_similar (cairo_get_target (cr), - cairo_surface_get_content (cairo_get_target (cr)), - width, height); - cr = cairo_create (similar); - cairo_surface_destroy (similar); - - return cr; -} - -static cairo_t * -_cairo_create_image (cairo_t *cr, cairo_format_t format, int width, int height) -{ - cairo_surface_t *image; - - image = cairo_image_surface_create (format, width, height); - cr = cairo_create (image); - cairo_surface_destroy (image); - - return cr; -} - -static void -_propagate_status (cairo_t *dst, cairo_t *src) -{ - cairo_path_t path; - - path.status = cairo_status (src); - if (path.status) { - path.num_data = 0; - path.data = NULL; - cairo_append_path (dst, &path); - } -} - -static void -_draw (cairo_t *cr, - double red, - double green, - double blue) -{ - cairo_text_extents_t extents; - - cairo_set_source_rgb (cr, red, green, blue); - cairo_paint (cr); - - cairo_move_to (cr, 0, 0); - cairo_line_to (cr, 1, 1); - cairo_stroke (cr); - - cairo_mask (cr, cairo_get_source (cr)); - - cairo_set_scaled_font (cr, scaled_font); - cairo_text_extents (cr, "cairo", &extents); - cairo_move_to (cr, - -extents.x_bearing - .5 * extents.width, - -extents.y_bearing - .5 * extents.height); - cairo_show_text (cr, "cairo"); -} - -static void -use_similar (cairo_t *cr, - double red, - double green, - double blue) -{ - cairo_t *cr2; - - if (cairo_status (cr)) - return; - - cr2 = _cairo_create_similar (cr, 1, 1); - - _draw (cr2, red, green, blue); - - _propagate_status (cr, cr2); - cairo_destroy (cr2); -} - -static void -use_image (cairo_t *cr, - cairo_format_t format, - double red, - double green, - double blue) -{ - cairo_t *cr2; - - if (cairo_status (cr)) - return; - - cr2 = _cairo_create_image (cr, format, 1, 1); - - _draw (cr2, red, green, blue); - - _propagate_status (cr, cr2); - cairo_destroy (cr2); -} - -static void -use_solid (cairo_t *cr, - double red, - double green, - double blue) -{ - /* mix in dissimilar solids */ - use_image (cr, CAIRO_FORMAT_A1, red, green, blue); - use_image (cr, CAIRO_FORMAT_A8, red, green, blue); - use_image (cr, CAIRO_FORMAT_RGB24, red, green, blue); - use_image (cr, CAIRO_FORMAT_ARGB32, red, green, blue); - - use_similar (cr, red, green, blue); - - _draw (cr, red, green, blue); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - const cairo_test_context_t *ctx = cairo_test_get_context (cr); - cairo_status_t status; - const double colors[8][3] = { - { 1.0, 0.0, 0.0 }, /* red */ - { 0.0, 1.0, 0.0 }, /* green */ - { 1.0, 1.0, 0.0 }, /* yellow */ - { 0.0, 0.0, 1.0 }, /* blue */ - { 1.0, 0.0, 1.0 }, /* magenta */ - { 0.0, 1.0, 1.0 }, /* cyan */ - { 1.0, 1.0, 1.0 }, /* white */ - { 0.0, 0.0, 0.0 }, /* black */ - }; - int i, j, loop; - - /* cache a resolved scaled-font */ - scaled_font = cairo_get_scaled_font (cr); - - for (loop = 0; loop < LOOPS; loop++) { - for (i = 0; i < LOOPS; i++) { - for (j = 0; j < 8; j++) { - use_solid (cr, colors[j][0], colors[j][1], colors[j][2]); - status = cairo_status (cr); - if (status) - return cairo_test_status_from_status (ctx, status); - } - } - - for (i = 0; i < NRAND; i++) { - use_solid (cr, drand48 (), drand48 (), drand48 ()); - status = cairo_status (cr); - if (status) - return cairo_test_status_from_status (ctx, status); - } - } - - /* stress test only, so clear the surface before comparing */ - cairo_set_source_rgb (cr, 0, 0, 1); - cairo_paint (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (solid_pattern_cache_stress, - "Stress the solid pattern cache and ensure it behaves", - "stress", /* keywords */ - NULL, /* requirements */ - 1, 1, - NULL, draw) diff --git a/test/source-clip-scale.c b/test/source-clip-scale.c deleted file mode 100644 index 4eca206..0000000 --- a/test/source-clip-scale.c +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright © 2005 Mozilla Corporation - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Mozilla Corporation not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Mozilla Corporation makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * MOZILLA CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL MOZILLA CORPORATION BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Vladimir Vukicevic - */ - -#include "cairo-test.h" -#include -#include - -#define SIZE 12 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_t *source; - cairo_t *cr2; - - source = cairo_surface_create_similar (cairo_get_group_target (cr), - CAIRO_CONTENT_COLOR_ALPHA, - SIZE, SIZE); - cr2 = cairo_create (source); - cairo_surface_destroy (source); - - /* Fill the source surface with green */ - cairo_set_source_rgb (cr2, 0, 1, 0); - cairo_paint (cr2); - - /* Draw a blue square in the middle of the source with clipping. - * Note that we are only clipping within a save/restore block but - * the buggy behavior demonstrates that the clip remains present - * on the surface. */ - cairo_save (cr2); - cairo_rectangle (cr2, - SIZE / 4, SIZE / 4, - SIZE / 2, SIZE / 2); - cairo_clip (cr2); - cairo_set_source_rgb (cr2, 0, 0, 1); - cairo_paint (cr2); - cairo_restore (cr2); - - /* Fill the destination surface with solid red (should not appear - * in final result) */ - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_paint (cr); - - /* Now draw the source surface onto the destination with scaling. */ - cairo_scale (cr, 2.0, 1.0); - - cairo_set_source_surface (cr, cairo_get_target (cr2), 0, 0); - cairo_destroy (cr2); - - cairo_paint (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (source_clip_scale, - "Test that a source surface is not affected by a clip when scaling", - "clip", /* keywords */ - NULL, /* requirements */ - SIZE * 2, SIZE, - NULL, draw) diff --git a/test/source-clip.c b/test/source-clip.c deleted file mode 100644 index 0c00070..0000000 --- a/test/source-clip.c +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Owen Taylor - */ - -#include "cairo-test.h" -#include -#include - -#define SIZE 12 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_t *source; - cairo_t *cr2; - - source = cairo_surface_create_similar (cairo_get_group_target (cr), - CAIRO_CONTENT_COLOR_ALPHA, - SIZE, SIZE); - - cr2 = cairo_create (source); - cairo_surface_destroy (source); - - /* Fill the source surface with green */ - cairo_set_source_rgb (cr2, 0, 1, 0); - cairo_paint (cr2); - - /* Draw a blue square in the middle of the source with clipping, - * and leave the clip there. */ - cairo_rectangle (cr2, - SIZE / 4, SIZE / 4, - SIZE / 2, SIZE / 2); - cairo_clip (cr2); - cairo_set_source_rgb (cr2, 0, 0, 1); - cairo_paint (cr2); - - /* Fill the destination surface with solid red (should not appear - * in final result) */ - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_paint (cr); - - /* Now draw the source surface onto the destination surface */ - cairo_set_source_surface (cr, cairo_get_target (cr2), 0, 0); - cairo_paint (cr); - - cairo_destroy (cr2); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (source_clip, - "Test that a source surface is not affected by a clip", - "clip", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, draw) diff --git a/test/source-surface-scale-paint.c b/test/source-surface-scale-paint.c deleted file mode 100644 index 4ac6249..0000000 --- a/test/source-surface-scale-paint.c +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_t *surface; - uint32_t data[16] = { - 0xffffffff, 0xffffffff, 0xffff0000, 0xffff0000, - 0xffffffff, 0xffffffff, 0xffff0000, 0xffff0000, - - 0xff00ff00, 0xff00ff00, 0xff0000ff, 0xff0000ff, - 0xff00ff00, 0xff00ff00, 0xff0000ff, 0xff0000ff - }; - - surface = cairo_image_surface_create_for_data ((unsigned char *) data, - CAIRO_FORMAT_RGB24, 4, 4, 16); - - cairo_set_source_surface (cr, surface, 2, 2); - cairo_pattern_set_filter (cairo_get_source (cr), CAIRO_FILTER_NEAREST); - cairo_scale (cr, 2, 2); - cairo_paint (cr); - - cairo_surface_finish (surface); /* data will go out of scope */ - cairo_surface_destroy (surface); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (source_surface_scale_paint, - "Test call sequence: cairo_set_source_surface; cairo_scale; cairo_paint", - "transform, paint", /* keywords */ - NULL, /* requirements */ - 8, 8, - NULL, draw) diff --git a/test/spline-decomposition.c b/test/spline-decomposition.c deleted file mode 100644 index ea8f26f..0000000 --- a/test/spline-decomposition.c +++ /dev/null @@ -1,471 +0,0 @@ -/* - * Copyright 2008 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -typedef struct _point { - double x,y; -} point_t; - -typedef struct _knots { - point_t a,b,c,d; -} knots_t; - -static knots_t knots[5] = { - { {0, 0}, {0, 100}, {100, 100}, {100, 0} }, - { {0, 0}, {75, 100}, {25, 100}, {100, 0} }, - { {0, 0}, {100, 100}, {0, 100}, {100, 0} }, - { {0, 0}, {150, 100}, {-50, 100}, {100, 0} }, - { {0, 0}, {100, 200}, {0, -100}, {100, 100} }, -}; - -#ifdef REFERENCE -static void -_lerp_half (const point_t *a, const point_t *b, point_t *result) -{ - result->x = .5 * (a->x + b->x); - result->y = .5 * (a->y + b->y); -} - -static void -_de_casteljau (knots_t *k1, knots_t *k2) -{ - point_t ab, bc, cd; - point_t abbc, bccd; - point_t final; - - _lerp_half (&k1->a, &k1->b, &ab); - _lerp_half (&k1->b, &k1->c, &bc); - _lerp_half (&k1->c, &k1->d, &cd); - _lerp_half (&ab, &bc, &abbc); - _lerp_half (&bc, &cd, &bccd); - _lerp_half (&abbc, &bccd, &final); - - k2->a = final; - k2->b = bccd; - k2->c = cd; - k2->d = k1->d; - - k1->b = ab; - k1->c = abbc; - k1->d = final; -} - -static double -_spline_error_squared (const knots_t *knots) -{ - double bdx, bdy, berr; - double cdx, cdy, cerr; - double dx, dy, v; - - /* Intersection point (px): - * px = p1 + u(p2 - p1) - * (p - px) ∙ (p2 - p1) = 0 - * Thus: - * u = ((p - p1) ∙ (p2 - p1)) / ∥p2 - p1∥²; - */ - bdx = knots->b.x - knots->a.x; - bdy = knots->b.y - knots->a.y; - - cdx = knots->c.x - knots->a.x; - cdy = knots->c.y - knots->a.y; - - dx = knots->d.x - knots->a.x; - dy = knots->d.y - knots->a.y; - v = dx * dx + dy * dy; - if (v != 0.) { - double u; - - u = bdx * dx + bdy * dy; - if (u <= 0) { - /* bdx -= 0; - * bdy -= 0; - */ - } else if (u >= v) { - bdx -= dx; - bdy -= dy; - } else { - bdx -= u/v * dx; - bdy -= u/v * dy; - } - - u = cdx * dx + cdy * dy; - if (u <= 0) { - /* cdx -= 0; - * cdy -= 0; - */ - } else if (u >= v) { - cdx -= dx; - cdy -= dy; - } else { - cdx -= u/v * dx; - cdy -= u/v * dy; - } - } - - berr = bdx * bdx + bdy * bdy; - cerr = cdx * cdx + cdy * cdy; - if (berr > cerr) - return berr * v; - else - return cerr * v; -} - -static void -_offset_line_to (cairo_t *cr, - const point_t *p0, - const point_t *p1, - const point_t *p2, - const point_t *p3, - double offset) -{ - double dx, dy, v; - - dx = p1->x - p0->x; - dy = p1->y - p0->y; - v = hypot (dx, dy); - if (v == 0) { - dx = p2->x - p0->x; - dy = p2->y - p0->y; - v = hypot (dx, dy); - if (v == 0) { - dx = p3->x - p0->x; - dy = p3->y - p0->y; - v = hypot (dx, dy); - } - } - - if (v == 0) { - cairo_line_to (cr, p0->x, p0->y); - } else - cairo_line_to (cr, p0->x - offset * dy / v, p0->y + offset * dx / v); -} - -static void -_spline_decompose_into (knots_t *k1, - double tolerance_squared, - double offset, - cairo_t *cr) -{ - knots_t k2; - - if (_spline_error_squared (k1) < tolerance_squared) { - _offset_line_to (cr, &k1->a, &k1->b, &k1->c, &k1->d, offset); - return; - } - - _de_casteljau (k1, &k2); - - _spline_decompose_into (k1, tolerance_squared, offset, cr); - _spline_decompose_into (&k2, tolerance_squared, offset, cr); -} - -static void -_spline_decompose (const knots_t *knots, - double tolerance, double offset, - cairo_t *cr) -{ - knots_t k; - - k = *knots; - _spline_decompose_into (&k, tolerance * tolerance, offset, cr); - - _offset_line_to (cr, &knots->d, &knots->c, &knots->b, &knots->a, -offset); -} - -static void -_knots_reverse (knots_t *knots) -{ - point_t tmp; - - tmp = knots->a; - knots->a = knots->d; - knots->d = tmp; - - tmp = knots->b; - knots->b = knots->c; - knots->c = tmp; -} - -static void -thick_splines (cairo_t *cr, double offset) -{ - knots_t k; - - cairo_save (cr); - cairo_translate (cr, 15, 15); - - k = knots[0]; - - cairo_new_path (cr); - _spline_decompose (&k, .1, offset, cr); - _knots_reverse (&k); - _spline_decompose (&k, .1, offset, cr); - cairo_close_path (cr); - cairo_fill (cr); - - cairo_translate (cr, 130, 0); - - k = knots[1]; - - cairo_new_path (cr); - _spline_decompose (&k, .1, offset, cr); - _knots_reverse (&k); - _spline_decompose (&k, .1, offset, cr); - cairo_close_path (cr); - cairo_fill (cr); - - cairo_translate (cr, 130, 0); - - k = knots[2]; - - cairo_new_path (cr); - _spline_decompose (&k, .1, offset, cr); - _knots_reverse (&k); - _spline_decompose (&k, .1, offset, cr); - cairo_close_path (cr); - cairo_fill (cr); - - cairo_translate (cr, -130 - 65, 130); - - k = knots[3]; - - cairo_new_path (cr); - _spline_decompose (&k, .1, offset, cr); - _knots_reverse (&k); - _spline_decompose (&k, .1, offset, cr); - cairo_close_path (cr); - cairo_fill (cr); - - cairo_translate (cr, 130, 0); - - k = knots[4]; - - cairo_new_path (cr); - _spline_decompose (&k, .1, offset, cr); - _knots_reverse (&k); - _spline_decompose (&k, .1, offset, cr); - cairo_close_path (cr); - cairo_fill (cr); - cairo_restore (cr); -} - -static void -thin_splines (cairo_t *cr) -{ - cairo_save (cr); - cairo_translate (cr, 15, 15); - - cairo_new_path (cr); - _spline_decompose (&knots[0], .1, 0, cr); - cairo_stroke (cr); - - cairo_translate (cr, 130, 0); - - cairo_new_path (cr); - _spline_decompose (&knots[1], .1, 0, cr); - cairo_stroke (cr); - - cairo_translate (cr, 130, 0); - - cairo_new_path (cr); - _spline_decompose (&knots[2], .1, 0, cr); - cairo_stroke (cr); - - cairo_translate (cr, -130 - 65, 130); - - cairo_new_path (cr); - _spline_decompose (&knots[3], .1, 0, cr); - cairo_stroke (cr); - - cairo_translate (cr, 130, 0); - - cairo_new_path (cr); - _spline_decompose (&knots[4], .1, 0, cr); - cairo_stroke (cr); - cairo_restore (cr); -} -#endif - -static void -draw_bbox (cairo_t *cr, double x0, double y0, double x1, double y1) -{ - cairo_rectangle (cr, - floor (x0) + .5, floor (y0) + .5, - ceil (x1) - floor (x0), ceil (y1) - floor (y0)); - cairo_stroke (cr); -} - -static void -stroke_splines (cairo_t *cr) -{ - double stroke_x0, stroke_x1, stroke_y0, stroke_y1; - double path_x0, path_x1, path_y0, path_y1; - - cairo_save (cr); - cairo_translate (cr, 15, 15); - - cairo_new_path (cr); - cairo_move_to (cr, - knots[0].a.x, knots[0].a.y); - cairo_curve_to (cr, - knots[0].b.x, knots[0].b.y, - knots[0].c.x, knots[0].c.y, - knots[0].d.x, knots[0].d.y); - cairo_stroke_extents (cr, &stroke_x0, &stroke_y0, &stroke_x1, &stroke_y1); - cairo_path_extents (cr, &path_x0, &path_y0, &path_x1, &path_y1); - cairo_stroke (cr); - - cairo_save (cr); { - cairo_set_line_width (cr, 1); - cairo_set_source_rgb (cr, 1, 0, 0); - draw_bbox (cr, stroke_x0, stroke_y0, stroke_x1, stroke_y1); - cairo_set_source_rgb (cr, 0, 0, 1); - draw_bbox (cr, path_x0, path_y0, path_x1, path_y1); - } cairo_restore (cr); - - cairo_translate (cr, 130, 0); - - cairo_new_path (cr); - cairo_move_to (cr, - knots[1].a.x, knots[1].a.y); - cairo_curve_to (cr, - knots[1].b.x, knots[1].b.y, - knots[1].c.x, knots[1].c.y, - knots[1].d.x, knots[1].d.y); - cairo_stroke_extents (cr, &stroke_x0, &stroke_y0, &stroke_x1, &stroke_y1); - cairo_path_extents (cr, &path_x0, &path_y0, &path_x1, &path_y1); - cairo_stroke (cr); - - cairo_save (cr); { - cairo_set_line_width (cr, 1); - cairo_set_source_rgb (cr, 1, 0, 0); - draw_bbox (cr, stroke_x0, stroke_y0, stroke_x1, stroke_y1); - cairo_set_source_rgb (cr, 0, 0, 1); - draw_bbox (cr, path_x0, path_y0, path_x1, path_y1); - } cairo_restore (cr); - - cairo_translate (cr, 130, 0); - - cairo_new_path (cr); - cairo_move_to (cr, - knots[2].a.x, knots[2].a.y); - cairo_curve_to (cr, - knots[2].b.x, knots[2].b.y, - knots[2].c.x, knots[2].c.y, - knots[2].d.x, knots[2].d.y); - cairo_stroke_extents (cr, &stroke_x0, &stroke_y0, &stroke_x1, &stroke_y1); - cairo_path_extents (cr, &path_x0, &path_y0, &path_x1, &path_y1); - cairo_stroke (cr); - - cairo_save (cr); { - cairo_set_line_width (cr, 1); - cairo_set_source_rgb (cr, 1, 0, 0); - draw_bbox (cr, stroke_x0, stroke_y0, stroke_x1, stroke_y1); - cairo_set_source_rgb (cr, 0, 0, 1); - draw_bbox (cr, path_x0, path_y0, path_x1, path_y1); - } cairo_restore (cr); - - cairo_translate (cr, -130 - 65, 130); - - cairo_new_path (cr); - cairo_move_to (cr, - knots[3].a.x, knots[3].a.y); - cairo_curve_to (cr, - knots[3].b.x, knots[3].b.y, - knots[3].c.x, knots[3].c.y, - knots[3].d.x, knots[3].d.y); - cairo_stroke_extents (cr, &stroke_x0, &stroke_y0, &stroke_x1, &stroke_y1); - cairo_path_extents (cr, &path_x0, &path_y0, &path_x1, &path_y1); - cairo_stroke (cr); - - cairo_save (cr); { - cairo_set_line_width (cr, 1); - cairo_set_source_rgb (cr, 1, 0, 0); - draw_bbox (cr, stroke_x0, stroke_y0, stroke_x1, stroke_y1); - cairo_set_source_rgb (cr, 0, 0, 1); - draw_bbox (cr, path_x0, path_y0, path_x1, path_y1); - } cairo_restore (cr); - - cairo_translate (cr, 130, 0); - - cairo_new_path (cr); - cairo_move_to (cr, - knots[4].a.x, knots[4].a.y); - cairo_curve_to (cr, - knots[4].b.x, knots[4].b.y, - knots[4].c.x, knots[4].c.y, - knots[4].d.x, knots[4].d.y); - cairo_stroke_extents (cr, &stroke_x0, &stroke_y0, &stroke_x1, &stroke_y1); - cairo_path_extents (cr, &path_x0, &path_y0, &path_x1, &path_y1); - cairo_stroke (cr); - - cairo_save (cr); { - cairo_set_line_width (cr, 1); - cairo_set_source_rgb (cr, 1, 0, 0); - draw_bbox (cr, stroke_x0, stroke_y0, stroke_x1, stroke_y1); - cairo_set_source_rgb (cr, 0, 0, 1); - draw_bbox (cr, path_x0, path_y0, path_x1, path_y1); - } cairo_restore (cr); - - cairo_restore (cr); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - -#ifdef REFERENCE - cairo_set_source_rgb (cr, 0, 0, 0); - thick_splines (cr, 5); - - cairo_set_source_rgb (cr, 1, 1, 1); - thin_splines (cr); -#endif - - /* - * Use a high tolerance to reduce dependence upon algorithm used for - * spline decomposition. - */ - cairo_set_tolerance (cr, 0.001); - - cairo_set_line_width (cr, 10); - cairo_set_source_rgb (cr, 0, 0, 0); - stroke_splines (cr); - cairo_set_line_width (cr, 2); - cairo_set_source_rgb (cr, 1, 1, 1); - stroke_splines (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (spline_decomposition, - "Tests splines with various inflection points", - "stroke, spline", /* keywords */ - NULL, /* requirements */ - 390, 260, - NULL, draw) diff --git a/test/stride-12-image.c b/test/stride-12-image.c deleted file mode 100644 index 5650e98..0000000 --- a/test/stride-12-image.c +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright 2012 Andrea Canciani - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Andrea Canciani - */ - -#include "cairo-test.h" - -static const char *png_filename = "romedalen.png"; - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - const cairo_test_context_t *ctx = cairo_test_get_context (cr); - cairo_format_t format = CAIRO_FORMAT_ARGB32; - cairo_t *cr_src; - cairo_surface_t *png, *src; - uint8_t *data; - int stride; - - png = cairo_test_create_surface_from_png (ctx, png_filename); - - stride = cairo_format_stride_for_width (format, width) + 12; - data = xcalloc (stride, height); - src = cairo_image_surface_create_for_data (data, format, - width, height, stride); - - cr_src = cairo_create (src); - cairo_set_source_surface (cr_src, png, 0, 0); - cairo_paint (cr_src); - cairo_destroy (cr_src); - - cairo_set_source_surface (cr, src, 0, 0); - cairo_paint (cr); - - cairo_surface_destroy (png); - - cairo_surface_finish (src); - cairo_surface_destroy (src); - - free (data); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (stride_12_image, - "Test that images with a non-default stride are handled correctly.", - "stride, image", /* keywords */ - NULL, /* requirements */ - 256, 192, - NULL, draw) diff --git a/test/stroke-clipped.c b/test/stroke-clipped.c deleted file mode 100644 index 4b80794..0000000 --- a/test/stroke-clipped.c +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -#include "cairo-test.h" - -#define SIZE 200 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - int row; - - cairo_set_source_rgb(cr, 1, 1, 1); - cairo_paint(cr); - - cairo_set_source_rgb(cr, 1, 0, 0); - for(row = 0; row < SIZE; row++) { - cairo_rectangle(cr, 0, row, SIZE, 1); - cairo_clip(cr); - - cairo_arc(cr, SIZE/2, SIZE/2, SIZE/2-8, 0, 2*M_PI); - cairo_stroke(cr); - - cairo_reset_clip(cr); - } - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (stroke_clipped, - "Check that the stroke is accurately drawn through smaller clips", - "stroke", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, draw) diff --git a/test/stroke-ctm-caps.c b/test/stroke-ctm-caps.c deleted file mode 100644 index 1bbee83..0000000 --- a/test/stroke-ctm-caps.c +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright © 2008 Adrian Johnson - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Adrian Johnson - */ - -#include "cairo-test.h" - -#define SIZE 100 -#define PAD 2 -#define WIDTH (PAD + SIZE + PAD) -#define HEIGHT WIDTH - -/* This test is designed to test that PDF viewers use the correct - * alpha values in an Alpha SMasks. Some viewers use the color values - * instead of the alpha. The test draws a triangle and rectangle in a - * group then draws the group using cairo_mask(). The mask consists of - * a circle with the rgba (0.4, 0.4, 0.4, 0.8) and the background rgba - * (0.8, 0.8, 0.8, 0.4). - */ - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - /* flip the CTM, which most clearly shows the problem */ - cairo_translate (cr, 0, HEIGHT); - cairo_scale (cr, 1, -1); - - cairo_set_source_rgb (cr, 0, 0, 0); - - cairo_set_line_width (cr, 10); - cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND); - cairo_set_line_join (cr, CAIRO_LINE_JOIN_ROUND); - - cairo_move_to (cr, 20, 20); - cairo_line_to (cr, 20, 70); - cairo_stroke (cr); - - cairo_move_to (cr, 40, 20); - cairo_line_to (cr, 70, 70); - cairo_stroke (cr); - - cairo_move_to (cr, 60, 20); - cairo_line_to (cr, 90, 20); - cairo_stroke (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (stroke_ctm_caps, - "Test that the stroker correctly passes the device-space vector to the stroker for endcaps", - "stroke, transform", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/stroke-image.c b/test/stroke-image.c deleted file mode 100644 index 17e6653..0000000 --- a/test/stroke-image.c +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright © 2006 Mozilla Corporation - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Mozilla Corporation not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Mozilla Corporation makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * MOZILLA CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL MOZILLA CORPORATION BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Vladimir Vukicevic - */ - -#include "cairo-test.h" - -#define PAD 10 -#define SIZE 100 -#define IMAGE_SIZE (SIZE-PAD*2) -#define LINE_WIDTH 10 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_t *image; - cairo_t *cr_image; - - cairo_set_source_rgb (cr, 0, 0, 0); - cairo_paint (cr); - - image = cairo_image_surface_create (CAIRO_FORMAT_RGB24, IMAGE_SIZE, IMAGE_SIZE); - cr_image = cairo_create (image); - cairo_surface_destroy (image); - - /* Create the image */ - cairo_set_source_rgb (cr_image, 0, 0, 0); - cairo_paint (cr_image); - cairo_set_source_rgb (cr_image, 0, 1, 0); - cairo_set_line_width (cr_image, LINE_WIDTH); - cairo_arc (cr_image, IMAGE_SIZE/2, IMAGE_SIZE/2, IMAGE_SIZE/2 - LINE_WIDTH/2, 0, M_PI * 2.0); - cairo_stroke (cr_image); - - /* Now stroke with it */ - cairo_translate (cr, PAD, PAD); - - cairo_set_source_surface (cr, cairo_get_target (cr_image), 0, 0); - cairo_destroy (cr_image); - - cairo_new_path (cr); - cairo_set_line_width (cr, LINE_WIDTH); - cairo_arc (cr, IMAGE_SIZE/2, IMAGE_SIZE/2, IMAGE_SIZE/2 - LINE_WIDTH/2, 0, M_PI * 2.0); - cairo_stroke (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (stroke_image, - "Test stroking with an image source, with a non-identity CTM", - "stroke, image, transform", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, draw) diff --git a/test/stroke-open-box.c b/test/stroke-open-box.c deleted file mode 100644 index b1dae50..0000000 --- a/test/stroke-open-box.c +++ /dev/null @@ -1,51 +0,0 @@ -/* -*- Mode: c; c-basic-offset: 4; indent-tabs-mode: t; tab-width: 8; -*- */ -/* - * Copyright 2011 Simon Kellner - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Simon Kellner - */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - cairo_set_source_rgb (cr, 0, 0, 0); - cairo_move_to (cr, 5, 7); - cairo_rel_line_to (cr, 20, 0); - cairo_rel_line_to (cr, 0, 15); - cairo_rel_line_to (cr, -20, 0); - cairo_stroke (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (stroke_open_box, - "Tests stroking of a 3-sided box", - "stroke,box", /* keywords */ - NULL, /* requirements */ - 30, 32, - NULL, draw) diff --git a/test/stroke-pattern.c b/test/stroke-pattern.c deleted file mode 100644 index 01e1019..0000000 --- a/test/stroke-pattern.c +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright © 2011 Adrian Johnson - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Adrian Johnson - */ - -#include "cairo-test.h" - -#define IMAGE_WIDTH 80 -#define IMAGE_HEIGHT 80 - - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_pattern_t *pattern; - - cairo_test_paint_checkered (cr); - - cairo_scale (cr, 0.3, 0.3); - cairo_translate (cr, 50, 50); - - pattern = cairo_pattern_create_linear (70, 100, 130, 100); - cairo_pattern_add_color_stop_rgba (pattern, 0, 1, 0, 0, 1.0); - cairo_pattern_add_color_stop_rgba (pattern, 1, 0, 1, 0, 0.5); - - cairo_pattern_set_extend (pattern, CAIRO_EXTEND_PAD); - cairo_set_source (cr, pattern); - - cairo_move_to(cr, 20, 20); - cairo_curve_to(cr, - 130, 0, - 70, 200, - 180, 180); - cairo_set_line_width (cr, 20); - cairo_stroke (cr); - - cairo_pattern_destroy (pattern); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (stroke_pattern, - "Patterned stroke", - "stroke, pattern", /* keywords */ - NULL, /* requirements */ - IMAGE_WIDTH, IMAGE_HEIGHT, - NULL, draw) diff --git a/test/subsurface-image-repeat.c b/test/subsurface-image-repeat.c deleted file mode 100644 index c741944..0000000 --- a/test/subsurface-image-repeat.c +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright 2009 Intel Corporation - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Intel not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Intel makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * INTEL CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL INTEL CORPORATION BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -static const char *png_filename = "romedalen.png"; - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - const cairo_test_context_t *ctx = cairo_test_get_context (cr); - cairo_surface_t *image, *region; - cairo_t *cr_region; - - cairo_set_source_rgb (cr, .5, .5, .5); - cairo_paint (cr); - - /* fill the centre */ - region = cairo_surface_create_for_rectangle (cairo_get_target (cr), - 20, 20, 20, 20); - cr_region = cairo_create (region); - cairo_surface_destroy (region); - - image = cairo_test_create_surface_from_png (ctx, png_filename); - cairo_set_source_surface (cr_region, image, - 10 - cairo_image_surface_get_width (image)/2, - 10 - cairo_image_surface_get_height (image)/2); - cairo_paint (cr_region); - cairo_surface_destroy (image); - - cairo_set_source_surface (cr, cairo_get_target (cr_region), 20, 20); - cairo_destroy (cr_region); - - /* repeat the pattern around the outside, but do not overwrite...*/ - cairo_pattern_set_extend (cairo_get_source (cr), CAIRO_EXTEND_REPEAT); - cairo_rectangle (cr, 0, 0, width, height); - cairo_rectangle (cr, 20, 40, 20, -20); - cairo_fill (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (subsurface_image_repeat, - "Tests source (image) clipping with repeat", - "subsurface, image, repeat", /* keywords */ - "target=raster", /* FIXME! recursion bug in subsurface/snapshot (with pdf backend) */ /* requirements */ - 60, 60, - NULL, draw) diff --git a/test/subsurface-modify-child.c b/test/subsurface-modify-child.c deleted file mode 100644 index ed94356..0000000 --- a/test/subsurface-modify-child.c +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright 2010 Intel Corporation - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Intel not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Intel makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * INTEL CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL INTEL CORPORATION BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_t *region, *similar; - cairo_t *cr_region, *cr_similar; - - cairo_set_source_rgb (cr, .5, .5, .5); - cairo_paint (cr); - - similar = cairo_surface_create_similar (cairo_get_target (cr), - CAIRO_CONTENT_COLOR_ALPHA, - 20, 20); - - /* copy the centre */ - cr_similar = cairo_create (similar); - cairo_surface_destroy (similar); - cairo_set_source_surface (cr_similar, cairo_get_target (cr), -20, -20); - cairo_paint (cr_similar); - similar = cairo_surface_reference (cairo_get_target (cr_similar)); - cairo_destroy (cr_similar); - - /* fill the centre */ - region = cairo_surface_create_for_rectangle (cairo_get_target (cr), - 20, 20, 20, 20); - cr_region = cairo_create (region); - cairo_surface_destroy (region); - - cairo_set_source_rgb (cr_region, 1, 1, 1); - cairo_rectangle (cr_region, 0, 0, 10, 10); - cairo_fill (cr_region); - - cairo_set_source_rgb (cr_region, 1, 0, 0); - cairo_rectangle (cr_region, 10, 0, 10, 10); - cairo_fill (cr_region); - - cairo_set_source_rgb (cr_region, 0, 1, 0); - cairo_rectangle (cr_region, 0, 10, 10, 10); - cairo_fill (cr_region); - - cairo_set_source_rgb (cr_region, 0, 0, 1); - cairo_rectangle (cr_region, 10, 10, 10, 10); - cairo_fill (cr_region); - - cairo_destroy (cr_region); - - /* copy the centre, again */ - cr_similar = cairo_create (similar); - cairo_surface_destroy (similar); - cairo_set_source_surface (cr_similar, cairo_get_target (cr), -20, -20); - cairo_paint (cr_similar); - similar = cairo_surface_reference (cairo_get_target (cr_similar)); - cairo_destroy (cr_similar); - - /* repeat the pattern around the outside, but do not overwrite...*/ - cairo_set_source_surface (cr, similar, 20, 20); - cairo_pattern_set_extend (cairo_get_source (cr), CAIRO_EXTEND_REPEAT); - cairo_rectangle (cr, 0, 0, width, height); - cairo_rectangle (cr, 20, 40, 20, -20); - cairo_fill (cr); - - cairo_surface_destroy (similar); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (subsurface_modify_child, - "Tests source clipping with later modifications", - "subsurface", /* keywords */ - "target=raster", /* FIXME! recursion bug in subsurface/snapshot (with pdf backend) */ /* requirements */ - 60, 60, - NULL, draw) diff --git a/test/subsurface-modify-parent.c b/test/subsurface-modify-parent.c deleted file mode 100644 index de16e75..0000000 --- a/test/subsurface-modify-parent.c +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright 2010 Intel Corporation - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Intel not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Intel makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * INTEL CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL INTEL CORPORATION BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_t *region; - - cairo_set_source_rgb (cr, .5, .5, .5); - cairo_paint (cr); - - /* fill the centre, but through the *original* surface */ - region = cairo_surface_create_for_rectangle (cairo_get_target (cr), - 20, 20, 20, 20); - - /* first trigger a snapshot of the region... */ - cairo_set_source_surface (cr, region, 20, 20); - cairo_pattern_set_extend (cairo_get_source (cr), CAIRO_EXTEND_REPEAT); - cairo_paint (cr); - - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_rectangle (cr, 20, 20, 10, 10); - cairo_fill (cr); - - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_rectangle (cr, 30, 20, 10, 10); - cairo_fill (cr); - - cairo_set_source_rgb (cr, 0, 1, 0); - cairo_rectangle (cr, 20, 30, 10, 10); - cairo_fill (cr); - - cairo_set_source_rgb (cr, 0, 0, 1); - cairo_rectangle (cr, 30, 30, 10, 10); - cairo_fill (cr); - - cairo_set_source_surface (cr, region, 20, 20); - cairo_surface_destroy (region); - - /* repeat the pattern around the outside, but do not overwrite...*/ - cairo_pattern_set_extend (cairo_get_source (cr), CAIRO_EXTEND_REPEAT); - cairo_rectangle (cr, 0, 0, width, height); - cairo_rectangle (cr, 20, 40, 20, -20); - cairo_fill (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (subsurface_modify_parent, - "Tests source clipping with later modifications", - "subsurface", /* keywords */ - "target=raster", /* FIXME! recursion bug in subsurface/snapshot (with pdf backend) */ /* requirements */ - 60, 60, - NULL, draw) diff --git a/test/subsurface-outside-target.c b/test/subsurface-outside-target.c deleted file mode 100644 index ef91a2e..0000000 --- a/test/subsurface-outside-target.c +++ /dev/null @@ -1,177 +0,0 @@ -/* - * Copyright 2010 Red Hat Inc. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Benjamin Otte - */ - -#include "cairo-test.h" - -#define TARGET_SIZE 10 - -#define SUB_SIZE 15 -#define SUB_OFFSET -5 - -#define PAINT_OFFSET SUB_SIZE -#define PAINT_SIZE (3 * SUB_SIZE) - -static cairo_content_t contents[] = { CAIRO_CONTENT_ALPHA, - CAIRO_CONTENT_COLOR, - CAIRO_CONTENT_COLOR_ALPHA }; - -#define N_CONTENTS ARRAY_LENGTH (contents) -#define N_PADS (CAIRO_EXTEND_PAD + 1) - - -static cairo_surface_t * -create_target (cairo_surface_t *similar_to, - cairo_content_t content) -{ - cairo_surface_t *surface; - cairo_t *cr; - - surface = cairo_surface_create_similar (similar_to, - content, - TARGET_SIZE, TARGET_SIZE); - - cr = cairo_create (surface); - cairo_test_paint_checkered (cr); - cairo_destroy (cr); - - return surface; -} - -static cairo_test_status_t -check_surface_extents (const cairo_test_context_t *ctx, - cairo_surface_t * surface, - double x, - double y, - double width, - double height) -{ - double x1, y1, x2, y2; - cairo_t *cr; - - cr = cairo_create (surface); - cairo_clip_extents (cr, &x1, &y1, &x2, &y2); - cairo_destroy (cr); - - if (x != x1 || - y != y1 || - width != x2 - x1 || - height != y2 - y1) { - cairo_test_log (ctx, - "surface extents should be (%g, %g, %g, %g), but are (%g, %g, %g, %g)\n", - x, y, width, height, - x1, y1, x2 - x1, y2 - y1); - return CAIRO_TEST_FAILURE; - } - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -draw_for_size (cairo_t *cr, - double x, - double y) -{ - cairo_surface_t *target, *subsurface; - cairo_extend_t extend; - cairo_test_status_t check, result = CAIRO_TEST_SUCCESS; - unsigned int content; - - for (content = 0; content < N_CONTENTS; content++) { - cairo_save (cr); - - /* create a target surface for our subsurface */ - target = create_target (cairo_get_target (cr), - contents[content]); - - /* create a subsurface that extends the target surface */ - subsurface = cairo_surface_create_for_rectangle (target, - x, y, - SUB_SIZE, SUB_SIZE); - - /* ensure the extents are ok */ - check = check_surface_extents (cairo_test_get_context (cr), - subsurface, - 0, 0, - SUB_SIZE, SUB_SIZE); - if (result == CAIRO_TEST_SUCCESS) - result = check; - - /* paint this surface with all extend modes. */ - for (extend = 0; extend < N_PADS; extend++) { - cairo_save (cr); - - cairo_rectangle (cr, 0, 0, PAINT_SIZE, PAINT_SIZE); - cairo_clip (cr); - - cairo_set_source_surface (cr, subsurface, PAINT_OFFSET, PAINT_OFFSET); - cairo_pattern_set_extend (cairo_get_source (cr), extend); - cairo_paint (cr); - - cairo_restore (cr); - - cairo_translate (cr, PAINT_SIZE + TARGET_SIZE, 0); - } - - cairo_surface_destroy (subsurface); - cairo_surface_destroy (target); - - cairo_restore (cr); - - cairo_translate (cr, 0, PAINT_SIZE + TARGET_SIZE); - } - - return result; -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_test_status_t check, result = CAIRO_TEST_SUCCESS; - - /* paint background in nice gray */ - cairo_set_source_rgb (cr, 0.51613, 0.55555, 0.51613); - cairo_paint (cr); - - /* Use CAIRO_OPERATOR_SOURCE in the tests so we get the actual - * contents of the subsurface */ - cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); - - result = draw_for_size (cr, SUB_OFFSET, SUB_OFFSET); - - check = draw_for_size (cr, 0, 0); - if (result == CAIRO_TEST_SUCCESS) - result = check; - - return result; -} - -CAIRO_TEST (subsurface_outside_target, - "Tests contents of subsurfaces outside target area", - "subsurface, pad", /* keywords */ - "target=raster", /* FIXME! recursion bug in subsurface/snapshot (with pdf backend) */ /* requirements */ - (PAINT_SIZE + TARGET_SIZE) * N_PADS - TARGET_SIZE, - (PAINT_SIZE + TARGET_SIZE) * N_CONTENTS * 2 - TARGET_SIZE, - NULL, draw) diff --git a/test/subsurface-pad.c b/test/subsurface-pad.c deleted file mode 100644 index 1ac7a0e..0000000 --- a/test/subsurface-pad.c +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright 2009 Intel Corporation - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Intel not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Intel makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * INTEL CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL INTEL CORPORATION BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_t *region; - cairo_t *cr_region; - - cairo_set_source_rgb (cr, .5, .5, .5); - cairo_paint (cr); - - /* fill the centre */ - region = cairo_surface_create_for_rectangle (cairo_get_target (cr), - 20, 20, 20, 20); - cr_region = cairo_create (region); - cairo_surface_destroy (region); - - cairo_set_source_rgb (cr_region, 1, 1, 1); - cairo_rectangle (cr_region, 0, 0, 10, 10); - cairo_fill (cr_region); - - cairo_set_source_rgb (cr_region, 1, 0, 0); - cairo_rectangle (cr_region, 10, 0, 10, 10); - cairo_fill (cr_region); - - cairo_set_source_rgb (cr_region, 0, 1, 0); - cairo_rectangle (cr_region, 0, 10, 10, 10); - cairo_fill (cr_region); - - cairo_set_source_rgb (cr_region, 0, 0, 1); - cairo_rectangle (cr_region, 10, 10, 10, 10); - cairo_fill (cr_region); - - cairo_set_source_surface (cr, cairo_get_target (cr_region), 20, 20); - cairo_destroy (cr_region); - - /* reflect the pattern around the outside, but do not overwrite...*/ - cairo_pattern_set_extend (cairo_get_source (cr), CAIRO_EXTEND_PAD); - cairo_rectangle (cr, 0, 0, width, height); - cairo_rectangle (cr, 20, 40, 20, -20); - cairo_fill (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (subsurface_pad, - "Tests source clipping with pad", - "subsurface, pad", /* keywords */ - "target=raster", /* FIXME! recursion bug in subsurface/snapshot (with pdf backend) */ /* requirements */ - 60, 60, - NULL, draw) diff --git a/test/subsurface-reflect.c b/test/subsurface-reflect.c deleted file mode 100644 index 517106d..0000000 --- a/test/subsurface-reflect.c +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright 2009 Intel Corporation - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Intel not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Intel makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * INTEL CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL INTEL CORPORATION BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_t *region; - cairo_t *cr_region; - - cairo_set_source_rgb (cr, .5, .5, .5); - cairo_paint (cr); - - /* fill the centre */ - region = cairo_surface_create_for_rectangle (cairo_get_target (cr), - 20, 20, 20, 20); - cr_region = cairo_create (region); - cairo_surface_destroy (region); - - cairo_set_source_rgb (cr_region, 1, 1, 1); - cairo_rectangle (cr_region, 0, 0, 10, 10); - cairo_fill (cr_region); - - cairo_set_source_rgb (cr_region, 1, 0, 0); - cairo_rectangle (cr_region, 10, 0, 10, 10); - cairo_fill (cr_region); - - cairo_set_source_rgb (cr_region, 0, 1, 0); - cairo_rectangle (cr_region, 0, 10, 10, 10); - cairo_fill (cr_region); - - cairo_set_source_rgb (cr_region, 0, 0, 1); - cairo_rectangle (cr_region, 10, 10, 10, 10); - cairo_fill (cr_region); - - cairo_set_source_surface (cr, cairo_get_target (cr_region), 20, 20); - cairo_destroy (cr_region); - - /* reflect the pattern around the outside, but do not overwrite...*/ - cairo_pattern_set_extend (cairo_get_source (cr), CAIRO_EXTEND_REFLECT); - cairo_rectangle (cr, 0, 0, width, height); - cairo_rectangle (cr, 20, 40, 20, -20); - cairo_fill (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (subsurface_reflect, - "Tests source clipping with reflect", - "subsurface, reflect", /* keywords */ - "target=raster", /* FIXME! recursion bug in subsurface/snapshot (with pdf backend) */ /* requirements */ - 60, 60, - NULL, draw) diff --git a/test/subsurface-repeat.c b/test/subsurface-repeat.c deleted file mode 100644 index 596b973..0000000 --- a/test/subsurface-repeat.c +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright 2009 Intel Corporation - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Intel not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Intel makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * INTEL CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL INTEL CORPORATION BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_t *region; - cairo_t *cr_region; - - cairo_set_source_rgb (cr, .5, .5, .5); - cairo_paint (cr); - - /* fill the centre */ - region = cairo_surface_create_for_rectangle (cairo_get_target (cr), - 20, 20, 20, 20); - cr_region = cairo_create (region); - cairo_surface_destroy (region); - - cairo_set_source_rgb (cr_region, 1, 1, 1); - cairo_rectangle (cr_region, 0, 0, 10, 10); - cairo_fill (cr_region); - - cairo_set_source_rgb (cr_region, 1, 0, 0); - cairo_rectangle (cr_region, 10, 0, 10, 10); - cairo_fill (cr_region); - - cairo_set_source_rgb (cr_region, 0, 1, 0); - cairo_rectangle (cr_region, 0, 10, 10, 10); - cairo_fill (cr_region); - - cairo_set_source_rgb (cr_region, 0, 0, 1); - cairo_rectangle (cr_region, 10, 10, 10, 10); - cairo_fill (cr_region); - - cairo_set_source_surface (cr, cairo_get_target (cr_region), 20, 20); - cairo_destroy (cr_region); - - /* repeat the pattern around the outside, but do not overwrite...*/ - cairo_pattern_set_extend (cairo_get_source (cr), CAIRO_EXTEND_REPEAT); - cairo_rectangle (cr, 0, 0, width, height); - cairo_rectangle (cr, 20, 40, 20, -20); - cairo_fill (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (subsurface_repeat, - "Tests source clipping with repeat", - "subsurface, repeat", /* keywords */ - "target=raster", /* FIXME! recursion bug in subsurface/snapshot (with pdf backend) */ /* requirements */ - 60, 60, - NULL, draw) diff --git a/test/subsurface-scale.c b/test/subsurface-scale.c deleted file mode 100644 index 9ffd2c4..0000000 --- a/test/subsurface-scale.c +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright 2009 Intel Corporation - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Intel not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Intel makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * INTEL CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL INTEL CORPORATION BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_t *region[5]; - const char *text = "Cairo"; - int i; - - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - cairo_rectangle (cr, 0, 20, 200, 60); - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_fill (cr); - - cairo_set_source_rgb (cr, 0, 0, 0); - - for (i = 0; i < 5; i++) { - cairo_t *cr_region; - cairo_text_extents_t extents; - char buf[2] = { text[i], '\0' }; - - region[i] = cairo_surface_create_for_rectangle (cairo_get_target (cr), - 20 * i, 0, 20, 20); - - cr_region = cairo_create (region[i]); - cairo_surface_destroy (region[i]); - - cairo_select_font_face (cr_region, "@cairo:", - CAIRO_FONT_WEIGHT_NORMAL, - CAIRO_FONT_SLANT_NORMAL); - cairo_set_font_size (cr_region, 20); - cairo_text_extents (cr_region, buf, &extents); - cairo_move_to (cr_region, - 10 - (extents.width/2 + extents.x_bearing), - 10 - (extents.height/2 + extents.y_bearing)); - cairo_show_text (cr_region, buf); - - region[i] = cairo_surface_reference (cairo_get_target (cr_region)); - cairo_destroy (cr_region); - } - - cairo_scale (cr, 2, 2); - for (i = 0; i < 5; i++) { - cairo_set_source_surface (cr, region[5-i-1], 20 * i, 20); - cairo_pattern_set_extend (cairo_get_source (cr), CAIRO_EXTEND_PAD); - cairo_rectangle (cr, 20*i, 20, 20, 20); - cairo_fill (cr); - } - - for (i = 0; i < 5; i++) { - cairo_set_source_surface (cr, region[5-i-1], 20 * i, 40); - cairo_paint_with_alpha (cr, .5); - } - - for (i = 0; i < 5; i++) - cairo_surface_destroy (region[i]); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (subsurface_scale, - "Tests clipping of both source and destination using subsurfaces", - "subsurface", /* keywords */ - "target=raster", /* FIXME! recursion bug in subsurface/snapshot (with pdf backend) */ /* requirements */ - 200, 120, - NULL, draw) diff --git a/test/subsurface-similar-repeat.c b/test/subsurface-similar-repeat.c deleted file mode 100644 index 011f876..0000000 --- a/test/subsurface-similar-repeat.c +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright 2009 Intel Corporation - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Intel not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Intel makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * INTEL CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL INTEL CORPORATION BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_t *similar; - cairo_surface_t *region; - cairo_t *cr_region; - - cairo_set_source_rgb (cr, .5, .5, .5); - cairo_paint (cr); - - similar = cairo_surface_create_similar (cairo_get_target (cr), - CAIRO_CONTENT_COLOR, - 60, 60); - cr_region = cairo_create (similar); - cairo_surface_destroy (similar); - - cairo_set_source_rgb (cr_region, .5, .5, .0); - cairo_paint (cr_region); - similar = cairo_surface_reference (cairo_get_target (cr_region)); - cairo_destroy (cr_region); - - /* fill the centre */ - region = cairo_surface_create_for_rectangle (similar, 20, 20, 20, 20); - cairo_surface_destroy (similar); - - cr_region = cairo_create (region); - cairo_surface_destroy (region); - - cairo_set_source_rgb (cr_region, 1, 1, 1); - cairo_rectangle (cr_region, 0, 0, 10, 10); - cairo_fill (cr_region); - - cairo_set_source_rgb (cr_region, 1, 0, 0); - cairo_rectangle (cr_region, 10, 0, 10, 10); - cairo_fill (cr_region); - - cairo_set_source_rgb (cr_region, 0, 1, 0); - cairo_rectangle (cr_region, 0, 10, 10, 10); - cairo_fill (cr_region); - - cairo_set_source_rgb (cr_region, 0, 0, 1); - cairo_rectangle (cr_region, 10, 10, 10, 10); - cairo_fill (cr_region); - - cairo_set_source_surface (cr, cairo_get_target (cr_region), 20, 20); - cairo_destroy (cr_region); - - cairo_pattern_set_extend (cairo_get_source (cr), CAIRO_EXTEND_REPEAT); - cairo_paint (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (subsurface_similar_repeat, - "Tests source clipping through an intermediate with repeat", - "subsurface, repeat", /* keywords */ - "target=raster", /* FIXME! recursion bug in subsurface/snapshot (with pdf backend) */ /* requirements */ - 60, 60, - NULL, draw) diff --git a/test/subsurface.c b/test/subsurface.c deleted file mode 100644 index 812776c..0000000 --- a/test/subsurface.c +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright 2009 Intel Corporation - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Intel not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Intel makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * INTEL CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL INTEL CORPORATION BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_t *region[5]; - const char *text = "Cairo"; - int i; - - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - cairo_set_source_rgb (cr, 0, 0, 0); - - for (i = 0; i < 5; i++) { - cairo_t *cr_region; - cairo_text_extents_t extents; - char buf[2] = { text[i], '\0' }; - - region[i] = cairo_surface_create_for_rectangle (cairo_get_target (cr), - 20 * i, 0, 20, 20); - - cr_region = cairo_create (region[i]); - cairo_surface_destroy (region[i]); - - cairo_select_font_face (cr_region, "@cairo:", - CAIRO_FONT_WEIGHT_NORMAL, - CAIRO_FONT_SLANT_NORMAL); - cairo_set_font_size (cr_region, 20); - cairo_text_extents (cr_region, buf, &extents); - cairo_move_to (cr_region, - 10 - (extents.width/2 + extents.x_bearing), - 10 - (extents.height/2 + extents.y_bearing)); - cairo_show_text (cr_region, buf); - - region[i] = cairo_surface_reference (cairo_get_target (cr_region)); - cairo_destroy (cr_region); - } - - for (i = 0; i < 5; i++) { - cairo_set_source_surface (cr, region[5-i-1], 20 * i, 20); - cairo_paint (cr); - } - - for (i = 0; i < 5; i++) { - cairo_set_source_surface (cr, region[5-i-1], 20 * i, 40); - cairo_paint_with_alpha (cr, .5); - } - - for (i = 0; i < 5; i++) - cairo_surface_destroy (region[i]); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (subsurface, - "Tests clipping of both source and destination using subsurfaces", - "subsurface", /* keywords */ - "target=raster", /* FIXME! recursion bug in subsurface/snapshot (with pdf backend) */ /* requirements */ - 100, 60, - NULL, draw) diff --git a/test/surface-finish-twice.c b/test/surface-finish-twice.c deleted file mode 100644 index f63b501..0000000 --- a/test/surface-finish-twice.c +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl Worth - */ - -/* Bug history - * - * 2005-04-10 stevech1097@yahoo.com.au - * - * Subject: [Bug 2950] New: *** glibc detected *** double free or corruption - * URL: https://bugs.freedesktop.org/show_bug.cgi?id=2950 - * - * The following short program gives the error message: - * - * *** glibc detected *** double free or corruption: 0x082a7268 *** - * Aborted - * - * 2005-04-13 Carl Worth - * - * Looks like surface->finished was never being set. Now fixed. - */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - const cairo_test_context_t *ctx = cairo_test_get_context (cr); - cairo_surface_t *surface; - cairo_status_t status; - - surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 1, 1); - - cairo_surface_finish (surface); - status = cairo_surface_status (surface); - if (status != CAIRO_STATUS_SUCCESS) - return cairo_test_status_from_status (ctx, status); - - cairo_surface_finish (surface); - status = cairo_surface_status (surface); - if (status != CAIRO_STATUS_SUCCESS) - return cairo_test_status_from_status (ctx, status); - - cairo_surface_finish (surface); - status = cairo_surface_status (surface); - if (status != CAIRO_STATUS_SUCCESS) - return cairo_test_status_from_status (ctx, status); - - cairo_surface_destroy (surface); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (surface_finish_twice, - "Test to exercise a crash when calling cairo_surface_finish twice on the same surface.", - "api", /* keywords */ - NULL, /* requirements */ - 0, 0, - NULL, draw) diff --git a/test/surface-pattern-big-scale-down.c b/test/surface-pattern-big-scale-down.c deleted file mode 100644 index 698accb..0000000 --- a/test/surface-pattern-big-scale-down.c +++ /dev/null @@ -1,125 +0,0 @@ -/* - * Copyright © 2006 Mozilla Corporation - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Mozilla Corporation not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Mozilla Corporation makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * MOZILLA CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL MOZILLA CORPORATION BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Vladimir Vukicevic - */ - -#include "cairo-test.h" - -#define SRC_WIDTH 2048 -#define SRC_HEIGHT 32 - -static cairo_surface_t * -create_source_surface (int w, int h) -{ - cairo_surface_t *surface; - cairo_t *cr; - - surface = cairo_image_surface_create (CAIRO_FORMAT_RGB24, SRC_WIDTH, SRC_HEIGHT); - cr = cairo_create (surface); - cairo_surface_destroy (surface); - - cairo_set_source_rgb (cr, 1.0, 0.0, 0.0); - cairo_rectangle (cr, 0, 0, w/2, h/2); - cairo_fill (cr); - - cairo_set_source_rgb (cr, 0.0, 1.0, 0.0); - cairo_rectangle (cr, w/2, 0, w/2, h/2); - cairo_fill (cr); - - cairo_set_source_rgb (cr, 0.0, 0.0, 1.0); - cairo_rectangle (cr, 0, h/2, w/2, h/2); - cairo_fill (cr); - - cairo_set_source_rgb (cr, 1.0, 1.0, 0.0); - cairo_rectangle (cr, w/2, h/2, w/2, h/2); - cairo_fill (cr); - - surface = cairo_surface_reference (cairo_get_target (cr)); - cairo_destroy (cr); - - return surface; -} - -static void -draw_n (cairo_t *cr, cairo_pattern_t *pat, double dest_size, int n) -{ - cairo_matrix_t mat; - - cairo_matrix_init_scale (&mat, SRC_WIDTH / dest_size, SRC_HEIGHT / dest_size); - cairo_matrix_translate (&mat, n * -dest_size, 0.0); - cairo_pattern_set_matrix (pat, &mat); - - cairo_set_source (cr, pat); - cairo_new_path (cr); - cairo_rectangle (cr, n * dest_size, 0.0, dest_size, dest_size); - cairo_fill (cr); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_t *surface; - cairo_pattern_t *pat; - - cairo_set_source_rgb (cr, 0, 0, 0); - cairo_paint (cr); - - surface = create_source_surface (SRC_WIDTH, SRC_HEIGHT); - - pat = cairo_pattern_create_for_surface (surface); - cairo_surface_destroy (surface); - - /* We want to draw at a position such that n * SRC_WIDTH * (SRC_WIDTH/16.0) > 32768. - * x = n * 16. - * - * To show the bug, we want to draw on either side of the boundary; - * in our case here, n = 16 results in 32768, and n = 17 results in > 32768. - * - * Drawing at 16 and 17 is sufficient to show the problem. - */ - -#if 1 - /* n = 16 */ - draw_n (cr, pat, 16.0, 16); - - /* n = 17 */ - draw_n (cr, pat, 16.0, 17); -#else - { - int n; - for (n = 0; n < 32; n++) - draw_n (cr, pat, 16.0, n); - } -#endif - - cairo_pattern_destroy (pat); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (surface_pattern_big_scale_down, - "Test scaled-down transformed not-repeated surface patterns with large images and offsets", - "transform", /* keywords */ - NULL, /* requirements */ - 512, 16, - NULL, draw) diff --git a/test/surface-pattern-operator.c b/test/surface-pattern-operator.c deleted file mode 100644 index 994baf9..0000000 --- a/test/surface-pattern-operator.c +++ /dev/null @@ -1,119 +0,0 @@ -/* -*- Mode: c; c-basic-offset: 4; indent-tabs-mode: t; tab-width: 8; -*- */ -/* - * Copyright 2009 Andrea Canciani - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Andrea Canciani - */ - -#include "cairo-test.h" - -#define N_OPERATORS (CAIRO_OPERATOR_SATURATE + 1) -#define HEIGHT 16 -#define WIDTH 16 -#define PAD 3 - -static cairo_pattern_t* -_create_pattern (cairo_surface_t *target, cairo_content_t content, int width, int height) -{ - cairo_pattern_t *pattern; - cairo_surface_t *surface; - cairo_t *cr; - - surface = cairo_surface_create_similar (target, content, width, height); - cr = cairo_create (surface); - cairo_surface_destroy (surface); - - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_arc (cr, 0.5 * width, 0.5 * height, 0.45 * height, -M_PI / 4, 3 * M_PI / 4); - cairo_fill (cr); - - pattern = cairo_pattern_create_for_surface (cairo_get_target (cr)); - cairo_destroy (cr); - - return pattern; -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_pattern_t *alpha_pattern, *color_alpha_pattern, *pattern; - unsigned int n, i; - - alpha_pattern = _create_pattern (cairo_get_target (cr), - CAIRO_CONTENT_ALPHA, - 0.9 * WIDTH, 0.9 * HEIGHT); - color_alpha_pattern = _create_pattern (cairo_get_target (cr), - CAIRO_CONTENT_COLOR_ALPHA, - 0.9 * WIDTH, 0.9 * HEIGHT); - - pattern = cairo_pattern_create_linear (WIDTH, 0, 0, HEIGHT); - cairo_pattern_add_color_stop_rgba (pattern, 0.2, 0, 0, 1, 1); - cairo_pattern_add_color_stop_rgba (pattern, 0.8, 0, 0, 1, 0); - - cairo_translate (cr, PAD, PAD); - - for (n = 0; n < N_OPERATORS; n++) { - cairo_save (cr); - for (i = 0; i < 4; i++) { - cairo_reset_clip (cr); - cairo_rectangle (cr, 0, 0, WIDTH, HEIGHT); - cairo_clip (cr); - - cairo_set_source (cr, pattern); - cairo_set_operator (cr, CAIRO_OPERATOR_OVER); - if (i & 2) { - cairo_paint (cr); - } else { - cairo_rectangle (cr, WIDTH/2, HEIGHT/2, WIDTH, HEIGHT); - cairo_fill (cr); - } - - cairo_set_source (cr, i & 1 ? alpha_pattern : color_alpha_pattern); - cairo_set_operator (cr, n); - if (i & 2) { - cairo_paint (cr); - } else { - cairo_rectangle (cr, WIDTH/2, HEIGHT/2, WIDTH, HEIGHT); - cairo_fill (cr); - } - - cairo_translate (cr, 0, HEIGHT+PAD); - } - cairo_restore (cr); - - cairo_translate (cr, WIDTH+PAD, 0); - } - - cairo_pattern_destroy (pattern); - cairo_pattern_destroy (alpha_pattern); - cairo_pattern_destroy (color_alpha_pattern); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (surface_pattern_operator, - "Tests alpha-only and alpha-color sources with all operators", - "surface, pattern, operator", /* keywords */ - NULL, /* requirements */ - (WIDTH+PAD) * N_OPERATORS + PAD, 4*HEIGHT + 5*PAD, - NULL, draw) diff --git a/test/surface-pattern-scale-down-extend.c b/test/surface-pattern-scale-down-extend.c deleted file mode 100644 index 191ab92..0000000 --- a/test/surface-pattern-scale-down-extend.c +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Copyright © 2010 M Joonas Pihlaja - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: M Joonas Pihlaja - */ -#include "cairo-test.h" - -/* Test that we can simultaneously downscale and extend a surface - * pattern. Reported by Franz Schmid to the cairo mailing list as a - * regression in 1.9.6: - * - * http://lists.cairographics.org/archives/cairo/2010-February/019492.html - */ - -static cairo_test_status_t -draw_with_extend (cairo_t *cr, int w, int h, cairo_extend_t extend) -{ - cairo_pattern_t *pattern; - cairo_set_source_rgb (cr, 1,1,1); - cairo_paint (cr); - - cairo_save (cr); - - /* When the destination surface is created by cairo-test-suite to - * test device-offset, it is bigger than w x h. This test expects - * the group to have a size which is exactly w x h, so it must - * clip to the this rectangle to guarantee that the group will - * have the correct size. - */ - cairo_rectangle (cr, 0, 0, w, h); - cairo_clip (cr); - - cairo_push_group_with_content (cr, CAIRO_CONTENT_COLOR); { - /* A two by two checkerboard with black, red and yellow - * cells. */ - cairo_set_source_rgb (cr, 1,0,0); - cairo_rectangle (cr, w/2, 0, w-w/2, h/2); - cairo_fill (cr); - cairo_set_source_rgb (cr, 1,1,0); - cairo_rectangle (cr, 0, h/2, w/2, h-h/2); - cairo_fill (cr); - } - pattern = cairo_pop_group (cr); - cairo_pattern_set_extend(pattern, extend); - - cairo_restore (cr); - - cairo_scale (cr, 0.5, 0.5); - cairo_set_source (cr, pattern); - cairo_paint (cr); - - cairo_pattern_destroy (pattern); - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -draw_repeat (cairo_t *cr, int w, int h) -{ - return draw_with_extend (cr, w, h, CAIRO_EXTEND_REPEAT); -} -static cairo_test_status_t -draw_none (cairo_t *cr, int w, int h) -{ - return draw_with_extend (cr, w, h, CAIRO_EXTEND_NONE); -} -static cairo_test_status_t -draw_reflect (cairo_t *cr, int w, int h) -{ - return draw_with_extend (cr, w, h, CAIRO_EXTEND_REFLECT); -} -static cairo_test_status_t -draw_pad (cairo_t *cr, int w, int h) -{ - return draw_with_extend (cr, w, h, CAIRO_EXTEND_PAD); -} - -CAIRO_TEST (surface_pattern_scale_down_extend_repeat, - "Test interaction of downscaling a surface pattern and extend-repeat", - "pattern, transform, extend", /* keywords */ - NULL, /* requirements */ - 100, 100, - NULL, draw_repeat) -CAIRO_TEST (surface_pattern_scale_down_extend_none, - "Test interaction of downscaling a surface pattern and extend-none", - "pattern, transform, extend", /* keywords */ - NULL, /* requirements */ - 100, 100, - NULL, draw_none) -CAIRO_TEST (surface_pattern_scale_down_extend_reflect, - "Test interaction of downscaling a surface pattern and extend-reflect", - "pattern, transform, extend", /* keywords */ - NULL, /* requirements */ - 100, 100, - NULL, draw_reflect) -CAIRO_TEST (surface_pattern_scale_down_extend_pad, - "Test interaction of downscaling a surface pattern and extend-pad", - "pattern, transform, extend", /* keywords */ - NULL, /* requirements */ - 100, 100, - NULL, draw_pad) diff --git a/test/surface-pattern-scale-down.c b/test/surface-pattern-scale-down.c deleted file mode 100644 index 95782ef..0000000 --- a/test/surface-pattern-scale-down.c +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright © 2007 Red Hat, Inc. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Behdad Esfahbod - */ - -#include "cairo-test.h" -#include -#include - -#define SIZE 200 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_t *surface; - cairo_t * cr_surface; - int surface_size = 300; - - cairo_set_source_rgb (cr, 0, 0, 0); - cairo_paint (cr); - - /* Create an image surface with my favorite four colors in each - * quadrant. */ - surface = cairo_image_surface_create (CAIRO_FORMAT_RGB24, - surface_size, surface_size); - cr_surface = cairo_create (surface); - cairo_surface_destroy (surface); - - cairo_set_source_rgb (cr_surface, 1, 1, 1); - cairo_rectangle (cr_surface, - 0, 0, - surface_size / 2, surface_size / 2); - cairo_fill (cr_surface); - cairo_set_source_rgb (cr_surface, 1, 0, 0); - cairo_rectangle (cr_surface, - surface_size / 2, 0, - surface_size / 2, surface_size / 2); - cairo_fill (cr_surface); - cairo_set_source_rgb (cr_surface, 0, 1, 0); - cairo_rectangle (cr_surface, - 0, surface_size / 2, - surface_size / 2, surface_size / 2); - cairo_fill (cr_surface); - cairo_set_source_rgb (cr_surface, 0, 0, 1); - cairo_rectangle (cr_surface, - surface_size / 2, surface_size / 2, - surface_size / 2, surface_size / 2); - cairo_fill (cr_surface); - - cairo_scale (cr, 0.2, 0.2); - cairo_rotate (cr, 1.); - cairo_set_source_surface (cr, cairo_get_target (cr_surface), 225, -225); - cairo_destroy (cr_surface); - - cairo_pattern_set_extend (cairo_get_source (cr), CAIRO_EXTEND_NONE); - cairo_paint (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (surface_pattern_scale_down, - "Test scaled-down transformed not-repeated surface patterns" - "\nFails xlib backend (with argb32) with inexplicable alpha in result", - "transform", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, draw) diff --git a/test/surface-pattern-scale-up.c b/test/surface-pattern-scale-up.c deleted file mode 100644 index 0d71ba1..0000000 --- a/test/surface-pattern-scale-up.c +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright © 2007 Red Hat, Inc. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Behdad Esfahbod - */ - -/* Exhibits nasty behaviour with GS due as their /Interpolate implementation - * does not function for rotated images. */ - -#include "cairo-test.h" -#include -#include - -#define SIZE 100 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_t *surface; - cairo_t * cr_surface; - int surface_size = 6; - - /* Fill the background with grey, so that it's easily visible when - * things get overdrawn */ - cairo_set_source_rgb (cr, 0.5, 0.5, 0.5); - cairo_paint (cr); - - /* Create an image surface with my favorite four colors in each - * quadrant. */ - surface = cairo_image_surface_create (CAIRO_FORMAT_RGB24, - surface_size, surface_size); - cr_surface = cairo_create (surface); - cairo_surface_destroy (surface); - - cairo_set_source_rgb (cr_surface, 1, 1, 1); - cairo_rectangle (cr_surface, - 0, 0, - surface_size / 2, surface_size / 2); - cairo_fill (cr_surface); - cairo_set_source_rgb (cr_surface, 1, 0, 0); - cairo_rectangle (cr_surface, - surface_size / 2, 0, - surface_size / 2, surface_size / 2); - cairo_fill (cr_surface); - cairo_set_source_rgb (cr_surface, 0, 1, 0); - cairo_rectangle (cr_surface, - 0, surface_size / 2, - surface_size / 2, surface_size / 2); - cairo_fill (cr_surface); - cairo_set_source_rgb (cr_surface, 0, 0, 1); - cairo_rectangle (cr_surface, - surface_size / 2, surface_size / 2, - surface_size / 2, surface_size / 2); - cairo_fill (cr_surface); - - cairo_scale (cr, 10, 10); - cairo_rotate (cr, 1.); - cairo_set_source_surface (cr, cairo_get_target (cr_surface), 4, -4.5); - cairo_destroy (cr_surface); - - cairo_pattern_set_extend (cairo_get_source (cr), CAIRO_EXTEND_NONE); - cairo_paint (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (surface_pattern_scale_up, - "Test scaled-up transformed not-repeated surface patterns" - "\nFails xlib backend (with argb32) with inexplicable alpha in result", - "transform", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, draw) diff --git a/test/surface-pattern.c b/test/surface-pattern.c deleted file mode 100644 index 725f68d..0000000 --- a/test/surface-pattern.c +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright © 2007 Red Hat, Inc. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Behdad Esfahbod - */ - -#include "cairo-test.h" -#include -#include - -#define SIZE 140 -/* Note GhostScript does not support /Interpolate on rotated images, so the PS - * output looks terrible, but is a known issue. */ - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_t *surface; - cairo_t * cr_surface; - int surface_size = 6; - - cairo_set_source_rgb (cr, 0, 0, 0); - cairo_paint (cr); - - /* Create an image surface with my favorite four colors in each - * quadrant. */ - surface = cairo_image_surface_create (CAIRO_FORMAT_RGB24, - surface_size, surface_size); - cr_surface = cairo_create (surface); - cairo_surface_destroy (surface); - - cairo_set_source_rgb (cr_surface, 1, 1, 1); - cairo_rectangle (cr_surface, - 0, 0, - surface_size / 2, surface_size / 2); - cairo_fill (cr_surface); - cairo_set_source_rgb (cr_surface, 1, 0, 0); - cairo_rectangle (cr_surface, - surface_size / 2, 0, - surface_size / 2, surface_size / 2); - cairo_fill (cr_surface); - cairo_set_source_rgb (cr_surface, 0, 1, 0); - cairo_rectangle (cr_surface, - 0, surface_size / 2, - surface_size / 2, surface_size / 2); - cairo_fill (cr_surface); - cairo_set_source_rgb (cr_surface, 0, 0, 1); - cairo_rectangle (cr_surface, - surface_size / 2, surface_size / 2, - surface_size / 2, surface_size / 2); - cairo_fill (cr_surface); - - cairo_scale (cr, 10, 10); - cairo_rotate (cr, 1.); - cairo_set_source_surface (cr, cairo_get_target (cr_surface), 1.5, 1.5); - cairo_destroy (cr_surface); - - cairo_pattern_set_extend (cairo_get_source (cr), CAIRO_EXTEND_REPEAT); - cairo_paint (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (surface_pattern, - "Test transformed repeated surface patterns" - "\nExhibiting a strange (very minor) failure in ps backend with device-offset", - "transform", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, draw) diff --git a/test/surface-source.c b/test/surface-source.c deleted file mode 100644 index 657a0c8..0000000 --- a/test/surface-source.c +++ /dev/null @@ -1,170 +0,0 @@ -/* - * Copyright © 2008 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -static cairo_surface_t *create_source_surface (int size); - -/* We use a relatively large source to exercise bug: - * Bug 7360 painting huge surfaces fails - * [https://bugs.freedesktop.org/show_bug.cgi?id=7360] - * but still keep the resultant image small for reasonably quick checking. - */ -#define SOURCE_SIZE 2000 -#define INTER_SIZE 512 -#define SIZE 96 - -static void -draw_pattern (cairo_surface_t **surface_inout, int surface_size) -{ - cairo_t *cr; - int mid = surface_size/2; - - cr = cairo_create (*surface_inout); - cairo_surface_destroy (*surface_inout); - - cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); - cairo_set_source_rgba (cr, 0, 0, 0, 0); - cairo_paint (cr); - - cairo_rectangle (cr, 0, 0, surface_size, surface_size); - cairo_rectangle (cr, mid - SIZE/4, mid + SIZE/4, SIZE/2, -SIZE/2); - cairo_clip (cr); - - /* outside squares -> opaque */ - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_rectangle (cr, - 0, 0, - surface_size / 2, surface_size / 2); - cairo_fill (cr); - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_rectangle (cr, - surface_size / 2, 0, - surface_size / 2, surface_size / 2); - cairo_fill (cr); - cairo_set_source_rgb (cr, 0, 1, 0); - cairo_rectangle (cr, - 0, surface_size / 2, - surface_size / 2, surface_size / 2); - cairo_fill (cr); - cairo_set_source_rgb (cr, 0, 0, 1); - cairo_rectangle (cr, - surface_size / 2, surface_size / 2, - surface_size / 2, surface_size / 2); - cairo_fill (cr); - - cairo_reset_clip (cr); - cairo_rectangle (cr, mid - SIZE/4, mid - SIZE/4, SIZE/2, SIZE/2); - cairo_clip (cr); - - /* inside squares -> translucent */ - cairo_set_source_rgba (cr, 0, 0, 1, .5); - cairo_rectangle (cr, - 0, 0, - surface_size / 2, surface_size / 2); - cairo_fill (cr); - cairo_set_source_rgba (cr, 0, 1, 0, .5); - cairo_rectangle (cr, - surface_size / 2, 0, - surface_size / 2, surface_size / 2); - cairo_fill (cr); - cairo_set_source_rgba (cr, 1, 0, 0, .5); - cairo_rectangle (cr, - 0, surface_size / 2, - surface_size / 2, surface_size / 2); - cairo_fill (cr); - cairo_set_source_rgba (cr, 1, 1, 1, .5); - cairo_rectangle (cr, - surface_size / 2, surface_size / 2, - surface_size / 2, surface_size / 2); - cairo_fill (cr); - - - *surface_inout = cairo_surface_reference (cairo_get_target (cr)); - cairo_destroy (cr); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_t *surface; - cairo_surface_t *similar; - cairo_status_t status; - cairo_t *cr2; - - cairo_set_source_rgb (cr, 0, 0, 0); - cairo_paint (cr); - - surface = create_source_surface (SOURCE_SIZE); - if (surface == NULL) /* can't create the source so skip the test */ - return CAIRO_TEST_UNTESTED; - - draw_pattern (&surface, SOURCE_SIZE); - - /* copy a subregion to a smaller intermediate surface */ - similar = cairo_surface_create_similar (surface, - CAIRO_CONTENT_COLOR_ALPHA, - INTER_SIZE, INTER_SIZE); - cr2 = cairo_create (similar); - cairo_surface_destroy (similar); - cairo_set_source_surface (cr2, surface, - (INTER_SIZE - SOURCE_SIZE)/2, - (INTER_SIZE - SOURCE_SIZE)/2); - cairo_paint (cr2); - - /* and then paint onto a small surface for checking */ - cairo_set_source_surface (cr, cairo_get_target (cr2), - (width - INTER_SIZE)/2, - (height - INTER_SIZE)/2); - cairo_destroy (cr2); - cairo_rectangle (cr, 16, 16, 64, 64); - cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); - cairo_fill (cr); - - /* destroy the surface last, as this triggers XCloseDisplay */ - cairo_surface_finish (surface); - status = cairo_surface_status (surface); - cairo_surface_destroy (surface); - - return cairo_test_status_from_status (cairo_test_get_context (cr), - status); -} - -static cairo_test_status_t -preamble (cairo_test_context_t *ctx) -{ - cairo_surface_t *surface; - cairo_status_t status; - - surface = create_source_surface (SOURCE_SIZE); - if (surface == NULL) /* can't create the source so skip the test */ - return CAIRO_TEST_UNTESTED; - - cairo_surface_finish (surface); - status = cairo_surface_status (surface); - cairo_surface_destroy (surface); - - return cairo_test_status_from_status (ctx, status); -} diff --git a/test/svg-clip.c b/test/svg-clip.c deleted file mode 100644 index dff65f7..0000000 --- a/test/svg-clip.c +++ /dev/null @@ -1,152 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Kristian Høgsberg - */ - -#include "cairo-test.h" - -#include - -#include - -/* Test SVG clipping */ - -#define WIDTH_IN_POINTS 600 -#define HEIGHT_IN_POINTS 600 -#define BASENAME "svg-clip.out" - -static void -test_clip (cairo_t *cr, double width, double height) -{ - cairo_t *cr2; - - /* Basic test; set a square clip and draw a circle to be clipped - * against it.*/ - - cairo_rectangle (cr, 100, 100, 400, 400); - cairo_clip (cr); - cairo_arc (cr, 300, 300, 210, 0, 2 * M_PI); - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_fill (cr); - - /* Add a plus shaped clip path to the square clip and draw a big - * green square to test the new clip path. */ - - cairo_save (cr); - - cairo_rectangle (cr, 250, 100, 100, 400); - cairo_rectangle (cr, 100, 250, 400, 100); - cairo_clip (cr); - - cairo_rectangle (cr, 0, 0, 600, 600); - cairo_set_source_rgb (cr, 0, 1, 0); - cairo_fill (cr); - - cairo_restore (cr); - - /* Set a bezier shape in addition to the rectangle clip set before - * the cairo_save() to verify that we successfully removed the - * plus shaped clip path and can set a new clip.*/ - - cairo_move_to (cr, 600, 0); - cairo_curve_to (cr, 300, 600, 0, 300, 600, 0); - cairo_clip (cr); - - cairo_rectangle (cr, 0, 0, 600, 600); - cairo_set_source_rgb (cr, 0, 0, 1); - cairo_fill (cr); - - /* Create a new context for this surface to test overlapped - * drawing from two contexts */ - cr2 = cairo_create (cairo_get_group_target (cr)); - - /* Using the new context, draw a black vertical line, which should - * appear unclipped on top of everything drawn so far. */ - cairo_move_to (cr2, 110, 0); - cairo_line_to (cr2, 110, 600); - cairo_stroke (cr2); - - /* Using the first context, draw another black vertical line. - * This line should be clipped agaist the bezier clipping path set - * earlier. */ - cairo_set_source_rgb (cr, 0, 0, 0); - cairo_move_to (cr, 400, 0); - cairo_line_to (cr, 400, 600); - cairo_stroke (cr); - - cairo_destroy (cr2); - - /* Test reset clip. Draw a transparent black circle over - * everything. Specifically, make sure the circle extends outside - * the square clip set at the top of this function. */ - cairo_reset_clip (cr); - cairo_arc (cr, 300, 300, 220, 0, 2 * M_PI); - cairo_set_source_rgba (cr, 0, 0, 0, 0.2); - cairo_fill (cr); -} - -static cairo_test_status_t -preamble (cairo_test_context_t *ctx) -{ - cairo_t *cr; - cairo_surface_t *surface; - char *filename; - const char *path = cairo_test_mkdir (CAIRO_TEST_OUTPUT_DIR) ? CAIRO_TEST_OUTPUT_DIR : "."; - - if (! cairo_test_is_target_enabled (ctx, "svg11") && - ! cairo_test_is_target_enabled (ctx, "svg12")) - { - return CAIRO_TEST_UNTESTED; - } - - xasprintf (&filename, "%s/%s.svg", path, BASENAME); - surface = cairo_svg_surface_create (filename, - WIDTH_IN_POINTS, HEIGHT_IN_POINTS); - if (cairo_surface_status (surface)) { - cairo_test_log (ctx, - "Failed to create svg surface for file %s: %s\n", - filename, cairo_status_to_string (cairo_surface_status (surface))); - free (filename); - return CAIRO_TEST_FAILURE; - } - - cr = cairo_create (surface); - - test_clip (cr, WIDTH_IN_POINTS, HEIGHT_IN_POINTS); - cairo_show_page (cr); - - cairo_destroy (cr); - cairo_surface_destroy (surface); - - printf ("svg-clip: Please check %s to make sure it looks happy.\n", - filename); - free (filename); - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (svg_clip, - "Test SVG clipping", - "svg, clip", /* keywords */ - NULL, /* requirements */ - 0, 0, - preamble, NULL) diff --git a/test/svg-surface-source.c b/test/svg-surface-source.c deleted file mode 100644 index 3c7730f..0000000 --- a/test/svg-surface-source.c +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright © 2008 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" -#include - -#include "surface-source.c" - -#define BASENAME "svg-surface-source.out" - -static cairo_surface_t * -create_source_surface (int size) -{ - cairo_surface_t *surface; - char *filename; - const char *path = cairo_test_mkdir (CAIRO_TEST_OUTPUT_DIR) ? CAIRO_TEST_OUTPUT_DIR : "."; - - xasprintf (&filename, "%s/%s.svg", path, BASENAME); - surface = cairo_svg_surface_create (filename, - size, size); - cairo_surface_set_fallback_resolution (surface, 72., 72.); - free (filename); - - return surface; -} - -CAIRO_TEST (svg_surface_source, - "Test using a SVG surface as the source", - "source", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - preamble, draw) diff --git a/test/svg-surface.c b/test/svg-surface.c deleted file mode 100644 index 13b006d..0000000 --- a/test/svg-surface.c +++ /dev/null @@ -1,136 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" - -#include - -#include - -/* Pretty boring test just to make sure things aren't crashing --- - * no verification that we're getting good results yet. - * But you can manually view the image to make sure it looks happy. - */ - -#define WIDTH_IN_INCHES 3 -#define HEIGHT_IN_INCHES 3 -#define WIDTH_IN_POINTS (WIDTH_IN_INCHES * 72) -#define HEIGHT_IN_POINTS (HEIGHT_IN_INCHES * 72) -#define BASENAME "svg-surface.out" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ -#define STROKE_WIDTH .04 - - double size; - - if (width > height) - size = height; - else - size = width; - - cairo_translate (cr, (width - size) / 2.0, (height - size) / 2.0); - cairo_scale (cr, size, size); - - /* Fill face */ - cairo_arc (cr, 0.5, 0.5, 0.5 - STROKE_WIDTH, 0, 2 * M_PI); - cairo_set_source_rgb (cr, 1, 1, 0); - cairo_save (cr); - { - cairo_fill (cr); - } - cairo_restore (cr); - - cairo_set_source_rgb (cr, 0, 0, 0); - - /* Stroke face */ - cairo_set_line_width (cr, STROKE_WIDTH / 2.0); - cairo_stroke (cr); - - /* Eyes */ - cairo_set_line_width (cr, STROKE_WIDTH); - cairo_arc (cr, 0.3, 0.4, STROKE_WIDTH, 0, 2 * M_PI); - cairo_fill (cr); - cairo_arc (cr, 0.7, 0.4, STROKE_WIDTH, 0, 2 * M_PI); - cairo_fill (cr); - - /* Mouth */ - cairo_move_to (cr, 0.3, 0.7); - cairo_curve_to (cr, - 0.4, 0.8, - 0.6, 0.8, - 0.7, 0.7); - cairo_stroke (cr); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -preamble (cairo_test_context_t *ctx) -{ - cairo_t *cr; - cairo_surface_t *surface; - char *filename; - const char *path = cairo_test_mkdir (CAIRO_TEST_OUTPUT_DIR) ? CAIRO_TEST_OUTPUT_DIR : "."; - - if (! cairo_test_is_target_enabled (ctx, "svg11") && - ! cairo_test_is_target_enabled (ctx, "svg12")) - { - return CAIRO_TEST_UNTESTED; - } - - xasprintf (&filename, "%s/%s.svg", path, BASENAME); - surface = cairo_svg_surface_create (filename, - WIDTH_IN_POINTS, HEIGHT_IN_POINTS); - if (cairo_surface_status (surface)) { - cairo_test_log (ctx, - "Failed to create svg surface for file %s: %s\n", - filename, - cairo_status_to_string (cairo_surface_status (surface))); - free (filename); - return CAIRO_TEST_FAILURE; - } - - cr = cairo_create (surface); - - draw (cr, WIDTH_IN_POINTS, HEIGHT_IN_POINTS); - - cairo_show_page (cr); - - cairo_destroy (cr); - cairo_surface_destroy (surface); - - printf ("svg-surface: Please check %s to make sure it looks happy.\n", filename); - free (filename); - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (svg_surface, - "Check creation of a SVG surface", - "svg", /* keywords */ - NULL, /* requirements */ - 0, 0, - preamble, NULL) diff --git a/test/svg2png.c b/test/svg2png.c deleted file mode 100644 index bdfbc8b..0000000 --- a/test/svg2png.c +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * Copyright © 2005 Emmanuel Pacaud - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Kristian Høgsberg - * Emmanuel Pacaud - */ - -#include -#include -#include -#include -#include - -#define FAIL(msg) \ - do { fprintf (stderr, "FAIL: %s\n", msg); exit (-1); } while (0) - -int main (int argc, char *argv[]) -{ - GError *error = NULL; - GdkPixbuf *pixbuf; - const char *filename = argv[1]; - const char *output_filename = argv[2]; - - if (argc != 3) - FAIL ("usage: svg2png input_file.svg output_file.png"); - - g_type_init (); - - error = NULL; - - rsvg_set_default_dpi (72.0); - pixbuf = rsvg_pixbuf_from_file (filename, &error); - if (error != NULL) - FAIL (error->message); - - gdk_pixbuf_save (pixbuf, output_filename, "png", &error, NULL); - if (error != NULL) - FAIL (error->message); - - g_object_unref (pixbuf); - return 0; -} diff --git a/test/testsvg b/test/testsvg deleted file mode 100755 index 9b18df5..0000000 --- a/test/testsvg +++ /dev/null @@ -1,51 +0,0 @@ -#!/bin/sh - -IMAGEDIFF=./imagediff - -OUTDIR=testsvg-output -REFDIR=testsvg-reference -DIFFDIR=testsvg-diff -IMAGELIST=testsvg-imagelist - -if [ $# -lt 1 ]; then - argv0=`basename $0` - echo "Usage: $argv0 file.svg [...]" >&2 - exit 1; -fi - -mkdir -p $OUTDIR -mkdir -p $DIFFDIR -rm -f $IMAGELIST - -err=0 -for svg in $@; do - svgbase=`basename $svg` - png=${svgbase/\.svg/.png} - outpng=$OUTDIR/$png - refpng=$REFDIR/$png - diffpng=$DIFFDIR/$png -# if xsvg $svg -p $outpng ; then - if svg2png $svg $outpng ; then - if [ -e $refpng ]; then - if $IMAGEDIFF $refpng $outpng > $diffpng; then - echo "Rendering of $svg matches." >&2 - rm -f $diffpng - else - echo "ERROR: Rendering of $svg differs from reference image." >&2 - echo $refpng $outpng $diffpng >> $IMAGELIST - err=$(($err+1)) - fi - else - echo "WARNING: No reference file found for $svg (looked in $refpng)" >&2 - fi - else - echo "ERROR: Failed to render $svg" >&2 - err=$(($err+1)) - fi -done - -if [ $err -gt 0 ] ; then - echo "Differences found in $err renderings." -else - echo "All renderings matched reference images." -fi diff --git a/test/testtable.js b/test/testtable.js deleted file mode 100644 index 4fc664f..0000000 --- a/test/testtable.js +++ /dev/null @@ -1,428 +0,0 @@ -/* configuration */ -/* TODO: UNTESTED count can't be shown because it's not tracked explicitly */ -headerResults = [ "PASS", "NEW", "FAIL", "XFAIL", "CRASHED" ]; -logResults = [ "PASS", "NEW", "FAIL", "XFAIL", "CRASH!" ]; -resultToImgs = { - "PASS" : [], - "NEW" : [ "output" ], - "FAIL" : [ "output", "difference", "reference" ], - "XFAIL" : [], - "UNTESTED" : [], - "CRASHED" : [] -}; - -resultToString = { - "PASS" : "", - "NEW" : "", - "FAIL" : "", - "XFAIL" : "", - "UNTESTED" : "", - "CRASHED" : "CRASHED!" -}; - -resultField = "result"; -rowFields = [ "test", "offset", "scale", "similar" ]; -colFields = [ "target", "format" ]; -allFields = [ resultField ].concat (rowFields, colFields); - - -/* globals: */ -function resetGlobals () { - dragElement = undefined; - table = document.getElementById ("testTable"); - while (table.rows.length) - table.deleteRow (0); - colsArray = [ "HrowHeader" ]; - colsMap = undefined; - headerId = "HcolHeader"; - - fTrue = function (x) { return true; }; - - empty = new Row (); - header = new Row (); - header[colsArray[0]].toString = function () { return ""; }; - - untested = new Test (); - untested[resultField] = "UNTESTED"; -} - - -/* utility functions */ -function isKey (key) { return key[key.length-1] == ':'; } -function normalizeKey (key) { return key.toLowerCase ().replace (/[^a-z0-9]/, ""); } -function isVisible (x) { return x.style.display != "none"; } - -function link (html, url) { return "" + html + ""; } -function image (url) { return ""; } -function span (html, id, cls) { return "" + html + ""; } - -function fieldsToHTML (bColumns, values) { - var fields = bColumns ? colFields : rowFields; - var prefix = bColumns ? "c" : "r"; - var tmpRE = arrayApply (function (x) { return "[^/]*"; }, fields); - var r = Array (); - for (var i = 0; i < fields.length; i++) - if (fields[i] == "test") { - r.push (link (values[fields[i]], "output/" + values[fields[i]] + ".log")); - } else { - tmpRE[i] = values[fields[i]]; - r.push (span (values[fields[i]], prefix + "/" + tmpRE.join ("/") + "/", fields[i])); - tmpRE[i] = "[^/]*"; - } - return r.join ("/"); -} - -function inArray (value, array) { - for (var i = 0; i < array.length; i++) - if (value == array[i]) - return true; - return false; -} - -function arrayApply (fun, array) { - var r = new Array (); - for (var i = 0; i < array.length; i++) - r.push (fun(array[i])); - return r; -} - -function arrayPred (pred, array) { - var r = new Array (); - for (var i = 0; i < array.length; i++) - if (pred (array[i])) - r.push (array[i]); - return r; -} - -function arrayMap (map, array) { return arrayApply (function (x) { return map[x]; }, array); } - -function binSearch (rows, newId){ - var min = 0; - var max = rows.length; - - while (max - min > 1) { - var mid = (max + min) >> 1; - if (rows[mid].id > newId) - max = mid; - else - min = mid; - } - - if (max == min) - return max; - else - return rows[min].id > newId ? min : max; -} - -/* dynamic table utils */ -function updateCurrent () { - for (var i = 0; i < table.rows.length; i++) { - var row = table.rows[i]; - if (isVisible (row)) { - /* j starts from 1 because we want to ignore _rowHeader */ - for (var j = 1; j < row.cells.length; j++) - if (row.id[0] == "H") - for (var k = 0; k < headerResults.length; k++) - header[row.cells[j].id].current[headerResults[k]] = 0; - else if (isVisible (row.cells[j])) - header[row.cells[j].id].current[row.cells[j].className]++; - } - } - - updateHeader (); -} - -function setVisible (array, subsetPred, visibilityPred, visibleFlag) { - var modified = false, somethingVisible = false; - for (var i = 0; i < array.length; i++) - if (array[i].id[0] != "H") { - if (subsetPred (array[i])) { - var wanted = visibilityPred (array[i]); - if (isVisible (array[i]) != wanted) { - modified = true; - array[i].style.display = wanted ? visibleFlag : "none"; - } - } - somethingVisible = somethingVisible || isVisible (array[i]); - } - return modified && somethingVisible; -} - -function setVisibleOnly (array, pred, visibleFlag) { - return setVisible (array, fTrue, pred, visibleFlag); -} - -function flipVisible (array, subsetPred, visibleFlag) { - return setVisible (array, subsetPred, function (x) { return !isVisible (x); }, visibleFlag); -} - - -/* event handling */ -function ignoreEvent (event) { - if (event.preventDefault) - event.preventDefault(); - else - event.returnValue= false; - return false; -} - -function mouseUp (event) { - var visFun; - if (event.button == 0) - visFun = setVisibleOnly; - else if (event.button == 2) - visFun = flipVisible; - else - return false; - - var structureFun; - if (event.target.id[0] == "r") /* rows */ - structureFun = function (f, p) { return f (table.rows, p, "table-row"); }; - else if (event.target.id[0] == "c") /* cols */ - structureFun = function (f, p) { return inArray (true, arrayApply (function (row) { return f (row.cells, p, "table-cell") }, table.rows)) }; - else - return false; - - var pred; - if (event.target.id[1] == "/") { /* regexp */ - var re = new RegExp (event.target.id); - pred = function (x) { return re.test (x.id); }; - } else if (event.target.id[1] == "#") { /* counters */ - var s = event.target.id.substr (2).split ("/"); - pred = function (row) { return row.cells[s[0]].className == s[1]; } - } else - return false; - - if (!structureFun (visFun, pred)) - if (!structureFun (flipVisible, fTrue)) - structureFun (flipVisible, fTrue); - - updateCurrent (); - - return false; -} - -function noDrag (event) { - dragElement = undefined; - return false; -} - -function startDrag (event) { - if (event.button == 0) - dragElement = event.target; - else - dragElement = undefined; - return false; -} - -function endDrag (event) { - if (!dragElement) - return false; - - if (event.currentTarget.id == colsArray[0] && - inArray (dragElement.className, colFields)) { - rowFields.push (dragElement.className); - colFields = arrayPred (function (x) { return x != dragElement.className; }, colFields); - } else if (event.currentTarget.id == headerId && - inArray (dragElement.className, rowFields)) { - colFields.push (dragElement.className); - rowFields = arrayPred (function (x) { return x != dragElement.className; }, rowFields); - } else - return true; - - reloadAll (); - return false; -} - - -/* table content */ -function Row (id, t) { - this[colsArray[0]] = new RowHeader (id, t); - - this.get = function (c) { return this[c] != undefined ? this[c] : untested; } - this.getHTML = function (c) { return this.get(c).toString (); }; - this.setStyle = function (c, element) { return this.get(c).setStyle (element); }; -} - -function ColumnHeader (id, values) { - this.id = id; - this.values = values; - this.total = new Object (); - this.current = new Object (); - - for (var i = 0; i < headerResults.length; i++) { - this.total[headerResults[i]] = 0; - this.current[headerResults[i]] = 0; - } - - this.toString = function () { - var counts = new Array (); - for (var i = 0; i < headerResults.length; i++) { - var hr = headerResults[i]; - var s = span (this.current[hr], "r#" + colsMap[this.id] + "/" + hr, hr); - if (this.current[hr] != this.total[hr]) - s += span ("[" + this.total[hr] + "]", "r#" + colsMap[this.id] + "/" + hr, hr); - counts.push (s); - } - - return fieldsToHTML (true, this.values) + "
    " + counts.join ("/"); - } - - this.setStyle = function (element) { }; -} - -function RowHeader (id, values) { - this.id = id; - this.values = values; - this.toString = function () { return fieldsToHTML (false, this.values); } - this.setStyle = function (element) { element.onmouseup = endDrag; }; -} - -function Test () { - this.rowId = function () { return "r/" + arrayMap (this, rowFields).join("/") + "/"; }; - this.colId = function () { return "c/" + arrayMap (this, colFields).join("/") + "/"; }; - this.isComplete = function () { return !inArray (undefined, arrayMap (this, allFields)); } - this.toString = function () { - var images = arrayMap (this, resultToImgs[this[resultField]]); - images = arrayPred (function (x) { return x != undefined; }, images); - images = arrayApply (function (x) { return link (image (x), x); }, images); - images.push (resultToString[this[resultField]]); - return images.join (" "); - }; - - this.setStyle = function (element) { element.className = this[resultField]; }; - - this.addData = function (array) { - for (var i = 0; i < array.length - 1; i += 2) - if (isKey (array[i])) - this[normalizeKey (array[i])] = array[i+1]; - }; -} - - -/* table creation */ -function insertCell (domRow, nid, tests) { - var domCell = domRow.insertCell (nid); - domCell.id = colsArray[nid]; - domCell.innerHTML = tests.getHTML (colsArray[nid]); - tests.setStyle (colsArray[nid], domCell); -} - -function updateRow (row, tests) { - var domRow = document.getElementById (row); - if (!domRow) { - domRow = table.insertRow (binSearch (table.rows, row)); - domRow.id = row; - } - - for (var i = 0; i < colsArray.length; i++) - if (i >= domRow.cells.length || domRow.cells[i].id != colsArray[i]) - insertCell (domRow, i, tests); -} - -function updateHeader () { - var visibility; - var domRow = document.getElementById (headerId); - if (domRow) { - visibility = new Object (); - for (var i = 0; i < domRow.cells.length; i++) - visibility[domRow.cells[i].id] = domRow.cells[i].style.display; - table.deleteRow (domRow.rowIndex); - } - - updateRow (headerId, header); - table.rows[0].onmouseup = endDrag; - - if (visibility) - for (var i = 0; i < colsArray.length; i++) - if (visibility[colsArray[i]]) - table.rows[0].cells[colsMap[colsArray[i]]].style.display = visibility[colsArray[i]]; -} - -function updateTable () { - colsArray.sort (); - - colsMap = new Object (); - for (var i = 0; i < colsArray.length; i++) - colsMap[colsArray[i]] = i; - - updateHeader (); - for (var i = 0; i < table.rows.length; i++) - updateRow (table.rows[i].id, empty); -} - - -/* log file parsing */ -function parseTest (testData) { - var colsChanged = false; - var rows = new Array (); - var data = new Object (); - var t = new Test (); - var lines = testData.replace (/\r/g, "").split ("\n"); - for (var i = 0; i < lines.length; i++) { - t.addData (lines[i].split (" ")); - if (t.isComplete ()) { - var c = t.colId (); - if (header[c] == undefined) { - colsArray.push (c); - header[c] = new ColumnHeader (c, t); - colsChanged = true; - } - - var r = t.rowId (); - if (!data[r]) { - rows.push (r); - data[r] = new Row (r, t); - } - - data[r][c] = t; - header[c].total[t[resultField]]++; - header[c].current[t[resultField]]++; - t = new Test (); - } - } - - if (colsChanged) - updateTable (); - else - updateHeader (); - - for (var i = 0; i < rows.length; i++) - updateRow (rows[i], data[rows[i]]); -} - -function parseFile (fileName, parser) { - var req = new XMLHttpRequest (); - req.onreadystatechange = function () { - if (req.readyState == 4) - parser (req.responseText); - } - - try { - req.open ("GET", fileName); - req.send (null); - } catch (e) {} -} - -function parseTestList (listData) { - var summaryRE = /\d+ Passed, \d+ Failed \x5b\d+ crashed, \d+ expected\x5d, \d+ Skipped/; - var lines = listData.replace (/\r/g, "").split ("\n"); - for (var i = 0; i < lines.length; i++) { - if (summaryRE.test (lines[i])) - return; - - var words = lines[i].split (" "); - if (words.length >= 2 && - words[0][words[0].length-1] == ":" && - inArray (words[1], logResults)) - parseFile ("output/" + words[0].substr (0, words[0].length-1) + ".log", parseTest); - } -} - -function reloadAll() { - resetGlobals (); - - parseFile ("cairo-test-suite.log", parseTestList); -} - -window.onload = reloadAll; diff --git a/test/text-antialias-subpixel.c b/test/text-antialias-subpixel.c deleted file mode 100644 index 6a65059..0000000 --- a/test/text-antialias-subpixel.c +++ /dev/null @@ -1,123 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * Copyright © 2011 Uli Schlachter - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Uli Schlachter - * - * Based on test/text-antialias.c - * Author: Carl D. Worth - */ - -#include "cairo-test.h" - -#define WIDTH 31 -#define HEIGHT 22 -#define TEXT_SIZE 12 - -static cairo_test_status_t -draw (cairo_t *cr, cairo_subpixel_order_t order) -{ - cairo_text_extents_t extents; - cairo_font_options_t *font_options; - const char black[] = "black", blue[] = "blue"; - - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); /* white */ - cairo_paint (cr); - - cairo_select_font_face (cr, CAIRO_TEST_FONT_FAMILY " Sans", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - cairo_set_font_size (cr, TEXT_SIZE); - - font_options = cairo_font_options_create (); - cairo_get_font_options (cr, font_options); - cairo_font_options_set_antialias (font_options, CAIRO_ANTIALIAS_SUBPIXEL); - cairo_font_options_set_subpixel_order (font_options, order); - cairo_set_font_options (cr, font_options); - - cairo_font_options_destroy (font_options); - - cairo_set_source_rgb (cr, 0, 0, 0); /* black */ - cairo_text_extents (cr, black, &extents); - cairo_move_to (cr, -extents.x_bearing, -extents.y_bearing); - cairo_show_text (cr, black); - cairo_translate (cr, 0, -extents.y_bearing + 1); - - cairo_set_source_rgb (cr, 0, 0, 1); /* blue */ - cairo_text_extents (cr, blue, &extents); - cairo_move_to (cr, -extents.x_bearing, -extents.y_bearing); - cairo_show_text (cr, blue); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -draw_rgb (cairo_t *cr, int width, int height) -{ - return draw (cr, CAIRO_SUBPIXEL_ORDER_RGB); -} - -static cairo_test_status_t -draw_bgr (cairo_t *cr, int width, int height) -{ - return draw (cr, CAIRO_SUBPIXEL_ORDER_BGR); -} - -static cairo_test_status_t -draw_vrgb (cairo_t *cr, int width, int height) -{ - return draw (cr, CAIRO_SUBPIXEL_ORDER_VRGB); -} - -static cairo_test_status_t -draw_vbgr (cairo_t *cr, int width, int height) -{ - return draw (cr, CAIRO_SUBPIXEL_ORDER_VBGR); -} - -CAIRO_TEST (text_antialias_subpixel_rgb, - "Tests text rendering with rgb subpixel antialiasing", - "text", /* keywords */ - "target=raster", /* requirements */ - WIDTH, HEIGHT, - NULL, draw_rgb) - -CAIRO_TEST (text_antialias_subpixel_bgr, - "Tests text rendering with bgr subpixel antialiasing", - "text", /* keywords */ - "target=raster", /* requirements */ - WIDTH, HEIGHT, - NULL, draw_bgr) - -CAIRO_TEST (text_antialias_subpixel_vrgb, - "Tests text rendering with vertical rgb subpixel antialiasing", - "text", /* keywords */ - "target=raster", /* requirements */ - WIDTH, HEIGHT, - NULL, draw_vrgb) - -CAIRO_TEST (text_antialias_subpixel_vbgr, - "Tests text rendering with vertical bgr subpixel antialiasing", - "text", /* keywords */ - "target=raster", /* requirements */ - WIDTH, HEIGHT, - NULL, draw_vbgr) diff --git a/test/text-antialias.c b/test/text-antialias.c deleted file mode 100644 index 7d33892..0000000 --- a/test/text-antialias.c +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" - -#define WIDTH 31 -#define HEIGHT 22 -#define TEXT_SIZE 12 - -static cairo_test_status_t -draw (cairo_t *cr, cairo_antialias_t antialias) -{ - cairo_text_extents_t extents; - cairo_font_options_t *font_options; - const char black[] = "black", blue[] = "blue"; - - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); /* white */ - cairo_paint (cr); - - cairo_select_font_face (cr, CAIRO_TEST_FONT_FAMILY " Sans", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - cairo_set_font_size (cr, TEXT_SIZE); - - font_options = cairo_font_options_create (); - cairo_get_font_options (cr, font_options); - cairo_font_options_set_antialias (font_options, antialias); - cairo_font_options_set_subpixel_order (font_options, CAIRO_SUBPIXEL_ORDER_RGB); - cairo_set_font_options (cr, font_options); - - cairo_font_options_destroy (font_options); - - cairo_set_source_rgb (cr, 0, 0, 0); /* black */ - cairo_text_extents (cr, black, &extents); - cairo_move_to (cr, -extents.x_bearing, -extents.y_bearing); - cairo_show_text (cr, black); - cairo_translate (cr, 0, -extents.y_bearing + 1); - - cairo_set_source_rgb (cr, 0, 0, 1); /* blue */ - cairo_text_extents (cr, blue, &extents); - cairo_move_to (cr, -extents.x_bearing, -extents.y_bearing); - cairo_show_text (cr, blue); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -draw_gray (cairo_t *cr, int width, int height) -{ - return draw (cr, CAIRO_ANTIALIAS_GRAY); -} - -static cairo_test_status_t -draw_none (cairo_t *cr, int width, int height) -{ - return draw (cr, CAIRO_ANTIALIAS_NONE); -} - -static cairo_test_status_t -draw_subpixel (cairo_t *cr, int width, int height) -{ - return draw (cr, CAIRO_ANTIALIAS_SUBPIXEL); -} - -CAIRO_TEST (text_antialias_gray, - "Tests text rendering with grayscale antialiasing", - "text", /* keywords */ - "target=raster", /* requirements */ - WIDTH, HEIGHT, - NULL, draw_gray) - -CAIRO_TEST (text_antialias_none, - "Tests text rendering with no antialiasing", - "text", /* keywords */ - "target=raster", /* requirements */ - WIDTH, HEIGHT, - NULL, draw_none) - -CAIRO_TEST (text_antialias_subpixel, - "Tests text rendering with subpixel antialiasing", - "text", /* keywords */ - "target=raster", /* requirements */ - WIDTH, HEIGHT, - NULL, draw_subpixel) diff --git a/test/text-cache-crash.c b/test/text-cache-crash.c deleted file mode 100644 index 4786af4..0000000 --- a/test/text-cache-crash.c +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright © 2004 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - */ - -/* Bug history - * - * 2004-11-04 Ned Konz - * - * Reported bug on mailing list: - * - * From: Ned Konz - * To: cairo@cairographics.org - * Date: Thu, 4 Nov 2004 09:49:38 -0800 - * Subject: [cairo] getting assertions [cairo_cache.c:143: _entry_destroy: - * Assertion `cache->used_memory > entry->memory' failed] - * - * The attached program dies on me with the assert - * - * $ ./testCairo - * testCairo: cairo_cache.c:143: _entry_destroy: Assertion `cache->used_memory > entry->memory' failed. - * - * 2004-11-04 Carl Worth - * - * I trimmed down Ned's example to the folllowing test while still - * maintaining the assertion. - * - * Oh, actually, it looks like I may have triggered something - * slightly different: - * - * text_cache_crash: cairo_cache.c:422: _cairo_cache_lookup: Assertion `cache->max_memory >= (cache->used_memory + new_entry->memory)' failed. - * - * I'll have to go back and try the original test after I fix this. - * - * 2004-11-13 Carl Worth - * - * Found the bug. cairo_gstate_select_font was noticing when the - * same font was selected twice in a row and was erroneously failing - * to free the old reference. Committed a fix and verified it also - * fixed the original test case. - */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - /* Once there was a bug that choked when selecting the same font twice. */ - cairo_select_font_face (cr, "sans", - CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_BOLD); - cairo_set_font_size (cr, 40.0); - - cairo_select_font_face (cr, "sans", - CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_BOLD); - cairo_set_font_size (cr, 40.0); - cairo_move_to (cr, 10, 50); - cairo_show_text (cr, "hello"); - - /* Then there was a bug that choked when selecting a font too big - * for the cache. */ - - cairo_set_font_size (cr, 500); - cairo_show_text (cr, "hello"); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (text_cache_crash, - "Test case for bug causing an assertion failure in _cairo_cache_lookup", - "text, stress", /* keywords */ - NULL, /* requirements */ - 0, 0, - NULL, draw) diff --git a/test/text-glyph-range.c b/test/text-glyph-range.c deleted file mode 100644 index 75b87d6..0000000 --- a/test/text-glyph-range.c +++ /dev/null @@ -1,125 +0,0 @@ -/* -*- Mode: c; c-basic-offset: 4; tab-width: 8; indent-tabs-mode: t; -*- */ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2006 Brian Ewins. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Brian Ewins not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Brian Ewins makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * BRIAN EWINS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL BRIAN EWINS BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Brian Ewins - */ - -/* Related to bug 9530 - * - * cairo_glyph_t can contain any unsigned long in its 'index', the intention - * being that it is large enough to hold a pointer. However, this means that - * it can specify many glyph indexes which don't exist in the font, and may - * exceed the range of legal glyph indexes for the font backend. It may - * also contain special values that are not usable as indexes - e.g. 0xffff is - * kATSDeletedGlyphcode in ATSUI, a glyph that should not be drawn. - * The font backends should handle all legal and out-of-range values - * consistently. - * - * This test expects that operations on out-of-range and missing glyphs should - * act as if they were zero-width. - */ - -#include "cairo-test.h" - -#define WIDTH 100 -#define HEIGHT 75 -#define NUM_TEXT 20 -#define TEXT_SIZE 12 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_text_extents_t extents; - int i; - /* Glyphs with no paths followed by 'cairo', the additional - * text is to make the space obvious. - */ - long int index[] = { - 0, /* 'no matching glyph' */ - 0xffff, /* kATSDeletedGlyphCode */ - 0x1ffff, /* out of range */ - -1L, /* out of range */ - 70, 68, 76, 85, 82 /* 'cairo' */ - }; - - /* We draw in the default black, so paint white first. */ - cairo_save (cr); - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); /* white */ - cairo_paint (cr); - cairo_restore (cr); - - cairo_select_font_face (cr, CAIRO_TEST_FONT_FAMILY " Sans", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - cairo_set_font_size (cr, 16); - - for (i = 0; i < 9; i++) { - /* since we're just drawing glyphs directly we need to position them. */ - cairo_glyph_t glyph = { - index[i], 10 * i, 25 - }; - - /* test cairo_glyph_extents. Every glyph index should - * have extents, invalid glyphs should be zero-width. - */ - cairo_move_to (cr, glyph.x, glyph.y); - cairo_set_line_width (cr, 1.0); - cairo_glyph_extents (cr, &glyph, 1, &extents); - cairo_rectangle (cr, - glyph.x + extents.x_bearing - 0.5, - glyph.y + extents.y_bearing - 0.5, - extents.width + 1, - extents.height + 1); - cairo_set_source_rgb (cr, 1, 0, 0); /* red */ - cairo_stroke (cr); - - /* test cairo_show_glyphs. Every glyph index should be - * drawable, invalid glyph indexes should draw nothing. - */ - cairo_set_source_rgb (cr, 0, 0, 0); /* black */ - cairo_show_glyphs (cr, &glyph, 1); - cairo_move_to (cr, glyph.x, glyph.y); - - /* test cairo_glyph_path. Every glyph index should produce - * a path, invalid glyph indexes should have empty paths. - */ - /* Change the glyph position - * so that the paths are visible. - */ - glyph.y = 55; - cairo_move_to (cr, glyph.x, glyph.y); - cairo_glyph_path (cr, &glyph, 1); - cairo_fill (cr); - } - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (text_glyph_range, - "Tests show_glyphs, glyph_path, glyph_extents with out of range glyph ids." - "\nft and atsui font backends fail, misreporting errors from FT_Load_Glyph and ATSUGlyphGetCubicPaths", - "text, stress", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/text-pattern.c b/test/text-pattern.c deleted file mode 100644 index 60267d6..0000000 --- a/test/text-pattern.c +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright © 2005 Tim Rowley - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Tim Rowley - */ - -#include "cairo-test.h" - -#define IMAGE_WIDTH 128 -#define IMAGE_HEIGHT 64 - - -static void -draw_text_pattern (cairo_t *cr, double alpha) -{ - cairo_pattern_t *pat; - - cairo_select_font_face (cr, CAIRO_TEST_FONT_FAMILY " Sans", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - - pat = cairo_pattern_create_linear (0.0, 0.0, 1, 1); - cairo_pattern_add_color_stop_rgba (pat, 1, 1, 0, 0, alpha); - cairo_pattern_add_color_stop_rgba (pat, 0, 0, 0, 1, alpha); - cairo_set_source (cr, pat); - - /* test rectangle - make sure the gradient is set correctly */ - cairo_rectangle (cr, 0, 0, 0.1, 1); - cairo_fill (cr); - - cairo_set_font_size (cr, 0.4); - cairo_move_to (cr, 0.1, 0.6); - cairo_show_text (cr, "cairo"); - - cairo_pattern_destroy (pat); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_scale (cr, width/2, height); - draw_text_pattern (cr, 1.0); - cairo_translate (cr, 1, 0); - draw_text_pattern (cr, 0.5); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (text_pattern, - "Patterned Text", - "text, pattern", /* keywords */ - NULL, /* requirements */ - IMAGE_WIDTH, IMAGE_HEIGHT, - NULL, draw) diff --git a/test/text-rotate.c b/test/text-rotate.c deleted file mode 100644 index 0a805ac..0000000 --- a/test/text-rotate.c +++ /dev/null @@ -1,189 +0,0 @@ -/* - * Copyright © 2004 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - */ - -/* Bug history - * - * 2004-11-03 Steve Chaplin - * - * Reported bug on mailing list: - * - * From: Steve Chaplin - * To: cairo@cairographics.org - * Date: Thu, 04 Nov 2004 00:00:17 +0800 - * Subject: [cairo] Rotated text bug on drawable target - * - * The attached file draws text rotated 90 degrees first to a PNG file and - * then to a drawable. The PNG file looks fine, the text on the drawable is - * unreadable. - * - * Steve - * - * 2004-11-03 Carl Worth - * - * Looks like the major problems with this bug appeared in the great - * font rework between 0.1.23 and 0.2.0. And it looks like we need - * to fix the regression test suite to test the xlib target (since - * the bug does not show up in the png backend). - * - * Hmm... Actually, things don't look perfect even in the PNG - * output. Look at how that 'o' moves around. It's particularly off - * in the case where it's rotated by PI. - * - * And I'm still not sure about what to do for test cases with - * text--a new version of freetype will change everything. We may - * need to add a simple backend for stroked fonts and add a simple - * builtin font to cairo for pixel-perfect tests with text. - * - * 2005-08-23 - * - * It appears that the worst placement and glyph selection problems - * have now been resolved. In the past some letters were noticeably - * of a different size at some rotations, and there was a lot of - * drift away from the baseline. These problems do not appear - * anymore. - * - * Another thing that helps is that we now have font options which - * we can use to disable hinting in order to get more repeatable - * results. I'm doing that in this test now. - * - * There are still some subtle positioning problems which I'm - * assuming are due to the lack of finer-than-whole-pixel glyph - * positioning. I'm generating a reference image now by replacing - * cairo_show_text with cairo_text_path; cairo_fill. This will let - * us look more closely at the remaining positioning problems. (In - * particular, I want to make sure we're rounding as well as - * possible). - * - * 2007-02-21 - * - * Seems like all the "bugs" have been fixed and all remaining is - * missing support for subpixel glyph positioning. Removing from - * XFAIL now. - */ - -#include "cairo-test.h" - -#define WIDTH 150 -#define HEIGHT 150 -#define NUM_TEXT 20 -#define TEXT_SIZE 12 - -/* Draw the word cairo at NUM_TEXT different angles. - * We separate the circle into quadrants to reduce - * numerical errors i.e. so each quarter is pixel-aligned. - */ -static void -draw_quadrant (cairo_t *cr, - const char *text, - const cairo_text_extents_t *extents, - const cairo_matrix_t *transform, - int x_off, int y_off) -{ - int i; - - for (i = 0; i < NUM_TEXT/4; i++) { - cairo_save (cr); - cairo_rotate (cr, 2*M_PI*i/NUM_TEXT); - cairo_transform (cr, transform); - cairo_set_line_width (cr, 1.0); - cairo_rectangle (cr, x_off - 0.5, y_off - 0.5, extents->width + 1, extents->height + 1); - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_stroke (cr); - cairo_move_to (cr, x_off - extents->x_bearing, y_off - extents->y_bearing); - cairo_set_source_rgb (cr, 0, 0, 0); -#if CAIRO_TEST_GENERATE_REFERENCE_IMAGE - cairo_text_path (cr, text); - cairo_fill (cr); -#else - cairo_show_text (cr, text); -#endif - cairo_restore (cr); - } -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_text_extents_t extents; - cairo_font_options_t *font_options; - const char text[] = "cairo"; - int x_off, y_off; - cairo_matrix_t m; - - /* paint white so we don't need separate ref images for - * RGB24 and ARGB32 */ - cairo_set_source_rgb (cr, 1., 1., 1.); - cairo_paint (cr); - - cairo_select_font_face (cr, CAIRO_TEST_FONT_FAMILY " Sans", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - cairo_set_font_size (cr, TEXT_SIZE); - - font_options = cairo_font_options_create (); - - cairo_get_font_options (cr, font_options); - cairo_font_options_set_hint_metrics (font_options, CAIRO_HINT_METRICS_OFF); - - cairo_set_font_options (cr, font_options); - cairo_font_options_destroy (font_options); - - cairo_set_source_rgb (cr, 0, 0, 0); - - cairo_translate (cr, WIDTH/2.0, HEIGHT/2.0); - - cairo_text_extents (cr, text, &extents); - - if (NUM_TEXT == 1) { - x_off = y_off = 0; - } else { - y_off = - floor (0.5 + extents.height / 2.0); - x_off = floor (0.5 + (extents.height+1) / (2 * tan (M_PI/NUM_TEXT))); - } - - cairo_save (cr); - cairo_matrix_init_identity (&m); - draw_quadrant (cr, text, &extents, &m, x_off, y_off); - cairo_matrix_init (&m, 0, 1, -1, 0, 0, 0); - draw_quadrant (cr, text, &extents, &m, x_off, y_off); - cairo_restore (cr); - - cairo_save (cr); - cairo_scale (cr, -1, -1); - cairo_matrix_init_identity (&m); - draw_quadrant (cr, text, &extents, &m, x_off, y_off); - cairo_matrix_init (&m, 0, 1, -1, 0, 0, 0); - draw_quadrant (cr, text, &extents, &m, x_off, y_off); - cairo_restore (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (text_rotate, - "Tests show_text under various rotations", - "text, transform", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/text-transform.c b/test/text-transform.c deleted file mode 100644 index 2cd7f10..0000000 --- a/test/text-transform.c +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Copyright © 2006 Mozilla Corporation - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Mozilla Corporation not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Mozilla Corporation makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * MOZILLA CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL MOZILLA CORPORATION BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Vladimir Vukicevic - */ - -#include "cairo-test.h" - -#define SIZE 100 -#define PAD 5 - -#define FONT_SIZE 32.0 - -static const char *png_filename = "romedalen.png"; - -static void -draw_text (cairo_t *cr) -{ - cairo_matrix_t tm; - - /* skew */ - cairo_matrix_init (&tm, 1, 0, - -0.25, 1, - 0, 0); - cairo_matrix_scale (&tm, FONT_SIZE, FONT_SIZE); - cairo_set_font_matrix (cr, &tm); - - cairo_new_path (cr); - cairo_move_to (cr, 50, SIZE-PAD); - cairo_show_text (cr, "A"); - - /* rotate and scale */ - cairo_matrix_init_rotate (&tm, M_PI / 2); - cairo_matrix_scale (&tm, FONT_SIZE, FONT_SIZE * 2.0); - cairo_set_font_matrix (cr, &tm); - - cairo_new_path (cr); - cairo_move_to (cr, PAD, PAD + 25); - cairo_show_text (cr, "A"); - - cairo_matrix_init_rotate (&tm, M_PI / 2); - cairo_matrix_scale (&tm, FONT_SIZE * 2.0, FONT_SIZE); - cairo_set_font_matrix (cr, &tm); - - cairo_new_path (cr); - cairo_move_to (cr, PAD, PAD + 50); - cairo_show_text (cr, "A"); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - const cairo_test_context_t *ctx = cairo_test_get_context (cr); - cairo_pattern_t *pattern; - - cairo_set_source_rgb (cr, 1., 1., 1.); - cairo_paint (cr); - - cairo_set_source_rgb (cr, 0., 0., 0.); - - cairo_select_font_face (cr, CAIRO_TEST_FONT_FAMILY " Sans", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - - draw_text (cr); - - cairo_translate (cr, SIZE, SIZE); - cairo_rotate (cr, M_PI); - - pattern = cairo_test_create_pattern_from_png (ctx, png_filename); - cairo_pattern_set_extend (pattern, CAIRO_EXTEND_REPEAT); - cairo_set_source (cr, pattern); - cairo_pattern_destroy (pattern); - - draw_text (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (text_transform, - "Test various applications of the font matrix", - "text, transform", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, draw) diff --git a/test/text-zero-len.c b/test/text-zero-len.c deleted file mode 100644 index 5e89816..0000000 --- a/test/text-zero-len.c +++ /dev/null @@ -1,203 +0,0 @@ -/* - * Copyright © 2006 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Behdad Esfahbod - */ - -/* Related bug 5177 - * - * In short: - * - * _cairo_atsui_font_text_to_glyph with a zero-sized string crashes. - * - * Moreover, the fallback path in cairo_scaled_font_text_to_glyphs() - * when handling a zero-sized string, allocates a zero-sized glyph array - * and when NULL is returned by malloc, recognizes that as an out-of-memory - * error. The glibc implementation of malloc() does not return NULL from - * malloc(0), but I don't think it's a safe assumption. - * - * By just bailing out on zero-sized text, we fix both issues. - */ - -#include "cairo-test.h" - -#define NUM_TEXT 20 -#define TEXT_SIZE 12 - -static cairo_bool_t -text_extents_equal (const cairo_text_extents_t *A, - const cairo_text_extents_t *B) -{ - return A->x_bearing == B->x_bearing && - A->y_bearing == B->y_bearing && - A->width == B->width && - A->height == B->height && - A->x_advance == B->x_advance && - A->y_advance == B->y_advance; -} - -static cairo_bool_t -font_extents_equal (const cairo_font_extents_t *A, - const cairo_font_extents_t *B) -{ - return A->ascent == B->ascent && - A->descent == B->descent && - A->height == B->height && - A->max_x_advance == B->max_x_advance && - A->max_y_advance == B->max_y_advance; -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - const cairo_test_context_t *ctx = cairo_test_get_context (cr); - cairo_text_extents_t extents, nil_extents; - cairo_font_extents_t font_extents, nil_font_extents; - cairo_scaled_font_t *scaled_font; - - cairo_select_font_face (cr, CAIRO_TEST_FONT_FAMILY " Sans", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - cairo_set_font_size (cr, 16); - - cairo_move_to (cr, 10, 25); - cairo_show_text (cr, NULL); - cairo_show_text (cr, ""); - cairo_show_glyphs (cr, NULL, 0); - cairo_show_glyphs (cr, (void*)8, 0); - - cairo_move_to (cr, 10, 55); - cairo_text_path (cr, NULL); - cairo_text_path (cr, ""); - cairo_glyph_path (cr, (void*)8, 0); - cairo_fill (cr); - - memset (&nil_extents, 0, sizeof (cairo_text_extents_t)); - - memset (&extents, 0xff, sizeof (cairo_text_extents_t)); - cairo_text_extents (cr, "", &extents); - if (! text_extents_equal (&extents, &nil_extents)) { - cairo_test_log (ctx, "Error: cairo_text_extents(\"\"); extents (%g, %g, %g, %g, %g, %g)\n", - extents.x_bearing, extents.y_bearing, - extents.width, extents.height, - extents.x_advance, extents.y_advance); - return CAIRO_TEST_FAILURE; - } - - memset (&extents, 0xff, sizeof (cairo_text_extents_t)); - cairo_text_extents (cr, NULL, &extents); - if (! text_extents_equal (&extents, &nil_extents)) { - cairo_test_log (ctx, "Error: cairo_text_extents(NULL); extents (%g, %g, %g, %g, %g, %g)\n", - extents.x_bearing, extents.y_bearing, - extents.width, extents.height, - extents.x_advance, extents.y_advance); - return CAIRO_TEST_FAILURE; - } - - memset (&extents, 0xff, sizeof (cairo_text_extents_t)); - cairo_glyph_extents (cr, (void*)8, 0, &extents); - if (! text_extents_equal (&extents, &nil_extents)) { - cairo_test_log (ctx, "Error: cairo_glyph_extents(); extents (%g, %g, %g, %g, %g, %g)\n", - extents.x_bearing, extents.y_bearing, - extents.width, extents.height, - extents.x_advance, extents.y_advance); - return CAIRO_TEST_FAILURE; - } - - scaled_font = cairo_get_scaled_font (cr); - - memset (&extents, 0xff, sizeof (cairo_text_extents_t)); - cairo_scaled_font_text_extents (scaled_font, "", &extents); - if (! text_extents_equal (&extents, &nil_extents)) { - cairo_test_log (ctx, "Error: cairo_scaled_font_text_extents(\"\"); extents (%g, %g, %g, %g, %g, %g)\n", - extents.x_bearing, extents.y_bearing, - extents.width, extents.height, - extents.x_advance, extents.y_advance); - return CAIRO_TEST_FAILURE; - } - - memset (&extents, 0xff, sizeof (cairo_text_extents_t)); - cairo_scaled_font_text_extents (scaled_font, NULL, &extents); - if (! text_extents_equal (&extents, &nil_extents)) { - cairo_test_log (ctx, "Error: cairo_scaled_font_text_extents(NULL); extents (%g, %g, %g, %g, %g, %g)\n", - extents.x_bearing, extents.y_bearing, - extents.width, extents.height, - extents.x_advance, extents.y_advance); - return CAIRO_TEST_FAILURE; - } - - memset (&extents, 0xff, sizeof (cairo_text_extents_t)); - cairo_scaled_font_glyph_extents (scaled_font, (void*)8, 0, &extents); - if (! text_extents_equal (&extents, &nil_extents)) { - cairo_test_log (ctx, "Error: cairo_scaled_font_glyph_extents(NULL); extents (%g, %g, %g, %g, %g, %g)\n", - extents.x_bearing, extents.y_bearing, - extents.width, extents.height, - extents.x_advance, extents.y_advance); - return CAIRO_TEST_FAILURE; - } - - /* Lets also try font size 0 while here */ - cairo_set_font_size (cr, 0); - - memset (&extents, 0xff, sizeof (cairo_text_extents_t)); - cairo_text_extents (cr, "test", &extents); - if (! text_extents_equal (&extents, &nil_extents)) { - cairo_test_log (ctx, "Error: cairo_set_font_size(0); cairo_text_extents(\"test\"); extents (%g, %g, %g, %g, %g, %g)\n", - extents.x_bearing, extents.y_bearing, - extents.width, extents.height, - extents.x_advance, extents.y_advance); - return CAIRO_TEST_FAILURE; - } - - memset (&nil_font_extents, 0, sizeof (cairo_font_extents_t)); - - memset (&font_extents, 0xff, sizeof (cairo_font_extents_t)); - cairo_font_extents (cr, &font_extents); - if (! font_extents_equal (&font_extents, &nil_font_extents)) { - cairo_test_log (ctx, "Error: cairo_set_font_size(0); cairo_font_extents(); extents (%g, %g, %g, %g, %g)\n", - font_extents.ascent, font_extents.descent, - font_extents.height, - font_extents.max_x_advance, font_extents.max_y_advance); - return CAIRO_TEST_FAILURE; - } - - scaled_font = cairo_get_scaled_font (cr); - - memset (&font_extents, 0xff, sizeof (cairo_font_extents_t)); - cairo_scaled_font_extents (scaled_font, &font_extents); - if (! font_extents_equal (&font_extents, &nil_font_extents)) { - cairo_test_log (ctx, "Error: cairo_set_font_size(0); cairo_scaled_font_extents(); extents (%g, %g, %g, %g, %g)\n", - font_extents.ascent, font_extents.descent, - font_extents.height, - font_extents.max_x_advance, font_extents.max_y_advance); - return CAIRO_TEST_FAILURE; - } - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (text_zero_len, - "Tests show_text and text_path with a zero-sized string", - "text, stress, extents", /* keywords */ - NULL, /* requirements */ - 0, 0, - NULL, draw) diff --git a/test/tiger.c b/test/tiger.c deleted file mode 100644 index 059bb84..0000000 --- a/test/tiger.c +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -#include "cairo-test.h" - -#include "tiger.inc" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - unsigned int i; - - cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); - cairo_set_source_rgba (cr, 0.1, 0.2, 0.3, 1.0); - cairo_paint (cr); - cairo_set_operator (cr, CAIRO_OPERATOR_OVER); - - cairo_translate (cr, width/2, height/2); - cairo_scale (cr, .85, .85); - - for (i = 0; i < ARRAY_LENGTH(tiger_commands); i++) { - const struct command *cmd = &tiger_commands[i]; - switch (cmd->type) { - case 'm': - cairo_move_to (cr, cmd->x0, cmd->y0); - break; - case 'l': - cairo_line_to (cr, cmd->x0, cmd->y0); - break; - case 'c': - cairo_curve_to (cr, - cmd->x0, cmd->y0, - cmd->x1, cmd->y1, - cmd->x2, cmd->y2); - break; - case 'f': - cairo_set_source_rgba (cr, - cmd->x0, cmd->y0, cmd->x1, cmd->y1); - cairo_fill (cr); - break; - } - } - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -a1_draw (cairo_t *cr, int width, int height) -{ - cairo_set_antialias (cr, CAIRO_ANTIALIAS_NONE); - return draw (cr, width, height); -} - -CAIRO_TEST (tiger, - "Check the fidelity of the rasterisation.", - "raster", /* keywords */ - NULL, /* requirements */ - 500, 500, - NULL, draw) - -CAIRO_TEST (a1_tiger, - "Check the fidelity of the rasterisation.", - "fill", /* keywords */ - "target=raster", /* requirements */ - 500, 500, - NULL, a1_draw) diff --git a/test/tiger.inc b/test/tiger.inc deleted file mode 100644 index 419b979..0000000 --- a/test/tiger.inc +++ /dev/null @@ -1,2316 +0,0 @@ -static const struct command { - char type; - float x0, y0; - float x1, y1; - float x2, y2; -} tiger_commands[] = { -{'m', -122.30, 84.28, 0, 0, 0, 0}, -{'c', -122.30, 84.28, -122.20 ,86.18, -123.03, 86.16}, -{'c', -123.85, 86.14, -140.31 ,38.07, -160.83, 40.31}, -{'f', 1.000000,1.000000,1.000000,1.000000,0,0 }, -{'m', -118.77, 81.26, 0, 0, 0, 0}, -{'c', -118.77, 81.26, -119.32 ,83.08, -120.09, 82.78}, -{'c', -120.86, 82.48, -119.98 ,31.68, -140.04, 26.80}, -{'f', 1.000000,1.000000,1.000000,1.000000,0,0 }, -{'m', -91.28, 123.59, 0, 0, 0, 0}, -{'c', -91.28, 123.59, -89.65 ,124.55, -90.12, 125.23}, -{'c', -90.59, 125.90, -139.76 ,113.10, -149.22, 131.46}, -{'f', 1.000000,1.000000,1.000000,1.000000,0,0 }, -{'m', -94.09, 133.80, 0, 0, 0, 0}, -{'c', -94.09, 133.80, -92.24 ,134.20, -92.47, 134.99}, -{'c', -92.70, 135.78, -143.41 ,139.12, -146.60, 159.52}, -{'f', 1.000000,1.000000,1.000000,1.000000,0,0 }, -{'m', -98.30, 128.28, 0, 0, 0, 0}, -{'c', -98.30, 128.28, -96.53 ,128.94, -96.87, 129.69}, -{'c', -97.22, 130.44, -147.87 ,126.35, -154.00, 146.06}, -{'f', 1.000000,1.000000,1.000000,1.000000,0,0 }, -{'m', -109.01, 110.07, 0, 0, 0, 0}, -{'c', -109.01, 110.07, -107.70 ,111.45, -108.34, 111.97}, -{'c', -108.98, 112.49, -152.72 ,86.63, -166.87, 101.68}, -{'f', 1.000000,1.000000,1.000000,1.000000,0,0 }, -{'m', -116.55, 114.26, 0, 0, 0, 0}, -{'c', -116.55, 114.26, -115.10 ,115.48, -115.67, 116.07}, -{'c', -116.25, 116.66, -162.64 ,95.92, -174.99, 112.47}, -{'f', 1.000000,1.000000,1.000000,1.000000,0,0 }, -{'m', -119.15, 118.33, 0, 0, 0, 0}, -{'c', -119.15, 118.33, -117.55 ,119.34, -118.04, 120.01}, -{'c', -118.53, 120.67, -167.31 ,106.45, -177.29, 124.52}, -{'f', 1.000000,1.000000,1.000000,1.000000,0,0 }, -{'m', -108.42, 118.95, 0, 0, 0, 0}, -{'c', -108.42, 118.95, -107.30 ,120.48, -108.00, 120.92}, -{'c', -108.70, 121.35, -148.77 ,90.10, -164.73, 103.21}, -{'f', 1.000000,1.000000,1.000000,1.000000,0,0 }, -{'m', -128.20, 90.00, 0, 0, 0, 0}, -{'c', -128.20, 90.00, -127.60 ,91.80, -128.40, 92.00}, -{'c', -129.20, 92.20, -157.80 ,50.20, -177.00, 57.80}, -{'f', 1.000000,1.000000,1.000000,1.000000,0,0 }, -{'m', -127.50, 96.98, 0, 0, 0, 0}, -{'c', -127.50, 96.98, -126.53 ,98.61, -127.27, 98.97}, -{'c', -128.01, 99.34, -164.99 ,64.50, -182.10, 76.06}, -{'f', 1.000000,1.000000,1.000000,1.000000,0,0 }, -{'m', -127.62, 101.35, 0, 0, 0, 0}, -{'c', -127.62, 101.35, -126.50 ,102.88, -127.20, 103.31}, -{'c', -127.90, 103.75, -167.97 ,72.50, -183.93, 85.61}, -{'f', 1.000000,1.000000,1.000000,1.000000,0,0 }, -{'m', -129.83, 103.06, 0, 0, 0, 0}, -{'c', -129.33, 109.11, -128.34 ,115.68, -126.60, 118.80}, -{'c', -126.60, 118.80, -130.20 ,131.20, -121.40, 144.40}, -{'c', -121.40, 144.40, -121.80 ,151.60, -120.20, 154.80}, -{'c', -120.20, 154.80, -116.20 ,163.20, -111.40, 164.00}, -{'c', -107.52, 164.65, -98.79 ,167.72, -88.93, 169.12}, -{'c', -88.93, 169.12, -71.80 ,183.20, -75.00, 196.00}, -{'c', -75.00, 196.00, -75.40 ,212.40, -79.00, 214.00}, -{'c', -79.00, 214.00, -67.40 ,202.80, -77.00, 219.60}, -{'l', -81.40, 238.40, 0, 0, 0, 0}, -{'c', -81.40, 238.40, -55.80 ,216.80, -71.40, 235.20}, -{'l', -81.40, 261.20, 0, 0, 0, 0}, -{'c', -81.40, 261.20, -61.80 ,242.80, -69.00, 251.20}, -{'l', -72.20, 260.00, 0, 0, 0, 0}, -{'c', -72.20, 260.00, -29.00 ,232.80, -59.80, 262.40}, -{'c', -59.80, 262.40, -51.80 ,258.80, -47.40, 261.60}, -{'c', -47.40, 261.60, -40.60 ,260.40, -41.40, 262.00}, -{'c', -41.40, 262.00, -62.20 ,272.40, -65.80, 290.80}, -{'c', -65.80, 290.80, -57.40 ,280.80, -60.60, 291.60}, -{'l', -60.20, 303.20, 0, 0, 0, 0}, -{'c', -60.20, 303.20, -56.20 ,281.60, -56.60, 319.20}, -{'c', -56.60, 319.20, -37.40 ,301.20, -49.00, 322.00}, -{'l', -49.00, 338.80, 0, 0, 0, 0}, -{'c', -49.00, 338.80, -33.80 ,322.40, -40.20, 335.20}, -{'c', -40.20, 335.20, -30.20 ,326.40, -34.20, 341.60}, -{'c', -34.20, 341.60, -35.00 ,352.00, -30.60, 340.80}, -{'c', -30.60, 340.80, -14.60 ,310.20, -20.60, 336.40}, -{'c', -20.60, 336.40, -21.40 ,355.60, -16.60, 340.80}, -{'c', -16.60, 340.80, -16.20 ,351.20, -7.00, 358.40}, -{'c', -7.00, 358.40, -8.20 ,307.60, 4.60, 343.60}, -{'l', 8.60, 360.00, 0, 0, 0, 0}, -{'c', 8.60, 360.00, 11.40 ,350.80, 11.00, 345.60}, -{'c', 11.00, 345.60, 25.80 ,329.20, 19.00, 353.60}, -{'c', 19.00, 353.60, 34.20 ,330.80, 31.00, 344.00}, -{'c', 31.00, 344.00, 23.40 ,360.00, 25.00, 364.80}, -{'c', 25.00, 364.80, 41.80 ,330.00, 43.00, 328.40}, -{'c', 43.00, 328.40, 41.00 ,370.80, 51.80, 334.80}, -{'c', 51.80, 334.80, 57.40 ,346.80, 54.60, 351.20}, -{'c', 54.60, 351.20, 62.60 ,343.20, 61.80, 340.00}, -{'c', 61.80, 340.00, 66.40 ,331.80, 69.20, 345.40}, -{'c', 69.20, 345.40, 71.00 ,354.80, 72.60, 351.60}, -{'c', 72.60, 351.60, 76.60 ,375.60, 77.80, 352.80}, -{'c', 77.80, 352.80, 79.40 ,339.20, 72.20, 327.60}, -{'c', 72.20, 327.60, 73.00 ,324.40, 70.20, 320.40}, -{'c', 70.20, 320.40, 83.80 ,342.00, 76.60, 313.20}, -{'c', 76.60, 313.20, 87.80 ,321.20, 89.00, 321.20}, -{'c', 89.00, 321.20, 75.40 ,298.00, 84.20, 302.80}, -{'c', 84.20, 302.80, 79.00 ,292.40, 97.00, 304.40}, -{'c', 97.00, 304.40, 81.00 ,288.40, 98.60, 298.00}, -{'c', 98.60, 298.00, 106.60 ,304.40, 99.00, 294.40}, -{'c', 99.00, 294.40, 84.60 ,278.40, 106.60, 296.40}, -{'c', 106.60, 296.40, 118.20 ,312.80, 119.00, 315.60}, -{'c', 119.00, 315.60, 109.00 ,286.40, 104.60, 283.60}, -{'c', 104.60, 283.60, 113.00 ,247.20, 154.20, 262.80}, -{'c', 154.20, 262.80, 161.00 ,280.00, 165.40, 261.60}, -{'c', 165.40, 261.60, 178.20 ,255.20, 189.40, 282.80}, -{'c', 189.40, 282.80, 193.40 ,269.20, 192.60, 266.40}, -{'c', 192.60, 266.40, 199.40 ,267.60, 198.60, 266.40}, -{'c', 198.60, 266.40, 211.80 ,270.80, 213.00, 270.00}, -{'c', 213.00, 270.00, 219.80 ,276.80, 220.20, 273.20}, -{'c', 220.20, 273.20, 229.40 ,276.00, 227.40, 272.40}, -{'c', 227.40, 272.40, 236.20 ,288.00, 236.60, 291.60}, -{'l', 239.00, 277.60, 0, 0, 0, 0}, -{'l', 241.00, 280.40, 0, 0, 0, 0}, -{'c', 241.00, 280.40, 242.60 ,272.80, 241.80, 271.60}, -{'c', 241.00, 270.40, 261.80 ,278.40, 266.60, 299.20}, -{'l', 268.60, 307.60, 0, 0, 0, 0}, -{'c', 268.60, 307.60, 274.60 ,292.80, 273.00, 288.80}, -{'c', 273.00, 288.80, 278.20 ,289.60, 278.60, 294.00}, -{'c', 278.60, 294.00, 282.60 ,270.80, 277.80, 264.80}, -{'c', 277.80, 264.80, 282.20 ,264.00, 283.40, 267.60}, -{'l', 283.40, 260.40, 0, 0, 0, 0}, -{'c', 283.40, 260.40, 290.60 ,261.20, 290.60, 258.80}, -{'c', 290.60, 258.80, 295.00 ,254.80, 297.00, 259.60}, -{'c', 297.00, 259.60, 284.60 ,224.40, 303.00, 243.60}, -{'c', 303.00, 243.60, 310.20 ,254.40, 306.60, 235.60}, -{'c', 303.00, 216.80, 299.00 ,215.20, 303.80, 214.80}, -{'c', 303.80, 214.80, 304.60 ,211.20, 302.60, 209.60}, -{'c', 300.60, 208.00, 303.80 ,209.60, 303.80, 209.60}, -{'c', 303.80, 209.60, 308.60 ,213.60, 303.40, 191.60}, -{'c', 303.40, 191.60, 309.80 ,193.20, 297.80, 164.00}, -{'c', 297.80, 164.00, 300.60 ,161.60, 296.60, 153.20}, -{'c', 296.60, 153.20, 304.60 ,157.60, 307.40, 156.00}, -{'c', 307.40, 156.00, 307.00 ,154.40, 303.80, 150.40}, -{'c', 303.80, 150.40, 282.20 ,95.60, 302.60, 117.60}, -{'c', 302.60, 117.60, 314.45 ,131.15, 308.05, 108.35}, -{'c', 308.05, 108.35, 298.94 ,84.34, 299.72, 80.05}, -{'f', 1.000000,1.000000,1.000000,1.000000,0,0 }, -{'m', 299.72, 80.25, 0, 0, 0, 0}, -{'c', 300.35, 80.43, 302.55 ,81.55, 303.80, 83.20}, -{'c', 303.80, 83.20, 310.60 ,94.00, 305.40, 75.60}, -{'c', 305.40, 75.60, 296.20 ,46.80, 305.00, 58.00}, -{'c', 305.00, 58.00, 311.00 ,65.20, 307.80, 51.60}, -{'c', 303.94, 35.17, 301.40 ,28.80, 301.40, 28.80}, -{'c', 301.40, 28.80, 313.00 ,33.60, 286.20, -6.00}, -{'l', 295.00, -2.40, 0, 0, 0, 0}, -{'c', 295.00, -2.40, 275.40 ,-42.00, 253.80, -47.20}, -{'l', 245.80, -53.20, 0, 0, 0, 0}, -{'c', 245.80, -53.20, 284.20 ,-91.20, 271.40, -128.00}, -{'c', 271.40, -128.00, 264.60 ,-133.20, 255.00, -124.00}, -{'c', 255.00, -124.00, 248.60 ,-119.20, 242.60, -120.80}, -{'c', 242.60, -120.80, 211.80 ,-119.60, 209.80, -119.60}, -{'c', 207.80, -119.60, 173.00 ,-156.80, 107.40, -139.20}, -{'c', 107.40, -139.20, 102.20 ,-137.20, 97.80, -138.40}, -{'c', 97.80, -138.40, 79.40 ,-154.40, 30.60, -131.60}, -{'c', 30.60, -131.60, 20.60 ,-129.60, 19.00, -129.60}, -{'c', 17.40, -129.60, 14.60 ,-129.60, 6.60, -123.20}, -{'c', -1.40, -116.80, -1.80 ,-116.00, -3.80, -114.40}, -{'c', -3.80, -114.40, -20.20 ,-103.20, -25.00, -102.40}, -{'c', -25.00, -102.40, -36.60 ,-96.00, -41.00, -86.00}, -{'l', -44.60, -84.80, 0, 0, 0, 0}, -{'c', -44.60, -84.80, -46.20 ,-77.60, -46.60, -76.40}, -{'c', -46.60, -76.40, -51.40 ,-72.80, -52.20, -67.20}, -{'c', -52.20, -67.20, -61.00 ,-61.20, -60.60, -56.80}, -{'c', -60.60, -56.80, -62.20 ,-51.60, -63.00, -46.80}, -{'c', -63.00, -46.80, -70.20 ,-42.00, -69.40, -39.20}, -{'c', -69.40, -39.20, -77.00 ,-25.20, -75.80, -18.40}, -{'c', -75.80, -18.40, -82.20 ,-18.80, -85.00, -16.40}, -{'c', -85.00, -16.40, -85.80 ,-11.60, -87.40, -11.20}, -{'c', -87.40, -11.20, -90.20 ,-10.00, -87.80, -6.00}, -{'c', -87.80, -6.00, -89.40 ,-3.20, -89.80, -1.60}, -{'c', -89.80, -1.60, -89.00 ,1.20, -93.40, 6.80}, -{'c', -93.40, 6.80, -99.80 ,25.60, -97.80, 30.80}, -{'c', -97.80, 30.80, -97.40 ,35.60, -100.20, 37.20}, -{'c', -100.20, 37.20, -103.80 ,36.80, -95.40, 48.80}, -{'c', -95.40, 48.80, -94.60 ,50.00, -97.80, 52.40}, -{'c', -97.80, 52.40, -115.00 ,56.00, -117.40, 72.40}, -{'c', -117.40, 72.40, -131.00 ,87.20, -131.00, 92.40}, -{'c', -131.00, 94.70, -130.73 ,97.85, -130.03, 102.47}, -{'c', -130.03, 102.47, -130.60 ,110.80, -103.00, 111.60}, -{'f', 0.804000,0.469000,0.134000,1.000000,0,0 }, -{'m', -115.60, 102.60, 0, 0, 0, 0}, -{'c', -140.60, 63.20, -126.20 ,119.60, -126.20, 119.60}, -{'c', -117.40, 154.00, 12.20 ,116.40, 12.20, 116.40}, -{'c', 12.20, 116.40, 181.00 ,86.00, 192.20, 82.00}, -{'c', 203.40, 78.00, 298.60 ,84.40, 298.60, 84.40}, -{'l', 293.00, 67.60, 0, 0, 0, 0}, -{'c', 228.20, 21.20, 209.00 ,44.40, 195.40, 40.40}, -{'c', 181.80, 36.40, 184.20 ,46.00, 181.00, 46.80}, -{'c', 177.80, 47.60, 138.60 ,22.80, 132.20, 23.60}, -{'c', 125.80, 24.40, 100.46 ,0.65, 115.40, 32.40}, -{'c', 131.40, 66.40, 57.00 ,71.60, 40.20, 60.40}, -{'c', 23.40, 49.20, 47.40 ,78.80, 47.40, 78.80}, -{'c', 65.80, 98.80, 31.40 ,82.00, 31.40, 82.00}, -{'c', -3.00, 69.20, -27.00 ,94.80, -30.20, 95.60}, -{'c', -33.40, 96.40, -38.20 ,99.60, -39.00, 93.20}, -{'c', -39.80, 86.80, -47.31 ,70.10, -79.00, 96.40}, -{'c', -99.00, 113.00, -112.80 ,91.00, -112.80, 91.00}, -{'f', 0.804000,0.469000,0.134000,1.000000,0,0 }, -{'m', 133.51, 25.35, 0, 0, 0, 0}, -{'c', 127.11, 26.15, 101.74 ,2.41, 116.71, 34.15}, -{'c', 133.31, 69.35, 58.31 ,73.35, 41.51, 62.15}, -{'c', 24.71, 50.95, 48.71 ,80.55, 48.71, 80.55}, -{'c', 67.11, 100.55, 32.71 ,83.75, 32.71, 83.75}, -{'c', -1.69, 70.95, -25.69 ,96.55, -28.89, 97.35}, -{'c', -32.09, 98.15, -36.89 ,101.35, -37.69, 94.95}, -{'c', -38.49, 88.55, -45.87 ,72.01, -77.69, 98.15}, -{'c', -98.93, 115.49, -112.42 ,94.04, -112.42, 94.04}, -{'l', -115.62, 104.15, 0, 0, 0, 0}, -{'c', -140.62, 64.35, -125.55 ,122.66, -125.55, 122.66}, -{'c', -116.75, 157.06, 13.51 ,118.15, 13.51, 118.15}, -{'c', 13.51, 118.15, 182.31 ,87.75, 193.51, 83.75}, -{'c', 204.71, 79.75, 299.04 ,86.07, 299.04, 86.07}, -{'l', 293.51, 68.76, 0, 0, 0, 0}, -{'c', 228.71, 22.36, 210.31 ,46.15, 196.71, 42.15}, -{'c', 183.11, 38.15, 185.51 ,47.75, 182.31, 48.55}, -{'f', 0.938000,0.469000,0.201000,1.000000,0,0 }, -{'m', 134.82, 27.09, 0, 0, 0, 0}, -{'c', 128.42, 27.89, 103.69 ,3.86, 118.02, 35.89}, -{'c', 134.22, 72.09, 59.62 ,75.09, 42.82, 63.89}, -{'c', 26.02, 52.69, 50.02 ,82.29, 50.02, 82.29}, -{'c', 68.42, 102.29, 34.02 ,85.49, 34.02, 85.49}, -{'c', -0.38, 72.69, -24.38 ,98.29, -27.58, 99.09}, -{'c', -30.78, 99.89, -35.58 ,103.09, -36.38, 96.69}, -{'c', -37.18, 90.29, -44.43 ,73.92, -76.38, 99.89}, -{'c', -98.86, 117.98, -112.04 ,97.07, -112.04, 97.07}, -{'l', -115.64, 105.69, 0, 0, 0, 0}, -{'c', -139.44, 66.69, -124.89 ,125.71, -124.89, 125.71}, -{'c', -116.09, 160.11, 14.82 ,119.89, 14.82, 119.89}, -{'c', 14.82, 119.89, 183.62 ,89.49, 194.82, 85.49}, -{'c', 206.02, 81.49, 299.47 ,87.75, 299.47, 87.75}, -{'l', 294.02, 69.93, 0, 0, 0, 0}, -{'c', 229.22, 23.53, 211.62 ,47.89, 198.02, 43.89}, -{'c', 184.42, 39.89, 186.82 ,49.49, 183.62, 50.29}, -{'f', 0.938000,0.536000,0.268000,1.000000,0,0 }, -{'m', 136.13, 28.84, 0, 0, 0, 0}, -{'c', 129.73, 29.64, 105.00 ,5.61, 119.33, 37.64}, -{'c', 136.13, 75.19, 60.39 ,76.48, 44.13, 65.64}, -{'c', 27.33, 54.44, 51.33 ,84.04, 51.33, 84.04}, -{'c', 69.73, 104.04, 35.33 ,87.24, 35.33, 87.24}, -{'c', 0.93, 74.44, -23.07 ,100.04, -26.27, 100.84}, -{'c', -29.47, 101.64, -34.27 ,104.84, -35.07, 98.44}, -{'c', -35.87, 92.04, -42.99 ,75.84, -75.07, 101.64}, -{'c', -98.78, 120.47, -111.66 ,100.11, -111.66, 100.11}, -{'l', -115.66, 107.24, 0, 0, 0, 0}, -{'c', -137.46, 70.44, -124.24 ,128.76, -124.24, 128.76}, -{'c', -115.44, 163.16, 16.13 ,121.64, 16.13, 121.64}, -{'c', 16.13, 121.64, 184.93 ,91.24, 196.13, 87.24}, -{'c', 207.33, 83.24, 299.91 ,89.42, 299.91, 89.42}, -{'l', 294.53, 71.09, 0, 0, 0, 0}, -{'c', 229.73, 24.69, 212.93 ,49.64, 199.33, 45.64}, -{'c', 185.73, 41.64, 188.13 ,51.24, 184.93, 52.04}, -{'f', 0.938000,0.603000,0.402000,1.000000,0,0 }, -{'m', 137.44, 30.58, 0, 0, 0, 0}, -{'c', 131.04, 31.38, 106.81 ,7.13, 120.64, 39.38}, -{'c', 137.44, 78.58, 62.24 ,78.58, 45.44, 67.38}, -{'c', 28.64, 56.18, 52.64 ,85.78, 52.64, 85.78}, -{'c', 71.04, 105.78, 36.64 ,88.98, 36.64, 88.98}, -{'c', 2.24, 76.18, -21.76 ,101.78, -24.96, 102.58}, -{'c', -28.16, 103.38, -32.96 ,106.58, -33.76, 100.18}, -{'c', -34.56, 93.78, -41.55 ,77.75, -73.76, 103.38}, -{'c', -98.71, 122.97, -111.27 ,103.15, -111.27, 103.15}, -{'l', -115.67, 108.78, 0, 0, 0, 0}, -{'c', -135.47, 73.98, -123.58 ,131.82, -123.58, 131.82}, -{'c', -114.78, 166.22, 17.44 ,123.38, 17.44, 123.38}, -{'c', 17.44, 123.38, 186.24 ,92.98, 197.44, 88.98}, -{'c', 208.64, 84.98, 300.35 ,91.09, 300.35, 91.09}, -{'l', 295.04, 72.25, 0, 0, 0, 0}, -{'c', 230.24, 25.86, 214.24 ,51.38, 200.64, 47.38}, -{'c', 187.04, 43.38, 189.44 ,52.98, 186.24, 53.78}, -{'f', 0.938000,0.670000,0.469000,1.000000,0,0 }, -{'m', 138.75, 32.33, 0, 0, 0, 0}, -{'c', 132.35, 33.13, 106.38 ,9.68, 121.95, 41.13}, -{'c', 141.15, 79.93, 63.55 ,80.33, 46.75, 69.13}, -{'c', 29.95, 57.93, 53.95 ,87.53, 53.95, 87.53}, -{'c', 72.35, 107.53, 37.95 ,90.73, 37.95, 90.73}, -{'c', 3.55, 77.93, -20.45 ,103.53, -23.65, 104.33}, -{'c', -26.85, 105.13, -31.65 ,108.33, -32.45, 101.93}, -{'c', -33.25, 95.53, -40.11 ,79.67, -72.45, 105.13}, -{'c', -98.64, 125.46, -110.89 ,106.18, -110.89, 106.18}, -{'l', -115.69, 110.33, 0, 0, 0, 0}, -{'c', -133.69, 77.13, -122.93 ,134.87, -122.93, 134.87}, -{'c', -114.13, 169.27, 18.75 ,125.13, 18.75, 125.13}, -{'c', 18.75, 125.13, 187.55 ,94.73, 198.75, 90.73}, -{'c', 209.95, 86.73, 300.78 ,92.76, 300.78, 92.76}, -{'l', 295.55, 73.42, 0, 0, 0, 0}, -{'c', 230.75, 27.02, 215.55 ,53.13, 201.95, 49.13}, -{'c', 188.35, 45.13, 190.75 ,54.73, 187.55, 55.53}, -{'f', 1.000000,0.737000,0.536000,1.000000,0,0 }, -{'m', 140.06, 34.07, 0, 0, 0, 0}, -{'c', 133.66, 34.87, 107.31 ,11.61, 123.25, 42.87}, -{'c', 143.66, 82.87, 64.86 ,82.07, 48.05, 70.87}, -{'c', 31.25, 59.67, 55.26 ,89.27, 55.26, 89.27}, -{'c', 73.66, 109.27, 39.26 ,92.47, 39.26, 92.47}, -{'c', 4.86, 79.67, -19.14 ,105.27, -22.34, 106.07}, -{'c', -25.55, 106.87, -30.34 ,110.07, -31.14, 103.67}, -{'c', -31.95, 97.27, -38.67 ,81.58, -71.14, 106.87}, -{'c', -98.56, 127.95, -110.51 ,109.22, -110.51, 109.22}, -{'l', -115.71, 111.87, 0, 0, 0, 0}, -{'c', -131.71, 81.67, -122.27 ,137.93, -122.27, 137.93}, -{'c', -113.47, 172.33, 20.05 ,126.87, 20.05, 126.87}, -{'c', 20.05, 126.87, 188.86 ,96.47, 200.06, 92.47}, -{'c', 211.26, 88.47, 301.22 ,94.44, 301.22, 94.44}, -{'l', 296.06, 74.58, 0, 0, 0, 0}, -{'c', 231.26, 28.18, 216.86 ,54.87, 203.26, 50.87}, -{'c', 189.66, 46.87, 192.06 ,56.47, 188.86, 57.27}, -{'f', 1.000000,0.737000,0.603000,1.000000,0,0 }, -{'m', 141.37, 35.82, 0, 0, 0, 0}, -{'c', 134.97, 36.62, 107.52 ,13.94, 124.56, 44.62}, -{'c', 146.56, 84.22, 66.16 ,83.82, 49.36, 72.62}, -{'c', 32.56, 61.42, 56.56 ,91.02, 56.56, 91.02}, -{'c', 74.96, 111.02, 40.56 ,94.22, 40.56, 94.22}, -{'c', 6.16, 81.42, -17.84 ,107.02, -21.04, 107.82}, -{'c', -24.24, 108.62, -29.04 ,111.82, -29.84, 105.42}, -{'c', -30.64, 99.02, -37.23 ,83.49, -69.84, 108.62}, -{'c', -98.49, 130.44, -110.13 ,112.26, -110.13, 112.26}, -{'l', -115.73, 113.42, 0, 0, 0, 0}, -{'c', -130.13, 85.02, -121.62 ,140.98, -121.62, 140.98}, -{'c', -112.82, 175.38, 21.36 ,128.62, 21.36, 128.62}, -{'c', 21.36, 128.62, 190.16 ,98.22, 201.37, 94.22}, -{'c', 212.56, 90.22, 301.66 ,96.11, 301.66, 96.11}, -{'l', 296.56, 75.75, 0, 0, 0, 0}, -{'c', 231.76, 29.35, 218.16 ,56.62, 204.56, 52.62}, -{'c', 190.97, 48.62, 193.37 ,58.22, 190.16, 59.02}, -{'f', 1.000000,0.804000,0.737000,1.000000,0,0 }, -{'m', 142.67, 37.56, 0, 0, 0, 0}, -{'c', 136.27, 38.37, 108.83 ,15.69, 125.87, 46.37}, -{'c', 147.87, 85.97, 67.47 ,85.56, 50.67, 74.36}, -{'c', 33.87, 63.16, 57.87 ,92.77, 57.87, 92.77}, -{'c', 76.27, 112.77, 41.87 ,95.97, 41.87, 95.97}, -{'c', 7.47, 83.17, -16.53 ,108.77, -19.73, 109.56}, -{'c', -22.93, 110.36, -27.73 ,113.56, -28.53, 107.17}, -{'c', -29.33, 100.77, -35.79 ,85.41, -68.53, 110.36}, -{'c', -98.42, 132.93, -109.75 ,115.29, -109.75, 115.29}, -{'l', -115.75, 114.97, 0, 0, 0, 0}, -{'c', -129.35, 88.56, -120.96 ,144.04, -120.96, 144.04}, -{'c', -112.16, 178.44, 22.67 ,130.37, 22.67, 130.37}, -{'c', 22.67, 130.37, 191.47 ,99.97, 202.67, 95.97}, -{'c', 213.87, 91.97, 302.09 ,97.78, 302.09, 97.78}, -{'l', 297.07, 76.91, 0, 0, 0, 0}, -{'c', 232.27, 30.51, 219.47 ,58.37, 205.87, 54.37}, -{'c', 192.27, 50.37, 194.67 ,59.97, 191.47, 60.77}, -{'f', 1.000000,0.871000,0.804000,1.000000,0,0 }, -{'m', 143.98, 39.31, 0, 0, 0, 0}, -{'c', 137.58, 40.11, 110.53 ,17.22, 127.18, 48.11}, -{'c', 149.18, 88.91, 68.78 ,87.31, 51.98, 76.11}, -{'c', 35.18, 64.91, 59.18 ,94.51, 59.18, 94.51}, -{'c', 77.58, 114.51, 43.18 ,97.71, 43.18, 97.71}, -{'c', 8.78, 84.91, -15.22 ,110.51, -18.42, 111.31}, -{'c', -21.62, 112.11, -26.42 ,115.31, -27.22, 108.91}, -{'c', -28.02, 102.51, -34.35 ,87.32, -67.22, 112.11}, -{'c', -98.34, 135.42, -109.36 ,118.33, -109.36, 118.33}, -{'l', -115.76, 116.51, 0, 0, 0, 0}, -{'c', -128.76, 92.51, -120.31 ,147.09, -120.31, 147.09}, -{'c', -111.51, 181.49, 23.98 ,132.11, 23.98, 132.11}, -{'c', 23.98, 132.11, 192.78 ,101.71, 203.98, 97.71}, -{'c', 215.18, 93.71, 302.53 ,99.46, 302.53, 99.46}, -{'l', 297.58, 78.07, 0, 0, 0, 0}, -{'c', 232.78, 31.67, 220.78 ,60.11, 207.18, 56.11}, -{'c', 193.58, 52.11, 195.98 ,61.71, 192.78, 62.51}, -{'f', 1.000000,0.938000,0.871000,1.000000,0,0 }, -{'m', 145.29, 41.05, 0, 0, 0, 0}, -{'c', 138.89, 41.85, 112.92 ,18.41, 128.49, 49.85}, -{'c', 149.69, 92.66, 70.09 ,89.06, 53.29, 77.86}, -{'c', 36.49, 66.66, 60.49 ,96.26, 60.49, 96.26}, -{'c', 78.89, 116.26, 44.49 ,99.46, 44.49, 99.46}, -{'c', 10.09, 86.66, -13.91 ,112.26, -17.11, 113.06}, -{'c', -20.31, 113.86, -25.11 ,117.06, -25.91, 110.66}, -{'c', -26.71, 104.26, -32.91 ,89.23, -65.91, 113.86}, -{'c', -98.27, 137.91, -108.98 ,121.36, -108.98, 121.36}, -{'l', -115.78, 118.06, 0, 0, 0, 0}, -{'c', -128.58, 94.86, -119.65 ,150.15, -119.65, 150.15}, -{'c', -110.85, 184.55, 25.29 ,133.86, 25.29, 133.86}, -{'c', 25.29, 133.86, 194.09 ,103.46, 205.29, 99.46}, -{'c', 216.49, 95.46, 302.96 ,101.13, 302.96, 101.13}, -{'l', 298.09, 79.24, 0, 0, 0, 0}, -{'c', 233.29, 32.84, 222.09 ,61.86, 208.49, 57.86}, -{'c', 194.89, 53.85, 197.29 ,63.46, 194.09, 64.26}, -{'f', 1.000000,1.000000,0.938000,1.000000,0,0 }, -{'m', -115.80, 119.60, 0, 0, 0, 0}, -{'c', -128.60, 97.60, -119.00 ,153.20, -119.00, 153.20}, -{'c', -110.20, 187.60, 26.60 ,135.60, 26.60, 135.60}, -{'c', 26.60, 135.60, 195.40 ,105.20, 206.60, 101.20}, -{'c', 217.80, 97.20, 303.40 ,102.80, 303.40, 102.80}, -{'l', 298.60, 80.40, 0, 0, 0, 0}, -{'c', 233.80, 34.00, 223.40 ,63.60, 209.80, 59.60}, -{'c', 196.20, 55.60, 198.60 ,65.20, 195.40, 66.00}, -{'c', 192.20, 66.80, 153.00 ,42.00, 146.60, 42.80}, -{'c', 140.20, 43.60, 114.98 ,19.79, 129.80, 51.60}, -{'c', 152.03, 99.31, 69.04 ,89.23, 54.60, 79.60}, -{'c', 37.80, 68.40, 61.80 ,98.00, 61.80, 98.00}, -{'c', 80.20, 118.00, 45.80 ,101.20, 45.80, 101.20}, -{'c', 11.40, 88.40, -12.60 ,114.00, -15.80, 114.80}, -{'c', -19.00, 115.60, -23.80 ,118.80, -24.60, 112.40}, -{'c', -25.40, 106.00, -31.46 ,91.14, -64.60, 115.60}, -{'c', -98.20, 140.40, -108.60 ,124.40, -108.60, 124.40}, -{'f', 1.000000,1.000000,1.000000,1.000000,0,0 }, -{'m', -74.20, 149.60, 0, 0, 0, 0}, -{'c', -74.20, 149.60, -81.40 ,161.20, -60.60, 174.40}, -{'c', -60.60, 174.40, -59.20 ,175.80, -77.20, 171.60}, -{'c', -77.20, 171.60, -83.40 ,169.60, -85.00, 159.20}, -{'c', -85.00, 159.20, -89.80 ,154.80, -94.60, 149.20}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', 65.80, 102.00, 0, 0, 0, 0}, -{'c', 65.80, 102.00, 83.50 ,128.82, 82.90, 133.60}, -{'c', 81.60, 144.00, 81.40 ,153.60, 84.60, 157.60}, -{'c', 87.80, 161.60, 96.60 ,194.80, 96.60, 194.80}, -{'c', 96.60, 194.80, 96.20 ,196.00, 108.60, 158.00}, -{'c', 108.60, 158.00, 120.20 ,142.00, 100.20, 123.60}, -{'f', 0.804000,0.804000,0.804000,1.000000,0,0 }, -{'m', -54.20, 176.40, 0, 0, 0, 0}, -{'c', -54.20, 176.40, -43.00 ,183.60, -57.40, 214.80}, -{'l', -51.00, 212.40, 0, 0, 0, 0}, -{'c', -51.00, 212.40, -51.80 ,223.60, -55.00, 226.00}, -{'l', -47.80, 222.80, 0, 0, 0, 0}, -{'c', -47.80, 222.80, -43.00 ,230.80, -47.00, 235.60}, -{'c', -47.00, 235.60, -30.20 ,243.60, -31.00, 250.00}, -{'c', -31.00, 250.00, -24.60 ,242.00, -28.60, 235.60}, -{'c', -32.60, 229.20, -39.80 ,233.20, -39.00, 214.80}, -{'l', -47.80, 218.00, 0, 0, 0, 0}, -{'c', -47.80, 218.00, -42.20 ,209.20, -42.20, 202.80}, -{'l', -50.20, 205.20, 0, 0, 0, 0}, -{'c', -50.20, 205.20, -34.73 ,178.62, -45.40, 177.20}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', -21.80, 193.20, 0, 0, 0, 0}, -{'c', -21.80, 193.20, -19.00 ,188.80, -21.80, 189.60}, -{'c', -24.60, 190.40, -55.80 ,205.20, -61.80, 214.80}, -{'f', 0.804000,0.804000,0.804000,1.000000,0,0 }, -{'m', -11.40, 201.20, 0, 0, 0, 0}, -{'c', -11.40, 201.20, -8.60 ,196.80, -11.40, 197.60}, -{'c', -14.20, 198.40, -45.40 ,213.20, -51.40, 222.80}, -{'f', 0.804000,0.804000,0.804000,1.000000,0,0 }, -{'m', 1.80, 186.00, 0, 0, 0, 0}, -{'c', 1.80, 186.00, 4.60 ,181.60, 1.80, 182.40}, -{'c', -1.00, 183.20, -32.20 ,198.00, -38.20, 207.60}, -{'f', 0.804000,0.804000,0.804000,1.000000,0,0 }, -{'m', -21.40, 229.60, 0, 0, 0, 0}, -{'c', -21.40, 229.60, -21.40 ,223.60, -24.20, 224.40}, -{'c', -27.00, 225.20, -63.00 ,242.80, -69.00, 252.40}, -{'f', 0.804000,0.804000,0.804000,1.000000,0,0 }, -{'m', -20.20, 218.80, 0, 0, 0, 0}, -{'c', -20.20, 218.80, -19.00 ,214.00, -21.80, 214.80}, -{'c', -23.80, 214.80, -50.20 ,226.40, -56.20, 236.00}, -{'f', 0.804000,0.804000,0.804000,1.000000,0,0 }, -{'m', -34.60, 266.40, 0, 0, 0, 0}, -{'l', -44.60, 274.00, 0, 0, 0, 0}, -{'c', -44.60, 274.00, -34.20 ,266.40, -30.60, 267.60}, -{'c', -30.60, 267.60, -37.40 ,278.80, -38.20, 284.00}, -{'c', -38.20, 284.00, -27.80 ,271.20, -22.20, 271.60}, -{'c', -22.20, 271.60, -14.60 ,272.00, -14.60, 282.80}, -{'c', -14.60, 282.80, -9.00 ,272.40, -5.80, 272.80}, -{'c', -5.80, 272.80, -4.60 ,279.20, -5.80, 286.00}, -{'c', -5.80, 286.00, -1.80 ,278.40, 2.20, 280.00}, -{'c', 2.20, 280.00, 8.60 ,278.00, 7.80, 289.60}, -{'c', 7.80, 289.60, 7.80 ,300.00, 7.00, 302.80}, -{'c', 7.00, 302.80, 12.60 ,276.40, 15.00, 276.00}, -{'c', 15.00, 276.00, 23.00 ,274.80, 27.80, 283.60}, -{'c', 27.80, 283.60, 23.80 ,276.00, 28.60, 278.00}, -{'c', 28.60, 278.00, 39.40 ,279.60, 42.60, 286.40}, -{'c', 42.60, 286.40, 35.80 ,274.40, 41.40, 277.60}, -{'c', 41.40, 277.60, 48.20 ,277.60, 49.40, 284.00}, -{'c', 49.40, 284.00, 57.80 ,305.20, 59.80, 306.80}, -{'c', 59.80, 306.80, 52.20 ,285.20, 53.80, 285.20}, -{'c', 53.80, 285.20, 51.80 ,273.20, 57.00, 288.00}, -{'c', 57.00, 288.00, 53.80 ,274.00, 59.40, 274.80}, -{'c', 65.00, 275.60, 69.40 ,285.60, 77.80, 283.20}, -{'c', 77.80, 283.20, 87.40 ,288.80, 89.40, 219.60}, -{'f', 0.804000,0.804000,0.804000,1.000000,0,0 }, -{'m', -29.80, 173.60, 0, 0, 0, 0}, -{'c', -29.80, 173.60, -15.00 ,167.60, 25.00, 173.60}, -{'c', 25.00, 173.60, 32.20 ,174.00, 39.00, 165.20}, -{'c', 45.80, 156.40, 72.60 ,149.20, 79.00, 151.20}, -{'l', 88.60, 157.60, 0, 0, 0, 0}, -{'l', 89.40, 158.80, 0, 0, 0, 0}, -{'c', 89.40, 158.80, 101.80 ,169.20, 102.20, 176.80}, -{'c', 102.60, 184.40, 87.80 ,232.40, 78.20, 248.40}, -{'c', 68.60, 264.40, 59.00 ,276.80, 39.80, 274.40}, -{'c', 39.80, 274.40, 19.00 ,270.40, -6.60, 274.40}, -{'c', -6.60, 274.40, -35.80 ,272.80, -38.60, 264.80}, -{'c', -41.40, 256.80, -27.40 ,241.60, -27.40, 241.60}, -{'c', -27.40, 241.60, -23.00 ,233.20, -24.20, 218.80}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', -7.80, 175.60, 0, 0, 0, 0}, -{'c', 0.60, 194.00, -29.00 ,259.20, -29.00, 259.20}, -{'c', -31.00, 260.80, -16.34 ,266.85, -6.20, 264.40}, -{'c', 4.75, 261.76, 45.00 ,266.00, 45.00, 266.00}, -{'c', 68.60, 250.40, 81.40 ,206.00, 81.40, 206.00}, -{'c', 81.40, 206.00, 91.80 ,182.00, 74.20, 178.80}, -{'f', 0.938000,0.402000,0.536000,1.000000,0,0 }, -{'m', -9.83, 206.50, 0, 0, 0, 0}, -{'c', -6.50, 193.71, -4.92 ,181.91, -7.80, 175.60}, -{'c', -7.80, 175.60, 54.60 ,182.00, 65.80, 161.20}, -{'c', 70.04, 153.33, 84.80 ,184.00, 84.40, 193.60}, -{'c', 84.40, 193.60, 21.40 ,208.00, 6.60, 196.80}, -{'f', 0.737000,0.201000,0.335000,1.000000,0,0 }, -{'m', -5.40, 222.80, 0, 0, 0, 0}, -{'c', -5.40, 222.80, -3.40 ,230.00, -5.80, 234.00}, -{'c', -5.80, 234.00, -7.40 ,234.80, -8.60, 235.20}, -{'c', -8.60, 235.20, -7.40 ,238.80, -1.40, 240.40}, -{'c', -1.40, 240.40, 0.60 ,244.80, 3.00, 245.20}, -{'c', 5.40, 245.60, 10.20 ,251.20, 14.20, 250.00}, -{'c', 18.20, 248.80, 29.40 ,244.80, 29.40, 244.80}, -{'c', 29.40, 244.80, 35.00 ,241.60, 43.80, 245.20}, -{'c', 43.80, 245.20, 46.17 ,244.40, 46.60, 240.40}, -{'c', 47.10, 235.70, 50.20 ,232.00, 52.20, 230.00}, -{'c', 54.20, 228.00, 63.80 ,215.20, 62.60, 214.80}, -{'f', 0.670000,0.134000,0.268000,1.000000,0,0 }, -{'m', -9.80, 174.40, 0, 0, 0, 0}, -{'c', -9.80, 174.40, -12.60 ,196.80, -9.40, 205.20}, -{'c', -6.20, 213.60, -7.00 ,215.60, -7.80, 219.60}, -{'c', -8.60, 223.60, -4.20 ,233.60, 1.40, 239.60}, -{'l', 13.40, 241.20, 0, 0, 0, 0}, -{'c', 13.40, 241.20, 28.60 ,237.60, 37.80, 240.40}, -{'c', 37.80, 240.40, 46.79 ,241.74, 50.20, 226.80}, -{'c', 50.20, 226.80, 55.00 ,220.40, 62.20, 217.60}, -{'c', 69.40, 214.80, 76.60 ,173.20, 72.60, 165.20}, -{'c', 68.60, 157.20, 54.20 ,152.80, 38.20, 168.40}, -{'f', 1.000000,0.469000,0.469000,1.000000,0,0 }, -{'m', -8.20, 249.20, 0, 0, 0, 0}, -{'c', -8.20, 249.20, -9.00 ,247.20, -13.40, 246.80}, -{'c', -13.40, 246.80, -35.80 ,243.20, -44.20, 230.80}, -{'c', -44.20, 230.80, -51.00 ,225.20, -46.60, 236.80}, -{'c', -46.60, 236.80, -36.20 ,257.20, -29.40, 260.00}, -{'f', 1.000000,1.000000,0.804000,1.000000,0,0 }, -{'m', 71.74, 185.23, 0, 0, 0, 0}, -{'c', 72.40, 177.32, 74.35 ,168.71, 72.60, 165.20}, -{'c', 66.15, 152.31, 49.18 ,157.69, 38.20, 168.40}, -{'c', 22.20, 184.00, 20.20 ,167.20, -9.80, 174.40}, -{'c', -9.80, 174.40, -11.54 ,188.36, -10.71, 198.38}, -{'c', -10.71, 198.38, 26.60 ,186.80, 27.40, 192.40}, -{'c', 27.40, 192.40, 29.00 ,189.20, 38.20, 189.20}, -{'f', 0.804000,0.201000,0.268000,1.000000,0,0 }, -{'m', 28.60, 175.20, 0, 0, 0, 0}, -{'c', 28.60, 175.20, 33.40 ,180.00, 29.80, 189.60}, -{'f', 0.804000,0.201000,0.268000,1.000000,0,0 }, -{'m', -19.40, 260.00, 0, 0, 0, 0}, -{'c', -19.40, 260.00, -23.80 ,247.20, -15.00, 254.00}, -{'c', -15.00, 254.00, -10.20 ,256.00, -11.40, 257.60}, -{'f', 1.000000,1.000000,0.804000,1.000000,0,0 }, -{'m', -14.36, 261.20, 0, 0, 0, 0}, -{'c', -14.36, 261.20, -17.88 ,250.96, -10.84, 256.40}, -{'c', -10.84, 256.40, -6.42 ,258.85, -7.96, 259.28}, -{'f', 1.000000,1.000000,0.804000,1.000000,0,0 }, -{'m', -9.56, 261.20, 0, 0, 0, 0}, -{'c', -9.56, 261.20, -13.08 ,250.96, -6.04, 256.40}, -{'c', -6.04, 256.40, -1.67 ,258.71, -3.16, 259.28}, -{'f', 1.000000,1.000000,0.804000,1.000000,0,0 }, -{'m', -2.96, 261.40, 0, 0, 0, 0}, -{'c', -2.96, 261.40, -6.48 ,251.16, 0.56, 256.60}, -{'c', 0.56, 256.60, 4.94 ,258.93, 3.44, 259.48}, -{'f', 1.000000,1.000000,0.804000,1.000000,0,0 }, -{'m', 3.52, 261.32, 0, 0, 0, 0}, -{'c', 3.52, 261.32, 0.00 ,251.08, 7.04, 256.52}, -{'c', 7.04, 256.52, 10.88 ,258.12, 9.92, 259.40}, -{'f', 1.000000,1.000000,0.804000,1.000000,0,0 }, -{'m', 10.20, 262.00, 0, 0, 0, 0}, -{'c', 10.20, 262.00, 5.40 ,249.60, 14.60, 256.00}, -{'c', 14.60, 256.00, 19.40 ,258.00, 18.20, 259.60}, -{'f', 1.000000,1.000000,0.804000,1.000000,0,0 }, -{'m', -18.20, 244.80, 0, 0, 0, 0}, -{'c', -18.20, 244.80, -5.00 ,242.00, 1.00, 245.20}, -{'c', 1.00, 245.20, 7.00 ,246.40, 8.20, 246.00}, -{'f', 1.000000,1.000000,0.804000,1.000000,0,0 }, -{'m', 15.80, 253.60, 0, 0, 0, 0}, -{'c', 15.80, 253.60, 27.80 ,240.00, 39.80, 244.40}, -{'c', 46.82, 246.97, 45.80 ,243.60, 46.60, 240.80}, -{'f', 1.000000,1.000000,0.804000,1.000000,0,0 }, -{'m', 33.00, 237.60, 0, 0, 0, 0}, -{'c', 33.00, 237.60, 29.00 ,226.80, 26.20, 239.60}, -{'c', 23.40, 252.40, 20.20 ,256.00, 18.60, 258.80}, -{'c', 18.60, 258.80, 18.60 ,264.00, 27.00, 263.60}, -{'c', 27.00, 263.60, 37.80 ,263.20, 38.20, 260.40}, -{'f', 1.000000,1.000000,0.804000,1.000000,0,0 }, -{'m', 47.00, 244.80, 0, 0, 0, 0}, -{'f', 1.000000,1.000000,0.804000,1.000000,0,0 }, -{'m', 53.50, 228.40, 0, 0, 0, 0}, -{'f', 1.000000,1.000000,0.804000,1.000000,0,0 }, -{'m', -25.80, 265.20, 0, 0, 0, 0}, -{'c', -25.80, 265.20, -7.80 ,268.40, -3.40, 266.80}, -{'c', -3.40, 266.80, 5.40 ,266.80, -3.00, 268.80}, -{'c', -3.00, 268.80, -15.80 ,268.80, -23.80, 267.60}, -{'f', 0.737000,0.737000,0.737000,1.000000,0,0 }, -{'m', -11.80, 172.00, 0, 0, 0, 0}, -{'c', -11.80, 172.00, 5.80 ,172.00, 7.80, 172.80}, -{'c', 7.80, 172.80, 15.00 ,203.60, 11.40, 211.20}, -{'c', 11.40, 211.20, 10.20 ,214.00, 7.40, 208.40}, -{'c', 7.40, 208.40, -11.00 ,175.60, -14.20, 173.60}, -{'f', 1.000000,1.000000,0.804000,1.000000,0,0 }, -{'m', -88.90, 169.30, 0, 0, 0, 0}, -{'c', -88.90, 169.30, -80.00 ,171.00, -67.40, 173.60}, -{'c', -67.40, 173.60, -62.60 ,196.00, -59.40, 200.80}, -{'c', -56.20, 205.60, -59.80 ,205.60, -63.40, 202.80}, -{'c', -67.00, 200.00, -81.80 ,186.00, -83.80, 181.60}, -{'f', 1.000000,1.000000,0.804000,1.000000,0,0 }, -{'m', -67.04, 173.82, 0, 0, 0, 0}, -{'c', -67.04, 173.82, -61.24 ,175.37, -60.23, 177.58}, -{'c', -59.22, 179.79, -61.43 ,183.09, -61.43, 183.09}, -{'c', -61.43, 183.09, -62.43 ,186.40, -63.63, 184.24}, -{'f', 1.000000,1.000000,0.804000,1.000000,0,0 }, -{'m', -67.00, 173.60, 0, 0, 0, 0}, -{'c', -67.00, 173.60, -63.40 ,178.80, -59.80, 178.80}, -{'c', -56.20, 178.80, -55.82 ,178.39, -53.00, 179.00}, -{'c', -48.40, 180.00, -48.80 ,178.00, -42.20, 179.20}, -{'c', -39.56, 179.68, -37.00 ,178.80, -34.20, 180.00}, -{'c', -31.40, 181.20, -28.20 ,180.40, -27.00, 178.40}, -{'c', -25.80, 176.40, -21.00 ,172.20, -21.00, 172.20}, -{'c', -21.00, 172.20, -33.80 ,174.00, -36.60, 174.80}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', -22.40, 173.80, 0, 0, 0, 0}, -{'c', -22.40, 173.80, -28.85 ,177.30, -29.25, 179.70}, -{'c', -29.65, 182.10, -24.00 ,185.80, -24.00, 185.80}, -{'c', -24.00, 185.80, -21.25 ,190.40, -20.65, 188.00}, -{'f', 1.000000,1.000000,0.804000,1.000000,0,0 }, -{'m', -59.88, 179.26, 0, 0, 0, 0}, -{'c', -59.88, 179.26, -52.88 ,190.45, -52.66, 179.24}, -{'c', -52.66, 179.24, -52.10 ,177.98, -53.86, 177.96}, -{'f', 1.000000,1.000000,0.804000,1.000000,0,0 }, -{'m', -52.71, 179.51, 0, 0, 0, 0}, -{'c', -52.71, 179.51, -44.79 ,190.70, -45.42, 179.42}, -{'c', -45.42, 179.42, -45.41 ,179.09, -47.17, 178.94}, -{'f', 1.000000,1.000000,0.804000,1.000000,0,0 }, -{'m', -45.49, 179.52, 0, 0, 0, 0}, -{'c', -45.49, 179.52, -37.53 ,190.15, -38.20, 180.48}, -{'c', -38.20, 180.48, -38.08 ,179.25, -39.74, 178.95}, -{'f', 1.000000,1.000000,0.804000,1.000000,0,0 }, -{'m', -38.62, 179.60, 0, 0, 0, 0}, -{'c', -38.62, 179.60, -30.72 ,191.16, -30.37, 181.38}, -{'c', -30.37, 181.38, -28.73 ,180.00, -30.47, 179.78}, -{'f', 1.000000,1.000000,0.804000,1.000000,0,0 }, -{'m', -74.79, 183.13, 0, 0, 0, 0}, -{'l', -82.45, 181.60, 0, 0, 0, 0}, -{'c', -85.05, 176.60, -87.15 ,170.45, -87.15, 170.45}, -{'c', -87.15, 170.45, -80.80 ,171.45, -68.30, 174.25}, -{'c', -68.30, 174.25, -67.42 ,177.57, -65.95, 183.36}, -{'f', 0.938000,0.938000,0.737000,1.000000,0,0 }, -{'m', -9.72, 178.47, 0, 0, 0, 0}, -{'c', -11.39, 175.96, -12.71 ,174.21, -13.36, 173.80}, -{'c', -16.37, 171.92, -12.23 ,172.29, -11.10, 172.29}, -{'c', -11.10, 172.29, 5.47 ,172.29, 7.36, 173.05}, -{'c', 7.36, 173.05, 7.88 ,175.29, 8.56, 178.68}, -{'f', 0.938000,0.938000,0.737000,1.000000,0,0 }, -{'m', 43.88, 40.32, 0, 0, 0, 0}, -{'c', 71.60, 44.28, 97.12 ,8.64, 98.88, -1.04}, -{'c', 100.64, -10.72, 90.52 ,-22.60, 90.52, -22.60}, -{'c', 91.84, -25.68, 87.00 ,-39.76, 81.72, -49.00}, -{'c', 76.44, -58.24, 60.54 ,-57.27, 43.00, -58.24}, -{'c', 27.16, -59.12, 8.68 ,-35.80, 7.36, -34.04}, -{'c', 6.04, -32.28, 12.20 ,6.00, 13.52, 11.72}, -{'c', 14.84, 17.44, 12.20 ,43.84, 12.20, 43.84}, -{'f', 0.804000,0.469000,0.134000,1.000000,0,0 }, -{'m', 8.09, -33.39, 0, 0, 0, 0}, -{'c', 6.79, -31.66, 12.84 ,5.92, 14.14, 11.54}, -{'c', 15.43, 17.15, 12.84 ,43.07, 12.84, 43.07}, -{'c', 45.51, 34.19, 16.73 ,35.73, 43.94, 39.62}, -{'c', 71.16, 43.51, 96.22 ,8.51, 97.94, -0.99}, -{'c', 99.67, -10.50, 89.74 ,-22.16, 89.74, -22.16}, -{'c', 91.03, -25.18, 86.28 ,-39.01, 81.10, -48.08}, -{'c', 75.91, -57.15, 60.30 ,-56.20, 43.08, -57.15}, -{'f', 0.938000,0.536000,0.335000,1.000000,0,0 }, -{'m', 8.82, -32.74, 0, 0, 0, 0}, -{'c', 7.54, -31.05, 13.48 ,5.84, 14.75, 11.35}, -{'c', 16.02, 16.86, 13.48 ,42.30, 13.48, 42.30}, -{'c', 44.88, 33.15, 17.30 ,35.10, 44.01, 38.91}, -{'c', 70.72, 42.73, 95.31 ,8.38, 97.01, -0.94}, -{'c', 98.70, -10.27, 88.95 ,-21.72, 88.95, -21.72}, -{'c', 90.22, -24.69, 85.56 ,-38.26, 80.47, -47.16}, -{'c', 75.39, -56.06, 60.06 ,-55.12, 43.16, -56.06}, -{'f', 0.938000,0.670000,0.469000,1.000000,0,0 }, -{'m', 9.54, -32.10, 0, 0, 0, 0}, -{'c', 8.30, -30.43, 14.12 ,5.76, 15.37, 11.17}, -{'c', 16.62, 16.58, 14.12 ,41.54, 14.12, 41.54}, -{'c', 43.56, 32.50, 17.86 ,34.47, 44.07, 38.21}, -{'c', 70.28, 41.95, 94.41 ,8.26, 96.07, -0.90}, -{'c', 97.74, -10.05, 88.17 ,-21.28, 88.17, -21.28}, -{'c', 89.42, -24.19, 84.84 ,-37.50, 79.85, -46.24}, -{'c', 74.86, -54.98, 59.82 ,-54.05, 43.24, -54.98}, -{'f', 1.000000,0.804000,0.670000,1.000000,0,0 }, -{'m', 10.27, -31.45, 0, 0, 0, 0}, -{'c', 9.05, -29.82, 14.76 ,5.68, 15.98, 10.98}, -{'c', 17.21, 16.29, 14.76 ,40.77, 14.76, 40.77}, -{'c', 42.63, 31.85, 18.43 ,33.83, 44.14, 37.51}, -{'c', 69.84, 41.18, 93.50 ,8.13, 95.14, -0.85}, -{'c', 96.77, -9.82, 87.39 ,-20.84, 87.39, -20.84}, -{'c', 88.61, -23.70, 84.12 ,-36.75, 79.22, -45.32}, -{'c', 74.33, -53.89, 59.59 ,-52.98, 43.32, -53.89}, -{'f', 1.000000,0.938000,0.871000,1.000000,0,0 }, -{'m', 44.20, 36.80, 0, 0, 0, 0}, -{'c', 69.40, 40.40, 92.60 ,8.00, 94.20, -0.80}, -{'c', 95.80, -9.60, 86.60 ,-20.40, 86.60, -20.40}, -{'c', 87.80, -23.20, 83.40 ,-36.00, 78.60, -44.40}, -{'c', 73.80, -52.80, 59.35 ,-51.91, 43.40, -52.80}, -{'c', 29.00, -53.60, 12.20 ,-32.40, 11.00, -30.80}, -{'c', 9.80, -29.20, 15.40 ,5.60, 16.60, 10.80}, -{'c', 17.80, 16.00, 15.40 ,40.00, 15.40, 40.00}, -{'f', 1.000000,1.000000,1.000000,1.000000,0,0 }, -{'m', 90.60, 2.80, 0, 0, 0, 0}, -{'c', 90.60, 2.80, 62.80 ,10.40, 51.20, 8.80}, -{'c', 51.20, 8.80, 35.40 ,2.20, 26.60, 24.00}, -{'c', 26.60, 24.00, 23.00 ,31.20, 21.00, 33.20}, -{'f', 0.804000,0.804000,0.804000,1.000000,0,0 }, -{'m', 94.40, 0.60, 0, 0, 0, 0}, -{'c', 94.40, 0.60, 65.40 ,12.80, 55.40, 12.40}, -{'c', 55.40, 12.40, 39.00 ,7.80, 30.60, 22.40}, -{'c', 30.60, 22.40, 22.20 ,31.60, 19.00, 33.20}, -{'c', 19.00, 33.20, 18.60 ,34.80, 25.00, 30.80}, -{'l', 35.40, 36.00, 0, 0, 0, 0}, -{'c', 35.40, 36.00, 50.20 ,45.60, 59.80, 29.60}, -{'c', 59.80, 29.60, 63.80 ,18.40, 63.80, 16.40}, -{'c', 63.80, 14.40, 85.00 ,8.80, 86.60, 8.40}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', 47.00, 36.51, 0, 0, 0, 0}, -{'c', 40.13, 36.51, 31.75 ,32.65, 31.75, 26.40}, -{'c', 31.75, 20.15, 40.13 ,13.89, 47.00, 13.89}, -{'c', 53.87, 13.89, 59.45 ,18.95, 59.45, 25.20}, -{'f', 0.603000,0.804000,0.201000,1.000000,0,0 }, -{'m', 43.38, 19.83, 0, 0, 0, 0}, -{'c', 38.53, 20.55, 33.44 ,22.05, 33.51, 21.84}, -{'c', 35.05, 17.22, 41.41 ,13.89, 47.00, 13.89}, -{'c', 51.30, 13.89, 55.08 ,15.87, 57.32, 18.88}, -{'f', 0.402000,0.603000,0.000000,1.000000,0,0 }, -{'m', 55.40, 19.60, 0, 0, 0, 0}, -{'c', 55.40, 19.60, 51.00 ,16.40, 51.00, 18.60}, -{'f', 1.000000,1.000000,1.000000,1.000000,0,0 }, -{'m', 45.40, 27.73, 0, 0, 0, 0}, -{'c', 42.90, 27.73, 40.88 ,25.70, 40.88, 23.20}, -{'c', 40.88, 20.70, 42.90 ,18.68, 45.40, 18.68}, -{'c', 47.90, 18.68, 49.93 ,20.70, 49.93, 23.20}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', -58.60, 14.40, 0, 0, 0, 0}, -{'c', -58.60, 14.40, -61.80 ,-6.80, -59.40, -11.20}, -{'c', -59.40, -11.20, -48.60 ,-21.20, -49.00, -24.80}, -{'c', -49.00, -24.80, -49.40 ,-42.80, -50.60, -43.60}, -{'c', -51.80, -44.40, -59.40 ,-50.40, -65.40, -44.00}, -{'c', -65.40, -44.00, -75.80 ,-26.00, -75.00, -19.60}, -{'l', -75.00, -17.60, 0, 0, 0, 0}, -{'c', -75.00, -17.60, -82.60 ,-18.00, -84.20, -16.00}, -{'c', -84.20, -16.00, -85.40 ,-10.80, -86.60, -10.40}, -{'c', -86.60, -10.40, -89.40 ,-8.00, -87.40, -5.20}, -{'c', -87.40, -5.20, -89.40 ,-2.80, -89.00, 1.20}, -{'l', -81.40, 5.20, 0, 0, 0, 0}, -{'c', -81.40, 5.20, -79.40 ,19.60, -68.60, 24.80}, -{'f', 0.804000,0.469000,0.134000,1.000000,0,0 }, -{'m', -59.60, 12.56, 0, 0, 0, 0}, -{'c', -59.60, 12.56, -62.48 ,-6.52, -60.32, -10.48}, -{'c', -60.32, -10.48, -50.60 ,-19.48, -50.96, -22.72}, -{'c', -50.96, -22.72, -51.32 ,-38.92, -52.40, -39.64}, -{'c', -53.48, -40.36, -60.32 ,-45.76, -65.72, -40.00}, -{'c', -65.72, -40.00, -75.08 ,-23.80, -74.36, -18.04}, -{'l', -74.36, -16.24, 0, 0, 0, 0}, -{'c', -74.36, -16.24, -81.20 ,-16.60, -82.64, -14.80}, -{'c', -82.64, -14.80, -83.72 ,-10.12, -84.80, -9.76}, -{'c', -84.80, -9.76, -87.32 ,-7.60, -85.52, -5.08}, -{'c', -85.52, -5.08, -87.32 ,-2.92, -86.96, 0.68}, -{'l', -80.12, 4.28, 0, 0, 0, 0}, -{'c', -80.12, 4.28, -78.32 ,17.24, -68.60, 21.92}, -{'f', 1.000000,1.000000,1.000000,1.000000,0,0 }, -{'m', -51.05, -42.61, 0, 0, 0, 0}, -{'c', -52.14, -43.47, -59.63 ,-49.24, -65.48, -43.00}, -{'c', -65.48, -43.00, -75.62 ,-25.45, -74.84, -19.21}, -{'l', -74.84, -17.26, 0, 0, 0, 0}, -{'c', -74.84, -17.26, -82.25 ,-17.65, -83.81, -15.70}, -{'c', -83.81, -15.70, -84.98 ,-10.63, -86.15, -10.24}, -{'c', -86.15, -10.24, -88.88 ,-7.90, -86.93, -5.17}, -{'c', -86.93, -5.17, -88.88 ,-2.83, -88.49, 1.07}, -{'l', -81.08, 4.97, 0, 0, 0, 0}, -{'c', -81.08, 4.97, -79.13 ,19.01, -68.60, 24.08}, -{'c', -63.89, 26.35, -60.80 ,19.79, -58.85, 13.94}, -{'c', -58.85, 13.94, -61.97 ,-6.73, -59.63, -11.02}, -{'c', -59.63, -11.02, -49.10 ,-20.77, -49.49, -24.28}, -{'f', 0.938000,0.603000,0.335000,1.000000,0,0 }, -{'m', -51.50, -41.62, 0, 0, 0, 0}, -{'c', -52.48, -42.54, -59.86 ,-48.08, -65.56, -42.00}, -{'c', -65.56, -42.00, -75.44 ,-24.90, -74.68, -18.82}, -{'l', -74.68, -16.92, 0, 0, 0, 0}, -{'c', -74.68, -16.92, -81.90 ,-17.30, -83.42, -15.40}, -{'c', -83.42, -15.40, -84.56 ,-10.46, -85.70, -10.08}, -{'c', -85.70, -10.08, -88.36 ,-7.80, -86.46, -5.14}, -{'c', -86.46, -5.14, -88.36 ,-2.86, -87.98, 0.94}, -{'l', -80.76, 4.74, 0, 0, 0, 0}, -{'c', -80.76, 4.74, -78.86 ,18.42, -68.60, 23.36}, -{'c', -64.01, 25.57, -61.00 ,19.18, -59.10, 13.48}, -{'c', -59.10, 13.48, -62.14 ,-6.66, -59.86, -10.84}, -{'c', -59.86, -10.84, -49.60 ,-20.34, -49.98, -23.76}, -{'f', 1.000000,0.737000,0.603000,1.000000,0,0 }, -{'m', -51.95, -40.63, 0, 0, 0, 0}, -{'c', -52.82, -41.61, -60.09 ,-46.92, -65.64, -41.00}, -{'c', -65.64, -41.00, -75.26 ,-24.35, -74.52, -18.43}, -{'l', -74.52, -16.58, 0, 0, 0, 0}, -{'c', -74.52, -16.58, -81.55 ,-16.95, -83.03, -15.10}, -{'c', -83.03, -15.10, -84.14 ,-10.29, -85.25, -9.92}, -{'c', -85.25, -9.92, -87.84 ,-7.70, -85.99, -5.11}, -{'c', -85.99, -5.11, -87.84 ,-2.89, -87.47, 0.81}, -{'l', -80.44, 4.51, 0, 0, 0, 0}, -{'c', -80.44, 4.51, -78.59 ,17.83, -68.60, 22.64}, -{'c', -64.13, 24.79, -61.20 ,18.57, -59.35, 13.02}, -{'c', -59.35, 13.02, -62.31 ,-6.59, -60.09, -10.66}, -{'c', -60.09, -10.66, -50.10 ,-19.91, -50.47, -23.24}, -{'f', 1.000000,0.871000,0.804000,1.000000,0,0 }, -{'m', -59.60, 12.46, 0, 0, 0, 0}, -{'c', -59.60, 12.46, -62.48 ,-6.52, -60.32, -10.48}, -{'c', -60.32, -10.48, -50.60 ,-19.48, -50.96, -22.72}, -{'c', -50.96, -22.72, -51.32 ,-38.92, -52.40, -39.64}, -{'c', -53.16, -40.68, -60.32 ,-45.76, -65.72, -40.00}, -{'c', -65.72, -40.00, -75.08 ,-23.80, -74.36, -18.04}, -{'l', -74.36, -16.24, 0, 0, 0, 0}, -{'c', -74.36, -16.24, -81.20 ,-16.60, -82.64, -14.80}, -{'c', -82.64, -14.80, -83.72 ,-10.12, -84.80, -9.76}, -{'c', -84.80, -9.76, -87.32 ,-7.60, -85.52, -5.08}, -{'c', -85.52, -5.08, -87.32 ,-2.92, -86.96, 0.68}, -{'l', -80.12, 4.28, 0, 0, 0, 0}, -{'c', -80.12, 4.28, -78.32 ,17.24, -68.60, 21.92}, -{'f', 1.000000,1.000000,1.000000,1.000000,0,0 }, -{'m', -62.70, 6.20, 0, 0, 0, 0}, -{'c', -62.70, 6.20, -84.30 ,-4.00, -85.20, -4.80}, -{'c', -85.20, -4.80, -76.10 ,3.40, -75.30, 3.40}, -{'f', 0.804000,0.804000,0.804000,1.000000,0,0 }, -{'m', -79.80, 0.00, 0, 0, 0, 0}, -{'c', -79.80, 0.00, -61.40 ,3.60, -61.40, 8.00}, -{'c', -61.40, 10.91, -61.64 ,24.33, -67.00, 22.80}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', -71.40, 3.80, 0, 0, 0, 0}, -{'c', -71.40, 3.80, -62.42 ,5.27, -61.40, 8.00}, -{'c', -60.80, 9.60, -60.14 ,17.91, -65.60, 19.00}, -{'f', 0.603000,0.804000,0.201000,1.000000,0,0 }, -{'m', 14.60, 46.35, 0, 0, 0, 0}, -{'c', 14.10, 44.61, 15.41 ,44.74, 17.20, 44.20}, -{'c', 19.20, 43.60, 31.40 ,39.80, 32.20, 37.20}, -{'c', 33.00, 34.60, 46.20 ,39.00, 46.20, 39.00}, -{'c', 48.00, 39.80, 52.40 ,42.40, 52.40, 42.40}, -{'c', 57.20, 43.60, 63.80 ,44.00, 63.80, 44.00}, -{'c', 66.20, 45.00, 69.60 ,47.80, 69.60, 47.80}, -{'c', 84.20, 58.00, 96.60 ,50.80, 96.60, 50.80}, -{'c', 116.60, 44.20, 110.60 ,27.00, 110.60, 27.00}, -{'c', 107.60, 18.00, 110.80 ,14.60, 110.80, 14.60}, -{'c', 111.00, 10.80, 118.20 ,17.20, 118.20, 17.20}, -{'c', 120.80, 21.40, 121.60 ,26.40, 121.60, 26.40}, -{'c', 129.60, 37.60, 126.20 ,19.80, 126.20, 19.80}, -{'c', 126.40, 18.80, 123.60 ,15.20, 123.60, 14.00}, -{'c', 123.60, 12.80, 121.80 ,9.40, 121.80, 9.40}, -{'c', 118.80, 6.00, 121.20 ,-1.00, 121.20, -1.00}, -{'c', 123.00, -14.80, 120.80 ,-13.00, 120.80, -13.00}, -{'c', 119.60, -14.80, 110.40 ,-4.80, 110.40, -4.80}, -{'c', 108.20, -1.40, 102.20 ,0.20, 102.20, 0.20}, -{'c', 99.40, 2.00, 96.00 ,0.60, 96.00, 0.60}, -{'c', 93.40, 0.20, 87.80 ,7.20, 87.80, 7.20}, -{'c', 90.60, 7.00, 93.00 ,11.40, 95.40, 11.60}, -{'c', 97.80, 11.80, 99.60 ,9.20, 101.20, 8.60}, -{'c', 102.80, 8.00, 105.60 ,13.80, 105.60, 13.80}, -{'c', 106.00, 16.40, 100.40 ,21.20, 100.40, 21.20}, -{'c', 100.00, 25.80, 98.40 ,24.20, 98.40, 24.20}, -{'c', 95.40, 23.60, 94.20 ,27.40, 93.20, 32.00}, -{'c', 92.20, 36.60, 88.00 ,37.00, 88.00, 37.00}, -{'c', 86.40, 44.40, 85.20 ,41.40, 85.20, 41.40}, -{'c', 85.00, 35.80, 79.00 ,41.60, 79.00, 41.60}, -{'c', 77.80, 43.60, 73.20 ,41.40, 73.20, 41.40}, -{'c', 66.40, 39.40, 68.80 ,37.40, 68.80, 37.40}, -{'c', 70.60, 35.20, 81.80 ,37.40, 81.80, 37.40}, -{'c', 84.00, 35.80, 76.00 ,31.80, 76.00, 31.80}, -{'c', 75.40, 30.00, 76.40 ,25.60, 76.40, 25.60}, -{'c', 77.60, 22.40, 84.40 ,16.80, 84.40, 16.80}, -{'c', 93.80, 15.60, 91.00 ,14.00, 91.00, 14.00}, -{'c', 84.80, 8.80, 79.00 ,16.40, 79.00, 16.40}, -{'c', 76.80, 22.60, 59.40 ,37.60, 59.40, 37.60}, -{'c', 54.60, 41.00, 57.20 ,34.20, 53.20, 37.60}, -{'c', 49.20, 41.00, 28.60 ,32.00, 28.60, 32.00}, -{'c', 17.04, 30.81, 14.31 ,46.55, 10.78, 43.43}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', 209.40, -120.00, 0, 0, 0, 0}, -{'c', 209.40, -120.00, 183.80 ,-112.00, 181.00, -93.20}, -{'c', 181.00, -93.20, 178.60 ,-70.40, 199.00, -52.80}, -{'c', 199.00, -52.80, 199.40 ,-46.40, 201.40, -43.20}, -{'c', 201.40, -43.20, 199.80 ,-38.40, 218.60, -46.00}, -{'l', 245.80, -54.40, 0, 0, 0, 0}, -{'c', 245.80, -54.40, 252.20 ,-56.80, 257.40, -65.60}, -{'c', 262.60, -74.40, 277.80 ,-93.20, 274.20, -118.40}, -{'c', 274.20, -118.40, 275.40 ,-129.60, 269.40, -130.00}, -{'c', 269.40, -130.00, 261.00 ,-131.60, 253.80, -124.00}, -{'c', 253.80, -124.00, 247.00 ,-120.80, 244.60, -121.20}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', 264.02, -120.99, 0, 0, 0, 0}, -{'c', 264.02, -120.99, 266.12 ,-129.92, 261.28, -125.08}, -{'c', 261.28, -125.08, 254.24 ,-119.36, 246.76, -119.36}, -{'c', 246.76, -119.36, 232.24 ,-117.16, 227.84, -103.96}, -{'c', 227.84, -103.96, 223.88 ,-77.12, 231.80, -71.40}, -{'c', 231.80, -71.40, 236.64 ,-63.92, 243.68, -70.52}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', 263.65, -120.63, 0, 0, 0, 0}, -{'c', 263.65, -120.63, 265.74 ,-129.38, 260.99, -124.62}, -{'c', 260.99, -124.62, 254.07 ,-119.01, 246.73, -119.01}, -{'c', 246.73, -119.01, 232.47 ,-116.85, 228.15, -103.89}, -{'c', 228.15, -103.89, 224.26 ,-77.54, 232.04, -71.92}, -{'c', 232.04, -71.92, 236.79 ,-64.58, 243.71, -71.06}, -{'f', 0.201000,0.201000,0.201000,1.000000,0,0 }, -{'m', 263.27, -120.27, 0, 0, 0, 0}, -{'c', 263.27, -120.27, 265.35 ,-128.83, 260.69, -124.17}, -{'c', 260.69, -124.17, 253.91 ,-118.66, 246.70, -118.66}, -{'c', 246.70, -118.66, 232.71 ,-116.54, 228.47, -103.82}, -{'c', 228.47, -103.82, 224.65 ,-77.95, 232.28, -72.44}, -{'c', 232.28, -72.44, 236.94 ,-65.23, 243.73, -71.59}, -{'f', 0.402000,0.402000,0.402000,1.000000,0,0 }, -{'m', 262.90, -119.92, 0, 0, 0, 0}, -{'c', 262.90, -119.92, 264.97 ,-128.29, 260.39, -123.71}, -{'c', 260.39, -123.71, 253.74 ,-118.30, 246.66, -118.30}, -{'c', 246.66, -118.30, 232.94 ,-116.22, 228.78, -103.74}, -{'c', 228.78, -103.74, 225.03 ,-78.37, 232.52, -72.96}, -{'c', 232.52, -72.96, 237.10 ,-65.89, 243.75, -72.13}, -{'f', 0.603000,0.603000,0.603000,1.000000,0,0 }, -{'m', 262.53, -119.56, 0, 0, 0, 0}, -{'c', 262.53, -119.56, 264.59 ,-127.74, 260.10, -123.26}, -{'c', 260.10, -123.26, 253.57 ,-117.95, 246.63, -117.95}, -{'c', 246.63, -117.95, 233.17 ,-115.91, 229.09, -103.67}, -{'c', 229.09, -103.67, 225.42 ,-78.78, 232.76, -73.48}, -{'c', 232.76, -73.48, 237.25 ,-66.54, 243.78, -72.66}, -{'f', 0.804000,0.804000,0.804000,1.000000,0,0 }, -{'m', 262.15, -119.20, 0, 0, 0, 0}, -{'c', 262.15, -119.20, 264.20 ,-127.20, 259.80, -122.80}, -{'c', 259.80, -122.80, 253.40 ,-117.60, 246.60, -117.60}, -{'c', 246.60, -117.60, 233.40 ,-115.60, 229.40, -103.60}, -{'c', 229.40, -103.60, 225.80 ,-79.20, 233.00, -74.00}, -{'c', 233.00, -74.00, 237.40 ,-67.20, 243.80, -73.20}, -{'f', 1.000000,1.000000,1.000000,1.000000,0,0 }, -{'m', 50.60, 84.00, 0, 0, 0, 0}, -{'c', 50.60, 84.00, 30.20 ,64.80, 22.20, 64.00}, -{'c', 22.20, 64.00, -12.20 ,60.00, -27.00, 78.00}, -{'c', -27.00, 78.00, -9.40 ,57.60, 18.20, 63.20}, -{'c', 18.20, 63.20, -3.40 ,58.80, -15.80, 62.00}, -{'c', -15.80, 62.00, -32.60 ,62.00, -42.20, 76.00}, -{'l', -45.00, 80.80, 0, 0, 0, 0}, -{'c', -45.00, 80.80, -41.00 ,66.00, -22.60, 60.00}, -{'c', -22.60, 60.00, 0.20 ,55.20, 11.00, 60.00}, -{'c', 11.00, 60.00, -10.60 ,53.20, -20.60, 55.20}, -{'c', -20.60, 55.20, -51.00 ,52.80, -63.80, 79.20}, -{'c', -63.80, 79.20, -59.80 ,64.80, -45.00, 57.60}, -{'c', -45.00, 57.60, -31.40 ,48.80, -11.00, 51.60}, -{'c', -11.00, 51.60, 3.40 ,54.80, 8.60, 57.20}, -{'c', 13.80, 59.60, 12.60 ,56.80, 4.20, 52.00}, -{'c', 4.20, 52.00, -1.40 ,42.00, -15.40, 42.40}, -{'c', -15.40, 42.40, -58.20 ,46.00, -68.60, 58.00}, -{'c', -68.60, 58.00, -55.00 ,46.80, -44.60, 44.00}, -{'c', -44.60, 44.00, -22.20 ,36.00, -13.80, 36.80}, -{'c', -13.80, 36.80, 11.00 ,37.80, 18.60, 33.80}, -{'c', 18.60, 33.80, 7.40 ,38.80, 10.60, 42.00}, -{'c', 13.80, 45.20, 20.60 ,52.80, 20.60, 54.00}, -{'c', 20.60, 55.20, 44.80 ,77.30, 48.40, 81.70}, -{'f', 0.603000,0.134000,0.000000,1.000000,0,0 }, -{'m', 189.00, 278.00, 0, 0, 0, 0}, -{'c', 189.00, 278.00, 173.50 ,241.50, 161.00, 232.00}, -{'c', 161.00, 232.00, 187.00 ,248.00, 190.50, 266.00}, -{'f', 0.804000,0.804000,0.804000,1.000000,0,0 }, -{'m', 236.00, 285.50, 0, 0, 0, 0}, -{'c', 236.00, 285.50, 209.50 ,230.50, 191.00, 206.50}, -{'c', 191.00, 206.50, 234.50 ,244.00, 239.50, 270.50}, -{'l', 240.00, 276.00, 0, 0, 0, 0}, -{'l', 237.00, 273.50, 0, 0, 0, 0}, -{'f', 0.804000,0.804000,0.804000,1.000000,0,0 }, -{'m', 292.50, 237.00, 0, 0, 0, 0}, -{'c', 292.50, 237.00, 230.00 ,177.50, 228.50, 175.00}, -{'c', 228.50, 175.00, 289.00 ,241.00, 292.00, 248.50}, -{'f', 0.804000,0.804000,0.804000,1.000000,0,0 }, -{'m', 104.00, 280.50, 0, 0, 0, 0}, -{'c', 104.00, 280.50, 123.50 ,228.50, 142.50, 251.00}, -{'c', 142.50, 251.00, 157.50 ,261.00, 157.00, 264.00}, -{'c', 157.00, 264.00, 153.00 ,257.50, 135.00, 258.00}, -{'f', 0.804000,0.804000,0.804000,1.000000,0,0 }, -{'m', 294.50, 153.00, 0, 0, 0, 0}, -{'c', 294.50, 153.00, 249.50 ,124.50, 242.00, 123.00}, -{'c', 230.19, 120.64, 291.50 ,152.00, 296.50, 162.50}, -{'f', 0.804000,0.804000,0.804000,1.000000,0,0 }, -{'m', 143.80, 259.60, 0, 0, 0, 0}, -{'c', 143.80, 259.60, 164.20 ,257.60, 171.00, 250.80}, -{'l', 175.40, 254.40, 0, 0, 0, 0}, -{'l', 193.00, 216.00, 0, 0, 0, 0}, -{'l', 196.60, 221.20, 0, 0, 0, 0}, -{'c', 196.60, 221.20, 211.00 ,206.40, 210.20, 198.40}, -{'c', 209.40, 190.40, 223.00 ,204.40, 223.00, 204.40}, -{'c', 223.00, 204.40, 222.20 ,192.80, 229.40, 199.60}, -{'c', 229.40, 199.60, 227.00 ,184.00, 235.40, 192.00}, -{'c', 235.40, 192.00, 224.86 ,161.84, 247.40, 187.60}, -{'c', 253.00, 194.00, 248.60 ,187.20, 248.60, 187.20}, -{'c', 248.60, 187.20, 222.60 ,139.20, 244.20, 153.60}, -{'c', 244.20, 153.60, 246.20 ,130.80, 245.00, 126.40}, -{'c', 243.80, 122.00, 241.80 ,99.60, 237.00, 94.40}, -{'c', 232.20, 89.20, 237.40 ,87.60, 243.00, 92.80}, -{'c', 243.00, 92.80, 231.80 ,68.80, 245.00, 80.80}, -{'c', 245.00, 80.80, 241.40 ,65.60, 237.00, 62.80}, -{'c', 237.00, 62.80, 231.40 ,45.60, 246.60, 56.40}, -{'c', 246.60, 56.40, 242.20 ,44.00, 239.00, 40.80}, -{'c', 239.00, 40.80, 227.40 ,13.20, 234.60, 18.00}, -{'l', 239.00, 21.60, 0, 0, 0, 0}, -{'c', 239.00, 21.60, 232.20 ,7.60, 238.60, 12.00}, -{'c', 245.00, 16.40, 245.00 ,16.00, 245.00, 16.00}, -{'c', 245.00, 16.00, 223.80 ,-17.20, 244.20, 0.40}, -{'c', 244.20, 0.40, 236.04 ,-13.52, 232.60, -20.40}, -{'c', 232.60, -20.40, 213.80 ,-40.80, 228.20, -34.40}, -{'l', 233.00, -32.80, 0, 0, 0, 0}, -{'c', 233.00, -32.80, 224.20 ,-42.80, 216.20, -44.40}, -{'c', 208.20, -46.00, 218.60 ,-52.40, 225.00, -50.40}, -{'c', 231.40, -48.40, 247.00 ,-40.80, 247.00, -40.80}, -{'c', 247.00, -40.80, 259.80 ,-22.00, 263.80, -21.60}, -{'c', 263.80, -21.60, 243.80 ,-29.20, 249.80, -21.20}, -{'c', 249.80, -21.20, 264.20 ,-7.20, 257.00, -7.60}, -{'c', 257.00, -7.60, 251.00 ,-0.40, 255.80, 8.40}, -{'c', 255.80, 8.40, 237.34 ,-9.99, 252.20, 15.60}, -{'l', 259.00, 32.00, 0, 0, 0, 0}, -{'c', 259.00, 32.00, 234.60 ,7.20, 245.80, 29.20}, -{'c', 245.80, 29.20, 263.00 ,52.80, 265.00, 53.20}, -{'c', 267.00, 53.60, 271.40 ,62.40, 271.40, 62.40}, -{'l', 267.00, 60.40, 0, 0, 0, 0}, -{'l', 272.20, 69.20, 0, 0, 0, 0}, -{'c', 272.20, 69.20, 261.00 ,57.20, 267.00, 70.40}, -{'l', 272.60, 84.80, 0, 0, 0, 0}, -{'c', 272.60, 84.80, 252.20 ,62.80, 265.80, 92.40}, -{'c', 265.80, 92.40, 249.40 ,87.20, 258.20, 104.40}, -{'c', 258.20, 104.40, 256.60 ,120.40, 257.00, 125.60}, -{'c', 257.40, 130.80, 258.60 ,159.20, 254.20, 167.20}, -{'c', 249.80, 175.20, 260.20 ,194.40, 262.20, 198.40}, -{'c', 264.20, 202.40, 267.80 ,213.20, 259.00, 204.00}, -{'c', 250.20, 194.80, 254.60 ,200.40, 256.60, 209.20}, -{'c', 258.60, 218.00, 264.60 ,233.60, 263.80, 239.20}, -{'c', 263.80, 239.20, 262.60 ,240.40, 259.40, 236.80}, -{'c', 259.40, 236.80, 244.60 ,214.00, 246.20, 228.40}, -{'c', 246.20, 228.40, 245.00 ,236.40, 241.80, 245.20}, -{'c', 241.80, 245.20, 238.60 ,256.00, 238.60, 247.20}, -{'c', 238.60, 247.20, 235.40 ,230.40, 232.60, 238.00}, -{'c', 229.80, 245.60, 226.20 ,251.60, 223.40, 254.00}, -{'c', 220.60, 256.40, 215.40 ,233.60, 214.20, 244.00}, -{'c', 214.20, 244.00, 202.20 ,231.60, 197.40, 248.00}, -{'l', 185.80, 264.40, 0, 0, 0, 0}, -{'c', 185.80, 264.40, 185.40 ,252.00, 184.20, 258.00}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', 109.40, -97.20, 0, 0, 0, 0}, -{'c', 109.40, -97.20, 97.80 ,-105.20, 93.80, -104.80}, -{'c', 89.80, -104.40, 121.40 ,-113.60, 162.60, -86.00}, -{'c', 162.60, -86.00, 167.40 ,-83.20, 171.00, -83.60}, -{'c', 171.00, -83.60, 174.20 ,-81.20, 171.40, -77.60}, -{'c', 171.40, -77.60, 162.60 ,-68.00, 173.80, -56.80}, -{'c', 173.80, -56.80, 192.20 ,-50.00, 186.60, -58.80}, -{'c', 186.60, -58.80, 197.40 ,-54.80, 199.80, -50.80}, -{'c', 202.20, -46.80, 201.00 ,-50.80, 201.00, -50.80}, -{'c', 201.00, -50.80, 194.60 ,-58.00, 188.60, -63.20}, -{'c', 188.60, -63.20, 183.40 ,-65.20, 180.60, -73.60}, -{'c', 177.80, -82.00, 175.40 ,-92.00, 179.80, -95.20}, -{'c', 179.80, -95.20, 175.80 ,-90.80, 176.60, -94.80}, -{'c', 177.40, -98.80, 181.00 ,-102.40, 182.60, -102.80}, -{'c', 184.20, -103.20, 200.60 ,-119.00, 207.40, -119.40}, -{'c', 207.40, -119.40, 198.20 ,-118.00, 195.20, -119.00}, -{'c', 192.20, -120.00, 165.60 ,-131.40, 159.60, -132.60}, -{'c', 159.60, -132.60, 142.80 ,-139.20, 154.80, -137.20}, -{'c', 154.80, -137.20, 190.60 ,-133.40, 208.80, -120.20}, -{'c', 208.80, -120.20, 201.60 ,-128.60, 183.20, -135.60}, -{'c', 183.20, -135.60, 161.00 ,-148.20, 125.80, -143.20}, -{'c', 125.80, -143.20, 108.00 ,-140.00, 100.20, -138.20}, -{'c', 100.20, -138.20, 97.60 ,-138.80, 97.00, -139.20}, -{'c', 96.40, -139.60, 84.60 ,-148.60, 57.00, -141.60}, -{'c', 57.00, -141.60, 40.00 ,-137.00, 31.40, -132.20}, -{'c', 31.40, -132.20, 16.20 ,-131.00, 12.60, -127.80}, -{'c', 12.60, -127.80, -6.00 ,-113.20, -8.00, -112.40}, -{'c', -10.00, -111.60, -21.40 ,-104.00, -22.20, -103.60}, -{'c', -22.20, -103.60, 2.40 ,-110.20, 4.80, -112.60}, -{'c', 7.20, -115.00, 24.60 ,-117.60, 27.00, -116.20}, -{'c', 29.40, -114.80, 37.80 ,-115.40, 28.20, -114.80}, -{'c', 28.20, -114.80, 103.80 ,-100.00, 104.60, -98.00}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', 180.80, -106.40, 0, 0, 0, 0}, -{'c', 180.80, -106.40, 170.60 ,-113.80, 168.60, -113.80}, -{'c', 166.60, -113.80, 154.20 ,-124.00, 150.00, -123.60}, -{'c', 145.80, -123.20, 133.60 ,-133.20, 106.20, -125.00}, -{'c', 106.20, -125.00, 105.60 ,-127.00, 109.20, -127.80}, -{'c', 109.20, -127.80, 115.60 ,-130.00, 116.00, -130.60}, -{'c', 116.00, -130.60, 136.20 ,-134.80, 143.40, -131.20}, -{'c', 143.40, -131.20, 152.60 ,-128.60, 158.80, -122.40}, -{'c', 158.80, -122.40, 170.00 ,-119.20, 173.20, -120.20}, -{'c', 173.20, -120.20, 182.00 ,-118.00, 182.40, -116.20}, -{'c', 182.40, -116.20, 188.20 ,-113.20, 186.40, -110.60}, -{'f', 0.804000,0.469000,0.134000,1.000000,0,0 }, -{'m', 168.33, -108.51, 0, 0, 0, 0}, -{'c', 169.14, -107.88, 170.16 ,-107.78, 170.76, -106.97}, -{'c', 171.00, -106.66, 170.71 ,-106.33, 170.39, -106.23}, -{'c', 169.35, -105.92, 168.29 ,-106.49, 167.15, -105.90}, -{'c', 166.75, -105.69, 166.11 ,-105.87, 165.55, -106.02}, -{'c', 163.92, -106.46, 162.09 ,-106.49, 160.40, -105.80}, -{'c', 158.42, -106.93, 156.06 ,-106.34, 153.97, -107.35}, -{'c', 153.92, -107.37, 153.69 ,-107.03, 153.62, -107.05}, -{'c', 150.57, -108.20, 146.83 ,-107.92, 144.40, -110.20}, -{'c', 141.97, -110.61, 139.62 ,-111.07, 137.19, -111.75}, -{'c', 135.37, -112.26, 133.96 ,-113.25, 132.34, -114.08}, -{'c', 130.96, -114.79, 129.51 ,-115.31, 127.97, -115.69}, -{'c', 126.11, -116.14, 124.28 ,-116.03, 122.39, -116.55}, -{'c', 122.29, -116.57, 122.10 ,-116.23, 122.02, -116.25}, -{'c', 121.69, -116.36, 121.41 ,-116.94, 121.23, -116.89}, -{'c', 119.55, -116.37, 118.06 ,-117.34, 116.40, -117.00}, -{'c', 115.22, -118.22, 113.50 ,-117.98, 111.95, -118.42}, -{'c', 108.98, -119.27, 105.83 ,-118.00, 102.80, -119.00}, -{'c', 106.91, -120.84, 111.60 ,-119.61, 115.66, -121.68}, -{'c', 117.99, -122.86, 120.65 ,-121.76, 123.22, -122.52}, -{'c', 123.71, -122.67, 124.40 ,-122.87, 124.80, -122.20}, -{'c', 124.94, -122.33, 125.12 ,-122.57, 125.17, -122.55}, -{'c', 127.62, -121.39, 129.94 ,-120.11, 132.42, -119.05}, -{'c', 132.76, -118.90, 133.29 ,-119.14, 133.55, -118.93}, -{'c', 135.07, -117.72, 137.01 ,-117.82, 138.40, -116.60}, -{'c', 140.10, -117.10, 141.89 ,-116.72, 143.62, -117.35}, -{'c', 143.70, -117.37, 143.93 ,-117.03, 143.97, -117.05}, -{'c', 145.09, -117.80, 146.25 ,-117.53, 147.14, -117.23}, -{'c', 147.48, -117.11, 148.14 ,-116.86, 148.45, -116.79}, -{'c', 149.57, -116.52, 150.43 ,-116.03, 151.61, -115.85}, -{'c', 151.72, -115.83, 151.91 ,-116.17, 151.98, -116.15}, -{'c', 153.10, -115.71, 154.15 ,-115.76, 154.80, -114.60}, -{'c', 154.94, -114.73, 155.10 ,-114.97, 155.18, -114.95}, -{'c', 156.21, -114.61, 156.86 ,-113.85, 157.96, -113.61}, -{'c', 158.44, -113.51, 159.06 ,-112.88, 159.63, -112.70}, -{'c', 162.03, -111.97, 163.87 ,-110.44, 166.06, -109.55}, -{'f', 0.804000,0.469000,0.134000,1.000000,0,0 }, -{'m', 91.70, -122.74, 0, 0, 0, 0}, -{'c', 89.18, -124.46, 86.81 ,-125.57, 84.37, -127.36}, -{'c', 84.19, -127.49, 83.83 ,-127.32, 83.62, -127.44}, -{'c', 82.62, -128.05, 81.73 ,-128.63, 80.75, -129.33}, -{'c', 80.21, -129.71, 79.39 ,-129.70, 78.88, -129.96}, -{'c', 76.34, -131.25, 73.71 ,-131.81, 71.20, -133.00}, -{'c', 71.88, -133.64, 73.00 ,-133.39, 73.60, -134.20}, -{'c', 73.80, -133.92, 74.03 ,-133.64, 74.39, -133.83}, -{'c', 76.06, -134.73, 77.91 ,-134.88, 79.59, -134.79}, -{'c', 81.29, -134.70, 83.01 ,-134.40, 84.79, -134.12}, -{'c', 85.10, -134.08, 85.30 ,-133.56, 85.62, -133.46}, -{'c', 87.85, -132.79, 90.23 ,-133.32, 92.35, -132.48}, -{'c', 93.94, -131.85, 95.52 ,-131.03, 96.75, -129.75}, -{'c', 97.01, -129.50, 96.68 ,-129.19, 96.40, -129.00}, -{'c', 96.79, -129.11, 97.06 ,-128.90, 97.17, -128.59}, -{'c', 97.26, -128.35, 97.26 ,-128.05, 97.17, -127.81}, -{'c', 97.06, -127.50, 96.78 ,-127.40, 96.41, -127.35}, -{'c', 95.00, -127.16, 96.77 ,-128.54, 96.07, -128.09}, -{'c', 94.80, -127.27, 95.55 ,-125.87, 94.80, -124.60}, -{'c', 94.52, -124.79, 94.29 ,-125.01, 94.40, -125.40}, -{'c', 94.64, -124.88, 94.03 ,-124.59, 93.86, -124.27}, -{'f', 0.804000,0.469000,0.134000,1.000000,0,0 }, -{'m', 59.20, -115.39, 0, 0, 0, 0}, -{'c', 56.04, -116.19, 52.99 ,-116.07, 49.98, -117.35}, -{'c', 49.91, -117.37, 49.69 ,-117.03, 49.62, -117.05}, -{'c', 48.26, -117.65, 47.34 ,-118.61, 46.26, -119.66}, -{'c', 45.35, -120.55, 43.69 ,-120.16, 42.42, -120.65}, -{'c', 42.09, -120.77, 41.89 ,-121.28, 41.59, -121.32}, -{'c', 40.37, -121.48, 39.45 ,-122.43, 38.40, -123.00}, -{'c', 40.74, -123.80, 43.15 ,-123.76, 45.61, -124.15}, -{'c', 45.72, -124.17, 45.87 ,-123.84, 46.00, -123.84}, -{'c', 46.14, -123.84, 46.27 ,-124.07, 46.40, -124.20}, -{'c', 46.59, -123.92, 46.90 ,-123.59, 47.15, -123.85}, -{'c', 47.70, -124.39, 48.26 ,-124.20, 48.80, -124.16}, -{'c', 48.94, -124.15, 49.07 ,-123.84, 49.20, -123.84}, -{'c', 49.34, -123.84, 49.47 ,-124.16, 49.60, -124.16}, -{'c', 49.74, -124.16, 49.87 ,-123.84, 50.00, -123.84}, -{'c', 50.14, -123.84, 50.27 ,-124.07, 50.40, -124.20}, -{'c', 51.09, -123.42, 51.98 ,-123.97, 52.80, -123.79}, -{'c', 53.84, -123.57, 54.10 ,-122.42, 55.18, -122.12}, -{'c', 59.89, -120.82, 64.03 ,-118.67, 68.39, -116.58}, -{'c', 68.70, -116.44, 68.91 ,-116.19, 68.80, -115.80}, -{'c', 69.07, -115.80, 69.38 ,-115.89, 69.57, -115.76}, -{'c', 70.63, -115.02, 71.67 ,-114.48, 72.37, -113.38}, -{'c', 72.58, -113.04, 72.25 ,-112.63, 72.02, -112.68}, -{'f', 0.804000,0.469000,0.134000,1.000000,0,0 }, -{'m', 45.34, -71.18, 0, 0, 0, 0}, -{'c', 43.75, -72.40, 43.16 ,-74.43, 42.03, -76.22}, -{'c', 41.82, -76.56, 42.09 ,-76.88, 42.41, -76.96}, -{'c', 42.97, -77.12, 43.51 ,-76.64, 43.92, -76.44}, -{'c', 45.67, -75.58, 47.20 ,-74.34, 49.20, -74.20}, -{'c', 51.19, -71.97, 55.45 ,-71.58, 55.46, -68.20}, -{'c', 55.46, -67.34, 54.03 ,-68.26, 53.60, -67.40}, -{'c', 51.15, -68.40, 48.76 ,-68.30, 46.38, -69.77}, -{'f', 0.804000,0.469000,0.134000,1.000000,0,0 }, -{'m', 17.80, -123.76, 0, 0, 0, 0}, -{'c', 17.93, -123.75, 24.97 ,-123.52, 24.95, -123.41}, -{'c', 24.90, -123.10, 17.17 ,-122.05, 16.81, -122.22}, -{'c', 16.65, -122.30, 9.13 ,-119.87, 9.00, -120.00}, -{'f', 0.804000,0.469000,0.134000,1.000000,0,0 }, -{'m', 33.20, -114.00, 0, 0, 0, 0}, -{'c', 33.20, -114.00, 18.40 ,-112.20, 14.00, -111.00}, -{'c', 9.60, -109.80, -9.00 ,-102.20, -12.00, -100.20}, -{'c', -12.00, -100.20, -25.40 ,-94.80, -42.40, -74.80}, -{'c', -42.40, -74.80, -34.80 ,-78.20, -32.60, -81.00}, -{'c', -32.60, -81.00, -19.00 ,-93.60, -19.20, -91.00}, -{'c', -19.20, -91.00, -7.00 ,-99.60, -7.60, -97.40}, -{'c', -7.60, -97.40, 16.80 ,-108.60, 14.80, -105.40}, -{'c', 14.80, -105.40, 36.40 ,-110.00, 35.40, -108.00}, -{'c', 35.40, -108.00, 54.20 ,-103.60, 51.40, -103.40}, -{'c', 51.40, -103.40, 45.60 ,-102.20, 52.00, -98.60}, -{'c', 52.00, -98.60, 48.60 ,-94.20, 43.20, -98.20}, -{'c', 37.80, -102.20, 40.80 ,-100.00, 35.80, -99.00}, -{'c', 35.80, -99.00, 33.20 ,-98.20, 28.60, -102.20}, -{'c', 28.60, -102.20, 23.00 ,-106.80, 14.20, -103.20}, -{'c', 14.20, -103.20, -16.40 ,-90.60, -18.40, -90.00}, -{'c', -18.40, -90.00, -22.00 ,-87.20, -24.40, -83.60}, -{'c', -24.40, -83.60, -30.20 ,-79.20, -33.20, -77.80}, -{'c', -33.20, -77.80, -46.00 ,-66.20, -47.20, -64.80}, -{'c', -47.20, -64.80, -50.60 ,-59.60, -51.40, -59.20}, -{'c', -51.40, -59.20, -45.00 ,-63.00, -43.00, -65.00}, -{'c', -43.00, -65.00, -29.00 ,-75.00, -23.60, -75.80}, -{'c', -23.60, -75.80, -19.20 ,-78.80, -18.40, -80.20}, -{'c', -18.40, -80.20, -4.00 ,-89.40, 0.20, -89.40}, -{'c', 0.20, -89.40, 9.40 ,-84.20, 11.80, -91.20}, -{'c', 11.80, -91.20, 17.60 ,-93.00, 23.20, -91.80}, -{'c', 23.20, -91.80, 26.40 ,-94.40, 25.60, -96.60}, -{'c', 25.60, -96.60, 27.20 ,-98.40, 28.20, -94.60}, -{'c', 28.20, -94.60, 31.60 ,-91.00, 36.40, -93.00}, -{'c', 36.40, -93.00, 40.40 ,-93.20, 38.40, -90.80}, -{'c', 38.40, -90.80, 34.00 ,-87.00, 22.20, -86.80}, -{'c', 22.20, -86.80, 9.80 ,-86.20, -6.60, -78.60}, -{'c', -6.60, -78.60, -36.40 ,-68.20, -45.60, -57.80}, -{'c', -45.60, -57.80, -52.00 ,-49.00, -57.40, -47.80}, -{'c', -57.40, -47.80, -63.20 ,-47.00, -69.20, -39.60}, -{'c', -69.20, -39.60, -59.40 ,-45.40, -50.40, -45.40}, -{'c', -50.40, -45.40, -46.40 ,-47.80, -50.20, -44.20}, -{'c', -50.20, -44.20, -53.80 ,-36.60, -52.20, -31.20}, -{'c', -52.20, -31.20, -52.80 ,-26.00, -53.60, -24.40}, -{'c', -53.60, -24.40, -61.40 ,-11.60, -61.40, -9.20}, -{'c', -61.40, -6.80, -60.20 ,3.00, -59.80, 3.60}, -{'c', -59.40, 4.20, -60.80 ,2.00, -57.00, 4.40}, -{'c', -53.20, 6.80, -50.40 ,8.40, -49.60, 11.20}, -{'c', -48.80, 14.00, -51.60 ,5.80, -51.80, 4.00}, -{'c', -52.00, 2.20, -56.20 ,-5.00, -55.40, -7.40}, -{'c', -55.40, -7.40, -54.40 ,-6.40, -53.60, -5.00}, -{'c', -53.60, -5.00, -54.20 ,-5.60, -53.60, -9.20}, -{'c', -53.60, -9.20, -52.80 ,-14.40, -51.40, -17.60}, -{'c', -50.00, -20.80, -48.00 ,-24.60, -47.60, -25.40}, -{'c', -47.20, -26.20, -47.20 ,-32.00, -45.80, -29.40}, -{'l', -42.40, -26.80, 0, 0, 0, 0}, -{'c', -42.40, -26.80, -45.20 ,-29.40, -43.00, -31.60}, -{'c', -43.00, -31.60, -44.00 ,-37.20, -42.20, -39.80}, -{'c', -42.20, -39.80, -35.20 ,-48.20, -33.60, -49.20}, -{'c', -32.00, -50.20, -33.40 ,-49.80, -33.40, -49.80}, -{'c', -33.40, -49.80, -27.40 ,-54.00, -33.20, -52.40}, -{'c', -33.20, -52.40, -37.20 ,-50.80, -40.20, -50.80}, -{'c', -40.20, -50.80, -47.80 ,-48.80, -43.80, -53.00}, -{'c', -39.80, -57.20, -29.80 ,-62.60, -26.00, -62.40}, -{'l', -25.20, -60.80, 0, 0, 0, 0}, -{'l', -14.00, -63.20, 0, 0, 0, 0}, -{'l', -15.20, -62.40, 0, 0, 0, 0}, -{'c', -15.20, -62.40, -15.40 ,-62.60, -11.20, -63.00}, -{'c', -7.00, -63.40, -1.20 ,-62.00, 0.20, -63.80}, -{'c', 1.60, -65.60, 5.00 ,-66.60, 4.60, -65.20}, -{'c', 4.20, -63.80, 4.00 ,-61.80, 4.00, -61.80}, -{'c', 4.00, -61.80, 9.00 ,-67.60, 8.40, -65.40}, -{'c', 7.80, -63.20, -0.40 ,-58.00, -1.80, -51.80}, -{'l', 8.60, -60.00, 0, 0, 0, 0}, -{'l', 12.20, -63.00, 0, 0, 0, 0}, -{'c', 12.20, -63.00, 15.80 ,-60.80, 16.00, -62.40}, -{'c', 16.20, -64.00, 20.80 ,-69.80, 22.00, -69.60}, -{'c', 23.20, -69.40, 25.20 ,-72.20, 25.00, -69.60}, -{'c', 24.80, -67.00, 32.40 ,-61.60, 32.40, -61.60}, -{'c', 32.40, -61.60, 35.60 ,-63.40, 37.00, -62.00}, -{'c', 38.40, -60.60, 42.60 ,-81.80, 42.60, -81.80}, -{'l', 67.60, -92.40, 0, 0, 0, 0}, -{'l', 111.20, -95.80, 0, 0, 0, 0}, -{'l', 94.20, -102.60, 0, 0, 0, 0}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', 51.40, 85.00, 0, 0, 0, 0}, -{'c', 51.40, 85.00, 36.40 ,68.20, 28.00, 65.60}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', 24.80, 64.20, 0, 0, 0, 0}, -{'c', 24.80, 64.20, -0.40 ,56.20, -15.80, 60.40}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', 21.20, 63.00, 0, 0, 0, 0}, -{'c', 21.20, 63.00, 4.20 ,55.80, -10.60, 53.60}, -{'c', -10.60, 53.60, -27.20 ,51.00, -43.80, 58.20}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', 22.20, 63.40, 0, 0, 0, 0}, -{'c', 22.20, 63.40, 6.80 ,52.40, 5.80, 51.00}, -{'c', 5.80, 51.00, -1.20 ,40.00, -14.20, 39.60}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', 20.89, 54.41, 0, 0, 0, 0}, -{'c', 22.44, 55.87, 49.40 ,84.80, 49.40, 84.80}, -{'c', 84.60, 121.40, 56.60 ,87.20, 56.60, 87.20}, -{'c', 49.00, 82.40, 39.80 ,63.60, 39.80, 63.60}, -{'c', 38.60, 60.80, 53.80 ,70.80, 53.80, 70.80}, -{'c', 57.80, 71.60, 71.40 ,90.80, 71.40, 90.80}, -{'c', 64.60, 88.40, 69.40 ,95.60, 69.40, 95.60}, -{'c', 72.20, 97.60, 92.60 ,113.20, 92.60, 113.20}, -{'c', 96.20, 117.20, 100.20 ,118.80, 100.20, 118.80}, -{'c', 114.20, 113.60, 107.80 ,126.80, 107.80, 126.80}, -{'c', 110.20, 133.60, 115.80 ,122.00, 115.80, 122.00}, -{'c', 127.00, 105.20, 110.60 ,107.60, 110.60, 107.60}, -{'c', 80.60, 110.40, 73.80 ,94.40, 73.80, 94.40}, -{'c', 71.40, 92.00, 80.20 ,94.40, 80.20, 94.40}, -{'c', 88.60, 96.40, 73.00 ,82.00, 73.00, 82.00}, -{'c', 75.40, 82.00, 84.60 ,88.80, 84.60, 88.80}, -{'c', 95.00, 98.00, 97.00 ,96.00, 97.00, 96.00}, -{'c', 115.00, 87.20, 125.40 ,94.80, 125.40, 94.80}, -{'c', 127.40, 96.40, 121.80 ,103.20, 123.40, 108.40}, -{'c', 125.00, 113.60, 129.80 ,126.00, 129.80, 126.00}, -{'c', 127.40, 127.60, 127.80 ,138.40, 127.80, 138.40}, -{'c', 144.60, 161.60, 135.00 ,159.60, 135.00, 159.60}, -{'c', 119.40, 159.20, 134.20 ,166.80, 134.20, 166.80}, -{'c', 137.40, 168.80, 146.20 ,176.00, 146.20, 176.00}, -{'c', 143.40, 174.80, 141.80 ,180.00, 141.80, 180.00}, -{'c', 146.60, 184.00, 143.80 ,188.80, 143.80, 188.80}, -{'c', 137.80, 190.00, 136.60 ,194.00, 136.60, 194.00}, -{'c', 143.40, 202.00, 133.40 ,202.40, 133.40, 202.40}, -{'c', 137.00, 206.80, 132.20 ,218.80, 132.20, 218.80}, -{'c', 127.40, 218.80, 121.00 ,224.40, 121.00, 224.40}, -{'c', 123.40, 229.20, 113.00 ,234.80, 113.00, 234.80}, -{'c', 104.60, 236.40, 107.40 ,243.20, 107.40, 243.20}, -{'c', 99.40, 249.20, 97.00 ,265.20, 97.00, 265.20}, -{'c', 96.20, 275.60, 93.80 ,278.80, 99.00, 276.80}, -{'c', 104.20, 274.80, 103.40 ,262.40, 103.40, 262.40}, -{'c', 98.60, 246.80, 141.40 ,230.80, 141.40, 230.80}, -{'c', 145.40, 229.20, 146.20 ,224.00, 146.20, 224.00}, -{'c', 148.20, 224.40, 157.00 ,232.00, 157.00, 232.00}, -{'c', 164.60, 243.20, 165.00 ,234.00, 165.00, 234.00}, -{'c', 166.20, 230.40, 164.60 ,224.40, 164.60, 224.40}, -{'c', 170.60, 202.80, 156.60 ,196.40, 156.60, 196.40}, -{'c', 146.60, 162.80, 160.60 ,171.20, 160.60, 171.20}, -{'c', 163.40, 176.80, 174.20 ,182.00, 174.20, 182.00}, -{'l', 177.80, 179.60, 0, 0, 0, 0}, -{'c', 176.20, 174.80, 184.60 ,168.80, 184.60, 168.80}, -{'c', 187.40, 175.20, 193.40 ,167.20, 193.40, 167.20}, -{'c', 197.00, 142.80, 209.40 ,157.20, 209.40, 157.20}, -{'c', 213.40, 158.40, 214.60 ,151.60, 214.60, 151.60}, -{'c', 218.20, 141.20, 214.60 ,127.60, 214.60, 127.60}, -{'c', 218.20, 127.20, 227.80 ,133.20, 227.80, 133.20}, -{'c', 230.60, 129.60, 221.40 ,112.80, 225.40, 115.20}, -{'c', 229.40, 117.60, 233.80 ,119.20, 233.80, 119.20}, -{'c', 234.60, 117.20, 224.60 ,104.80, 224.60, 104.80}, -{'c', 220.20, 102.00, 215.00 ,81.60, 215.00, 81.60}, -{'c', 222.20, 85.20, 212.20 ,70.00, 212.20, 70.00}, -{'c', 212.20, 66.80, 218.20 ,55.60, 218.20, 55.60}, -{'c', 217.40, 48.80, 218.20 ,49.20, 218.20, 49.20}, -{'c', 221.00, 50.40, 229.00 ,52.00, 222.20, 45.60}, -{'c', 215.40, 39.20, 223.00 ,34.40, 223.00, 34.40}, -{'c', 227.40, 31.60, 213.80 ,32.00, 213.80, 32.00}, -{'c', 208.60, 27.60, 209.00 ,23.60, 209.00, 23.60}, -{'c', 217.00, 25.60, 202.60 ,11.20, 200.20, 7.60}, -{'c', 197.80, 4.00, 207.40 ,-1.20, 207.40, -1.20}, -{'c', 220.60, -4.80, 209.00 ,-8.00, 209.00, -8.00}, -{'c', 189.40, -7.60, 200.20 ,-18.40, 200.20, -18.40}, -{'c', 206.20, -18.00, 204.60 ,-20.40, 204.60, -20.40}, -{'c', 199.40, -21.60, 189.80 ,-28.00, 189.80, -28.00}, -{'c', 185.80, -31.60, 189.40 ,-30.80, 189.40, -30.80}, -{'c', 206.20, -29.60, 177.40 ,-40.80, 177.40, -40.80}, -{'c', 185.40, -40.80, 167.40 ,-51.20, 167.40, -51.20}, -{'c', 165.40, -52.80, 162.20 ,-60.40, 162.20, -60.40}, -{'c', 156.20, -65.60, 151.40 ,-72.40, 151.40, -72.40}, -{'c', 151.00, -76.80, 146.20 ,-81.60, 146.20, -81.60}, -{'c', 134.60, -95.20, 129.00 ,-94.80, 129.00, -94.80}, -{'c', 114.20, -98.40, 109.00 ,-97.60, 109.00, -97.60}, -{'l', 56.20, -93.20, 0, 0, 0, 0}, -{'c', 29.80, -80.40, 37.60 ,-59.40, 37.60, -59.40}, -{'c', 44.00, -51.00, 53.20 ,-54.80, 53.20, -54.80}, -{'c', 57.80, -61.00, 69.40 ,-58.80, 69.40, -58.80}, -{'c', 89.80, -55.60, 87.20 ,-59.20, 87.20, -59.20}, -{'c', 84.80, -63.80, 68.60 ,-70.00, 68.40, -70.60}, -{'c', 68.20, -71.20, 59.40 ,-74.60, 59.40, -74.60}, -{'c', 56.40, -75.80, 52.00 ,-85.00, 52.00, -85.00}, -{'c', 48.80, -88.40, 64.60 ,-82.60, 64.60, -82.60}, -{'c', 63.40, -81.60, 70.80 ,-77.60, 70.80, -77.60}, -{'c', 88.20, -78.60, 98.80 ,-67.80, 98.80, -67.80}, -{'c', 109.60, -51.20, 109.80 ,-59.40, 109.80, -59.40}, -{'c', 112.60, -68.80, 100.80 ,-90.00, 100.80, -90.00}, -{'c', 101.20, -92.00, 109.40 ,-85.40, 109.40, -85.40}, -{'c', 110.80, -87.40, 111.60 ,-81.60, 111.60, -81.60}, -{'c', 111.80, -79.20, 115.60 ,-71.20, 115.60, -71.20}, -{'c', 118.40, -58.20, 122.00 ,-65.60, 122.00, -65.60}, -{'l', 126.60, -56.20, 0, 0, 0, 0}, -{'c', 128.00, -53.60, 122.00 ,-46.00, 122.00, -46.00}, -{'c', 121.80, -43.20, 122.60 ,-43.40, 117.00, -35.80}, -{'c', 111.40, -28.20, 114.80 ,-23.80, 114.80, -23.80}, -{'c', 113.40, -17.20, 122.20 ,-17.60, 122.20, -17.60}, -{'c', 124.80, -15.40, 128.20 ,-15.40, 128.20, -15.40}, -{'c', 130.00, -13.40, 132.40 ,-14.00, 132.40, -14.00}, -{'c', 134.00, -17.80, 140.20 ,-15.80, 140.20, -15.80}, -{'c', 141.60, -18.20, 149.80 ,-18.60, 149.80, -18.60}, -{'c', 150.80, -21.20, 151.20 ,-22.80, 154.60, -23.40}, -{'c', 158.00, -24.00, 133.40 ,-67.00, 133.40, -67.00}, -{'c', 139.80, -67.80, 131.60 ,-80.20, 131.60, -80.20}, -{'c', 129.40, -86.80, 140.80 ,-72.20, 143.00, -70.80}, -{'c', 145.20, -69.40, 146.20 ,-67.20, 144.60, -67.40}, -{'c', 143.00, -67.60, 141.20 ,-65.40, 142.60, -65.20}, -{'c', 144.00, -65.00, 157.00 ,-50.00, 160.40, -39.80}, -{'c', 163.80, -29.60, 169.80 ,-25.60, 176.00, -19.60}, -{'c', 182.20, -13.60, 181.40 ,10.60, 181.40, 10.60}, -{'c', 181.00, 19.40, 187.00 ,30.00, 187.00, 30.00}, -{'c', 189.00, 33.80, 184.80 ,52.00, 184.80, 52.00}, -{'c', 182.80, 54.20, 184.20 ,55.00, 184.20, 55.00}, -{'c', 185.20, 56.20, 192.00 ,69.40, 192.00, 69.40}, -{'c', 190.20, 69.20, 193.80 ,72.80, 193.80, 72.80}, -{'c', 199.00, 78.80, 192.60 ,75.80, 192.60, 75.80}, -{'c', 186.60, 74.20, 193.60 ,84.00, 193.60, 84.00}, -{'c', 194.80, 85.80, 185.80 ,81.20, 185.80, 81.20}, -{'c', 176.60, 80.60, 188.20 ,87.80, 188.20, 87.80}, -{'c', 196.80, 95.00, 185.40 ,90.60, 185.40, 90.60}, -{'c', 180.80, 88.80, 184.00 ,95.60, 184.00, 95.60}, -{'c', 187.20, 97.20, 204.40 ,104.20, 204.40, 104.20}, -{'c', 204.80, 108.00, 201.80 ,113.00, 201.80, 113.00}, -{'c', 202.20, 117.00, 200.00 ,120.40, 200.00, 120.40}, -{'c', 198.80, 128.60, 198.20 ,129.40, 198.20, 129.40}, -{'c', 194.00, 129.60, 186.60 ,143.40, 186.60, 143.40}, -{'c', 184.80, 146.00, 174.60 ,158.00, 174.60, 158.00}, -{'c', 172.60, 165.00, 154.60 ,157.80, 154.60, 157.80}, -{'c', 148.00, 161.20, 150.00 ,157.80, 150.00, 157.80}, -{'c', 149.60, 155.60, 154.40 ,149.60, 154.40, 149.60}, -{'c', 161.40, 147.00, 158.80 ,136.20, 158.80, 136.20}, -{'c', 162.80, 134.80, 151.60 ,132.00, 151.80, 130.80}, -{'c', 152.00, 129.60, 157.80 ,128.20, 157.80, 128.20}, -{'c', 165.80, 126.20, 161.40 ,123.80, 161.40, 123.80}, -{'c', 160.80, 119.80, 163.80 ,114.20, 163.80, 114.20}, -{'c', 175.40, 113.40, 163.80 ,97.20, 163.80, 97.20}, -{'c', 153.00, 89.60, 152.00 ,83.80, 152.00, 83.80}, -{'c', 164.60, 75.60, 156.40 ,63.20, 156.60, 59.60}, -{'c', 156.80, 56.00, 158.00 ,34.40, 158.00, 34.40}, -{'c', 156.00, 28.20, 153.00 ,14.60, 153.00, 14.60}, -{'c', 155.20, 9.40, 162.60 ,-3.20, 162.60, -3.20}, -{'c', 165.40, -7.40, 174.20 ,-12.20, 172.00, -15.20}, -{'c', 169.80, -18.20, 162.00 ,-16.40, 162.00, -16.40}, -{'c', 154.20, -17.80, 154.80 ,-12.60, 154.80, -12.60}, -{'c', 153.20, -11.60, 152.40 ,-6.60, 152.40, -6.60}, -{'c', 151.68, 1.33, 142.80 ,7.60, 142.80, 7.60}, -{'c', 131.60, 13.80, 140.80 ,17.80, 140.80, 17.80}, -{'c', 146.80, 24.40, 137.00 ,24.60, 137.00, 24.60}, -{'c', 126.00, 22.80, 134.20 ,33.00, 134.20, 33.00}, -{'c', 145.00, 45.80, 142.00 ,48.60, 142.00, 48.60}, -{'c', 131.80, 49.60, 144.40 ,58.80, 144.40, 58.80}, -{'c', 144.40, 58.80, 143.60 ,56.80, 143.80, 58.60}, -{'c', 144.00, 60.40, 147.00 ,64.60, 147.80, 66.60}, -{'c', 148.60, 68.60, 144.60 ,68.80, 144.60, 68.80}, -{'c', 145.20, 78.40, 129.80 ,74.20, 129.80, 74.20}, -{'c', 129.80, 74.20, 129.80 ,74.20, 128.20, 74.40}, -{'c', 126.60, 74.60, 115.40 ,73.80, 109.60, 71.60}, -{'c', 103.80, 69.40, 97.00 ,69.40, 97.00, 69.40}, -{'c', 97.00, 69.40, 93.00 ,71.20, 85.40, 71.00}, -{'c', 77.80, 70.80, 69.80 ,73.60, 69.80, 73.60}, -{'c', 65.40, 73.20, 74.00 ,68.80, 74.20, 69.00}, -{'c', 74.40, 69.20, 80.00 ,63.60, 72.00, 64.20}, -{'c', 50.20, 65.83, 39.40 ,55.60, 39.40, 55.60}, -{'c', 37.40, 54.20, 34.80 ,51.40, 34.80, 51.40}, -{'c', 24.80, 49.40, 36.20 ,63.80, 36.20, 63.80}, -{'c', 37.40, 65.20, 36.00 ,66.20, 36.00, 66.20}, -{'c', 35.20, 64.60, 27.40 ,59.20, 27.40, 59.20}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', -3.00, 42.80, 0, 0, 0, 0}, -{'c', -3.00, 42.80, 8.60 ,48.40, 11.20, 51.20}, -{'c', 13.80, 54.00, 27.80 ,65.40, 27.80, 65.40}, -{'c', 27.80, 65.40, 22.40 ,63.40, 19.80, 61.60}, -{'c', 17.20, 59.80, 6.40 ,51.60, 6.40, 51.60}, -{'f', 0.268000,0.000000,0.000000,1.000000,0,0 }, -{'m', -61.01, 11.60, 0, 0, 0, 0}, -{'c', -60.67, 11.46, -61.20 ,8.74, -61.40, 8.20}, -{'c', -62.42, 5.47, -71.40 ,4.00, -71.40, 4.00}, -{'c', -71.63, 5.37, -71.68 ,6.96, -71.58, 8.60}, -{'f', 0.603000,0.804000,0.201000,1.000000,0,0 }, -{'m', -61.01, 11.40, 0, 0, 0, 0}, -{'c', -61.46, 11.56, -61.02 ,8.67, -61.20, 8.20}, -{'c', -62.22, 5.47, -71.40 ,3.90, -71.40, 3.90}, -{'c', -71.63, 5.26, -71.68 ,6.86, -71.58, 8.50}, -{'f', 0.402000,0.603000,0.000000,1.000000,0,0 }, -{'m', -65.40, 11.55, 0, 0, 0, 0}, -{'c', -66.03, 11.55, -66.53 ,10.41, -66.53, 9.00}, -{'c', -66.53, 7.59, -66.03 ,6.46, -65.40, 6.46}, -{'c', -64.78, 6.46, -64.27 ,7.59, -64.27, 9.00}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', -111.00, 109.60, 0, 0, 0, 0}, -{'c', -111.00, 109.60, -116.60 ,119.60, -91.80, 113.60}, -{'c', -91.80, 113.60, -77.80 ,112.40, -75.40, 110.00}, -{'c', -74.20, 110.80, -65.83 ,113.73, -63.00, 114.40}, -{'c', -56.20, 116.00, -47.80 ,106.00, -47.80, 106.00}, -{'c', -47.80, 106.00, -43.20 ,95.50, -40.40, 95.50}, -{'c', -37.60, 95.50, -40.80 ,97.10, -40.80, 97.10}, -{'c', -40.80, 97.10, -47.40 ,107.20, -47.00, 108.80}, -{'c', -47.00, 108.80, -52.20 ,128.80, -68.20, 129.60}, -{'c', -68.20, 129.60, -84.35 ,130.55, -83.00, 136.40}, -{'c', -83.00, 136.40, -74.20 ,134.00, -71.80, 136.40}, -{'c', -71.80, 136.40, -61.00 ,136.00, -69.00, 142.40}, -{'l', -75.80, 154.00, 0, 0, 0, 0}, -{'c', -75.80, 154.00, -75.66 ,157.92, -85.80, 154.40}, -{'c', -95.60, 151.00, -105.90 ,138.10, -105.90, 138.10}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', -112.20, 113.60, 0, 0, 0, 0}, -{'c', -112.20, 113.60, -114.20 ,123.20, -77.40, 112.80}, -{'c', -77.40, 112.80, -73.00 ,112.80, -70.60, 113.60}, -{'c', -68.20, 114.40, -56.20 ,117.20, -54.20, 116.00}, -{'c', -54.20, 116.00, -61.40 ,129.60, -73.00, 128.00}, -{'c', -73.00, 128.00, -86.20 ,129.60, -85.80, 134.40}, -{'c', -85.80, 134.40, -81.80 ,141.60, -77.00, 144.00}, -{'c', -77.00, 144.00, -74.20 ,146.40, -74.60, 149.60}, -{'c', -75.00, 152.80, -77.80 ,154.40, -79.80, 155.20}, -{'c', -81.80, 156.00, -85.00 ,152.80, -86.60, 152.80}, -{'c', -88.20, 152.80, -96.60 ,146.40, -101.00, 141.60}, -{'c', -105.40, 136.80, -113.80 ,124.80, -113.40, 122.00}, -{'f', 0.938000,0.603000,0.603000,1.000000,0,0 }, -{'m', -109.00, 131.05, 0, 0, 0, 0}, -{'c', -106.40, 135.00, -103.20 ,139.20, -101.00, 141.60}, -{'c', -96.60, 146.40, -88.20 ,152.80, -86.60, 152.80}, -{'c', -85.00, 152.80, -81.80 ,156.00, -79.80, 155.20}, -{'c', -77.80, 154.40, -75.00 ,152.80, -74.60, 149.60}, -{'c', -74.20, 146.40, -77.00 ,144.00, -77.00, 144.00}, -{'c', -80.07, 142.47, -82.81 ,138.98, -84.39, 136.65}, -{'c', -84.39, 136.65, -84.20 ,139.20, -89.40, 138.40}, -{'c', -94.60, 137.60, -99.80 ,134.80, -101.40, 131.60}, -{'c', -103.00, 128.40, -105.40 ,126.00, -103.80, 129.60}, -{'c', -102.20, 133.20, -99.80 ,136.80, -98.20, 137.20}, -{'c', -96.60, 137.60, -97.00 ,138.80, -99.40, 138.40}, -{'f', 0.737000,0.402000,0.402000,1.000000,0,0 }, -{'m', -111.60, 110.00, 0, 0, 0, 0}, -{'c', -111.60, 110.00, -109.80 ,96.40, -108.60, 92.40}, -{'c', -108.60, 92.40, -109.40 ,85.60, -107.00, 81.40}, -{'c', -104.60, 77.20, -102.60 ,71.00, -99.60, 65.60}, -{'c', -96.60, 60.20, -96.40 ,56.20, -92.40, 54.60}, -{'c', -88.40, 53.00, -82.40 ,44.40, -79.60, 43.40}, -{'c', -76.80, 42.40, -77.00 ,43.20, -77.00, 43.20}, -{'c', -77.00, 43.20, -70.20 ,28.40, -56.60, 32.40}, -{'c', -56.60, 32.40, -72.80 ,29.60, -57.00, 20.20}, -{'c', -57.00, 20.20, -61.80 ,21.30, -58.50, 14.30}, -{'c', -56.30, 9.63, -56.80 ,16.40, -67.80, 28.20}, -{'c', -67.80, 28.20, -72.80 ,36.80, -78.00, 39.80}, -{'c', -83.20, 42.80, -95.20 ,49.80, -96.40, 53.60}, -{'c', -97.60, 57.40, -100.80 ,63.20, -102.80, 64.80}, -{'c', -104.80, 66.40, -107.60 ,70.60, -108.00, 74.00}, -{'c', -108.00, 74.00, -109.20 ,78.00, -110.60, 79.20}, -{'c', -112.00, 80.40, -112.20 ,83.60, -112.20, 85.60}, -{'c', -112.20, 87.60, -114.20 ,90.40, -114.00, 92.80}, -{'c', -114.00, 92.80, -113.20 ,111.80, -113.60, 113.80}, -{'f', 0.603000,0.134000,0.000000,1.000000,0,0 }, -{'m', -120.20, 114.60, 0, 0, 0, 0}, -{'c', -120.20, 114.60, -122.20 ,113.20, -126.60, 119.20}, -{'c', -126.60, 119.20, -119.30 ,152.20, -119.30, 153.60}, -{'c', -119.30, 153.60, -118.20 ,151.50, -119.50, 144.30}, -{'c', -120.80, 137.10, -121.70 ,124.40, -121.70, 124.40}, -{'f', 1.000000,1.000000,1.000000,1.000000,0,0 }, -{'m', -98.60, 54.00, 0, 0, 0, 0}, -{'c', -98.60, 54.00, -116.20 ,57.20, -115.80, 86.40}, -{'l', -116.60, 111.20, 0, 0, 0, 0}, -{'c', -116.60, 111.20, -117.80 ,85.60, -119.00, 84.00}, -{'c', -120.20, 82.40, -116.20 ,71.20, -119.40, 77.20}, -{'c', -119.40, 77.20, -133.40 ,91.20, -125.40, 112.40}, -{'c', -125.40, 112.40, -123.90 ,115.70, -126.90, 111.10}, -{'c', -126.90, 111.10, -131.50 ,98.50, -130.40, 92.10}, -{'c', -130.40, 92.10, -130.20 ,89.90, -128.30, 87.10}, -{'c', -128.30, 87.10, -119.70 ,75.40, -117.00, 73.10}, -{'c', -117.00, 73.10, -115.20 ,58.70, -99.80, 53.50}, -{'f', 0.603000,0.134000,0.000000,1.000000,0,0 }, -{'m', 40.80, -12.20, 0, 0, 0, 0}, -{'c', 41.46, -12.55, 41.45 ,-13.52, 42.03, -13.70}, -{'c', 43.18, -14.04, 43.34 ,-15.11, 43.86, -15.89}, -{'c', 44.73, -17.21, 44.93 ,-18.74, 45.51, -20.23}, -{'c', 45.78, -20.93, 45.81 ,-21.89, 45.50, -22.55}, -{'c', 44.32, -25.03, 43.62 ,-27.48, 42.18, -29.91}, -{'c', 41.91, -30.36, 41.65 ,-31.15, 41.45, -31.75}, -{'c', 40.98, -33.13, 39.73 ,-34.12, 38.87, -35.44}, -{'c', 38.58, -35.88, 39.10 ,-36.81, 38.39, -36.89}, -{'c', 37.49, -37.00, 36.04 ,-37.58, 35.81, -36.55}, -{'c', 35.22, -33.97, 36.23 ,-31.44, 37.20, -29.00}, -{'c', 36.42, -28.31, 36.75 ,-27.39, 36.90, -26.62}, -{'c', 37.61, -23.01, 36.42 ,-19.66, 35.66, -16.19}, -{'c', 35.63, -16.08, 35.97 ,-15.89, 35.95, -15.82}, -{'c', 34.72, -13.14, 33.27 ,-10.69, 31.45, -8.31}, -{'c', 30.70, -7.32, 29.82 ,-6.40, 29.33, -5.34}, -{'c', 28.96, -4.55, 28.55 ,-3.59, 28.80, -2.60}, -{'c', 25.36, 0.18, 23.11 ,4.03, 20.50, 7.87}, -{'c', 20.04, 8.55, 20.33 ,9.76, 20.88, 10.03}, -{'c', 21.70, 10.43, 22.65 ,9.40, 23.12, 8.56}, -{'c', 23.51, 7.86, 23.86 ,7.21, 24.36, 6.57}, -{'c', 24.49, 6.39, 24.31 ,5.97, 24.45, 5.85}, -{'c', 27.08, 3.50, 28.75 ,0.57, 31.20, -1.80}, -{'c', 33.15, -2.13, 34.69 ,-3.13, 36.44, -4.14}, -{'c', 36.74, -4.32, 37.27 ,-4.07, 37.56, -4.26}, -{'c', 39.31, -5.44, 39.31 ,-7.48, 39.41, -9.39}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', 31.96, -16.67, 0, 0, 0, 0}, -{'c', 32.08, -16.74, 31.93 ,-17.17, 32.04, -17.38}, -{'c', 32.20, -17.71, 32.60 ,-17.89, 32.76, -18.22}, -{'c', 32.87, -18.43, 32.71 ,-18.81, 32.85, -18.96}, -{'c', 35.18, -21.40, 35.44 ,-24.43, 34.40, -27.40}, -{'c', 35.42, -28.02, 35.48 ,-29.28, 35.06, -30.13}, -{'c', 34.21, -31.83, 34.01 ,-33.76, 33.04, -35.30}, -{'c', 32.24, -36.57, 30.66 ,-37.81, 29.29, -36.51}, -{'c', 28.87, -36.11, 28.55 ,-35.32, 28.82, -34.61}, -{'c', 28.89, -34.45, 29.17 ,-34.30, 29.15, -34.22}, -{'c', 29.04, -33.89, 28.49 ,-33.67, 28.49, -33.40}, -{'c', 28.46, -31.90, 27.50 ,-30.39, 28.13, -29.06}, -{'c', 28.91, -27.43, 29.72 ,-25.58, 30.40, -23.80}, -{'c', 29.17, -21.68, 30.20 ,-19.23, 28.45, -17.36}, -{'c', 28.31, -17.21, 28.32 ,-16.83, 28.44, -16.62}, -{'c', 28.73, -16.14, 29.14 ,-15.73, 29.62, -15.44}, -{'c', 29.83, -15.32, 30.18 ,-15.32, 30.38, -15.44}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', 94.77, -26.98, 0, 0, 0, 0}, -{'c', 96.16, -25.18, 96.45 ,-22.39, 94.40, -21.00}, -{'c', 94.95, -17.69, 98.30 ,-19.67, 100.40, -20.20}, -{'c', 100.29, -20.59, 100.52 ,-20.93, 100.80, -20.94}, -{'c', 101.86, -20.95, 102.54 ,-21.98, 103.60, -21.80}, -{'c', 104.03, -23.36, 105.67 ,-24.06, 106.32, -25.44}, -{'c', 108.04, -29.13, 107.45 ,-33.41, 104.87, -36.65}, -{'c', 104.67, -36.91, 104.88 ,-37.42, 104.76, -37.79}, -{'c', 104.00, -40.00, 101.94 ,-40.31, 100.00, -41.00}, -{'c', 98.82, -44.88, 98.16 ,-48.91, 96.40, -52.60}, -{'c', 94.79, -52.85, 94.09 ,-54.59, 92.75, -55.31}, -{'c', 91.42, -56.03, 90.85 ,-54.45, 90.89, -53.40}, -{'c', 90.90, -53.20, 91.35 ,-52.97, 91.18, -52.61}, -{'c', 91.11, -52.45, 90.84 ,-52.33, 90.84, -52.20}, -{'c', 90.85, -52.06, 91.07 ,-51.93, 91.20, -51.80}, -{'c', 90.28, -50.98, 88.86 ,-50.50, 88.56, -49.36}, -{'c', 87.61, -45.65, 90.18 ,-42.52, 91.85, -39.32}, -{'c', 92.44, -38.19, 91.71 ,-36.92, 90.95, -35.71}, -{'c', 90.51, -35.01, 90.62 ,-33.89, 90.89, -33.03}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', 57.61, -8.59, 0, 0, 0, 0}, -{'c', 56.12, -6.74, 52.71 ,-4.17, 55.63, -2.24}, -{'c', 55.82, -2.11, 56.19 ,-2.11, 56.37, -2.24}, -{'c', 58.39, -3.81, 60.39 ,-4.71, 62.83, -5.29}, -{'c', 62.95, -5.32, 63.22 ,-4.86, 63.59, -5.02}, -{'c', 65.21, -5.72, 67.22 ,-5.66, 68.40, -7.00}, -{'c', 72.17, -6.78, 75.73 ,-7.89, 79.12, -9.20}, -{'c', 80.28, -9.65, 81.55 ,-10.21, 82.75, -10.71}, -{'c', 84.13, -11.29, 85.33 ,-12.21, 86.45, -13.35}, -{'c', 86.58, -13.49, 86.93 ,-13.40, 87.20, -13.40}, -{'c', 87.16, -14.26, 88.12 ,-14.39, 88.37, -15.01}, -{'c', 88.46, -15.24, 88.31 ,-15.64, 88.44, -15.74}, -{'c', 90.58, -17.37, 91.50 ,-19.39, 90.33, -21.77}, -{'c', 90.05, -22.34, 89.80 ,-22.96, 89.23, -23.44}, -{'c', 88.15, -24.35, 87.05 ,-23.50, 86.00, -23.80}, -{'c', 85.84, -23.17, 85.11 ,-23.34, 84.73, -23.15}, -{'c', 83.87, -22.71, 82.53 ,-23.29, 81.67, -22.85}, -{'c', 80.31, -22.16, 79.07 ,-21.99, 77.65, -21.61}, -{'c', 77.34, -21.53, 76.56 ,-21.63, 76.40, -21.00}, -{'c', 76.27, -21.13, 76.12 ,-21.37, 76.01, -21.35}, -{'c', 74.10, -20.95, 72.84 ,-20.74, 71.54, -19.04}, -{'c', 71.44, -18.91, 71.00 ,-19.09, 70.84, -18.95}, -{'c', 69.88, -18.15, 69.48 ,-16.91, 68.38, -16.24}, -{'c', 68.17, -16.12, 67.82 ,-16.29, 67.63, -16.16}, -{'c', 66.98, -15.73, 66.62 ,-15.09, 65.97, -14.64}, -{'c', 65.64, -14.41, 65.25 ,-14.73, 65.28, -14.99}, -{'c', 65.52, -16.94, 66.17 ,-18.72, 65.60, -20.60}, -{'c', 67.68, -23.12, 70.19 ,-25.07, 72.00, -27.80}, -{'c', 72.02, -29.97, 72.71 ,-32.11, 72.59, -34.19}, -{'c', 72.58, -34.38, 72.30 ,-35.12, 72.17, -35.46}, -{'c', 71.86, -36.32, 72.76 ,-37.38, 71.92, -38.11}, -{'c', 70.52, -39.31, 69.22 ,-38.43, 68.40, -37.00}, -{'c', 66.56, -36.61, 64.50 ,-35.92, 62.92, -37.15}, -{'c', 61.91, -37.94, 61.33 ,-38.84, 60.53, -39.90}, -{'c', 59.55, -41.20, 59.88 ,-42.64, 59.95, -44.20}, -{'c', 59.96, -44.33, 59.65 ,-44.47, 59.65, -44.60}, -{'c', 59.65, -44.73, 59.87 ,-44.87, 60.00, -45.00}, -{'c', 59.29, -45.63, 59.02 ,-46.68, 58.00, -47.00}, -{'c', 58.30, -48.09, 57.63 ,-48.98, 56.76, -49.28}, -{'c', 54.76, -49.97, 53.09 ,-48.06, 51.19, -47.98}, -{'c', 50.68, -47.97, 50.21 ,-49.00, 49.56, -49.33}, -{'c', 49.13, -49.54, 48.43 ,-49.58, 48.07, -49.31}, -{'c', 47.38, -48.81, 46.79 ,-48.69, 46.03, -48.49}, -{'c', 44.41, -48.05, 43.14 ,-46.96, 41.66, -46.10}, -{'c', 40.17, -45.25, 39.22 ,-43.81, 38.14, -42.49}, -{'c', 37.20, -41.34, 37.06 ,-38.92, 38.48, -38.42}, -{'c', 40.32, -37.77, 41.63 ,-40.48, 43.59, -40.15}, -{'c', 43.90, -40.10, 44.11 ,-39.79, 44.00, -39.40}, -{'c', 44.39, -39.29, 44.61 ,-39.52, 44.80, -39.80}, -{'c', 45.66, -38.78, 46.82 ,-38.44, 47.76, -37.57}, -{'c', 48.73, -36.67, 50.48 ,-37.09, 51.49, -36.09}, -{'c', 53.02, -34.59, 52.46 ,-31.91, 54.40, -30.60}, -{'c', 53.81, -29.29, 53.21 ,-28.01, 52.87, -26.58}, -{'c', 52.59, -25.38, 53.58 ,-24.18, 54.80, -24.27}, -{'c', 56.05, -24.36, 56.31 ,-25.12, 56.80, -26.20}, -{'c', 57.07, -25.93, 57.54 ,-25.64, 57.49, -25.42}, -{'c', 57.04, -23.03, 56.01 ,-21.04, 55.55, -18.61}, -{'c', 55.49, -18.29, 55.19 ,-18.09, 54.80, -18.20}, -{'c', 54.33, -14.05, 50.28 ,-11.66, 47.73, -8.49}, -{'c', 47.33, -7.99, 47.33 ,-6.74, 47.74, -6.34}, -{'c', 49.14, -4.95, 51.10 ,-6.50, 52.80, -7.00}, -{'c', 53.01, -8.21, 53.87 ,-9.15, 55.20, -9.09}, -{'c', 55.46, -9.08, 55.70 ,-9.62, 56.02, -9.75}, -{'c', 56.37, -9.89, 56.87 ,-9.67, 57.16, -9.87}, -{'c', 58.88, -11.06, 60.29 ,-12.17, 62.03, -13.36}, -{'c', 62.22, -13.49, 62.57 ,-13.33, 62.78, -13.44}, -{'c', 63.11, -13.60, 63.29 ,-13.98, 63.62, -14.17}, -{'c', 63.97, -14.37, 64.21 ,-14.08, 64.40, -13.80}, -{'c', 63.75, -13.45, 63.75 ,-12.49, 63.17, -12.29}, -{'c', 62.39, -12.02, 61.83 ,-11.51, 61.16, -11.06}, -{'c', 60.87, -10.87, 60.21 ,-11.12, 60.10, -10.94}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', 2.20, -58.00, 0, 0, 0, 0}, -{'c', 2.20, -58.00, -7.04 ,-60.87, -18.20, -35.20}, -{'c', -18.20, -35.20, -20.60 ,-30.00, -23.00, -28.00}, -{'c', -25.40, -26.00, -36.60 ,-22.40, -38.60, -18.40}, -{'l', -49.00, -2.40, 0, 0, 0, 0}, -{'c', -49.00, -2.40, -34.20 ,-18.40, -31.00, -20.80}, -{'c', -31.00, -20.80, -23.00 ,-29.20, -26.20, -22.40}, -{'c', -26.20, -22.40, -40.20 ,-11.60, -39.00, -2.40}, -{'c', -39.00, -2.40, -44.60 ,12.00, -45.40, 14.00}, -{'c', -45.40, 14.00, -29.40 ,-18.00, -27.00, -19.20}, -{'c', -24.60, -20.40, -23.40 ,-20.40, -24.60, -16.80}, -{'c', -25.80, -13.20, -26.20 ,3.20, -29.00, 5.20}, -{'c', -29.00, 5.20, -21.00 ,-15.20, -21.80, -18.40}, -{'c', -21.80, -18.40, -18.60 ,-22.00, -16.20, -16.80}, -{'l', -17.40, -0.80, 0, 0, 0, 0}, -{'l', -13.00, 11.20, 0, 0, 0, 0}, -{'c', -13.00, 11.20, -15.40 ,0.00, -13.80, -15.60}, -{'c', -13.80, -15.60, -15.80 ,-26.00, -11.80, -20.40}, -{'c', -7.80, -14.80, 1.80 ,-8.80, 1.80, -4.00}, -{'c', 1.80, -4.00, -3.40 ,-21.60, -12.60, -26.40}, -{'l', -16.60, -20.40, 0, 0, 0, 0}, -{'l', -17.80, -22.40, 0, 0, 0, 0}, -{'c', -17.80, -22.40, -21.40 ,-23.20, -17.00, -30.00}, -{'c', -12.60, -36.80, -13.00 ,-37.60, -13.00, -37.60}, -{'c', -13.00, -37.60, -6.60 ,-30.40, -5.00, -30.40}, -{'c', -5.00, -30.40, 8.20 ,-38.00, 9.40, -13.60}, -{'c', 9.40, -13.60, 16.20 ,-28.00, 7.00, -34.80}, -{'c', 7.00, -34.80, -7.80 ,-36.80, -6.60, -42.00}, -{'l', 0.60, -54.40, 0, 0, 0, 0}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', -17.80, -41.60, 0, 0, 0, 0}, -{'c', -17.80, -41.60, -30.60 ,-41.60, -33.80, -36.40}, -{'l', -41.00, -26.80, 0, 0, 0, 0}, -{'c', -41.00, -26.80, -23.80 ,-36.80, -19.80, -38.00}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', -57.80, -35.20, 0, 0, 0, 0}, -{'c', -57.80, -35.20, -59.80 ,-34.00, -60.20, -31.20}, -{'c', -60.60, -28.40, -63.00 ,-28.00, -62.20, -25.20}, -{'c', -61.40, -22.40, -59.40 ,-20.00, -59.40, -24.00}, -{'c', -59.40, -28.00, -57.80 ,-30.00, -57.00, -31.20}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', -66.60, 26.00, 0, 0, 0, 0}, -{'c', -66.60, 26.00, -75.00 ,22.00, -78.20, 18.40}, -{'c', -81.40, 14.80, -80.95 ,19.97, -85.80, 19.60}, -{'c', -91.65, 19.16, -90.60 ,3.20, -90.60, 3.20}, -{'l', -94.60, 10.80, 0, 0, 0, 0}, -{'c', -94.60, 10.80, -95.80 ,25.20, -87.80, 22.80}, -{'c', -83.89, 21.63, -82.60 ,23.20, -84.20, 24.00}, -{'c', -85.80, 24.80, -78.60 ,25.20, -81.40, 26.80}, -{'c', -84.20, 28.40, -69.80 ,23.20, -72.20, 33.60}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', -79.20, 40.40, 0, 0, 0, 0}, -{'c', -79.20, 40.40, -94.60 ,44.80, -98.20, 35.20}, -{'c', -98.20, 35.20, -103.00 ,37.60, -100.80, 40.60}, -{'c', -98.60, 43.60, -97.40 ,44.00, -97.40, 44.00}, -{'c', -97.40, 44.00, -92.00 ,45.20, -92.60, 46.00}, -{'c', -93.20, 46.80, -95.60 ,50.20, -95.60, 50.20}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', 149.20, 118.60, 0, 0, 0, 0}, -{'c', 148.77, 120.73, 147.10 ,121.54, 145.20, 122.20}, -{'c', 143.28, 121.24, 140.69 ,118.14, 138.80, 120.20}, -{'c', 138.33, 119.72, 137.55 ,119.66, 137.20, 119.00}, -{'c', 136.74, 118.10, 137.01 ,117.06, 136.67, 116.26}, -{'c', 136.12, 114.98, 135.41 ,113.62, 135.60, 112.20}, -{'c', 137.41, 111.49, 138.00 ,109.58, 137.53, 107.82}, -{'c', 137.46, 107.56, 137.03 ,107.37, 137.23, 107.02}, -{'c', 137.42, 106.69, 137.73 ,106.47, 138.00, 106.20}, -{'c', 137.87, 106.33, 137.72 ,106.57, 137.61, 106.55}, -{'c', 137.00, 106.44, 137.12 ,105.81, 137.25, 105.42}, -{'c', 137.84, 103.67, 139.85 ,103.41, 141.20, 104.60}, -{'c', 141.46, 104.03, 141.97 ,104.23, 142.40, 104.20}, -{'c', 142.35, 103.62, 142.76 ,103.09, 142.96, 102.67}, -{'c', 143.47, 101.58, 145.10 ,102.68, 145.90, 102.07}, -{'c', 146.98, 101.25, 148.04 ,100.55, 149.12, 101.15}, -{'c', 150.93, 102.16, 152.64 ,103.37, 153.84, 105.11}, -{'c', 154.41, 105.95, 154.65 ,107.23, 154.59, 108.19}, -{'c', 154.55, 108.83, 153.17 ,108.48, 152.83, 109.41}, -{'c', 152.19, 111.16, 154.02 ,111.68, 154.77, 113.02}, -{'c', 154.97, 113.37, 154.71 ,113.67, 154.39, 113.77}, -{'c', 153.98, 113.90, 153.20 ,113.71, 153.33, 114.16}, -{'f', 1.000000,1.000000,1.000000,1.000000,0,0 }, -{'m', 139.60, 138.20, 0, 0, 0, 0}, -{'c', 139.59, 136.46, 137.99 ,134.71, 139.20, 133.00}, -{'c', 139.34, 133.13, 139.47 ,133.36, 139.60, 133.36}, -{'c', 139.74, 133.36, 139.87 ,133.13, 140.00, 133.00}, -{'c', 141.50, 135.22, 145.15 ,136.15, 145.01, 138.99}, -{'c', 144.98, 139.44, 143.90 ,140.36, 144.80, 141.00}, -{'c', 142.99, 142.35, 142.93 ,144.72, 142.00, 146.60}, -{'c', 140.76, 146.31, 139.55 ,145.95, 138.40, 145.40}, -{'c', 138.75, 143.91, 138.64 ,142.23, 139.46, 140.91}, -{'f', 1.000000,1.000000,1.000000,1.000000,0,0 }, -{'m', -26.60, 129.20, 0, 0, 0, 0}, -{'c', -26.60, 129.20, -43.46 ,139.34, -29.40, 124.00}, -{'c', -20.60, 114.40, -10.60 ,108.80, -10.60, 108.80}, -{'c', -10.60, 108.80, -0.20 ,104.40, 3.40, 103.20}, -{'c', 7.00, 102.00, 22.20 ,96.80, 25.40, 96.40}, -{'c', 28.60, 96.00, 38.20 ,92.00, 45.00, 96.00}, -{'c', 51.80, 100.00, 59.80 ,104.40, 59.80, 104.40}, -{'c', 59.80, 104.40, 43.40 ,96.00, 39.80, 98.40}, -{'c', 36.20, 100.80, 29.00 ,100.40, 23.00, 103.60}, -{'c', 23.00, 103.60, 8.20 ,108.00, 5.00, 110.00}, -{'c', 1.80, 112.00, -8.60 ,123.60, -10.20, 122.80}, -{'c', -11.80, 122.00, -9.80 ,121.60, -8.60, 118.80}, -{'c', -7.40, 116.00, -9.40 ,114.40, -17.40, 120.80}, -{'f', 0.804000,0.804000,0.804000,1.000000,0,0 }, -{'m', -19.20, 123.23, 0, 0, 0, 0}, -{'c', -19.20, 123.23, -17.79 ,110.19, -9.31, 111.86}, -{'c', -9.31, 111.86, -1.08 ,107.69, 1.64, 105.72}, -{'c', 1.64, 105.72, 9.78 ,104.02, 11.09, 103.40}, -{'c', 29.57, 94.70, 44.29 ,99.22, 44.84, 98.10}, -{'c', 45.38, 96.98, 65.01 ,104.10, 68.61, 108.19}, -{'c', 69.01, 108.63, 58.38 ,102.59, 48.69, 100.70}, -{'c', 40.41, 99.08, 18.81 ,100.94, 7.91, 106.48}, -{'c', 4.93, 107.99, -4.01 ,113.77, -6.54, 113.66}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', -23.00, 148.80, 0, 0, 0, 0}, -{'c', -23.00, 148.80, -38.20 ,146.40, -21.40, 144.80}, -{'c', -21.40, 144.80, -3.40 ,142.80, 0.60, 137.60}, -{'c', 0.60, 137.60, 14.20 ,128.40, 17.00, 128.00}, -{'c', 19.80, 127.60, 49.80 ,120.40, 50.20, 118.00}, -{'c', 50.60, 115.60, 56.20 ,115.60, 57.80, 116.40}, -{'c', 59.40, 117.20, 58.60 ,118.40, 55.80, 119.20}, -{'c', 53.00, 120.00, 21.80 ,136.40, 15.40, 137.60}, -{'c', 9.00, 138.80, -2.60 ,146.40, -7.40, 147.60}, -{'f', 0.804000,0.804000,0.804000,1.000000,0,0 }, -{'m', -3.48, 141.40, 0, 0, 0, 0}, -{'c', -3.48, 141.40, -12.06 ,140.57, -3.46, 139.75}, -{'c', -3.46, 139.75, 5.36 ,136.33, 7.40, 133.67}, -{'c', 7.40, 133.67, 14.37 ,128.96, 15.80, 128.75}, -{'c', 17.23, 128.55, 31.19 ,124.86, 31.40, 123.63}, -{'c', 31.60, 122.40, 65.67 ,109.82, 70.09, 113.01}, -{'c', 73.00, 115.11, 63.10 ,113.44, 53.47, 117.85}, -{'c', 52.11, 118.47, 18.26 ,133.05, 14.98, 133.67}, -{'c', 11.70, 134.28, 5.76 ,138.17, 3.31, 138.79}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', -11.40, 143.60, 0, 0, 0, 0}, -{'c', -11.40, 143.60, -6.20 ,143.20, -7.40, 144.80}, -{'c', -8.60, 146.40, -11.00 ,145.60, -11.00, 145.60}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', -18.60, 145.20, 0, 0, 0, 0}, -{'c', -18.60, 145.20, -13.40 ,144.80, -14.60, 146.40}, -{'c', -15.80, 148.00, -18.20 ,147.20, -18.20, 147.20}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', -29.00, 146.80, 0, 0, 0, 0}, -{'c', -29.00, 146.80, -23.80 ,146.40, -25.00, 148.00}, -{'c', -26.20, 149.60, -28.60 ,148.80, -28.60, 148.80}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', -36.60, 147.60, 0, 0, 0, 0}, -{'c', -36.60, 147.60, -31.40 ,147.20, -32.60, 148.80}, -{'c', -33.80, 150.40, -36.20 ,149.60, -36.20, 149.60}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', 1.80, 108.00, 0, 0, 0, 0}, -{'c', 1.80, 108.00, 6.20 ,108.00, 5.00, 109.60}, -{'c', 3.80, 111.20, 0.60 ,110.80, 0.60, 110.80}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', -8.20, 113.60, 0, 0, 0, 0}, -{'c', -8.20, 113.60, -1.69 ,111.46, -4.20, 114.80}, -{'c', -5.40, 116.40, -7.80 ,115.60, -7.80, 115.60}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', -19.40, 118.40, 0, 0, 0, 0}, -{'c', -19.40, 118.40, -14.20 ,118.00, -15.40, 119.60}, -{'c', -16.60, 121.20, -19.00 ,120.40, -19.00, 120.40}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', -27.00, 124.40, 0, 0, 0, 0}, -{'c', -27.00, 124.40, -21.80 ,124.00, -23.00, 125.60}, -{'c', -24.20, 127.20, -26.60 ,126.40, -26.60, 126.40}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', -33.80, 129.20, 0, 0, 0, 0}, -{'c', -33.80, 129.20, -28.60 ,128.80, -29.80, 130.40}, -{'c', -31.00, 132.00, -33.40 ,131.20, -33.40, 131.20}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', 5.28, 135.60, 0, 0, 0, 0}, -{'c', 5.28, 135.60, 12.20 ,135.07, 10.61, 137.19}, -{'c', 9.01, 139.32, 5.81 ,138.26, 5.81, 138.26}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', 15.68, 130.80, 0, 0, 0, 0}, -{'c', 15.68, 130.80, 22.60 ,130.27, 21.01, 132.40}, -{'c', 19.41, 134.53, 16.21 ,133.46, 16.21, 133.46}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', 26.48, 126.40, 0, 0, 0, 0}, -{'c', 26.48, 126.40, 33.40 ,125.87, 31.81, 128.00}, -{'c', 30.21, 130.12, 27.01 ,129.06, 27.01, 129.06}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', 36.88, 121.60, 0, 0, 0, 0}, -{'c', 36.88, 121.60, 43.80 ,121.07, 42.21, 123.19}, -{'c', 40.61, 125.33, 37.41 ,124.26, 37.41, 124.26}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', 9.28, 103.60, 0, 0, 0, 0}, -{'c', 9.28, 103.60, 16.20 ,103.07, 14.61, 105.19}, -{'c', 13.01, 107.33, 9.01 ,107.06, 9.01, 107.06}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', 19.28, 100.40, 0, 0, 0, 0}, -{'c', 19.28, 100.40, 26.20 ,99.87, 24.61, 102.00}, -{'c', 23.01, 104.12, 18.61 ,103.86, 18.61, 103.86}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', -3.40, 140.40, 0, 0, 0, 0}, -{'c', -3.40, 140.40, 1.80 ,140.00, 0.60, 141.60}, -{'c', -0.60, 143.20, -3.00 ,142.40, -3.00, 142.40}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', -76.60, 41.20, 0, 0, 0, 0}, -{'c', -76.60, 41.20, -81.00 ,50.00, -81.40, 53.20}, -{'c', -81.40, 53.20, -80.60 ,44.40, -79.40, 42.40}, -{'f', 0.603000,0.134000,0.000000,1.000000,0,0 }, -{'m', -95.00, 55.20, 0, 0, 0, 0}, -{'c', -95.00, 55.20, -98.20 ,69.60, -97.80, 72.40}, -{'c', -97.80, 72.40, -99.00 ,60.80, -98.60, 59.60}, -{'f', 0.603000,0.134000,0.000000,1.000000,0,0 }, -{'m', -74.20, -19.40, 0, 0, 0, 0}, -{'l', -74.40, -16.20, 0, 0, 0, 0}, -{'l', -76.60, -16.00, 0, 0, 0, 0}, -{'c', -76.60, -16.00, -62.40 ,-3.40, -61.80, 4.20}, -{'f', 0.804000,0.804000,0.804000,1.000000,0,0 }, -{'m', -70.22, -18.14, 0, 0, 0, 0}, -{'c', -70.65, -18.55, -70.43 ,-19.30, -70.84, -19.56}, -{'c', -71.64, -20.07, -69.54 ,-20.13, -69.77, -20.84}, -{'c', -70.15, -22.05, -69.96 ,-22.07, -70.08, -23.35}, -{'c', -70.14, -23.95, -69.55 ,-25.49, -69.17, -25.93}, -{'c', -67.72, -27.58, -69.05 ,-30.51, -67.41, -32.06}, -{'c', -67.10, -32.35, -66.73 ,-32.90, -66.44, -33.32}, -{'c', -65.78, -34.28, -64.60 ,-34.77, -63.65, -35.60}, -{'c', -63.33, -35.88, -63.53 ,-36.70, -62.96, -36.61}, -{'c', -62.25, -36.49, -61.01 ,-36.62, -61.05, -35.78}, -{'c', -61.16, -33.66, -62.49 ,-31.94, -63.77, -30.28}, -{'c', -63.32, -29.57, -63.78 ,-28.94, -64.06, -28.38}, -{'c', -65.40, -25.76, -65.21 ,-22.92, -65.39, -20.08}, -{'c', -65.39, -19.99, -65.70 ,-19.92, -65.69, -19.86}, -{'c', -65.34, -17.53, -64.75 ,-15.33, -63.87, -13.10}, -{'c', -63.51, -12.17, -63.04 ,-11.28, -62.89, -10.35}, -{'c', -62.77, -9.66, -62.67 ,-8.83, -63.08, -8.12}, -{'c', -61.05, -5.23, -62.35 ,-2.58, -61.19, 0.95}, -{'c', -60.98, 1.57, -59.29 ,3.49, -59.75, 3.33}, -{'c', -62.26, 2.46, -62.37 ,2.06, -62.55, 1.30}, -{'c', -62.70, 0.68, -63.03 ,-0.70, -63.26, -1.30}, -{'c', -63.33, -1.46, -63.50 ,-3.35, -63.58, -3.47}, -{'c', -65.09, -5.85, -63.73 ,-5.67, -65.10, -8.03}, -{'c', -66.53, -8.71, -67.50 ,-9.82, -68.62, -10.98}, -{'c', -68.82, -11.18, -67.67 ,-11.91, -67.86, -12.12}, -{'c', -68.95, -13.41, -70.10 ,-14.18, -69.76, -15.67}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', -73.80, -16.40, 0, 0, 0, 0}, -{'c', -73.80, -16.40, -73.40 ,-9.60, -71.00, -8.00}, -{'c', -68.60, -6.40, -69.80 ,-7.20, -73.00, -8.40}, -{'c', -76.20, -9.60, -75.00 ,-10.40, -75.00, -10.40}, -{'c', -75.00, -10.40, -77.80 ,-10.00, -75.40, -8.00}, -{'c', -73.00, -6.00, -69.40 ,-3.60, -71.00, -3.60}, -{'c', -72.60, -3.60, -80.20 ,-7.60, -80.20, -10.40}, -{'c', -80.20, -13.20, -81.20 ,-17.30, -81.20, -17.30}, -{'c', -81.20, -17.30, -80.10 ,-18.10, -75.30, -18.00}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', -74.60, 2.20, 0, 0, 0, 0}, -{'c', -74.60, 2.20, -83.12 ,-0.59, -101.60, 2.80}, -{'c', -101.60, 2.80, -92.57 ,0.72, -73.80, 3.00}, -{'f', 1.000000,1.000000,1.000000,1.000000,0,0 }, -{'m', -72.50, 2.13, 0, 0, 0, 0}, -{'c', -72.50, 2.13, -80.75 ,-1.39, -99.45, 0.39}, -{'c', -99.45, 0.39, -90.28 ,-0.90, -71.77, 3.00}, -{'f', 1.000000,1.000000,1.000000,1.000000,0,0 }, -{'m', -70.71, 2.22, 0, 0, 0, 0}, -{'c', -70.71, 2.22, -78.68 ,-1.90, -97.46, -1.51}, -{'c', -97.46, -1.51, -88.21 ,-2.12, -70.05, 3.14}, -{'f', 1.000000,1.000000,1.000000,1.000000,0,0 }, -{'m', -69.44, 2.44, 0, 0, 0, 0}, -{'c', -69.44, 2.44, -76.27 ,-1.86, -93.14, -2.96}, -{'c', -93.14, -2.96, -84.80 ,-2.79, -68.92, 3.32}, -{'f', 1.000000,1.000000,1.000000,1.000000,0,0 }, -{'m', 45.84, 12.96, 0, 0, 0, 0}, -{'c', 45.84, 12.96, 44.91 ,13.61, 45.12, 12.42}, -{'c', 45.34, 11.24, 73.55 ,-1.93, 77.16, -1.68}, -{'f', 1.000000,1.000000,1.000000,1.000000,0,0 }, -{'m', 42.45, 13.60, 0, 0, 0, 0}, -{'c', 42.45, 13.60, 41.57 ,14.31, 41.69, 13.12}, -{'c', 41.81, 11.93, 68.90 ,-3.42, 72.52, -3.45}, -{'f', 1.000000,1.000000,1.000000,1.000000,0,0 }, -{'m', 39.16, 14.97, 0, 0, 0, 0}, -{'c', 39.16, 14.97, 38.33 ,15.75, 38.37, 14.55}, -{'c', 38.42, 13.35, 58.23 ,-2.15, 68.05, -4.02}, -{'f', 1.000000,1.000000,1.000000,1.000000,0,0 }, -{'m', 36.28, 16.84, 0, 0, 0, 0}, -{'c', 36.28, 16.84, 35.54 ,17.53, 35.58, 16.45}, -{'c', 35.62, 15.37, 53.45 ,1.43, 62.28, -0.26}, -{'f', 1.000000,1.000000,1.000000,1.000000,0,0 }, -{'m', 4.60, 164.80, 0, 0, 0, 0}, -{'c', 4.60, 164.80, -10.60 ,162.40, 6.20, 160.80}, -{'c', 6.20, 160.80, 24.20 ,158.80, 28.20, 153.60}, -{'c', 28.20, 153.60, 41.80 ,144.40, 44.60, 144.00}, -{'c', 47.40, 143.60, 63.80 ,140.00, 64.20, 137.60}, -{'c', 64.60, 135.20, 70.60 ,132.80, 72.20, 133.60}, -{'c', 73.80, 134.40, 73.80 ,143.60, 71.00, 144.40}, -{'c', 68.20, 145.20, 49.40 ,152.40, 43.00, 153.60}, -{'c', 36.60, 154.80, 25.00 ,162.40, 20.20, 163.60}, -{'f', 0.804000,0.804000,0.804000,1.000000,0,0 }, -{'m', 77.60, 127.40, 0, 0, 0, 0}, -{'c', 77.60, 127.40, 74.60 ,129.00, 73.40, 131.60}, -{'c', 73.40, 131.60, 67.00 ,142.20, 52.80, 145.40}, -{'c', 52.80, 145.40, 29.80 ,154.40, 22.00, 156.40}, -{'c', 22.00, 156.40, 8.60 ,161.40, 1.20, 160.60}, -{'c', 1.20, 160.60, -5.80 ,160.80, 0.40, 162.40}, -{'c', 0.40, 162.40, 20.60 ,160.40, 24.00, 158.60}, -{'c', 24.00, 158.60, 39.60 ,153.40, 42.60, 150.80}, -{'c', 45.60, 148.20, 63.80 ,143.20, 66.00, 141.20}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', 18.88, 158.91, 0, 0, 0, 0}, -{'c', 18.88, 158.91, 24.11 ,158.69, 22.96, 160.23}, -{'c', 21.80, 161.78, 19.36 ,160.91, 19.36, 160.91}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', 11.68, 160.26, 0, 0, 0, 0}, -{'c', 11.68, 160.26, 16.91 ,160.04, 15.76, 161.59}, -{'c', 14.60, 163.14, 12.15 ,162.26, 12.15, 162.26}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', 1.25, 161.51, 0, 0, 0, 0}, -{'c', 1.25, 161.51, 6.48 ,161.28, 5.33, 162.83}, -{'c', 4.17, 164.38, 1.73 ,163.51, 1.73, 163.51}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', -6.38, 162.06, 0, 0, 0, 0}, -{'c', -6.38, 162.06, -1.15 ,161.83, -2.31, 163.38}, -{'c', -3.46, 164.93, -5.91 ,164.05, -5.91, 164.05}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', 35.41, 151.51, 0, 0, 0, 0}, -{'c', 35.41, 151.51, 42.38 ,151.21, 40.84, 153.27}, -{'c', 39.31, 155.34, 36.05 ,154.17, 36.05, 154.17}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', 45.73, 147.09, 0, 0, 0, 0}, -{'c', 45.73, 147.09, 51.69 ,143.79, 51.16, 148.85}, -{'c', 50.88, 151.41, 46.36 ,149.75, 46.36, 149.75}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', 54.86, 144.27, 0, 0, 0, 0}, -{'c', 54.86, 144.27, 62.02 ,140.57, 60.29, 146.03}, -{'c', 59.51, 148.49, 55.49 ,146.94, 55.49, 146.94}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', 64.38, 139.45, 0, 0, 0, 0}, -{'c', 64.38, 139.45, 68.73 ,134.55, 69.80, 141.21}, -{'c', 70.21, 143.75, 65.01 ,142.11, 65.01, 142.11}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', 26.83, 156.00, 0, 0, 0, 0}, -{'c', 26.83, 156.00, 32.06 ,155.77, 30.91, 157.32}, -{'c', 29.76, 158.87, 27.31 ,158.00, 27.31, 158.00}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', 62.43, 34.60, 0, 0, 0, 0}, -{'c', 62.43, 34.60, 61.71 ,35.27, 61.71, 34.20}, -{'c', 61.71, 33.13, 79.19 ,19.86, 88.03, 18.48}, -{'f', 1.000000,1.000000,1.000000,1.000000,0,0 }, -{'m', 65.40, 98.40, 0, 0, 0, 0}, -{'c', 65.40, 98.40, 87.40 ,120.80, 96.60, 124.40}, -{'c', 96.60, 124.40, 105.80 ,135.60, 101.80, 161.60}, -{'c', 101.80, 161.60, 98.60 ,169.20, 95.40, 148.40}, -{'c', 95.40, 148.40, 98.60 ,123.20, 87.40, 139.20}, -{'c', 87.40, 139.20, 79.00 ,129.30, 85.40, 129.60}, -{'c', 85.40, 129.60, 88.60 ,131.60, 89.00, 130.00}, -{'c', 89.40, 128.40, 81.40 ,114.80, 64.20, 100.40}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', 7.00, 137.20, 0, 0, 0, 0}, -{'c', 7.00, 137.20, 6.80 ,135.40, 8.60, 136.20}, -{'c', 10.40, 137.00, 104.60 ,143.20, 136.20, 167.20}, -{'f', 1.000000,1.000000,1.000000,1.000000,0,0 }, -{'m', 17.40, 132.80, 0, 0, 0, 0}, -{'c', 17.40, 132.80, 17.20 ,131.00, 19.00, 131.80}, -{'c', 20.80, 132.60, 157.40 ,131.60, 181.00, 164.00}, -{'f', 1.000000,1.000000,1.000000,1.000000,0,0 }, -{'m', 29.00, 128.80, 0, 0, 0, 0}, -{'c', 29.00, 128.80, 28.80 ,127.00, 30.60, 127.80}, -{'c', 32.40, 128.60, 205.80 ,115.60, 229.40, 148.00}, -{'f', 1.000000,1.000000,1.000000,1.000000,0,0 }, -{'m', 39.00, 124.00, 0, 0, 0, 0}, -{'c', 39.00, 124.00, 38.80 ,122.20, 40.60, 123.00}, -{'c', 42.40, 123.80, 164.60 ,85.20, 188.20, 117.60}, -{'f', 1.000000,1.000000,1.000000,1.000000,0,0 }, -{'m', -19.00, 146.80, 0, 0, 0, 0}, -{'c', -19.00, 146.80, -19.20 ,145.00, -17.40, 145.80}, -{'c', -15.60, 146.60, 2.20 ,148.80, 4.20, 187.60}, -{'f', 1.000000,1.000000,1.000000,1.000000,0,0 }, -{'m', -27.80, 148.40, 0, 0, 0, 0}, -{'c', -27.80, 148.40, -28.00 ,146.60, -26.20, 147.40}, -{'c', -24.40, 148.20, -10.20 ,143.60, -13.00, 182.40}, -{'f', 1.000000,1.000000,1.000000,1.000000,0,0 }, -{'m', -35.80, 148.80, 0, 0, 0, 0}, -{'c', -35.80, 148.80, -36.00 ,147.00, -34.20, 147.80}, -{'c', -32.40, 148.60, -17.00 ,149.20, -29.40, 171.60}, -{'f', 1.000000,1.000000,1.000000,1.000000,0,0 }, -{'m', 11.53, 104.47, 0, 0, 0, 0}, -{'c', 11.53, 104.47, 11.08 ,106.46, 12.63, 105.25}, -{'c', 28.70, 92.62, 61.14 ,33.72, 116.83, 28.09}, -{'f', 1.000000,1.000000,1.000000,1.000000,0,0 }, -{'m', 22.73, 102.67, 0, 0, 0, 0}, -{'c', 22.73, 102.67, 21.36 ,101.47, 23.23, 100.85}, -{'c', 25.10, 100.22, 137.54 ,27.72, 176.83, 35.69}, -{'f', 1.000000,1.000000,1.000000,1.000000,0,0 }, -{'m', 1.89, 108.77, 0, 0, 0, 0}, -{'c', 1.89, 108.77, 1.38 ,110.37, 3.09, 109.39}, -{'c', 12.06, 104.27, 15.68 ,47.06, 59.25, 45.80}, -{'f', 1.000000,1.000000,1.000000,1.000000,0,0 }, -{'m', -18.04, 119.79, 0, 0, 0, 0}, -{'c', -18.04, 119.79, -19.11 ,121.08, -17.16, 120.83}, -{'c', -6.92, 119.49, 14.49 ,78.22, 58.93, 83.30}, -{'f', 1.000000,1.000000,1.000000,1.000000,0,0 }, -{'m', -6.80, 113.67, 0, 0, 0, 0}, -{'c', -6.80, 113.67, -7.61 ,115.14, -5.74, 114.51}, -{'c', 4.06, 111.24, 17.14 ,66.62, 61.73, 63.08}, -{'f', 1.000000,1.000000,1.000000,1.000000,0,0 }, -{'m', -25.08, 124.91, 0, 0, 0, 0}, -{'c', -25.08, 124.91, -25.95 ,125.95, -24.37, 125.75}, -{'c', -16.07, 124.67, 1.27 ,91.24, 37.26, 95.35}, -{'f', 1.000000,1.000000,1.000000,1.000000,0,0 }, -{'m', -32.68, 130.82, 0, 0, 0, 0}, -{'c', -32.68, 130.82, -33.68 ,131.87, -32.09, 131.75}, -{'c', -27.92, 131.44, 2.71 ,98.36, 21.18, 113.86}, -{'f', 1.000000,1.000000,1.000000,1.000000,0,0 }, -{'m', 36.85, 98.90, 0, 0, 0, 0}, -{'c', 36.85, 98.90, 35.65 ,97.54, 37.59, 97.16}, -{'c', 39.52, 96.77, 160.22 ,39.06, 198.18, 51.93}, -{'f', 1.000000,1.000000,1.000000,1.000000,0,0 }, -{'m', 3.40, 163.20, 0, 0, 0, 0}, -{'c', 3.40, 163.20, 3.20 ,161.40, 5.00, 162.20}, -{'c', 6.80, 163.00, 22.20 ,163.60, 9.80, 186.00}, -{'f', 1.000000,1.000000,1.000000,1.000000,0,0 }, -{'m', 13.80, 161.60, 0, 0, 0, 0}, -{'c', 13.80, 161.60, 13.60 ,159.80, 15.40, 160.60}, -{'c', 17.20, 161.40, 35.00 ,163.60, 37.00, 202.40}, -{'f', 1.000000,1.000000,1.000000,1.000000,0,0 }, -{'m', 20.60, 160.00, 0, 0, 0, 0}, -{'c', 20.60, 160.00, 20.40 ,158.20, 22.20, 159.00}, -{'c', 24.00, 159.80, 48.60 ,163.20, 72.20, 195.60}, -{'f', 1.000000,1.000000,1.000000,1.000000,0,0 }, -{'m', 28.23, 157.97, 0, 0, 0, 0}, -{'c', 28.23, 157.97, 27.79 ,156.21, 29.68, 156.77}, -{'c', 31.57, 157.32, 52.00 ,155.42, 90.10, 189.60}, -{'f', 1.000000,1.000000,1.000000,1.000000,0,0 }, -{'m', 38.62, 153.57, 0, 0, 0, 0}, -{'c', 38.62, 153.57, 38.19 ,151.81, 40.08, 152.37}, -{'c', 41.97, 152.92, 76.80 ,157.42, 128.50, 192.40}, -{'f', 1.000000,1.000000,1.000000,1.000000,0,0 }, -{'m', -1.80, 142.00, 0, 0, 0, 0}, -{'c', -1.80, 142.00, -2.00 ,140.20, -0.20, 141.00}, -{'c', 1.60, 141.80, 55.00 ,144.40, 85.40, 171.20}, -{'f', 1.000000,1.000000,1.000000,1.000000,0,0 }, -{'m', -11.80, 146.00, 0, 0, 0, 0}, -{'c', -11.80, 146.00, -12.00 ,144.20, -10.20, 145.00}, -{'c', -8.40, 145.80, 16.20 ,149.20, 39.80, 181.60}, -{'f', 1.000000,1.000000,1.000000,1.000000,0,0 }, -{'m', 49.50, 148.96, 0, 0, 0, 0}, -{'c', 49.50, 148.96, 48.94 ,147.24, 50.86, 147.66}, -{'c', 52.79, 148.07, 87.86 ,150.00, 141.98, 181.10}, -{'f', 1.000000,1.000000,1.000000,1.000000,0,0 }, -{'m', 57.90, 146.56, 0, 0, 0, 0}, -{'c', 57.90, 146.56, 57.34 ,144.84, 59.26, 145.25}, -{'c', 61.19, 145.67, 96.26 ,147.60, 150.38, 178.70}, -{'f', 1.000000,1.000000,1.000000,1.000000,0,0 }, -{'m', 67.50, 141.56, 0, 0, 0, 0}, -{'c', 67.50, 141.56, 66.94 ,139.84, 68.86, 140.25}, -{'c', 70.79, 140.67, 113.86 ,145.00, 203.58, 179.30}, -{'f', 1.000000,1.000000,1.000000,1.000000,0,0 }, -{'m', -43.80, 148.40, 0, 0, 0, 0}, -{'c', -43.80, 148.40, -38.60 ,148.00, -39.80, 149.60}, -{'c', -41.00, 151.20, -43.40 ,150.40, -43.40, 150.40}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', -13.00, 162.40, 0, 0, 0, 0}, -{'c', -13.00, 162.40, -7.80 ,162.00, -9.00, 163.60}, -{'c', -10.20, 165.20, -12.60 ,164.40, -12.60, 164.40}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', -21.80, 162.00, 0, 0, 0, 0}, -{'c', -21.80, 162.00, -16.60 ,161.60, -17.80, 163.20}, -{'c', -19.00, 164.80, -21.40 ,164.00, -21.40, 164.00}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', -117.17, 150.18, 0, 0, 0, 0}, -{'c', -117.17, 150.18, -112.12 ,151.50, -113.78, 152.62}, -{'c', -115.44, 153.74, -117.45 ,152.20, -117.45, 152.20}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', -115.17, 140.58, 0, 0, 0, 0}, -{'c', -115.17, 140.58, -110.12 ,141.91, -111.78, 143.02}, -{'c', -113.44, 144.14, -115.45 ,142.60, -115.45, 142.60}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', -122.37, 136.18, 0, 0, 0, 0}, -{'c', -122.37, 136.18, -117.32 ,137.50, -118.98, 138.62}, -{'c', -120.64, 139.74, -122.65 ,138.20, -122.65, 138.20}, -{'f', 0.000000,0.000000,0.000000,1.000000,0,0 }, -{'m', -42.60, 211.20, 0, 0, 0, 0}, -{'c', -42.60, 211.20, -44.20 ,211.20, -48.20, 213.20}, -{'c', -50.20, 213.20, -61.40 ,216.80, -67.00, 226.80}, -{'f', 0.804000,0.804000,0.804000,1.000000,0,0 }, -{'m', 45.12, 303.85, 0, 0, 0, 0}, -{'c', 45.26, 304.11, 45.31 ,304.52, 45.60, 304.54}, -{'c', 46.26, 304.58, 47.49 ,304.88, 47.37, 304.25}, -{'c', 46.52, 299.94, 45.65 ,295.00, 41.52, 293.20}, -{'c', 40.88, 292.92, 39.43 ,293.33, 39.36, 294.21}, -{'c', 39.23, 295.74, 39.12 ,297.09, 39.42, 298.55}, -{'c', 39.73, 299.98, 41.88 ,299.99, 42.80, 298.60}, -{'f', 0.804000,0.804000,0.804000,1.000000,0,0 }, -{'m', 34.04, 308.58, 0, 0, 0, 0}, -{'c', 34.79, 309.99, 34.66 ,311.85, 36.07, 312.42}, -{'c', 36.81, 312.71, 38.66 ,311.74, 38.25, 310.66}, -{'c', 37.44, 308.60, 37.06 ,306.36, 35.67, 304.55}, -{'c', 35.47, 304.29, 35.71 ,303.75, 35.55, 303.43}, -{'c', 34.95, 302.21, 33.81 ,301.47, 32.40, 301.80}, -{'c', 31.29, 304.00, 32.43 ,306.13, 33.95, 307.84}, -{'f', 0.804000,0.804000,0.804000,1.000000,0,0 }, -{'m', -5.56, 303.39, 0, 0, 0, 0}, -{'c', -5.67, 303.01, -5.71 ,302.55, -5.54, 302.23}, -{'c', -5.01, 301.20, -4.22 ,300.07, -4.56, 299.05}, -{'c', -4.91, 298.00, -6.02 ,298.18, -6.67, 298.75}, -{'c', -7.81, 299.74, -7.86 ,301.57, -8.55, 302.93}, -{'c', -8.74, 303.31, -8.69 ,303.89, -9.13, 304.28}, -{'c', -9.61, 304.70, -10.05 ,306.22, -9.95, 306.79}, -{'c', -9.90, 307.11, -10.08 ,317.01, -9.86, 316.75}, -{'c', -9.24, 316.02, -6.19 ,306.28, -6.12, 305.39}, -{'f', 0.804000,0.804000,0.804000,1.000000,0,0 }, -{'m', -31.20, 296.60, 0, 0, 0, 0}, -{'c', -28.57, 294.10, -25.78 ,291.14, -26.22, 287.43}, -{'c', -26.34, 286.45, -28.11 ,286.98, -28.30, 287.82}, -{'c', -29.10, 291.45, -31.14 ,294.11, -33.71, 296.50}, -{'c', -35.90, 298.55, -37.77 ,304.89, -38.00, 305.40}, -{'f', 0.804000,0.804000,0.804000,1.000000,0,0 }, -{'m', -44.78, 290.63, 0, 0, 0, 0}, -{'c', -44.25, 290.26, -44.55 ,289.77, -44.34, 289.44}, -{'c', -43.38, 287.98, -42.08 ,286.74, -42.07, 285.00}, -{'c', -42.06, 284.72, -42.44 ,284.41, -42.78, 284.64}, -{'c', -43.05, 284.82, -43.40 ,284.95, -43.50, 285.08}, -{'c', -45.53, 287.53, -46.93 ,290.20, -48.38, 293.01}, -{'c', -48.56, 293.37, -49.70 ,297.86, -49.39, 297.97}, -{'c', -49.15, 298.06, -47.43 ,293.88, -47.22, 293.76}, -{'f', 0.804000,0.804000,0.804000,1.000000,0,0 }, -{'m', -28.04, 310.18, 0, 0, 0, 0}, -{'c', -27.60, 309.31, -26.02 ,308.11, -26.14, 307.22}, -{'c', -26.25, 306.29, -25.79 ,304.85, -26.70, 305.54}, -{'c', -27.95, 306.48, -31.40 ,307.83, -31.67, 313.64}, -{'f', 0.804000,0.804000,0.804000,1.000000,0,0 }, -{'m', -13.60, 293.00, 0, 0, 0, 0}, -{'c', -13.20, 292.33, -12.49 ,292.81, -12.03, 292.54}, -{'c', -11.38, 292.17, -10.77 ,291.61, -10.48, 290.96}, -{'c', -9.51, 288.81, -7.74 ,287.00, -7.60, 284.60}, -{'c', -9.09, 283.20, -9.77 ,285.24, -10.40, 286.20}, -{'c', -11.72, 284.55, -12.72 ,286.43, -14.02, 286.95}, -{'c', -14.09, 286.98, -14.30 ,286.63, -14.38, 286.65}, -{'c', -15.56, 287.10, -16.24 ,288.18, -17.23, 288.96}, -{'c', -17.41, 289.09, -17.81 ,288.91, -17.96, 289.05}, -{'c', -18.61, 289.65, -19.58 ,289.98, -19.86, 290.66}, -{'c', -20.97, 293.36, -24.11 ,295.46, -26.00, 303.00}, -{'c', -25.62, 303.91, -21.49 ,296.36, -21.00, 295.66}, -{'c', -20.16, 294.46, -20.05 ,297.32, -18.77, 296.66}, -{'c', -18.72, 296.63, -18.53 ,296.87, -18.40, 297.00}, -{'c', -18.21, 296.72, -17.99 ,296.49, -17.60, 296.60}, -{'c', -17.60, 296.20, -17.73 ,295.64, -17.53, 295.49}, -{'c', -16.30, 294.51, -16.38 ,293.44, -15.60, 292.20}, -{'f', 0.804000,0.804000,0.804000,1.000000,0,0 }, -{'m', 46.20, 347.40, 0, 0, 0, 0}, -{'c', 46.20, 347.40, 53.60 ,327.00, 49.20, 315.80}, -{'c', 49.20, 315.80, 60.60 ,337.40, 56.00, 348.60}, -{'c', 56.00, 348.60, 55.60 ,338.20, 51.60, 333.20}, -{'f', 0.804000,0.804000,0.804000,1.000000,0,0 }, -{'m', 31.40, 344.80, 0, 0, 0, 0}, -{'c', 31.40, 344.80, 36.80 ,336.00, 28.80, 317.60}, -{'c', 28.80, 317.60, 28.00 ,338.00, 21.20, 349.00}, -{'f', 0.804000,0.804000,0.804000,1.000000,0,0 }, -{'m', 21.40, 342.80, 0, 0, 0, 0}, -{'c', 21.40, 342.80, 21.20 ,322.80, 21.60, 319.80}, -{'c', 21.60, 319.80, 17.80 ,336.40, 7.60, 346.00}, -{'f', 0.804000,0.804000,0.804000,1.000000,0,0 }, -{'m', 11.80, 310.80, 0, 0, 0, 0}, -{'c', 11.80, 310.80, 17.80 ,324.40, 7.80, 342.80}, -{'c', 7.80, 342.80, 14.20 ,330.60, 9.40, 323.60}, -{'f', 0.804000,0.804000,0.804000,1.000000,0,0 }, -{'m', -7.40, 342.40, 0, 0, 0, 0}, -{'c', -7.40, 342.40, -8.40 ,326.80, -6.60, 324.60}, -{'c', -6.60, 324.60, -6.40 ,318.20, -6.80, 317.20}, -{'c', -6.80, 317.20, -2.80 ,311.00, -2.60, 318.40}, -{'c', -2.60, 318.40, -1.20 ,326.20, 1.60, 330.80}, -{'c', 1.60, 330.80, 5.20 ,336.20, 5.00, 342.60}, -{'f', 0.804000,0.804000,0.804000,1.000000,0,0 }, -{'m', -11.00, 314.80, 0, 0, 0, 0}, -{'c', -11.00, 314.80, -17.60 ,325.60, -19.40, 344.60}, -{'c', -19.40, 344.60, -20.80 ,338.40, -17.00, 324.00}, -{'f', 0.804000,0.804000,0.804000,1.000000,0,0 }, -{'m', -32.80, 334.60, 0, 0, 0, 0}, -{'c', -32.80, 334.60, -27.80 ,329.20, -26.40, 324.20}, -{'c', -26.40, 324.20, -22.80 ,308.40, -29.20, 317.00}, -{'c', -29.20, 317.00, -29.00 ,325.00, -37.20, 332.40}, -{'f', 0.804000,0.804000,0.804000,1.000000,0,0 }, -{'m', -38.60, 329.60, 0, 0, 0, 0}, -{'c', -38.60, 329.60, -35.20 ,312.20, -34.40, 311.40}, -{'c', -34.40, 311.40, -32.60 ,308.00, -35.40, 311.20}, -{'c', -35.40, 311.20, -44.20 ,330.40, -48.20, 337.00}, -{'f', 0.804000,0.804000,0.804000,1.000000,0,0 }, -{'m', -44.40, 313.00, 0, 0, 0, 0}, -{'c', -44.40, 313.00, -32.80 ,290.60, -54.60, 316.40}, -{'f', 0.804000,0.804000,0.804000,1.000000,0,0 }, -{'m', -59.80, 298.40, 0, 0, 0, 0}, -{'c', -59.80, 298.40, -55.00 ,279.60, -52.40, 279.80}, -{'c', -52.40, 279.80, -44.20 ,270.80, -50.80, 281.40}, -{'c', -50.80, 281.40, -56.80 ,291.00, -56.20, 300.80}, -{'f', 0.804000,0.804000,0.804000,1.000000,0,0 }, -{'m', 270.50, 287.00, 0, 0, 0, 0}, -{'c', 270.50, 287.00, 258.50 ,277.00, 256.00, 273.50}, -{'c', 256.00, 273.50, 269.50 ,292.00, 269.50, 299.00}, -{'f', 0.804000,0.804000,0.804000,1.000000,0,0 }, -{'m', 276.00, 265.00, 0, 0, 0, 0}, -{'c', 276.00, 265.00, 255.00 ,250.00, 251.50, 242.50}, -{'c', 251.50, 242.50, 278.00 ,272.00, 278.00, 276.50}, -{'f', 0.804000,0.804000,0.804000,1.000000,0,0 }, -{'m', 293.00, 111.00, 0, 0, 0, 0}, -{'c', 293.00, 111.00, 281.00 ,103.00, 279.50, 105.00}, -{'c', 279.50, 105.00, 290.00 ,111.50, 292.50, 120.00}, -{'f', 0.804000,0.804000,0.804000,1.000000,0,0 }, -{'m', 301.50, 191.50, 0, 0, 0, 0}, -{'l', 284.00, 179.50, 0, 0, 0, 0}, -{'c', 284.00, 179.50, 303.00 ,196.50, 303.50, 200.50}, -{'f', 0.804000,0.804000,0.804000,1.000000,0,0 }, -{'m', -89.25, 169.00, 0, 0, 0, 0}, -{'f', 0.804000,0.804000,0.804000,1.000000,0,0 }, -{'l', -67.25, 173.75, 0, 0, 0, 0}, -{'m', -39.00, 331.00, 0, 0, 0, 0}, -{'f', 0.804000,0.804000,0.804000,1.000000,0,0 }, -{'m', -33.50, 336.00, 0, 0, 0, 0}, -{'f', 0.804000,0.804000,0.804000,1.000000,0,0 }, -{'m', 20.50, 344.50, 0, 0, 0, 0}, -{'f', 0.804000,0.804000,0.804000,1.000000,0,0 }, -{'m', 301.50, 191.50, 0, 0, 0, 0}, -{'l', 284.00, 179.50, 0, 0, 0, 0}, -{'c', 284.00, 179.50, 303.00 ,196.50, 303.50, 200.50}, -{'f', 0.804000,0.804000,0.804000,1.000000,0,0 }, -{'m', -89.25, 169.00, 0, 0, 0, 0}, -{'f', 0.804000,0.804000,0.804000,1.000000,0,0 }, -{'l', -67.25, 173.75, 0, 0, 0, 0}, -{'m', -39.00, 331.00, 0, 0, 0, 0}, -{'f', 0.804000,0.804000,0.804000,1.000000,0,0 }, -{'m', -33.50, 336.00, 0, 0, 0, 0}, -{'f', 0.804000,0.804000,0.804000,1.000000,0,0 }, -{'m', 20.50, 344.50, 0, 0, 0, 0}, -{'f', 0.804000,0.804000,0.804000,1.000000,0,0 }, -{'m', 301.50, 191.50, 0, 0, 0, 0}, -{'l', 284.00, 179.50, 0, 0, 0, 0}, -{'c', 284.00, 179.50, 303.00 ,196.50, 303.50, 200.50}, -{'f', 0.804000,0.804000,0.804000,1.000000,0,0 }, -{'m', -89.25, 169.00, 0, 0, 0, 0}, -{'f', 0.804000,0.804000,0.804000,1.000000,0,0 }, -{'l', -67.25, 173.75, 0, 0, 0, 0}, -{'m', -39.00, 331.00, 0, 0, 0, 0}, -{'f', 0.804000,0.804000,0.804000,1.000000,0,0 }, -{'m', -33.50, 336.00, 0, 0, 0, 0}, -{'f', 0.804000,0.804000,0.804000,1.000000,0,0 }, -{'m', 20.50, 344.50, 0, 0, 0, 0}, -{'f', 0.804000,0.804000,0.804000,1.000000,0,0 }}; diff --git a/test/tighten-bounds.c b/test/tighten-bounds.c deleted file mode 100644 index f5430e4..0000000 --- a/test/tighten-bounds.c +++ /dev/null @@ -1,172 +0,0 @@ -/* - * Copyright © 2011 Uli Schlachter - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Uli Schlachter - */ - -#include "cairo-test.h" - -static void path_none (cairo_t *cr, int size) -{ -} - -static void path_box (cairo_t *cr, int size) -{ - cairo_rectangle (cr, 0, 0, size, size); -} - -static void path_box_unaligned (cairo_t *cr, int size) -{ - cairo_rectangle (cr, 0.5, 0.5, size - 1, size - 1); -} - -static void path_triangle (cairo_t *cr, int size) -{ - cairo_move_to (cr, 0, 0); - cairo_line_to (cr, size/2, size); - cairo_line_to (cr, size, 0); - cairo_close_path (cr); -} - -static void path_circle (cairo_t *cr, int size) -{ - cairo_arc (cr, size / 2.0, size / 2.0, size / 2.0, 0, 2 * M_PI); -} - -static void (* const path_funcs[])(cairo_t *cr, int size) = { - path_none, - path_box, - path_box_unaligned, - path_triangle, - path_circle -}; - -#define SIZE 20 -#define PAD 2 -#define TYPES 6 -/* All-clipped is boring, thus we skip path_none for clipping */ -#define CLIP_OFFSET 1 -#define IMAGE_WIDTH ((ARRAY_LENGTH (path_funcs) - CLIP_OFFSET) * TYPES * (SIZE + PAD) - PAD) -#define IMAGE_HEIGHT (ARRAY_LENGTH (path_funcs) * (SIZE + PAD) - PAD) - -static void -draw_idx (cairo_t *cr, int i, int j, int type) -{ - cairo_bool_t little_path; - cairo_bool_t empty_clip; - cairo_bool_t little_clip; - - /* The lowest bit controls the path, the rest the clip */ - little_path = type & 1; - - /* We don't want the combination "empty_clip = TRUE, little_clip = FALSE" - * (== all clipped). - */ - switch (type >> 1) - { - case 0: - empty_clip = FALSE; - little_clip = FALSE; - break; - case 1: - empty_clip = FALSE; - little_clip = TRUE; - break; - case 2: - empty_clip = TRUE; - little_clip = TRUE; - break; - default: - return; - } - - cairo_save (cr); - - /* Thanks to the fill rule, drawing something twice removes it again */ - cairo_set_fill_rule (cr, CAIRO_FILL_RULE_EVEN_ODD); - - path_funcs[i] (cr, SIZE); - if (empty_clip) - path_funcs[i] (cr, SIZE); - if (little_clip) - { - cairo_save (cr); - cairo_translate (cr, SIZE / 4, SIZE / 4); - path_funcs[i] (cr, SIZE / 2); - cairo_restore (cr); - } - cairo_clip (cr); - - path_funcs[j] (cr, SIZE); - path_funcs[j] (cr, SIZE); - if (little_path) - { - /* Draw the object again in the center of itself */ - cairo_save (cr); - cairo_translate (cr, SIZE / 4, SIZE / 4); - path_funcs[j] (cr, SIZE / 2); - cairo_restore (cr); - } - cairo_fill (cr); - cairo_restore (cr); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - size_t i, j, k; - - cairo_set_source_rgb (cr, 0, 1, 0); - cairo_paint (cr); - - /* Set an unbounded operator so that we can see how accurate the bounded - * extents were. - */ - cairo_set_operator (cr, CAIRO_OPERATOR_IN); - cairo_set_source_rgb (cr, 1, 1, 1); - - for (j = 0; j < ARRAY_LENGTH (path_funcs); j++) { - cairo_save (cr); - for (i = CLIP_OFFSET; i < ARRAY_LENGTH (path_funcs); i++) { - for (k = 0; k < TYPES; k++) { - cairo_save (cr); - cairo_rectangle (cr, 0, 0, SIZE, SIZE); - cairo_clip (cr); - draw_idx (cr, i, j, k); - cairo_restore (cr); - cairo_translate (cr, SIZE + PAD, 0); - } - } - cairo_restore (cr); - cairo_translate (cr, 0, SIZE + PAD); - } - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (tighten_bounds, - "Tests that we tighten the bounds after tessellation.", - "fill", /* keywords */ - NULL, /* requirements */ - IMAGE_WIDTH, IMAGE_HEIGHT, - NULL, draw) diff --git a/test/toy-font-face.c b/test/toy-font-face.c deleted file mode 100644 index cbebf84..0000000 --- a/test/toy-font-face.c +++ /dev/null @@ -1,149 +0,0 @@ -/* - * Copyright © 2005,2008 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - * Behdad Esfahbod - */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include "cairo-test.h" - -#include -#include -#include - -#if CAIRO_HAS_WIN32_FONT -#define CAIRO_FONT_FAMILY_DEFAULT "Arial" -#elif CAIRO_HAS_QUARTZ_FONT -#define CAIRO_FONT_FAMILY_DEFAULT "Helvetica" -#elif CAIRO_HAS_FT_FONT -#define CAIRO_FONT_FAMILY_DEFAULT "" -#else -#define CAIRO_FONT_FAMILY_DEFAULT "@cairo:" -#endif - - -static cairo_test_status_t -preamble (cairo_test_context_t *ctx) -{ - cairo_t *cr; - cairo_surface_t *surface; - cairo_font_face_t *font_face; - cairo_status_t status; - - surface = cairo_image_surface_create (CAIRO_FORMAT_RGB24, 0, 0); - cr = cairo_create (surface); - cairo_surface_destroy (surface); - - font_face = cairo_font_face_reference (cairo_get_font_face (cr)); - assert (cairo_font_face_get_type (font_face) == CAIRO_FONT_TYPE_TOY); - assert (cairo_toy_font_face_get_family (font_face) != NULL); - assert (cairo_toy_font_face_get_slant (font_face) == CAIRO_FONT_SLANT_NORMAL); - assert (cairo_toy_font_face_get_weight (font_face) == CAIRO_FONT_WEIGHT_NORMAL); - status = cairo_font_face_status(font_face); - cairo_font_face_destroy (font_face); - - if (status) - return cairo_test_status_from_status (ctx, status); - - cairo_select_font_face (cr, - "bizarre", - CAIRO_FONT_SLANT_OBLIQUE, - CAIRO_FONT_WEIGHT_BOLD); - font_face = cairo_font_face_reference (cairo_get_font_face (cr)); - assert (cairo_font_face_get_type (font_face) == CAIRO_FONT_TYPE_TOY); - assert (0 == (strcmp) (cairo_toy_font_face_get_family (font_face), "bizarre")); - assert (cairo_toy_font_face_get_slant (font_face) == CAIRO_FONT_SLANT_OBLIQUE); - assert (cairo_toy_font_face_get_weight (font_face) == CAIRO_FONT_WEIGHT_BOLD); - status = cairo_font_face_status(font_face); - cairo_font_face_destroy (font_face); - - if (status) - return cairo_test_status_from_status (ctx, status); - - font_face = cairo_toy_font_face_create ("bozarre", - CAIRO_FONT_SLANT_OBLIQUE, - CAIRO_FONT_WEIGHT_BOLD); - assert (cairo_font_face_get_type (font_face) == CAIRO_FONT_TYPE_TOY); - assert (0 == (strcmp) (cairo_toy_font_face_get_family (font_face), "bozarre")); - assert (cairo_toy_font_face_get_slant (font_face) == CAIRO_FONT_SLANT_OBLIQUE); - assert (cairo_toy_font_face_get_weight (font_face) == CAIRO_FONT_WEIGHT_BOLD); - status = cairo_font_face_status(font_face); - cairo_font_face_destroy (font_face); - - if (status) - return cairo_test_status_from_status (ctx, status); - - font_face = cairo_toy_font_face_create (NULL, - CAIRO_FONT_SLANT_OBLIQUE, - CAIRO_FONT_WEIGHT_BOLD); - assert (cairo_font_face_get_type (font_face) == CAIRO_FONT_TYPE_TOY); - assert (0 == (strcmp) (cairo_toy_font_face_get_family (font_face), CAIRO_FONT_FAMILY_DEFAULT)); - assert (cairo_toy_font_face_get_slant (font_face) == CAIRO_FONT_SLANT_NORMAL); - assert (cairo_toy_font_face_get_weight (font_face) == CAIRO_FONT_WEIGHT_NORMAL); - assert (cairo_font_face_status(font_face) == CAIRO_STATUS_NULL_POINTER); - cairo_font_face_destroy (font_face); - - font_face = cairo_toy_font_face_create ("\xff", - CAIRO_FONT_SLANT_OBLIQUE, - CAIRO_FONT_WEIGHT_BOLD); - assert (cairo_font_face_get_type (font_face) == CAIRO_FONT_TYPE_TOY); - assert (0 == (strcmp) (cairo_toy_font_face_get_family (font_face), CAIRO_FONT_FAMILY_DEFAULT)); - assert (cairo_toy_font_face_get_slant (font_face) == CAIRO_FONT_SLANT_NORMAL); - assert (cairo_toy_font_face_get_weight (font_face) == CAIRO_FONT_WEIGHT_NORMAL); - assert (cairo_font_face_status(font_face) == CAIRO_STATUS_INVALID_STRING); - cairo_font_face_destroy (font_face); - - font_face = cairo_toy_font_face_create ("sans", - -1, - CAIRO_FONT_WEIGHT_BOLD); - assert (cairo_font_face_get_type (font_face) == CAIRO_FONT_TYPE_TOY); - assert (0 == (strcmp) (cairo_toy_font_face_get_family (font_face), CAIRO_FONT_FAMILY_DEFAULT)); - assert (cairo_toy_font_face_get_slant (font_face) == CAIRO_FONT_SLANT_NORMAL); - assert (cairo_toy_font_face_get_weight (font_face) == CAIRO_FONT_WEIGHT_NORMAL); - assert (cairo_font_face_status(font_face) == CAIRO_STATUS_INVALID_SLANT); - cairo_font_face_destroy (font_face); - - font_face = cairo_toy_font_face_create ("sans", - CAIRO_FONT_SLANT_OBLIQUE, - -1); - assert (cairo_font_face_get_type (font_face) == CAIRO_FONT_TYPE_TOY); - assert (0 == (strcmp) (cairo_toy_font_face_get_family (font_face), CAIRO_FONT_FAMILY_DEFAULT)); - assert (cairo_toy_font_face_get_slant (font_face) == CAIRO_FONT_SLANT_NORMAL); - assert (cairo_toy_font_face_get_weight (font_face) == CAIRO_FONT_WEIGHT_NORMAL); - assert (cairo_font_face_status(font_face) == CAIRO_STATUS_INVALID_WEIGHT); - cairo_font_face_destroy (font_face); - - cairo_destroy (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (toy_font_face, - "Check the construction of 'toy' font faces", - "font, api", /* keywords */ - NULL, /* requirements */ - 0, 0, - preamble, NULL) diff --git a/test/transforms.c b/test/transforms.c deleted file mode 100644 index 17b1396..0000000 --- a/test/transforms.c +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl Worth - */ - -#include "cairo-test.h" - -#define WIDTH 45 -#define HEIGHT 30 - -static void -draw_L_shape (cairo_t *cr) -{ - cairo_move_to (cr, 0, 0); - cairo_rel_line_to (cr, 0, 10); - cairo_rel_line_to (cr, 5, 0); - - cairo_save (cr); - cairo_identity_matrix (cr); - cairo_set_line_width (cr, 2.0); - cairo_stroke (cr); - cairo_restore (cr); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - /* We draw in the default black, so paint white first. */ - cairo_save (cr); - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); /* white */ - cairo_paint (cr); - cairo_restore (cr); - - cairo_translate (cr, 5, 5); - - draw_L_shape (cr); - - cairo_translate (cr, 10, 0); - - cairo_save (cr); - { - cairo_scale (cr, 2, 2); - draw_L_shape (cr); - } - cairo_restore (cr); - - cairo_translate (cr, 15, 0); - - cairo_save (cr); - { - cairo_rotate (cr, M_PI / 2.0); - draw_L_shape (cr); - } - cairo_restore (cr); - - cairo_translate (cr, 5, 0); - - cairo_save (cr); - { - cairo_matrix_t skew_y = { - 1, -1, - 0, 1, - 0, 0 - }; - cairo_transform (cr, &skew_y); - draw_L_shape (cr); - } - cairo_restore (cr); - - cairo_translate (cr, 5, 10); - - cairo_save (cr); - { - cairo_matrix_t skew_x = { - 1.0, 0.0, - -0.5, 1.0, - 0.0, 0.0 - }; - cairo_transform (cr, &skew_x); - draw_L_shape (cr); - } - cairo_restore (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (transforms, - "Test various transformations.", - "transforms, api", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/translate-show-surface.c b/test/translate-show-surface.c deleted file mode 100644 index 9f7af8d..0000000 --- a/test/translate-show-surface.c +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - */ - -/* Bug history - * - * 2005-04-11 Carl Worth - * - * It appears that calling cairo_show_surface after cairo_translate - * somehow applies the translation twice to the surface being - * shown. This is pretty easy to demonstrate by bringing up xsvg on - * an SVG file with an and panning around a bit with the - * arrow keys. - * - * This is almost certainly a regression, and I suspect there may be - * some interaction with the fix for move-to-show-surface. - * - * 2005-04-12 Carl Worth - * - * I committed a fix for this bug today. - */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_t *surface; - uint32_t colors[4] = { - 0xffffffff, 0xffff0000, - 0xff00ff00, 0xff0000ff - }; - int i; - - for (i=0; i < 4; i++) { - surface = cairo_image_surface_create_for_data ((unsigned char *) &colors[i], - CAIRO_FORMAT_RGB24, - 1, 1, 4); - cairo_save (cr); - { - cairo_translate (cr, i % 2, i / 2); - cairo_set_source_surface (cr, surface, 0, 0); - cairo_paint (cr); - } - cairo_restore (cr); - cairo_surface_finish (surface); /* colors will go out of scope */ - cairo_surface_destroy (surface); - } - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (translate_show_surface, - "Tests calls to cairo_show_surface after cairo_translate", - "transform", /* keywords */ - NULL, /* requirements */ - 2, 2, - NULL, draw) diff --git a/test/trap-clip.c b/test/trap-clip.c deleted file mode 100644 index f1a24ca..0000000 --- a/test/trap-clip.c +++ /dev/null @@ -1,213 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Kristian Høgsberg - */ - -#include "cairo-test.h" -#include -#include - -#define WIDTH 16 -#define HEIGHT 16 -#define PAD 2 - -static const char *png_filename = "romedalen.png"; -static cairo_surface_t *image; - -static void -set_solid_pattern (const cairo_test_context_t *ctx, cairo_t *cr, int x, int y) -{ - cairo_set_source_rgb (cr, 0, 0, 0.6); -} - -static void -set_translucent_pattern (const cairo_test_context_t *ctx, cairo_t *cr, int x, int y) -{ - cairo_set_source_rgba (cr, 0, 0, 0.6, 0.5); -} - -static void -set_gradient_pattern (const cairo_test_context_t *ctx, cairo_t *cr, int x, int y) -{ - cairo_pattern_t *pattern; - - pattern = - cairo_pattern_create_linear (x, y, x + WIDTH, y + HEIGHT); - cairo_pattern_add_color_stop_rgba (pattern, 0, 1, 1, 1, 1); - cairo_pattern_add_color_stop_rgba (pattern, 1, 0, 0, 0.4, 1); - cairo_set_source (cr, pattern); - cairo_pattern_destroy (pattern); -} - -static void -set_image_pattern (const cairo_test_context_t *ctx, cairo_t *cr, int x, int y) -{ - cairo_pattern_t *pattern; - - if (image == NULL || cairo_surface_status (image)) { - cairo_surface_destroy (image); - image = cairo_test_create_surface_from_png (ctx, png_filename); - } - - pattern = cairo_pattern_create_for_surface (image); - cairo_pattern_set_extend (pattern, CAIRO_EXTEND_REPEAT); - cairo_set_source (cr, pattern); - cairo_pattern_destroy (pattern); -} - -static void -draw_rect (cairo_t *cr, int x, int y) -{ - cairo_new_path (cr); - cairo_rectangle (cr, x, y, WIDTH, HEIGHT); - cairo_fill (cr); -} - -static void -draw_rects (cairo_t *cr, int x, int y) -{ - int width = WIDTH / 3; - int height = HEIGHT / 2; - - cairo_new_path (cr); - cairo_rectangle (cr, x, y, width, height); - cairo_rectangle (cr, x + width, y + height, width, height); - cairo_rectangle (cr, x + 2 * width, y, width, height); - cairo_fill (cr); -} - -static void -draw_polygon (cairo_t *cr, int x, int y) -{ - cairo_new_path (cr); - cairo_move_to (cr, x, y); - cairo_line_to (cr, x, y + HEIGHT); - cairo_line_to (cr, x + WIDTH / 2, y + 3 * HEIGHT / 4); - cairo_line_to (cr, x + WIDTH, y + HEIGHT); - cairo_line_to (cr, x + WIDTH, y); - cairo_line_to (cr, x + WIDTH / 2, y + HEIGHT / 4); - cairo_close_path (cr); - cairo_fill (cr); -} - -static void -clip_none (cairo_t *cr, int x, int y) -{ -} - -static void -clip_rect (cairo_t *cr, int x, int y) -{ - cairo_new_path (cr); - cairo_rectangle (cr, x + (int)WIDTH / 6, y + (int)HEIGHT / 6, - 4 * ((int)WIDTH / 6), 4 * ((int)WIDTH / 6)); - cairo_clip (cr); - cairo_new_path (cr); -} - -static void -clip_rects (cairo_t *cr, int x, int y) -{ - int height = HEIGHT / 3; - - cairo_new_path (cr); - cairo_rectangle (cr, x, y, WIDTH, height); - cairo_rectangle (cr, x, y + 2 * height, WIDTH, height); - cairo_clip (cr); - cairo_new_path (cr); -} - -static void -clip_circle (cairo_t *cr, int x, int y) -{ - cairo_new_path (cr); - cairo_arc (cr, x + WIDTH / 2, y + HEIGHT / 2, - WIDTH / 3, 0, 2 * M_PI); - cairo_clip (cr); - cairo_new_path (cr); -} - -static void (* const pattern_funcs[])(const cairo_test_context_t *ctx, cairo_t *cr, int x, int y) = { - set_solid_pattern, - set_translucent_pattern, - set_gradient_pattern, - set_image_pattern, -}; - -static void (* const draw_funcs[])(cairo_t *cr, int x, int y) = { - draw_rect, - draw_rects, - draw_polygon, -}; - -static void (* const clip_funcs[])(cairo_t *cr, int x, int y) = { - clip_none, - clip_rect, - clip_rects, - clip_circle, -}; - -#define IMAGE_WIDTH (ARRAY_LENGTH (pattern_funcs) * (WIDTH + PAD) + PAD) -#define IMAGE_HEIGHT (ARRAY_LENGTH (draw_funcs) * ARRAY_LENGTH (clip_funcs) * (HEIGHT + PAD) + PAD) - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - const cairo_test_context_t *ctx = cairo_test_get_context (cr); - size_t i, j, k, x, y; - - for (k = 0; k < ARRAY_LENGTH (clip_funcs); k++) { - for (j = 0; j < ARRAY_LENGTH (draw_funcs); j++) { - for (i = 0; i < ARRAY_LENGTH (pattern_funcs); i++) { - x = i * (WIDTH + PAD) + PAD; - y = (ARRAY_LENGTH (draw_funcs) * k + j) * (HEIGHT + PAD) + PAD; - - cairo_save (cr); - - cairo_move_to (cr, x, y); - clip_funcs[k] (cr, x, y); - pattern_funcs[i] (ctx, cr, x, y); - draw_funcs[j] (cr, x, y); - if (cairo_status (cr)) - cairo_test_log (ctx, "%d %d HERE!\n", (int)i, (int)j); - - cairo_restore (cr); - } - } - } - - if (cairo_status (cr) != CAIRO_STATUS_SUCCESS) - cairo_test_log (ctx, "%d %d .HERE!\n", (int)i, (int)j); - - cairo_surface_destroy (image); - image = NULL; - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (trap_clip, - "Trapezoid clipping", - "clip, trap", /* keywords */ - NULL, /* requirements */ - IMAGE_WIDTH, IMAGE_HEIGHT, - NULL, draw) diff --git a/test/twin-antialias-gray.c b/test/twin-antialias-gray.c deleted file mode 100644 index 8e00370..0000000 --- a/test/twin-antialias-gray.c +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright 2008 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_font_options_t *options; - - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - cairo_set_source_rgb (cr, 0, 0, 0); - - cairo_set_antialias (cr, CAIRO_ANTIALIAS_GRAY); - - cairo_select_font_face (cr, - "@cairo:", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - - options = cairo_font_options_create (); - cairo_font_options_set_antialias (options, CAIRO_ANTIALIAS_GRAY); - cairo_set_font_options (cr, options); - cairo_font_options_destroy (options); - - cairo_set_font_size (cr, 16); - - cairo_move_to (cr, 4, 14); - cairo_show_text (cr, "Is cairo's twin giza?"); - - cairo_move_to (cr, 4, 34); - cairo_text_path (cr, "Is cairo's twin giza?"); - cairo_fill (cr); - - cairo_move_to (cr, 4, 54); - cairo_text_path (cr, "Is cairo's twin giza?"); - cairo_set_line_width (cr, 2/16.); - cairo_stroke (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (twin_antialias_gray, - "Tests the internal font (with antialiasing reduced)", - "twin, font", /* keywords */ - "target=raster", /* requirements */ - 140, 60, - NULL, draw) diff --git a/test/twin-antialias-mixed.c b/test/twin-antialias-mixed.c deleted file mode 100644 index da4121a..0000000 --- a/test/twin-antialias-mixed.c +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright 2009 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -static cairo_scaled_font_t * -create_twin (cairo_t *cr, cairo_antialias_t antialias) -{ - cairo_font_options_t *options; - - cairo_select_font_face (cr, - "@cairo:", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - - options = cairo_font_options_create (); - cairo_font_options_set_antialias (options, antialias); - cairo_set_font_options (cr, options); - cairo_font_options_destroy (options); - - return cairo_scaled_font_reference (cairo_get_scaled_font (cr)); -} - - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_scaled_font_t *subpixel, *gray, *none; - - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - cairo_set_source_rgb (cr, 0, 0, 0); - - cairo_set_font_size (cr, 16); - subpixel = create_twin (cr, CAIRO_ANTIALIAS_SUBPIXEL); - gray = create_twin (cr, CAIRO_ANTIALIAS_GRAY); - none = create_twin (cr, CAIRO_ANTIALIAS_NONE); - - cairo_move_to (cr, 4, 14); - cairo_set_scaled_font (cr, subpixel); - cairo_show_text (cr, "Is cairo's"); - cairo_set_scaled_font (cr, gray); - cairo_show_text (cr, " twin"); - cairo_set_scaled_font (cr, none); - cairo_show_text (cr, " giza?"); - - cairo_move_to (cr, 4, 34); - cairo_set_scaled_font (cr, gray); - cairo_show_text (cr, "Is cairo's"); - cairo_set_scaled_font (cr, none); - cairo_show_text (cr, " twin"); - cairo_set_scaled_font (cr, subpixel); - cairo_show_text (cr, " giza?"); - - cairo_move_to (cr, 4, 54); - cairo_set_scaled_font (cr, none); - cairo_show_text (cr, "Is cairo's"); - cairo_set_scaled_font (cr, gray); - cairo_show_text (cr, " twin"); - cairo_set_scaled_font (cr, subpixel); - cairo_show_text (cr, " giza?"); - - cairo_scaled_font_destroy (none); - cairo_scaled_font_destroy (gray); - cairo_scaled_font_destroy (subpixel); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (twin_antialias_mixed, - "Tests the internal font (with intermixed antialiasing)", - "twin, font", /* keywords */ - "target=raster", /* requirements */ - 140, 60, - NULL, draw) diff --git a/test/twin-antialias-none.c b/test/twin-antialias-none.c deleted file mode 100644 index a5b713d..0000000 --- a/test/twin-antialias-none.c +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright 2008 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_font_options_t *options; - - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - cairo_set_source_rgb (cr, 0, 0, 0); - - cairo_set_antialias (cr, CAIRO_ANTIALIAS_NONE); - - cairo_select_font_face (cr, - "@cairo:", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - - options = cairo_font_options_create (); - cairo_font_options_set_antialias (options, CAIRO_ANTIALIAS_NONE); - cairo_set_font_options (cr, options); - cairo_font_options_destroy (options); - - cairo_set_font_size (cr, 16); - - cairo_move_to (cr, 4, 14); - cairo_show_text (cr, "Is cairo's twin giza?"); - - cairo_move_to (cr, 4, 34); - cairo_text_path (cr, "Is cairo's twin giza?"); - cairo_fill (cr); - - cairo_move_to (cr, 4, 54); - cairo_text_path (cr, "Is cairo's twin giza?"); - cairo_set_line_width (cr, 2/16.); - cairo_stroke (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (twin_antialias_none, - "Tests the internal font (with antialiasing disabled)", - "twin, font", /* keywords */ - "target=raster", /* requirements */ - 140, 60, - NULL, draw) diff --git a/test/twin-antialias-subpixel.c b/test/twin-antialias-subpixel.c deleted file mode 100644 index e026286..0000000 --- a/test/twin-antialias-subpixel.c +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright 2008 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_font_options_t *options; - - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - cairo_set_source_rgb (cr, 0, 0, 0); - - cairo_set_antialias (cr, CAIRO_ANTIALIAS_SUBPIXEL); - - cairo_select_font_face (cr, - "@cairo:", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - - options = cairo_font_options_create (); - cairo_font_options_set_antialias (options, CAIRO_ANTIALIAS_SUBPIXEL); - cairo_set_font_options (cr, options); - cairo_font_options_destroy (options); - - cairo_set_font_size (cr, 16); - - cairo_move_to (cr, 4, 14); - cairo_show_text (cr, "Is cairo's twin giza?"); - - cairo_move_to (cr, 4, 34); - cairo_text_path (cr, "Is cairo's twin giza?"); - cairo_fill (cr); - - cairo_move_to (cr, 4, 54); - cairo_text_path (cr, "Is cairo's twin giza?"); - cairo_set_line_width (cr, 2/16.); - cairo_stroke (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (twin_antialias_subpixel, - "Tests the internal font (with subpixel antialiasing)", - "twin, font", /* keywords */ - "target=raster", /* requirements */ - 140, 60, - NULL, draw) diff --git a/test/twin.c b/test/twin.c deleted file mode 100644 index 08865f0..0000000 --- a/test/twin.c +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright 2008 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - cairo_set_source_rgb (cr, 0, 0, 0); - - cairo_select_font_face (cr, - "@cairo:", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - cairo_set_font_size (cr, 16); - - cairo_move_to (cr, 4, 14); - cairo_show_text (cr, "Is cairo's twin giza?"); - - cairo_move_to (cr, 4, 34); - cairo_text_path (cr, "Is cairo's twin giza?"); - cairo_fill (cr); - - cairo_move_to (cr, 4, 54); - cairo_text_path (cr, "Is cairo's twin giza?"); - cairo_set_line_width (cr, 2/16.); - cairo_stroke (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (twin, - "Tests the internal font", - "twin, font", /* keywords */ - NULL, /* requirements */ - 140, 60, - NULL, draw) diff --git a/test/unaligned-box.c b/test/unaligned-box.c deleted file mode 100644 index 5526919..0000000 --- a/test/unaligned-box.c +++ /dev/null @@ -1,73 +0,0 @@ -/* -*- Mode: c; c-basic-offset: 4; indent-tabs-mode: t; tab-width: 8; -*- */ -/* - * Copyright 2011 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -#define WIDTH 48 -#define HEIGHT 52 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - int sx, sy; - - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - cairo_set_source_rgb (cr, 0, 0, 0); - - cairo_translate(cr, 2, 2); - - for (sx = 1; sx <= 4; sx++) { - cairo_save (cr); - for (sy = 1; sy <= 4; sy++) { - cairo_rectangle (cr, 0, 0, sx, sy); - cairo_fill (cr); - - cairo_rectangle (cr, sx + 1 + .5, 0, sx, sy); - cairo_fill (cr); - - cairo_rectangle (cr, 0, sy + 1 + .5, sx, sy); - cairo_fill (cr); - - cairo_rectangle (cr, sx + 1 + .5, sy + 1 + .5, sx-.5, sy-.5); - cairo_fill (cr); - - cairo_translate (cr, 2*sx + 3, 0); - } - cairo_restore (cr); - cairo_translate (cr, 0, 2*sy + 3); - } - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (unaligned_box, - "Tests handling of various boundary conditions for unaligned rectangles.", - "fill", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/unantialiased-shapes.c b/test/unantialiased-shapes.c deleted file mode 100644 index b53ed0d..0000000 --- a/test/unantialiased-shapes.c +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright © 2005 Billy Biggs - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Billy Biggs not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Billy Biggs makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * BILLY BIGGS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL BILLY BIGGS BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Billy Biggs - */ - -#include "cairo-test.h" - -/* The star shape from the SVG test suite, from the fill rule test */ -static void -big_star_path (cairo_t *cr) -{ - cairo_move_to (cr, 40, 0); - cairo_rel_line_to (cr, 25, 80); - cairo_rel_line_to (cr, -65, -50); - cairo_rel_line_to (cr, 80, 0); - cairo_rel_line_to (cr, -65, 50); - cairo_close_path (cr); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - int i; - - cairo_set_source_rgb (cr, 0, 0, 0); - cairo_paint (cr); - - cairo_set_antialias (cr, CAIRO_ANTIALIAS_NONE); - - /* Try a circle */ - cairo_arc (cr, 40, 40, 20, 0, 2 * M_PI); - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_fill (cr); - - /* Try using clipping to draw a circle */ - cairo_arc (cr, 100, 40, 20, 0, 2 * M_PI); - cairo_clip (cr); - cairo_rectangle (cr, 80, 20, 40, 40); - cairo_set_source_rgb (cr, 0, 0, 1); - cairo_fill (cr); - - /* Reset the clipping */ - cairo_reset_clip (cr); - - /* Draw a bunch of lines */ - cairo_set_line_width (cr, 1.0); - cairo_set_source_rgb (cr, 0, 1, 0); - for (i = 0; i < 10; i++) { - cairo_move_to (cr, 10, 70 + (i * 4)); - cairo_line_to (cr, 120, 70 + (i * 18)); - cairo_stroke (cr); - } - - /* Try filling a poly */ - cairo_translate (cr, 160, 120); - cairo_set_source_rgb (cr, 1, 1, 0); - big_star_path (cr); - cairo_set_fill_rule (cr, CAIRO_FILL_RULE_EVEN_ODD); - cairo_fill (cr); - cairo_translate (cr, -160, -120); - - /* How about some curves? */ - cairo_set_source_rgb (cr, 1, 0, 1); - for (i = 0; i < 10; i++) { - cairo_move_to (cr, 150, 50 + (i * 5)); - cairo_curve_to (cr, 250, 50, 200, (i * 10), 300, 50 + (i * 10)); - cairo_stroke (cr); - } - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (unantialiased_shapes, - "Test shape drawing without antialiasing", - "fill, stroke", /* keywords */ - "target=raster", /* requirements */ - 320, 240, - NULL, draw) diff --git a/test/unbounded-operator.c b/test/unbounded-operator.c deleted file mode 100644 index ac1c50d..0000000 --- a/test/unbounded-operator.c +++ /dev/null @@ -1,185 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Authors: Kristian Høgsberg - * Owen Taylor - */ - -#include "cairo-test.h" -#include -#include - -#define WIDTH 16 -#define HEIGHT 16 -#define PAD 2 - -static void -draw_mask (cairo_t *cr, int x, int y) -{ - cairo_surface_t *mask_surface; - cairo_t *cr2; - - double width = (int)(0.9 * WIDTH); - double height = (int)(0.9 * HEIGHT); - x += 0.05 * WIDTH; - y += 0.05 * HEIGHT; - - mask_surface = cairo_surface_create_similar (cairo_get_group_target (cr), - CAIRO_CONTENT_ALPHA, - width, height); - cr2 = cairo_create (mask_surface); - cairo_surface_destroy (mask_surface); - - cairo_save (cr2); - cairo_set_source_rgba (cr2, 0, 0, 0, 0); /* transparent */ - cairo_set_operator (cr2, CAIRO_OPERATOR_SOURCE); - cairo_paint (cr2); - cairo_restore (cr2); - - cairo_set_source_rgb (cr2, 1, 1, 1); /* white */ - - cairo_arc (cr2, 0.5 * width, 0.5 * height, 0.45 * height, 0, 2 * M_PI); - cairo_fill (cr2); - - cairo_mask_surface (cr, cairo_get_target (cr2), x, y); - cairo_destroy (cr2); -} - -static void -draw_glyphs (cairo_t *cr, int x, int y) -{ - cairo_text_extents_t extents; - - cairo_set_font_size (cr, 0.8 * HEIGHT); - - cairo_text_extents (cr, "FG", &extents); - cairo_move_to (cr, - x + floor ((WIDTH - extents.width) / 2 + 0.5) - extents.x_bearing, - y + floor ((HEIGHT - extents.height) / 2 + 0.5) - extents.y_bearing); - cairo_show_text (cr, "FG"); -} - -static void -draw_polygon (cairo_t *cr, int x, int y) -{ - double width = (int)(0.9 * WIDTH); - double height = (int)(0.9 * HEIGHT); - x += 0.05 * WIDTH; - y += 0.05 * HEIGHT; - - cairo_new_path (cr); - cairo_move_to (cr, x, y); - cairo_line_to (cr, x, y + height); - cairo_line_to (cr, x + width / 2, y + 3 * height / 4); - cairo_line_to (cr, x + width, y + height); - cairo_line_to (cr, x + width, y); - cairo_line_to (cr, x + width / 2, y + height / 4); - cairo_close_path (cr); - cairo_fill (cr); -} - -static void -draw_rects (cairo_t *cr, int x, int y) -{ - double block_width = (int)(0.33 * WIDTH + 0.5); - double block_height = (int)(0.33 * HEIGHT + 0.5); - int i, j; - - for (i = 0; i < 3; i++) - for (j = 0; j < 3; j++) - if ((i + j) % 2 == 0) - cairo_rectangle (cr, - x + block_width * i, y + block_height * j, - block_width, block_height); - - cairo_fill (cr); -} - -static void (*const draw_funcs[])(cairo_t *cr, int x, int y) = { - draw_mask, - draw_glyphs, - draw_polygon, - draw_rects -}; - -static cairo_operator_t operators[] = { - CAIRO_OPERATOR_IN, CAIRO_OPERATOR_OUT, - CAIRO_OPERATOR_DEST_IN, CAIRO_OPERATOR_DEST_ATOP -}; - -#define IMAGE_WIDTH (ARRAY_LENGTH (operators) * (WIDTH + PAD) + PAD) -#define IMAGE_HEIGHT (ARRAY_LENGTH (draw_funcs) * (HEIGHT + PAD) + PAD) - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - const cairo_test_context_t *ctx = cairo_test_get_context (cr); - size_t i, j, x, y; - cairo_pattern_t *pattern; - - cairo_select_font_face (cr, CAIRO_TEST_FONT_FAMILY " Sans", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - - for (j = 0; j < ARRAY_LENGTH (draw_funcs); j++) { - for (i = 0; i < ARRAY_LENGTH (operators); i++) { - x = i * (WIDTH + PAD) + PAD; - y = j * (HEIGHT + PAD) + PAD; - - cairo_save (cr); - - pattern = cairo_pattern_create_linear (x + WIDTH, y, - x, y + HEIGHT); - cairo_pattern_add_color_stop_rgba (pattern, 0.2, - 0.0, 0.0, 1.0, 1.0); /* Solid blue */ - cairo_pattern_add_color_stop_rgba (pattern, 0.8, - 0.0, 0.0, 1.0, 0.0); /* Transparent blue */ - cairo_set_source (cr, pattern); - cairo_pattern_destroy (pattern); - - cairo_rectangle (cr, x, y, WIDTH, HEIGHT); - cairo_fill_preserve (cr); - cairo_clip (cr); - - cairo_set_operator (cr, operators[i]); - cairo_set_source_rgb (cr, 1.0, 0.0, 0.0); - - draw_funcs[j] (cr, x, y); - if (cairo_status (cr)) - cairo_test_log (ctx, "%d %d HERE!\n", (int)i, (int)j); - - cairo_restore (cr); - } - } - - if (cairo_status (cr) != CAIRO_STATUS_SUCCESS) - cairo_test_log (ctx, "%d %d .HERE!\n", (int)i, (int)j); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (unbounded_operator, - "Operators with an effect for transparent source/mask", - "operator", /* keywords */ - NULL, /* requirements */ - IMAGE_WIDTH, IMAGE_HEIGHT, - NULL, draw) diff --git a/test/unclosed-strokes.c b/test/unclosed-strokes.c deleted file mode 100644 index 40a76eb..0000000 --- a/test/unclosed-strokes.c +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright © 2011 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" - -#define LINE_WIDTH 10. -#define SIZE (5 * LINE_WIDTH) -#define PAD (2 * LINE_WIDTH) - -static void -make_path (cairo_t *cr) -{ - cairo_move_to (cr, 0, 0); - cairo_rel_line_to (cr, -SIZE/2, SIZE); - cairo_rel_line_to (cr, SIZE, 0); - /* back to the start, but do not close */ - cairo_rel_line_to (cr, -SIZE/2, -SIZE); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_save (cr); - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); /* white */ - cairo_paint (cr); - cairo_restore (cr); - - cairo_set_line_width (cr, LINE_WIDTH); - cairo_translate (cr, PAD + SIZE / 2., PAD); - - cairo_set_line_cap (cr, CAIRO_LINE_CAP_BUTT); - cairo_set_line_join (cr, CAIRO_LINE_JOIN_BEVEL); - make_path (cr); - cairo_stroke (cr); - - cairo_translate (cr, 0, SIZE + PAD); - - cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND); - cairo_set_line_join (cr, CAIRO_LINE_JOIN_ROUND); - make_path (cr); - cairo_stroke (cr); - - cairo_translate (cr, 0, SIZE + PAD); - - cairo_set_line_cap (cr, CAIRO_LINE_CAP_SQUARE); - cairo_set_line_join (cr, CAIRO_LINE_JOIN_MITER); - make_path (cr); - cairo_stroke (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (unclosed_strokes, - "Test coincident end-points are capped and not joined", - "stroke, caps", /* keywords */ - NULL, /* requirements */ - PAD + SIZE + PAD, - 3 * (PAD + SIZE) + PAD, - NULL, draw) - diff --git a/test/update-refs.sh b/test/update-refs.sh deleted file mode 100755 index 104eeb8..0000000 --- a/test/update-refs.sh +++ /dev/null @@ -1,84 +0,0 @@ -#!/bin/bash - -# This script can be used to update the reference images using certain -# test results as a baseline. -# -# Our test suite expects nearly pixel-perfection, but in some cases we -# give the renderer some flexibility and so these cases will show up as -# test failures. So, this script can be used to do a visual check and -# if they "look" ok, to go ahead and update the reference image by -# copying the test output. -# -# NOTE: When adding to this file, make sure to thoroughly document the -# rationale when and why the existing reference images can be updated -# from regular test output, such that people other than you can -# intelligently keep the test reference images updated. - -if [ ! -d output ] || [ ! -d reference ]; then - echo "This script must be run in cairo's test directory after the full testsuite has been run." - exit -fi - -PDIFF="./pdiff/perceptualdiff" - -# Returns 1 if images are different, 0 if they're essentially identical -images_differ() { - # Check if bytewise identical - if cmp --silent "${1}" "${2}"; then - # Images are identical - return 0 - fi - - # Run perceptualdiff with minimum threshold - pdiff_output=$($PDIFF "${1}" "${2}" -threshold 1) - result=${pdiff_output%:*} - notes=$(echo "${pdiff_output#*: }" | tail -n 1) - if [ "$result" = "PASS" ] && [ "$notes" = "Images are binary identical" ]; then - return 0 - fi - - return 1 -} - -# ---------------------------------------------------------------------- -# pixman-downscale images -# -# The *-95 tests check rendering at a difficult to downsize dimension. -# The border pixels between different colored areas can be blurred in -# different ways resulting in some color variation that is acceptable -# but throws off the testsuite. So a visual check is sufficient to -# verify the results aren't crazily off. - -# Use the ARGB32 format of the image file as the main reference -for file in $(ls ./output/pixman-downscale-*-95.image.argb32.out.png); do - dest=$(basename ${file/.image.argb32.out./.ref.}) - echo "$file -> ./reference/${dest}" - cp $file ./reference/${dest} -done -echo - -# If the ARGB32 format of a given backend's file differs from the main reference, -# then use it as the backend reference -for file in $(ls ./output/pixman-downscale-*-95.*.argb32.out.png); do - ref=$(basename ${file/-95.*.argb32.out.png/-95.ref.png}) - if ! images_differ "./reference/${ref}" "${file}"; then - dest=$(basename ${file/.argb32.out.png/.ref.png}) - echo "${file} -> ./reference/${dest}" - cp ${file} ./reference/${dest} - fi -done -echo - -# If the RGB24 format differs from existing ref image, then use it as a ref. -for file in $(ls ./output/pixman-downscale-*-95.*.rgb24.out.png); do - ref=$(basename ${file/.rgb24.out.png/.ref.png}) - if [ ! -e "./reference/${ref}" ]; then - ref=$(basename ${file/-95.*.rgb24.out.png/-95.ref.png}) - fi - - if ! images_differ "./reference/${ref}" "${file}"; then - dest=$(basename ${file/.rgb24.out.png/.rgb24.ref.png}) - echo "${file} -> ./reference/${dest}" - cp ${file} ./reference/${dest} - fi -done diff --git a/test/user-data.c b/test/user-data.c deleted file mode 100644 index 532107a..0000000 --- a/test/user-data.c +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Kristian Høgsberg - */ - -#include "cairo-test.h" - -#include - -static void -destroy_data1 (void *p) -{ - *(int *) p = 1; -} - -static void -destroy_data2 (void *p) -{ - *(int *) p = 2; -} - -static cairo_test_status_t -preamble (cairo_test_context_t *ctx) -{ - static const cairo_user_data_key_t key1, key2; - cairo_surface_t *surface; - cairo_status_t status; - int data1, data2; - - data1 = 0; - data2 = 0; - - surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 1, 1); - status = cairo_surface_set_user_data (surface, &key1, &data1, destroy_data1); - if (status) - goto error; - - status = cairo_surface_set_user_data (surface, &key2, &data2, destroy_data2); - if (status) - goto error; - - assert (cairo_surface_get_user_data (surface, &key1) == &data1); - status = cairo_surface_set_user_data (surface, &key1, NULL, NULL); - if (status) - goto error; - - assert (cairo_surface_get_user_data (surface, &key1) == NULL); - assert (data1 == 1); - assert (data2 == 0); - - status = cairo_surface_set_user_data (surface, &key2, NULL, NULL); - if (status) - goto error; - - assert (data2 == 2); - - data1 = 0; - status = cairo_surface_set_user_data (surface, &key1, &data1, NULL); - if (status) - goto error; - - status = cairo_surface_set_user_data (surface, &key1, NULL, NULL); - if (status) - goto error; - - assert (data1 == 0); - assert (cairo_surface_get_user_data (surface, &key1) == NULL); - - status = cairo_surface_set_user_data (surface, &key1, &data1, destroy_data1); - if (status) - goto error; - - cairo_surface_destroy (surface); - - assert (data1 == 1); - assert (data2 == 2); - - return CAIRO_TEST_SUCCESS; - -error: - cairo_surface_destroy (surface); - return cairo_test_status_from_status (ctx, status); -} - -CAIRO_TEST (user_data, - "Test setting and getting random bits of user data.", - "api", /* keywords */ - NULL, /* requirements */ - 0, 0, - preamble, NULL) diff --git a/test/user-font-mask.c b/test/user-font-mask.c deleted file mode 100644 index cf548e6..0000000 --- a/test/user-font-mask.c +++ /dev/null @@ -1,253 +0,0 @@ -/* - * Copyright © 2006, 2008 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Contributor(s): - * Kristian Høgsberg - * Behdad Esfahbod - * Adrian Johnson - */ - -#include "cairo-test.h" - -#include -#include - -/*#define ROTATED 1*/ - -#define BORDER 10 -#define TEXT_SIZE 64 -#define WIDTH (TEXT_SIZE * 15 + 2*BORDER) -#ifndef ROTATED - #define HEIGHT ((TEXT_SIZE + 2*BORDER)*2) -#else - #define HEIGHT WIDTH -#endif -#define END_GLYPH 0 -#define TEXT "cairo" - -/* Reverse the bits in a byte with 7 operations (no 64-bit): - * Devised by Sean Anderson, July 13, 2001. - * Source: http://graphics.stanford.edu/~seander/bithacks.html#ReverseByteWith32Bits - */ -#define CAIRO_BITSWAP8(c) ((((c) * 0x0802LU & 0x22110LU) | ((c) * 0x8020LU & 0x88440LU)) * 0x10101LU >> 16) - -#ifdef WORDS_BIGENDIAN -#define CAIRO_BITSWAP8_IF_LITTLE_ENDIAN(c) (c) -#else -#define CAIRO_BITSWAP8_IF_LITTLE_ENDIAN(c) CAIRO_BITSWAP8(c) -#endif - - - -/* Simple glyph definition. data is an 8x8 bitmap. - */ -typedef struct { - unsigned long ucs4; - int width; - char data[8]; -} test_scaled_font_glyph_t; - -static cairo_user_data_key_t test_font_face_glyphs_key; - -static cairo_status_t -test_scaled_font_init (cairo_scaled_font_t *scaled_font, - cairo_t *cr, - cairo_font_extents_t *metrics) -{ - metrics->ascent = 1; - metrics->descent = 0; - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -test_scaled_font_unicode_to_glyph (cairo_scaled_font_t *scaled_font, - unsigned long unicode, - unsigned long *glyph) -{ - test_scaled_font_glyph_t *glyphs = cairo_font_face_get_user_data (cairo_scaled_font_get_font_face (scaled_font), - &test_font_face_glyphs_key); - int i; - - for (i = 0; glyphs[i].ucs4 != (unsigned long) -1; i++) - if (glyphs[i].ucs4 == unicode) { - *glyph = i; - return CAIRO_STATUS_SUCCESS; - } - - /* Not found. Default to glyph 0 */ - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -test_scaled_font_render_glyph (cairo_scaled_font_t *scaled_font, - unsigned long glyph, - cairo_t *cr, - cairo_text_extents_t *metrics) -{ - test_scaled_font_glyph_t *glyphs = cairo_font_face_get_user_data (cairo_scaled_font_get_font_face (scaled_font), - &test_font_face_glyphs_key); - int i; - unsigned char *data; - cairo_surface_t *image; - cairo_pattern_t *pattern; - cairo_matrix_t matrix; - uint8_t byte; - - /* FIXME: We simply crash on out-of-bound glyph indices */ - - metrics->x_advance = (glyphs[glyph].width + 1) / 8.0; - - image = cairo_image_surface_create (CAIRO_FORMAT_A1, glyphs[glyph].width, 8); - if (cairo_surface_status (image)) - return cairo_surface_status (image); - - data = cairo_image_surface_get_data (image); - for (i = 0; i < 8; i++) { - byte = glyphs[glyph].data[i]; - *data = CAIRO_BITSWAP8_IF_LITTLE_ENDIAN (byte); - data += cairo_image_surface_get_stride (image); - } - cairo_surface_mark_dirty (image); - - pattern = cairo_pattern_create_for_surface (image); - cairo_surface_destroy (image); - - cairo_matrix_init_identity (&matrix); - cairo_matrix_scale (&matrix, 1.0/8.0, 1.0/8.0); - cairo_matrix_translate (&matrix, 0, -8); - cairo_matrix_invert (&matrix); - cairo_pattern_set_matrix (pattern, &matrix); - - cairo_set_source (cr, pattern); - cairo_mask (cr, pattern); - cairo_pattern_destroy (pattern); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_user_font_face_create (cairo_font_face_t **out) -{ - static const test_scaled_font_glyph_t glyphs [] = { - { 'c', 6, { 0x00, 0x38, 0x44, 0x80, 0x80, 0x80, 0x44, 0x38 } }, - { 'a', 6, { 0x00, 0x70, 0x88, 0x3c, 0x44, 0x84, 0x8c, 0x74 } }, - { 'i', 1, { 0x80, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80 } }, - { 'r', 6, { 0x00, 0xb8, 0xc4, 0x80, 0x80, 0x80, 0x80, 0x80 } }, - { 'o', 7, { 0x00, 0x38, 0x44, 0x82, 0x82, 0x82, 0x44, 0x38 } }, - { -1, 8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, - }; - - cairo_font_face_t *user_font_face; - cairo_status_t status; - - user_font_face = cairo_user_font_face_create (); - cairo_user_font_face_set_init_func (user_font_face, test_scaled_font_init); - cairo_user_font_face_set_render_glyph_func (user_font_face, test_scaled_font_render_glyph); - cairo_user_font_face_set_unicode_to_glyph_func (user_font_face, test_scaled_font_unicode_to_glyph); - - status = cairo_font_face_set_user_data (user_font_face, - &test_font_face_glyphs_key, - (void*) glyphs, NULL); - if (status) { - cairo_font_face_destroy (user_font_face); - return status; - } - - *out = user_font_face; - return CAIRO_STATUS_SUCCESS; -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_font_face_t *font_face; - const char text[] = TEXT; - cairo_font_extents_t font_extents; - cairo_text_extents_t extents; - cairo_status_t status; - - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - -#ifdef ROTATED - cairo_translate (cr, TEXT_SIZE, 0); - cairo_rotate (cr, .6); -#endif - - status = _user_font_face_create (&font_face); - if (status) { - return cairo_test_status_from_status (cairo_test_get_context (cr), - status); - } - - cairo_set_font_face (cr, font_face); - cairo_font_face_destroy (font_face); - - cairo_set_font_size (cr, TEXT_SIZE); - - cairo_font_extents (cr, &font_extents); - cairo_text_extents (cr, text, &extents); - - /* logical boundaries in red */ - cairo_move_to (cr, 0, BORDER); - cairo_rel_line_to (cr, WIDTH, 0); - cairo_move_to (cr, 0, BORDER + font_extents.ascent); - cairo_rel_line_to (cr, WIDTH, 0); - cairo_move_to (cr, 0, BORDER + font_extents.ascent + font_extents.descent); - cairo_rel_line_to (cr, WIDTH, 0); - cairo_move_to (cr, BORDER, 0); - cairo_rel_line_to (cr, 0, 2*BORDER + TEXT_SIZE); - cairo_move_to (cr, BORDER + extents.x_advance, 0); - cairo_rel_line_to (cr, 0, 2*BORDER + TEXT_SIZE); - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_set_line_width (cr, 2); - cairo_stroke (cr); - - /* ink boundaries in green */ - cairo_rectangle (cr, - BORDER + extents.x_bearing, BORDER + font_extents.ascent + extents.y_bearing, - extents.width, extents.height); - cairo_set_source_rgb (cr, 0, 1, 0); - cairo_set_line_width (cr, 2); - cairo_stroke (cr); - - /* text in black */ - cairo_set_source_rgb (cr, 0, 0, 0); - cairo_move_to (cr, BORDER, BORDER + font_extents.ascent); - cairo_show_text (cr, text); - - - /* filled version of text in blue */ - cairo_set_source_rgb (cr, 0, 0, 1); - cairo_move_to (cr, BORDER, BORDER + font_extents.height + 2*BORDER + font_extents.ascent); - cairo_text_path (cr, text); - cairo_fill (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (user_font_mask, - "Tests a user-font using cairo_mask with bitmap images", - "user-font, mask", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/user-font-proxy.c b/test/user-font-proxy.c deleted file mode 100644 index 6a39d8e..0000000 --- a/test/user-font-proxy.c +++ /dev/null @@ -1,222 +0,0 @@ -/* - * Copyright © 2006, 2008 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Contributor(s): - * Kristian Høgsberg - * Behdad Esfahbod - */ - -#include "cairo-test.h" - -#include -#include - -/*#define ROTATED 1*/ - -#define BORDER 10 -#define TEXT_SIZE 64 -#define WIDTH (TEXT_SIZE * 12 + 2*BORDER) -#ifndef ROTATED - #define HEIGHT ((TEXT_SIZE + 2*BORDER)*2) -#else - #define HEIGHT WIDTH -#endif -#define TEXT "geez... cairo user-font" - -static cairo_user_data_key_t fallback_font_key; - -static cairo_status_t -test_scaled_font_init (cairo_scaled_font_t *scaled_font, - cairo_t *cr, - cairo_font_extents_t *extents) -{ - cairo_status_t status; - - cairo_set_font_face (cr, - cairo_font_face_get_user_data (cairo_scaled_font_get_font_face (scaled_font), - &fallback_font_key)); - - status = cairo_scaled_font_set_user_data (scaled_font, - &fallback_font_key, - cairo_scaled_font_reference (cairo_get_scaled_font (cr)), - (cairo_destroy_func_t) cairo_scaled_font_destroy); - if (unlikely (status)) { - cairo_scaled_font_destroy (cairo_get_scaled_font (cr)); - return status; - } - - cairo_font_extents (cr, extents); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -test_scaled_font_render_glyph (cairo_scaled_font_t *scaled_font, - unsigned long glyph, - cairo_t *cr, - cairo_text_extents_t *extents) -{ - cairo_glyph_t cairo_glyph; - - cairo_glyph.index = glyph; - cairo_glyph.x = 0; - cairo_glyph.y = 0; - - cairo_set_font_face (cr, - cairo_font_face_get_user_data (cairo_scaled_font_get_font_face (scaled_font), - &fallback_font_key)); - - cairo_show_glyphs (cr, &cairo_glyph, 1); - cairo_glyph_extents (cr, &cairo_glyph, 1, extents); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -test_scaled_font_text_to_glyphs (cairo_scaled_font_t *scaled_font, - const char *utf8, - int utf8_len, - cairo_glyph_t **glyphs, - int *num_glyphs, - cairo_text_cluster_t **clusters, - int *num_clusters, - cairo_text_cluster_flags_t *cluster_flags) -{ - cairo_scaled_font_t *fallback_scaled_font; - - fallback_scaled_font = cairo_scaled_font_get_user_data (scaled_font, - &fallback_font_key); - - return cairo_scaled_font_text_to_glyphs (fallback_scaled_font, 0, 0, - utf8, utf8_len, - glyphs, num_glyphs, - clusters, num_clusters, cluster_flags); -} - -static cairo_status_t -_user_font_face_create (cairo_font_face_t **out) -{ - cairo_font_face_t *user_font_face; - cairo_font_face_t *fallback_font_face; - cairo_status_t status; - - user_font_face = cairo_user_font_face_create (); - cairo_user_font_face_set_init_func (user_font_face, test_scaled_font_init); - cairo_user_font_face_set_render_glyph_func (user_font_face, test_scaled_font_render_glyph); - cairo_user_font_face_set_text_to_glyphs_func (user_font_face, test_scaled_font_text_to_glyphs); - - /* This also happens to be default font face on cairo_t, so does - * not make much sense here. For demonstration only. - */ - fallback_font_face = cairo_toy_font_face_create ("", - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_NORMAL); - - status = cairo_font_face_set_user_data (user_font_face, - &fallback_font_key, - fallback_font_face, - (cairo_destroy_func_t) cairo_font_face_destroy); - if (status) { - cairo_font_face_destroy (fallback_font_face); - cairo_font_face_destroy (user_font_face); - return status; - } - - *out = user_font_face; - return CAIRO_STATUS_SUCCESS; -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - const char text[] = TEXT; - cairo_font_extents_t font_extents; - cairo_text_extents_t extents; - cairo_font_face_t *font_face; - cairo_status_t status; - - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - -#ifdef ROTATED - cairo_translate (cr, TEXT_SIZE, 0); - cairo_rotate (cr, .6); -#endif - - status = _user_font_face_create (&font_face); - if (status) { - return cairo_test_status_from_status (cairo_test_get_context (cr), - status); - } - - cairo_set_font_face (cr, font_face); - cairo_font_face_destroy (font_face); - - cairo_set_font_size (cr, TEXT_SIZE); - - cairo_font_extents (cr, &font_extents); - cairo_text_extents (cr, text, &extents); - - /* logical boundaries in red */ - cairo_move_to (cr, 0, BORDER); - cairo_rel_line_to (cr, WIDTH, 0); - cairo_move_to (cr, 0, BORDER + font_extents.ascent); - cairo_rel_line_to (cr, WIDTH, 0); - cairo_move_to (cr, 0, BORDER + font_extents.ascent + font_extents.descent); - cairo_rel_line_to (cr, WIDTH, 0); - cairo_move_to (cr, BORDER, 0); - cairo_rel_line_to (cr, 0, 2*BORDER + TEXT_SIZE); - cairo_move_to (cr, BORDER + extents.x_advance, 0); - cairo_rel_line_to (cr, 0, 2*BORDER + TEXT_SIZE); - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_set_line_width (cr, 2); - cairo_stroke (cr); - - /* ink boundaries in green */ - cairo_rectangle (cr, - BORDER + extents.x_bearing, BORDER + font_extents.ascent + extents.y_bearing, - extents.width, extents.height); - cairo_set_source_rgb (cr, 0, 1, 0); - cairo_set_line_width (cr, 2); - cairo_stroke (cr); - - /* text in gray */ - cairo_set_source_rgb (cr, 0, 0, 0); - cairo_move_to (cr, BORDER, BORDER + font_extents.ascent); - cairo_show_text (cr, text); - - - /* filled version of text in light blue */ - cairo_set_source_rgb (cr, 0, 0, 1); - cairo_move_to (cr, BORDER, BORDER + font_extents.height + BORDER + font_extents.ascent); - cairo_text_path (cr, text); - cairo_fill (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (user_font_proxy, - "Tests a user-font using a native font in its render_glyph", - "font, user-font", /* keywords */ - "cairo >= 1.7.4", /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/user-font-rescale.c b/test/user-font-rescale.c deleted file mode 100644 index 6f03b8e..0000000 --- a/test/user-font-rescale.c +++ /dev/null @@ -1,368 +0,0 @@ -/* - * Copyright © 2008 Jeff Muizelaar - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Jeff Muizelaar not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Jeff Muizelaar makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * JEFF MUIZELAAR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL JEFF MUIZELAAR BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Contributor(s): - * Jeff Muizelaar - * Kristian Høgsberg - * Behdad Esfahbod - */ - -#include "cairo-test.h" - -#include - -#define BORDER 10 -#define TEXT_SIZE 32 -#define WIDTH (TEXT_SIZE * 13.75 + 2*BORDER) -#define HEIGHT ((TEXT_SIZE + 2*BORDER)*3 + BORDER) -#define TEXT "test of rescaled glyphs" - -static const cairo_user_data_key_t rescale_font_closure_key; - -struct rescaled_font { - cairo_font_face_t *substitute_font; - cairo_scaled_font_t *measuring_font; - unsigned long glyph_count; - unsigned long start; - double *desired_width; - double *rescale_factor; -}; - -static cairo_status_t -test_scaled_font_render_glyph (cairo_scaled_font_t *scaled_font, - unsigned long glyph, - cairo_t *cr, - cairo_text_extents_t *metrics) -{ - cairo_font_face_t *user_font; - struct rescaled_font *r; - cairo_glyph_t cairo_glyph; - - cairo_glyph.index = glyph; - cairo_glyph.x = 0; - cairo_glyph.y = 0; - - user_font = cairo_scaled_font_get_font_face (scaled_font); - r = cairo_font_face_get_user_data (user_font, &rescale_font_closure_key); - cairo_set_font_face (cr, r->substitute_font); - - if (glyph - r->start < r->glyph_count) { - cairo_matrix_t matrix; - - if (isnan (r->rescale_factor[glyph - r->start])) { - double desired_width; - double actual_width; - cairo_text_extents_t extents; - - /* measure the glyph and compute the necessary rescaling factor */ - cairo_scaled_font_glyph_extents (r->measuring_font, - &cairo_glyph, 1, - &extents); - - desired_width = r->desired_width[glyph - r->start]; - actual_width = extents.x_advance; - - r->rescale_factor[glyph - r->start] = desired_width / actual_width; - } - - /* scale the font so that the glyph width matches the desired width */ - cairo_get_font_matrix (cr, &matrix); - cairo_matrix_scale (&matrix, r->rescale_factor[glyph - r->start], 1.); - cairo_set_font_matrix (cr, &matrix); - } - - cairo_show_glyphs (cr, &cairo_glyph, 1); - cairo_glyph_extents (cr, &cairo_glyph, 1, metrics); - - return CAIRO_STATUS_SUCCESS; -} - -static void -unichar_to_utf8 (uint32_t ucs4, char utf8[7]) -{ - int i, charlen, first; - - if (ucs4 < 0x80) { - first = 0; - charlen = 1; - } else if (ucs4 < 0x800) { - first = 0xc0; - charlen = 2; - } else if (ucs4 < 0x10000) { - first = 0xe0; - charlen = 3; - } else if (ucs4 < 0x200000) { - first = 0xf0; - charlen = 4; - } else if (ucs4 < 0x4000000) { - first = 0xf8; - charlen = 5; - } else { - first = 0xfc; - charlen = 6; - } - - for (i = charlen - 1; i > 0; --i) { - utf8[i] = (ucs4 & 0x3f) | 0x80; - ucs4 >>= 6; - } - utf8[0] = ucs4 | first; - utf8[charlen] = '\0'; -} - -static cairo_status_t -test_scaled_font_unicode_to_glyph (cairo_scaled_font_t *scaled_font, - unsigned long unicode, - unsigned long *glyph_index) -{ - cairo_font_face_t *user_font; - struct rescaled_font *r; - int num_glyphs; - cairo_glyph_t *glyphs = NULL; - cairo_status_t status; - char utf8[7]; - - user_font = cairo_scaled_font_get_font_face (scaled_font); - - unichar_to_utf8 (unicode, utf8); - r = cairo_font_face_get_user_data (user_font, &rescale_font_closure_key); - status = cairo_scaled_font_text_to_glyphs (r->measuring_font, 0, 0, - utf8, -1, - &glyphs, &num_glyphs, - NULL, NULL, NULL); - if (status) - return status; - - *glyph_index = glyphs[0].index; - - cairo_glyph_free (glyphs); - return CAIRO_STATUS_SUCCESS; -} - -static void rescale_font_closure_destroy (void *data) -{ - struct rescaled_font *r = data; - - cairo_font_face_destroy (r->substitute_font); - cairo_scaled_font_destroy (r->measuring_font); - free (r->desired_width); - free (r->rescale_factor); - free (r); -} - -static cairo_status_t -create_rescaled_font (cairo_font_face_t *substitute_font, - int glyph_start, - int glyph_count, - double *desired_width, - cairo_font_face_t **out) -{ - cairo_font_face_t *user_font_face; - struct rescaled_font *r; - cairo_font_options_t *options; - cairo_status_t status; - cairo_matrix_t m; - unsigned long i; - - user_font_face = cairo_user_font_face_create (); - cairo_user_font_face_set_render_glyph_func (user_font_face, test_scaled_font_render_glyph); - cairo_user_font_face_set_unicode_to_glyph_func (user_font_face, test_scaled_font_unicode_to_glyph); - - r = xmalloc (sizeof (struct rescaled_font)); - r->substitute_font = cairo_font_face_reference (substitute_font); - - /* we don't want any hinting when doing the measuring */ - options = cairo_font_options_create (); - cairo_font_options_set_hint_style (options, CAIRO_HINT_STYLE_NONE); - cairo_font_options_set_hint_metrics (options, CAIRO_HINT_METRICS_OFF); - - cairo_matrix_init_identity (&m); - - r->measuring_font = cairo_scaled_font_create (r->substitute_font, - &m, &m, - options); - cairo_font_options_destroy (options); - - - r->start = glyph_start; - r->glyph_count = glyph_count; - r->desired_width = xcalloc (sizeof (double), r->glyph_count); - r->rescale_factor = xcalloc (sizeof (double), r->glyph_count); - - for (i = 0; i < r->glyph_count; i++) { - r->desired_width[i] = desired_width[i]; - /* use NaN to specify unset */ - r->rescale_factor[i] = cairo_test_NaN (); - } - - status = cairo_font_face_set_user_data (user_font_face, - &rescale_font_closure_key, - r, rescale_font_closure_destroy); - if (status) { - rescale_font_closure_destroy (r); - cairo_font_face_destroy (user_font_face); - return status; - } - - *out = user_font_face; - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -get_user_font_face (cairo_font_face_t *substitute_font, - const char *text, - cairo_font_face_t *old, - cairo_font_face_t **out) -{ - cairo_font_options_t *options; - cairo_matrix_t m; - cairo_scaled_font_t *measure; - int i; - double *widths; - int count; - int num_glyphs; - unsigned long min_index, max_index; - cairo_status_t status; - - cairo_glyph_t *glyphs = NULL; - - /* we don't want any hinting when doing the measuring */ - options = cairo_font_options_create (); - cairo_font_options_set_hint_style (options, CAIRO_HINT_STYLE_NONE); - cairo_font_options_set_hint_metrics (options, CAIRO_HINT_METRICS_OFF); - - cairo_matrix_init_identity (&m); - measure = cairo_scaled_font_create (old, &m, &m, options); - - status = cairo_scaled_font_text_to_glyphs (measure, 0, 0, - text, -1, - &glyphs, &num_glyphs, - NULL, NULL, NULL); - cairo_font_options_destroy (options); - - if (status) { - cairo_scaled_font_destroy (measure); - return status; - } - - /* find the glyph range the text covers */ - max_index = glyphs[0].index; - min_index = glyphs[0].index; - for (i=0; i max_index) - max_index = glyphs[i].index; - } - - count = max_index - min_index + 1; - widths = xcalloc (sizeof (double), count); - /* measure all of the necessary glyphs individually */ - for (i=0; i - * Behdad Esfahbod - */ - -#include "cairo-test.h" - -#include -#include - -/*#define ROTATED 1*/ - -#define BORDER 10 -#define TEXT_SIZE 64 -#define WIDTH (TEXT_SIZE * 15 + 2*BORDER) -#ifndef ROTATED - #define HEIGHT ((TEXT_SIZE + 2*BORDER)*2) -#else - #define HEIGHT WIDTH -#endif -#define TEXT "geez... cairo user-font" - -#define END_GLYPH 0 -#define STROKE 126 -#define CLOSE 127 - -/* Simple glyph definition: 1 - 15 means lineto (or moveto for first - * point) for one of the points on this grid: - * - * 1 2 3 - * 4 5 6 - * 7 8 9 - * ----10 11 12----(baseline) - * 13 14 15 - */ -typedef struct { - unsigned long ucs4; - int width; - char data[16]; -} test_scaled_font_glyph_t; - -static cairo_user_data_key_t test_font_face_glyphs_key; - -static cairo_status_t -test_scaled_font_init (cairo_scaled_font_t *scaled_font, - cairo_t *cr, - cairo_font_extents_t *metrics) -{ - metrics->ascent = .75; - metrics->descent = .25; - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -test_scaled_font_unicode_to_glyph (cairo_scaled_font_t *scaled_font, - unsigned long unicode, - unsigned long *glyph) -{ - test_scaled_font_glyph_t *glyphs = cairo_font_face_get_user_data (cairo_scaled_font_get_font_face (scaled_font), - &test_font_face_glyphs_key); - int i; - - for (i = 0; glyphs[i].ucs4 != (unsigned long) -1; i++) - if (glyphs[i].ucs4 == unicode) { - *glyph = i; - return CAIRO_STATUS_SUCCESS; - } - - /* Not found. Default to glyph 0 */ - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -test_scaled_font_render_glyph (cairo_scaled_font_t *scaled_font, - unsigned long glyph, - cairo_t *cr, - cairo_text_extents_t *metrics) -{ - test_scaled_font_glyph_t *glyphs = cairo_font_face_get_user_data (cairo_scaled_font_get_font_face (scaled_font), - &test_font_face_glyphs_key); - int i; - const char *data; - div_t d; - double x, y; - - /* FIXME: We simply crash on out-of-bound glyph indices */ - - metrics->x_advance = glyphs[glyph].width / 4.0; - - cairo_set_line_width (cr, 0.1); - cairo_set_line_join (cr, CAIRO_LINE_JOIN_ROUND); - cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND); - - data = glyphs[glyph].data; - for (i = 0; data[i] != END_GLYPH; i++) { - switch (data[i]) { - case STROKE: - cairo_new_sub_path (cr); - break; - - case CLOSE: - cairo_close_path (cr); - break; - - default: - d = div (data[i] - 1, 3); - x = d.rem / 4.0 + 0.125; - y = d.quot / 5.0 + 0.4 - 1.0; - cairo_line_to (cr, x, y); - } - } - cairo_stroke (cr); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_user_font_face_create (cairo_font_face_t **out) -{ - /* Simple glyph definition: 1 - 15 means lineto (or moveto for first - * point) for one of the points on this grid: - * - * 1 2 3 - * 4 5 6 - * 7 8 9 - * ----10 11 12----(baseline) - * 13 14 15 - */ - static const test_scaled_font_glyph_t glyphs [] = { - { 'a', 3, { 4, 6, 12, 10, 7, 9, STROKE, END_GLYPH } }, - { 'c', 3, { 6, 4, 10, 12, STROKE, END_GLYPH } }, - { 'e', 3, { 12, 10, 4, 6, 9, 7, STROKE, END_GLYPH } }, - { 'f', 3, { 3, 2, 11, STROKE, 4, 6, STROKE, END_GLYPH } }, - { 'g', 3, { 12, 10, 4, 6, 15, 13, STROKE, END_GLYPH } }, - { 'h', 3, { 1, 10, STROKE, 7, 5, 6, 12, STROKE, END_GLYPH } }, - { 'i', 1, { 1, 1, STROKE, 4, 10, STROKE, END_GLYPH } }, - { 'l', 1, { 1, 10, STROKE, END_GLYPH } }, - { 'n', 3, { 10, 4, STROKE, 7, 5, 6, 12, STROKE, END_GLYPH } }, - { 'o', 3, { 4, 10, 12, 6, CLOSE, END_GLYPH } }, - { 'r', 3, { 4, 10, STROKE, 7, 5, 6, STROKE, END_GLYPH } }, - { 's', 3, { 6, 4, 7, 9, 12, 10, STROKE, END_GLYPH } }, - { 't', 3, { 2, 11, 12, STROKE, 4, 6, STROKE, END_GLYPH } }, - { 'u', 3, { 4, 10, 12, 6, STROKE, END_GLYPH } }, - { 'z', 3, { 4, 6, 10, 12, STROKE, END_GLYPH } }, - { ' ', 1, { END_GLYPH } }, - { '-', 2, { 7, 8, STROKE, END_GLYPH } }, - { '.', 1, { 10, 10, STROKE, END_GLYPH } }, - { -1, 0, { END_GLYPH } }, - }; - - cairo_font_face_t *user_font_face; - cairo_status_t status; - - user_font_face = cairo_user_font_face_create (); - cairo_user_font_face_set_init_func (user_font_face, test_scaled_font_init); - cairo_user_font_face_set_render_glyph_func (user_font_face, test_scaled_font_render_glyph); - cairo_user_font_face_set_unicode_to_glyph_func (user_font_face, test_scaled_font_unicode_to_glyph); - - status = cairo_font_face_set_user_data (user_font_face, - &test_font_face_glyphs_key, - (void*) glyphs, NULL); - if (status) { - cairo_font_face_destroy (user_font_face); - return status; - } - - *out = user_font_face; - return CAIRO_STATUS_SUCCESS; -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_font_face_t *font_face; - const char text[] = TEXT; - cairo_font_extents_t font_extents; - cairo_text_extents_t extents; - cairo_status_t status; - - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - -#ifdef ROTATED - cairo_translate (cr, TEXT_SIZE, 0); - cairo_rotate (cr, .6); -#endif - - status = _user_font_face_create (&font_face); - if (status) { - return cairo_test_status_from_status (cairo_test_get_context (cr), - status); - } - - cairo_set_font_face (cr, font_face); - cairo_font_face_destroy (font_face); - - cairo_set_font_size (cr, TEXT_SIZE); - - cairo_font_extents (cr, &font_extents); - cairo_text_extents (cr, text, &extents); - - /* logical boundaries in red */ - cairo_move_to (cr, 0, BORDER); - cairo_rel_line_to (cr, WIDTH, 0); - cairo_move_to (cr, 0, BORDER + font_extents.ascent); - cairo_rel_line_to (cr, WIDTH, 0); - cairo_move_to (cr, 0, BORDER + font_extents.ascent + font_extents.descent); - cairo_rel_line_to (cr, WIDTH, 0); - cairo_move_to (cr, BORDER, 0); - cairo_rel_line_to (cr, 0, 2*BORDER + TEXT_SIZE); - cairo_move_to (cr, BORDER + extents.x_advance, 0); - cairo_rel_line_to (cr, 0, 2*BORDER + TEXT_SIZE); - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_set_line_width (cr, 2); - cairo_stroke (cr); - - /* ink boundaries in green */ - cairo_rectangle (cr, - BORDER + extents.x_bearing, BORDER + font_extents.ascent + extents.y_bearing, - extents.width, extents.height); - cairo_set_source_rgb (cr, 0, 1, 0); - cairo_set_line_width (cr, 2); - cairo_stroke (cr); - - /* text in black */ - cairo_set_source_rgb (cr, 0, 0, 0); - cairo_move_to (cr, BORDER, BORDER + font_extents.ascent); - cairo_show_text (cr, text); - - - /* filled version of text in blue */ - cairo_set_source_rgb (cr, 0, 0, 1); - cairo_move_to (cr, BORDER, BORDER + font_extents.height + 2*BORDER + font_extents.ascent); - cairo_text_path (cr, text); - cairo_fill (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (user_font, - "Tests user font feature", - "font, user-font", /* keywords */ - "cairo >= 1.7.4", /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/white-in-noop.c b/test/white-in-noop.c deleted file mode 100644 index e6a93e8..0000000 --- a/test/white-in-noop.c +++ /dev/null @@ -1,52 +0,0 @@ -/* -*- Mode: c; c-basic-offset: 4; indent-tabs-mode: t; tab-width: 8; -*- */ -/* - * Copyright 2011 Andrea Canciani - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Andrea Canciani - */ - -#include "cairo-test.h" - -#define HEIGHT 4 -#define WIDTH 4 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_set_source_rgb (cr, 0, 0, 0); - cairo_paint (cr); - - cairo_set_operator (cr, CAIRO_OPERATOR_IN); - - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (white_in_noop, - "Test an invalid optimization of the IN operator with white sources", - "operator", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/world-map.c b/test/world-map.c deleted file mode 100644 index f775bb0..0000000 --- a/test/world-map.c +++ /dev/null @@ -1,151 +0,0 @@ -/* - * Copyright © 2006 Red Hat, Inc. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" - -#ifdef HAVE_UNISTD_H -#include -#endif - -#define WIDTH 800 -#define HEIGHT 400 - -typedef enum { - WM_NEW_PATH, - WM_MOVE_TO, - WM_LINE_TO, - WM_HLINE_TO, - WM_VLINE_TO, - WM_REL_LINE_TO, - WM_END -} wm_type_t; - -typedef struct _wm_element { - wm_type_t type; - double x; - double y; -} wm_element_t; - -#include "world-map.h" - -enum { - STROKE = 1, - FILL = 2, -}; - -static cairo_test_status_t -draw_world_map (cairo_t *cr, int width, int height, int mode) -{ - const wm_element_t *e; - double cx, cy; - - cairo_set_line_width (cr, 0.2); - - cairo_set_source_rgb (cr, .68, .85, .90); /* lightblue */ - cairo_rectangle (cr, 0, 0, 800, 400); - cairo_fill (cr); - - e = &countries[0]; - while (1) { - switch (e->type) { - case WM_NEW_PATH: - case WM_END: - if (mode & FILL) { - cairo_set_source_rgb (cr, .75, .75, .75); /* silver */ - cairo_fill_preserve (cr); - } - if (mode & STROKE) { - cairo_set_source_rgb (cr, .50, .50, .50); /* gray */ - cairo_stroke (cr); - } - cairo_new_path (cr); - cairo_move_to (cr, e->x, e->y); - break; - case WM_MOVE_TO: - cairo_close_path (cr); - cairo_move_to (cr, e->x, e->y); - break; - case WM_LINE_TO: - cairo_line_to (cr, e->x, e->y); - break; - case WM_HLINE_TO: - cairo_get_current_point (cr, &cx, &cy); - cairo_line_to (cr, e->x, cy); - break; - case WM_VLINE_TO: - cairo_get_current_point (cr, &cx, &cy); - cairo_line_to (cr, cx, e->y); - break; - case WM_REL_LINE_TO: - cairo_rel_line_to (cr, e->x, e->y); - break; - } - if (e->type == WM_END) - break; - e++; - } - - cairo_new_path (cr); - - return CAIRO_TEST_SUCCESS; -} - -static cairo_test_status_t -draw_world_map_stroke (cairo_t *cr, int width, int height) -{ - return draw_world_map (cr, width, height, STROKE); -} - -static cairo_test_status_t -draw_world_map_fill (cairo_t *cr, int width, int height) -{ - return draw_world_map (cr, width, height, FILL); -} - -static cairo_test_status_t -draw_world_map_both (cairo_t *cr, int width, int height) -{ - return draw_world_map (cr, width, height, FILL | STROKE); -} - -CAIRO_TEST (world_map, - "Tests a complex drawing (part of the performance suite)", - "fill, stroke", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw_world_map_both) -CAIRO_TEST (world_map_stroke, - "Tests a complex drawing (part of the performance suite)", - "stroke", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw_world_map_stroke) -CAIRO_TEST (world_map_fill, - "Tests a complex drawing (part of the performance suite)", - "fill", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw_world_map_fill) diff --git a/test/world-map.h b/test/world-map.h deleted file mode 100644 index af58b80..0000000 --- a/test/world-map.h +++ /dev/null @@ -1,196 +0,0 @@ -/* The data for this test case was provided by Gary Nicholson - * who originally created an interactive SVG map - * of the world as can be seen here: - * - * http://www.wherearewe.co.nz/svg.html - * - * The data is used here by permission from Gary given on 2006-11-08: - * - * Thanks for asking, I don't need any attribution if you are - * only using the vectors and not the entire map with - * interactivity etc. So feel free to do what you wish with - * the data. - */ - -#define N(x,y) { WM_NEW_PATH, x, y } -#define M(x,y) { WM_MOVE_TO, x, y } -#define L(x,y) { WM_LINE_TO, x, y } -#define H(x,y) { WM_HLINE_TO, x, y } -#define V(x,y) { WM_VLINE_TO, x, y } -#define l(x,y) { WM_REL_LINE_TO, x, y } -#define E(x,y) { WM_END, x, y } - -static const wm_element_t countries[] = { -N(413.519,90.071),l(.136,-.348),l(-.31,-.204),l(-.017,-.327),l(.213,-.322),l(.245,-.147),l(.142,-.08),l(.225,.072),l(.062,.301),l(.41,.312),l(.466,.096),l(-.044,.288),l(-.248,.144),l(.074,.353),l(-.145,-.063),l(-.568,-.011),l(-.642,-.063), -N(421.683,94.397),l(.193,.336),l(-.266,.274),l(.214,.288),l(-.09,.192),l(.622,.062),l(.008,.144),l(.55,.242),l(.579,-.332),l(.215,.117),l(-.029,.171),l(-.126,.309),l(.112,.212),l(-.038,.192),l(-.315,-.051),l(-.176,-.162),l(-.283,.091),l(-.081,.273),l(.244,.131),l(-.228,.415),l(-.244,-.333),l(-.469,.05),l(-.071,.122),l(-.216,.03),l(-.23,-.142),l(-.143,-.354),l(-.371,.081),l(.019,.333),l(-.425,.384),l(-.018,.535),l(-.285,.151),l(-.385,-.312),l(.098,-.182),l(-.311,-.071),l(-.534,-.363),l(-.016,-.415),l(-.777,.404),l(.103,.212),l(-.349,.432),l(-.275,.16),l(-.629,-.168),l(-.627,.204),l(-.599,-.062),l(-.102,-.424),l(-.312,-.806),l(-.616,.147),l(-.854,.668),l(-.369,-.111),l(.238,-.226),l(.013,-.322),l(-.08,-.137),l(.089,-.294),l(.718,-.418),l(-.038,-.315),l(.575,-.24),l(.012,-.076),l(.528,-.494),l(.173,-.035),l(-.116,-.089),l(-.153,-.028),l(.221,-.302),l(.446,.007),l(-.005,.096),l(.473,.007),l(.385,-.309),l(.271,.089),l(.272,-.117),l(.271,.096),l(.567,-.158),l(.278,.11),l(.354,-.021),l(-.179,-.199),l(.709,-.199),l(.017,.151),l(.199,-.014),l(.149,.089),l(.852,.007),l(.664,.261), -N(421.394,104.558),l(.104,.175),l(.04,.256),l(-.06,.475),l(.118,.054),l(.062,.333),l(-.076,.795),l(-.211,.327),l(-.118,.724),l(-.292,.501),l(-.298,-.043),l(-.057,-.196),l(-.41,-.076),l(-.227,-.152),l(.284,-.207),l(-.07,-.076),l(-.437,-.098),l(.257,-.332),l(-.11,-.071),l(-.291,.071),l(-.053,-.147),l(.115,-.022),l(.175,-.158),l(-.094,-.153),l(-.257,-.082),l(.015,-.164),l(.247,-.12),l(-.284,-.218),l(.241,-.284),l(.6,-.305),l(.27,-.022),l(.04,-.125),l(.292,-.043),l(.195,.104),l(.096,-.142),l(-.022,-.344),l(.072,-.224),l(.143,-.011),M(396.323,103.853),l(.375,-.122),l(.411,-.365),l(.549,-2.299),l(.397,-.091),l(-.21,-.29),l(-.226,.259),l(.125,-1.144),l(.223,-.826),l(.115,.153),l(.496,.306),l(.191,.382),l(.191,.229),l(-.281,-.673),l(-.63,-.582),l(-.242,-.233),l(.024,-.249),l(.359,-.477),l(-.202,-.375),l(-.2,-.274),l(-.326,-.216),l(-.685,-.1),l(-.515,-.571),l(-.416,-.323),l(.278,-.426),l(-.233,-.181),l(-.343,-.131),l(-.511,-.142),l(-.184,-.173),l(.247,-.376),l(-.329,-.173),l(-.509,.179),l(-.489,-.249),l(-.824,-.251),l(-.619,-.181),l(-.325,.014),l(-.215,-.25),l(-.91,.167),l(-.059,-.25),l(-.265,-.125),l(-.367,-.042),l(-.056,-.104),l(.861,-.083),l(-.085,-.229),l(-.526,-.104),l(.442,-.104),l(.086,-.205),l(-.275,.017),l(-.263,-.021),l(-.417,.083),l(.04,-.438),l(.303,.012),l(.305,-.146),l(.526,-.088),l(.562,-.174),l(.215,.188),l(.18,-.167),l(.474,.063),l(.112,-.26),l(.272,-.059),l(.764,-.078),l(.393,.366),l(.275,.26),l(.342,.083),l(.652,-.271),l(.317,.167),l(.276,-.127),l(.457,-.124),l(.029,.23),l(.591,-.065),l(.3,-.103),l(-.265,-.188),l(-.028,-.251),l(.056,-.345),l(-.037,-.428),l(-.131,.021),l(-.562,-.682),l(-.11,-.407),l(.927,.126),l(.607,-.105),l(-.084,.397),l(.248,.419),l(.342,-.146),l(1.241,.104),l(.501,.146),l(.079,-.014),l(.525,-.093),l(.662,-.27),l(-.534,-.124),l(.055,-.204),l(.166,-.175),l(.753,-.322),l(.756,-.181),l(.902,-.215),l(.314,-.235),l(.302,-.264),l(-.053,-.775),l(.135,-.542),l(.521,-.25),l(.46,-.16),l(.916,-.092),l(.177,-.096),l(.208,.447),l(.311,.335),l(.266,.127),l(.141,-.071),l(.41,-.208),l(.153,.17),l(.202,.458),l(.194,.133),l(.518,-.012),l(.159,.301),l(.259,-.012),l(.576,.048),l(.375,.168),l(-.159,.241),l(.091,.175),l(-.072,.198),l(.285,.122),l(.406,-.075),l(.446,-.035),l(.193,-.313),l(.245,-.072),l(-.119,.373),l(.146,.18),l(-.039,.228),l(.529,.048),l(.341,.192),l(.371,.204),l(.127,.228),l(.694,-.174),l(.079,.114),l(.642,.063),l(.568,.011),l(.145,.063),l(.428,.319),l(.337,.277),l(.395,-.055),l(.045,.145),l(.689,-.062),l(.072,-.048),l(.233,.007),l(.095,.186),l(.456,.09),l(.479,-.014),l(.605,.193),l(-.954,.806),l(-.054,.213),l(-.054,.358),l(-.321,.372),l(-.075,.295),l(.091,.076),l(-.216,.701),l(.135,.233),l(-.385,.309),l(-.473,-.007),l(.005,-.096),L(415.96,94.5),l(-.221,.302),l(.153,.028),l(.116,.089),l(-.173,.035),l(-.528,.494),l(-.012,.076),l(-.575,.24),l(.038,.315),l(-.718,.418),l(-.089,.294),l(.08,.137),l(-.013,.322),l(-.238,.226),l(.369,.111),l(.854,-.668),l(.616,-.147),l(.312,.806),l(.102,.424),l(-.624,.301),l(.532,.344),l(.025,.292),l(.43,.192),l(-.199,.272),l(-.541,.353),l(-.183,-.111),l(-.437,.186),l(.352,.358),l(.616,.191),l(.135,.331),l(-.175,.01),l(-.315,.371),l(.193,.442),l(.754,.391),l(.849,-.07),l(.062,.281),l(-.146,.469),l(-.346,.23),l(-.221,.215),l(-.833,.488),l(-.889,.659),l(-.427,.087),l(-.318,.043),l(-.798,.159),l(-.405,-.028),l(-.471,-.156),l(-.851,-.499),l(-.315,-.085),l(-.354,.029),l(-.231,.072),l(-.511,-.056),l(-.752,-.313),l(-.602,.044),l(-.731,.345),l(-.357,.258),l(-.555,.559),l(-.147,.386),l(.099,.514),l(.091,.379),l(-.334,-.091),l(-.75,.137),l(-.039,.136),l(-.485,-.015),l(-.427,-.197),l(-.395,.167),l(-.261,-.015),l(-.036,-.152),l(-.335,-.091),l(-.206,.03),l(-.374,.076),l(-.187,-.076),l(-.035,-.289),l(-.091,-.213),l(-1.252,-.304),l(-.355,0),l(.017,.319),l(-.542,-.015),l(-.337,.061),l(-.037,-.122),l(-.767,.03),l(-.084,-.114),l(-.028,-.038),l(-.431,-.152),l(-.131,.076),l(-.262,-.03),l(-.056,.076),l(-.507,-.395),l(-.15,.061),l(-1.088,-.334),l(-.112,.106),l(-.15,-.03),l(-.094,-.106),l(.205,-.243),l(-.058,-.122),l(-.469,.03),l(-.472,-.243), -N(681.312,116.395),l(.235,-.171),l(.283,-.256),l(.633,-.738),l(.315,-.157),l(.595,.011),l(.579,.068),l(.511,.096),l(.309,-.115),l(.571,-.678),l(.682,.621),l(1.178,1.611),l(.329,.495),l(.269,.664),l(.002,.75),l(-.034,.947),l(-.129,.637),l(.143,.113),l(.5,-.043),l(-.121,.41),l(-.282,.523),l(-.5,.75),l(-.316,.312),l(-.243,.043),l(-.567,-.211),l(-.256,.1),l(-.607,.58),l(-.431,-.083),l(-.289,-.225),l(-.544,.1),l(-.526,.199),l(-1.188,.835),l(-.462,.043),l(-.46,.312),l(-.055,-.564),l(-.056,-.324),l(-.163,-.705),l(-.137,-.395),l(.167,-.453),l(.499,-.468),l(0,-.353),l(.226,-.425),l(-.044,-.141),l(-.378,-.311),l(-.095,-.296),l(.015,-.467),l(-.087,-.339),l(-.289,-.126),l(-.603,-.084),l(.654,-.411),l(.303,-.114),l(.654,.268),l(.254,-.241),l(-.029,-.283),l(-.764,-.89),l(-.113,-.311),l(-.137,-.105), -N(475.646,121.847),l(-.018,.175),l(.338,.391),l(-.295,-.009),l(-.132,.108),l(-.104,-.059),l(-.327,-.021),l(-.121,.33),l(-.783,.257),l(-.384,.046),l(-.099,.053),l(0,.21),l(-.217,.006),l(-.072,-.192),l(-.402,.023),l(-.547,-.146),l(-.191,-.087),l(0,-.21),l(-.161,-.105),l(-.122,-.403),l(.082,-.035),l(.12,.1),l(.147,-.006),l(.405,-.304),l(.253,-.006),l(.328,.092),l(.077,-.086),l(.088,-.286),l(-.053,-.175),l(.627,.093),l(.658,.027),l(.367,-.056),l(.818,-.233),l(.689,-.304),l(.535,-.158),l(-.475,.295),l(-.436,.231),l(-.596,.444), -N(704.404,117.274),l(.197,-.099),l(1.108,-.271),l(.057,.354),l(-.481,.284),l(-.232,.241),l(-.068,.453),l(.139,.367),l(.291,.056),l(.221,-.114),l(.418,-.354),l(.24,-.085),l(1.656,-.697),l(.389,-.213),l(.46,-.326),l(.349,-.638),l(.76,-.412),l(.347,-.327),l(.191,-.269),l(.142,-.51),l(.538,-.582),l(-.01,-.142),l(.344,-.567),l(.159,-.468),l(.139,-.609),l(-.043,-.467),l(-.33,-.198),l(-.128,-.24),l(.234,-.213),l(.166,-.284),l(-.155,-1.023),l(.544,-.343),l(.176,-.242),l(.327,-.328),l(.192,0),l(.21,.355),l(.199,.227),l(.303,-.058),l(.799,-.257),l(-.169,-.526),l(-.311,-.028),l(-.36,-.312),l(.694,-.415),l(.441,.156),l(.336,.227),l(.025,.199),l(-.016,.868),l(.058,.611),l(.22,.127),l(.243,.312),l(.717,1.432),l(.001,.496),l(-.246,.709),l(-.709,.766),l(-.226,.439),l(.064,.368),l(-.15,.071),l(-.737,.285),l(-.161,.113),l(-.164,.199),l(-.174,.453),l(.02,.396),l(.094,.254),l(.131,.792),l(-.04,.693),l(-.686,.751),l(-.242,.736),l(.02,.707),l(.198,.296),l(.422,.353),l(-.617,.298),l(-.193,.127),l(-.166,.17),l(-.174,.834),l(-1.081,.439),l(-.094,-.282),l(.294,-.665),l(.184,-.523),l(-.198,-.126),l(-.514,.241),l(-.578,.623),l(-.476,.001),l(-.346,.312),l(-.066,.748),l(-.354,.269),l(-.188,-.028),l(-.066,-.155),l(.003,-.606),l(-.149,-.155),l(-.211,.042),l(-.309,.156),l(-.344,.311),l(-.325,.523),l(-.866,-.055),l(-.505,.057),l(-.631,.1),l(-.458,-.549),l(-.685,-.323),l(-.26,.254),l(-.067,.184),l(-.177,.353),l(.037,.056),l(.417,.197),l(.416,.323),l(-.293,.198),l(-.829,.129),l(-.433,.241),l(-.463,.622),l(-.522,.847),l(-.688,-.365),l(-.565,-.21),l(-.285,-.197),l(-.014,-.169),l(-.194,-.818),l(.099,-.155),l(.495,-.325),l(.179,-.269),l(-.067,-.282),l(-.18,-.042),l(-.601,.17),l(-.341,-.028),l(-.789,-.167),l(-.475,.128),l(-.427,.227),l(-.437,.184),l(-.269,-.098),l(-.256,-.027),l(-1.647,.398),l(-.814,.298),l(-.21,-.31),l(-.452,-.042),l(-.413,.438),l(-.006,.635),l(-.756,-.238),l(-.579,-.055),l(-1.1,.073),l(-.267,-.14),l(.072,-.339),l(.179,-.283),l(.483,.013),l(.499,-.114),l(.751,-.467),l(2.201,-1.953),l(.28,-.015),l(.427,-.128),l(.056,.424),l(.495,-.128),l(1.278,-.257),l(.933,-.058),l(1.183,-.172),l(.892,-.256),l(.068,.452),l(.377,.268),l(.167,-.085),l(.654,-.199),l(.446,-.34),l(-.003,-.353),l(.114,-.467),l(.465,-.51),l(.698,-.581),l(.371,-.453),l(-.062,-1.117),l(.182,-.213),M(695.464,127.756),l(-.292,-.197),l(-.223,-.268),l(-.101,-.381),l(-.177,-.395),l(-.492,-.535),l(.731,-.382),l(.287,-.269),l(.456,-.593),l(.409,.253),l(.615,-.015),l(.483,-.185),l(.311,-.339),l(.451,-.311),l(.454,-.029),l(.316,.169),l(.862,.224),l(.153,.254),l(-.1,.127),l(-.102,.423),l(-.292,.24),l(-.864,.876),l(-.181,-.211),l(-.424,-.295),l(-.467,-.042),l(-.612,.213),l(-.193,.184),l(-.245,.495),l(-.165,.508),l(-.153,.212),l(-.448,.269),M(691.12,131.448),l(-.366,-.042),l(-.056,-.141),l(.268,-.537),l(.128,-.593),l(-.334,-.112),l(-.239,.198),l(-.155,.466),l(-.381,.452),l(-.326,-.211),l(-.059,-.211),l(.322,-.466),l(.032,-.296),l(-.356,-.917),l(.169,-.113),l(.687,-.58),l(.083,-.141),l(.034,-.466),l(-.532,-.789),l(-.333,-.042),l(-.162,.269),l(-.419,.495),l(-.249,-.112),l(-.23,-.508),l(-.376,-.267),l(-.261,-.366),l(.41,-.325),l(.733,.083),l(.706,-.171),l(.315,-.466),l(.241,-.283),l(.484,-.058),l(.478,.056),l(.249,.38),l(.27,.168),l(.43,.084),l(.628,-.213),l(.225,.395),l(-.569,.438),l(.405,.239),l(.443,.437),l(.079,.254),l(-.596,.58),l(-.242,.41),l(-.104,.367),l(-.085,.621),l(-.109,.649),l(-.242,.353),l(-.194,.099),l(-.165,.071),l(-.197,.184),l(-.479,.678),M(711.938,108.369),l(-.222,-.241),l(-.077,-.271),l(.325,-.642),l(-.055,-.342),l(-.549,-.198),l(-.168,-.171),l(-.146,-.812),l(.583,-.386),l(.522,-.172),l(.646,-.373),l(.037,-.356),l(-.318,-.285),l(.277,-.3),l(.224,-.015),l(.661,.427),l(.373,.085),l(.532,-.201),l(-.004,-1.186),l(.455,-.187),l(.45,-.244),l(.074,-.743),l(.007,-.844),l(-.398,-.758),l(-.098,-.473),l(.166,-.216),l(.618,-.346),l(.063,.072),l(.507,.43),l(.904,.816),l(1.07,.842),l(1.083,.684),l(.627,.285),l(.528,.17),l(1.02,.198),l(.282,.042),l(.304,-.086),l(.866,-.66),l(.461,-.144),l(.002,.1),l(-.308,.358),l(-.335,.558),l(.198,.414),l(.469,.599),l(.197,.356),l(-.561,.272),l(-.447,.244),l(-.534,.158),l(-.365,.015),l(-.488,-.199),l(-.453,.015),l(-.363,.144),l(-.345,.229),l(-.754,.786),l(-.396,.5),l(-.26,.599),l(-.4,-.07),l(-.425,-.241),l(-2.031,-.965),l(-.461,-.085),l(-.72,.044),l(-1.038,.587),l(-.153,-.299),l(-.372,-.356),l(-.339,.029),l(-.266,.115),l(-.439,.272),l(.049,.299),l(1.16,.497),l(.56,.298),l(.302,.27),l(-.391,.214),l(-.303,.029),l(-.305,-.128),l(-.261,.043),l(-.324,.314),l(-.388,.471),l(-.347,.114), -N(597.917,139.685),l(1.251,-1.545),l(.609,-.539),l(.348,-.239),l(.149,-.103),l(.417,-.016),l(.309,.294),l(.479,.208),l(1.659,.047),l(.371,.041),l(.312,.209),l(.329,.619),l(-.07,.156),l(.042,.24),l(.326,.294),l(.313,.069),l(.258,.238),l(.017,.282),l(-.217,.58),l(-.624,.06),l(-1.036,.062),l(-1.238,-.063),l(-.335,-.125),l(-.301,-.055),l(-.531,.313),l(-.544,.074),l(-.085,-.021),l(-.869,-.214),l(-.559,-.081),l(-.637,-.18),l(-.235,-.493),l(.092,-.113), -N(362.764,152.723),l(.072,-.625),l(.395,-.876),l(.52,-.552),l(.488,-.566),l(.244,-.509),l(1.175,-2.559),l(.238,-.241),l(1.404,-1.175),l(.345,-.495),l(.051,-.918),l(.305,-1.088),l(.651,-1.075),l(.399,-.34),l(.404,-.198),l(.838,-.51),l(.361,-.495),l(.334,-.777),l(.428,-.851),l(1.635,-.04),l(2.511,0),l(2.677,-.001),l(1.718,.004),l(1.42,-.008),l(.027,.876),l(-.03,1.752),l(.002,.65),l(-.104,.396),l(-.56,-.011),l(-6.005,-.022),l(-.557,.074),l(-.047,.509),l(-.07,2.261),l(-.099,2.6),l(-.144,.128),l(-.809,.287),l(-.726,.315),l(-.575,.427),l(-.249,.383),l(-.01,.707),l(.164,1.539),l(.051,1.102),l(-.212,-.027),l(-.732,.033),l(-2.396,-.014),l(-5.055,-.056),l(-.474,-.013), -N(514.551,145.841),l(-.374,.027),l(-.336,-.083),l(-.008,-.615),l(-.153,-.437),l(-.108,-.791),l(.187,-.607),l(.188,-.11),l(-.059,-.187),l(.177,-.607),l(.33,-.269),l(.312,.083),l(.069,.315),l(.26,.093),l(.063,.199),l(.116,.326),l(-.106,.42),l(.031,.708),l(.118,.254),l(-.104,.381),l(-.327,.467),l(-.275,.433), -N(514.177,145.868),l(.374,-.027),l(.008,.288),l(.361,.14),l(.153,.128),l(.186,-.093),l(-.046,.443),l(.397,.001),l(.402,.127),l(.687,-.093),l(.103,-.21),l(.183,-.058),l(.218,.117),l(.424,-.042),l(.595,.112),l(.224,-.035),l(.079,-.105),l(1.358,.222),l(.732,-.14),l(-.022,-.292),l(.225,.175),l(.375,-.016),l(.157,-.099),l(.312,-.422),l(.232,-.073),l(.267,-.495),l(.131,-.297),l(.711,-.637),l(.813,-.889),l(.163,.105),l(.229,-.178),l(.85,-.708),l(.313,-.433),l(.15,.161),l(-.248,.42),l(-.107,.299),l(-.004,.176),l(.099,.064),l(.121,-.024),l(.454,.042),l(.09,.324),l(.001,.508),l(-.003,.358),l(-.49,.034),l(-.401,-.083),l(-.107,.396),l(.073,1.326),l(-.199,.34),l(-.536,.596),l(.003,.946),l(.024,2.075),l(.063,.183),l(-.152,.057),l(-.584,.469),l(-.839,-.108),l(-3.387,-.446),l(-3.362,-.375),l(-.261,-.902),l(-.548,-1.154),l(-1.043,-2.198), -N(668.627,151.365),l(-.102,-.056),l(-.107,-.325),l(-.922,-1.212),l(-.332,-.987),l(-.03,-.438),l(.156,-.749),l(.546,-.792),l(1.312,-1.852),l(.259,-.184),l(.425,-.128),l(.229,-.184),l(.358,-.227),l(.228,.127),l(.554,.394),l(-.334,.424),l(-.084,.142),l(.023,.31),l(-.067,.622),l(-.203,.296),l(-.182,.354),l(-.065,.692),l(-.1,.494),l(-.317,.805),l(-.473,.707),l(-.417,.833),l(-.014,.353),l(-.114,.438),l(-.228,.142), -N(389.765,144.543),l(.1,.084),l(.895,.531),l(2.054,1.344),l(.811,.575),l(3.283,2.241),l(1.924,1.26),l(1.292,.824),l(.397,.253),l(2.472,1.469),l(.181,.253),l(-.096,.396),l(.082,.183),l(.393,.28),l(1.111,1.039),l(.229,.027),l(.47,-.314),l(.588,.562),l(.375,.167),l(.748,.024),l(.309,.111),l(.277,.352),l(.099,.522),l(-.161,.679),l(.146,.564),l(2.176,-.408),l(.064,1.017),l(.034,2.203),l(.001,.96),l(-.08,.89),l(-.145,.919),l(-.434,1.246),l(-.596,.794),l(-.339,.271),l(-.29,.129),l(-2.533,.085),l(-1.808,.124),l(-.209,.072),l(-.562,.427),l(-.579,.272),l(-.678,-.053),l(-.581,-.081),l(-1.062,-.173),l(-.36,-.059),l(-.356,-.125),l(-.37,.073),l(-1.22,.713),l(-.947,.458),l(-.304,.228),l(-.314,.793),l(-.274,-.027),l(-.324,-.182),l(-.518,-.209),l(-.272,.101),l(-.638,.625),l(-.492,.667),l(-.393,.822),l(-.174,.227),l(-.45,.102),l(-.551,-.364),l(-.293,-.281),l(-.273,.058),l(-.397,.384),l(-.355,1.217),l(-.292,1.047),l(-.317,.369),l(-.543,.271),l(-.448,.158),l(-.257,.016),l(-.141,.255),l(.058,.749),l(-.133,.876),l(-.261,.92),l(-.172,.326),l(-.046,.156),l(-.08,.043),l(-.159,.1),l(-.604,.399),l(-.352,.059),l(-.148,-.239),l(-.117,-.381),l(-.004,-.297),l(-.147,-.211),l(-.257,-.041),l(-.239,.114),l(-.571,.483),l(-.362,.469),l(-.35,.228),l(-.455,-.436),l(-.566,-.321),l(-.352,.059),l(-.522,.54),l(-.559,-.901),l(-.194,-1.143),l(-.349,-.718),l(-.474,-.478),l(-.265,-.451),l(-.271,-.832),l(-.022,-.339),l(-.246,-.281),l(-.323,-.055),l(-.684,.428),l(-.3,.327),l(-.43,.243),l(-.565,-.152),l(-.356,-.153),l(-.338,-.026),l(-.475,.413),l(-.252,.256),l(-.536,-.265),l(-.882,-.715),l(-.18,-.183),l(-.113,-.028),l(.062,-.142),l(.004,-.565),l(-.082,-.833),l(-.265,-.337),l(-.554,-.322),l(-.181,-.197),l(-.22,-.479),l(-.144,-.663),l(-.251,-1.1),l(.057,-.339),l(.506,-.399),l(.332,-.284),l(.018,-.607),l(.181,-.552),l(.252,-.256),l(.402,-.073),l(.261,.111),l(.568,.83),l(.214,.168),l(.454,.082),l(.107,-.269),l(-.055,-.296),l(.06,-.212),l(.535,.124),l(.713,.137),l(.485,.054),l(.387,-.031),l(.945,-.344),l(1.953,-.026),l(6.457,-.01),l(.379,-1.613),l(-.724,-.787),l(-.186,-1.468),l(-.202,-2.386),l(-.325,-2.753),l(-.178,-1.736),l(-.19,-1.468),l(-.908,-7.962),l(-.049,-.776),l(3.231,-.089),l(.523,-.13), -N(525.37,142.384),l(.312,-.429),l(.155,-.17),l(.084,.833),l(-.423,.707),l(-.118,.156),l(-.121,.024),l(-.099,-.064),l(.004,-.176),l(.107,-.299),l(.248,-.42),l(-.15,-.161),M(525.923,144.712),l(0,.22),l(.456,.762),l(.408,.465),l(.782,.634),l(.677,.394),l(1.008,.52),l(.392,.154),l(.277,.014),l(.576,-.029),l(.364,.112),l(.873,.973),l(.518,.648),l(.46,.422),l(.81,.365),l(.025,.212),l(-.67,1.06),l(-.615,.721),l(-.883,.807),l(-.776,1.541),l(-.242,.142),l(-.562,-.083),l(-.235,-.084),l(-.252,.071),l(-.278,.509),l(-.062,1.115),l(.001,.791),l(.134,.621),l(-.403,.142),l(-1.046,.073),l(-.627,.27),l(-.367,.283),l(-.29,.495),l(-.131,.551),l(-.204,.283),l(-.444,.255),l(-.544,.1),l(-.292,0),l(-.386,-.042),l(-.326,.029),l(-.382,.283),l(-.22,.297),l(-.125,.508),l(.003,.353),l(-.091,.311),l(-.631,.396),l(-.344,.043),l(-.776,-.21),l(-.717,.058),l(-.896,.27),l(-.768,.298),l(-.283,.099),l(-.416,.145),l(-.241,-.306),l(-.483,-.689),l(.006,-.296),l(-.127,-.253),l(-.933,-1.364),l(-.604,-.971),l(-.226,-.634),l(-.092,-.663),l(1.691,-.815),l(2.35,-1.213),l(5.346,-2.982),l(-.155,-1.453),l(-.581,-.914),l(-.063,-.183),l(-.024,-2.075),l(-.003,-.946),l(.536,-.596),l(.199,-.34),l(-.073,-1.326),l(.107,-.396),l(.401,.083),l(.49,-.034), -N(405.733,173.04),l(-.568,-.971),l(-.562,-.025),l(-.37,.044),l(-.516,-.181),l(-.97,-.757),l(-.114,-.226),l(.335,-.439),l(-.018,-.212),l(-.179,-.268),l(-.502,-.42),l(-.389,-.266),l(-.422,-.492),l(-.426,-.93),l(-.019,-.396),l(.173,-.665),l(.581,.081),l(.678,.053),l(.579,-.272),l(.562,-.427),l(.209,-.072),l(1.808,-.124),l(2.533,-.085),l(.29,-.129),l(.339,-.271),l(.596,-.794),l(.434,-1.246),l(.145,-.919),l(.08,-.89),l(-.001,-.96),l(-.034,-2.203),l(-.064,-1.017),l(1.672,-.321),l(1.82,-.364),l(3.084,-2.617),l(.834,-.655),l(2.308,-1.454),l(1.607,-.956),l(4.012,-2.241),l(1.632,-.843),l(.265,-.186),l(.832,.137),l(1.646,.442),l(1.008,.333),l(.258,.182),l(1.192,.911),l(.231,-.157),l(1.519,-.729),l(.364,2.145),l(.169,1.298),l(.42,1.028),l(.554,.802),l(.703,.604),l(-.388,.722),l(-.265,.99),l(-.168,1.088),l(-.084,.989),l(.022,.537),l(-.062,.707),l(-.019,1.045),l(-.034,1.088),l(-.056,.466),l(-2.43,2.613),l(-.591,.78),l(-.87,1.333),l(-.572,.794),l(-.007,.678),l(.123,.719),l(.014,.269),l(-.951,.034),l(-.437,.2),l(-.453,.299),l(-.761,.697),l(-.259,.058),l(-.609,-.208),l(-.724,-.193),l(-.884,-.221),l(-.531,-.04),l(-.709,.047),l(-.628,.103),l(-.774,.287),l(-.403,.327),l(-.629,.399),l(-.273,.059),l(-.934,.005),l(-.965,-.277),l(-1.173,-.742),l(-.354,-.083),l(-.467,.116),l(-1.337,.544),l(-.37,.002),l(-.209,-.098),l(-1.095,-1.223),l(-.821,-.277),l(-1.111,-.121),l(-1.174,.108),l(-1.064,.188),l(-.676,.4),l(-.687,1.614),l(-.353,.482),l(-.158,.849),l(-.092,.961),l(-.902,-.503),l(-.727,-.589),l(-.339,-.28),l(-.321,.073),l(-.577,.3), -N(431.763,171.063),l(-.351,-.407),l(-.575,-.52),l(-.173,-.394),l(-.014,-.269),l(-.123,-.719),l(.007,-.678),l(.572,-.794),l(.87,-1.333),l(.591,-.78),l(2.43,-2.613),l(.056,-.466),l(.034,-1.088),l(.019,-1.045),l(.062,-.707),l(-.022,-.537),l(.084,-.989),l(.168,-1.088),l(.265,-.99),l(.388,-.722),l(-.703,-.604),l(-.554,-.802),l(-.42,-1.028),l(-.169,-1.298),l(-.364,-2.145),l(1.818,-.858),l(.41,-.059),l(5.231,2.554),l(4.941,2.372),l(5.577,2.792),l(1.981,.963),l(-.02,1.045),l(-.016,.946),l(-.036,.636),l(.085,2.5),l(-.038,.749),l(.036,1.002),l(.031,1.229),l(-.04,.283),l(-.839,-.009),l(-1.245,.05),l(-.229,.143),l(-.417,1.245),l(-.583,.809),l(-.122,.438),l(.131,.677),l(-.149,.212),l(-.718,.428),l(-.053,.24),l(.342,.662),l(-.087,.34),l(-.542,.596),l(-.316,.609),l(.219,.352),l(.517,-.088),l(.338,.012),l(.141,.225),l(.221,1.228),l(.137,.522),l(.155,.295),l(.444,.407),l(.266,.465),l(.026,.367),l(-.15,.425),l(-.559,-.208),l(-.321,-.012),l(-.322,.086),l(-.939,.613),l(-.372,.228),l(-.165,.382),l(-.005,.41),l(-.196,.284),l(-2.649,2.275),l(-.386,.087),l(-2.181,.055),l(-.434,.059),l(-.209,.199),l(-.117,.806),l(-.646,1.176),l(-.258,.143),l(-.368,.031),l(-.881,-.009),l(-.818,.273),l(-.754,.386),l(-.466,.271),l(-.224,.03),l(-.225,-.069),l(-.494,-.661),l(-1.363,.686),l(-.449,.158),l(-.24,-.027),l(-.096,-.084),l(-.208,-.183),l(-.382,-1.057),l(-.638,-1.07),l(-1.343,-1.179),l(-1.088,-1.067),l(.323,-.539),l(.29,-.312),l(.24,-.1),l(.481,.082),l(1.187,.191),l(.674,-.032),l(.225,-.143),l(-.047,-.127),l(-.208,-.21),l(-.381,-.633),l(-.205,-.578),l(-.169,-1.228),l(.134,-.651),l(-.119,-1.2),l(-.395,-.887),l(-.923,-1.238),l(-.208,-.083),l(-.627,-.109), -N(627.173,150.012),l(.483,-.229),l(.515,-.13),l(.341,.012),l(.597,.392),l(.325,.097),l(.584,-.413),l(.332,-.115),l(1.595,-.052),l(.807,-.117),l(.341,-.157),l(.696,-.554),l(.521,-.328),l(.298,-.101),l(.623,.575),l(.771,.235),l(.66,.053),l(.777,-.047),l(.237,.21),l(.056,.38),l(-.472,.75),l(.096,.521),l(.273,.365),l(.943,.615),l(.621,.166),l(.909,.107),l(.197,.143),l(-.19,.132),l(-.826,.482),l(.106,.465),l(-.203,.212),l(-1.261,-.054),l(-.136,.198),l(.057,.395),l(-.283,.382),l(-.585,.792),l(-.221,.142),l(-.533,.241),l(-.171,.127),l(-.27,.396),l(-.303,.932),l(-.388,.975),l(.268,.225),l(.469,.563),l(1.112,1.071),l(.023,.24),l(.042,.522),l(.087,.254),l(.42,.493),l(1.096,.83),l(1.282,1.296),l(.26,.197),l(.636,.069),l(.313,.38),l(.282,1.016),l(.302,.578),l(.638,.605),l(.293,.663),l(.341,1.382),l(.524,2.809),l(-.295,.438),l(-.235,.495),l(.05,.819),l(-.095,.41),l(.056,.664),l(-.027,.099),l(-.364,.551),l(-.447,.439),l(-.254,.127),l(-.509,.1),l(-.419,.17),l(-.501,.354),l(-.591,.622),l(-.579,.354),l(-.325,.043),l(-.512,-.197),l(-.404,-.31),l(-.179,-.141),l(-.153,.424),l(.051,.494),l(.048,.353),l(-.205,.721),l(-.388,.424),l(-.326,.071),l(-.235,-.07),l(-.246,.481),l(-.427,.326),l(-.523,.142),l(-.417,.213),l(-.459,.565),l(-.196,.269),l(-.406,.297),l(-.264,.099),l(-.365,-.042),l(.078,-.861),l(.1,-1.313),l(.151,-.494),l(.215,-.283),l(-.02,-.353),l(-.475,-.437),l(-.749,-.238),l(-.091,-.066),l(.3,-.289),l(.646,-.229),l(.915,-.528),l(.599,-.229),l(.497,.011),l(.688,.194),l(.17,-.27),l(-.03,-.197),l(-.568,-.435),l(-.216,-.422),l(.234,-.425),l(.99,-.571),l(.521,-.229),l(.932,-.443),l(.599,-.187),l(.385,-.285),l(.217,-.509),l(-.054,-1.073),l(.05,-.424),l(.076,-.367),l(-.455,-1.014),l(-.029,-.663),l(.215,-.905),l(.155,-.918),l(-.064,-.578),l(-.214,-.437),l(-.529,-.477),l(-.072,-.282),l(.226,-.439),l(-.136,-.395),l(-.358,-.308),l(-.685,-.391),l(-.471,-.52),l(-.57,-.914),l(-1.683,-2.121),l(-.698,-.772),l(-.637,-.646),l(-.632,-.476),l(-1.234,-.741),l(-.162,-.098),l(-.043,-.494),l(.277,-.369),l(.311,-.101),l(.476,.068),l(.287,-.058),l(.261,-.185),l(.255,-.326),l(-.009,-.508),l(-.87,-.968),l(-.434,-.675),l(-.262,-.083),l(-.39,.171),l(-.509,.483),l(-.287,.058),l(-.47,-.195),l(-.607,-.434),l(-.334,-.689),l(-.338,-.929),l(-.543,-.604),l(-.613,-.575),l(-.45,-.745), -N(217.961,150.385),l(.304,-.043),l(.84,-.27),l(-.17,-.254),l(-.312,-.112),l(-.369,-.056),l(-.651,.016),l(-.497,-.042),l(-.645,.157),l(-1.193,.92),l(-.371,.029),l(-.653,.001),l(-.211,.113),l(-.189,.452),l(-.396,.284),l(-.32,.043),l(-.786,.086),l(.259,-.325),l(.473,-.312),l(-.128,-.593),l(.282,-.382),l(.114,-.099),l(1.258,-.61),l(1.625,-.47),l(1.164,-.087),l(.842,-.157),l(.825,.041),l(.566,-.044),l(.73,.168),l(.848,.083),l(.603,.197),l(.557,.112),l(.477,.013),l(.499,.268),l(.573,.536),l(.382,.253),l(.581,.168),l(.768,.111),l(1.229,.351),l(1.02,.492),l(.453,.31),l(.374,.55),l(.33,.141),l(.479,.041),l(1.704,.519),l(1.018,.167),l(.327,.239),l(-.344,.58),l(.233,.155),l(.559,.042),l(.756,-.072),l(.495,.168),l(.507,.38),l(.591,.281),l(.381,.296),l(-.233,.085),l(-.981,.087),l(-1.15,.398),l(-.626,.058),l(-1.054,-.209),l(-.9,-.041),l(-.934,.186),l(-.943,.115),l(-.484,.029),l(-.449,-.07),l(.353,-.382),l(.728,-.623),l(.173,-.396),L(229,154.204),l(-.181,-.127),l(-.622,-.14),l(-.7,.001),l(-.603,-.112),l(-.651,-.338),l(-.141,-.748),l(-.258,-.536),l(-.218,-.155),l(-.396,-.027),l(-1.005,.044),l(-.836,-.139),l(-.621,-.225),l(-.956,-.493),l(-.739,-.238),l(-.615,-.069),l(-1.154,-.068),l(-.489,-.098),l(-.855,-.352), -N(634.036,168.444),l(.808,-.64),l(.121,-.438),l(-.002,-.945),l(-.157,-.507),l(-.419,-.703),l(-.979,-1.279),l(-.255,-.464),l(-.107,-.366),l(-.058,-1.524),l(-.435,-.632),l(-.688,-.659),l(-.285,-.535),l(-.052,-.282),l(-.266,-.153),l(-.893,-.192),l(-.403,-.012),l(-.286,.453),l(-.2,.538),l(-.543,.257),l(-.223,.072),l(-.59,-.265),l(-.835,-.348),l(-.346,.03),l(-1.173,1.178),l(-.37,.411),l(-.481,-.138),l(-.145,-.324),l(.027,-.494),l(.117,-.438),l(.528,-1.569),l(.085,-.41),l(-.249,-1.311),l(-.045,-.113),l(-.414,.045),l(-.489,.2),l(-.423,.003),l(-.186,-.154),l(-.066,-.367),l(.106,-.805),l(-.01,-.423),l(-.118,-.168),l(-.295,-.182),l(-.541,-.166),l(.193,-.185),l(.582,-.455),l(.442,-.581),l(.53,-.61),l(.502,-.355),l(.178,.196),l(.321,.21),l(.769,.08),l(.266,-.213),l(.109,-.339),l(-.119,-.521),l(-.228,-.366),l(-.138,-.592),l(.043,-.325),l(.24,-.241),l(.679,-.314),l(.45,.745),l(.613,.575),l(.543,.604),l(.338,.929),l(.334,.689),l(.607,.434),l(.47,.195),l(.287,-.058),l(.509,-.483),l(.39,-.171),l(.262,.083),l(.434,.675),l(.87,.968),l(.009,.508),l(-.255,.326),l(-.261,.185),l(-.287,.058),l(-.476,-.068),l(-.311,.101),l(-.277,.369),l(.043,.494),l(.162,.098),l(1.234,.741),l(.632,.476),l(.637,.646),l(.698,.772),l(1.683,2.121),l(.57,.914),l(.471,.52),l(.685,.391),l(.358,.308),l(.136,.395),l(-.226,.439),l(.072,.282),l(.529,.477),l(.214,.437),l(.064,.578),l(-.155,.918),l(-.209,.114),l(-.975,.429),l(-.3,.072),l(-.373,-.351),l(-.444,-.181),l(-.476,.186),l(-.392,.285),l(.107,.296),l(.187,.182),l(.103,.211),l(-.095,.24),l(-.248,.058),l(-.469,-.251),l(-.341,-.111),l(-.736,-.165),l(-.533,-.251), -N(60.074,72.607),l(-.099,.228),l(-.491,.472),l(-.395,.183),l(-.462,.062),L(58,73.461),l(-.961,-.362),l(-.153,-.197),l(.169,-.289),l(.54,-.274),l(.341,-.32),l(.716,.364),l(.3,.091),l(.465,-.26),l(.215,-.213),l(.064,-.366),l(.485,-.047),l(1.107,.135),l(.536,.334),l(.133,.213),l(-.756,.062),l(-.429,0),l(-.59,.184),l(-.11,.092),M(40.092,77.571),l(-.729,-.029),l(-.097,-.24),l(.011,-.3),l(.802,-.243),l(.326,-.211),l(.593,-.423),l(.448,-.137),l(.646,-.077),l(1.427,.253),l(.711,.24),l(-.079,.211),l(-.303,.046),l(-.754,-.074),l(-.496,.031),l(-1.077,.183),l(-.269,.226),l(-1.161,.543),M(38.426,77.979),l(-.515,-.209),l(-.139,-.285),l(.381,-.227),l(.674,.27),l(.093,.195),l(-.122,.15),l(-.372,.105),M(37.896,78.449),l(-.256,.084),l(-.558,.151),l(-1.109,-.058),l(-.387,.135),l(-.398,.434),l(-.31,.15),l(-.854,-.207),l(-.135,-.224),l(.497,-.359),l(.5,-.315),l(.955,-.166),l(.863,-.346),l(.39,.089),l(.461,.224),l(.341,.409),M(29.628,81.29),l(-.168,-.594),l(-.324,-.476),l(.839,-.136),l(.424,.088),l(.436,.238),l(-.244,.268),l(-.26,.06),l(-.073,.297),l(-.22,.09),l(-.412,.164),M(27.543,81.591),l(-.39,.031),l(-.741,.165),l(-.311,-.133),l(-.088,-.178),l(.104,-.119),l(.336,-.268),l(.294,-.09),l(.584,.222),l(.212,.371),M(54.394,157.986),l(-.559,-.356),l(-.044,-.884),l(-.243,-.677),l(.482,-.402),l(-.035,-.2),l(-.156,-.26),l(.052,-.149),l(.173,-.046),l(.354,.158),l(.652,.279),l(.593,.425),l(-.015,.275),l(.238,.046),l(.12,.287),l(.306,.149),l(-.062,.161),L(56,156.933),l(-.172,.204),l(-.766,.195),l(-.374,.23),l(-.295,.425),M(23.015,59.92),l(-1.613,-.646),l(-.75,-.205),l(-.792,-.062),l(-.9,.065),l(-.291,-.095),l(-.431,-.222),l(.179,-.287),l(.516,-.049),l(1.135,.221),l(.579,-.001),l(.543,-.081),l(.538,-.001),l(.828,.285),l(1.725,.362),l(.429,.237),l(.046,.111),l(-.569,-.03),l(-.646,.033),l(-.527,.365),M(99.855,70.993),l(.467,.929),l(-.071,.167),l(-.879,-.272),l(-.621,-.075),l(.067,.441),l(-.056,.228),l(-.935,-.607),L(97.03,71.41),l(.396,-.458),l(.263,-.153),l(.612,-.078),l(.784,.38),l(.771,-.108),M(100.975,73.606),l(.128,.272),l(-.086,.273),l(-.318,.483),l(-.559,-.815),l(-.597,-.909),l(-.04,-.228),l(.095,-.213),l(.407,.029),l(.568,.197),l(.402,.91),M(106.858,78.207),l(-1.872,-1.166),l(-.566,-.555),l(.01,-.467),l(-.559,-.843),l(.071,-.106),l(.456,.06),l(.274,.256),l(1.165,.48),l(.086,.196),l(-.059,.136),l(-.149,.226),l(.296,.436),l(.839,.374),l(.007,.974),M(140.191,127.819),l(-.043,-.094),l(-.198,-.36),l(-.049,-.067),l(-.032,.042),l(-.028,.05),l(-.04,-.092),l(.002,-.664),l(-.331,-.604),l(-.472,-.451),l(-.661,-.451),l(-.512,-.197),l(-.114,-.052),l(-.145,.034),l(.002,.092),l(-.088,.025),l(-.1,-.042),l(-.146,-.143),l(.076,-.076),l(-.073,-.202),l(-.228,-.252),l(-.283,-.025),l(-.312,.084),l(-.932,-.336),l(-.286,-.328),l(-.428,-.244),l(-.383,.042),l(-.932,-.16),l(-.721,.051),l(-.12,-.185),l(-.234,-.067),l(-.046,-.177),l(.094,-.117),l(-.157,-.504),l(.133,-.464),l(-.227,-.096),l(-.127,.008),l(-.249,-.134),l(0,-.101),l(.075,-.093),l(-.029,-.219),l(-.347,-.185),l(-.254,-.286),l(-.415,-.219),l(-.391,-.623),l(-.202,-.076),l(-.203,-.311),l(-.409,-.219),l(-.156,-.529),l(-.002,-.227),l(.178,.007),l(.147,-.164),l(.029,-.326),l(-.208,-.251),l(-.192,-.045),l(-.22,.037),l(-.303,-.126),l(-.535,-.514),l(.078,-.21),l(-.091,-.312),l(-.129,-.067),l(-.044,-.463),l(.058,-.152),l(.119,-.025),l(.099,.067),l(.073,.076),l(-.086,.101),l(.153,.202),l(.285,.126),l(.116,.118),l(.203,.017),l(-.385,-.564),l(-.183,-.144),l(-.021,-.236),l(-.184,-.109),l(-.051,-.344),l(-.13,.006),l(-.011,.144),l(.048,.446),l(-.093,.017),l(-.293,-.194),l(-.119,.042),l(-.516,-.404),l(-.136,-.363),l(-.377,-.514),l(-.531,-.379),l(-.624,-.583),l(-.123,-.142),l(.114,-.101),l(-.327,-.751),l(.161,-.43),l(-.254,-.479),l(-.22,-.355),l(-.738,-.782),l(-.104,-.299),l(.099,-.627),l(.252,-.628),l(.166,-.357),l(.059,-.856),l(-.215,-.785),l(-.692,-1.486),l(-.153,-.916),l(.096,-.287),l(.231,-.244),l(.402,-.201),l(.365,-.717),l(-.365,-.573),l(-.066,-.33),l(.424,-1.593),l(.153,-.575),l(.061,-.634),l(.091,-.778),l(.019,-.179),l(-.153,-.16),l(.08,-.231),l(-.103,-.167),l(.157,-.077),l(-.03,-.186),l(-.046,-.186),l(-.031,-.103),l(-.004,-.058),l(.322,.096),l(.209,-.019),l(.062,-.097),l(-.211,.006),l(-.614,-.122),l(.062,-.707),l(-.103,-.328),l(.017,-.277),l(.587,-.225),l(-.345,-.019),l(-.16,-.142),l(-.129,0),l(-.053,.045),l(.042,.116),l(-.12,.052),l(-.133,-.979),l(-.927,-1.463),l(-.017,-.465),l(.129,-.131),l(.544,.086),l(.632,.217),l(.785,.114),l(.641,.028),l(.546,-.044),l(.415,.086),l(.547,.318),l(.039,.435),l(-.42,.407),l(-.413,.347),l(.532,.146),l(.184,.188),l(.251,.169),l(.029,-.228),l(.161,-.232),l(.393,-.305),l(.21,-.581),l(.102,-.465),l(-.064,-.421),l(-.356,-.958),l(-.158,-.305),l(-.655,-.516),l(.194,.013),l(2.579,.001),l(1.335,.022),l(4.588,-.025),l(3.938,.008),l(2.87,-.001),l(1.687,.006),l(5.117,-.028),l(.74,.011),l(4.13,.021),l(1.089,-.035),l(3.821,.023),l(.875,-.005),l(3.617,-.004),l(4.84,.018),l(.601,-.003),l(2.935,.014),l(2.131,-.012),l(2.781,.029),l(2.915,-.016),l(2.105,.003),l(1.348,-.007),l(2.798,.029),l(2.687,-.029),l(.68,.003),l(-.387,-.588),l(-.131,-.347),l(.501,-.036),l(.896,.748),l(.279,.371),l(.468,.46),l(.833,.451),l(.518,-.076),l(1.425,.208),l(.02,.185),l(.271,-.012),l(.338,.48),l(.16,-.247),l(.502,.013),l(.241,.271),l(.469,.086),l(.064,.185),l(.506,.098),l(.573,-.141),l(.219,-.06),l(.412,-.191),l(.373,-.075),l(.028,.282),l(.197,.116),l(.855,-.083),l(.474,.041),l(.156,.115),l(.196,.144),l(.542,-.049),l(.707,.074),l(1.469,-.592),l(.805,-.189),l(.797,.227),l(.977,.386),l(3.975,1.576),l(2.15,1.061),l(.101,.429),l(.46,.465),l(.628,-.024),l(.178,.135),l(.184,.294),l(.916,.181),l(.307,.235),l(-.11,.318),l(.26,.33),l(2.529,1.05),l(.876,3.16),l(.054,.545),l(-.028,.746),l(-.377,.576),l(-.294,.544),l(-.264,.433),l(-.414,.294),l(-.707,.525),l(-.044,.218),l(.012,.33),l(.371,.427),l(.497,.169),l(.573,.068),l(.524,-.117),l(.925,-.506),l(.939,-.478),l(.88,-.262),l(.919,-.062),l(.944,-.163),l(1.464,-.452),l(.875,-.427),l(-.047,-.362),l(-.16,-.471),l(-.018,-.319),l(.162,-.375),l(.47,-.203),l(.93,-.091),l(1.123,.01),l(1.305,.138),l(1.156,-.197),l(.44,-.275),l(.163,-.512),l(.146,-.434),l(.545,-.164),l(1.754,-.814),l(.534,-.305),l(.968,-.523),l(1.76,-.009),l(2.508,.029),l(1.855,.004),l(1.093,.095),l(.174,-.375),l(.363,-.435),l(.402,-.06),l(1.161,.124),l(1.139,-1.45),l(1.139,-2.22),l(.514,-.626),l(.632,-.526),l(.273,.085),l(.505,.36),l(.381,.085),l(.41,-.176),l(.771,.025),l(.488,.288),l(.174,.274),l(.31,2.819),l(-.077,.229),l(.606,.231),l(.224,0),l(.042,.154),l(-.143,.069),l(.02,.256),l(-.192,.077),l(.16,.291),l(.188,-.153),l(.349,.495),l(-.268,.281),l(.299,-.04),l(.171,.093),l(-.511,.374),l(-.509,.093),l(-.297,-.12),l(-.013,.253),l(-.138,.067),l(-.077,-.107),l(-.231,-.08),l(-.277,.133),l(-.101,.28),l(-.171,-.013),l(-.15,.16),l(-.175,-.347),l(-.746,.28),l(-.204,-.093),l(.12,.413),l(-.666,-.213),l(.199,-.48),l(-.149,-.04),l(-.364,.52),l(-.332,.56),l(-.342,.333),l(-.324,-.227),l(-.249,.439),l(-.346,-.08),l(.122,-.307),l(-.325,.253),l(.165,.16),l(-.326,.293),l(-.318,-.133),l(.105,-.226),l(-.654,.253),l(.065,.359),l(-.264,.04),l(-.161,.373),l(-.352,.106),l(-.333,.679),l(-.404,.505),l(.173,.146),l(.068,.212),l(.168,.053),l(.083,-.08),l(.169,.013),l(-.122,.146),l(-.547,.106),l(.053,.093),l(-.392,.292),l(-.068,.159),l(.337,.027),l(.282,.093),l(.599,.704),l(.055,.398),l(.399,.106),l(.691,-.239),l(-.022,-.186),l(-.14,-.027),l(-.254,-.279),l(-.097,-.04),l(-.009,-.066),l(.196,0),l(.23,.133),l(.218,.358),l(.031,.425),l(-1.599,.292),l(-.032,-.385),l(-.124,-.066),l(-.109,.226),l(-.164,.04),l(-.03,.093),l(-.105,-.106),l(-.159,.266),l(-.164,.04),l(-.294,.04),l(-.045,-.332),l(.198,-.332),l(-.443,.119),l(-.154,-.146),l(-.082,.252),l(-.087,.664),l(-1.429,.132),l(-1.694,.159),l(-1.182,.345),l(-.787,.358),l(-.097,.212),l(-.32,.053),l(-.144,.172),l(-.032,-.04),l(.308,-.756),l(.024,-.106),l(-.071,.027),l(-.41,.994),l(-.079,-.08),l(-.406,.292),l(.218,.318),l(.553,.093),l(-.46,1.515),l(-.302,.429),l(-.259,-.092),l(.043,.251),l(-.062,.185),l(-.237,.145),l(-.462,.501),l(-.292,.304),l(-.167,.026),l(-.075,-.119),l(.177,-.31),l(-.113,-.178),l(-.43,.013),l(-.447,-.343),l(-.148,-.053),l(-.329,-.541),l(.315,-.257),l(.151,-.245),l(-.271,.119),l(-.362,.37),l(.489,.845),l(.033,.356),l(.387,.581),l(.28,.066),l(.104,.765),l(-.101,.238),l(-.151,.23),l(-.125,-.013),l(-.487,.666),l(-.396,.798),l(.034,.053),l(-.13,.132),l(-.107,-.125),l(-.374,.725),l(.026,.125),l(-.226,.04),l(-.137,-.263),l(.342,-.864),l(.195,-.29),l(.247,-.119),l(.061,-.237),l(-.093,-.059),l(-.374,.119),l(.226,-.383),l(-.218,.04),l(-.176,-.093),l(.012,-.191),l(.242,-.04),l(-.077,-.33),l(-.439,.296),l(-.241,-.204),l(-.157,.053),l(-.23,-.396),l(.355,-.171),l(.357,-.053),l(-.005,-.06),l(-.604,-.316),l(-.092,.165),l(-.072,0),l(.107,-.323),l(.089,-.02),l(.21,.159),l(.131,-.06),l(-.098,-.224),l(-.353,-.066),l(-.065,-.112),l(.096,-.112),l(.336,.02),l(.193,-.284),l(-.281,.046),l(-.158,-.059),l(.241,-.37),l(.652,-.152),l(-.328,-.06),l(.146,-.409),l(-.28,.093),l(-.096,.132),l(.11,.079),l(-.315,.191),l(-.035,-.224),l(-.093,.053),l(.051,.224),l(-.081,.086),l(-.051,-.158),l(-.097,-.066),l(-.103,.416),l(-.447,-.079),l(.402,.501),l(-.294,.666),l(.07,.237),l(.272,.488),l(-.055,.139),l(-.466,-.317),l(-.1,-.211),l(.026,.205),l(.174,.218),l(.421,.237),l(.132,.508),l(-.631,-.402),l(-.354,-.007),l(-.118,-.283),l(-.155,-.053),l(.066,.25),l(-.541,-.323),l(-.33,.04),l(.015,-.29),l(.427,-.323),l(-.428,.079),l(-.19,.468),l(.204,.231),l(.457,.046),l(.202,.25),l(.954,.297),l(-.047,.092),l(.554,.165),l(.158,.132),l(-.22,.468),l(-.227,.06),l(-1.042,-.804),l(.708,.811),l(.626,.171),l(-.248,.092),l(.323,.079),l(-.045,.079),l(.061,.06),l(-.034,.25),l(-.312,-.191),l(-.071,.073),l(.104,.211),l(-.216,.02),l(-.656,-.56),l(-.023,.026),l(.419,.475),l(.309,.158),l(.182,-.026),l(.191,.21),l(.018,.31),l(-.298,.059),l(-.492,-.534),l(-.474,-.198),l(-.199,.16),l(.046,.044),l(.44,.145),l(.488,.382),l(-.047,.237),l(.442,-.033),l(.031,-.119),l(.748,.119),l(.151,.382),l(.406,1.212),l(.448,.803),l(-.14,-.092),l(-.262,-.349),l(-.059,-.132),l(-.359,-1.172),l(-.147,-.277),l(-.056,.31),l(.135,0),l(.034,.198),l(-.292,-.066),l(.173,.283),l(.144,.099),l(.228,.58),l(-.144,-.053),l(-.211,-.382),l(.002,.224),l(-.52,-.303),l(-.06,.059),l(.266,.303),l(-.247,.119),l(-.526,-.204),l(.225,.204),l(-.375,.211),l(-.173,-.02),l(-.251,-.21),l(-.024,-.217),l(.083,-.158),l(-.081,-.053),l(-.091,.204),l(.044,.23),l(.116,.211),l(-.107,.158),l(.894,.02),l(.571,-.145),l(.125,.165),l(-.113,.191),l(-.072,.369),l(.14,.066),l(.092,-.257),l(.135,-.369),l(.18,-.105),l(.266,.31),l(.047,.296),l(-.166,.25),l(-.163,-.013),l(-.063,-.099),l(-.316,.474),l(-.254,.197),l(-.483,-.053),l(-.203,-.065),l(-.147,-.066),l(-.136,-.245),l(-.151,.014),l(.141,.244),l(-.075,.013),l(-.538,-.125),l(-.436,-.151),l(.162,.185),l(.269,.026),l(.833,.335),l(-.034,.119),l(-.396,.145),l(.247,.007),l(-.19,.25),l(-.281,.138),l(-.149,0),l(-.481,-.375),l(.242,.395),l(.43,.164),l(.302,-.171),l(.292,.026),l(.11,-.204),l(.04,.178),l(.217,.04),l(.048,.079),l(-.428,.322),l(-.013,.085),l(-.261,.072),l(-1.498,.214),l(-.865,.895),l(-.487,.609),l(-.13,.127),l(-.935,.143),l(-.528,.128),l(-.617,.241),l(-.678,.539),l(-.225,.424),l(-.096,.354),l(-.819,.694),l(-.693,.383),l(-.429,.199),l(-.797,.086),l(-.35,.58),l(-.177,.198),l(-.809,1.125),l(-.273,.781),l(-.459,1.249),l(.236,1.455),l(.387,.925),l(.456,.873),l(.934,1.562),l(.352,1.746),l(.486,1.194),l(-.075,.092),l(.287,.276),l(.123,.333),l(.062,.827),l(-.301,1.536),l(-.064,.278),l(-.31,.415),l(.108,.424),l(-.02,.252),l(-.393,.551),l(-.017,-.092),l(.129,-.241),l(-.025,-.138),l(-.256,.035),l(-.38,.137),l(-.291,-.126),l(-.509,.138),l(-.12,-.329),l(.014,-.233),l(-.567,-1.068),l(-.764,-.138),l(-.204,-.352),l(-.113,-.819),l(-.423,-.229),l(-.144,-.702),l(-.373,.093),l(-.608,-1.08),l(-.375,-.482),l(.296,0),l(.375,-.438),l(.048,-.226),l(-.167,-.226),l(-.471,.407),l(-.277,-.208),l(.126,-.573),l(.147,-.758),l(.158,-1.043),l(-.293,-.452),l(-.258,-.169),l(-.496,-.126),l(-.832,-.987),l(-.875,-.804),l(-.528,-.168),l(-.43,.072),l(-.536,.298),l(-.456,.354),l(-1.202,.299),l(-.273,-.213),l(-.131,-.62),l(-.253,-.254),l(-.264,-.113),l(-.752,-.069),l(-.516,-.296),l(-.22,-.233),l(-.504,.138),l(-1.052,.115),l(-.653,-.184),l(-.047,.298),l(-.64,.099),l(-.183,0),l(-.578,-.926),l(-.238,.781),l(-.447,-.135),l(-.65,.001),l(-1.328,-.04),l(-.672,.439),l(-.39,.055),l(-1,-.459),l(-.096,.009),l(-.142,.014),l(-.362,.528),l(.201,.229),l(.303,0),l(.211,0),l(.537,-.207),l(.406,.092),l(.676,.482),l(-.68,.373),l(.02,.254),l(.263,.353),l(.593,.146),l(.229,.217),l(.35,.334),l(-.533,.136),l(-.503,-.084),l(-.276,-.419),l(-.79,-.271),l(-.224,-.211),l(-.265,-.056),l(-.013,.02),l(-.209,.32),l(.209,.154),l(.248,.183),l(-.248,.179),l(-.069,.05),l(-.447,-.459),l(-.476,.192),l(-.287,.291),l(-1.025,-.472),l(-.419,-.494),l(-1.16,-.642),l(-.615,.066),l(.554,.393),l(-.307,.187),l(-1.17,-.083),l(-.886,-.252),l(-.896,-.168),l(-1.547,.173),l(-.632,.328),l(-.392,-.015),l(-.433,-.031),l(-.135,-.49),l(-.333,.057),l(-.112,.184),l(.474,.731),l(-.877,.64),l(-.808,.577),l(-.915,.317),l(-.419,.043),l(-.414,-.056),l(-.728,-.111),l(-.126,.198),l(.437,.437),l(-.239,.396),l(-.327,.199),l(-.631,.114),l(-.737,.27),l(-.268,.17),l(.558,.352),l(.111,.169),l(-.659,.694),l(-.154,.297),l(-.012,.848),l(.144,.636),l(.271,.762),l(.425,.903),l(-.347,-.119),l(-.816,-.377),l(-.296,.001),l(-.416,.116),l(-.264,-.069),l(-1.029,-.56),l(-.921,-.32),l(-.375,-.365),l(-.336,-.592),l(-.332,-.932),l(-.078,-.467),l(-.268,-.253),l(-.657,-.576),l(-.845,-1.042),l(-.744,-1.227),l(-.663,-1.029),l(-.363,-.366),l(-.412,-.252),l(-.783,-.321),l(-.475,-.082),l(-.643,.018),l(-.468,.201),l(-.576,.541),l(-.418,.413),l(-.283,.37),l(-.416,.158),l(-.501,-.011),l(-.337,-.069),l(-1.104,-.503),l(-1.092,-.659),l(-.445,-.549),l(-.318,-.847),l(-.284,-.678),l(-.179,-.226),l(-.708,-.491),l(-.837,-.519),l(-.766,-.632),l(-.631,-.662),l(-.209,-.112),l(-1.892,-.046),l(-1.858,-.003),l(-.096,.892),l(-.213,.101),l(-1.867,.011),l(-.966,-.037),l(-1.544,-.02),l(-1.662,-.019),l(-.338,-.055),l(-3.516,-1.112),l(-2.811,-.933),l(-1.186,-.39),l(-.267,-.154),l(-.316,-.31),l(-2.381,.084),l(-2.367,.155),l(-.34,.017),M(49.818,152.776),l(-.122,.086),l(-.279,.03),l(-.111,-.131),l(-.177,-.005),l(-.324,.051),l(-.304,-.39),l(-.071,-.263),l(.339,-.01),l(.299,-.253),l(.188,.218),l(.106,.294),l(.223,.096),l(.233,.279),M(52.785,154.312),l(-.155,-.081),l(-.085,-.356),l(-.461,-.321),l(.095,-.229),l(.143,-.058),l(.366,.209),l(.344,.055),l(.616,.356),l(-.005,.172),l(-.294,.184),l(-.563,.069),M(111.683,77.224),l(-.138,.415),l(-.45,.067),l(-.324,.113),l(-.295,.247),l(-.321,-.137),l(-.185,-.21),l(.087,-.443),l(.086,-.443),l(-.438,-.675),l(-.463,-.319),l(-.199,-.271),l(-1.281,.055),l(-.437,.098),l(-.153,.161),l(-.496,.097),l(-.019,-.193),l(-.034,-.432),l(.212,-.272),l(.184,-.212),l(-.378,-.347),l(-.641,-.438),l(-.693,-.696),l(-.723,-.317),l(-.453,-.136),l(.132,-.35),l(-.569,-.592),l(-.099,-.213),l(.371,-.229),l(-.068,-.122),l(-.301,-.152),l(-.445,-.076),l(-.392,-.274),l(-.237,-.259),l(-.57,-.305),l(-1,-.411),l(-.479,-.765),l(-.217,-.583),l(-.367,-.399),l(-.357,.016),l(-.101,.814),l(.42,.873),l(.104,.306),l(-.047,.153),l(-.701,-.136),l(-.272,-.076),l(-.511,-.504),l(-.4,-.459),l(-.537,.139),l(-1.219,-.228),l(1.263,.718),l(.032,.214),l(-1.62,.171),l(-1.093,-.35),l(-1.388,-.948),l(-.543,-.292),l(-.664,-.043),l(-.079,0),l(-.933,-.213),l(-1.3,-.536),l(.928,-.248),l(.135,-.169),L(90.8,67.129),l(-.384,-.153),l(-.792,.156),l(-.454,.14),l(-.656,.017),l(-1.058,-.06),l(-1.068,-.245),l(.027,-.247),l(-.148,-.186),l(-.325,-.108),l(-.359,.016),l(-.47,.202),l(-1.036,.049),l(-1.465,-.122),L(80.46,66.64),l(-.786,-.091),l(-.248,-.108),l(-.651,-.387),l(-.427,-.527),l(-.301,.218),l(-.788,.157),l(-.89,-.293),l(-.234,-.326),l(-.417,-.139),l(-.872,-.248),l(-1.538,-.23),l(-.817,-.248),l(-.671,-.342),l(-.553,.235),l(-.675,.079),l(.06,.437),l(-.193,.062),l(-.389,.25),l(-.249,.405),l(1.119,.293),l(.174,.294),l(-.096,.388),l(-.428,.449),l(-.458,.001),l(-.804,-.214),l(-.586,-.061),l(-.568,.094),l(-.978,.603),l(-1.066,.217),l(-.936,.448),l(-1.035,.448),l(-1.095,.109),l(.178,-.308),l(.063,-.123),l(.72,-.401),l(-.093,-.385),l(-.655,-.523),l(.004,-.108),L(64.1,66.19),l(.411,-.482),l(.157,-.42),l(.736,-.312),l(.87,-.235),l(1.165,-.018),l(1.085,.123),l(.239,-.156),l(-1.239,-.466),l(-.971,-.389),l(-1.043,.049),l(-.226,.219),l(-.449,.095),l(-.573,.438),l(-.865,.375),l(-1.019,.282),L(61.553,65.9),l(-.406,.094),l(-.298,.14),l(.131,.325),l(-.177,.526),l(-.563,.34),l(-.564,.078),L(59,67.544),l(-.592,.278),l(-.681,.601),l(-.035,.292),l(.38,.168),l(.36,.03),l(.667,.106),l(.465,.229),l(-.075,.184),l(-.43,.338),l(-.625,.2),l(-.557,.277),l(-.423,.398),l(-.544,.383),l(-.675,.093),l(-1.434,.308),l(-.678,.397),l(-1.036,.337),l(-.7,.367),l(.52,.5),l(-.1,.167),l(-1.106,.412),l(-.897,.153),l(-.778,.168),L(49.51,74.19),l(-1.214,.456),L(48.1,74.828),l(-.274,.394),l(-.753,.439),l(-1.193,.229),l(-1.234,.184),l(-.973,-.345),l(.001,-.181),l(.332,-.348),l(.763,-.273),l(.306,-.212),l(.445,-.364),l(1.171,-.441),l(1.403,.073),l(-.12,-.212),l(.02,-.516),l(.47,-.304),l(.725,-.291),l(.754,-.366),l(.266,-.214),l(.002,-.731),l(.246,-.749),l(.693,-.49),l(.194,-.398),l(.034,-.412),l(-.633,.122),l(-1.251,.186),l(-.676,-.029),l(-.5,-.597),l(-.266,.062),l(-.613,.216),l(-.136,.23),l(.239,.352),l(.021,.352),l(-.169,.046),L(47,70.115),l(-.567,-.32),l(-.487,-.397),l(-.509,-.291),l(-.56,-.03),l(-.812,-.106),l(-.91,.094),l(.028,.138),l(-.644,.338),l(-1.175,.14),l(-.649,-.09),l(-.064,-.123),l(-.082,-.107),l(-.125,-1.028),l(.3,-.508),l(-.142,-.431),l(-.864,-1.002),l(-1.43,.437),l(-.738,.078),l(-.406,.202),l(-1.091,.094),l(-.4,-.23),l(-.394,-.355),l(-.466,-.325),l(-1.007,-.463),l(-.179,-.28),l(.292,-.171),l(.337,-.437),l(.704,.139),l(1.312,.309),l(.69,.03),l(.238,-.234),l(-.375,-.482),l(-.458,-.264),l(-.363,0),l(-.541,.22),l(-.528,-.015),l(-1.342,-.513),l(-.623,-.186),l(-.197,.016),l(-.858,-.029),l(-.024,-.078),l(-.623,-.985),l(.79,-.19),l(.071,-.456),l(.495,-.221),l(.102,-.299),l(.227,-.347),l(.893,-.491),l(.337,-.38),l(.386,-.301),l(.527,-.476),l(.39,-.175),l(.719,.109),l(.98,.268),l(.485,.094),l(.752,-.144),l(.427,-.254),l(.675,-.429),l(1.252,-.257),l(.774,-.033),l(.955,-.049),l(.354,-.175),l(.187,-.478),l(-.259,-.669),l(-.814,-.686),l(.026,-.096),l(.927,-.034),l(.343,-.256),l(-.25,-.384),l(-.497,-.256),l(-.367,-.08),l(-1.88,.389),L(39.33,56.53),l(-.534,.289),l(-.496,.065),l(-1.907,-.333),l(-.848,-.031),L(34.8,56.49),l(-1.27,.162),l(-1.265,-.029),l(-1.349,-.174),l(-.53,-.207),l(-.183,-.788),l(.144,-.146),l(.636,-.033),l(1.008,-.002),l(.446,-.179),l(-1.057,-.241),l(-1.912,-.304),L(28.13,54.31),l(-1.285,-.208),l(.219,-.114),l(.781,-.262),l(1.568,-.214),l(1.325,-.328),l(.958,-.214),l(1.058,-.361),l(.953,-.23),l(1.399,-.281),l(1.513,.128),l(-.158,.523),l(.023,.277),l(1.051,.161),l(1.359,.095),l(1.074,-.019),l(.657,-.099),l(.784,-.246),l(.55,-.295),l(.262,-.083),l(.752,.064),l(.751,.113),l(1.021,-.051),l(.2,-.327),l(.007,-.18),l(-.689,-.064),l(-1.946,-.292),l(-1.283,-.047),l(-.312,-.755),l(-1.473,-.162),l(-.96,-.031),l(-1.573,-.096),l(-.194,-.511),l(-.484,-.312),l(-1.042,-.461),l(-.512,-.148),l(-2.66,-.659),l(-2.008,-.545),l(.317,-.167),l(.812,-.402),l(.086,-.485),l(2.136,-.054),l(.99,-.069),l(1.829,-.288),l(.784,-.354),l(.452,-.623),l(.788,-.575),l(.616,-.525),l(.818,-.41),l(.742,-.224),l(1.066,-.104),l(1.133,-.241),l(1.047,-.036),l(1.804,.065),l(.146,-.188),l(-.156,-.205),L(44.47,42.83),l(.018,-.206),l(1.936,-.089),l(1.143,.032),l(.974,-.054),l(1.344,-.14),l(1.098,-.416),l(.918,-.417),l(.957,-.019),l(.282,.051),l(.675,.241),l(.156,.172),l(-.383,.139),l(.017,.344),l(1.049,.136),l(.424,.034),l(.536,-.293),l(.297,-.208),l(1.419,.187),l(1.534,.049),l(1.062,.049),l(.715,.033),l(.711,.257),l(.359,.274),l(.783,.358),l(.494,.085),l(.421,-.086),l(1.292,.117),l(1.124,.015),l(1.556,-.054),l(1.449,-.088),l(1.213,.1),l(1.377,.254),l(.883,.118),l(3.424,.13),l(1.279,.168),l(.743,.169),l(2.027,-.038),l(2.339,-.141),l(1.123,.236),l(2.441,.791),l(1.206,.301),l(.227,.008),l(.102,.483),l(-.003,2.855),l(.039,2.259),l(.052,2.335),l(.129,2.796),l(-.026,2.183),l(-.043,4.334),l(.026,2.167),l(.089,1.046),l(.196,.279),l(.84,.074),l(2.424,-.122),l(.739,.059),l(.332,.388),l(.173,.387),l(.348,.292),l(2.162,1.318),l(.945,.673),l(.238,-.325),l(.848,-.205),l(1.225,-.67),l(.731,-.498),l(.495,-.126),l(.832,.073),l(.316,.199),l(.371,.492),l(.35,.322),l(2.048,1.175),l(.814,.58),l(1.769,1.768),l(1.67,1.882),l(.512,.393),l(.189,.029),l(.98,.314),l(2.025,.763),l(.402,.255),l(-.163,.788),l(.393,.777), -N(643.755,159.873),l(-1.092,-.52),l(-.637,-.337),l(-.203,-1.284),l(.036,-.282),l(.24,-.241),l(.42,-.241),l(.721,-.623),l(.493,.056),l(.049,-.17),l(.24,-.396),l(.239,.028),l(.573,.225),l(.321,-.312),l(.439,-.001),l(.798,-.171),l(.596,.69),l(-.163,.17),l(-.443,.354),l(-.412,.538),l(-.285,.734),l(.14,.296),l(-.22,.311),l(-.292,.085),l(-1.026,.383),l(-.532,.707),M(627.173,150.012),l(-.679,.314),l(-.24,.241),l(-.043,.325),l(.138,.592),l(.228,.366),l(.119,.521),l(-.109,.339),l(-.266,.213),l(-.769,-.08),l(-.321,-.21),l(-.178,-.196),l(-.153,-.239),l(-.111,-.38),l(-.628,.413),l(-.647,.159),l(-.246,-.083),l(-.378,-.266),l(-.341,-.746),l(-.291,-.379),l(-.481,.045),l(-.507,.003),l(-.228,-.098),l(-.117,-.352),l(.729,-1.584),l(-.033,-.268),l(-.521,-.096),l(-.554,.074),l(-.202,-.324),l(-.277,-1.762),l(-.156,-.126),l(-.479,.017),l(-.771,.089),l(-.819,.442),l(-.312,.086),l(-.216,-.069),l(0,-.268),l(.224,-.58),l(-.163,-.705),l(-.075,-.465),l(.617,-.85),l(.191,-.198),l(.487,-.271),l(.611,-.525),l(.429,-.722),l(.353,-.862),l(-.02,-.875),l(-.195,-1.649),l(-.146,-.14),l(-.504,.031),l(-.287,-.041),l(-.217,-.309),l(-.243,-.901),l(-.397,-.435),l(-.504,-.279),l(-.277,.044),l(-.306,.34),l(-.001,.127),l(-.624,-.081),l(-.73,-.179),l(-.657,-.081),l(-.3,-.055),l(-.102,-.056),l(.138,-.269),l(.354,-.454),l(-.046,-.38),l(-.716,-.715),l(-.455,-.392),l(-1.377,.84),l(-.377,.044),l(-.975,-.319),l(-.286,-.167),l(-.355,.087),l(-.546,.299),l(-1.105,.726),l(-.829,.258),l(-.543,.37),l(-1.123,1.107),l(-.397,.27),l(-.714,.216),l(-.784,.033),l(-.189,.1),l(-.329,-.619),l(-.312,-.209),l(-.371,-.041),l(-1.659,-.047),L(601,137.538),l(-.309,-.294),l(-.417,.016),l(-.149,.103),l(-.348,.239),l(-.609,.539),l(-1.251,1.545),l(-.212,-.662),l(.052,-.861),l(-.139,-.183),l(-.231,-.069),l(-.471,.102),l(-.345,.129),l(-.655,-.159),l(-.339,.281),l(-.341,-.116),l(-.849,.066),l(-.319,-.364),l(-.63,-.281),l(-.407,0),l(-.08,.331),l(-.271,.083),l(-.685,-.38),l(.01,.364),l(-.237,.099),l(-.141,-.463),l(-.54,-.496),l(-.365,.066),l(-.935,-.066),l(-.014,-.265),l(.175,-.396),l(-.326,-.017),l(-.333,.248),l(-1.451,-.893),l(.069,-.281),l(-.178,-.38),l(-.289,-.166),l(-.71,.116),l(-.158,.166),l(-.657,-.794),l(-.454,-.281),l(-.15,.132),l(-.472,-.215),l(-.726,-.595),l(-.867,-.264),l(-.132,-.612),l(-1.079,-.199),l(-.186,.182),l(-.275,-.066),l(-.134,.513),l(-.276,.314),l(-.299,-.05),l(-.24,-.43),l(-.859,-.596),l(-.154,.066),l(-.756,-.248),l(.116,-.364),l(-1.078,-.579),l(-.363,.116),l(-.772,-.843),l(-.383,-.248),l(-.477,.314),l(-.198,-.066),l(-.099,-.43),l(.215,-.215),l(-.272,-.364),l(.104,-.446),l(-.579,-.595),l(-.157,-.694),l(.785,-.198),l(.033,.364),l(.337,.264),l(.368,-.049),l(.376,-.281),l(.578,-.364),l(-.367,-.694),l(.104,-.414),l(-.68,-.099),l(-.044,-.182),l(-.092,-.078),l(-.718,-.096),l(-.294,-.221),l(-.037,-.552),l(-.073,-.589),l(.184,-.184),l(.331,-.221),l(-.221,-.258),l(-.441,-.405),l(-.81,-.11),l(-.221,-.515),l(-.441,-1.03),l(0,-.515),l(-.502,.152),l(-.147,-.126),l(-.305,-.111),l(-1.337,-.104),l(-.565,-.436),l(-.178,-.09),l(-.104,-.199),l(-.239,0),l(-.52,.196),l(-.252,-.281),l(-.198,-.218),l(-.301,-.07),l(.312,-.516),l(-.007,-.501),l(-.213,-.247),l(-.373,-.323),l(-.625,.009),l(-.282,.128),l(-.004,-.456),l(-.554,-.117),l(-.296,-.047),l(-.281,.21),l(-.105,-.112),l(-.313,-.14),l(-.048,-.088),l(-.236,-.012),l(-.01,-.269),l(.574,.059),l(.192,-.145),l(.354,-.136),l(.08,-.249),l(.181,-.185),l(-.2,-.163),l(.152,-.36),l(-.245,-.237),l(.126,-.428),l(-.049,-.123),l(-.152,-.012),l(-.028,-.246),l(.009,-.284),l(-.295,-.494),l(-.273,-.154),l(-.692,-.039),l(-.22,-.06),l(-.229,.162),l(-.463,.045),l(-.325,-.394),l(-.077,-.305),l(.207,-.223),l(-.023,-1.031),l(.011,-.069),l(.139,-.739),l(.129,-.213),l(.274,-.186),l(1.422,-.704),l(1.737,-.734),l(.359,-.03),l(.06,.071),l(.183,.567),l(.344,.055),l(.507,-.145),l(.885,-.132),l(.268,-.243),l(.463,-.784),l(.467,-.472),l(.238,-.03),l(1.248,.235),l(.459,-.017),l(.478,-.102),l(.646,-.345),l(.638,-.701),l(.405,-.301),l(.445,-.145),l(1.338,-.349),l(.97,-.219),l(.325,-.187),l(.051,-.157),l(-.031,-.194),l(-.139,-.86),l(.02,-.399),l(.32,-.401),l(.705,-.546),l(.222,-.33),l(-.119,-.47),l(-.29,-.441),l(-.345,-.627),l(-.03,-1.357),l(-.483,-.141),l(-.366,.06),l(-.232,-.185),l(.068,-.215),l(.215,-.302),l(.393,-.188),l(1.799,-.254),l(1.082,-.207),l(.35,-.06),l(.5,.184),l(1.133,.238),l(.394,-.074),l(.231,-.145),l(.156,-.245),l(-.126,-.286),l(-.622,-.514),l(.137,-.418),l(.286,-.605),l(.438,-.794),l(.516,-1.141),l(.427,-.507),l(1.096,.254),l(.721,.141),l(.594,.141),l(1.402,.079),l(.718,-.062),l(.417,-.103),l(.444,-.392),l(.157,-.39),l(-.213,-.707),l(-.097,-.75),l(.34,-.581),l(.428,-.277),l(1.199,-.093),l(.289,-.06),l(.306,-.219),l(.035,-.478),l(.011,-.275),l(.279,-.262),l(.542,-.148),l(.551,-.034),l(.228,-.014),l(.569,-.003),l(.244,-.074),l(.062,.145),l(.131,.405),l(.24,.563),l(.371,.433),l(1.301,.745),l(.834,.415),l(.614,.069),l(.731,.167),l(.633,.144),l(.354,.143),l(.568,.618),l(1.07,1.451),l(.401,.66),l(-.215,.447),l(-.237,.75),l(-.214,.389),l(-.369,.347),l(-.035,.129),l(.105,.43),l(.233,.229),l(.724,.312),l(1.062,.181),l(1.505,.021),l(.995,.038),l(.668,.083),l(.998,.224),l(.632,.268),l(1.645,.806),l(.839,.31),l(.744,.096),l(.105,.542),l(1.571,2.161),l(.467,.439),l(.444,.254),l(1.979,.018),l(1.241,.207),l(.802,.109),l(1.165,.022),l(2.861,-.059),l(.937,.023),l(1.164,.022),l(1.69,.119),l(.521,.168),l(.815,.551),l(1.006,.365),l(1.599,.433),l(.929,.123),l(.663,-.061),l(.61,.067),l(.253,.297),l(.433,.197),l(.481,-.017),l(.686,-.289),l(1.44,-.534),l(.303,-.101),l(.736,-.274),l(.816,-.289),l(1.204,-.349),l(1.339,-.007),l(1.514,-.065),l(.987,.08),l(.651,-.061),l(1.941,-.737),l(.265,-.172),l(1.111,-1.046),l(.67,-.389),l(1.265,-.292),l(.326,-.259),l(.123,-.271),l(-.188,-.228),l(-.599,-.411),l(-.389,-.569),l(-.003,-.343),l(.214,-.401),l(.539,-.589),l(.457,-.231),l(.316,-.073),l(.718,.154),l(.668,.382),l(.592,.125),l(.982,-.005),l(.744,-.047),l(.742,-.433),l(1.192,-.91),l(.224,.013),l(.438,.012),l(.624,.054),l(.896,-.134),l(.638,-.248),l(.347,-.188),l(.241,-.216),l(.312,-.82),l(.363,-.333),l(.47,-.204),l(.464,-.045),l(.483,.127),l(.353,-.189),l(.831,-.278),l(.539,-.146),l(.937,-.221),l(.854,-.033),l(.432,.099),l(1.074,.008),l(.464,.127),l(.414,-.218),l(.107,-.217),l(-.048,-.273),l(-.599,-.501),l(-.879,-.99),l(-.797,-.5),l(-.538,-.199),l(-.928,-.212),l(-.438,.002),l(-1.191,.786),l(-.292,-.07),l(-.431,-.416),l(-.317,-.085),l(-.576,.018),l(-.754,.062),l(-.929,.395),l(-.342,.045),l(-.051,-.029),l(-.269,-.836),l(.381,-.58),l(1.224,-1.959),l(.687,-1.207),l(.295,-.31),l(.046,.018),l(.452,.172),l(1.126,.574),l(.343,-.016),l(.438,-.089),l(2.44,-.752),l(.779,-.339),l(.123,-.233),l(-.056,-.306),l(-.35,-.348),l(-.062,-.146),l(.103,-.249),l(.422,-.426),l(.416,-.543),l(.667,-.779),l(.599,-.545),l(1.371,-.608),l(.167,-.794),l(-.107,-.249),l(-.465,-.306),l(-.558,-.026),l(-.822,.078),l(.119,-.25),l(.375,-.282),l(1.193,-.787),l(.478,-.165),l(.602,-.136),l(1.854,-.143),l(.836,-.123),l(1.203,-.109),l(.917,-.049),l(1.148,.215),l(1.037,.481),l(.683,.188),l(1.386,-.125),l(.539,.026),l(.763,.467),l(.742,.952),l(1.087,2.384),l(.94,1.588),l(.927,1.903),l(.436,.389),l(.507,.2),l(1.247,.341),l(1.523,.253),l(2.659,.839),l(.205,.144),l(.297,.866),l(.44,1.283),l(.261,.446),l(.68,-.033),l(.649,-.018),l(1.657,-.052),l(.604,-.22),l(.953,-.308),l(1.357,-.31),l(1.181,-.208),l(.902,-.034),l(.246,.114),l(.064,.259),l(.116,.389),l(.017,.504),l(-.566,.407),l(-.66,.393),l(-.291,.707),l(-.278,.893),l(-.538,1.066),l(-.627,1.08),l(-.329,.432),l(-.551,.69),l(-.47,.347),l(-.547,-.098),l(-.679,-.225),l(-.685,-.24),l(-.396,-.041),l(-1.664,.982),l(-.048,.557),l(.332,.897),l(.062,.656),l(-.006,.613),l(-.025,.385),l(-.097,.128),l(.112,.299),l(-.156,.329),l(-.511,.43),l(-1.252,.462),l(-.111,.058),l(-.579,-.68),l(-.247,.001),l(-.253,.129),l(-.383,.358),l(-.23,.713),l(-.955,.532),l(-.62,.259),l(-.538,.017),l(-.452,-.054),l(-.333,-.126),l(-.392,.059),l(-.273,.243),l(-.025,.342),l(.508,.765),l(.046,.113),l(-.527,.159),l(-.975,.048),l(-.508,-.153),l(-.493,-.253),l(-.273,-.396),l(-.448,.017),l(-.386,.13),l(-.686,1.027),l(-.636,.543),l(-1.032,.545),l(-1.533,.604),l(-.52,.329),l(-.415,.442),l(-.379,.528),l(-.066,-.092),l(-.417,.171),l(-1.222,.13),l(-.728,.171),l(-2.248,.925),l(-.632,.37),l(-.566,.469),l(-.604,.271),l(-.336,.015),l(.13,-.255),l(.862,-.682),l(.33,-.354),l(-.47,-.113),l(-.37,.072),l(-.153,-.297),l(.058,-.156),l(.953,-.781),l(.269,-.384),l(.55,-.413),l(.159,-.2),l(-.057,-.298),l(-.73,-.553),l(-.727,-.283),l(-.131,-.014),l(-.628,.03),l(-.166,.015),l(-.494,.371),l(-1.146,1.183),l(-.355,.157),l(-.643,.086),l(-.613,.243),l(-.36,.199),L(665.49,112),l(-.136,.411),l(-.131,.255),l(-.251,.255),l(-.437,.128),l(-.493,-.013),l(-.326,.27),l(-.307,.114),l(-.455,-.565),l(-.355,-.014),l(-.349,.128),l(-.396,.638),l(-.301,.694),l(.088,.34),l(.245,.368),l(.558,.268),l(.8,.268),l(1.21,-.045),l(.29,.254),l(-.019,.538),l(-.123,.581),l(.057,.538),l(.261,.283),l(.733,.069),l(.698,-.157),l(.76,-.525),l(.509,-.497),l(.552,-.228),l(.534,-.128),l(.287,.07),l(.895,.621),l(.543,.197),l(1.023,-.087),l(.361,.027),l(.471,.141),l(.274,0),l(-.248,.708),l(-.057,.552),l(-.612,-.197),l(-.297,-.084),l(-.525,.058),l(-1.677,.555),l(-.707,.44),l(-.072,.735),l(-.522,.157),l(-.146,-.113),l(-.017,-.269),l(-.127,-.084),l(-.501,.114),l(.138,.466),l(-.152,.368),l(-.485,.496),l(-1.397,1.119),l(-.126,.226),l(.039,.55),l(.62,.225),l(.712,.492),l(.785,.521),l(.391,.535),l(.424,1.241),l(.668,.647),l(.175,.437),l(-.13,.677),l(.172,.183),l(.694,.295),l(.399,.592),l(.562,.253),l(.272,.268),l(.087,.31),l(-.049,.155),l(-.789,.369),l(.088,.07),l(.425,.31),l(.314,.79),l(-.019,.296),l(-.141,.184),l(-.534,.043),l(-.651,.213),l(-.948,.552),l(-.849,.213),l(-.629,.297),l(.72,.21),l(.378,.056),l(.944,-.425),l(.488,-.058),l(.162,.056),l(.524,.592),l(.387,.168),l(.456,.027),l(.009,.155),l(-.231,.311),l(-.382,.227),l(-.304,.241),l(.11,.155),l(.326,-.029),l(.202,.084),l(-.184,.325),l(-.298,.749),l(-.192,.649),l(.028,.353),l(-.22,.452),l(-.209,.127),l(-.35,-.338),l(-.146,.142),l(-.569,.763),l(-.401,.622),l(-.215,.622),l(-.127,.296),l(-.595,.425),l(-.251,.438),l(-.254,.184),l(-.569,.029),l(-.382,.227),l(.279,.719),l(-.264,.508),l(.076,.593),l(-.093,.269),l(-.207,.269),l(-.532,.199),l(-.161,.282),l(-.174,.396),l(-.294,.636),l(-.626,.354),l(-.412,.495),l(-.492,-.14),l(-.443,-.069),l(-.142,.113),l(-.145,.198),l(.118,.833),l(-.213,.142),l(-.772,.651),l(-.356,.127),l(-.628,.171),l(-.563,.467),l(-.571,.213),l(-.107,.113),l(-.008,.48),l(-.133,.156),l(-.568,.058),l(-.5,.114),l(-.341,.438),l(-.364,-.126),l(-.52,-.168),l(-.274,.057),l(-.315,.326),l(-.435,.198),l(-.643,.1),l(-.047,-.465),l(-.52,.057),l(-.699,.213),l(-.32,.198),l(-.285,-.042),l(-.401,-.493),l(-.163,-.155),l(-.191,.283),l(.095,.169),l(-.045,.212),l(-.047,.691),l(-.209,.297),l(-.416,.114),l(-.501,-.182),l(-.123,.282),l(-.001,.24),l(-.146,.155),l(-.615,.058),l(-.366,.114),l(-.596,.043),l(-.463,-.211),l(-.217,.1),l(-.439,.48),l(-.227,.071),l(-.774,-.041),l(-.747,.227),l(-.406,.326),l(-.451,-.027),l(-.277,-.084),l(-.011,.057),l(-.069,.353),l(-.29,.396),l(.011,.113),l(.48,.634),l(.269,.126),l(.043,.198),l(-.36,.269),l(-.763,.157),l(-.481,-.719),l(-.241,-.691),l(.012,-.395),l(.396,-.777),l(-.015,-.169),l(-.587,-.253),l(-.226,.071),l(-.206,.297),l(-.454,.072),l(-.676,-.21),l(-.574,-.733),l(-.196,.085),l(-.017,.169),l(-.159,.396),l(-.27,.128),l(-.332,-.056),l(-.481,.043),l(-.055,.038),l(-.197,-.143),l(-.909,-.107),l(-.621,-.166),l(-.943,-.615),l(-.273,-.365),l(-.096,-.521),l(.472,-.75),l(-.056,-.38),l(-.237,-.21),l(-.777,.047),l(-.66,-.053),l(-.771,-.235),l(-.623,-.575),l(-.298,.101),l(-.521,.328),l(-.696,.554),l(-.341,.157),l(-.807,.117),l(-1.595,.052),l(-.332,.115),l(-.584,.413),l(-.325,-.097),l(-.597,-.392),l(-.341,-.012),l(-.515,.13),l(-.483,.229), -N(241.073,156.152),l(.017,.52),l(.098,1.215),l(.012,.212),l(-.379,.455),l(-.011,.17),l(.485,1.358),l(-.669,-.577),l(-.445,-.056),l(-.761,.143),l(-.877,-.012),l(-.666,-.14),l(-.574,-.056),l(-.474,.1),l(-.378,.354),l(-.135,-.042),l(-.993,-.549),l(-.171,-.325),l(.04,-.198),l(.269,-.184),l(1.051,.097),l(.631,.111),l(1.125,.167),l(.654,.041),l(.61,-.185),l(.386,-.156),l(-.198,-.155),l(-.692,-.464),l(-.136,-.296),l(.184,-.707),l(-.202,-.296),l(-.394,-.154),l(-.913,-.14),l(-.305,-.211),l(.04,-.184),l(.119,-.085),l(.344,-.1),l(.724,-.058),l(.781,.125),l(1.081,.294),l(.576,.056),l(.147,-.089), -N(241.295,160.082),l(-.485,-1.358),l(.011,-.17),l(.379,-.455),l(-.012,-.212),l(-.098,-1.215),l(-.017,-.52),l(.503,-.279),l(.393,.14),l(.342,0),l(.384,-.17),l(.369,-.043),l(.14,.198),l(.177,.112),l(1,.309),l(.657,-.072),l(.213,.395),l(.335,.338),l(.528,.324),l(.335,.084),l(.643,.21),l(.916,.45),l(.399,.352),l(.231,.311),l(-.191,.17),l(-.144,.297),l(-.314,.368),l(-.238,-.098),l(-.476,-.592),l(-.378,-.042),l(-.788,.058),l(-.288,-.098),l(-.373,0),l(-.329,.1),l(-.763,.539),l(-.396,-.056),l(-.319,-.494),l(-.166,-.028),l(-.155,.057),l(-.658,.326),l(-.344,.778),l(-.41,.65),l(-.289,-.112),l(-.325,-.551), -N(668.053,167.796),l(-.131,-.099),l(-.74,-.732),l(-.444,-1.255),l(.037,-.424),l(.054,-.706),l(-.292,-.465),l(.18,-.382),l(.978,.704),l(.202,-.424),l(.023,-.41),l(-.101,-.438),l(-.026,-.579),l(.145,-.438),l(.025,-.664),l(.082,-.861),l(.074,-.636),l(.38,-.862),l(.188,-.127),l(.337,-.142),l(.523,.055),l(1.21,.52),l(.576,.042),l(.188,-.212),l(.277,-.17),l(.199,.141),l(.018,.396),l(-.266,.438),l(-.045,.48),l(.14,.79),l(.541,.394),l(.182,.325),l(-.427,1.271),l(-.31,.467),l(-.834,.608),l(-.555,.312),l(-.082,.099),l(.003,.268),l(-.078,.565),l(-.28,.424),l(.127,.211),l(.35,.733),l(.345,1.101),l(.26,.62),l(.093,.028),l(.451,.324),l(.296,.07),l(.161,-.325),l(.485,-.537),l(.197,-.029),l(.418,.112),l(.226,.211),l(.179,.635),l(.286,.353),l(.326,.084),l(.505,-.58),l(.621,.267),l(.141,.028),l(.078,.127),l(-.168,.156),l(-.378,.156),l(-.208,.212),l(.936,1.226),l(-.315,.184),l(-.568,-.196),l(-.404,-.098),l(-.094,-.48),l(-.229,-.31),l(-.599,-.535),l(-.753,-.577),l(-.258,0),l(-.099,.226),l(.371,.776),l(-.218,.283),l(-.727,-.775),l(-.982,-.548),l(-.309,.015),l(-.344,.142),l(-.182,.255),l(-.14,.071),l(-.395,.057),l(-.322,-.225),l(-.591,-.366),l(-.195,-.423),l(.64,-.608),l(.323,.211),l(.358,.084),l(.4,-.199),l(-.151,-.169),l(-.713,-.295),l(-.422,-.395),l(-.522,-.168),l(-.239,.607),M(669.676,172.974),l(-.452,-.366),l(-.349,-.408),l(-.051,-.226),l(-.364,-1.114),l(-.459,-.521),l(.685,-.058),l(.868,.012),l(.314,.169),l(.274,.451),l(.028,.861),l(-.097,.48),l(-.214,.283),l(-.185,.438),M(679.073,175.368),l(-.562,-.267),l(-.178,-.254),l(-.237,-.169),l(-.064,-.127),l(.139,-.339),l(-.091,-.423),l(-.55,-.352),l(-.662,-.479),l(-.147,-.466),l(.513,-.1),l(1.017,-.143),l(.371,.112),l(.283,.409),l(.069,.818),l(.123,.805),l(.257,.79),l(-.112,.127),l(-.167,.057),M(671.406,176.824),l(.022,-.353),l(.186,-1.342),l(.061,-1.172),l(.482,.395),l(.576,.281),l(.366,.028),l(.634,-.185),l(.027,.438),l(-.079,.396),l(-.24,.269),l(-.184,.198),l(-.908,.651),l(-.943,.397),M(664.721,177.812),l(-.366,-.027),l(.127,-.297),l(.202,-.099),l(.314,-.396),l(.265,-.523),l(.082,-.607),l(.138,-.509),l(.326,-.184),l(.14,.183),l(-.16,.283),l(.276,.55),l(.212,.564),l(-.108,.113),l(-.664,.354),l(-.406,.368),l(-.377,.227),M(673.781,179.981),l(-.385,-.366),l(-.828,-.591),l(-.206,-.38),l(.099,-.368),l(.565,-.213),l(.22,-.269),l(.487,-1.822),l(.438,-.185),l(.271,.028),l(.113,.126),l(.049,.282),l(-.373,.905),l(-.089,.226),l(-.315,1.413),l(.165,.296),l(.214,.465),l(-.213,.41),l(-.212,.043),M(661.179,181.308),l(-.317,-.042),l(.215,-.48),l(.343,-.467),l(.35,-.34),l(.592,-.354),l(.636,-.496),l(.933,-1.089),l(.11,.55),l(-.118,.424),l(-.267,.297),l(-.24,.184),l(-.516,.213),l(-.172,.127),l(-.244,.622),l(-.327,.269),l(-.591,.171),l(-.386,.41),M(680.678,185.402),l(-.201,-.098),l(-.098,-.438),l(-.361,-.748),l(-.297,-.112),l(-.381,.608),l(-.361,.82),l(.246,.38),l(.166,.395),l(.148,.677),l(-.158,.495),l(-.383,.509),l(-.305,-.253),l(-.176,-.268),l(.201,-.41),l(-.076,-.325),l(-.363,-.07),l(-.361,.665),l(-.173,-.056),l(-1.114,-.619),l(-.557,-.549),l(-.206,-.508),l(-.037,-.635),l(.466,-.905),l(-.108,-.479),l(-.466,-.409),l(-.778,-.295),l(-.292,.043),l(-.062,.17),l(-.129,.226),l(-.5,.255),l(-.661,.058),l(-.027,-.494),l(-.174,-.24),l(-.399,.199),l(-.504,.961),l(-.525,.863),l(-.219,-.084),l(-.119,-.127),l(-.034,-.197),l(.054,-.311),l(.359,-.749),l(.185,-.537),l(.263,-.283),l(.383,-.184),l(.564,-.044),l(.219,-.127),l(.134,-.466),l(.205,-.156),l(.549,-.241),l(.777,-.101),l(.292,.353),l(.102,.72),l(.317,-.156),l(.485,-.058),l(.207,-.184),l(.207,-.565),l(.358,-.255),l(.479,.21),l(.186,.084),l(.158,-1.087),l(.29,-.015),l(.264,.465),l(.315,-.481),l(.205,-.142),l(.392,.098),l(.133,-.227),l(-.048,-.706),l(-.172,-.564),l(.146,-.353),l(.413,.549),l(.711,.803),l(.229,.48),l(.083,.324),l(-.336,.735),l(.237,.226),l(.537,-.1),l(.076,.423),l(-.114,.424),l(.056,.692),l(.207,.437),l(-.002,.438),l(-.111,.424),l(-.283,.579),l(-.332,.622), -N(251.898,160.229),l(-.547,-.112),l(-.073,-.212),l(.051,-.551),l(-.109,-.24),l(.11,-.17),l(.235,-.071),l(.543,.069),l(.404,-.015),l(1.505,.11),l(.393,.168),l(.113,.141),l(-.188,.354),l(-.07,.099),l(-.283,.227),l(-.335,.043),l(-.739,-.083),l(-.657,.072),l(-.354,.17), -N(228.82,160.519),l(-.299,-.056),l(-.693,-.224),l(-.229,-.268),l(-.47,-.366),l(-.465,-.084),l(-.142,-.211),l(.53,-.284),l(.704,-.072),l(1.364,.251),l(.97,.351),l(.651,.267),l(.279,.282),l(-.04,.198),l(-.332,.071),l(-.751,-.295),l(-.543,.058),l(-.227,.255),l(-.308,.128), -N(400.72,175.499),l(-.595,-.119),l(-.161,-.032),l(-.976,.458),l(-1.429,-.006),l(-.867,-.037),l(-2.119,.041),l(-.271,.157),l(-.125,.34),l(.261,1.934),l(.02,.41),l(-.191,.17),l(-.63,-.434),l(-.644,-.166),l(-.769,.075),l(-.608,.159),l(-.446,.257),l(-.368,.115),l(-.354,-.083),l(-.452,-.223),l(-.52,-.562),l(-.15,-.465),l(-.308,-.252),l(-.545,.003),l(-.259,-.168),l(.08,-.043),l(.046,-.156),l(.172,-.326),l(.261,-.92),l(.133,-.876),l(-.058,-.749),l(.141,-.255),l(.257,-.016),l(.448,-.158),l(.543,-.271),l(.317,-.369),l(.292,-1.047),l(.355,-1.217),l(.397,-.384),l(.273,-.058),l(.293,.281),l(.551,.364),l(.45,-.102),l(.174,-.227),l(.393,-.822),l(.492,-.667),l(.638,-.625),l(.272,-.101),l(.518,.209),l(.324,.182),l(.274,.027),l(.314,-.793),l(.304,-.228),l(.947,-.458),l(1.22,-.713),l(.37,-.073),l(.356,.125),l(.36,.059),l(1.062,.173),l(-.173,.665),l(.019,.396),l(.426,.93),l(.422,.492),l(.389,.266),l(.502,.42),l(.179,.268),l(.018,.212),l(-.335,.439),l(.114,.226),l(.97,.757),l(.516,.181),l(.37,-.044),l(.562,.025),l(.568,.971),l(.131,.367),l(-.237,.764),l(-.415,.468),l(-.337,.158),l(-.739,-.095),l(-.418,.045),l(-.415,.271),l(-.366,.553),l(-.24,.157),l(-.062,.142),l(-.29,-.041),l(-.611,-.166),l(-1.013,-.163), -N(209.823,175.47),l(-.388,-.645),l(-.932,-.888),l(-1.003,-1.085),l(-.837,-.817),l(-.723,-.464),l(-.196,-.183),l(-.023,-.226),l(.625,-.03),l(1.001,-.125),l(.29,-.143),l(.293,-.412),l(.005,-.961),l(.882,-.034),l(.513,-.583),l(.725,.42),l(1.207,-.997),l(.503,-.794),l(.294,-.242),l(.259,.013),l(.328,.182),l(.463,.097),l(.248,-.086),l(.424,-.229),l(1.425,-.486),l(.23,.519),l(.038,.339),l(-.057,.509),l(-.214,.707),l(-.543,.806),l(-.1,.749),l(.042,.904),l(-.245,1.13),l(-.188,.735),l(-.101,1.385),l(.031,.55),l(.184,.466),l(.188,.363),l(-.281,.274),l(-.767,-.149),l(-.241,-.46),l(-.285,.077),l(-.394,-.107),l(-.603,.25),l(-1.651,-.599),l(-.43,.271), -N(634.036,168.444),l(.533,.251),l(.736,.165),l(.341,.111),l(.469,.251),l(.248,-.058),l(.095,-.24),l(-.103,-.211),l(-.187,-.182),l(-.107,-.296),l(.392,-.285),l(.476,-.186),l(.444,.181),l(.373,.351),l(.3,-.072),l(.975,-.429),l(.209,-.114),l(-.215,.905),l(.029,.663),l(.455,1.014),l(-.076,.367),l(-.05,.424),l(.054,1.073),l(-.217,.509),l(-.385,.285),l(-.599,.187),l(-.932,.443),l(-.521,.229),l(-.99,.571),l(-.234,.425),l(.216,.422),l(.568,.435),l(.03,.197),l(-.17,.27),l(-.688,-.194),l(-.497,-.011),l(-.599,.229),l(-.915,.528),l(-.646,.229),l(-.3,.289),l(-.256,-.188),l(-.248,-.268),l(-.35,-.042),l(-.382,.142),l(-.205,-.042),l(-.293,.043),l(-.183,-.113),l(.142,-.311),l(.182,-.226),l(-.04,-.254),l(-.283,-.395),l(-.277,.043),l(-.462,.298),l(-.339,.015),l(-.171,-1.044),l(-.649,-1.488),l(.146,-.176),l(-.16,-.479),l(-.487,-.717),l(-.219,-.648),l(-.026,-.635),l(.076,-.382),l(.146,-.297),l(.92,-1.233),l(.521,-.441),l(.383,-.101),l(1.172,-.091),l(.798,.066),l(.558,-.074),l(.575,.039),l(.599,.109),l(.301,.167), -N(214.474,175.913),l(.821,.884),l(.385,.623),l(.314,.322),l(.225,.046),l(.465,.645),l(.441,.352),l(-.014,.006),l(-.074,.123),l(-.478,-.184),l(-.219,.205),l(-.014,.321),l(0,.58),l(.507,.307),l(-.396,.368),l(.125,.532),l(-.374,.369),l(.243,.184),l(-.204,.609),l(.003,-.466),l(-.296,-.307),l(.01,-.568),l(-.377,-.148),l(-.238,-.102),l(-.111,.082),l(.325,.41),l(.084,.225),l(-.113,.062),l(-.726,-.299),l(-.13,-.282),l(.251,-.339),l(.04,-.382),l(-.182,-.338),l(-.486,-.324),l(-.695,-.287),l(-.079,-.144),l(-.689,-.103),l(-.316,-.327),l(.007,-.421),l(-.146,-.255),l(-.249,-.098),l(-.576,-.353),l(-.416,-.266),l(.225,.512),l(.086,.222),l(.422,.044),l(.181,.266),l(-.544,.573),l(-.144,-.262),l(-.356,-.282),l(-.561,-.211),l(-.323,-.239),l(-.147,-.24),l(-.104,-.494),l(.128,-.421),l(.332,-.225),l(-.008,-.389),l(-.554,-.225),l(.363,-.123),l(-.057,-.227),l(-.238,.017),l(.43,-.271),l(1.651,.599),l(.603,-.25),l(.394,.107),l(.285,-.077),l(.241,.46),l(.767,.149),l(.281,-.274), -N(436.304,195.359),l(-.209,-.451),l(-.194,-.804),l(-.498,-.802),l(-1.217,-1.236),l(-.112,-.324),l(-.064,-.791),l(-.432,-.605),l(-.4,-.661),l(-.207,-.592),l(-.273,-1.185),l(-.112,-.776),l(.064,-.424),l(.144,-.198),l(.528,-.399),l(.4,-.511),l(.866,-1.743),l(.354,-.327),l(.208,-.114),l(.096,.084),l(.24,.027),l(.449,-.158),l(1.363,-.686),l(.494,.661),l(.225,.069),l(.224,-.03),l(.466,-.271),l(.754,-.386),l(.818,-.273),l(.881,.009),l(.368,-.031),l(.258,-.143),l(.646,-1.176),l(.117,-.806),l(.209,-.199),l(.434,-.059),l(2.181,-.055),l(.386,-.087),l(2.649,-2.275),l(.196,-.284),l(.005,-.41),l(.165,-.382),l(.372,-.228),l(.939,-.613),l(.322,-.086),l(.321,.012),l(.559,.208),l(1.342,1.673),l(.347,.549),l(.122,.536),l(-.416,1.472),l(.01,.664),l(.158,.211),l(.802,-.019),l(.272,-.001),l(.207,.126),l(.252,.493),l(.223,.225),l(.797,.447),l(.799,.235),l(.351,.196),l(.223,.267),l(-.148,.481),l(.173,.395),l(.445,.351),l(.558,.378),l(.717,.434),l(.207,.168),l(.206,.366),l(.059,.72),l(.285,.436),l(.367,.224),l(.814,.165),l(.558,.477),l(.157,.352),l(-.083,.679),l(.031,.07),l(-.496,.145),l(-.962,.344),l(-.319,-.026),l(-.287,-.167),l(-.687,-.264),l(-1.15,-.361),l(-.4,.13),l(-.082,.551),l(-.13,.241),l(-.256,.058),l(-.399,-.026),l(-.862,-.207),l(-.593,.102),l(-.93,.373),l(-.93,.486),l(-.271,.016),l(-.559,-.35),l(-.383,-.153),l(-.353,.186),l(-.677,1.36),l(-.176,.157),l(-.591,-.067),l(-1.934,-.511),l(-1.422,-.189),l(-.512,-.322),l(-.159,-.239),l(-.334,-.394),l(-.75,-.518),l(-.432,-.167),l(-.479,.06),l(-.529,.3),l(-.353,.341),l(-.785,.979),l(-.097,.297),l(.096,.452),l(-.017,.353),l(-.063,.594),l(-.16,.058),l(-.751,.287),l(-.895,-.093),l(-.624,-.138),l(-.367,-.054),l(-.975,.175),l(-.479,.102),l(-.255,.228),l(-.222,1.287),l(-.158,.523),l(-.365,.497),l(-.303,.312), -N(371.324,180.419),l(1.088,-1.235),l(.643,-.866),l(.238,-.157),l(.594,.039),l(1.137,-.148),l(.466,.04),l(.42,.224),l(.456,.421),l(.475,.619),l(.252,.761),l(.165,1.369),l(.26,.656),l(-.259,.502),l(-1.184,1.151),l(-.63,.724),l(-.285,.256),l(-.061,.103),l(-.631,-.523),l(-.661,-.408),l(-.483,-.196),l(-.033,-.141),l(.061,-.297),l(-.05,-.184),l(-.531,-.21),l(-.792,-.549),l(-.389,-.366),l(-.375,-.465),l(.494,-.241),l(.174,-.227),l(-.034,-.155),l(-.484,-.211),l(-.065,-.113),l(.022,-.173), -N(579.606,186.906),l(-.493,-.083),l(-.265,-.197),l(-.21,-.353),l(-.246,-.621),l(-.361,-1.256),l(-.034,-.649),l(.005,-.763),l(-.02,-.904),l(-.24,-.696),l(.188,-.513),l(-.298,-.35),l(.068,-.28),l(.423,.023),l(.349,-.43),l(.053,-.367),l(.226,-.369),l(-.152,-.537),l(.529,.48),l(.699,.38),l(.234,.395),l(.549,.776),l(.175,.324),l(-.099,.339),l(.024,.141),l(.592,.338),l(.266,.733),l(.798,1.368),l(.136,.508),l(-.193,.735),l(-.397,.679),l(-.369,.396),l(-.514,.425),l(-.78,.284),l(-.642,.043), -N(217.111,178.792),l(.52,.307),l(.195,.512),l(.02,.374),l(.363,.155),l(.628,.024),l(.244,-.205),l(.398,.43),l(.726,.082),l(.458,-.083),l(1.348,-.751),l(.514,-.046),l(1.387,-.921),l(.373,.144),l(.742,.069),l(.071,.156),l(.789,-.017),l(.767,.21),l(.666,.38),l(.644,.563),l(.406,.666),l(.084,.327),l(.228,.149),l(.509,1.038),l(-.322,.062),l(-.094,.43),l(-.584,.409),l(-.085,-.307),l(-.19,-.082),l(.045,.45),l(-.228,.082),l(-.256,.753),l(-.378,-.825),l(-.441,-.762),l(-.137,-.452),l(.179,-.24),l(.22,-.085),l(.786,.125),l(-.336,-.193),l(-.125,-.164),l(-.096,-.471),l(-.309,.307),l(-.439,.041),l(-.244,-.378),l(-.031,-.269),l(-.193,-.282),l(-.132,.151),l(-.226,-.287),l(-.11,.102),l(-.132,-.266),l(-.456,-.192),l(-.562,-.013),l(-.499,.241),l(-.382,.108),l(-.07,.359),l(.081,.234),l(-.529,.318),l(-.374,.184),l(-.335,.029),l(-.345,.41),l(.049,.296),l(.316,.297),l(.464,.43),l(.178,.386),l(-.011,.146),l(-.281,.081),l(-.243,-.042),l(-.431,.391),l(-.568,.105),l(-.339,-.042),l(-.189,-.146),l(.108,-.164),l(-.349,-.833),l(-.244,-.353),l(-.177,.674),l(-.812,-.409),l(-.227,-.757),l(-.207,.041),l(-.96,-.123),l(-.434,-.266),l(-.599,0),l(-.314,.113),l(-.361,.495),l(.204,-.609),l(-.243,-.184),l(.374,-.369),l(-.125,-.532),l(.396,-.368),l(-.507,-.307),l(0,-.58),l(.014,-.321),l(.219,-.205),l(.478,.184),l(.074,-.123), -N(266.015,188.956),l(-.503,-.647),l(-.732,-.745),l(-.324,-.521),l(.071,-.212),l(.395,-.539),l(-.008,-.58),l(.061,-.452),l(1.032,-.19),l(.41,-.144),l(.308,-.299),l(-.141,-.282),l(-.62,-.604),l(-.074,-.212),l(.101,-.255),l(1.655,-1.239),l(.061,-.41),l(-.095,-.296),l(.072,.049),l(.496,.338),l(.856,.521),l(.695,.521),l(.587,.663),l(.128,.409),l(-.036,.734),l(.148,.945),l(.298,-.593),l(.22,-.099),l(.6,.182),l(.101,.127),l(.507,.295),l(.708,.549),l(.401,.493),l(.374,.649),l(-.015,.339),l(-.142,.496),l(-.082,.862),l(-.183,.27),l(-1.131,.091),l(-.169,.17),l(.078,.777),l(-.095,.467),l(-.328,.694),l(.571,.831),l(.532,.675),l(.561,.067),l(.185,.295),l(.246,.832),l(.49,1.127),l(.332,.563),l(-.06,.212),l(-.943,-.022),l(-.934,.429),l(-1,.331),l(-.505,.314),l(-.694,.513),l(-.686,.075),l(-.613,-.392),l(-1.103,-.897),l(-.15,-.296),l(-.008,-.396),l(.072,-.354),l(-.167,-.31),l(-.281,-.394),l(-.156,-.465),l(.213,-.962),l(.547,-1.416),l(.179,-.368),l(-.435,-.958),l(-.533,-.138),l(-.304,.001),l(.452,-1.09),l(-.04,-.212),l(-.26,-.111),l(-.516,-.124),l(-.302,.058),l(-.375,.257), -N(377.518,182.142),l(.193,-.376),l(.252,-.242),l(.367,-.143),l(.528,-.046),l(.338,.097),l(.165,.366),l(.22,.846),l(.009,.65),l(-.044,.283),l(.277,.323),l(.404,.322),l(.321,.026),l(.756,-.922),l(.143,-.086),l(.337,.097),l(.339,.224),l(-.062,.17),l(.119,.55),l(-.059,.438),l(-.501,.865),l(.05,.183),l(.194,.183),l(.369,.097),l(.592,-.032),l(1.264,1.334),l(.131,.282),l(-.059,.452),l(-.247,.849),l(-.105,.565),l(-.041,.919),l(-1.513,-.643),l(-1.221,-.619),l(-1.012,-.562),l(-.403,-.423),l(-1.129,-1.113),l(-1.111,-.76),l(-.723,-.337),l(-.901,-.535),l(-.66,-.548),l(.061,-.103),l(.285,-.256),l(.63,-.724),l(1.184,-1.151),l(.259,-.502), -N(429.505,210.684),l(.484,.336),l(.177,.013),l(.443,-.271),l(.327,-.581),l(1.495,-.532),l(.054,.424),l(.042,.664),l(.147,.211),l(.57,-.328),l(.554,-.399),l(.931,-.811),l(.364,-.229),l(1.025,-.938),l(.086,-.706),l(-.122,-.72),l(.074,-.396),l(.193,-1.159),l(.343,-.751),l(.47,-.836),l(.41,-.454),l(.809,-.599),l(.525,-.229),l(.459,-.427),l(.139,-.523),l(.169,-.708),l(.115,-.61),l(.254,-1.342),l(.196,-2.021),l(.156,-.764),l(.094,-.551),l(.349,-.821),l(.558,-.837),l(.398,-1.203),l(.031,-.156),l(-.128,-.197),l(.16,-.058),l(.063,-.594),l(.017,-.353),l(-.096,-.452),l(.097,-.297),l(.785,-.979),l(.353,-.341),l(.529,-.3),l(.479,-.06),l(.432,.167),l(.75,.518),l(.334,.394),l(.159,.239),l(.512,.322),l(1.422,.189),l(1.934,.511),l(.591,.067),l(.176,-.157),l(.677,-1.36),l(.353,-.186),l(.383,.153),l(.559,.35),l(.271,-.016),l(.93,-.486),l(.93,-.373),l(.593,-.102),l(.862,.207),l(.399,.026),l(.256,-.058),l(.13,-.241),l(.082,-.551),l(.4,-.13),l(1.15,.361),l(.687,.264),l(.287,.167),l(.319,.026),l(.962,-.344),l(.496,-.145),l(.143,.239),l(.795,.772),l(.348,.493),l(.525,.477),l(.366,.195),l(.352,-.016),l(.258,-.242),l(.529,-.37),l(.384,.012),l(.684,.631),l(.16,-.1),l(.436,-.582),l(.258,-.157),l(.207,.083),l(1.032,.926),l(1.288,1.32),l(.063,.028),l(.159,.183),l(-.018,.424),l(-.26,1.88),l(.128,.253),l(.191,.027),l(.479,.04),l(.271,.182),l(.111,.31),l(-.191,.453),l(-1.195,1.066),l(-1.241,.996),l(-.255,.284),l(-.395,.681),l(-.217,1.02),l(-.107,.507),l(.021,.593),l(-.025,.734),l(.057,.748),l(-.076,.27),l(-.188,.298),l(-.426,.412),l(-.301,.171),l(-.269,.256),l(-.122,.425),l(-.49,1.358),l(.197,.338),l(.689,.999),l(.087,.381),l(-.04,.438),l(.014,.636),l(.237,.634),l(.017,1.329),l(-.064,.762),l(.425,1.439),l(-.102,.848),l(.122,.693),l(.486,.631),l(.936,.898),l(.428,.78),l(.689,1.804),l(-.563,.068),l(-3.015,.499),l(-.347,.214),l(-.154,.198),l(-.797,1.276),l(-.029,.622),l(.372,2.088),l(-.377,1.175),l(-.3,1.02),l(.043,.296),l(.456,.605),l(.837,.843),l(.445,.279),l(.515,.012),l(.448,-.455),l(.362,-.186),l(.136,.183),l(.032,.791),l(.028,1.427),l(-.041,.551),l(-.371,-.012),l(-1.355,-.091),l(-.348,-.21),l(-.381,-.647),l(-.561,-.731),l(-.416,-.351),l(-.477,-.252),l(-.895,-.263),l(-.38,-.28),l(-.728,-1.423),l(-.212,.354),l(-.522,.682),l(-.366,.087),l(-.325,-.111),l(-.922,-.164),l(-.925,-.249),l(-.489,-.194),l(-.58,-1.014),l(-.175,.071),l(-1.146,.289),l(-.195,-.056),l(-.172,-.352),l(-.365,-.379),l(-.678,-.096),l(-1.24,-.147),l(-.991,.146),l(-.859,.26),l(-.61,.004),l(-.199,-.197),l(-.007,-.254),l(.198,-.905),l(.003,-.466),l(-.306,-.62),l(-.844,-.998),l(-.117,-.211),l(-.021,-.212),l(.296,-1.033),l(.07,-1.06),l(-.109,-.607),l(-.303,-.605),l(.057,-.354),l(.177,-.693),l(-.052,-.183),l(-.322,-.098),l(-1.231,.093),l(-.88,.019),l(-.212,-.168),l(.055,-.48),l(-.181,-.225),l(-2.016,.082),l(-.112,.001),l(-.089,.354),l(.027,.593),l(-.286,.892),l(-.184,.411),l(-.993,.006),l(-.899,-.122),l(-1.021,.246),l(-.88,.034),l(-.292,-.168),l(-.64,-.787),l(-.597,-1.07),l(-.537,-1.409),l(-.059,-.579),l(-.121,-.521),l(-.082,-.127),l(-.321,-.111),l(-.385,-.012),l(-1.104,-.008),l(-.88,.034),l(-.624,.003),l(-1.312,-.048),l(-.945,-.052),l(-.783,.02),l(-.432,.03),l(-.318,.101),l(-.896,.062),l(-.699,.314),l(-.56,.06),l(-.112,-.013),l(-.322,-.922),l(.012,-.053),l(.74,-.3),l(-.017,-.085),l(.1,-.89),l(.094,-.143),l(.317,-.199),l(.583,-.568), -N(468.568,202.653),l(1.277,-.05),l(4.659,0),l(1.448,-.033),l(4.663,2.568),l(3.553,1.984),l(.137,.381),l(-.116,.552),l(.07,.239),l(2.427,1.752),l(1.067,.807),l(-.237,.427),l(-.419,1.329),l(-.137,1.017),l(.109,.551),l(.665,.987),l(.768,.577),l(-.024,.282),l(-.263,.354),l(-.371,1.046),l(.037,.17),l(.306,.041),l(.118,.226),l(-.172,.692),l(-.019,.946),l(.411,1.793),l(.18,.564),l(.401,.465),l(.823,.55),l(.396,.268),l(.177,.228),l(-1.157,.836),l(-.515,.342),l(-1.218,.402),l(-1.243,.559),l(-.448,.031),l(-.646,-.42),l(-.276,-.083),l(-.21,.326),l(-.543,.766),l(-.396,.144),l(-.42,-.054),l(-.964,.006),l(-.963,.02),l(-.512,-.294),l(-.323,-.394),l(-.229,-.083),l(-.123,.128),l(-.643,.356),l(-.526,.088),l(-1.019,-.149),l(-.898,-.018),l(-.196,-.559),l(-.135,-.766),l(-.053,-.584),l(-.135,-.946),l(-.448,-.841),l(-.663,-.538),l(-1.014,-.107),l(-.223,.016),l(-.385,-.407),l(-.732,-.349),l(-1.574,-.57),l(-1.269,-.6),l(-.729,-.265),l(-.263,-.21),l(-.703,-.641),l(-.689,-1.804),l(-.428,-.78),l(-.936,-.898),l(-.486,-.631),l(-.122,-.693),l(.102,-.848),l(-.425,-1.439),l(.064,-.762),l(1.252,-.348),l(.388,-.539),l(.645,-1.204),l(.687,-.853),l(.346,-.271),l(.044,-.212),l(-.148,-.239),l(-.273,-.125),l(-.401,-.068),l(-.211,-.211),l(.158,-.976),l(.304,-.016),l(.396,-.158),l(.142,-.17),l(.104,-.481),l(-.167,-.493),l(-.364,-.888),l(-.121,-.748), -N(464.786,206.235),l(-.197,-.338),l(.49,-1.358),l(.122,-.425),l(.269,-.256),l(.301,-.171),l(.426,-.412),l(.064,.042),l(.546,.223),l(.431,-.045),l(.458,-.427),l(.554,-.398),l(.319,-.017),l(.121,.748),l(.364,.888),l(.167,.493),l(-.104,.481),l(-.142,.17),l(-.396,.158),l(-.304,.016),l(-.559,.031),l(-.508,.159),l(-.391,.567),l(-.158,.085),l(-.396,.13),l(-.789,-.32),l(-.688,-.024), -N(465.79,210.652),l(-.017,-1.329),l(-.237,-.634),l(-.014,-.636),l(.04,-.438),l(-.087,-.381),l(-.689,-.999),l(.688,.024),l(.789,.32),l(.396,-.13),l(.158,-.085),l(.391,-.567),l(.508,-.159),l(.559,-.031),l(-.158,.976),l(.211,.211),l(.401,.068),l(.273,.125),l(.148,.239),l(-.044,.212),l(-.346,.271),l(-.687,.853),l(-.645,1.204),l(-.388,.539),l(-1.252,.348), -N(427.243,211.207),l(.536,-.414),l(.68,-.513),l(.351,-.13),l(.695,.533),l(-.583,.568),l(-.317,.199),l(-.094,.143),l(-.1,.89),l(.017,.085),l(-.74,.3),l(.143,-.625),l(-.082,-.24),l(-.505,-.796),M(427.998,213.843),l(.112,.013),l(.56,-.06),l(.699,-.314),l(.896,-.062),l(.318,-.101),l(.432,-.03),l(.783,-.02),l(.945,.052),l(1.312,.048),l(.624,-.003),l(.88,-.034),l(1.104,.008),l(.385,.012),l(.321,.111),l(.082,.127),l(.121,.521),l(.059,.579),l(.537,1.409),l(.597,1.07),l(.64,.787),l(.292,.168),l(.88,-.034),l(1.021,-.246),l(.899,.122),l(.993,-.006),l(.184,-.411),l(.286,-.892),l(-.027,-.593),l(.089,-.354),l(.112,-.001),l(2.016,-.082),l(.181,.225),l(-.055,.48),l(.212,.168),l(.88,-.019),l(1.231,-.093),l(.322,.098),l(.052,.183),l(-.177,.693),l(-.057,.354),l(.303,.605),l(.109,.607),l(-.07,1.06),l(-.296,1.033),l(.021,.212),l(.117,.211),l(.844,.998),l(.306,.62),l(-.003,.466),l(-.198,.905),l(.007,.254),l(.199,.197),l(.61,-.004),l(.859,-.26),l(.991,-.146),l(1.24,.147),l(-.214,1.344),l(.195,1.059),l(.269,.323),l(.089,.254),l(-.132,.368),l(-.436,.44),l(-.124,.594),l(-.125,.086),l(-.517,-.04),l(-3.408,.091),l(-.051,.877),l(.015,1.342),l(-.024,3.249),l(.017,.848),l(.023,.594),l(.099,.438),l(.308,.394),l(.471,.436),l(1.354,1.391),l(.611,.632),l(-.93,.218),l(-1.96,.379),l(-1.044,.203),l(-.717,-.08),l(-1.164,.063),l(-.408,-.083),l(-.349,-.21),l(-2.024,.026),l(-.697,-.024),l(-.622,-.151),l(-.401,-.322),l(-.305,-.366),l(-.408,-.096),l(-.989,-.023),l(-2.59,.016),l(-1.636,-.019),l(-.631,-.011),l(-1.296,-.006),l(-2.201,.013),l(-.636,-.151),l(-.463,-.309),l(-.45,-.478),l(-.294,-.083),l(-.499,.088),l(-.591,.286),l(-.778,.513),l(-.758,-.462),l(-.352,.144),l(-.248,.197),l(.048,-1.809),l(-.017,-.805),l(-.029,-.649),l(.397,-.34),l(.221,-.269),l(.26,-.707),l(.163,-.734),l(.184,-1.398),l(.239,-.976),l(.321,-.918),l(.584,-.665),l(.183,-.565),l(.268,-.354),l(.64,-.228),l(.268,-.325),l(.423,-.679),l(.364,-1.201),l(.053,-.664),l(-.046,-.848),l(-.191,-.959),l(-.201,-.536),l(-.492,-.705),l(-.476,-.776),l(-.268,-.775),l(.139,-.495),l(.476,-.382),l(.158,-.156),l(.107,-.424),l(-.006,-.479),l(-.199,-.579),l(-.489,-.69),l(-.441,-.733),l(-.203,-1.031),l(-.181,-.423),l(-.276,-.366),l(-.666,-.974),l(-.072,-.15), -N(452.198,239.34),l(-.611,-.632),l(-1.354,-1.391),l(-.471,-.436),l(-.308,-.394),l(-.099,-.438),l(-.023,-.594),l(-.017,-.848),l(.024,-3.249),l(-.015,-1.342),l(.051,-.877),l(3.408,-.091),l(.517,.04),l(.125,-.086),l(.124,-.594),l(.436,-.44),l(.132,-.368),l(-.089,-.254),l(-.269,-.323),l(-.195,-1.059),l(.214,-1.344),l(.678,.096),l(.365,.379),l(.172,.352),l(.195,.056),l(1.146,-.289),l(.175,-.071),l(.58,1.014),l(.489,.194),l(.925,.249),l(.922,.164),l(.325,.111),l(.366,-.087),l(.522,-.682),l(.212,-.354),l(.728,1.423),l(.38,.28),l(.895,.263),l(.477,.252),l(.416,.351),l(.561,.731),l(.381,.647),l(.348,.21),l(1.355,.091),l(.371,.012),l(.041,-.551),l(-.028,-1.427),l(-.032,-.791),l(-.136,-.183),l(-.362,.186),l(-.448,.455),l(-.515,-.012),l(-.445,-.279),l(-.837,-.843),l(-.456,-.605),l(-.043,-.296),l(.3,-1.02),l(.377,-1.175),l(-.372,-2.088),l(.029,-.622),l(.797,-1.276),l(.154,-.198),l(.347,-.214),l(3.015,-.499),l(.563,-.068),l(.703,.641),l(.263,.21),l(.729,.265),l(1.269,.6),l(1.574,.57),l(.732,.349),l(.385,.407),l(.559,.887),l(.434,.859),l(.013,.324),l(-.183,.27),l(-.709,.344),l(-.011,.127),l(.04,.594),l(-.091,1.682),l(.08,.353),l(.216,.168),l(.511,.266),l(.072,.197),l(-.197,.241),l(-.472,.258),l(-.792,.259),l(-.146,.34),l(-.094,.764),l(-.3,.807),l(.2,.479),l(.261,.408),l(.394,.125),l(-1.264,.53),l(-1.696,.575),l(-.932,.4),l(-2.165,.578),l(-.187,.128),l(-.009,.495),l(.152,.465),l(.087,.438),l(-.505,-.096),l(-.999,.049),l(-.794,.259),l(-.636,.54),l(-.312,.539),l(-.019,.579),l(-.168,.199),l(-.285,.114),l(-.999,.062),l(-.621,.202),l(-.306,.341),l(-.777,.937),l(-.562,.738),l(-.825,.951),l(-.354,.045),l(-.803,-.165),l(-.421,-.309),l(-.334,.129),l(-.521,.286),l(-.404,.017),l(-.594,-.209),l(-.264,-.097),l(-.154,-.169),l(-.163,-.027),l(-.187,-.154),l(-.456,-.393),l(-.294,-.055),l(-1.089,-.093),l(-.086,-.099),l(-.165,-.056),l(-1.845,.364), -N(477.231,225.874),l(-.224,1.184),l(-.107,.48),l(.252,.917),l(.177,1.017),l(.149,.408),l(.238,.268),l(.803,.588),l(1.189,1.166),l(.454,.661),l(.14,.48),l(-.155,2.346),l(-.04,.41),l(-.214,.213),l(-.432,.073),l(-.322,.017),l(-.229,.213),l(-.076,.622),l(.08,.509),l(.029,.479),l(-.096,.283),l(-.185,-.111),l(-.562,-.463),l(-.763,-1.112),l(-.484,-.548),l(-.234,-.423),l(.036,-.212),l(.499,-.61),l(.116,-.227),l(.025,-.693),l(-.1,-.96),l(-.22,-.479),l(-.261,-.056),l(-.674,.061),l(-.702,.132),l(-.27,-.211),l(-.343,-.407),l(-.382,-.549),l(-.195,-.041),l(-.394,-.125),l(-.261,-.408),l(-.2,-.479),l(.3,-.807),l(.094,-.764),l(.146,-.34),l(.792,-.259),l(.472,-.258),l(.197,-.241),l(-.072,-.197),l(-.511,-.266),l(-.216,-.168),l(-.08,-.353),l(.091,-1.682),l(-.04,-.594),l(.011,-.127),l(.709,-.344),l(.183,-.27),l(-.013,-.324),l(-.434,-.859),l(-.559,-.887),l(.223,-.016),l(1.014,.107),l(.663,.538),l(.448,.841),l(.135,.946),l(.053,.584),l(.135,.766),l(.196,.559), -N(245.934,224.314),l(.939,.136),l(1.122,.304),l(.355,-.03),l(.946,-.824),l(.336,.026),l(.48,.025),l(.415,-.243),l(1.471,-1.109),l(.874,-.485),l(.36,-.158),l(.934,-.076),l(1.283,.021),l(.045,.748),l(-.079,.621),l(-.064,.622),l(.036,.818),l(.141,.635),l(.335,.591),l(.813,.928),l(1.1,.939),l(.316,.097),l(.787,.023),l(.355,-.03),l(.676,.25),l(.688,.307),l(.75,.603),l(.3,.098),l(.882,.037),l(.096,.014),l(.385,.774),l(.398,.308),l(.22,.084),l(1.148,-.077),l(.636,.123),l(.537,.166),l(.403,.237),l(.085,.169),l(-.038,.565),l(.203,1.029),l(.03,.706),l(.138,2.032),l(.249,.944),l(.153,.112),l(.967,.036),l(.5,.012),l(1.615,.019),l(.693,.024),l(.042,.296),l(-.261,.835),l(.067,.563),l(.436,.407),l(.73,.362),l(.316,.479),l(.307,.774),l(.022,.494),l(-.185,1.173),l(-.238,.834),l(-.38,.765),l(-.421,.666),l(-.089,-.084),l(-1.952,-.991),l(-.352,-.054),l(-.928,.02),l(-.843,-.01),l(-.126,.128),l(-1.076,.204),l(-1.104,.162),l(-.784,.202),l(-.33,.044),l(-.332,.383),l(-.698,1.105),l(-.278,.341),l(-.133,.509),l(.016,.635),l(-.385,1.188),l(-.395,1.104),l(-.149,.325),l(-.592,-.109),l(-1.33,-.077),l(-.686,.004),l(-1.034,1.784),l(-.416,-1.084),l(-.341,-.309),l(-.37,-.195),l(-.531,-.067),l(-.527,.045),l(-.901,.034),l(-.615,-.194),l(-.193,-.169),l(-.322,-.181),l(-.292,.27),l(-2.026,2.087),l(-1.047,.006),l(-.272,-.182),l(-.397,-2.144),l(-.278,-.973),l(-.212,-.563),l(-.769,-1.11),l(-.249,-.676),l(.04,-.354),l(.437,-1.555),l(-.017,-.282),l(-.761,-.744),l(-.25,-.521),l(-.193,-1.213),l(-.304,-.647),l(-.555,-.745),l(-.152,-.253),l(-.018,-.142),l(-.132,-.295),l(-.049,-.48),l(.12,-.227),l(.723,-.61),l(.285,-.439),l(-.015,-.522),l(-.604,-1.168),l(-.022,-.48),l(.159,-.34),l(.21,-.368),l(-.347,-.845),l(.102,-.452),l(.532,-.582),l(.221,-.34),l(.156,-.34),l(-.236,-.902),l(-.057,-.522),l(.143,-.848),l(.15,-.523),l(.437,-.736),l(-.08,-.24),l(-.922,-1.646),l(-1.109,-1.843), -N(473.575,260.04),l(-1.331,.011),l(-.192,.058),l(-.068,-.382),l(-.261,-.889),l(.071,-.495),l(-.075,-.296),l(-.095,-.324),l(.03,-.806),l(.057,-1.301),l(-.072,-.763),l(-.147,-.678),l(-.33,-.944),l(-.441,-.689),l(-.181,-.946),l(-.295,-1.199),l(-.159,-.183),l(.448,-.384),l(.396,-.412),l(1.68,-1.706),l(.114,-.227),l(-.09,-.367),l(.075,-.834),l(.229,-.481),l(.736,-.683),l(.205,-.341),l(.168,-.41),l(-.594,-.845),l(-.118,-.805),l(-.113,-.494),l(.128,-.283),l(.448,-.596),l(.201,-.411),l(-.132,-.805),l(-.086,-1.144),l(-.031,-.791),l(-.178,-.818),l(-.441,-.379),l(-.515,-.224),l(-1.167,-.347),l(-1.042,-.445),l(-.658,-.223),l(-1.438,-.006),l(-.137,-.14),l(-.025,-.495),l(-.011,-.212),l(-.087,-.438),l(-.152,-.465),l(.009,-.495),l(.187,-.128),l(2.165,-.578),l(.932,-.4),l(1.696,-.575),l(1.264,-.53),l(.195,.041),l(.382,.549),l(.343,.407),l(.27,.211),l(.702,-.132),l(.674,-.061),l(.261,.056),l(.22,.479),l(.1,.96),l(-.025,.693),l(-.116,.227),l(-.499,.61),l(-.036,.212),l(.234,.423),l(.484,.548),l(.763,1.112),l(.562,.463),l(.185,.111),l(.096,-.283),l(-.029,-.479),l(-.08,-.509),l(.076,-.622),l(.229,-.213),l(.322,-.017),l(.432,-.073),l(.214,-.213),l(.04,-.41),l(.155,-2.346),l(-.14,-.48),l(-.454,-.661),l(-1.189,-1.166),l(-.803,-.588),l(-.238,-.268),l(-.149,-.408),l(-.177,-1.017),l(-.252,-.917),l(.107,-.48),l(.224,-1.184),l(.898,.018),l(1.019,.149),l(.526,-.088),l(.643,-.356),l(.123,-.128),l(.229,.083),l(.323,.394),l(.512,.294),l(.963,-.02),l(.964,-.006),l(.42,.054),l(.396,-.144),l(.543,-.766),l(.21,-.326),l(.276,.083),l(.646,.42),l(.448,-.031),l(1.243,-.559),l(1.218,-.402),l(.515,-.342),l(1.157,-.836),l(.128,.167),l(.212,.479),l(-.185,.579),l(-.302,.453),l(-.198,.255),l(.181,.451),l(.129,.72),l(-.012,.466),l(.182,1.115),l(-.101,.58),l(-.258,.325),l(.374,.705),l(.154,.494),l(-.006,1.115),l(-.004,.819),l(.043,.184),l(.185,.127),l(.327,.084),l(.015,.269),l(-.165,.494),l(-.563,.58),l(.184,.381),l(-.08,.283),l(-.418,.565),l(-.802,.906),l(-.512,.622),l(-.72,.651),l(-1.36,.751),l(-1.48,.653),l(-.73,.228),l(-1.308,.582),l(-.852,.637),l(-1.286,1.443),l(-.886,.85),l(-1.193,.878),l(-1.181,.836),l(-.268,.128),l(-.035,.96),l(-.083,.495),l(.058,.127),l(.719,.535),l(.188,.381),l(-.166,.452),l(-.085,.184),l(.461,1.511),l(.071,.564),l(.06,.155),l(.246,.014),l(.171,-.128),l(.141,-.085),l(.043,.607),l(-.234,2.218),l(-.284,.82),l(.325,.196),l(.152,.057),l(-.025,.325),l(-.157,.311),l(-.516,.566),l(-.699,.538),l(-.664,.34),l(-1.266,.412),l(-.796,.312),l(-.688,.228),l(-.895,.524),l(-.652,.665),l(-.337,.51),l(.292,.338),l(.589,.338),l(.045,.325),l(-.149,1.022), -N(499.85,236.166),l(.544,-.071),l(.622,-.369),l(.18,.028),l(.346,.098),l(.269,-.085),l(.396,-.368),l(.911,-.143),l(.311,.281),l(.305,-.028),l(.101,-.185),l(-.171,-.366),l(.771,-.539),l(.423,-.198),l(.322,.226),l(.389,-.213),l(-.308,-.494),l(.207,-.282),l(.505,-.425),l(.229,.296),l(.229,.056),l(.558,-.594),l(-.158,-.197),l(-.253,-.409),l(.094,-.297),l(.243,.014),l(.27,-.071),l(.172,-.34),l(-.297,-.875),l(.06,-.339),l(.255,-.043),l(.117,.07),l(.253,.438),l(.28,.099),l(.2,-.41),l(.692,-.524),l(.235,-.367),l(.134,-.452),l(.168,-.692),l(-.133,-.354),l(.003,-.226),l(.537,-.468),l(.356,.324),l(.455,.648),l(.612,.281),l(.141,.198),l(.213,.847),l(.294,1.821),l(.093,.663),l(.231,.791),l(.391,.733),l(.163,.466),l(-.038,.367),l(-.069,.155),l(-.058,.099),l(-.537,.807),l(-.22,-.127),l(-.189,-.366),l(-.555,-.748),l(-.297,.143),l(-.05,.424),l(.193,.875),l(.396,.521),l(.079,.396),l(-.307,.636),l(-.746,1.005),l(-.045,.452),l(.041,.89),l(-.18,.946),l(-.709,2.12),l(-.825,2.572),l(-1.254,3.788),l(-1.324,4.48),l(-.518,1.568),l(-.188,.255),l(-.508,.637),l(-.2,.113),l(-1.369,.102),l(-.999,.327),l(-.474,.468),l(-.813,.086),l(-.363,-.465),l(-.196,-.142),l(-.546,-.182),l(-.37,.071),l(-.269,-.057),l(-.863,-.718),l(-.104,-.24),l(-.02,-.565),l(-.104,-.239),l(-.46,-.366),l(-.124,-.282),l(.001,-.721),l(.345,-1.088),l(-.094,-.325),l(-.287,-.479),l(-.62,-.931),l(-.189,-.494),l(.075,-.664),l(.391,-1.37),l(.228,-.213),l(.474,-.185),l(.768,-1.371),l(.686,-1.174),l(.104,-.325),l(.151,-1.103),l(-.11,-.353),l(-.278,-.226),l(-.354,-.366),l(.066,-.184),l(.252,-.509),l(-.521,-.861),l(-.117,-.677),l(-.069,-.494),l(-.231,-.721),l(.024,-.112),l(.517,-.693),l(.362,-.594),l(.163,-.438),l(.007,-1.073),l(.484,-.016), -N(468.138,234.908),l(.011,.212),l(.025,.495),l(.137,.14),l(1.438,.006),l(.658,.223),l(1.042,.445),l(1.167,.347),l(.515,.224),l(.441,.379),l(.178,.818),l(.031,.791),l(.086,1.144),l(.132,.805),l(-.201,.411),l(-.448,.596),l(-.128,.283),l(.113,.494),l(.118,.805),l(.594,.845),l(-.168,.41),l(-.205,.341),l(-.736,.683),l(-.229,.481),l(-.075,.834),l(.09,.367),l(-.114,.227),l(-1.68,1.706),l(-.396,.412),l(-.448,.384),l(-.342,-.225),l(-.547,-.124),l(-.442,-.025),l(-.529,.145),l(-.31,.016),l(-.99,-.403),l(-.597,-.139),l(-.72,-.023),l(-.067,-.042),l(-.186,-.098),l(-.306,-.451),l(-.479,-.35),l(-.549,-.167),l(-.938,-.136),l(-.352,-.153),l(-.524,-.873),l(-.163,-.564),l(.032,-.565),l(-.127,-.239),l(-.78,.019),l(-.201,-.098),l(-.109,-.211),l(.051,-.537),l(-.106,-.169),l(-.552,-.266),l(-.533,-.223),l(-.57,-.321),l(-.563,-.491),l(-.377,-.662),l(-.246,-.96),l(-.469,-.604),l(-.43,-.478),l(-.267,-.451),l(.103,-.227),l(.594,.209),l(.404,-.017),l(.521,-.286),l(.334,-.129),l(.421,.309),l(.803,.165),l(.354,-.045),l(.825,-.951),l(.562,-.738),l(.777,-.937),l(.306,-.341),l(.621,-.202),l(.999,-.062),l(.285,-.114),l(.168,-.199),l(.019,-.579),l(.312,-.539),l(.636,-.54),l(.794,-.259),l(.999,-.049),l(.505,.096), -N(444.673,255.519),l(-.006,3.434),l(.031,1.894),l(.025,2.246),l(-.057,.205),l(-.454,.318),l(-.545,.302),l(-.581,.498),l(-.427,.034),l(-.581,-.166),l(-.745,-.042),l(-.892,.048),l(-.517,-.039),l(-.296,-.212),l(-.055,-.528),l(-.042,-.345),l(-.193,-.222),l(-.637,-.348),l(-.329,-.127),l(-.335,.116),l(-.109,.217),l(-.317,.416),l(-.584,.27),l(-.152,.068),l(-.458,-.491),l(-1.041,-1.001),l(-.458,-.606),l(-.359,-1.03),l(-.345,-.72),l(-.136,-.493),l(.12,-.269),l(.053,-.34),l(-.458,-.719),l(-.231,-.861),l(.148,-.861),l(-.002,-.48),l(-.537,-1.326),l(-.496,-2.244),l(.772,-.02),l(.04,-.678),l(-.077,-.749),l(-.456,-.006),l(.016,-.06),l(-.099,-.522),l(-.26,-.508),l(-1.018,-1.283),l(-.343,-.55),l(-1.102,-2.158),l(-.841,-1.623),l(-.9,-1.509),l(-.988,-1.269),l(-.511,-1.044),l(-.122,-.396),l(-.045,-.551),l(.015,-.578),l(.248,-.197),l(.352,-.144),l(.758,.462),l(.778,-.513),l(.591,-.286),l(.499,-.088),l(.294,.083),l(.45,.478),l(.463,.309),l(.636,.151),l(2.201,-.013),l(1.296,.006),l(.631,.011),l(1.636,.019),l(2.59,-.016),l(.989,.023),l(.408,.096),l(.305,.366),l(.401,.322),l(.622,.151),l(.697,.024),l(2.024,-.026),l(.349,.21),l(.408,.083),l(1.164,-.063),l(.717,.08),l(1.044,-.203),l(1.96,-.379),l(.93,-.218),l(1.845,-.364),l(.165,.056),l(.086,.099),l(1.089,.093),l(.294,.055),l(.456,.393),l(-.811,.315),l(-.891,.02),l(-.284,.143),l(-.993,.938),l(-.209,.029),l(-.62,-.773),l(-1.048,.134),l(-2.962,.47),l(-1.183,.021),l(.005,1.215),l(-.007,1.286),l(-.025,.876),l(-.043,1.201),l(.002,3.561),l(-.586,.046),l(-1.564,.052),l(-.146,.028),l(-.106,2.657),l(-.009,1.201),l(.013,1.624),l(.007,.806), -N(248.453,316.576),l(-.306,.101),l(-.892,-.087),l(-.538,-.293),l(-.236,-.015),l(-.311,.163),l(-.418,.398),l(-.498,.192),l(-1.156,.091),l(-.349,.09),l(-.358,.207),l(-.267,.621),l(-.114,.341),l(.06,.532),l(-.163,.622),l(-.104,.148),l(-.453,.031),l(-.534,.104),l(-.956,-.413),l(.667,-.639),l(.326,-.444),l(.582,-.4),l(.025,-.147),l(-.372,-.177),l(-.273,-.117),l(-1.353,.534),l(-1.01,-.013),l(-.545,.163),l(-.202,-.339),l(.128,-.192),l(.959,-.268),l(.266,.028),l(.792,-.208),l(.441,-.118),l(-.605,-.162),l(-.582,.002),l(-.77,.001),l(-.014,-.413),l(.265,-.31),l(-.007,-.191),l(-.446,-.073),l(-.356,-.44),l(-.66,.384),l(-.669,-.175),l(.292,-.53),l(.041,-.177),l(-.378,.045),l(-.361,.147),l(-.416,-.396),l(-.215,-.117),l(.413,-.279),l(.114,-.177),l(-.091,-.278),l(-.053,-.073),l(-.351,.03),l(-.773,-.424),l(-.135,-.059),l(.844,-.192),l(.253,-.161),l(.1,-.294),l(.396,-.366),l(.049,-.234),l(-.641,.06),l(-.257,.104),l(-.312,-.073),l(-.256,-.672),l(.573,-.395),l(-.565,-.378),l(-.12,-.421),l(.757,-.452),l(-.14,-.421),l(-.686,.422),l(-.091,-1.523),l(.399,-.596),l(-.185,-.825),l(.013,-.218),l(.593,.014),l(.41,.245),l(.711,.071),l(.171,-.246),l(.002,-.159),l(-.896,-.447),l(-.867,.146),l(-.317,-.173),l(-.536,.059),l(-.017,-.231),l(.339,-.333),l(.025,-.246),l(-.067,-.087),l(.186,-.202),l(.536,.014),l(.229,-.377),l(.01,-.216),l(-.722,-.389),l(-.354,-.129),l(-.886,.045),l(-.332,-.101),l(-.024,-.49),l(-.939,.16),l(-.115,-.101),l(.122,-.145),l(1.032,-.521),l(.251,-.116),l(.4,-.404),l(.266,-.389),l(.833,-.06),l(.268,.201),l(.059,.346),l(-.648,.202),l(-.323,.274),l(.11,.505),l(.117,.058),l(.191,-.102),l(.268,-.39),l(.183,-.087),l(.242,.101),l(-.037,.317),l(.057,.504),l(.886,-.996),l(.161,-.678),l(.056,-.647),l(.237,-.375),l(.079,-.058),l(.631,-.217),l(-.201,-.071),l(-.438,-.143),l(-.056,-.158),l(.101,-.273),l(.246,-.072),l(.571,-.245),l(.599,-.431),l(.271,-.459),l(-.061,-.229),l(-.394,-.157),l(-.662,-.399),l(-.053,-.372),l(.139,-.243),l(.105,-.458),l(-.06,-.828),l(.366,-.33),l(.676,-.272),l(-.431,-.585),l(-.053,-.784),l(.133,-.158),l(.554,-.157),l(.054,-.314),l(-.116,-.285),l(-.317,-.085),l(-.272,-.198),l(.233,-.329),l(.087,-.313),l(-.401,-.185),l(-.274,-.014),l(-.161,.101),l(-.476,.414),l(-.548,.058),l(-.087,.001),l(-.289,-.199),l(-.16,-.484),l(-.399,-.726),l(-.133,-.697),l(.188,-.911),l(.137,-.413),l(.722,-.739),l(.535,-.767),l(-.006,-.326),l(-.544,-1.757),l(.001,-.608),l(.088,-.567),l(-.076,-.438),l(-.528,-.891),l(-.04,-.298),l(.236,-.198),l(.499,.098),l(.182,-.085),l(.2,-.142),l(.097,-.143),l(.41,-1.288),l(.252,-.481),l(.304,-.935),l(.18,-.65),l(.664,-.808),l(.363,-.722),l(.201,-.636),l(.252,-.946),l(.311,-.691),l(.187,-.128),l(.273,-.382),l(.013,-.296),l(-.312,-.847),l(.082,-.184),l(.455,-.452),l(.206,-.339),l(.028,-.24),l(-.093,-.226),l(-.166,-.805),l(-.292,-2.088),l(-.098,-.86),l(.031,-.565),l(.412,-.565),l(.37,-.537),l(.207,-.564),l(.007,-.734),l(-.339,-.521),l(-.098,-.409),l(.295,-.96),l(.218,-.941),l(.127,-.556),l(.461,-.594),l(.171,-.918),l(.243,-.975),l(.126,-.805),l(.082,-.565),l(-.063,-1.087),l(.422,-.664),l(.211,-.494),l(-.221,-.932),l(-.048,-.833),l(.148,-.24),l(-.022,-.917),l(.229,-.607),l(-.124,-.297),l(-.365,-.084),l(.06,-.324),l(-.046,-.396),l(.223,-.198),l(.402,-.198),l(.137,-.424),l(-.008,-.819),l(.093,-.593),l(.182,-.918),l(-.004,-2.344),l(-.172,-2.074),l(-.042,-1.539),l(-.194,-.974),l(-.15,-.387),l(.852,-.275),l(.259,-.298),l(.228,-.933),l(.15,-.199),l(.586,-.187),l(.152,.253),l(.555,.745),l(.304,.647),l(.193,1.213),l(.25,.521),l(.761,.744),l(.017,.282),l(-.437,1.555),l(-.04,.354),l(.249,.676),l(.769,1.11),l(.212,.563),l(.278,.973),l(.397,2.144),l(.272,.182),l(1.047,-.006),l(.107,.056),l(.212,.14),l(.161,.154),l(-.093,.636),l(-.541,1.457),l(-.36,.256),l(-1.346,.53),l(-.819,.372),l(-.204,.312),l(.25,.817),l(-.421,.722),l(-.007,.579),l(.113,.437),l(.34,.449),l(.03,.226),l(-.273,.369),l(-.161,.382),l(.114,.507),l(.53,.477),l(.011,.227),l(-.152,.311),l(-.333,.017),l(-.791,.089),l(-.329,.835),l(-.464,.835),l(-.608,.694),l(-.282,.439),l(-.823,1.839),l(.167,1.466),l(.054,.762),l(-.124,.185),l(-.492,.271),l(-.292,.34),l(-.388,1.201),l(-.156,.961),l(.285,.633),l(.408,1.154),l(.784,2.816),l(.055,.69),l(-.075,.41),l(-1.083,1.854),l(-.319,.595),l(.088,.409),l(.189,1.06),l(-.078,.325),l(-1.334,1.11),l(-.231,.312),l(-.142,1.075),l(.014,1.16),l(.249,1.103),l(.437,.932),l(-.202,.143),l(-.951,.529),l(-.126,.17),l(-.053,.312),l(-.511,2.427),l(-.316,.541),l(-.1,.37),l(.123,1.835),l(.231,.867),l(.012,.427),l(-.596,.317),l(-.172,.172),l(-.106,.271),l(.094,1.226),l(.125,.128),l(.555,.111),l(.088,.655),l(-.191,1.458),l(.252,.585),l(.26,.185),l(.789,.11),l(.302,.17),l(-.007,.186),l(-.245,.202),l(-.322,.13),l(-.726,.033),l(-.757,.146),l(.176,.171),l(.586,.298),l(.552,.385),l(.017,.216),l(-.767,.794),l(-.059,1.094),l(.158,1.035),l(-.216,.896),l(-.212,.434),l(-.226,.262),l(-.598,.161),l(-.28,.219),l(-.249,.781),l(.446,.648),l(-.069,.188),l(-.296,1.218),l(-.307,.263),l(-1.729,1.01),l(-.271,.292),l(-.037,.45),l(.28,1.309),l(.508,1.123),l(.218,.043),l(.961,-.283),l(.654,-.121),l(.187,.248),l(.231,2.285),l(.778,.568),l(.669,.041),l(1.41,-.052),l(2.827,.132),l(.841,.217),l(1.385,.36),l(.286,.039),M(236.642,296.773),l(-.394,-.113),l(-.43,-.028),l(-.21,-.171),l(-.133,-.229),l(.21,-.457),l(.15,-.657),l(-.087,-.514),l(.011,-.414),l(.364,-.728),l(.817,-.116),l(.36,.327),l(.044,.328),l(-.688,.443),l(-.146,.229),l(.493,.771),l(-.194,1.058),l(-.167,.271),M(238.177,317.937),l(-.445,-.177),l(.083,-.842),l(-.849,.075),l(-.073,-.368),l(.218,-.354),l(.823,.102),l(.508,-.207),l(.205,.103),l(.054,.812),l(-.267,.34),l(-.257,.518),M(247.801,322.062),l(-1.033,.102),l(-.467,-.118),l(-.55,-.237),l(-.42,.001),l(-.481,.104),l(-.935,.226),l(-.496,.03),l(.125,-.343),l(.202,-.312),l(-.104,-.312),l(.906,-.15),l(1.434,.058),l(.433,.323),l(.706,-.007),l(-.622,-.689),l(-.307,-.163),l(-.56,-.117),l(-.178,-.089),l(-.188,.03),l(-.338,-.341),l(-.229,-.4),l(1.611,-.581),l(-.044,-.296),l(-.165,-.147),l(-1.819,.285),l(-.292,-.222),l(.263,-.474),l(.146,-.163),l(1.074,-.52),l(.868,-.637),l(.414,.28),l(1.153,.062),l(-.008,1.144),l(-.098,3.675), -N(456.133,239.67),l(.187,.154),l(.163,.027),l(.154,.169),l(.264,.097),l(-.103,.227),l(.267,.451),l(.43,.478),l(.469,.604),l(.246,.96),l(.377,.662),l(.563,.491),l(.57,.321),l(.533,.223),l(.552,.266),l(.106,.169),l(-.051,.537),l(.109,.211),l(.201,.098),l(.78,-.019),l(.127,.239),l(-.032,.565),l(.163,.564),l(.524,.873),l(.352,.153),l(.938,.136),l(.549,.167),l(.479,.35),l(.306,.451),l(.186,.098),l(-.317,.411),l(-.388,.327),l(-.507,.243),l(-.747,.075),l(-.304,.115),l(-.7,.823),l(-.586,.583),l(-.362,.229),l(-.747,.357),l(-.388,.355),l(-.107,.636),l(-.222,.666),l(-.247,.241),l(-.634,.357),l(-.98,.33),l(-.249,.214),l(-.217,.708),l(-.345,.963),l(-.288,.354),l(-.237,.129),l(-.584,.116),l(-.43,-.026),l(-.473,.06),l(-.511,-.011),l(-.819,-.193),l(-.744,-.32),l(-.979,-.645),l(-.545,-.039),l(-.333,.186),l(-.084,.24),l(-.585,1.134),l(-.382,.469),l(-.651,.625),l(-.632,.428),l(-.8,.372),l(-.823,.033),l(-.854,.047),l(-.368,-.097),l(-.11,-.183),l(.003,-.48),l(.243,-.609),l(.166,-.538),l(-.21,-.762),l(-.547,-.943),l(-.716,-.787),l(-.528,-.067),l(-.007,-.806),l(-.013,-1.624),l(.009,-1.201),l(.106,-2.657),l(.146,-.028),l(1.564,-.052),l(.586,-.046),l(-.002,-3.561),l(.043,-1.201),l(.025,-.876),l(.007,-1.286),l(-.005,-1.215),l(1.183,-.021),l(2.962,-.47),l(1.048,-.134),l(.62,.773),l(.209,-.029),l(.993,-.938),l(.284,-.143),l(.891,-.02),l(.811,-.315), -N(279.288,257.295),l(.02,.239),l(-.544,1.57),l(-.375,.468),l(-1.007,.74),l(-.301,.27),l(-.352,.51),l(-.609,-.363),l(-.35,-.097),l(-.235,.029),l(-.387,.172),l(-.745,.131),l(-.71,.005),l(-.564,-.096),l(-.992,-.333),l(-.607,-.025),l(-1.187,.332),l(-.19,-.056),l(.064,-.212),l(.425,-.426),l(.486,-.398),l(.11,-.198),l(-.21,-.619),l(.048,-.227),l(.625,-.851),l(.617,-1.203),l(.018,-.268),l(-.939,-.503),l(-.65,-.18),l(-1.448,-.697),l(-1.632,-1.106),l(-.671,-.307),l(-1.173,-.204),l(-.498,-.237),l(-.835,-.588),l(-.576,-.562),l(-1.271,-1.376),l(-.782,-.913),l(-.225,-.337),l(-.19,-.056),l(.149,-.325),l(.395,-1.104),l(.385,-1.188),l(-.016,-.635),l(.133,-.509),l(.278,-.341),l(.698,-1.105),l(.332,-.383),l(.33,-.044),l(.784,-.202),l(1.104,-.162),l(1.076,-.204),l(.126,-.128),l(.843,.01),l(.928,-.02),l(.352,.054),l(1.952,.991),l(.089,.084),l(.253,.408),l(.084,.663),l(.521,.872),l(.104,.959),l(-.132,.862),l(-.086,.721),l(-.006,.72),l(.372,.04),l(.818,.15),l(.925,.221),l(.346,-.03),l(.709,-.413),l(.115,-.001),l(.724,.278),l(.843,.404),l(.121,.437),l(.487,2.524),l(.254,.563),l(.224,.055),l(1.29,-.445),l(.234,.112),l(.491,.336),l(.019,.141),l(-.321,.75),l(-.298,.835),l(-.222,.819),l(-.027,.777),l(.063,.423), -N(444.673,255.519),l(.528,.067),l(.716,.787),l(.547,.943),l(.21,.762),l(-.166,.538),l(-.243,.609),l(-.003,.48),l(.11,.183),l(.368,.097),l(.854,-.047),l(.823,-.033),l(.8,-.372),l(.632,-.428),l(.651,-.625),l(.382,-.469),l(.585,-1.134),l(.084,-.24),l(.333,-.186),l(.545,.039),l(.979,.645),l(.744,.32),l(.819,.193),l(.511,.011),l(.473,-.06),l(.43,.026),l(.584,-.116),l(.237,-.129),l(.288,-.354),l(.345,-.963),l(.217,-.708),l(.249,-.214),l(.98,-.33),l(.634,-.357),l(.247,-.241),l(.222,-.666),l(.107,-.636),l(.388,-.355),l(.747,-.357),l(.362,-.229),l(.586,-.583),l(.7,-.823),l(.304,-.115),l(.747,-.075),l(.507,-.243),l(.388,-.327),l(.317,-.411),l(.067,.042),l(.72,.023),l(.597,.139),l(.99,.403),l(.31,-.016),l(.529,-.145),l(.442,.025),l(.547,.124),l(.342,.225),l(.159,.183),l(.295,1.199),l(.181,.946),l(.441,.689),l(.33,.944),l(.147,.678),l(.072,.763),l(-.057,1.301),l(-.03,.806),l(.095,.324),l(-1.449,-.585),l(-.279,.199),l(-.657,.979),l(-.28,.567),l(-.005,.325),l(.39,.676),l(.307,.465),l(.458,.322),l(.671,.109),l(.595,-.004),l(.076,-.594),l(.064,-.198),l(.312,-.186),l(.131,-.015),l(.192,-.058),l(1.331,-.011),l(-.182,1.195),l(-.352,.849),l(-.182,.184),l(-.404,.1),l(-.093,.24),l(.199,.536),l(-.104,.467),l(-.248,.354),l(-.569,.453),l(-.923,.581),l(-.591,.75),l(-1.383,1.98),l(-.631,.834),l(-1.242,1.373),l(-1.193,1.062),l(-.829,.863),l(-1.434,1.034),l(-1.379,1.091),l(-.552,.382),l(-.989,.638),l(-.676,.298),l(-.782,.101),l(-.98,-.012),l(-.549,.071),l(-.132,.354),l(.013,.127),l(-.109,.085),l(-.449,-.098),l(-.553,-.126),l(-.303,.015),l(-.25,.198),l(-.272,.312),l(-.226,.113),l(-.36,-.056),l(-.768,-.408),l(-.759,-.168),l(-.542,-.013),l(-.31,.113),l(-.38,.27),l(-.482,-.099),l(-.645,-.21),l(-.295,.1),l(-.638,.043),l(-.589,.214),l(-.729,.538),l(-.72,.086),l(-.44,-.013),l(-.667,-.084),l(-.738,.072),l(-.575,.199),l(-.827,.82),l(-1.251,-.576),l(-.092,-.509),l(-.218,-.183),l(-.479,-.056),l(-.28,.085),l(-.257,-.479),l(-.343,-.056),l(-.149,.255),l(-.035,.197),l(-.312,-.112),l(-.119,-.226),l(.267,-.495),l(.103,-.424),l(-.857,-1.354),l(-.323,-.282),l(-.134,-.226),l(.173,-.17),l(.636,-.044),l(.172,-.424),l(.06,-.819),l(-.163,-.663),l(-.186,-.522),l(-.61,-1.143),l(-.75,-1.029),l(-.472,-.903),l(-.612,-1.383),l(-.646,-1.467),l(-.573,-.818),l(-.436,-.467),l(.152,-.068),l(.584,-.27),l(.317,-.416),l(.109,-.217),l(.335,-.116),l(.329,.127),l(.637,.348),l(.193,.222),l(.042,.345),l(.055,.528),l(.296,.212),l(.517,.039),l(.892,-.048),l(.745,.042),l(.581,.166),l(.427,-.034),l(.581,-.498),l(.545,-.302),l(.454,-.318),l(.057,-.205),l(-.025,-2.246),l(-.031,-1.894),l(.006,-3.434),M(462.462,268.501),l(.412,-.044),l(.194,-.553),l(.633,-.343),l(1.035,-.303),l(.263,-.199),l(.582,-1.007),l(.268,-.326),l(.143,-.241),l(-.104,-.226),l(-.967,-.744),l(-.33,-.337),l(-.422,-.266),l(-.308,.086),l(-.995,.359),l(-.65,.329),l(-.513,.567),l(-.275,.44),l(-.691,.611),l(.12,.409),l(.582,.858),l(.285,.366),l(.739,.561),M(432.955,250.661),l(.456,.006),l(.077,.749),l(-.04,.678),l(-.772,.02),l(-.078,-.354),l(-.028,-.396),l(.285,-.297),l(.101,-.406), -N(471.719,258.047),l(.075,.296),l(-.071,.495),l(.261,.889),l(.068,.382),l(-.131,.015),l(-.312,.186),l(-.064,.198),l(-.076,.594),l(-.595,.004),l(-.671,-.109),l(-.458,-.322),l(-.307,-.465),l(-.39,-.676),l(.005,-.325),l(.28,-.567),l(.657,-.979),l(.279,-.199),l(1.449,.585), -N(462.462,268.501),l(-.739,-.561),l(-.285,-.366),l(-.582,-.858),l(-.12,-.409),l(.691,-.611),l(.275,-.44),l(.513,-.567),l(.65,-.329),l(.995,-.359),l(.308,-.086),l(.422,.266),l(.33,.337),l(.967,.744),l(.104,.226),l(-.143,.241),l(-.268,.326),l(-.582,1.007),l(-.263,.199),l(-1.035,.303),l(-.633,.343),l(-.194,.553),l(-.412,.044), -N(790.15,283.022),l(.738,.197),l(.008,-.227),l(-.242,-.524),l(.052,-.284),l(.233,.014),l(.389,.17),l(.37,.751),l(.277,.964),l(.48,.17),l(1.753,.691),l(.506,.113),l(.37,-.072),l(.699,-.483),l(.885,-.343),l(.4,.027),l(.329,.17),l(.066,.454),l(-.022,.198),l(-.402,1.236),l(-.283,.072),l(-.761,.058),l(-.035,.683),l(-.124,.156),l(-.424,.029),l(-.746,.016),l(-.432,.2),l(-.271,.284),l(.041,.384),l(.254,.525),l(-.002,.213),l(-.151,.199),l(-.646,.515),l(-.898,1.129),l(-.847,1.058),l(-.756,.587),l(-.68,.316),l(-.337,-.171),l(-.47,-.313),l(-.237,-.328),l(.056,-.314),l(.288,-.386),l(.307,-.671),l(.398,-.5),l(-.031,-.343),l(-.271,-.128),l(-.761,-.582),l(-.421,-.185),l(-.593,-.184),l(-.98,-.452),l(-.306,-.256),l(-.11,-.17),l(.081,-.128),l(.419,-.157),l(1.389,-.685),l(.209,-.512),l(-.078,-.695),l(.087,-.312),l(.396,-.441),l(.032,-.383),l(-.482,-.837),l(.081,-.567),l(-.156,-.311),l(-.479,-.655),l(-.574,-.678),l(.102,-.164),l(-.145,-.304),l(-.291,-.351),l(-.336,-.188),l(-.29,-.163),l(.117,.233),l(.497,.515),l(.049,.141),l(-.169,0),l(-.211,-.281),l(-.525,-.631),l(-.622,-.771),l(-.518,-.561),l(.001,-.117),l(-.268,-.257),l(.04,-.141),l(.013,-.14),l(-.048,-.188),l(-.197,-.396),l(-.379,-.42),l(-.347,-.257),l(.163,-.046),l(.205,.093),l(.358,-.047),l(.131,-.093),l(.084,.28),l(-.149,.187),l(.186,.303),l(.177,.21),l(.167,.116),l(.228,.164),l(.041,-.141),l(.269,.023),l(.519,.257),l(.42,.117),l(.274,.07),l(.128,.257),l(-.011,.141),l(.185,.023),l(.146,-.188),l(.185,.023),l(-.022,.164),l(.227,.351),l(.249,.187),l(.233,.28),l(-.18,.023),l(-.076,.164),l(.093,.163),l(-.242,-.023),l(-.175,-.047),l(.143,.117),l(.251,.188),l(.23,.233),l(.352,.28),l(.063,.234),l(.019,.21),l(-.261,-.047),l(.096,.164),l(.239,.351),l(.256,.188),l(-.292,.023),l(-.226,0),l(-.205,-.047),l(-.006,.141),l(.306,.14),l(.324,.164),l(-.09,.211),l(.205,.046),l(.265,-.023),l(.226,0),l(.223,.141),l(-.114,.07),l(-.031,.141),l(.025,.141),l(.136,.06),M(782.939,297.694),l(-.088,.158),l(-.558,.13),l(-.309,.288),l(-.322,.101),l(-.246,.244),l(-.692,-.242),l(-.16,.086),l(.15,.216),l(.429,.415),l(-.141,.173),l(.02,.259),l(-.064,.431),l(-.218,-.071),l(-.976,-.099),l(.418,.229),l(.449,.244),l(-.278,.49),l(-.427,.896),l(-.212,.549),l(-.418,.318),l(-.673,.349),l(-.171,.246),l(-.259,.145),l(-.581,.233),l(-.593,.406),l(-.398,.015),l(-1.156,-.258),l(-.628,.112),l(-.585,-.442),l(-.812,-.158),l(-.373,-.066),l(-.162,-.308),l(-.467,-.098),l(-.24,.142),l(-.062,.168),l(-.78,.095),l(-.214,-.166),l(-.515,-.095),l(-.146,-.286),l(.432,-.089),l(-.223,-.216),l(.328,-.116),l(.322,-.001),l(-.452,-.482),l(.82,.266),l(-.464,-.576),l(.121,-.145),l(.946,.156),l(.082,-.13),l(-.141,-.173),l(-.201,-.216),l(-.06,-.288),l(.283,-.303),l(.569,-.246),l(.328,-.374),l(.561,-.375),l(.102,-.302),l(.998,-.575),l(1.106,-.275),l(.713,-.331),l(.544,-.36),l(.377,-.101),l(.685,-.575),l(.066,-.272),l(.48,-.302),l(.373,-.015),l(.787,-.331),l(.664,-.402),l(.126,-.215),l(-.008,-.172),l(.266,-.144),l(.448,-.302),l(-.109,-.501),l(.076,-.214),l(.166,-.44),l(.306,.048),l(.066,-.152),l(.58,-.259),l(.444,-.272),l(.137,-.285),l(.131,-1.187),l(.512,-.647),l(.372,.047),l(.365,.165),l(.032,.259),l(.337,.06),l(.187,.186),l(.231,.799),l(.312,.242),l(.973,-.645),l(.426,-.029),l(.367,.113),l(.222,.5),l(-.197,.399),l(.299,.429),l(.066,.271),l(-.611,.659),l(-.261,.401),l(-.476,.358),l(-.868,.746),l(-.578,.359),l(-.295,.13),l(-.236,.258),l(-.389,.159),l(-.271,.258),l(.416,.407),l(.428,.047),l(.421,.289),l(-.276,.113),l(-.484,.07),l(-.503,-.296),l(-.488,.131),l(-.352,.158), -N(247.899,318.387),l(.008,-1.144),l(.821,.289),l(.06,.206),l(-.354,.312),l(-.534,.337),M(248.453,316.576),l(-.286,-.039),l(-1.385,-.36),l(-.841,-.217),l(-2.827,-.132),l(-1.41,.052),l(-.669,-.041),l(-.778,-.568),l(-.231,-2.285),l(-.187,-.248),l(-.654,.121),l(-.961,.283),l(-.218,-.043),l(-.508,-1.123),l(-.28,-1.309),l(.037,-.45),l(.271,-.292),l(1.729,-1.01),l(.307,-.263),l(.296,-1.218),l(.069,-.188),l(-.446,-.648),l(.249,-.781),l(.28,-.219),l(.598,-.161),l(.226,-.262),l(.212,-.434),l(.216,-.896),l(-.158,-1.035),l(.059,-1.094),l(.767,-.794),l(-.017,-.216),l(-.552,-.385),l(-.586,-.298),l(-.176,-.171),l(.757,-.146),l(.726,-.033),l(.322,-.13),l(.245,-.202),l(.007,-.186),l(-.302,-.17),l(-.789,-.11),l(-.26,-.185),l(-.252,-.585),l(.191,-1.458),l(-.088,-.655),l(-.555,-.111),l(-.125,-.128),l(-.094,-1.226),l(.106,-.271),l(.172,-.172),l(.596,-.317),l(-.012,-.427),l(-.231,-.867),l(-.123,-1.835),l(.1,-.37),l(.316,-.541),l(.511,-2.427),l(.053,-.312),l(.126,-.17),l(.951,-.529),l(.202,-.143),l(-.437,-.932),l(-.249,-1.103),l(-.014,-1.16),l(.142,-1.075),l(.231,-.312),l(1.334,-1.11),l(.078,-.325),l(-.189,-1.06),l(-.088,-.409),l(.319,-.595),l(1.083,-1.854),l(.075,-.41),l(-.055,-.69),l(-.784,-2.816),l(-.408,-1.154),l(-.285,-.633),l(.156,-.961),l(.388,-1.201),l(.292,-.34),l(.492,-.271),l(.124,-.185),l(-.054,-.762),l(-.167,-1.466),l(.823,-1.839),l(.282,-.439),l(.608,-.694),l(.464,-.835),l(.329,-.835),l(.791,-.089),l(.333,-.017),l(.152,-.311),l(-.011,-.227),l(-.53,-.477),l(-.114,-.507),l(.161,-.382),l(.273,-.369),l(-.03,-.226),l(-.34,-.449),l(-.113,-.437),l(.007,-.579),l(.421,-.722),l(-.25,-.817),l(.204,-.312),l(.819,-.372),l(1.346,-.53),l(.36,-.256),l(.541,-1.457),l(.093,-.636),l(-.161,-.154),l(-.212,-.14),l(-.107,-.056),l(2.026,-2.087),l(.292,-.27),l(.322,.181),l(.193,.169),l(.615,.194),l(.901,-.034),l(.527,-.045),l(.531,.067),l(.37,.195),l(.341,.309),l(.416,1.084),l(1.034,-1.784),l(.686,-.004),l(1.33,.077),l(.592,.109),l(.19,.056),l(.225,.337),l(.782,.913),l(1.271,1.376),l(.576,.562),l(.835,.588),l(.498,.237),l(1.173,.204),l(.671,.307),l(1.632,1.106),l(1.448,.697),l(.65,.18),l(.939,.503),l(-.018,.268),l(-.617,1.203),l(-.625,.851),l(-.048,.227),l(.21,.619),l(-.11,.198),l(-.486,.398),l(-.425,.426),l(-.064,.212),l(.19,.056),l(1.187,-.332),l(.607,.025),l(.992,.333),l(.564,.096),l(.71,-.005),l(.745,-.131),l(.387,-.172),l(.235,-.029),l(.35,.097),l(.609,.363),l(.352,-.51),l(.301,-.27),l(1.007,-.74),l(.375,-.468),l(.544,-1.57),l(-.02,-.239),l(.957,-.161),l(.462,-.017),l(.206,.196),l(.517,1.154),l(-.094,1.638),l(-.161,.467),l(-.521,.313),l(-1.754,.744),l(-.348,.242),l(-1.633,1.448),l(-1.435,1.363),l(-1.805,1.816),l(-.833,.88),l(-.214,.27),l(-.443,.524),l(-.065,.452),l(-.595,2.359),l(-.103,.522),l(.049,.847),l(.168,.986),l(-.118,.325),l(-.48,.524),l(-.24,.495),l(-.011,.522),l(.194,.577),l(-.054,.338),l(-.162,.273),l(-.26,.325),l(.015,.226),l(.924,.831),l(.68,.281),l(.715,.281),l(.283,.169),l(.281,.325),l(-.025,.325),l(-.362,.523),l(-.043,.396),l(.105,.339),l(.174,.269),l(.466,.325),l(.522,.168),l(.109,.113),l(.226,.892),l(-.308,.481),l(-.75,.937),l(-.729,.766),l(-.313,.737),l(-.368,.284),l(-.832,.342),l(-1.04,.342),l(-1.92,.401),l(-1.795,.188),l(-1.361,.116),l(-.945,.044),l(-1.175,-.11),l(-.934,-.226),l(-.128,.199),l(.036,.808),l(.322,.312),l(.308,.184),l(-.09,.298),l(-.381,.624),l(-.345,.498),l(-.069,.385),l(.392,.682),l(.066,.285),l(-.208,.214),l(-.105,.057),l(-1.251,.473),l(-1.137,.116),l(-.814,-.069),l(-.967,-.34),l(-1.47,-.396),l(-.246,.057),l(-.23,.271),l(.041,.598),l(.429,.684),l(.037,.398),l(-.242,.643),l(.092,.385),l(.773,.54),l(.796,.084),l(.369,-.2),l(-.387,-.398),l(.872,-.188),l(.383,-.043),l(.234,1.041),l(.052,.3),l(-.144,.157),l(-.299,.101),l(-.448,.072),l(-.261,-.157),l(-.104,-.299),l(-.115,-.071),l(-1.046,.073),l(-.67,.201),l(-.212,.101),l(.151,.214),l(.591,.07),l(.47,.113),l(.452,.113),l(.06,.028),l(-.864,.388),l(-.776,.287),l(-.577,.602),l(.003,.414),l(.161,.787),l(-.081,.258),l(-.815,.817),l(.022,.215),l(.423,.371),l(-.491,.116),l(-1.194,.088),l(-.48,.087),l(-.632,.246),l(-.619,.389),l(-.56,.548),l(-.549,.821),l(-.052,.389),l(.061,.375),l(.312,.591),l(.48,.446),l(.98,.633),l(.657,.244),l(.97,.143),l(.362,.086),l(.14,.274),l(-.151,.796),l(-.128,.348),l(-.342,.464),l(-.189,.145),l(-1.08,.524),l(-1.541,.814),l(-.712,.698),l(-.179,.276),l(-.093,.45),l(.111,.523),l(-.169,.451),l(-.239,.32),l(-.97,.454),l(-.969,.25),l(-.421,.221),l(-.323,.396),l(-.226,.791),l(-.054,.514),l(.2,.777),l(.547,.896),l(.699,.779),l(.235,.339),l(-.101,.032),M(247.899,318.387),l(.18,.182),l(.148,.073),l(.607,-.075),l(.344,.133),l(.648,.725),l(.908,.665),l(.993,.756),l(.525,.222),l(.73,.37),l(.246,.074),l(.42,-.001),l(.483,.163),l(1.283,.027),l(.142,-.016),l(-.006,.224),l(-.19,.209),l(-.492,.06),l(-1.198,.092),l(-.777,.196),l(-.364,0),l(-1.179,-.355),l(-.753,-.088),l(-1.15,-.027),l(-.814,-.014),l(-.831,.081),l(.098,-3.675), -N(346.758,54.457),l(.127,-.162),l(.42,-.179),l(.894,.015),l(.674,-.098),l(-.354,-.227),l(-.405,-.34),l(.317,-.342),l(.277,0),l(.956,.42),l(.67,.048),l(.3,-.163),l(-.191,-.26),l(-.625,-.373),l(.366,-.245),l(1.037,.226),l(.957,.08),l(.746,.275),l(.446,.551),l(-.119,.405),l(-.441,.292),l(.922,.806),l(.553,-.356),l(.352,-.13),l(.63,-.114),l(.49,-.179),l(.061,-.21),l(-.169,-.778),l(.542,-.245),l(.501,.454),l(.426,.307),l(.489,.209),l(.215,.016),l(.185,-.13),l(-.264,-.454),l(.243,-.163),l(.27,-.033),l(.817,-.164),l(.683,.438),l(.536,.242),l(.542,.063),l(.05,-.178),l(-.358,-.535),l(1.006,.145),l(1.439,.079),l(.787,-.115),l(.427,-.229),l(-.021,-.716),l(1.167,.08),l(.635,.471),l(1.118,.323),l(.683,.015),l(.273,.243),l(-.252,.552),l(.786,.29),l(1.674,.159),l(.127,.145),l(.143,.548),l(-.07,.387),l(-.152,.256),l(-.152,.256),l(-.443,.129),l(-.815,.018),l(-.195,.096),l(-.04,.431),l(-.515,.463),l(-.497,.16),l(-.568,-.031),l(-.422,-.159),l(-.817,.495),l(-.539,.144),l(-1.46,.463),l(-.853,.113),l(-.726,.001),l(-.771,.097),l(-.784,.587),l(-.473,.127),l(-1.078,.097),l(-.709,-.03),l(-1.316,-.171),l(-.608,-.142),l(-1.283,-.489),l(-1.058,-.093),l(-.443,.064),l(-1.041,-.014),l(-1.834,-.124),l(-.297,-.206),l(.434,-.191),l(1.127,-.352),l(.701,-.59),l(-.818,-.015),l(-.51,-.126),l(-.428,-.398),l(-.253,-.095),l(-.358,.081),l(-1.564,.115),l(-.557,.033),l(-.37,-.223),l(.141,-.192),l(.388,-.129),l(.669,-.097),l(.794,-.017),l(.729,-.114),l(1.049,-.098),l(.376,-.194),l(.178,-.322),l(-.144,-.258),l(-.358,-.177),l(-.426,-.015),l(-.478,-.145),l(-1.005,-.047),l(-.821,.099),l(-.424,.162),l(-.676,.082),l(-1.041,-.272),l(-.16,-.21), -N(462.829,67.958),l(.145,.053),l(.16,.131),l(-.043,.174),l(-.175,.044),l(-.189,0),l(-.116,0),l(-.088,.043),l(-.058,.131),l(-.175,.277),l(-.219,.204),l(-.319,.131),l(-.204,.131),l(-.088,.16),l(.029,.16),l(.131,.437),l(.073,.189),l(.029,.16),l(-.175,.131),l(0,.175),l(.175,.233),l(.203,.087),l(.088,.073),l(0,.073),l(.015,.087),l(.043,.146),l(.175,.043),l(.059,.059),l(-.175,.073),l(-.262,.043),l(-.16,.058),l(-.059,.102),l(-.087,.116),l(-.131,0),L(461.402,72),l(-.015,.087),l(-.116,.058),l(.081,.106),l(-.125,.025),l(-.087,-.015),l(-.306,-.043),l(-.16,-.058),l(-.175,-.073),l(-.204,-.044),l(-.131,.102),l(-.204,-.029),l(-.131,.044),l(-.16,.087),l(-.146,.014),l(-.146,-.087),l(-.116,-.029),l(-.175,0),l(-.204,-.117),l(-.116,-.174),l(-.203,-.117),l(-.146,-.043),l(-.072,-.117),l(-.189,0),l(-.247,-.043),l(-.204,-.117),l(-.029,0),l(-.276,-.014),l(-.102,-.102),l(-.248,-.043),l(-.116,-.102),l(-.189,-.087),l(0,.073),l(-.116,.087),l(-.131,-.058),l(-.015,-.073),l(-.087,-.029),l(-.103,0),l(-.276,.117),l(-.102,.029),l(-.131,.015),l(-.219,.015),l(-.146,.043),l(-.262,.029),l(-.276,.087),l(-.116,.102),l(-.087,0),l(.156,-.19),l(-.003,-.351),l(.183,-.238),l(-.368,-.21),l(-.605,.437),l(-.334,-.251),l(-.527,-.038),l(.043,-.942),l(-.396,.188),l(-.336,-.415),l(.158,-.202),l(-.209,-.254),l(.265,-.074),l(-.092,-.252),l(.344,-.042),l(1.026,-.084),l(-.006,-.132),l(.561,-.108),l(.133,-.188),l(.436,.101),l(.074,-.113),l(.317,.05),l(.083,-.215),l(1.104,.193),l(.446,-.294),l(.091,.165),l(.514,-.089),l(1.383,.029),l(1.152,.167),l(.305,.12),l(.592,-.045),l(.971,.09),l(.426,-.108),l(.271,-.24),l(-.006,-.009), -N(461.353,72.251),l(.37,-.004),l(-.015,.116),l(0,.117),l(.232,.073),l(.204,.087),l(.087,.073),l(.204,.058),l(-.015,.087),l(-.029,.116),l(-.015,.087),l(-.102,.073),l(-.087,.015),l(-.103,.029),l(.131,.087),l(-.072,.131),l(.029,.117),l(-.073,.087),l(-.102,.073),l(-.044,.102),l(.204,-.059),l(.146,-.015),l(.131,.073),l(.087,.014),l(.073,.044),l(-.059,.087),l(-.043,.073),l(.116,.102),l(.131,.058),l(.029,.16),l(.146,.102),l(.16,.043),l(-.059,.087),l(.131,.117),l(-.015,.189),l(.088,.233),l(-.044,.087),l(-.015,.117),l(-.061,.042),l(-.241,.044),l(-.24,.051),l(-.12,.12),l(-.223,.034),l(-.137,.154),l(-.137,.085),l(-.069,.103),l(-.068,.206),l(-.188,.035),l(-.239,-.035),l(-.24,-.034),l(-.325,-.034),l(-.359,0),l(-.172,.068),l(-.103,.137),l(-.223,.085),l(-.154,0),l(-.103,-.017),l(-.086,.052),l(-.377,-.035),l(-.273,-.068),l(-.154,-.171),l(-.138,-.154),l(-.325,-.137),l(-.497,-.223),l(-.342,-.24),l(-.377,-.034),l(-.583,-.035),l(-.325,-.12),l(-.291,-.188),l(-.086,-.257),l(-.188,.017),l(-.171,.068),l(-.36,.171),l(-.394,.017),l(-.24,0),l(-.273,.085),l(-.24,-.085),l(-.309,-.103),l(-.6,-.017),l(-.291,.069),l(-.359,-.069),l(-.291,-.051),l(-.154,.034),l(-.274,.069),l(-.103,-.052),l(-.12,-.137),l(-.154,0),l(-.257,.068),l(-.188,0),l(-.754,-.017),l(-.445,-.085),l(-.754,.171),l(-.599,.154),l(-.429,.103),l(-.257,.137),l(-.052,.188),l(-.526,.026),l(-.065,-.059),l(.073,-.837),l(.035,-.302),l(.127,-.167),l(.672,-.379),l(.034,-.717),l(.267,-.162),l(.267,-.273),l(.217,-.203),l(.296,-.026),l(1.056,-.199),l(.166,-.046),l(.162,-.066),l(.29,0),l(.049,.237),l(.657,.388),l(.422,.162),l(.23,.473),l(.091,.15),l(.441,.196),l(.785,.059),l(.868,-.244),l(.24,-.122),l(.178,-.288),l(-.052,-.394),l(-.193,-.869),l(.198,-.243),l(.045,-.055),l(.087,0),l(.116,-.102),l(.276,-.087),l(.262,-.029),l(.146,-.043),l(.219,-.015),l(.131,-.015),l(.102,-.029),l(.276,-.117),l(.103,0),l(.087,.029),l(.015,.073),l(.131,.058),l(.116,-.087),l(0,-.073),l(.189,.087),l(.116,.102),l(.248,.043),l(.102,.102),l(.276,.014),l(.029,0),l(.204,.117),l(.247,.043),l(.189,0),l(.072,.117),l(.146,.043),l(.203,.117),l(.116,.174),l(.204,.117),l(.175,0),l(.116,.029),l(.146,.087),l(.146,-.014),l(.16,-.087),l(.131,-.044),l(.204,.029),l(.131,-.102),l(.204,.044),l(.175,.073),l(.16,.058),l(.306,.043),l(.087,.015),l(.125,-.025), -N(451.02,79.165),l(-.029,-.038),l(-.034,-.137),l(-.018,-.171),l(.068,-.206),l(.068,-.154),l(.224,-.12),l(-.052,-.12),l(-.018,-.137),l(-.171,-.069),l(-.188,-.034),l(-.103,-.103),l(-.086,-.137),l(-.223,.017),l(-.257,0),l(-.445,0),l(-.223,.051),l(-.086,-.103),l(-.514,-.068),l(-.257,-.069),l(-.223,-.12),l(-.24,0),l(-.086,-.052),l(-.051,-.154),l(-.12,.034),l(-.353,.096),l(-.043,-.077),l(.128,-.012),l(.034,-.183),l(-.439,-.646),l(-.008,-.14),l(-.042,-.727),l(-.112,-.102),l(.526,-.026),l(.052,-.188),l(.257,-.137),l(.429,-.103),l(.599,-.154),l(.754,-.171),l(.445,.085),l(.754,.017),l(.188,0),l(.257,-.068),l(.154,0),l(.12,.137),l(.103,.052),l(.274,-.069),l(.154,-.034),l(.291,.051),l(.359,.069),l(.291,-.069),l(.6,.017),l(.309,.103),l(.24,.085),l(.273,-.085),l(.24,0),l(.394,-.017),l(.36,-.171),l(.171,-.068),l(.188,-.017),l(.086,.257),l(.291,.188),l(.325,.12),l(.583,.035),l(.377,.034),l(.342,.24),l(.497,.223),l(.325,.137),l(.138,.154),l(.154,.171),l(.273,.068),l(.377,.035),l(-.017,.171),l(-.086,.154),l(-.034,.12),l(-.12,.137),l(-.086,.137),l(.343,.034),l(.274,.052),l(.085,.051),l(-.119,.051),l(-.086,0),l(-.103,.154),l(-.018,.154),l(-.171,.017),l(-.12,-.086),l(-.12,.051),l(-.239,-.034),l(-.154,.034),l(-.086,.154),l(-.103,.154),l(-.257,.068),l(-.429,0),l(-.137,.137),l(-.12,.12),l(-.034,.154),l(-.086,.171),l(.103,.171),l(-.068,.137),l(-.239,.154),l(0,.137),l(-.068,.085),l(-.069,.137),l(.172,.034),l(.205,0),l(.138,.206),l(-.086,.188),l(-.274,.017),l(-.223,-.068),l(0,-.154),l(-.034,-.085),l(-.086,-.069),l(-.171,.051),l(-.12,.086),l(-.291,-.034),l(-.068,.137),l(-.24,.12),l(-.154,0),l(-.188,-.034),l(-.273,.103),l(.086,.171),l(-.069,.12),l(-.171,.034),l(-.137,-.034),l(-.206,.051),l(-.377,.154),l(-.291,0),l(-.068,-.103),l(-.12,-.051),l(-.239,.051),l(-.377,.017),l(-.24,.034),l(-.291,-.034),l(-.154,.034),l(-.093,-.035),l(-.09,-.171),l(-.016,-.029),l(-.099,-.186),l(-.284,-.487),l(-.679,-.243),l(-.04,-.014),l(-.641,.021), -N(452.867,80.273),l(.093,.035),l(.154,-.034),l(.291,.034),l(.24,-.034),l(.377,-.017),l(.239,-.051),l(.12,.051),l(.068,.103),l(.291,0),l(.377,-.154),l(.206,-.051),l(.137,.034),l(.171,-.034),l(.069,-.12),l(-.086,-.171),l(.273,-.103),l(.188,.034),l(.154,0),l(.24,-.12),l(.068,-.137),l(.291,.034),l(.12,-.086),l(.171,-.051),l(.086,.069),l(.034,.085),l(0,.154),l(.223,.068),l(.274,-.017),l(.086,-.188),l(-.138,-.206),l(-.205,0),l(-.172,-.034),l(.069,-.137),l(.068,-.085),l(0,-.137),l(.239,-.154),l(.068,-.137),l(-.103,-.171),l(.086,-.171),l(.034,-.154),l(.12,-.12),l(.137,-.137),l(.429,0),l(.257,-.068),l(.103,-.154),l(.086,-.154),l(.154,-.034),l(.239,.034),l(.12,-.051),l(.12,.086),l(.171,-.017),l(.018,-.154),l(.103,-.154),l(.086,0),l(.119,-.051),l(-.085,-.051),l(-.274,-.052),l(-.343,-.034),l(.086,-.137),l(.12,-.137),l(.034,-.12),l(.086,-.154),l(.017,-.171),l(.086,-.052),l(.103,.017),l(.154,0),l(.223,-.085),l(.103,-.137),l(.172,-.068),l(.359,0),l(.325,.034),l(.24,.034),l(.239,.035),l(.188,-.035),l(.068,-.206),l(.069,-.103),l(.137,-.085),l(.137,-.154),l(.223,-.034),l(.12,-.12),l(.24,-.051),l(.241,-.044),l(.165,.147),l(.229,.066),l(.197,-.131),l(.181,.016),l(.312,.033),l(.132,.148),l(.082,.148),l(.197,-.033),l(.214,-.065),l(.361,-.049),l(.312,.049),l(.296,.065),l(.147,.017),l(0,.115),l(-.164,.099),l(-.017,.099),l(.065,.148),l(.164,.148),l(.197,0),l(.214,-.197),l(.279,-.016),l(.165,0),l(.147,-.099),l(.23,-.083),l(.131,.049),l(.099,.049),l(.247,-.049),l(.542,.115),l(.132,.131),l(.279,.099),l(.099,.099),l(.147,.099),l(.165,.033),l(.147,-.033),l(.049,.115),l(-.065,.115),l(0,.083),l(-.033,.164),l(-.131,.165),l(.197,.247),l(.147,.099),l(.05,.164),l(-.066,.131),l(-.114,0),l(0,.083),l(-.115,.082),l(-.099,.049),l(-.033,.165),l(-.049,.147),l(.345,.049),l(.132,.181),l(.082,.115),l(.181,-.049),l(.132,.033),l(-.099,.115),l(-.066,.131),l(.017,.099),l(.214,.017),l(.164,.263),l(.115,.23),l(.443,.213),l(.23,.066),l(.279,.082),l(.164,.099),l(.066,.148),l(-.099,.197),l(-.066,.181),l(.182,.066),l(.361,-.066),l(.378,.066),l(.361,.099),l(.263,.066),l(-.032,.065),l(-.066,.049),l(-.082,.017),l(.099,.181),l(.296,.148),l(.279,.066),l(.033,.131),l(-.065,.164),l(-.296,0),l(-.148,.083),l(-.049,.065),l(-.444,.247),l(-.525,.099),l(-.51,-.016),l(-.197,-.132),l(-.328,-.049),l(-.362,.017),l(-.131,.165),l(-.099,.131),l(.017,.164),l(.279,.263),l(.296,.164),l(0,.165),l(-.132,.066),l(.099,.148),l(.147,.131),l(-.082,.099),l(.033,.164),l(.033,.23),l(-.033,.099),l(.164,.082),l(.082,.115),l(.165,.066),l(.002,.142),l(-.519,-.005),l(-.522,.056),l(-.112,.131),l(-.205,-.056),l(-.187,-.037),l(-.336,.075),l(-.057,.13),l(-.111,.112),l(-.317,.187),l(-.188,.261),l(-.261,.224),l(-.057,.206),l(.243,.205),l(.056,.149),l(-.131,.206),l(-.261,-.019),l(-.149,-.056),l(-.149,-.206),l(-.112,-.056),l(-.187,-.075),l(-.224,-.037),l(-.225,.037),l(-.242,.075),l(-.299,.019),l(-.149,-.131),l(-.224,.075),l(-.188,.093),l(-.316,.056),l(-.188,-.056),l(-.037,-.205),l(-.112,-.131),l(-.168,-.131),l(-.13,.038),l(-.131,.075),l(-.168,0),l(-.299,.149),l(-.131,.149),l(-.168,0),l(-.094,-.187),l(-.13,-.075),l(-.206,0),l(-.224,.112),l(-.131,-.187),l(-.224,-.093),l(-.131,.112),l(-.354,.056),l(-.262,-.112),l(-.112,0),l(-.019,.205),l(-.168,.093),l(-.093,-.056),l(.056,-.224),l(-.243,-.038),l(-.187,-.056),l(-.541,.112),l(0,-.149),l(-.187,0),l(.019,-.224),l(-.28,-.037),l(-.242,.075),l(-.523,-.112),l(-.578,-.056),l(-.075,-.056),l(-.522,0),l(-.205,-.168),l(-.262,.019),l(-.522,-.093),l(-.467,.075),l(-.485,0),l(-.354,-.056),l(-.355,.056),l(-.354,.056),l(-.485,-.038),l(-.485,.019),l(-.205,.187),l(-.037,.168),l(-.374,.168),l(-.373,.206),l(-.112,-.112),l(-.261,0),l(-.374,-.019),l(-.037,.131),l(0,.045),l(-.126,-.137),l(.315,-.752),l(-.013,-.25),l(-.218,-.146),l(-.149,-.176),l(-.421,-.146),l(-.289,-.012),l(.128,-.292),l(.291,-.328),l(.571,-.244),l(.44,-.03),l(.263,-.208),l(.023,-.236),l(-.172,-.502),l(-.615,-1.5),l(-.16,-.302), -N(400.125,81.146),l(.633,.305),l(.208,.207),l(.208,.37),l(-.038,.193),l(-.545,.563),l(.714,.176),l(.396,-.311),l(.527,-.119),l(.602,.028),l(.807,.176),l(.467,.354),l(.235,.752),l(-.077,.221),l(-.322,.414),l(-1.068,.473),l(-.767,.561),l(-.96,.237),l(1.223,.167),l(.501,.043),l(.354,-.104),l(.39,.117),l(-.066,.516),l(-.997,.308),l(.005,.199),l(-.479,-.084),l(-1.068,.443),l(-.879,-.142),l(-.293,-.048),l(-1.119,.211),l(-.587,-.211),l(-.598,.112),l(-1.584,.141),l(.137,.295),l(-.907,-.168),l(-.264,.168),l(-.911,-.337),l(-.334,.143),l(-.913,.089),l(-.093,.569),l(-.337,.316),l(-.37,.042),l(-.272,-.252),l(-.53,-.172),l(-.135,.151),l(-.527,-.077),l(-.948,.324),l(-.701,.552),l(-.326,-.231),l(-.775,-.147),l(1.2,-.472),l(.492,-.476),l(.447,-.097),l(.468,-.388),l(.118,-.485),l(.242,.063),l(.367,-.211),l(-.008,-.274),l(1.013,-.105),l(.76,.119),l(.927,.007),l(.073,-.338),l(.308,-.142),l(.321,-.556),l(-.939,.394),l(-.725,.016),l(-1.467,-.482),l(-1.866,-.055),l(-.399,-.191),l(-.156,-.162),l(.417,-.325),l(.983,-.194),l(.721,-.237),l(.38,-.384),l(.066,-.827),l(-.119,-.192),l(-.713,.046),l(-.34,-.044),l(.288,-.355),l(.387,-.223),l(.802,-.253),l(1.394,-.062),l(.922,-.076),l(-.316,-.548),l(.172,-.683),l(.253,-.461),l(-.045,-.312),l(-.834,.061),l(-.484,-.296),l(-.2,-.312),l(.309,-.507),l(.617,-.433),l(-.347,-.104),l(-.596,-.088),l(-.735,.3),l(-.476,.061),l(-.753,-.222),l(-.088,.194),l(-.222,.194),l(-.672,-.103),l(-.464,-.133),l(.1,-.343),l(.348,-.36),l(.604,-.706),l(-.293,-.134),l(-.305,-.39),l(.028,-.24),l(.304,-.106),l(.3,-.196),l(-.194,-.496),l(-.306,.076),l(-.636,.453),l(-.442,.031),l(-.526,.287),l(-.14,-.421),l(.302,-.527),l(.438,-.559),l(.065,-.257),l(-.417,-.195),l(-.196,-.045),l(-.218,.302),l(-.394,.257),l(-.493,-.165),l(.299,-.575),l(.54,-.455),l(.09,-.136),l(-.225,-.575),l(.366,-.092),l(.225,-.197),l(-.672,-.515),l(.432,-.351),l(.752,.151),l(.387,-.092),l(-.645,-.759),l(.975,-.169),l(-.457,-.502),l(.416,-.382),l(.924,.365),l(.824,-.093),l(.686,-.139),l(.867,-.047),l(.612,.014),l(.303,.259),l(-.307,.29),l(-1.726,.704),l(-.46,.274),l(-.218,.441),l(.222,.182),l(.784,.029),l(.877,-.078),l(.685,-.001),l(.53,.075),l(1.563,-.064),l(.458,.378),l(-.363,.425),l(-.212,.323),l(.098,.112),l(-.565,.66),l(-.226,.111),l(-.339,.437),l(-.696,.261),l(-.382,.038),l(.451,.186),l(.508,.167),l(-.116,.015),l(-.272,.19),l(-.61,.052),l(-.275,.196),l(-1.337,-.025),l(.404,.223),l(.302,0),l(.492,.093),l(.432,-.006),l(.519,-.223),l(.413,-.025),l(.449,.161),l(.656,.164),l(.673,.566),l(.496,.228),l(.118,.165),l(-.067,.238),l(.312,.78),l(.371,.536),l(.438,.189),l(.714,.107),l(.59,.549),l(.688,.593),l(.135,.52),l(-.188,.49),l(.257,.124),M(387.915,77.13),l(-.128,-.325),l(.149,-.335),l(.38,-.089),l(.079,.501),l(-.307,.251),l(-.173,-.003),M(386.786,80.184),l(-.178,-.272),l(-.967,.072),l(.123,-.256),l(-.364,-.15),l(-.26,-.257),l(-.335,-.107),l(-.253,.364),l(-.751,.257),l(-.778,-.192),l(-.401,-.278),l(-.101,-.278),l(.86,-.278),l(-.483,-.257),l(.817,-.107),l(.385,-.484),l(-.029,-.235),l(.449,-.09),l(.508,-.15),l(.781,-.077),l(.424,.044),l(.389,.104),l(.362,-.046),l(.218,.149),l(.519,.791),l(.047,.179),l(-.081,.298),l(.308,.446),l(-.155,.328),l(-.402,.328),l(-.354,.12),l(-.299,.038), -N(578.943,106.217),l(-.41,-.375),l(-.466,-.098),l(-.663,0),l(-.196,-.27),l(-.27,-.147),l(-.147,-.344),l(-.564,.049),l(-.981,-.246),l(-.662,.074),l(-1.35,-.024),l(-.662,-.098),l(-.712,-.221),l(-.785,.147),l(-.761,0),l(-.858,.024),l(-.441,.27),l(-.54,-.098),l(-.908,-.196),l(-.735,-.246),l(-.761,-.27),l(-.589,-.074),l(-.688,.123),l(-.466,.368),l(-.245,.736),l(.024,.442),l(-.344,-.123),l(-.81,-.123),l(-.688,-.196),l(-.883,-.245),l(-.883,-.147),l(-.663,.098),l(-.736,.123),l(-.318,.368),l(-.393,.442),l(.044,.273),l(-.322,.031),l(-.377,.377),l(-.283,-.126),l(-.22,.063),l(-.346,.283),l(-.534,.471),l(-.755,.189),l(-.943,.377),l(-.282,.188),l(-.221,.472),l(-.439,.188),l(-.504,.44),l(.157,.409),l(-.125,.188),l(-.66,0),l(-.44,-.346),l(.062,-.283),l(-.062,-.283),l(-.44,-.314),l(-.346,0),l(-1.006,.094),l(-.691,.032),l(-.503,-.063),l(-.346,-1.069),l(-.221,-.817),l(-1.006,0),l(-.031,-.754),l(.188,-.409),l(.031,-1.038),l(-.66,.314),l(-.66,-1.006),l(-.597,-.22),l(-.724,-.723),l(-1.1,.409),l(-2.767,-.188),l(-2.578,.346),l(-2.012,-1.666),l(-5.722,-2.986),l(-5.658,1.289),l(-.056,8.174),l(-.158,-.014),l(-.341,.106),l(-.489,.043),l(-.447,-.255),l(-.638,-.703),l(-.256,-.511),l(-.617,-.383),l(-.681,-.383),l(-.512,-.234),l(-.979,.085),l(-1.277,.298),l(-.937,.532),l(-.529,.453),l(.092,-.399),l(-.06,-.18),l(-.12,-.12),l(.14,-.26),l(.2,-.2),l(.14,-.32),l(.04,-.3),l(.18,-.2),l(-.159,-.24),l(-.4,-.16),l(-.459,.06),l(-.18,-.16),l(-.3,.06),l(-.2,.04),l(-.199,-.18),l(-.221,-.32),l(-.319,-.28),l(-.34,0),l(-.359,.02),l(0,-.2),l(.08,-.28),l(-.2,-.379),l(-.239,-.12),l(-.2,-.24),l(-.399,-.799),l(-.08,-.28),l(-.56,-.12),l(-.699,-.08),l(-.14,-.16),l(.02,-.439),l(.16,-.12),l(.3,-.06),l(.399,.02),l(.34,.02),l(.479,.14),l(.539,.18),l(.18,-.08),l(.36,-.08),l(-.2,-.16),l(-.26,-.12),l(-.399,-.2),l(-.2,-.24),l(.26,-.36),l(.28,-.04),l(.08,-.26),l(.18,-.299),l(.12,-.14),l(.26,.04),l(.319,-.08),l(.16,-.1),l(.339,.12),l(.24,0),l(1.119,-.04),l(.999,.14),l(.499,.02),l(-.159,-.08),l(-.34,-.2),l(-.479,-.12),l(-.021,-.3),l(.2,-.2),l(.279,-.22),l(.221,-.28),l(.119,-.52),l(.12,-.28),l(-.16,-.24),l(-.14,-.16),l(.1,-.2),l(.26,-.2),l(-.119,-.12),l(-.101,-.3),l(-.359,-.12),l(-.359,-.04),l(-.68,-.1),l(-.2,.16),l(-.199,.08),l(-.52,.08),l(-.46,-.12),l(-.319,-.26),l(-.26,-.06),l(-.68,-.12),l(-.56,.06),l(-.659,.319),l(-.42,.02),l(-.799,.5),l(-.72,.28),l(-.499,.06),l(-.42,-.02),l(-.279,.24),l(-.213,.18),l(-.616,-.19),l(-.857,-.377),l(-.068,-.308),l(.343,-.103),l(.309,.103),l(.445,.103),l(.138,-.103),l(-.96,-1.131),l(-.343,-.514),l(-.479,-.206),l(-.515,-.445),l(-.514,-.034),l(-.343,.034),l(-.583,-.206),l(-.103,.343),l(-.514,-.514),l(.068,-.309),l(-.138,-.377),l(-1.37,-.343),l(.65,-1.165),l(.446,-.274),l(.239,-.206),l(-.239,-.274),l(-.343,-.171),l(.205,-1.303),l(.823,-.137),l(.343,-.549),l(.103,-.308),l(.411,-.069),l(.514,.24),l(.48,.548),l(.514,.411),l(.651,0),l(.411,-.24),l(.068,-.446),l(-.171,-.411),l(-.068,-.445),l(.479,-.206),l(.891,-.411),l(.172,-.24),l(.309,-.309),l(.514,-.171),l(.549,-.068),l(.788,-.377),l(.548,-.343),l(.515,-.309),l(.651,.069),l(.479,0),l(.309,.274),l(.651,-.137),l(.273,-.137),l(.617,-.24),l(.411,.069),l(.411,.514),l(.788,.035),l(.617,-.069),l(.96,.171),l(0,.343),l(.582,.206),l(.789,.343),l(.411,.274),l(.068,.583),l(.274,.137),l(.239,-.274),l(-.205,-.48),l(-.034,-.24),l(.72,.068),l(.582,.548),l(.686,.137),l(.411,.24),l(.686,-.171),l(.274,-.274),l(.377,-.343),l(.514,-.377),l(.823,.068),l(.65,.035),l(.651,.411),l(.617,-.068),l(.137,-.412),l(1.062,-.103),l(.754,.103),l(.274,.548),l(.926,.309),l(.754,.137),l(.411,.171),l(.651,-.343),l(.171,-.309),l(.24,0),l(.343,.343),l(.959,.034),l(1.577,-.411),l(.137,-.309),l(.138,-.686),l(-.24,-.24),l(-1.165,-.171),l(-.274,-.308),l(-.651,-.069),l(-.377,-.137),l(.068,-.171),l(-.377,-.137),l(-.239,0),l(-.164,-.274),l(.467,-.067),l(.735,-.368),l(.588,-.147),l(.331,-.294),l(-.441,-.478),l(-.146,-.257),l(.662,-.515),l(.698,-.184),l(1.103,.147),l(.515,-.073),l(.11,-.257),l(-.956,-.294),l(-1.065,-.11),l(0,-.331),l(.294,-.074),l(-.294,-.221),l(-.074,-.441),l(.185,-.515),l(.33,-.074),l(1.066,.147),l(.515,0),l(.772,0),l(.368,-.184),l(1.396,-.405),l(1.029,-.037),l(.735,-.11),l(1.545,-.11),l(.588,-.073),l(.331,.073),l(.221,-.331),l(.625,-.331),l(1.177,-.037),l(2.021,-.405),l(1.876,-.073),l(.625,-.074),l(.367,-.368),V(0,77.39),l(.515,-.037),l(.589,-.184),l(.11,-.221),l(.735,-.037),l(.919,.147),l(.515,.11),l(.772,.257),l(.625,-.11),l(.882,-.037),l(.368,.404),l(-.037,.331),l(.147,.221),l(.515,.22),l(-.11,.331),l(-.147,.257),l(.073,.331),l(-.33,.037),l(.184,.257),l(.478,.074),l(.295,-.147),l(.44,.11),l(.368,-.147),l(.367,.074),l(.331,-.221),l(.294,.11),l(.295,.368),l(.367,.221),l(.147,-.147),l(.184,-.147),l(.478,.037),l(.405,.294),l(.478,.11),l(.441,-.221),l(.367,0),l(-.146,.294),l(-.441,.184),l(-.331,.441),l(.331,.184),l(.441,-.11),l(.771,-.073),l(.441,.037),l(.552,.184),l(.294,-.294),l(.772,-.441),l(1.103,-.257),l(.956,-.515),l(.772,-.221),l(.515,-.22),l(.809,-.074),l(0,.441),l(-.515,.11),l(-.11,.368),l(1.104,.588),l(.809,.294),l(1.287,.772),l(1.066,1.029),l(1.69,2.133),l(.846,.882),l(1.104,1.434),l(.515,-.257),l(.331,-.257),l(.367,-.515),l(.92,0),l(.367,.331),l(0,.368),l(.478,0),l(.258,.257),l(.184,.184),l(.589,0),l(.992,0),l(.993,-.221),l(.771,-.221),l(.993,-.037),l(.698,.441),l(.772,.588),l(.331,.625),l(.956,.147),l(.588,.552),l(.662,.699),l(.882,.073),l(.993,.074),l(.478,-.368),l(.625,-.184),l(-.073,.331),l(.441,.331),l(.294,.478),l(.589,0),l(.064,.145),l(-.551,.034),l(-.542,.148),l(-.279,.262),l(-.011,.275),l(-.035,.478),l(-.306,.219),l(-.289,.06),l(-1.199,.093),l(-.428,.277),l(-.34,.581),l(.097,.75),l(.213,.707),l(-.157,.39),l(-.444,.392),l(-.417,.103),l(-.718,.062),l(-1.402,-.079),l(-.594,-.141),l(-.721,-.141),l(-1.096,-.254),l(-.427,.507),l(-.516,1.141),L(584.2,97.43),l(-.286,.605),l(-.137,.418),l(.622,.514),l(.126,.286),l(-.156,.245),l(-.231,.145),l(-.394,.074),l(-1.133,-.238),l(-.5,-.184),l(-.35,.06),l(-1.082,.207),l(-1.799,.254),l(-.393,.188),l(-.215,.302),l(-.068,.215),l(.232,.185),l(.366,-.06),l(.483,.141),l(.03,1.357),l(.345,.627),l(.29,.441),l(.119,.47),l(-.222,.33),l(-.705,.546),l(-.32,.401),l(-.02,.399),l(.139,.86), -N(386.786,80.184),l(-.304,.038),l(-.223,.09),l(.241,.252),l(.361,.771),l(.287,1.213),l(-.061,.281),l(-.359,.341),l(-.242,.414),l(-.145,.473),l(-.185,.044),l(-.284,-.058),l(-.616,.031),l(-.15,.212),l(-.913,.042),l(-.84,.132),l(-.247,.144),l(-.661,.286),l(-.903,.498),l(-.628,.035),l(-.879,.283),l(-1.28,.084),l(.053,-.378),l(-.089,-.441),l(-.848,.1),l(-.171,-.487),l(.734,-.254),l(-1.186,-.021),l(.062,-.233),l(1.286,.027),l(.198,-.104),l(.039,-.222),l(.107,-.31),l(.515,-.134),l(.692,-.031),l(.13,-.281),l(-1.07,.099),l(.387,-.437),l(-.187,-.159),l(.481,-.468),l(.694,-.011),l(.163,-.089),l(-.174,-.311),l(-.348,.177),l(-.309,-.131),l(-.319,.03),l(-.391,-.177),l(-.414,.001),l(-.182,.106),L(378,81.478),l(.309,-.306),l(-.29,-.142),l(.759,-.126),l(-.139,-.301),l(.391,-.235),l(-.481,-.214),l(-.59,.128),L(378,79.792),l(.38,-.268),l(.215,-.16),l(.928,.187),l(.336,-.075),l(.527,.038),l(1.102,.123),l(-.214,-.358),L(382.132,79),l(.198,-.321),l(-1.373,0),l(.154,-.15),l(.569,-.107),l(.061,-.29),l(.291,-.479),l(.505,-.181),l(.804,-.169),l(.22,.302),l(.354,.149),l(.156,-.031),l(.029,.235),l(-.385,.484),l(-.817,.107),l(.483,.257),l(-.86,.278),l(.101,.278),l(.401,.278),l(.778,.192),l(.751,-.257),l(.253,-.364),l(.335,.107),l(.26,.257),l(.364,.15),l(-.123,.256),l(.967,-.072),l(.178,.272), -N(452.998,85.535),V(0,85.49),l(.037,-.131),l(.374,.019),l(.261,0),l(.112,.112),l(.373,-.206),l(.374,-.168),l(.037,-.168),l(.205,-.187),l(.485,-.019),l(.485,.038),l(.354,-.056),l(.355,-.056),l(.354,.056),l(.485,0),l(.467,-.075),l(.522,.093),l(.262,-.019),l(.205,.168),l(.522,0),l(.075,.056),l(.578,.056),l(.523,.112),l(.242,-.075),l(.28,.037),l(-.019,.224),l(.187,0),l(0,.149),l(.541,-.112),l(.187,.056),l(.243,.038),l(-.056,.224),l(.093,.056),l(.168,-.093),l(.019,-.205),l(.112,0),l(.262,.112),l(.354,-.056),l(.131,-.112),l(.224,.093),l(.131,.187),l(.224,-.112),l(.206,0),l(.13,.075),l(.094,.187),l(.168,0),l(.131,-.149),l(.299,-.149),l(.168,0),l(.131,-.075),l(.13,-.038),l(.168,.131),l(.112,.131),l(.037,.205),l(.188,.056),l(.316,-.056),l(.188,-.093),l(.224,-.075),l(.149,.131),l(.299,-.019),l(.242,-.075),l(.225,-.037),l(.224,.037),l(.187,.075),l(.112,.056),l(.149,.206),l(.149,.056),l(.261,.019),l(.131,-.206),l(-.056,-.149),l(-.243,-.205),l(.057,-.206),l(.261,-.224),l(.188,-.261),l(.317,-.187),l(.111,-.112),l(.057,-.13),l(.336,-.075),l(.187,.037),l(.205,.056),l(.112,-.131),l(.522,-.056),l(.519,.005),l(.357,.089),l(.469,.022),l(.313,-.156),l(.179,-.291),l(.134,-.268),l(.536,.246),l(.536,-.022),l(.67,-.223),l(.692,.112),l(.514,-.134),l(.201,.268),l(.312,.134),l(.246,.335),l(.134,.201),l(.246,.156),l(.312,.156),l(0,.268),l(-.312,-.022),l(-.312,.134),l(.134,.291),l(.111,.357),l(.269,.29),l(.647,0),l(.156,.112),l(.514,-.067),l(.38,.022),l(0,.312),l(.402,0),l(0,.357),l(.224,.268),l(.089,.246),l(-.089,.179),l(.089,.224),l(.179,.089),l(.291,.29),l(.268,-.179),l(.47,-.067),l(.268,.067),l(.469,.291),l(.201,-.067),l(.179,.022),l(.179,.156),l(.425,-.112),l(.312,-.112),l(.269,0),l(.536,-.134),l(.357,-.067),l(.111,.156),l(.268,.179),l(0,.134),l(.201,.179),l(.022,.134),l(.402,.044),l(.179,.179),l(.224,.112),l(.29,-.134),l(.045,-.157),l(.224,-.067),l(.29,.268),l(.425,.067),l(.469,.112),l(.268,.112),l(.357,-.067),l(.201,.179),l(.291,.089),l(.469,.022),l(.111,.224),l(.357,.156),l(.269,0),l(.134,-.044),l(.201,-.089),l(.156,.089),l(-.089,.111),l(-.022,.179),l(.111,.089),l(.09,.179),l(-.045,.224),l(-.201,.089),l(-.156,.067),l(-.357,.201),l(-.312,.044),l(.223,.246),l(.269,.089),l(.29,.044),l(-.134,.156),l(-.312,0),l(-.246,0),l(-.045,.179),l(-.044,.224),l(.156,.067),l(.179,.067),l(.044,.134),l(.045,.179),l(.09,.201),l(.066,.067),l(-.156,.491),l(-.156,.291),l(0,.156),l(-.335,.134),l(-.805,-.157),l(-.736,.045),l(-.269,0),l(-.022,.179),l(-.223,.179),l(-.38,.134),l(-.357,.022),l(-.224,.089),l(-.09,.514),l(0,.224),l(-.021,.112),l(-.012,.126),l(-.779,.104),l(-.971,.06),l(-.511,.405),l(-.729,.189),l(-1.135,.075),l(-1.119,.248),l(-.502,.318),l(-.463,.059),l(-.453,-.316),l(-.369,.621),l(-.31,.188),l(-.477,.044),l(-.438,-.057),l(-.959,.031),l(-.5,.16),l(.641,.287),l(1.957,1.004),l(.053,.172),l(-.093,.188),l(.163,.244),l(.562,.042),l(.511,-.13),l(.675,-.146),l(1.052,.013),l(.439,.114),l(-.235,.259),l(-.106,.245),l(-.228,.144),l(-.578,.116),l(-.31,.029),l(-.591,-.157),l(-.473,.044),l(-.71,.489),l(-1.007,.045),l(-.538,.188),l(-.527,.488),l(-.269,.101),l(-.786,-.07),l(-.588,-.171),l(.364,-.746),l(-.096,-.416),l(-.264,-.287),l(-.854,-.286),l(-.193,-.014),l(-.629,.016),l(-.151,.043),l(-.16,-.187),l(.887,-.505),l(.644,-.261),l(.772,-.188),l(.221,-.116),l(-.246,-.46),l(-.435,-.071),l(-.799,.044),l(-1.015,.045),l(-.698,-.1),l(-.195,-.101),l(-.418,-.432),l(.584,-.405),l(-.528,-.605),l(-.378,.361),l(-.541,.001),l(-1.001,.146),l(-.565,.131),l(-.694,.722),l(-1.003,.867),l(-.754,.203),l(-.223,.044),l(-.287,.504),l(.079,.158),l(.178,.093),l(-.706,-.131),l(-.665,.261),l(-.457,0),l(-.033,.189),l(-.609,-.047),l(-.398,-.166),l(-.119,-.249),l(-.15,.02),l(.055,-.077),l(.102,-.025),l(.126,.013),l(.113,.013),l(.189,0),l(.088,-.114),l(0,-.088),l(-.063,-.113),l(.025,-.113),l(.126,-.063),l(.051,-.063),l(.075,-.013),l(.089,-.025),l(.088,-.063),l(.089,-.088),l(.024,-.126),l(-.013,-.114),l(.14,-.013),l(.29,-.063),l(.075,-.076),l(-.025,-.088),l(-.062,-.088),l(.126,-.114),l(.037,-.063),l(-.012,-.088),l(-.114,-.113),l(.051,-.101),l(-.088,-.151),l(-.063,-.101),l(.202,-.151),l(.239,-.025),l(.126,-.088),l(.113,.025),l(.013,.088),l(-.013,.214),l(.063,.013),l(.113,0),V(0,96.92),l(-.013,-.063),l(.101,.038),l(.063,.051),l(.025,-.076),l(.075,-.038),l(.139,-.012),l(0,.075),l(.089,.063),l(.075,0),l(.126,.164),l(.076,-.076),l(.075,-.076),l(.013,-.05),l(.101,-.025),l(.177,0),l(-.037,.189),l(.176,.025),l(.038,-.038),l(.038,-.038),l(.139,.013),l(.227,0),l(.038,-.025),l(.075,-.076),l(-.126,-.013),l(-.164,-.126),l(-.101,-.051),l(-.075,-.05),l(.013,-.038),l(.101,-.063),l(-.025,-.113),l(.038,-.101),l(-.013,-.126),l(-.051,-.139),l(-.101,-.063),l(-.177,-.076),l(-.075,0),l(-.151,-.126),l(-.151,-.063),l(-.151,-.038),l(.051,-.151),l(.037,-.088),l(-.037,-.051),l(-.127,.038),l(-.062,-.114),l(.113,-.038),l(-.013,-.189),l(.089,-.075),l(-.025,-.101),l(-.038,-.088),l(-.113,0),l(-.102,.05),l(-.088,.051),l(-.113,-.088),l(-.089,-.101),l(-.188,-.101),l(-.139,-.025),l(-.102,-.139),l(-.05,-.139),l(.177,-.139),l(0,-.189),l(.024,-.114),l(.051,-.05),l(-.126,-.063),l(.164,-.151),l(-.113,-.025),l(-.076,-.063),l(-.062,-.126),l(-.14,-.013),l(-.062,.101),l(-.126,-.025),l(-.215,-.025),l(-.126,-.189),l(-.05,-.189),l(-.417,-.075),l(-.277,.012),l(-.062,.051),l(-.076,.101),l(-.062,-.05),l(0,-.076),l(-.089,-.025),l(-.101,.038),l(.038,-.05),l(.088,-.101),l(-.025,-.063),l(-.113,0),l(-.177,.038),l(-.126,-.025),l(-.101,.013),l(-.076,-.076),l(-.05,-.063),l(-.101,-.063),l(-.151,-.013),l(-.139,-.05),l(-.14,-.126),l(-.214,-.088),l(-.038,-.013),l(-.126,.025),l(-.05,.025),l(-.114,-.051),l(-.088,-.025),l(-.139,.025),l(-.177,.051),l(-.177,-.025),l(-.062,.038),l(-.126,.114),l(-.202,0),l(-.265,-.038),l(-.126,.051),l(-.315,-.114),l(-.088,.101),l(.012,.113),l(-.126,0),l(-.075,-.063),l(-.126,.114),l(-.06,.052),l(-.634,.08),l(-.151,.311),l(-.278,.178),l(-1.992,.191),l(-.186,.215),l(-.243,.119),l(-.339,.06),l(-.188,-.227),l(-.327,.004),l(-.025,-.231),l(-.363,.045),l(-1.115,-.066),l(-.958,-.193),l(-.241,.107),l(-.787,-.121),l(-.136,.085),l(-.678,-.387),l(-.554,-.2),l(-.668,-.301),l(-.166,.015),l(1.047,-1.471),l(.653,.018),l(-.349,-.383),l(-.044,-.552),l(.082,-.306),l(1.509,-1.218),l(.599,-.398),l(.286,-.181),l(.429,-.013),l(.255,-.24),l(.009,-.314),l(-.328,-.302),l(.085,-.133),l(.298,-.048),l(-.316,-.193),l(-.816,-.835),l(.074,-.242),l(-.161,-.175), -N(660.044,89.132),l(-.295,.31),l(-.687,1.207),l(-1.224,1.959),l(-.381,.58),l(.269,.836),l(.051,.029),l(.342,-.045),l(.929,-.395),l(.754,-.062),l(.576,-.018),l(.317,.085),l(.431,.416),l(.292,.07),l(1.191,-.786),l(.438,-.002),l(.928,.212),l(.538,.199),l(.797,.5),l(.879,.99),l(.599,.501),l(.048,.273),l(-.107,.217),l(-.414,.218),l(-.464,-.127),l(-1.074,-.008),l(-.432,-.099),l(-.854,.033),l(-.937,.221),l(-.539,.146),l(-.831,.278),l(-.353,.189),l(-.483,-.127),l(-.464,.045),l(-.47,.204),l(-.363,.333),l(-.312,.82),l(-.241,.216),l(-.347,.188),l(-.638,.248),l(-.896,.134),l(-.624,-.054),l(-.438,-.012),l(-.224,-.013),l(-1.192,.91),l(-.742,.433),l(-.744,.047),l(-.982,.005),l(-.592,-.125),l(-.668,-.382),l(-.718,-.154),l(-.316,.073),l(-.457,.231),l(-.539,.589),l(-.214,.401),l(.003,.343),l(.389,.569),l(.599,.411),l(.188,.228),l(-.123,.271),l(-.326,.259),l(-1.265,.292),l(-.67,.389),l(-1.111,1.046),l(-.265,.172),l(-1.941,.737),l(-.651,.061),l(-.987,-.08),l(-1.514,.065),l(-1.339,.007),l(-1.204,.349),l(-.816,.289),l(-.736,.274),l(-.303,.101),l(-1.44,.534),l(-.686,.289),l(-.481,.017),l(-.433,-.197),l(-.253,-.297),l(-.61,-.067),l(-.663,.061),l(-.929,-.123),l(-1.599,-.433),l(-1.006,-.365),l(-.815,-.551),l(-.521,-.168),l(-1.69,-.119),l(-1.164,-.022),l(-.937,-.023),l(-2.861,.059),l(-1.165,-.022),l(-.802,-.109),l(-1.241,-.207),l(-1.979,-.018),l(-.444,-.254),l(-.467,-.439),l(-1.571,-2.161),l(-.105,-.542),l(-.744,-.096),l(-.839,-.31),l(-1.645,-.806),l(-.632,-.268),l(-.998,-.224),l(-.668,-.083),l(-.995,-.038),l(-1.505,-.021),l(-1.062,-.181),l(-.724,-.312),l(-.233,-.229),l(-.105,-.43),l(.035,-.129),l(.369,-.347),l(.214,-.389),l(.237,-.75),l(.215,-.447),l(-.401,-.66),l(-1.07,-1.451),l(-.568,-.618),l(-.354,-.143),l(-.633,-.144),l(-.731,-.167),l(-.614,-.069),l(-.834,-.415),l(-1.301,-.745),l(-.371,-.433),l(-.24,-.563),l(-.131,-.405),l(-.062,-.145),l(.154,-.044),l(.799,-.425),l(.599,-.207),l(1.387,-.08),l(.603,-.148),l(.727,-.381),l(.017,-.012),l(.971,-.692),l(.787,-.398),l(1.143,-.341),l(1.512,-.476),l(.84,-.18),l(.953,.097),l(.932,.156),l(1.842,.122),l(.831,.083),l(.694,.755),l(.393,.406),l(.699,.113),l(1.458,-.008),l(.719,.083),l(.85,-.004),l(.875,.068),l(.312,.114),l(.576,.186),l(.562,-.018),l(.755,-.28),l(.31,-.162),l(.744,-.572),l(.163,-.526),l(-.116,-.204),l(-.396,-.304),l(-.409,-.86),l(.098,-.293),l(.905,-.839),l(1.269,-.96),l(.84,.201),l(1.028,.098),l(1.036,.185),l(1.748,.328),l(.702,.231),l(.989,.317),l(.767,.143),l(.145,.204),l(.004,.541),l(.182,.481),l(.408,.451),l(.421,.333),l(1.643,.531),l(.673,.113),l(2.48,-.538),l(.796,-.077),l(1.172,.037),l(1.423,.022),l(.769,.229),l(1.333,.75),l(.623,.331),l(1.132,.313),l(.812,.373),l(1.318,.254),l(.905,.241),l(.984,.082),l(.739,.039),l(1.602,-.11),l(1.018,-.063),l(.532,-.075),l(.867,-.106),l(1.147,-.136),l(.526,-.163),l(.604,-.264),l(.447,-.394),l(.755,-.498),l(1.165,-.487),l(.333,-.002),l(.609,-.047),l(.74,.156),l(.751,.506),l(.34,.129),l(.86,.169),l(1.228,-.297),l(.622,-.018),l(.431,.168), -N(406.183,86.551),l(1.051,-.494),l(.485,-.089),l(.574,.087),l(.465,-.016),l(.209,-.147),l(.477,.098),l(.407,.042),l(.52,-.034),l(-.025,-.157),l(.307,.012),l(.307,0),l(.267,-.182),l(.313,.242),l(.173,-.121),l(.228,.061),l(.292,.375),l(.535,-.109),l(.754,.375),l(-.11,.423),l(-.172,.097),l(.001,.338),l(.672,-.024),l(.344,.177),l(.282,.365),l(.038,.468),l(-.422,.376),l(-.225,-.072),l(-.142,.08),l(-.245,.147),l(-.213,.322),l(.017,.327),l(.31,.204),l(-.136,.348),l(-.079,-.114),l(-.694,.174),l(-.127,-.228),l(-.371,-.204),l(-.341,-.192),l(-.529,-.048),l(.039,-.228),l(-.146,-.18),l(.119,-.373),l(-.245,.072),l(-.193,.313),l(-.446,.035),l(-.406,.075),l(-.285,-.122),l(.072,-.198),l(-.091,-.175),l(.159,-.241),l(-.375,-.168),l(-.576,-.048),l(-.259,.012),l(-.159,-.301),l(-.518,.012),l(-.194,-.133),l(-.202,-.458),l(-.153,-.17),l(-.41,.208),l(-.141,.071),l(-.266,-.127),l(-.311,-.335),l(-.208,-.447), -N(438.22,91.952),l(.039,-.044),l(.065,-.105),l(.014,-.131),l(.092,-.066),l(.146,-.119),l(.026,-.04),l(.171,-.053),l(.093,-.026),l(.092,.053),l(.132,.053),l(.158,0),l(.065,-.026),l(.093,0),l(.065,.026),l(.065,.026),l(.093,-.026),l(.145,-.04),l(.132,0),l(.118,-.053),l(.079,-.053),l(.066,-.026),l(.105,-.026),l(.039,0),l(.053,-.079),l(.04,-.092),l(.079,-.079),l(.092,.026),l(.105,-.04),l(.145,-.066),l(.053,-.105),l(.053,-.079),l(.026,-.132),l(.026,-.092),l(.053,-.092),l(.118,-.013),l(.105,-.013),l(.132,-.079),l(.119,-.053),l(.118,-.092),l(.053,-.079),l(.132,-.066),l(.065,-.04),L(442,89.998),l(.145,.013),l(.105,.026),l(.066,-.04),l(.065,-.066),l(.071,.012),l(.285,.041),l(.03,.228),l(.43,-.048),l(.183,-.24),l(.193,.016),l(.062,-.112),l(.261,-.024),l(.194,.24),l(.073,.169),l(.331,-.025),l(.066,.18),l(-.026,.083),l(.003,.204),l(.389,-.083),l(.18,.12),l(.149,-.135),l(.104,-.177),l(.558,-.204),l(.168,.056),l(.483,-.046),l(.46,.254),l(.373,-.18),l(.073,-.137),l(.508,.041),l(.561,-.076),l(.129,.13),l(.703,.186),l(.104,.216),l(.424,.101),l(.831,.33),l(-1.047,1.471),l(-.629,.076),l(-.437,-.143),l(-.534,-.359),l(-1.062,.035),l(-.717,.047),l(-1.024,.759),L(444.857,93),l(-.59,-.072),l(-.499,.061),l(-.761,.134),l(-.255,.001),l(-.334,.568),l(-1.651,-.036),l(-.414,-.027),l(-.617,-.17),l(-.399,-.172),l(-.245,.146),l(-.761,-.547),l(-.155,-.26),l(.097,-.581),l(-.053,-.093), -N(442.391,98.111),l(-.589,.203),l(-.433,.031),l(-.668,.047),l(-.58,-.098),l(-1.116,-.671),l(-1.412,-.612),l(-.215,-.197),l(-.364,-.333),l(-.304,-.59),l(.346,-.299),l(.154,-.294),l(-.204,-.188),l(.04,-.375),l(.409,-.062),l(.157,-.206),l(-.136,-.196),l(-.452,-.063),l(.223,-.197),l(.325,0),l(.164,.134),l(.701,-.054),l(.019,-.367),l(.636,-.291),l(.245,-.146),l(.399,.172),l(.617,.17),l(.414,.027),l(1.651,.036),l(.334,-.568),l(.255,-.001),l(.761,-.134),l(.499,-.061),l(.59,.072),l(.427,-.063),l(1.024,-.759),l(.717,-.047),l(1.062,-.035),l(.534,.359),l(.437,.143),l(.629,-.076),l(.166,-.015),l(.668,.301),l(.554,.2),l(.678,.387),l(-.45,.338),l(-1.125,.267),l(-.581,.408),l(-.968,1.451),l(-.63,.84),l(-.753,.567),l(-.361,.16),l(-.724,.047),l(-.264,.103),l(-.176,-.002),l(-.907,-.067),l(-.889,.077),l(-1.535,.529), -N(459.717,92.836),l(.06,-.052),l(.126,-.114),l(.075,.063),l(.126,0),l(-.012,-.113),l(.088,-.101),l(.315,.114),l(.126,-.051),l(.265,.038),l(.202,0),l(.126,-.114),l(.062,-.038),l(.177,.025),l(.177,-.051),l(.139,-.025),l(.088,.025),l(.114,.051),l(.05,-.025),l(.126,-.025),l(.038,.013),l(.214,.088),l(.14,.126),l(.139,.05),l(.151,.013),l(.101,.063),l(.05,.063),l(.076,.076),l(.101,-.013),l(.126,.025),l(.177,-.038),l(.113,0),l(.025,.063),l(-.088,.101),l(-.038,.05),l(.101,-.038),l(.089,.025),l(0,.076),l(.062,.05),l(.076,-.101),l(.062,-.051),l(.277,-.012),l(.417,.075),l(.05,.189),l(.126,.189),l(.215,.025),l(.126,.025),l(.062,-.101),l(.14,.013),l(.062,.126),l(.076,.063),l(.113,.025),l(-.164,.151),l(.126,.063),l(-.051,.05),l(-.024,.114),l(0,.189),l(-.177,.139),l(.05,.139),l(.102,.139),l(.139,.025),l(.188,.101),l(.089,.101),l(.113,.088),l(.088,-.051),l(.102,-.05),l(.113,0),l(.038,.088),l(.025,.101),l(-.089,.075),l(.013,.189),l(-.113,.038),l(.062,.114),l(.127,-.038),l(.037,.051),l(-.037,.088),l(-.051,.151),l(.151,.038),l(.151,.063),l(.151,.126),l(.075,0),l(.177,.076),l(.101,.063),l(.051,.139),l(.013,.126),l(-.038,.101),l(.025,.113),l(-.101,.063),l(-.013,.038),l(.075,.05),l(.101,.051),l(.164,.126),l(.126,.013),l(-.075,.076),l(-.038,.025),l(-.227,0),l(-.139,-.013),l(-.038,.038),l(-.038,.038),l(-.176,-.025),l(.037,-.189),l(-.177,0),l(-.101,.025),l(-.013,.05),l(-.075,.076),l(-.076,.076),l(-.126,-.164),l(-.075,0),l(-.089,-.063),l(0,-.075),l(-.139,.012),l(-.075,.038),l(-.025,.076),l(-.063,-.051),l(-.101,-.038),l(.013,.063),l(0,.088),l(-.113,0),l(-.063,-.013),l(.013,-.214),l(-.013,-.088),l(-.113,-.025),l(-.126,.088),l(-.239,.025),l(-.202,.151),l(.063,.101),l(.088,.151),l(-.051,.101),l(.114,.113),l(.012,.088),l(-.037,.063),l(-.126,.114),l(.062,.088),l(.025,.088),l(-.075,.076),l(-.29,.063),l(-.14,.013),l(.013,.114),l(-.024,.126),l(-.089,.088),l(-.088,.063),l(-.089,.025),l(-.075,.013),l(-.051,.063),l(-.126,.063),l(-.025,.113),l(.063,.113),l(0,.088),l(-.088,.114),l(-.189,0),l(-.113,-.013),l(-.126,-.013),l(-.102,.025),l(-.055,.077),l(-.03,.004),l(-.062,-.237),l(-.218,-.106),l(.16,-.071),l(-.021,-.267),l(-.104,-.561),l(.323,-.978),l(.027,-.404),l(-.353,-.856),l(-.604,-.286),l(-1.037,-1.119),L(460.567,93),l(-.626,-.191),l(-.225,.028), -N(445.722,97.573),l(.176,.002),l(.264,-.103),l(.724,-.047),l(.361,-.16),l(.753,-.567),l(.63,-.84),l(.968,-1.451),l(.581,-.408),l(1.125,-.267),l(.45,-.338),l(.136,-.085),l(.787,.121),l(.241,-.107),l(.958,.193),l(1.115,.066),l(.363,-.045),l(.025,.231),l(.327,-.004),l(.188,.227),l(.339,-.06),l(.243,-.119),l(.186,-.215),l(1.992,-.191),l(.278,-.178),l(.151,-.311),l(.634,-.08),l(.225,-.028),L(460.567,93),l(.767,1.17),l(1.037,1.119),l(.604,.286),l(.353,.856),l(-.027,.404),l(-.323,.978),l(.104,.561),l(.021,.267),l(-.16,.071),l(.218,.106),l(.062,.237),l(.03,-.004),l(.15,-.02),l(.119,.249),l(.398,.166),l(.609,.047),l(.033,-.189),l(.457,0),l(.665,-.261),l(.706,.131),l(.149,.079),l(.062,.259),l(-.293,.446),l(-.27,.316),l(-.436,.044),l(-.382,.043),l(-.382,.245),l(-.515,.617),l(-.252,.645),l(-.096,.787),l(-.044,.223),l(-.671,-.12),l(-1.346,-.336),l(-.514,-.226),l(-.295,-.042),l(-.671,-.369),l(-.562,-.04),l(-.618,.218),l(-1.904,.771),l(-.38,.059),l(-1.385,-.35),l(-.3,-.013),l(-.69,.261),l(-.34,.031),l(-1.151,-.395),l(-.506,-.002),l(-.771,.189),l(-.266,.023),l(-.048,-.189),l(.234,-.318),l(-.352,-.106),l(-.392,-.204),l(-.418,-.186),l(-.146,-.33),l(.32,-.201),l(.351,.012),l(-.114,-.13),l(-.625,-.248),l(-.253,.13),l(-.215,.283),l(-.147,.118),l(-.414,-.239),l(-.194,-.139),l(-.594,-.059),l(-.02,-.189),l(-.234,0),l(-.245,-.036),l(-.052,-.165),l(.178,-.094),l(.271,-.071),l(-.239,-.083),l(-.183,-.059),l(.124,-.146),l(.19,-.127),l(-.069,-.142),l(-.306,-.118),l(-.555,-.141),l(-.712,-.471),l(.058,-.088),l(-.104,-.119),l(.075,-.356),l(-.202,-.036),l(-.19,-.237),l(-.569,-.178),l(-.054,-.309), -N(420.177,113.472),l(-.274,-.042),l(-.253,-.155),l(-.367,-.325),l(-.096,-.213),l(.202,-.738),l(.097,-.681),l(-.046,-.583),l(-.133,-.569),l(-.503,-.44),l(-.094,-.271),l(.181,-.157),l(.366,-.015),l(.801,-.001),l(.339,-.172),l(.861,-.543),l(.633,.625),l(.451,.754),l(-.014,.271),l(-.204,.285),l(-.145,.484),l(.149,.894),l(-.11,.525),l(-.377,.695),l(-.405,-.198),l(-.52,.03),l(-.143,.1),l(-.149,.27),l(-.248,.17),M(433.783,118.446),l(-.712,-.084),l(-.902,-.607),l(-.772,-.239),l(-1.904,-.817),l(-.833,-.126),l(-.232,-.127),l(-.173,-.283),l(.139,-.34),l(.328,-.34),l(.264,-.1),l(.629,.112),l(.569,-.341),l(.68,.424),l(.403,.141),l(.722,-.016),l(1.403,-.187),l(1.38,-.329),l(.148,.085),l(.043,.127),l(-.112,.127),l(-.536,.823),l(-.153,.497),l(.009,.382),l(.411,.509),l(-.179,.128),l(-.43,.567),l(-.188,.015),M(431.244,98.829),l(-.281,-.329),l(-.242,-.027),l(-.281,.196),l(-.156,-.125),l(-.47,-.071),l(-.114,.32),l(-.458,.054),l(-1.001,.364),l(.078,-.151),l(-.452,.133),l(-.063,.249),l(-.157,.044),l(-.01,.125),l(.303,.08),l(.021,.302),l(.193,.119),l(.253,.236),l(-.104,.213),l(-.449,.254),l(.016,.272),l(.143,.554),l(.783,.814),l(2.008,.889),l(.29,.357),l(.134,.558),l(.274,.557),l(.395,.585),l(.694,.57),l(.254,.274),l(.446,.195),l(.041,.21),l(.408,.167),l(1.17,.255),l(1.254,-.105),l(.388,.141),l(.024,.212),l(-.465,.247),l(-.258,.294),l(.262,.213),l(.954,.283),l(1.168,.411),l(.829,.366),l(1.589,.739),l(.058,.185),l(.719,.458),l(.31,.475),l(-.198,.435),l(-.152,.337),l(-.455,-.281),l(-.318,-.167),l(-.109,-.486),l(-.263,-.17),l(-.512,-.099),l(-.483,-.009),l(-.439,-.236),l(.086,-.217),l(-.353,-.065),l(-.301,.098),l(-.232,.262),l(-.259,.399),l(-.273,.208),l(.043,.271),l(-.197,.303),l(-.007,.298),l(.76,.342),l(.611,.271),l(-.093,.314),l(.03,.432),l(.133,.142),l(-.191,.238),l(-.659,-.024),l(-.41,.219),l(-.202,.228),l(.11,.595),l(-.536,.303),l(-.617,.866),l(-.595,.048),l(-.167,-.071),l(-.184,-.14),l(-.002,-.508),l(.364,-.141),l(.317,-.542),l(-.236,-.184),l(.361,-.249),l(.361,.074),l(.133,-.17),l(-.077,-.34),l(-.211,-.181),l(-.206,-.924),l(-.367,-.516),l(-.15,-.607),l(-.201,-.352),l(-.334,.058),l(-.187,.171),l(-.899,-.496),l(-.286,-.065),l(.208,-.291),l(-.092,-.398),l(-.461,-.34),l(-.909,.247),l(.034,-.109),l(.322,-.194),l(-.276,-.27),l(-.29,-.003),l(-.42,.19),l(-.242,-.512),l(-.198,-.207),l(-.124,-.228),l(-.663,-.241),l(-.505,-.027),l(-.654,-.127),l(-.745,-.355),l(-.548,-.441),l(-.959,-.612),l(-1.036,-.826),l(-.872,-.384),l(-.805,-.67),l(-.566,-.856),l(-.434,-1.043),l(-.347,-.443),l(-.505,-.457),l(-.483,-.243),l(-1.188,-.341),l(-.579,-.142),l(-.5,.044),l(-1.078,.647),l(-.46,.359),l(-.646,.173),l(-.303,.043),l(.146,-.469),l(-.062,-.281),l(-.849,.07),l(-.754,-.391),l(-.193,-.442),l(.315,-.371),l(.175,-.01),l(-.135,-.331),l(-.616,-.191),l(-.352,-.358),l(.437,-.186),l(.183,.111),l(.541,-.353),l(.199,-.272),l(-.43,-.192),l(-.025,-.292),l(-.532,-.344),l(.624,-.301),l(.599,.062),l(.627,-.204),l(.629,.168),l(.275,-.16),l(.349,-.432),l(-.103,-.212),l(.777,-.404),l(.016,.415),l(.534,.363),l(.311,.071),l(-.098,.182),l(.385,.312),l(.285,-.151),l(.018,-.535),l(.425,-.384),l(-.019,-.333),l(.371,-.081),l(.143,.354),l(.23,.142),l(.216,-.03),l(.071,-.122),l(.469,-.05),l(.244,.333),l(.228,-.415),l(-.244,-.131),l(.081,-.273),l(.283,-.091),l(.176,.162),l(.315,.051),l(.038,-.192),l(-.112,-.212),l(.126,-.309),l(.631,.171),l(.597,.034),l(.329,-.411),l(.366,-.096),l(.183,.083),l(.445,-.11),l(.301,.103),l(.856,-.227),l(.023,.363),l(.318,.096),l(.32,.391),l(1.311,.247),l(.894,.082),l(.478,.112),l(.116,.199),l(-.614,.303),l(.098,.151),l(.297,.002),l(.187,.185),l(-.367,.285),l(.336,.089),l(-.127,.361),l(.36,.11),l(.284,.198),l(-.056,.214), -N(430.73,96.731),l(1.04,.065),l(.179,.107),l(.612,-.009),l(.287,.152),l(.646,-.5),l(.566,-.107),l(.85,.08),l(.298,-.196),l(.89,.116),l(-.082,-.393),l(.693,-.157),l(.304,.59),l(.364,.333),l(-.035,-.009),l(-.1,-.073),l(-.145,-.036),l(-.172,0),l(-.145,.009),l(-.055,.063),l(0,.072),l(.019,.09),l(.009,.082),l(-.063,.009),l(-.136,-.009),l(-.108,-.036),l(-.091,.063),l(-.045,.082),l(-.081,.063),l(-.082,.045),l(-.081,.009),l(-.163,.036),l(-.117,.036),l(-.108,.036),l(-.055,.045),l(-.153,-.009),l(-.127,.072),l(-.063,.054),l(-.018,.082),l(.036,.072),l(.081,.054),l(.063,.055),l(.045,.045),l(.019,.063),l(.018,.09),l(-.036,.108),l(-.018,.063),l(-.046,.1),l(-.108,0),l(-.081,-.009),l(-.091,.027),l(-.108,.009),l(-.117,.054),l(-.091,.018),l(-.081,.027),l(-.1,.045),l(-.055,.063),l(-.036,.027),l(.055,.018),l(.063,.009),l(.026,.027),l(.037,.072),l(-.046,.063),l(-.027,.009),l(-.081,.027),l(-.009,.045),l(.045,.081),l(0,.072),l(.045,.1),l(-.054,.072),l(-.063,-.018),l(-.1,.045),l(-.117,.018),l(-.127,-.036),l(-.063,-.027),l(-.1,-.063),l(-.099,0),l(-.063,-.027),l(-.118,-.045),l(-.018,.045),l(-.027,.045),l(-.1,.027),l(-.136,0),l(-.054,-.045),l(-.072,-.063),l(-.127,-.018),l(-.019,-.09),l(-.026,-.018),l(-.063,-.054),l(-.055,-.027),l(-.018,-.054),l(-.01,-.054),l(-.036,-.009),l(-.063,.018),l(-.036,.054),l(-.009,.027),l(-.054,.063),l(-.019,.018),l(-.018,.081),l(-.063,.045),l(-.046,.018),l(-.062,.054),l(-.036,.009),l(-.254,0),l(-.108,-.027),l(-.108,.027),l(-.145,.009),l(-.1,-.009),l(-.1,-.036),l(-.045,-.019),l(-.055,0),l(0,.037),l(0,.036),l(-.045,.027),l(-.045,.018),l(-.136,-.009),l(-.027,-.036),l(-.108,.018),l(-.019,.018),l(-.136,.018),l(-.063,.018),l(-.126,.018),l(-.272,-.063),l(.428,-.077),l(.113,-.16),l(.056,-.214),l(-.284,-.198),l(-.36,-.11),l(.127,-.361),l(-.336,-.089),l(.367,-.285),l(-.187,-.185),l(-.297,-.002),l(-.098,-.151),l(.614,-.303),l(-.116,-.199), -N(439.573,104.709),l(-1.051,-.672),l(-.185,-.222),l(-.783,-.149),l(-.203,-.159),l(-.403,-.115),l(-.683,.177),l(-.326,-.486),l(-1.112,-.627),l(-.584,-.678),l(.277,.007),l(.608,.016),l(-.583,-.221),l(-.659,-.469),l(-.183,-.407),l(.086,-.452),l(-.289,-.336),l(-.646,-.418),l(-.378,-.126),l(-.258,.579),l(-.142,.116),l(.03,.15),l(-.284,.106),l(-.154,.248),l(-.213,.053),l(-.496,-.647),l(-.063,-.286),l(-.259,-.612),l(.065,-.012),l(.272,.063),l(.126,-.018),l(.063,-.018),l(.136,-.018),l(.019,-.018),l(.108,-.018),l(.027,.036),l(.136,.009),l(.045,-.018),l(.045,-.027),l(0,-.036),l(0,-.037),l(.055,0),l(.045,.019),l(.1,.036),l(.1,.009),l(.145,-.009),l(.108,-.027),l(.108,.027),l(.254,0),l(.036,-.009),l(.062,-.054),l(.046,-.018),l(.063,-.045),l(.018,-.081),l(.019,-.018),l(.054,-.063),l(.009,-.027),l(.036,-.054),l(.063,-.018),l(.036,.009),l(.01,.054),l(.018,.054),l(.055,.027),l(.063,.054),l(.026,.018),l(.019,.09),l(.127,.018),l(.072,.063),l(.054,.045),l(.136,0),l(.1,-.027),l(.027,-.045),l(.018,-.045),l(.118,.045),l(.063,.027),l(.099,0),l(.1,.063),l(.063,.027),l(.127,.036),l(.117,-.018),l(.1,-.045),l(.063,.018),l(.054,-.072),l(-.045,-.1),l(0,-.072),l(-.045,-.081),l(.009,-.045),l(.081,-.027),l(.027,-.009),l(.046,-.063),l(-.037,-.072),l(-.026,-.027),l(-.063,-.009),l(-.055,-.018),l(.036,-.027),l(.055,-.063),l(.1,-.045),l(.081,-.027),l(.091,-.018),l(.117,-.054),l(.108,-.009),l(.091,-.027),l(.081,.009),l(.108,0),l(.046,-.1),l(.018,-.063),l(.036,-.108),l(-.018,-.09),l(-.019,-.063),l(-.045,-.045),l(-.063,-.055),l(-.081,-.054),l(-.036,-.072),l(.018,-.082),l(.063,-.054),l(.127,-.072),l(.153,.009),l(.055,-.045),l(.108,-.036),l(.117,-.036),l(.163,-.036),l(.081,-.009),l(.082,-.045),l(.081,-.063),l(.045,-.082),l(.091,-.063),l(.108,.036),l(.136,.009),l(.063,-.009),l(-.009,-.082),l(-.019,-.09),l(0,-.072),l(.055,-.063),l(.145,-.009),l(.172,0),l(.145,.036),l(.1,.073),l(.035,.009),l(.215,.197),l(1.412,.612),l(1.116,.671),l(.58,.098),l(.668,-.047),l(.433,-.031),l(.589,-.203),l(.201,.142),l(.056,.089),l(.022,.112),l(-.022,.078),l(.045,.044),l(.011,.067),l(-.078,.056),l(-.011,.146),l(.078,.067),l(.145,-.034),l(.101,.034),l(.045,.089),l(-.078,.011),l(-.056,-.022),l(-.022,.078),l(.033,.1),l(-.045,.034),l(-.044,.022),l(.066,.111),l(.168,-.022),l(.033,.078),l(.123,.1),l(.122,0),l(.101,0),l(.09,.078),l(.122,.011),l(.134,0),l(.012,.078),l(-.033,.056),l(-.135,-.011),l(-.089,-.034),l(-.067,.022),l(-.078,-.011),l(-.066,-.045),l(-.056,-.011),l(-.045,.011),l(.033,.067),l(-.101,.089),l(-.078,0),l(0,.156),l(.045,.067),l(-.033,.078),l(.022,.078),l(.011,.078),l(-.089,.033),l(-.09,-.033),l(-.056,.067),l(.078,.089),l(-.078,.011),l(-.189,.022),l(-.201,-.022),l(-.145,-.123),l(.056,-.101),l(-.045,-.089),l(-.123,-.011),l(-.022,-.112),l(-.145,-.056),l(-.146,-.045),l(-.101,.089),l(-.1,-.011),l(-.156,-.078),l(-.067,-.022),l(-.146,0),l(-.156,-.045),l(-.111,.067),l(-.134,.045),l(-.134,-.045),l(-.111,-.067),l(-.112,0),l(-.122,.089),l(-.168,.078),l(-.156,-.067),l(-.268,-.089),l(-.179,.011),l(-.156,.011),l(-.189,-.056),l(-.168,-.011),l(-.156,-.089),l(-.089,.078),l(-.111,.022),l(-.057,-.056),l(-.234,-.078),l(-.156,-.056),l(-.134,-.045),l(-.089,-.011),l(-.134,.123),l(-.112,-.011),l(-.223,-.022),l(-.168,-.033),l(-.212,.022),l(-.101,.111),l(-.145,.145),l(-.123,.201),l(-.201,-.022),l(-.256,-.134),l(-.156,-.19),l(-.101,-.111),l(-.312,-.034),l(-.123,.044),l(-.089,.179),l(-.045,.167),l(.045,.134),l(0,.078),l(.033,.212),l(-.123,.067),l(.022,.089),l(.134,.078),l(.09,.089),l(.122,.034),l(.101,.033),l(.179,.179),l(.146,.234),l(.089,.134),l(.022,.123),l(.156,.111),l(-.078,.056),l(-.012,.1),l(.022,.146),l(.168,-.011),l(.089,.111),l(.056,.123),l(.112,.111),l(.167,.045),l(.167,.033),l(.369,.357),l(.021,.167),l(.078,.044),l(.213,.078),l(.379,.357),l(.224,.123),l(.223,.067),l(.101,.056),l(0,.112),l(.078,.279),l(.201,.078),l(.189,.167),l(.146,.112),l(.245,.123),l(.067,.212),l(-.284,.083),M(439.792,104.833),l(.132,-.118),l(.134,.011),l(.123,.034),l(.045,.078),l(.066,.089),l(.146,.089),l(.179,.078),l(.212,.011),l(.312,.257),l(.045,.067),l(.134,-.033),l(.123,.022),l(.089,.034),l(.062,.063),l(.005,.004),l(-.022,.089),l(.033,.078),l(.082,.072),l(.029,.092),l(-.002,.1),l(-.589,-.367),l(-.549,-.371),l(-.789,-.378), -N(451.009,101.725),l(-.328,.346),l(-.383,.374),l(-.18,.302),l(.056,.271),l(1.326,1.122),l(.028,.2),l(-.302,.302),l(-.762,.333),l(-.246,.301),l(-.008,.514),l(-.013,.208),l(-.058,-.017),l(-.072,.029),l(-.16,.022),l(-.145,.021),l(-.116,.022),l(-.058,.015),l(-.102,-.051),l(-.087,.043),l(-.088,.021),l(-.102,-.043),l(-.064,-.021),l(-.131,.116),l(-.087,.08),l(-.152,-.015),l(-.196,-.007),l(-.064,.007),l(-.175,-.043),l(-.152,.087),l(-.151,.102),l(-.109,.058),l(.059,.072),l(-.029,.058),l(-.116,0),l(-.094,-.109),l(-.131,-.058),l(-.087,-.073),l(-.08,.065),l(-.116,.058),l(-.246,.058),l(-.225,.058),l(-.088,.058),l(-.058,.167),l(.029,.13),l(-.029,.072),l(-.072,.087),l(-.188,0),l(-.14,-.049),l(-.018,-.109),l(-.733,-.866),l(-.382,-.369),l(-.058,-.004),l(.109,-.286),l(0,-.067),l(-.078,-.067),l(-.101,0),l(-.056,-.056),l(.022,-.089),l(.111,-.033),l(.146,.011),l(.167,.033),l(.057,-.033),l(.021,-.067),l(.09,-.044),l(.134,-.022),l(.089,-.011),l(-.011,-.089),l(-.101,-.101),l(-.167,-.067),l(-.134,-.045),l(-.057,-.044),l(-.111,.022),l(-.078,-.045),l(-.033,-.067),l(-.123,-.101),l(-.078,-.1),l(-.066,-.022),l(-.067,.044),l(-.078,-.011),l(-.101,-.056),l(-.279,-.078),l(-.078,-.022),l(-.056,-.033),l(-.167,-.134),l(-.101,-.146),l(-.111,-.111),l(-.168,-.078),l(-.156,-.101),l(-.223,-.056),l(0,-.101),l(.179,-.101),l(.089,-.111),l(.078,-.011),l(.067,.034),l(.078,.044),l(.1,.022),l(.045,-.022),l(.012,-.134),l(.011,-.19),l(-.134,-.145),l(-.179,-.19),l(-.212,-.134),l(-.101,-.145),l(.101,.022),l(.101,.011),l(.145,.056),l(.224,.044),l(.134,-.078),l(.089,-.056),l(.067,-.078),l(-.089,-.044),l(-.135,-.022),l(-.089,-.089),l(-.123,-.078),l(-.156,-.089),l(-.033,-.101),l(-.045,-.1),l(-.212,.011),l(-.167,-.056),l(-.078,-.1),l(-.022,-.134),l(.078,-.067),l(0,-.089),l(-.033,-.1),l(.056,-.056),l(.066,-.078),l(.156,-.156),l(.156,-.223),l(.034,-.167),l(.056,-.1),l(-.022,-.067),l(-.123,-.022),l(-.179,-.011),l(-.156,0),l(-.212,.112),l(-.078,-.089),l(.056,-.067),l(.09,.033),l(.089,-.033),l(-.011,-.078),l(-.022,-.078),l(.033,-.078),l(-.045,-.067),l(0,-.156),l(.078,0),l(.101,-.089),l(-.033,-.067),l(.045,-.011),l(.056,.011),l(.066,.045),l(.078,.011),l(.067,-.022),l(.089,.034),l(.135,.011),l(.033,-.056),l(-.012,-.078),l(-.134,0),l(-.122,-.011),l(-.09,-.078),l(-.101,0),l(-.122,0),l(-.123,-.1),l(-.033,-.078),l(-.168,.022),l(-.066,-.111),l(.044,-.022),l(.045,-.034),l(-.033,-.1),l(.022,-.078),l(.056,.022),l(.078,-.011),l(-.045,-.089),l(-.101,-.034),l(-.145,.034),l(-.078,-.067),l(.011,-.146),l(.078,-.056),l(-.011,-.067),l(-.045,-.044),l(.022,-.078),l(-.022,-.112),l(-.056,-.089),l(-.201,-.142),l(1.535,-.529),l(.889,-.077),l(.907,.067),l(.054,.309),l(.569,.178),l(.19,.237),l(.202,.036),l(-.075,.356),l(.104,.119),l(-.058,.088),l(.712,.471),l(.555,.141),l(.306,.118),l(.069,.142),l(-.19,.127),l(-.124,.146),l(.183,.059),l(.239,.083),l(-.271,.071),l(-.178,.094),l(.052,.165),l(.245,.036),l(.234,0),l(.02,.189),l(.594,.059),l(.194,.139),l(.414,.239),l(.147,-.118),l(.215,-.283),l(.253,-.13),l(.625,.248),l(.114,.13),l(-.351,-.012),l(-.32,.201),l(.146,.33),l(.418,.186), -N(551.198,117.997),l(-.351,-.48),l(-.236,-.126),l(-1.217,-.05),l(-.646,-.011),l(-.096,-.016),l(.091,-.726),l(-.062,-.503),l(.157,-.251),l(.062,-.22),l(-.503,-.094),l(-.534,-.283),l(-.566,-.189),l(-.471,.063),l(-.378,-.251),l(-1.132,-.597),l(-.565,-.22),l(-.943,-.597),l(-.314,.063),l(-1.006,-.503),l(-.377,-.44),l(-1.194,-.597),l(-1.384,-.975),l(0,-.283),l(-.188,-.44),l(-.283,-.188),l(-.408,-.597),l(-.126,-.566),l(-.22,-.377),l(-.881,-.251),l(-.188,.157),l(-.439,.063),l(-.535,-.126),l(-.439,.032),l(-.503,.094),l(-.314,-.157),l(-.691,-.314),l(.094,-.22),l(.157,-.188),l(-.188,-.22),l(.031,-.188),l(.188,-.157),l(-.439,-.283),l(0,-.22),l(-.032,-.22),l(-.251,-.22),l(-.534,-.094),l(-.692,-.095),l(-.22,-.314),l(-.346,-.032),l(-.629,-.377),l(-.472,-.095),l(-.188,.063),l(-.565,.157),l(.251,.251),l(.188,.377),l(-.597,-.283),l(-.283,0),l(-.126,.126),l(-.22,.346),l(-.283,.126),l(-.629,0),l(-.503,.251),l(-.503,.409),l(-.062,.628),l(.314,.409),l(-.126,.314),l(-1.383,.032),l(-1.03,-.063),l(.056,-8.174),l(5.658,-1.289),l(5.722,2.986),l(2.012,1.666),l(2.578,-.346),l(2.767,.188),l(1.1,-.409),l(.724,.723),l(.597,.22),l(.66,1.006),l(.66,-.314),l(-.031,1.038),l(-.188,.409),l(.031,.754),l(1.006,0),l(.221,.817),l(.346,1.069),l(.503,.063),l(.691,-.032),l(1.006,-.094),l(.346,0),l(.44,.314),l(.062,.283),l(-.062,.283),l(.44,.346),l(.66,0),l(.125,-.188),l(-.157,-.409),l(.504,-.44),l(.439,-.188),l(.221,-.472),l(.282,-.188),l(.943,-.377),l(.755,-.189),l(.534,-.471),l(.346,-.283),l(.22,-.063),l(.283,.126),l(.377,-.377),l(.322,-.031),l(.349,-.126),l(.441,.246),l(-.368,.172),l(-.368,.171),l(-.221,.049),l(-.073,.196),l(-.295,.049),l(-.294,.172),l(-.196,.147),l(-.441,.295),l(-.172,.098),l(-.024,.123),l(.294,.049),l(.295,.074),l(.146,.123),l(.418,-.147),l(.098,.221),l(.172,.221),l(.368,.27),l(.589,0),l(.393,0),l(.049,-.393),l(.221,.049),l(.196,-.196),l(.024,-.245),l(.196,.098),l(.196,.172),l(.172,.294),l(.049,.147),l(.393,.024),l(.147,-.024),l(.073,.246),l(.025,.098),l(.343,-.025),l(.319,.147),l(.245,.196),l(.516,.074),l(.466,.024),l(.172,.123),l(-.49,.221),l(-.197,.147),l(-.221,.147),l(-.49,-.024),l(-.245,-.049),l(.049,.171),l(0,.147),l(-.319,0),l(-.172,.049),l(-.343,.196),l(-.221,.196),l(-.271,.049),l(-.221,.196),l(-.245,-.147),l(-.319,-.098),l(-.294,-.098),l(-.221,.025),l(-.246,.073),l(-.318,-.073),l(-.042,.098),l(-.345,-.005),l(-.409,.031),l(-.188,-.283),l(-.251,-.063),l(-.126,-.188),l(.251,-.126),l(.409,-.346),l(.188,-.22),l(-.252,-.251),l(-.439,-.377),l(-.221,.251),l(-.471,.346),l(-.692,.188),l(-.22,.157),l(-.252,-.22),l(-.22,-.157),l(-.346,0),l(.031,.22),l(-.283,.314),l(.189,.314),l(-.032,.346),l(-.062,.126),l(-.472,-.095),l(-.565,.095),l(-.503,.094),l(.251,.125),l(.534,-.031),l(.126,.094),l(-.251,.063),l(-.188,.063),l(-.032,.346),l(-.188,0),l(-.251,.157),l(-.063,.409),l(-.282,.188),l(-1.069,-.094),l(-.629,-.126),l(-.472,.283),l(-.125,.471),l(.251,.283),l(.346,.188),l(.157,.157),l(.44,.032),l(.346,0),l(.126,.22),l(-.126,.22),l(-.031,.472),l(.126,.409),l(.471,.314),l(.126,.283),l(-.157,.22),l(-.503,.346),l(-.283,.503),l(-.377,.377),l(.063,.377),l(-.375,.843), -N(439.792,104.833),l(-.113,-.054),l(-.105,-.07),l(.284,-.083),l(-.067,-.212),l(-.245,-.123),l(-.146,-.112),l(-.189,-.167),l(-.201,-.078),l(-.078,-.279),l(0,-.112),l(-.101,-.056),l(-.223,-.067),l(-.224,-.123),l(-.379,-.357),l(-.213,-.078),l(-.078,-.044),l(-.021,-.167),l(-.369,-.357),l(-.167,-.033),l(-.167,-.045),l(-.112,-.111),l(-.056,-.123),l(-.089,-.111),l(-.168,.011),l(-.022,-.146),l(.012,-.1),l(.078,-.056),l(-.156,-.111),l(-.022,-.123),l(-.089,-.134),l(-.146,-.234),l(-.179,-.179),l(-.101,-.033),l(-.122,-.034),l(-.09,-.089),l(-.134,-.078),l(-.022,-.089),l(.123,-.067),l(-.033,-.212),l(0,-.078),l(-.045,-.134),l(.045,-.167),l(.089,-.179),l(.123,-.044),l(.312,.034),l(.101,.111),l(.156,.19),l(.256,.134),l(.201,.022),l(.123,-.201),l(.145,-.145),l(.101,-.111),l(.212,-.022),l(.168,.033),l(.223,.022),l(.112,.011),l(.134,-.123),l(.089,.011),l(.134,.045),l(.156,.056),l(.234,.078),l(.057,.056),l(.111,-.022),l(.089,-.078),l(.156,.089),l(.168,.011),l(.189,.056),l(.156,-.011),l(.179,-.011),l(.268,.089),l(.156,.067),l(.168,-.078),l(.122,-.089),l(.112,0),l(.111,.067),l(.134,.045),l(.134,-.045),l(.111,-.067),l(.156,.045),l(.146,0),l(.067,.022),l(.156,.078),l(.1,.011),l(.101,-.089),l(.146,.045),l(.145,.056),l(.022,.112),l(.123,.011),l(.045,.089),l(-.056,.101),l(.145,.123),l(.201,.022),l(.189,-.022),l(.078,-.011),l(.212,-.112),l(.156,0),l(.179,.011),l(.123,.022),l(.022,.067),l(-.056,.1),l(-.034,.167),l(-.156,.223),l(-.156,.156),l(-.066,.078),l(-.056,.056),l(.033,.1),l(0,.089),l(-.078,.067),l(.022,.134),l(.078,.1),l(.167,.056),l(.212,-.011),l(.045,.1),l(.033,.101),l(.156,.089),l(.123,.078),l(.089,.089),l(.135,.022),l(.089,.044),l(-.067,.078),l(-.089,.056),l(-.134,.078),l(-.224,-.044),l(-.145,-.056),l(-.101,-.011),l(-.101,-.022),l(.101,.145),l(.212,.134),l(.179,.19),l(.134,.145),l(-.011,.19),l(-.012,.134),l(-.045,.022),l(-.1,-.022),l(-.078,-.044),l(-.067,-.034),l(-.078,.011),l(-.089,.111),l(-.179,.101),l(-.056,-.033),l(-.156,.056),l(-.112,-.022),l(-.066,-.044),l(-.112,.033),l(-.078,.056),l(.012,.078),l(.089,.1),l(.123,.167),l(.056,.101),l(-.056,.101),l(-.111,0),l(-.09,-.056),l(-.056,-.089),l(-.056,-.044),l(-.123,-.011),l(-.122,.056),l(-.168,.078),l(-.045,.101),l(-.044,.089),l(-.112,.101),l(.034,.089),l(.011,.1),L(442,104.458),l(-.134,.011),l(-.111,.022),l(-.101,.089),l(-.012,.134),l(.012,.112),l(.011,.145),l(.012,.044),l(.066,.112),l(.078,.089),l(.045,.101),l(-.09,.089),l(-.183,.108),l(-.062,-.063),l(-.089,-.034),l(-.123,-.022),l(-.134,.033),l(-.045,-.067),l(-.312,-.257),l(-.212,-.011),l(-.179,-.078),l(-.146,-.089),l(-.066,-.089),l(-.045,-.078),l(-.123,-.034),l(-.134,-.011),l(-.132,.118), -N(450.198,105.998),l(.013,-.208),l(.008,-.514),l(.246,-.301),l(.762,-.333),l(.302,-.302),l(-.028,-.2),l(-1.326,-1.122),l(-.056,-.271),l(.18,-.302),l(.383,-.374),l(.328,-.346),l(.392,.204),l(.352,.106),l(-.234,.318),l(.048,.189),l(.266,-.023),l(.771,-.189),l(.506,.002),l(1.151,.395),l(.34,-.031),l(.69,-.261),l(.3,.013),l(1.385,.35),l(.38,-.059),l(1.904,-.771),l(.618,-.218),l(.562,.04),l(.671,.369),l(.295,.042),l(.514,.226),l(1.346,.336),l(.671,.12),l(-.066,.335),l(-.077,.258),l(-.261,.086),l(-.313,-.028),l(-.339,.129),l(-.327,.73),l(-.039,.586),l(-.075,.143),l(-.404,.115),l(-.338,.372),l(-.017,.257),l(.252,-.036),l(.255,.224),l(.033,.154),l(.391,.375),l(.01,.223),l(-1.333,-.005),l(-.527,-.111),l(-.497,.045),l(-.629,.374),l(-.498,.445),l(-.363,-.026),l(-.344,.216),l(.097,.327),l(-.086,.257),l(-1.117,.277),l(-.388,.031),l(-.619,-.21),l(-1.473,-.505),l(-.584,.06),l(-.799,.261),l(-1.855,.195),l(-.09,.029),l(-.047,-.199),l(.104,-.3),l(.006,-.499),l(-.225,-.469),l(-.358,-.383),l(-.666,-.296),l(-.134,-.213),l(.007,-.106), -N(381.009,107),l(-.121,-.278),l(.138,-.4),l(.343,-.5),l(-.358,-.471),l(-.304,-.428),l(-.514,-.07),l(-.164,-.1),l(-.053,-.329),l(.163,-.243),l(.409,-.272),l(.365,-.101),l(.563,-.03),l(.634,-.03),l(.133,-.172),l(.068,-.415),l(.535,-.273),l(.763,.042),l(1.078,.37),l(.763,.07),l(.756,-.087),l(.577,-.173),l(.508,-.144),l(.354,-.001),l(.629,.285),l(.694,.156),l(.939,.084),l(1.538,.04),l(.583,.027),l(.957,.141),l(.491,-.158),l(.419,-.229),l(.531,.027),l(.891,.47),l(.67,-.016),l(.335,.062),l(.472,.243),l(.469,-.03),l(.058,.122),l(-.205,.243),l(.094,.106),l(.15,.03),l(.112,-.106),l(1.088,.334),l(.15,-.061),l(.507,.395),l(.056,-.076),l(.262,.03),l(.131,-.076),l(.431,.152),l(.028,.038),l(.084,.114),l(.767,-.03),l(.037,.122),l(.337,-.061),l(.542,.015),l(-.017,-.319),l(.355,0),l(1.252,.304),l(.091,.213),l(.035,.289),l(.187,.076),l(.374,-.076),l(.206,-.03),l(.335,.091),l(.036,.152),l(.261,.015),l(.395,-.167),l(.427,.197),l(.485,.015),l(.039,-.136),l(.75,-.137),l(.334,.091),l(-.001,.088),l(-.001,.463),l(.156,.1),l(-.062,.485),l(-1.112,.528),l(-.95,.385),l(-.267,.328),l(-1.046,.198),l(-.664,.116),l(-.96,.301),l(-.323,.326),l(-.053,.2),l(.261,.128),l(-.088,.157),l(-.628,.143),l(-.594,.783),l(-.886,.787),l(-.096,.192),l(-.18,.361),l(-.245,.45),l(.353,.827),l(.072,.111),l(.084,.13),l(.648,.295),l(.103,.185),l(-.621,.327),l(-.215,.105),l(-.515,.252),l(-.286,.479),l(-.224,.085),l(-.461,.926),l(.155,.322),l(-.257,.099),l(-.992,.049),l(-.581,.242),l(-.425,.327),l(-.274,.757),l(-.663,.496),l(-.258,-.213),l(-.599,.028),l(-.305,.27),l(-.342,0),l(-.121,-.113),l(-3.282,.042),l(-.69,.524),l(-1.021,.17),l(-.35,.382),l(-.028,.283),l(-.083,.085),l(-.073,-.212),l(-.068,-.014),l(.005,.241),l(-.389,.127),l(-.421,-.142),l(-.788,-.467),l(-.224,-.382),l(.036,-.262),l(-.345,-.113),l(-.125,-.213),l(.175,-.163),l(-.468,-.51),l(-.702,-.284),L(385,117.498),l(-.484,-.135),l(-.586,.039),l(.008,-.018),l(.304,-.951),l(.242,-.37),l(.884,-.643),l(-.408,-.31),l(-.812,-.123),l(.17,-.455),l(.506,-.655),l(.347,-.371),l(-.163,-.198),l(-.455,-.551),l(-.488,-.494),l(.288,-.129),l(.482,-.045),l(.458,-.229),l(.043,-.199),l(-.057,-.938),l(.132,-.983),l(-.072,-.456),l(.051,-.442),l(.084,-.072),l(1.234,-.506),l(.288,-.216),l(-.062,-.242),l(-.842,-.495),l(-.15,-.242),l(-.272,-.227),l(-.335,-.055),l(-.531,.26),L(382.981,107),l(-.531,-.439),l(-.55,.188),L(381.009,107), -N(489.685,103.693),l(.112,-.309),l(.26,-.166),l(.284,.047),l(.07,.047),l(.402,.023),l(.449,.023),l(.283,.095),l(.284,.142),l(.188,.094),l(.189,.047),l(.331,0),l(.213,0),l(.212,.166),l(.261,.095),l(.307,.071),l(.355,.047),l(.307,0),l(.426,-.095),l(.544,0),l(.401,.166),l(.189,0),l(.283,-.047),l(.354,.166),l(.095,.142),l(.284,.213),l(.52,.118),l(.354,.071),l(.236,.118),l(.308,.119),l(-.142,.118),l(-.048,.118),l(.261,.118),l(.212,.071),l(.261,-.118),l(.283,0),l(.166,-.166),l(.094,-.095),l(.213,-.071),l(.354,0),l(.261,.071),l(.188,.142),l(.142,-.166),l(.095,-.071),l(.118,0),l(.236,.118),l(.143,.094),l(.212,0),l(.189,.118),l(.213,.166),l(.378,0),l(.354,.024),l(.118,.142),l(-.118,.189),l(-.118,.307),l(.354,.284),l(.284,.166),l(.26,.094),l(.284,.047),l(.236,-.023),l(.236,.071),l(.126,.189),l(-.268,.189),l(-.143,.142),l(-.095,.071),l(.143,.26),l(.213,.307),l(.614,.166),l(.118,.213),l(-.095,.331),l(-.236,.095),l(-.236,.047),l(-.26,-.189),l(-.143,-.071),l(-.188,-.023),l(-.284,.047),l(-.638,-.189),l(-.189,-.213),l(-.331,-.189),l(-.473,-.024),l(-.236,0),l(-.418,.308),l(-.291,.094),l(-.378,.047),l(-.591,.095),l(-.592,-.047),l(-.401,.118),l(-.426,.023),l(-.308,.095),l(-.307,-.024),l(-.377,.108),l(-.031,-.028),l(-1.326,-1.018),l(-.41,-.041),l(-.761,.36),l(-.226,.072),l(-.491,-.068),l(-1.212,-.082),l(.083,-.065),l(.322,-.585),l(.032,-.143),l(-.064,-.728),l(-.331,-1.084),l(-.206,-.399),l(-.639,-.513),l(-.341,-.128),l(-.916,-.155),l(-.679,-.271),l(-.341,-.243), -N(443.617,107.095),l(-.065,-.035),l(-.435,-.156),l(-.017,-.15),l(-.501,-.485),l(-.848,-.3),l(-.033,-.021),l(.002,-.1),l(-.029,-.092),l(-.082,-.072),l(-.033,-.078),l(.022,-.089),l(-.005,-.004),l(.183,-.108),l(.09,-.089),l(-.045,-.101),l(-.078,-.089),l(-.066,-.112),l(-.012,-.044),l(-.011,-.145),l(-.012,-.112),l(.012,-.134),l(.101,-.089),l(.111,-.022),l(.134,-.011),l(.056,-.056),l(-.011,-.1),l(-.034,-.089),l(.112,-.101),l(.044,-.089),l(.045,-.101),l(.168,-.078),l(.122,-.056),l(.123,.011),l(.056,.044),l(.056,.089),l(.09,.056),l(.111,0),l(.056,-.101),l(-.056,-.101),l(-.123,-.167),l(-.089,-.1),l(-.012,-.078),l(.078,-.056),l(.112,-.033),l(.066,.044),l(.112,.022),l(.156,-.056),l(.056,.033),l(0,.101),l(.223,.056),l(.156,.101),l(.168,.078),l(.111,.111),l(.101,.146),l(.167,.134),l(.056,.033),l(.078,.022),l(.279,.078),l(.101,.056),l(.078,.011),l(.067,-.044),l(.066,.022),l(.078,.1),l(.123,.101),l(.033,.067),l(.078,.045),l(.111,-.022),l(.057,.044),l(.134,.045),l(.167,.067),l(.101,.101),l(.011,.089),l(-.089,.011),l(-.134,.022),l(-.09,.044),l(-.021,.067),l(-.057,.033),l(-.167,-.033),l(-.146,-.011),l(-.111,.033),l(-.022,.089),l(.056,.056),l(.101,0),l(.078,.067),l(0,.067),l(-.109,.286),l(-.361,-.022),l(-.727,-.11),l(-.273,.273),l(-.279,.515),l(.133,.427),l(-.002,.342), -N(558.52,110.652),l(.042,-.098),l(.318,.073),l(.246,-.073),l(.221,-.025),l(.294,.098),l(.319,.098),l(.245,.147),l(.221,-.196),l(.271,-.049),l(.221,-.196),l(.343,-.196),l(.172,-.049),l(.319,0),l(0,-.147),l(-.049,-.171),l(.245,.049),l(.49,.024),l(.221,-.147),l(.197,-.147),l(.49,-.221),l(-.172,-.123),l(-.466,-.024),l(-.516,-.074),l(-.245,-.196),l(-.319,-.147),l(-.343,.025),l(-.025,-.098),l(-.073,-.246),l(-.147,.024),l(-.393,-.024),l(-.049,-.147),l(-.172,-.294),l(-.196,-.172),l(-.196,-.098),l(-.024,.245),l(-.196,.196),l(-.221,-.049),l(-.049,.393),l(-.393,0),l(-.589,0),l(-.368,-.27),l(-.172,-.221),l(-.098,-.221),l(-.418,.147),l(-.146,-.123),l(-.295,-.074),l(-.294,-.049),l(.024,-.123),l(.172,-.098),l(.441,-.295),l(.196,-.147),l(.294,-.172),l(.295,-.049),l(.073,-.196),l(.221,-.049),l(.368,-.171),l(.368,-.172),l(-.441,-.246),l(-.349,.126),l(-.044,-.273),l(.393,-.442),l(.318,-.368),l(.736,-.123),l(.663,-.098),l(.883,.147),l(.883,.245),l(.688,.196),l(.81,.123),l(.344,.123),l(-.024,-.442),l(.245,-.736),l(.466,-.368),l(.688,-.123),l(.589,.074),l(.761,.27),l(.735,.246),l(.908,.196),l(.54,.098),l(.441,-.27),l(.858,-.024),l(.761,0),l(.785,-.147),l(.712,.221),l(.662,.098),l(1.35,.024),l(.662,-.074),l(.981,.246),l(.564,-.049),l(.147,.344),l(.27,.147),l(.196,.27),l(.663,0),l(.466,.098),l(.41,.375),l(.031,.194),l(-.051,.157),l(-.325,.187),l(-.97,.219),l(-1.338,.349),l(-.445,.145),l(-.405,.301),l(-.638,.701),l(-.646,.345),l(-.478,.102),l(-.459,.017),l(-1.248,-.235),l(-.238,.03),l(-.467,.472),l(-.463,.784),l(-.268,.243),l(-.885,.132),l(-.507,.145),l(-.344,-.055),l(-.183,-.567),l(-.06,-.071),l(-.359,.03),l(-1.737,.734),l(-1.422,.704),l(-.274,.186),l(-.129,.213),l(-.139,.739),l(-.196,-.073),l(-.344,.098),l(-.344,.171),l(-.539,0),l(-.663,-.073),l(-.834,.221),l(-.172,.147),l(-.196,0),l(-.172,-.319),l(-.368,.024),l(-.318,.172),l(-.074,-.221),l(-.049,-.172),l(-.122,.024),l(-.319,-.123),l(-.049,-.147),l(-.221,-.024),l(-.442,.123),l(-.343,.049),l(.024,.221),l(-.295,.049),l(-.393,-.074),l(-.073,-.196),l(-.147,-.123),l(-.368,-.098),l(-.49,.147),l(-.196,-.073),l(-.688,.024),l(-.564,0),l(-.589,.024),l(-.122,-.098),l(-.049,-.147),l(-.099,-.27),l(.099,-.245),l(.196,-.196),l(.098,.221),l(.196,-.074),l(-.049,-.196),l(.098,-.27),l(.123,0),l(.981,-.196),l(.515,.147),l(.516,.196),l(.099,.172),l(.196,0),l(.024,-.246),l(.441,-.196),l(.302,-.147), -N(685.343,114.455),l(-.571,.678),l(-.309,.115),l(-.511,-.096),l(-.579,-.068),l(-.595,-.011),l(-.315,.157),l(-.633,.738),l(-.283,.256),l(-.235,.171),l(-.268,-.206),l(-.35,.34),l(-.319,.199),l(-.373,-.608),l(-.398,-.112),l(-.649,.78),l(-.195,-.382),l(-.232,-.254),l(-.683,-.367),l(-.169,-.453),l(.095,-.312),l(.429,-.411),l(.754,-.229),l(.056,-.269),l(-.591,-.282),l(.407,-.879),l(.189,-.34),l(-.199,-.269),l(-.632,-.296),l(-.139,0),l(-.381,.029),l(-.312,.143),l(-.234,-.07),l(-.52,-.368),l(-.167,-.233),l(.379,-.528),l(.415,-.442),l(.52,-.329),l(1.533,-.604),l(1.032,-.545),l(.636,-.543),l(.686,-1.027),l(.386,-.13),l(.448,-.017),l(.273,.396),l(.493,.253),l(.508,.153),l(.975,-.048),l(.527,-.159),l(-.046,-.113),l(-.508,-.765),l(.025,-.342),l(.273,-.243),l(.392,-.059),l(.333,.126),l(.452,.054),l(.538,-.017),l(.62,-.259),l(.955,-.532),l(.23,-.713),l(.383,-.358),l(.253,-.129),l(.247,-.001),l(.579,.68),l(.298,.439),l(.167,.393),l(-1.356,.923),l(-.408,.457),l(-.112,.414),l(.09,.427),l(-.154,.456),l(-.187,.868),l(-.668,.115),l(-.36,.229),l(-.497,.385),l(-.766,.641),l(-.468,.214),l(-.678,.03),l(-.577,.199),l(-.265,.228),l(-.248,.312),l(-.364,.893),l(.284,.326),l(1.225,.847),l(.419,.354), -N(536.625,121.017),l(-.078,-.028),l(-.15,-.692),l(-.01,-.565),l(-.038,-.848),l(-.185,-.211),l(-.787,.075),l(-.696,-.01),l(-.655,-.506),l(-1.803,-1.362),l(-.597,-.336),l(-.66,-.167),l(-.5,-.054),l(-.788,-.066),l(-.822,-.335),l(-.708,-.251),l(-.402,-.437),l(-1.055,-.107),l(-.519,-.054),l(-.343,.129),l(-.517,.343),l(-.333,.03),l(-.78,-.038),l(-.609,.032),l(-.413,.144),l(-.476,.328),l(-.621,.654),l(-.466,.3),l(-.562,.13),l(-.441,-.025),l(-.066,-.376),l(-.128,-.681),l(-.106,-.447),l(.128,-.298),l(0,-.383),l(0,-.532),l(.106,-.191),l(.106,-.298),l(.085,-.234),l(-.085,-.212),l(-.256,-.128),l(-.319,-.191),l(-.213,-.255),l(-.042,-.149),l(-.171,0),l(-.191,-.042),l(-.361,-.106),l(-.191,.192),l(-.086,-.234),l(.086,-.106),l(.148,-.255),l(.128,.106),l(.383,-.042),l(.426,.085),l(.128,.021),l(.043,-.128),l(-.319,-.213),l(-.256,-.021),l(-.085,-.277),l(.17,-.255),l(.213,-.191),l(-.404,-.042),l(-.319,.085),l(-.383,0),l(-.319,-.085),l(-.128,.149),l(-.17,-.255),l(-.149,-.298),l(0,-.34),l(-.042,-.298),l(.17,-.213),l(.106,-.319),l(.043,-.255),l(.105,-.277),l(.086,-.234),l(.213,.34),l(.063,.128),l(.17,.17),l(.405,-.085),l(.383,.128),l(.106,-.149),l(-.021,-.149),l(.106,0),l(.148,.021),l(.064,.319),l(.106,.191),l(.298,-.021),l(.298,-.063),l(.256,-.106),l(.233,.085),l(.192,.064),l(.085,-.128),l(-.149,-.191),l(-.042,-.213),l(.191,-.042),l(.106,.149),l(.233,.085),l(.256,-.085),l(.213,-.064),l(.021,-.234),l(-.171,-.341),l(-.34,-.234),l(-.532,-.319),l(-.426,-.213),l(-.063,-.319),l(-.043,-.34),l(-.213,-.17),l(0,-.213),l(0,-.213),l(-.085,-.127),l(-.554,-.064),l(-.617,.085),l(-.426,.021),l(-.446,.127),l(-.192,.277),l(-.085,.298),l(.128,.192),l(-.063,.276),l(-.086,.405),l(.064,.234),l(.021,.298),l(-.256,-.553),l(-.361,-.319),l(.042,-.17),l(-.063,-.191),l(-.274,-.143),l(.529,-.453),l(.937,-.532),l(1.277,-.298),l(.979,-.085),l(.512,.234),l(.681,.383),l(.617,.383),l(.256,.511),l(.638,.703),l(.447,.255),l(.489,-.043),l(.341,-.106),l(.158,.014),l(1.03,.063),l(1.383,-.032),l(.126,-.314),l(-.314,-.409),l(.062,-.628),l(.503,-.409),l(.503,-.251),l(.629,0),l(.283,-.126),l(.22,-.346),l(.126,-.126),l(.283,0),l(.597,.283),l(-.188,-.377),l(-.251,-.251),l(.565,-.157),l(.188,-.063),l(.472,.095),l(.629,.377),l(.346,.032),l(.22,.314),l(.692,.095),l(.534,.094),l(.251,.22),l(.032,.22),l(0,.22),l(.439,.283),l(-.188,.157),l(-.031,.188),l(.188,.22),l(-.157,.188),l(-.094,.22),l(.691,.314),l(.314,.157),l(.503,-.094),l(.439,-.032),l(.535,.126),l(.439,-.063),l(.188,-.157),l(.881,.251),l(.22,.377),l(.126,.566),l(.408,.597),l(.283,.188),l(.188,.44),l(0,.283),l(1.384,.975),l(1.194,.597),l(.377,.44),l(1.006,.503),l(.314,-.063),l(.943,.597),l(.565,.22),l(1.132,.597),l(.378,.251),l(.471,-.063),l(.566,.189),l(.534,.283),l(.503,.094),l(-.062,.22),l(-.157,.251),l(.062,.503),l(-.091,.726),l(-1.454,-.244),l(-.565,-.294),l(-.445,.356),l(-.417,.2),l(-1.135,.205),l(-.432,.809),l(-.203,.991),l(-.103,.128),l(-.508,.243),l(-1.985,.689),l(-.568,.159),l(-.119,.199),l(-.001,.466),l(-.22,.199),l(-.636,.3),l(-.534,.031),l(-.573,-.082),l(-.999,-.348),l(-.937,-.193),l(-.193,-.112), -N(445.294,112.196),l(-.07,-.115),l(-.138,-.469),l(-.5,-.452),l(-.966,-.541),l(.024,-.141),l(.23,.062),l(.023,-.237),l(-.345,-.414),l(.418,-.616),l(-.182,-.22),l(.188,-.563),l(-.251,-.282),l(.182,-.396),l(.268,-.079),l(-.027,-.45),l(-.331,-.081),l(-.2,-.107),l(.002,-.342),l(-.133,-.427),l(.279,-.515),l(.273,-.273),l(.727,.11),l(.361,.022),l(.058,.004),l(.382,.369),l(.733,.866),l(.018,.109),l(.035,.218),l(-.132,.429),l(.074,.641),l(.298,.668),l(.722,.608),l(-.09,.029),l(-.449,.842),l(-.402,.386),l(-.496,.472),l(-.583,.884), -N(451.512,108.463),l(-.507,.16),l(-.532,.245),l(-.622,-.054),l(-.361,-.041),l(-.365,.159),l(-.395,.429),l(-.606,.146),l(-.809,.076),l(-.722,-.608),l(-.298,-.668),l(-.074,-.641),l(.132,-.429),l(-.035,-.218),l(.14,.049),l(.188,0),l(.072,-.087),l(.029,-.072),l(-.029,-.13),l(.058,-.167),l(.088,-.058),l(.225,-.058),l(.246,-.058),l(.116,-.058),l(.08,-.065),l(.087,.073),l(.131,.058),l(.094,.109),l(.116,0),l(.029,-.058),l(-.059,-.072),l(.109,-.058),l(.151,-.102),l(.152,-.087),l(.175,.043),l(.064,-.007),l(.196,.007),l(.152,.015),l(.087,-.08),l(.131,-.116),l(.064,.021),l(.102,.043),l(.088,-.021),l(.087,-.043),l(.102,.051),l(.058,-.015),l(.116,-.022),l(.145,-.021),l(.16,-.022),l(.072,-.029),l(.058,.017),l(-.007,.106),l(.134,.213),l(.666,.296),l(.358,.383),l(.225,.469),l(-.006,.499),l(-.104,.3),l(.047,.199), -N(383.93,117.402),l(-.249,.101),l(-.517,.291),l(-.439,.052),l(-.548,-.178),l(-.58,0),l(-.28,-.073),l(-.719,.292),l(-.058,-.177),l(.389,-1.012),l(-.021,-.856),l(-.182,-.115),l(.244,-.542),l(-.054,-.397),l(.13,-.114),l(-.144,-.141),l(-.375,.085),l(-.476,.097),l(-.108,-.449),l(.48,-.052),l(.283,-.22),l(-.042,-.17),l(-.178,-.226),l(-.3,.417),l(-.413,.136),l(-.357,-.042),l(-.059,-.188),l(.198,-.397),l(.138,-.616),l(-.039,-.303),l(.258,-.114),l(.403,-.503),l(.45,-1.098),l(-.12,-.115),l(.612,-1.783),l(-.35,-.924),l(-.007,-.42),l(-.146,-.378),l(.255,-.271),l(.891,-.251),l(.55,-.188),l(.531,.439),l(1.822,.047),l(.531,-.26),l(.335,.055),l(.272,.227),l(.15,.242),l(.842,.495),l(.062,.242),l(-.288,.216),l(-1.234,.506),l(-.084,.072),l(-.051,.442),l(.072,.456),l(-.132,.983),l(.057,.938),l(-.043,.199),l(-.458,.229),l(-.482,.045),l(-.288,.129),l(.488,.494),l(.455,.551),l(.163,.198),l(-.347,.371),l(-.506,.655),l(-.17,.455),l(.812,.123),l(.408,.31),l(-.884,.643),l(-.242,.37),l(-.304,.951),l(-.008,.018), -N(500.121,117.572),l(-.407,-.016),l(-.433,.388),l(-.164,.126),l(-.318,-.105),l(-.102,-.269),l(.03,-.259),l(-.274,-.151),l(-.366,-.082),l(-.244,.234),l(-.343,-.023),l(-.811,-.153),l(-.364,.032),l(-.304,-.16),l(-.437,.094),l(-.266,.143),l(-.23,.043),l(-.064,-.245),l(-.207,-.023),l(-.24,.292),l(-.693,.304),l(-1.185,.224),l(-.711,-.039),l(-.747,-.123),l(-.439,.073),l(-1.498,.673),l(-.567,.13),l(-1.104,.176),l(-.556,-.153),l(-1.532,-.444),l(-.278,.03),l(-.929,.373),l(-.746,.075),l(-.575,-.025),l(-.777,-.166),l(-.222,.001),l(-.142,-.035),l(-.055,.319),l(.102,.452),l(.243,.423),l(-.627,.127),l(-.156,.374),l(-.2,.169),l(-.171,-.041),l(-.114,.127),l(-.39,-.125),l(-.311,.001),l(-.245,-.459),l(-.119,-.093),l(.097,-.175),l(.242,-.197),l(.617,-.403),l(.021,-.175),l(-.049,-.134),l(-.279,-.28),l(-.146,-.053),l(-.487,.368),l(-.23,.041),l(-.137,.064),l(.092,.041),l(-.118,.216),l(-.172,.023),l(-.063,-.047),l(-.076,.088),l(-.297,.058),l(-.332,-.222),l(-.447,-.198),l(-.461,-.157),l(-.395,.046),l(-.849,.548),l(-.337,.286),l(.006,.204),l(-.141,.046),l(-.122,.07),l(-.005,.082),l(-.179,-.169),l(-.604,.206),l(-.689,.185),l(-.594,-.013),l(-.587,-.07),l(-.678,-.267),l(-.963,-.819),l(-1.181,-.479),l(-1.034,-.182),l(-.692,.072),l(-.119,.255),l(-.097,.609),l(-.053,.411),l(-.173,.156),l(-.256,0),l(-.253,-.155),l(-1.12,.243),l(-.423,-.027),l(-.386,-.183),l(-.657,-1.159),l(-.42,.354),l(-.764,-.451),l(-.451,.057),l(-.562,.412),l(-.227,-.382),l(.066,-.127),l(.242,-.17),l(-.116,-.17),l(-.989,-.012),l(-.545,-.013),l(-.088,-.269),l(.571,-.199),l(-.074,-.241),l(-.284,-.198),l(-.454,-.07),l(-.084,-.297),l(.041,-.34),l(.087,-.284),l(-.089,-.255),l(-.396,-.126),l(-.627,-.353),l(-.371,.086),l(-.265,-.084),l(-.004,-.255),l(.171,-.501),l(.131,.059),l(.478,.311),l(.567,-.271),l(-.396,-.283),l(.021,-.124),l(-.296,-.128),l(.03,-.128),l(.571,-.159),l(.152,-.113),l(-.068,-.142),l(-.149,-.088),l(-.337,-.035),l(.01,-.187),l(.18,-.07),l(-.163,-.164),l(-.198,-.117),l(-.009,-.152),l(-.227,-.012),l(.263,-.181),l(.296,-.275),l(.161,-.035),l(.07,-.16),l(-.341,-.042),l(-.573,.12),l(-.905,.164),l(-.166,-.035),l(.046,-.33),l(.127,-.125),l(-.003,-.199),l(-.029,-.286),l(.13,-.264),l(.299,.012),l(.184,-.41),l(.175,-.023),l(.63,-.422),l(.514,.012),l(.133,-.129),l(.479,-.047),l(.128,.211),l(.268,.102),l(.169,.028),l(.529,.022),l(.147,-.129),l(-.067,-.129),l(-.269,-.129),l(.286,-.094),l(.324,.036),l(.117,.082),l(-.219,.223),l(.213,-.026),l(1.053,-.073),l(.619,.042),l(.379,.046),l(.279,.047),l(.155,-.176),l(-.086,-.094),l(-.468,-.035),l(-.212,-.118),l(.275,-.212),l(1.386,-.151),l(.417,-.012),l(.377,-.117),l(-.442,-.012),l(-.592,.023),l(-.215,0),l(-.068,-.146),l(-.611,-.382),l(.325,-.528),l(.926,.14),l(1.244,.048),l(.264,-.117),l(1.086,.321),l(1.051,-.031),l(.414,-.243),l(-.041,-.27),l(.624,-.244),l(.455,-.214),l(1.218,-.573),l(.598,-.215),l(1.039,-.23),l(.889,-.073),l(.758,.07),l(.905,.126),l(.798,.041),l(.753,-.372),l(.216,.527),l(.416,.298),l(.278,.099),l(.592,.013),l(.622,-.144),l(.453,.74),l(.492,.255),l(.574,-.172),l(.391,.056),l(.968,.582),l(1.265,.04),l(1.094,.197),l(.749,-.001),l(1.084,-.272),l(.514,-.044),l(.651,.141),l(.764,.098),l(.787,-.016),l(.554,-.144),l(1.518,-.573),l(.424,-.335),l(1.212,.082),l(.491,.068),l(.226,-.072),l(.761,-.36),l(.41,.041),l(1.326,1.018),l(.031,.028),l(.795,.722),l(.026,.199),l(-.421,.813),l(.033,.412),l(.284,.211),l(1.413,.12),l(.492,.451),l(-.072,.211),l(-.409,-.023),l(-.231,.141),l(-.009,.433),l(-.584,.267),l(-.039,.27),l(.264,.67),l(-.122,.375),l(.224,.492),l(.09,.117),l(.106,-.105),l(.288,.203),l(.039,.207),l(-.229,.281),l(-.287,.535),l(-.06,.128),l(.213,.14),l(.424,.111),l(-.145,.245),l(.099,.421),l(.42,.374),l(.275,.035),l(.023,.308),M(462.617,106.804),l(.241,.211),l(-.019,.287),l(.115,.285),l(.077,.071),l(.593,.355),l(.819,.241),l(.605,.155),l(.152,.121),L(464.943,109),l(-.304,.166),l(-.515,-.072),l(-.94,-.246),l(-.326,.07),l(-.209,.152),l(-1.019,-.012),l(-.357,.384),l(-.109,.273),l(-.833,.316),l(-.612,.282),l(-.222,.258),l(-.307,.152),l(-.268,.293),l(-.255,.082),l(.164,-.258),l(.019,-.141),l(-.062,-.176),l(.584,-.293),l(.22,-.141),l(-.226,-.191),l(-.082,.015),l(-.653,-.056),l(-.229,-.148),l(.326,-.546),l(.387,-.558),l(.678,-.631),l(-.127,-.227),l(-.427,-.197),l(-.105,0),l(.498,-.445),l(.629,-.374),l(.497,-.045),l(.527,.111),l(1.333,.005), -N(509.077,114.955),l(-.72,-.317),l(-.268,.016),l(-.356,-.433),l(-.374,-.105),l(-.13,-.363),l(.532,-.27),l(.095,-.222),l(-.43,-.176),l(-.027,-.188),l(.63,-.129),l(.094,-.155),l(-.061,-.113),l(-.487,-.21),l(-.351,-.281),l(-.306,-.166),l(-.456,.234),l(-1.058,.492),l(-.374,.445),l(-.642,.188),l(-.254,.255),l(-.014,-.027),l(.094,-.118),l(-.094,-.213),l(-.189,-.071),l(.26,-.095),l(.166,-.047),l(-.261,-.189),l(-.236,-.236),l(.236,-.118),l(.095,-.189),l(-.283,-.047),l(-.354,-.024),l(-.284,-.118),l(-.213,-.212),l(-.236,-.024),l(-.26,-.354),l(-.283,-.142),l(-.048,-.094),l(.166,0),l(.378,0),l(.165,-.236),l(0,-.236),l(-.213,-.024),l(-.188,-.142),l(-.544,-.331),l(-.283,-.354),l(.047,-.284),l(.402,-.142),l(-.119,-.236),l(-.212,-.166),l(-.426,-.071),l(-.284,-.095),l(.071,-.094),l(.071,-.118),l(-.284,-.095),l(-.087,-.212),l(.418,-.308),l(.236,0),l(.473,.024),l(.331,.189),l(.189,.213),l(.638,.189),l(.284,-.047),l(.188,.023),l(.143,.071),l(.26,.189),l(.236,-.047),l(.236,-.095),l(.095,-.331),l(-.118,-.213),l(-.614,-.166),l(-.213,-.307),l(-.143,-.26),l(.095,-.071),l(.143,-.142),l(.268,-.189),l(.229,-.023),l(.023,.166),l(.213,-.047),l(.189,0),l(.142,.189),l(.473,.284),l(.095,.118),l(.118,0),l(.283,.284),l(0,.308),l(.591,.094),l(.449,.142),l(.379,-.047),l(.165,-.213),l(.308,-.331),l(.283,-.094),l(.496,-.284),l(.292,-.449),l(.465,.331),l(.236,.378),l(.26,.189),l(.284,.307),l(.095,.52),l(.142,.236),l(.283,.26),l(.284,.165),l(0,.166),l(.449,.236),l(.473,-.047),l(.378,.071),l(.284,.166),l(.236,.189),l(.095,.189),l(0,.142),l(-.355,-.142),l(-.401,-.047),l(-.213,0),l(-.26,.047),l(-.142,.118),l(-.402,.071),l(-.213,.142),l(-.047,.189),l(-.023,.473),l(-.118,.26),l(-.095,.236),l(-.095,.378),l(.213,.236),l(-.023,.189),l(-.237,-.071),l(-.094,.095),l(-.071,.331),l(-.071,.26),l(-.118,-.047),l(-.094,-.236),l(-.143,-.095),l(-.165,.095),l(-.047,.307),l(.07,.166),l(-.118,.118),l(-.118,.095),l(.095,.26),l(-.363,.91),M(499.844,111.738),l(.709,.061),l(.142,-.047),l(.26,-.071),l(.236,.236),l(.071,.166),l(.378,.142),l(.213,.071),l(.308,-.118),l(.52,0),l(-.071,.213),l(.024,.236),l(.118,.023),l(.331,.166),l(-.071,.236),l(.421,.763),l(-.009,.001),l(-.253,-.133),l(-.416,.038),l(-.512,-.025),l(-.421,-.125),l(-.335,-.211),l(-.294,-.402),l(-.551,-.223),l(-.281,-.417),l(-.265,-.381),l(-.252,-.197), -N(455.452,122.442),l(.049,-.209),l(-.057,-.128),l(-.812,-.256),l(-.691,-.006),l(-.506,-.116),l(-.484,.017),l(-.121,-.046),l(-.103,-.093),l(.139,-.56),l(.315,-.005),l(-.005,-.088),l(-.009,-.122),l(.069,-.07),l(.083,.157),l(.021,.146),l(.303,.021),l(.172,.055),l(.184,-.076),l(-.014,-.082),l(.108,-.029),l(.157,.105),l(-.037,.093),l(-.099,.006),l(-.04,.053),l(.088,.023),l(.144,.035),l(.094,.046),l(.021,.128),l(.353,.041),l(.846,-.122),l(.509,.016),l(.035,.13),l(.192,.035),l(.608,.064),l(.307,.051),l(.358,-.121),l(.09,.05),l(-.101,.312),l(.163,.11),l(.105,0),l(.325,-.169),l(.286,-.058),l(.078,.052),l(.154,-.07),l(.232,-.146),l(-.083,.187),l(.015,.186),l(-.183,.268),l(-.582,-.046),l(-.349,.081),l(-.335,-.017),l(-1.994,.169),M(445.294,112.196),l(.583,-.884),l(.496,-.472),l(.402,-.386),l(.449,-.842),l(.09,-.029),l(.809,-.076),l(.606,-.146),l(.395,-.429),l(.365,-.159),l(.361,.041),l(.622,.054),l(.532,-.245),l(.507,-.16),l(.09,-.029),l(1.855,-.195),l(.799,-.261),l(.584,-.06),l(1.473,.505),l(.619,.21),l(.388,-.031),l(1.117,-.277),l(.086,-.257),l(-.097,-.327),l(.344,-.216),l(.363,.026),l(.105,0),l(.427,.197),l(.127,.227),l(-.678,.631),l(-.387,.558),l(-.326,.546),l(-.062,-.407),l(-.794,-.056),l(-.743,-.041),l(-.566,-.125),l(-.062,-.144),l(-.459,.186),l(-.248,.123),l(-.403,.012),l(-.031,-.247),l(-.335,.029),l(-.301,.314),l(-.431,.186),l(-.31,.03),l(-.306,-.159),l(-.252,.07),l(-.004,.133),l(.169,.185),l(.169,.34),l(.308,.059),l(.826,.609),l(-.166,.07),l(-.369,-.258),l(-.015,-.105),l(-.276,-.082),l(-.331,-.105),l(-.116,.099),l(-.211,.007),l(.069,.129),l(-.016,.129),l(.338,.164),l(.145,-.012),l(.114,.234),l(-.03,.129),l(-.245,.023),l(-.445,-.457),l(-.341,-.141),l(-.207,-.059),l(-.128,-.012),l(.003,.094),l(-.075,.035),l(.138,.164),l(.102,.105),l(.154,.141),l(.193,.059),l(.153,.035),l(.103,.094),l(-.093,.058),l(-.494,-.046),l(-.253,-.035),l(.035,-.176),l(-.137,-.293),l(-.164,-.188),l(-.401,-.108),l(-.472,-.373),l(.258,-.118),l(.025,-.136),l(-.053,-.122),l(-.182,-.035),l(-.153,.199),l(-.465,.176),l(.245,.224),l(-.25,.371),l(-.05,.249),l(.13,.121),l(.065,.172),l(.311,.338),l(.133,.036),l(.131,.479),l(.579,.421),l(.359,.467),l(-.172,.14),l(-.237,.082),l(.106,-.187),l(-.121,-.187),l(-.142,-.128),l(-.139,-.035),l(-.151,-.047),l(-.29,.175),l(.102,.188),l(.153,.081),l(.08,.316),l(-.193,.187),l(-.652,.141),l(.248,.046),l(.27,.14),l(.391,.058),l(.188,.222),l(.257,-.012),l(.155,.012),l(.048,.126),l(.367,.269),l(.306,.014),l(.138,.292),l(.282,.012),l(.27,0),l(.348,.303),l(.015,.128),l(-.193,.082),l(.238,.782),l(-.153,.175),l(-.185,0),l(-.226,-.385),l(-.222,-.047),l(-.207,-.278),l(-.101,-.142),l(-.17,0),l(-.496,.14),l(-.479,.105),l(-.184,.128),l(.315,.093),l(.013,.188),l(.007,.291),l(.229,.117),l(.153,-.026),l(.225,-.079),l(-.021,.198),l(.235,.175),l(-.519,.093),l(.002,.117),l(-.169,.062),l(-.309,-.086),l(.121,-.21),l(-.186,-.086),l(-.508,-.056),l(-.158,-.092),l(-.008,.206),l(.194,.453),l(.193,.17),l(-.045,.163),l(.209,.204),l(.213,.96),l(-.688,-.31),l(-.331,.071),l(-.298,.439),l(-.442,-.735),l(-.46,-.367),l(-.452,.44),l(-.428,-.353),l(-.127,-.297),l(.212,-.425),l(-.028,-.241),l(-.215,-.269),l(-.491,-.424),l(-.167,-.226),l(.017,-.17),l(.471,-.61),l(.609,.098),l(.425,-.298),l(.202,.042),l(1.668,.663),l(.337,-.1),l(.483,-.355),l(-.266,-.049),l(-.27,-.056),l(-1.204,-.493),l(-1.127,-.083),l(-.367,.058),l(-.66,.058),l(-.427,.143),l(-.89,-1.118),l(.269,-.1),l(.253,.056),l(.218,-.114),l(.122,-.185),l(-.339,-.24),l(-.235,.114),l(-.496,-.042),l(-1.035,-.721),l(-.199,-.325), -N(504.136,113.458),l(-.327,.328),l(-.377,.03),l(-.421,-.763),l(.071,-.236),l(-.331,-.166),l(-.118,-.023),l(-.024,-.236),l(.071,-.213),l(-.52,0),l(-.308,.118),l(-.213,-.071),l(-.378,-.142),l(-.071,-.166),l(-.236,-.236),l(-.26,.071),l(-.142,.047),l(-.709,-.061),l(-.492,-.451),l(-1.413,-.12),l(-.284,-.211),l(-.033,-.412),l(.421,-.813),l(-.026,-.199),l(-.795,-.722),l(.377,-.108),l(.307,.024),l(.308,-.095),l(.426,-.023),l(.401,-.118),l(.592,.047),l(.591,-.095),l(.378,-.047),l(.291,-.094),l(.087,.212),l(.284,.095),l(-.071,.118),l(-.071,.094),l(.284,.095),l(.426,.071),l(.212,.166),l(.119,.236),l(-.402,.142),l(-.047,.284),l(.283,.354),l(.544,.331),l(.188,.142),l(.213,.024),l(0,.236),l(-.165,.236),l(-.378,0),l(-.166,0),l(.048,.094),l(.283,.142),l(.26,.354),l(.236,.024),l(.213,.212),l(.284,.118),l(.354,.024),l(.283,.047),l(-.095,.189),l(-.236,.118),l(.236,.236),l(.261,.189),l(-.166,.047),l(-.26,.095),l(.189,.071),l(.094,.213),l(-.094,.118),l(.014,.027), -N(566.651,117.4),l(-.565,-.153),l(-.496,-.054),l(-.264,-.151),l(-.564,.227),l(-.974,.147),l(-.137,-.059),l(.129,-.176),l(-.198,-.077),l(-.678,.03),l(-.739,.315),l(-.592,.486),l(-.589,.064),l(-.745,.495),l(-.351,.03),l(-.368,-.026),l(-.128,-.084),l(-.164,-.409),l(-.199,-.521),l(.185,-.444),l(.099,-.775),l(.029,-.255),l(-.17,-.187),l(-.484,.093),l(.156,-.597),l(-.576,-.45),l(-.153,-.056),l(-.384,.016),l(-.286,.162),l(-.134,.363),l(-.435,.428),l(-.049,.425),l(.006,.255),l(-.208,.228),l(-.442,.158),l(-.133,-.013),l(-.587,-.152),l(-.292,.058),l(-.073,.185),l(.007,.311),l(-.3,.313),l(-.21,.128),l(-.381,.016),l(-.63,-.237),l(-.325,.001),l(-.581,.286),l(-.58,.343),l(-.485,.144),l(-.245,-.041),l(-.129,-.141),l(-.04,-.055),l(.375,-.843),l(-.063,-.377),l(.377,-.377),l(.283,-.503),l(.503,-.346),l(.157,-.22),l(-.126,-.283),l(-.471,-.314),l(-.126,-.409),l(.031,-.472),l(.126,-.22),l(-.126,-.22),l(-.346,0),l(-.44,-.032),l(-.157,-.157),l(-.346,-.188),l(-.251,-.283),l(.125,-.471),l(.472,-.283),l(.629,.126),l(1.069,.094),l(.282,-.188),l(.063,-.409),l(.251,-.157),l(.188,0),l(.032,-.346),l(.188,-.063),l(.251,-.063),l(-.126,-.094),l(-.534,.031),l(-.251,-.125),l(.503,-.094),l(.565,-.095),l(.472,.095),l(.062,-.126),l(.032,-.346),l(-.189,-.314),l(.283,-.314),l(-.031,-.22),l(.346,0),l(.22,.157),l(.252,.22),l(.22,-.157),l(.692,-.188),l(.471,-.346),l(.221,-.251),l(.439,.377),l(.252,.251),l(-.188,.22),l(-.409,.346),l(-.251,.126),l(.126,.188),l(.251,.063),l(.188,.283),l(.409,-.031),l(.345,.005),l(-.302,.147),l(-.441,.196),l(-.024,.246),l(-.196,0),l(-.099,-.172),l(-.516,-.196),l(-.515,-.147),l(-.981,.196),l(-.123,0),l(-.098,.27),l(.049,.196),l(-.196,.074),l(-.098,-.221),l(-.196,.196),l(-.099,.245),l(.099,.27),l(.049,.147),l(.122,.098),l(.589,-.024),l(.564,0),l(.688,-.024),l(.196,.073),l(.49,-.147),l(.368,.098),l(.147,.123),l(.073,.196),l(.393,.074),l(.295,-.049),l(-.024,-.221),l(.343,-.049),l(.442,-.123),l(.221,.024),l(.049,.147),l(.319,.123),l(.122,-.024),l(.049,.172),l(.074,.221),l(.318,-.172),l(.368,-.024),l(.172,.319),l(.196,0),l(.172,-.147),l(.834,-.221),l(.663,.073),l(.539,0),l(.344,-.171),l(.344,-.098),l(.196,.073),l(-.011,.069),l(.023,1.031),l(-.207,.223),l(.077,.305),l(.325,.394),l(.463,-.045),l(.229,-.162),l(.22,.06),l(.692,.039),l(.273,.154),l(.295,.494),l(-.009,.284),l(.028,.246),l(.152,.012),l(.049,.123),l(-.126,.428),l(.245,.237),l(-.152,.36),l(.2,.163),l(-.181,.185),l(-.08,.249),l(-.354,.136), -N(500.121,117.572),l(-.023,-.308),l(-.275,-.035),l(-.42,-.374),l(-.099,-.421),l(.145,-.245),l(-.424,-.111),l(-.213,-.14),l(.06,-.128),l(.287,-.535),l(.229,-.281),l(-.039,-.207),l(-.288,-.203),l(-.106,.105),l(-.09,-.117),l(-.224,-.492),l(.122,-.375),l(-.264,-.67),l(.039,-.27),l(.584,-.267),l(.009,-.433),l(.231,-.141),l(.409,.023),l(.072,-.211),l(.252,.197),l(.265,.381),l(.281,.417),l(.551,.223),l(.294,.402),l(.335,.211),l(.421,.125),l(.512,.025),l(.416,-.038),l(.253,.133),l(.009,-.001),l(.377,-.03),l(.327,-.328),l(.254,-.255),l(.642,-.188),l(.374,-.445),l(1.058,-.492),l(.456,-.234),l(.306,.166),l(.351,.281),l(.487,.21),l(.061,.113),l(-.094,.155),l(-.63,.129),l(.027,.188),l(.43,.176),l(-.095,.222),l(-.532,.27),l(.13,.363),l(.374,.105),l(.356,.433),l(.268,-.016),l(.72,.317),l(.015,.007),l(-.05,.707),l(-.143,.581),l(.205,.48),l(.494,.252),l(.925,.235),l(.827,.052),l(.424,.097),l(.162,.282),l(.312,.451),l(.687,.463),l(1.902,.513),l(.841,.052),l(.438,-.059),l(1.354,-.262),l(1.192,-.148),l(1.469,-.079),l(.41,-.229),l(.185,-.354),l(-.131,-.905),l(.015,0),l(.441,.025),l(.562,-.13),l(.466,-.3),l(.621,-.654),l(.476,-.328),l(.413,-.144),l(.609,-.032),l(.78,.038),l(.333,-.03),l(.517,-.343),l(.343,-.129),l(.519,.054),l(1.055,.107),l(.402,.437),l(.708,.251),l(.822,.335),l(.788,.066),l(.5,.054),l(.66,.167),l(.597,.336),l(1.803,1.362),l(.655,.506),l(.696,.01),l(.787,-.075),l(.185,.211),l(.038,.848),l(.01,.565),l(.15,.692),l(.078,.028),l(-.145,.241),l(-.084,.339),l(-.246,.807),l(-.49,1.272),l(-.222,.297),l(-.596,.384),l(-.016,.141),l(.119,.663),l(.096,.098),l(.738,.235),l(.026,.183),l(-.661,.935),l(-.034,.155),l(.254,1.085),l(.167,1.283),l(.143,.775),l(.191,.21),l(.209,.041),l(1.198,.275),l(.401,.167),l(.144,.366),l(.046,.437),l(-.425,.553),l(-.853,.795),l(-.853,1.034),l(.802,1.083),l(.71,1.068),l(.353,.464),l(.695,.391),l(1.144,.388),l(.409,.224),l(.168,.38),l(.111,1.34),l(.185,.394),l(.652,.053),l(.186,.281),l(-.036,.974),l(-.188,.255),l(-.209,.072),l(-1,.077),l(-.697,.258),l(-.794,.47),l(-.285,.383),l(-.31,.792),l(-.049,.354),l(-.182,.954),l(-.502,.028),l(-1.079,-.153),l(-.236,-.197),l(-.605,-.253),l(-.403,-.056),l(-1.43,.003),l(-.783,-.041),l(-.602,.072),l(-.475,-.38),l(-.163,-.126),l(-.835,-.026),l(-.576,.001),l(-.465,.014),l(-.212,-.239),l(-.756,-.125),l(-.305,-.183),l(-.162,-.014),l(-.021,-.5),l(-.295,-.128),l(-.103,-.514),l(-.292,-.349),l(-.013,-.639),l(-.309,-.493),l(-.237,.012),l(-.035,-.181),l(-.526,-.126),l(-.807,-.013),l(-.374,.017),l(-.209,.222),l(-.329,.018),l(-.517,.075),l(-.188,.364),l(-.538,.138),l(-.383,.443),l(-.368,.283),l(-.253,.043),l(-1.292,-.689),l(-.958,-.104),l(-.562,-.359),l(-1.088,-.317),l(-.247,-.301),l(-.324,-.282),l(-.497,-.592),l(-.997,-.436),l(-.584,-.083),l(-.194,-.028),l(-.58,-.465),l(-.596,-1.058),l(-.635,-1.114),l(-.209,-.268),l(.005,-.593),l(-.767,-.761),l(-.506,-.719),l(-.921,.143),l(-.46,-.042),l(-.13,-.126),l(-.291,-.056),l(-.191,-.268),l(-.029,-.565),l(-.448,.1),l(-.166,.099),l(-.32,.678),l(-.195,.184),l(-.355,.012),l(-.014,-.12),l(-.351,-.224),l(-.686,-.546),l(.064,-.212),l(-.007,-.395),l(-.164,-.465),l(-.215,-.013),l(-.551,.003),l(-.034,-.325),l(.055,-.579),l(.197,-.622),l(.014,-.508),l(-.112,-.239),l(-.29,-.28),l(-.774,-.603),l(-.436,-.209),l(-1.242,-.925),l(-.533,-.025),l(-.321,.115),L(503,127.106),l(.033,-.819),l(-1.02,-.954),l(-.312,-.351),l(-.002,-.184),l(.133,-.875),l(.235,-.763),l(1.142,-.98),l(-.422,-.761),l(.013,-.254),l(.468,-.596),l(-1.067,-.107),l(-.761,-.208),l(-.065,-.198),l(-.563,-1.086),l(-.69,-1.397), -N(535.734,133.791),l(.853,-1.034),l(.853,-.795),l(.425,-.553),l(-.046,-.437),l(-.144,-.366),l(-.401,-.167),l(-1.198,-.275),l(-.209,-.041),l(-.191,-.21),l(-.143,-.775),l(-.167,-1.283),l(-.254,-1.085),l(.034,-.155),l(.661,-.935),l(-.026,-.183),l(-.738,-.235),l(-.096,-.098),l(-.119,-.663),l(.016,-.141),l(.596,-.384),l(.222,-.297),l(.49,-1.272),l(.246,-.807),l(.084,-.339),l(.145,-.241),l(.193,.112),l(.937,.193),l(.999,.348),l(.573,.082),l(.534,-.031),l(.636,-.3),l(.22,-.199),l(.001,-.466),l(.119,-.199),l(.568,-.159),l(1.985,-.689),l(.508,-.243),l(.103,-.128),l(.203,-.991),l(.432,-.809),l(1.135,-.205),l(.417,-.2),l(.445,-.356),l(.565,.294),l(1.454,.244),l(.096,.016),l(.646,.011),l(1.217,.05),l(.236,.126),l(.351,.48),l(.04,.055),l(.129,.141),l(.245,.041),l(.485,-.144),l(.58,-.343),l(.581,-.286),l(.325,-.001),l(.63,.237),l(.381,-.016),l(.21,-.128),l(.3,-.313),l(-.007,-.311),l(.073,-.185),l(.292,-.058),l(.587,.152),l(.133,.013),l(.442,-.158),l(.208,-.228),l(-.006,-.255),l(.049,-.425),l(.435,-.428),l(.134,-.363),l(.286,-.162),l(.384,-.016),l(.153,.056),l(.576,.45),l(-.156,.597),l(.484,-.093),l(.17,.187),l(-.029,.255),l(-.099,.775),l(-.185,.444),l(.199,.521),l(.164,.409),l(.128,.084),l(.368,.026),l(.351,-.03),l(.745,-.495),l(.589,-.064),l(.592,-.486),l(.739,-.315),l(.678,-.03),l(.198,.077),l(-.129,.176),l(.137,.059),l(.974,-.147),l(.564,-.227),l(.264,.151),l(.496,.054),l(.565,.153),l(-.192,.145),l(-.574,-.059),l(.01,.269),l(.236,.012),l(.048,.088),l(-.148,.142),l(-.358,.004),l(-.455,.297),l(-.332,-.005),l(-.338,.179),l(-.647,-.144),l(-1.345,.012),l(-1.148,.152),l(-.53,.292),l(-.272,.19),l(-.559,.395),l(-.246,-.023),l(-.258,.214),l(-.464,.413),l(.01,.32),l(.411,.271),l(.01,.336),l(.232,.171),l(-.119,.483),l(.198,.477),l(-.324,.426),l(-.524,.355),l(-.4,.341),l(-.13,.283),l(.223,.478),l(.033,.31),l(-.289,.255),l(-.513,.215),l(-.698,-.039),l(-.997,-.122),l(-.355,.129),l(.35,.336),l(.365,.407),l(.129,.281),l(.088,.437),l(-.199,.255),l(-.315,.115),l(-.513,.031),l(-.416,.115),l(-.292,.228),l(-.224,.424),l(-.288,.834),l(-.139,1.214),l(-.021,.084),l(-.34,.383),l(-.237,.086),l(-1.001,-.375),l(-.562,-.025),l(-.559,.243),l(-.362,.271),l(-.321,.693),l(-.254,.086),l(-.516,-.082),l(-.644,-.039),l(-.283,.072),l(-.597,.441),l(-.412,.369),l(-.188,.34),l(-.232,.876),l(-.099,.903),l(-.069,.184),l(-.247,.156),l(-1.066,.274),l(-1.183,.19),l(-.964,.175),l(-1.234,.12),l(-1.005,-.135),l(-.349,.002),l(-1.187,.218),l(-.742,-.024),l(-.541,-.039),l(-.854,-.235),l(-1.069,-.248),l(-.63,-.194),l(-.887,-.32), -N(486.696,126.295),l(5.257,-2.711),l(.589,-2.701),l(-.024,-.467),l(-.187,-.508),l(.009,-.255),l(.23,-.355),l(.31,-.214),l(.866,-.174),l(.457,-.371),l(.944,-.883),l(-.059,-.24),l(.23,-.043),l(.266,-.143),l(.437,-.094),l(.304,.16),l(.364,-.032),l(.811,.153),l(.343,.023),l(.244,-.234),l(.366,.082),l(.274,.151),l(-.03,.259),l(.102,.269),l(.318,.105),l(.164,-.126),l(.433,-.388),l(.407,.016),l(.69,1.397),l(.563,1.086),l(.065,.198),l(.761,.208),l(1.067,.107),l(-.468,.596),l(-.013,.254),l(.422,.761),l(-1.142,.98),l(-.235,.763),l(-.133,.875),l(.002,.184),l(.312,.351),l(1.02,.954),L(503,127.106),l(.075,.155),l(.321,-.115),l(.533,.025),l(1.242,.925),l(.436,.209),l(.774,.603),l(.29,.28),l(.112,.239),l(-.014,.508),l(-.197,.622),l(-.055,.579),l(.034,.325),l(.551,-.003),l(.215,.013),l(.164,.465),l(.007,.395),l(-.064,.212),l(.686,.546),l(.351,.224),l(.014,.12),l(-.096,.003),l(-.664,.101),l(-.408,-.056),l(-.157,.057),l(-.103,.127),l(-1.271,.044),l(-.518,.13),l(-.343,.693),l(-.463,.609),l(-.521,.568),l(-4.048,-.132),l(-1.557,-.697),l(-.812,-.277),l(-.118,-.253),l(-.047,-.818),l(.118,-.396),l(-.135,-.366),l(-.973,.048),l(-.141,-.07),l(-.399,-.633),l(-.258,-.196),l(-2.44,-1.101),l(-1.14,-.473),l(-2.034,-.934),l(-.757,-.222),l(-1.129,-.459),l(-.093,-.056),l(-.093,-.056),l(-.311,-.69),l(-.87,-1.632), -N(479.916,127.377),l(-.082,-.085),l(.047,-.122),l(-.021,-.183),l(-.201,-.128),l(-.183,-.346),l(.398,-.209),l(.041,-.099),l(.526,-.396),l(-.048,-.058),l(-.223,-.099),l(.077,-.151),l(.298,-.25),l(.599,-.006),l(-.14,-.146),l(-.035,-.046),l(.078,-.111),l(.177,-.163),l(.169,-.116),l(.299,-.239),l(-.068,-.058),l(.023,-.163),l(-.09,-.047),l(-.031,-.221),l(-.241,-.157),l(-.222,-.058),l(.204,-.204),l(-.125,-.052),l(-.053,-.116),l(-.12,.058),l(-.335,.052),l(-.388,-.023),l(-.225,-.564),l(.129,-.593),l(.072,-.064),l(-.1,-.507),l(-.42,-.326),l(.126,-.093),l(.036,-.152),l(.117,-.128),l(-.093,-.222),l(.107,-.012),l(.259,-.32),l(-.061,-.112),l(.311,-.001),l(.39,.125),l(.114,-.127),l(.171,.041),l(.2,-.169),l(.156,-.374),l(.627,-.127),l(-.243,-.423),l(-.102,-.452),l(.055,-.319),l(.142,.035),l(.222,-.001),l(.777,.166),l(.575,.025),l(.746,-.075),l(.929,-.373),l(.278,-.03),l(1.532,.444),l(.556,.153),l(1.104,-.176),l(.567,-.13),l(1.498,-.673),l(.439,-.073),l(.747,.123),l(.711,.039),l(1.185,-.224),l(.693,-.304),l(.24,-.292),l(.207,.023),l(.064,.245),l(.059,.24),l(-.944,.883),l(-.457,.371),l(-.866,.174),l(-.31,.214),l(-.23,.355),l(-.009,.255),l(.187,.508),l(.024,.467),l(-.589,2.701),l(-5.257,2.711),l(-.161,.071),l(-2.96,1.541),l(-1.139,.656),l(-.253,.016),l(-.365,-.167),l(-1.902,-1.034), -N(426.068,126.434),l(-.093,.981),l(.064,.564),l(-.093,.269),l(-.802,.428),l(-.579,.314),l(-1.473,1.138),l(-.126,.354),l(.274,.973),l(-.147,.537),l(-.155,.227),l(-.864,.598),l(-.22,.143),l(-.564,-1.536),l(-.699,-2.242),l(-.323,-.464),l(-.363,-.252),l(-.432,-.181),l(-.484,-.831),l(-.225,-.465),l(-.363,-.28),l(-.452,-.097),l(-.336,-.774),l(-.301,-.888),l(.112,-.509),l(1,-.853),l(.414,-.355),l(.163,-.411),l(.048,-.537),l(-.052,-.594),l(-.026,-.892),l(-.012,-1.429),l(.114,-.439),l(.685,-.627),l(.012,-.184),l(.508,-.185),l(.633,-.455),l(.591,-.228),l(.703,-.016),l(.643,.183),l(.247,.212),l(.059,.241),l(.25,.538),l(.27,.084),l(.417,-.171),l(.584,-.44),l(.401,-.17),l(.034,.354),l(-.265,.567),l(-.638,.511),l(-.275,.468),l(.005,.283),l(.202,.438),l(.508,.466),l(.351,.127),l(.303,.848),l(-.094,.212),l(-.541,.764),l(-.59,.34),l(-1.017,.92),l(-.216,.339),l(.287,.451),l(.587,.55),l(.528,.295),l(.284,.056),l(.396,-.227),l(.316,.084),l(.244,.635),l(.582,.239), -N(381.402,139.704),l(-.027,-.876),l(.069,-2.006),l(.037,-.382),l(.686,-.314),l(1.512,-.998),l(.963,-.542),l(1.265,.078),l(.397,-.059),l(.181,-.693),l(.864,-.033),l(.777,-.174),l(.527,-.229),l(.524,-.356),l(.484,-.652),l(1.109,-.332),l(1.52,-.701),l(.129,-.227),l(-.296,-.62),l(-.025,-.396),l(.079,-.227),l(.265,-.114),l(1.186,-.12),l(.381,-.186),l(.309,-.553),l(1.022,.022),l(.67,-.018),l(1.826,.004),l(.34,-1.033),l(-.07,-.211),l(-.507,-.322),L(397,126.646),l(-.158,-.465),l(.016,-1.271),l(.022,-.833),l(-.165,-.889),l(-.189,-.211),l(-.563,-.279),l(-.259,-.508),l(.351,0),l(.66,-.143),l(.541,-.256),l(.369,-.566),l(.405,-.312),l(.509,-.086),l(.407,-.157),l(.679,-.27),l(.324,.226),l(.176,.017),l(.249,.024),l(.238,-.142),l(.407,-.51),l(.613,-.426),l(.682,-.355),l(.614,-.171),l(1.16,-.116),l(1.587,-.06),l(.513,-.072),l(.634,-.312),l(.578,.211),l(.564,-.072),l(.585,-.313),l(.343,-.1),l(.939,.012),l(.513,-.015),l(.307,.056),l(.221,.042),l(.322,.113),l(.816,.168),l(.529,-.015),l(.772,-.171),l(.705,-.2),l(.612,-.554),l(.994,.508),l(.339,.099),l(.312,-.143),l(.314,-.241),l(.228,-.156),l(.528,.042),l(.388,.197),l(.162,.269),l(.269,.126),l(.516,-.086),l(1.093,-.158),l(-.012,.184),l(-.685,.627),l(-.114,.439),l(.012,1.429),l(.026,.892),l(.052,.594),l(-.048,.537),l(-.163,.411),l(-.414,.355),l(-1,.853),l(-.112,.509),l(.301,.888),l(.336,.774),l(.452,.097),l(.363,.28),l(.225,.465),l(.484,.831),l(.432,.181),l(.363,.252),l(.323,.464),l(.699,2.242),l(.564,1.536),l(-.204,.156),l(-.241,.383),l(.88,1.605),l(.147,.833),l(.052,.691),l(-.1,.862),l(.101,.748),l(-.16,.622),l(-.158,.495),l(.457,1.156),l(-.061,.664),l(-.086,.17),l(-.666,.47),l(-.249,.128),l(-.152,.283),l(1.272,1.702),l(.249,.917),l(.562,.873),l(.244,.154),l(.544,-.201),l(.702,.165),l(1.028,.347),l(.178,.168),l(.86,1.506),l(.098,.07),l(-.265,.186),l(-1.632,.843),l(-4.012,2.241),l(-1.607,.956),l(-2.308,1.454),l(-.834,.655),l(-3.084,2.617),l(-1.82,.364),l(-1.672,.321),l(-2.176,.408),l(-.146,-.564),l(.161,-.679),l(-.099,-.522),l(-.277,-.352),l(-.309,-.111),l(-.748,-.024),l(-.375,-.167),l(-.588,-.562),l(-.47,.314),l(-.229,-.027),l(-1.111,-1.039),l(-.393,-.28),l(-.082,-.183),l(.096,-.396),l(-.181,-.253),l(-2.472,-1.469),l(-.397,-.253),l(-1.292,-.824),l(-1.924,-1.26),l(-3.283,-2.241),l(-.811,-.575),l(-2.054,-1.344),l(-.895,-.531),l(-.1,-.084),l(-1.414,-.91),l(-4.12,-2.42),l(-2.829,-1.509), -N(395.704,122.189),l(.259,.508),l(.563,.279),l(.189,.211),l(.165,.889),l(-.022,.833),l(-.016,1.271),l(.158,.465),l(.598,.788),l(.507,.322),l(.07,.211),l(-.34,1.033),l(-1.826,-.004),l(-.67,.018),l(-1.022,-.022),l(-.309,.553),l(-.381,.186),l(-1.186,.12),l(-.265,.114),l(-.079,.227),l(.025,.396),l(.296,.62),l(-.129,.227),l(-1.52,.701),l(-1.109,.332),l(-.484,.652),l(-.524,.356),l(-.527,.229),l(-.777,.174),l(-.864,.033),l(-.181,.693),l(-.397,.059),l(-1.265,-.078),l(-.963,.542),l(-1.512,.998),l(-.686,.314),l(-.037,.382),l(-.069,2.006),l(-1.42,.008),l(-1.718,-.004),l(-2.677,.001),l(-2.511,0),l(-1.635,.04),l(.141,-.28),l(.431,-.411),l(.427,-.085),l(1.296,-.285),l(1.143,-.455),l(.453,-.312),l(1.147,-.85),l(1.149,-.878),l(1.043,-1.104),l(.46,-.693),l(.133,-.509),l(-.05,-.494),l(-.427,-.776),l(-.09,-.678),l(.099,-.508),l(.396,-.636),l(.706,-.863),l(.211,-.65),l(-.063,-.367),l(.071,-.353),l(1.285,-1.203),l(.724,-.481),l(.916,-.327),l(1.266,-.469),l(.73,-.397),l(.558,-.552),l(.537,-.736),l(.466,-.905),l(.829,-1.925),l(.269,-.128),l(.54,-.171),l(.19,.127),l(.684,.848),l(.138,.099),l(1.148,.507),l(.661,-.001),l(.595,.042),l(1.304,-.074),l(.522,-.228),l(.437,-.27),l(.398,.551),l(.256,.099),l(.798,.097),l(.361,0), -N(480.248,123.437),l(.388,.023),l(.335,-.052),l(.12,-.058),l(.053,.116),l(.125,.052),l(-.204,.204),l(.222,.058),l(.241,.157),l(.031,.221),l(.09,.047),l(-.023,.163),l(.068,.058),l(-.299,.239),l(-.169,.116),l(-.177,.163),l(-.078,.111),l(.035,.046),l(.14,.146),l(-.599,.006),l(-.298,.25),l(-.077,.151),l(.223,.099),l(.048,.058),l(-.526,.396),l(-.041,.099),l(-.398,.209),l(-.07,-.023),l(-.088,.041),l(-.067,.193),l(-.009,.167),l(-.355,.07),l(-.07,-.099),l(-.151,-.022),l(-.372,.051),l(.26,-.291),l(.097,-.361),l(.169,-.227),l(.328,-.681),l(-.017,-.232),l(.181,0),l(.138,-.192),l(.072,-.32),l(.018,-.32),l(.409,-.431),l(.232,-.07),l(.116,-.174),l(-.048,-.157), -N(184.444,142.729),l(-.367,.82),l(-.518,.821),l(-.186,.763),l(-.179,1.159),l(.017,1.851),l(-.133,1.187),l(-.016,1.13),l(.564,1.737),l(.275,.805),l(.624,.945),l(.76,.903),l(.191,.452),l(.481,.521),l(.529,.974),l(.729,1.228),l(.375,.296),l(.677,.069),l(.436,-.015),l(.577,.154),l(.593,.451),l(.503,.508),l(.773,.069),l(1.016,-.242),l(1.55,-.456),l(1.396,-.3),l(.803,-.157),l(-.02,.542),l(.838,.223),l(.264,-.286),l(.293,-.199),l(-.104,-.247),l(-.393,-.175),l(1.073,-.62),l(.633,-.62),l(.086,-.827),l(.498,-.429),l(-.094,-.477),l(.092,-1.145),l(.254,-.699),l(.625,-.334),l(.164,-.043),l(.757,-.198),l(.701,-.1),l(1.088,-.229),l(1.016,-.37),l(.594,-.058),l(.499,.056),l(1.139,.181),l(.502,-.194),l(.378,.093),l(.62,.507),l(.047,.297),l(-.079,.424),l(-.298,.382),l(-.541,.496),l(-.433,.425),l(-.317,.445),l(-.02,.7),l(-.254,.297),l(-.188,.354),l(.155,.155),l(.337,-.138),l(-.101,.652),l(-.262,1.196),L(205.356,159),l(-.062,.24),l(-.34,-.534),l(-.167,-.452),l(-.072,-.155),l(-.386,.34),l(-.02,.549),l(-.437,.016),l(-.178,.447),l(-.599,.857),l(-.386,-.27),l(-.278,.095),l(.025,.329),l(-2.332,-.006),l(-1.792,-.005),l(-.04,1.24),l(-.999,.032),l(.396,.223),l(.495,.541),l(.624,.231),l(.359,.69),l(.532,.223),l(-.211,.683),l(-1.762,-.007),l(-1.06,.007),l(-1.076,1.812),l(.305,.397),l(-.207,.238),l(.054,.553),l(.044,.454),l(-.704,-.555),l(-.952,-.888),l(-.956,-.761),l(-1.069,-.859),l(-.534,-.352),l(-.053,-.071),l(-.639,-.252),l(-1.048,-.21),l(-.657,.044),l(-.817,.397),l(-1.1,.567),l(-.756,.256),l(-.931,-.069),l(-.724,-.21),l(-.48,-.197),l(-1.305,-.195),l(-.588,-.267),l(-.644,-.422),l(-.935,-.521),l(-.785,-.267),l(-1.711,-.392),l(-.963,-.365),l(-.722,-.366),l(-1.074,-.436),l(-.592,-.352),l(-1.123,-1),l(-.207,-.07),l(-.606,.058),l(-.689,-.14),l(-1.835,-.575),l(-.565,-.536),l(-.503,-.634),l(-.495,-.395),l(-1.049,-.577),l(-.619,-.267),l(-.5,-.494),l(-.742,-.987),l(-.363,-.55),l(-.038,-.113),l(.15,-.155),l(.504,-.086),l(.18,-.17),l(.047,-.184),l(-.331,-.367),l(.457,-.679),l(.041,-.381),l(-.172,-.466),l(-.744,-.959),l(.121,-.297),l(.146,-.17),l(-.07,-.268),l(-.665,-.62),l(-1.495,-1.777),l(-.546,-.493),l(-.963,-1.058),l(-.474,-.522),l(-.815,-.578),l(-.322,-.197),l(-.158,-.268),l(-.058,-.48),l(-.144,-.183),l(-.329,-.197),l(-.609,-.197),l(-.408,-.31),l(-.366,-.522),l(-.271,-.028),l(-.414,.114),l(-.238,-.155),l(-.163,-.367),l(-.005,-.325),l(.459,-.736),l(-.126,-.339),l(-.751,-.62),l(-.439,.255),l(-.375,-.621),l(-.118,-.353),l(-.359,-.211),l(-.61,-.168),l(-.319,-.296),l(-.125,-.254),l(.05,-.381),l(.084,-.269),l(-.185,-.226),l(-.561,-.21),l(-.46,-.098),l(-.46,-.253),l(-.935,-.86),l(-.478,-.706),l(-.281,-.551),l(-.646,-.832),l(-.736,-1.073),l(-.184,-.423),l(-.38,-.678),l(-.242,-.338),l(-.152,-.452),l(.042,-.509),l(.032,-.311),l(-.56,-.239),l(-.795,-.196),l(-.06,-.452),l(-.128,-.155),l(-.458,-.183),l(-.289,.326),l(-.251,.043),l(-1.43,-.647),l(-.285,1.004),l(-.045,.438),l(.033,.084),l(.265,.339),l(.264,.296),l(.028,1.046),l(.088,.509),l(.51,.677),l(.143,.169),l(.643,.267),l(.601,.536),l(.525,.663),l(.602,1.214),l(.44,.282),l(.328,.042),l(.237,.169),l(.325,1.398),l(.102,.169),l(.246,.155),l(.497,.056),l(.133,.056),l(.215,.438),l(.161,.65),l(.445,.79),l(.49,-.071),l(.223,-.142),l(.245,.452),l(.344,1.469),l(.531,1.059),l(.649,1.2),l(.069,.593),l(-.014,.522),l(.26,.353),l(.378,.154),l(.389,-.17),l(.234,-.198),l(.588,.804),l(.258,.579),l(.464,.253),l(.281,.014),l(.133,.311),l(-.196,.537),l(-.136,.127),l(-.691,.595),l(-.254,-.042),l(-.251,-.409),l(-.24,-.734),l(-.617,-.578),l(-.625,-.309),l(-.516,-.479),l(-.834,-.507),l(-1.143,-.986),l(-.416,-.451),l(-.162,-.269),l(.216,-.989),l(-.035,-.254),l(-.488,-1.002),l(-.238,-.381),l(-.327,-.282),l(-.44,-.098),l(-.5,-.31),l(-.675,-.677),l(-.305,.142),l(-.363,-.056),l(-1.262,-.746),l(-.722,-.31),l(-.896,-.973),l(-.139,-.127),l(-.246,-.254),l(.679,.15),l(.599,.013),l(.588,-.284),l(.244,-.326),l(.093,-.636),l(-.01,-.184),l(-.458,-.635),l(-.466,-.452),l(-1.1,-.888),l(-.986,-.493),l(-.402,-.338),l(-.203,-.522),l(-.272,-.649),l(-.091,-.155),l(-.447,-.126),l(-.15,-.353),l(-.026,-.594),l(-.203,-.395),l(-.623,-.734),l(-.434,-.706),l(-.003,-.254),l(.212,-.382),l(-.777,-.62),l(-.254,-.325),l(-.22,-.485),l(.34,-.017),l(2.367,-.155),l(2.381,-.084),l(.316,.31),l(.267,.154),l(1.186,.39),l(2.811,.933),l(3.516,1.112),l(.338,.055),l(1.662,.019),l(1.544,.02),l(.966,.037),l(1.867,-.011),l(.213,-.101),l(.096,-.892),l(1.858,.003),l(1.892,.046),l(.209,.112),l(.631,.662),l(.766,.632),l(.837,.519),l(.708,.491),l(.179,.226),l(.284,.678),l(.318,.847),l(.445,.549),l(1.092,.659),l(1.104,.503),l(.337,.069),l(.501,.011),l(.416,-.158),l(.283,-.37),l(.418,-.413),l(.576,-.541),l(.468,-.201),l(.643,-.018),l(.475,.082),l(.783,.321),l(.412,.252),l(.363,.366),l(.663,1.029),l(.744,1.227),l(.845,1.042),l(.657,.576),l(.268,.253),l(.078,.467),l(.332,.932),l(.336,.592),l(.375,.365),l(.921,.32),l(1.029,.56),l(.264,.069),l(.416,-.116),l(.296,-.001),l(.816,.377),l(.347,.119), -N(507.047,133.665),l(.055,.197),l(.134,.691),l(-.336,-.028),l(-.513,.513),l(.421,.194),l(.418,-.206),l(.306,.021),l(.698,1.84),l(-.644,.044),l(-1.07,-.05),l(-.185,-.239),l(-.334,-.619),l(-.408,-.054),l(-1.657,-.259),l(.521,-.568),l(.463,-.609),l(.343,-.693),l(.518,-.13),l(1.271,-.044), -N(606.155,150.953),l(.595,.152),l(.255,.14),l(.25,-.129),l(.273,-.368),l(.015,-.678),l(-.152,-.93),l(.228,-.185),l(.401,-.144),l(.191,-.354),l(-.146,-1.594),l(.133,-.283),l(.811,.32),l(.391,.11),l(.309,.013),l(.17,-.128),l(1.148,-2.25),l(0,-.324),l(-.192,-.408),l(.045,-.212),l(.938,-1.134),l(.136,-.382),l(-.057,-.761),l(.197,-.354),l(1.446,-.883),l(.719,-.512),l(.312,-.129),l(.558,.082),l(.853,.221),l(.295,-.058),l(-.184,-.718),l(.072,-.283),l(.596,-.582),l(.112,-.24),l(.018,-.508),l(.001,-.127),l(.306,-.34),l(.277,-.044),l(.504,.279),l(.397,.435),l(.243,.901),l(.217,.309),l(.287,.041),l(.504,-.031),l(.146,.14),l(.195,1.649),l(.02,.875),l(-.353,.862),l(-.429,.722),l(-.611,.525),l(-.487,.271),l(-.191,.198),l(-.617,.85),l(.075,.465),l(.163,.705),l(-.224,.58),l(0,.268),l(.216,.069),l(.312,-.086),l(.819,-.442),l(.771,-.089),l(.479,-.017),l(.156,.126),l(.277,1.762),l(.202,.324),l(.554,-.074),l(.521,.096),l(.033,.268),l(-.729,1.584),l(.117,.352),l(.228,.098),l(.507,-.003),l(.481,-.045),l(.291,.379),l(.341,.746),l(.378,.266),l(.246,.083),l(.647,-.159),l(.628,-.413),l(.111,.38),l(.153,.239),l(-.502,.355),l(-.53,.61),l(-.442,.581),l(-.582,.455),l(-.193,.185),l(-.08,.085),l(-.158,.071),l(-.645,.06),l(-.436,.172),l(-.528,.342),l(-.394,.595),l(-1.078,.316),l(-.62,.018),l(-.474,-.082),l(-.362,.411),l(-.143,.368),l(-.036,.819),l(-.114,.509),l(.064,.409),l(-.086,.24),l(-.163,.001),l(-.588,.131),l(.739,.884),l(.069,.183),l(.112,.875),l(.254,.14),l(1.091,.953),l(.148,.324),l(.646,1.041),l(.163,.338),l(-.194,.241),l(-.451,.229),l(-.128,.226),l(.231,1.185),l(-.171,.198),l(-.812,.428),l(.178,.38),l(.6,1.436),l(.54,.477),l(.606,.604),l(.203,.479),l(.088,.663),l(-.086,.636),l(.006,.254),l(.488,1.183),l(.586,1.225),l(-.077,.297),l(-1.011,1.559),l(-1.01,1.7),l(-.098,.374),l(-.359,-.181),l(-.075,-.805),l(.461,-.665),l(.174,-.495),l(.122,-.777),l(.287,-.466),l(-.512,-.027),l(-.104,-.084),l(-.004,-.282),l(.195,-.509),l(-.177,-1.524),l(-.246,-.832),l(-.639,-1.185),l(-.488,-1.312),l(-.347,-.846),l(-.179,-.875),l(-.174,-1.736),l(-.117,-.677),l(-.034,-.564),l(-.051,-.212),l(-.344,-.084),l(-.148,-.098),l(-.304,-.917),l(-.516,-.677),l(-.226,-.225),l(-.247,.029),l(-.081,.988),l(-.158,.424),l(-.43,.41),l(-.59,.284),l(-1.089,.511),l(-.359,.622),l(-.298,.297),l(-.196,.142),l(-.237,-.282),l(-.007,-.438),l(-.212,.015),l(-.338,.354),l(-.321,-.013),l(-.166,-.211),l(.147,-.495),l(-.001,-.113),l(-.621,.171),l(-.276,.127),l(-.247,.283),l(-.355,-.126),l(-.002,-.466),l(.553,-1.54),l(.162,-.791),l(.001,-.889),l(-.101,-1.059),l(-.384,-.973),l(-.431,-1.072),l(-.196,-.296),l(-.281,.537),l(-.32,-.126),l(-.526,-.366),l(.482,-.17),l(.312,-.015),l(-.149,-.479),l(-.054,-.268),l(-.684,-.775),l(-.182,-.183),l(-.19,-.028),l(-.407,.1),l(-.38,-.267),l(.086,-.438),l(-.026,-.141),l(-.209,-.112),l(-.365,.043),l(-.577,-.465),l(-.504,-.606),l(-.117,-.244),l(.252,-.341),l(.801,-.527),l(-.194,-1.607), -N(605.297,153.429),l(-.126,-.264),l(-.269,-.55),l(-.223,-1.213),l(-.611,-1.41),l(-.357,-.395),l(-.73,.354),l(-.393,0),l(-.034,-.084),l(-.242,-.211),l(-.356,-.592),l(-.124,-.042),l(-.152,.127),l(-.026,.537),l(.374,.79),l(-.006,.424),l(-.143,.169),l(-.455,.086),l(-.235,.537),l(-.261,.1),l(-.255,-.437),l(-.311,-.395),l(-.073,-.057),l(-.163,.669),l(-.28,.249),l(-.203,.043),l(-.271,-.536),l(-.495,.636),l(-.359,-.265),l(-.147,-.532),l(-.402,-1.775),l(-.325,-1.409),l(-.352,-.45),l(-.04,-.254),l(.505,-.765),l(.029,-.269),l(-.193,-.21),l(-1.042,-.431),l(-.339,-.323),l(.548,-.61),l(.4,-.299),l(.502,-.13),l(.382,-.101),l(.047,-.155),l(-.126,-.112),l(-1.224,-.938),l(-.494,-.237),l(-.083,-.155),l(.124,-.283),l(.555,-.525),l(.234,-.171),l(1.252,.303),l(.339,.266),l(.372,.266),l(.489,-.06),l(.417,.054),l(.129,.324),l(.053,.479),l(.079,.719),l(.095,.099),l(.537,.109),l(.547,.053),l(.916,-.062),l(.559,-.003),l(2.473,.198),l(.111,.098),l(.057,.127),l(-.012,.79),l(-.159,.34),l(-.938,.767),l(-.498,.13),l(-.651,.356),l(-.131,.283),l(.009,.522),l(.001,.381),l(.23,.281),l(.249,.267),l(.529,.448),l(.224,-.354),l(.395,-1.159),l(.281,-.115),l(.4,-.044),l(.064,.578),l(.627,2.479),l(.037,.466),l(.194,1.607),l(-.801,.527),l(-.252,.341), -N(627.408,186.411),l(-.086,.337),l(-.495,.35),l(-.11,.575),l(-.644,.089),l(-.05,-.478),l(-.309,-.163),l(-.279,.28),l(-.244,.394),l(-.204,-.083),l(-.118,-.239),l(.213,-.398),l(-.041,-.21),l(-.055,-.226),l(-.261,-.238),l(-.447,-.119),l(-.106,-.466),l(-.571,.013),l(-.448,.17),l(.013,-.104),l(.128,-.297),l(-.15,-.183),l(-.411,.212),l(-.301,-.07),l(-.38,-.38),l(-.116,-.508),l(.064,-.282),l(-.151,-.438),l(-.229,-.169),l(-.388,.043),l(-.39,-.719),l(-.209,-.508),l(-.3,-.324),l(-.311,-.155),l(-.456,-.395),l(-.343,.1),l(-.218,.142),l(-.216,-.381),l(-.04,-.607),l(.163,-.749),l(.559,-1.738),l(.29,-.848),l(-.087,-.044),l(.098,-.374),l(1.01,-1.7),l(1.011,-1.559),l(.077,-.297),l(-.586,-1.225),l(-.488,-1.183),l(-.006,-.254),l(.086,-.636),l(-.088,-.663),l(-.203,-.479),l(-.606,-.604),l(-.54,-.477),l(-.6,-1.436),l(-.178,-.38),l(.812,-.428),l(.171,-.198),l(-.231,-1.185),l(.128,-.226),l(.451,-.229),l(.194,-.241),l(-.163,-.338),l(-.646,-1.041),l(-.148,-.324),l(-1.091,-.953),l(-.254,-.14),l(-.112,-.875),l(-.069,-.183),l(-.739,-.884),l(.588,-.131),l(.163,-.001),l(.086,-.24),l(-.064,-.409),l(.114,-.509),l(.036,-.819),l(.143,-.368),l(.362,-.411),l(.474,.082),l(.62,-.018),l(1.078,-.316),l(.394,-.595),l(.528,-.342),l(.436,-.172),l(.645,-.06),l(.158,-.071),l(.08,-.085),l(.541,.166),l(.295,.182),l(.118,.168),l(.01,.423),l(-.106,.805),l(.066,.367),l(.186,.154),l(.423,-.003),l(.489,-.2),l(.414,-.045),l(.045,.113),l(.249,1.311),l(-.085,.41),l(-.528,1.569),l(-.117,.438),l(-.027,.494),l(.145,.324),l(.481,.138),l(.37,-.411),l(1.173,-1.178),l(.346,-.03),l(.835,.348),l(.59,.265),l(.223,-.072),l(.543,-.257),l(.2,-.538),l(.286,-.453),l(.403,.012),l(.893,.192),l(.266,.153),l(.052,.282),l(.285,.535),l(.688,.659),l(.435,.632),l(.058,1.524),l(.107,.366),l(.255,.464),l(.979,1.279),l(.419,.703),l(.157,.507),l(.002,.945),l(-.121,.438),l(-.808,.64),l(-.301,-.167),l(-.599,-.109),l(-.575,-.039),l(-.558,.074),l(-.798,-.066),l(-1.172,.091),l(-.383,.101),l(-.521,.441),l(-.92,1.233),l(-.146,.297),l(-.076,.382),l(.026,.635),l(.219,.648),l(.487,.717),l(.16,.479),l(-.146,.176),l(-.026,-.063),l(-.286,-.183),l(-.458,-.084),l(-.9,-.887),l(-.434,-.154),l(-.304,-.014),l(-.572,.227),l(-.391,-.112),l(-.29,-.141),l(-.337,-.014),l(0,-.282),l(.19,-1.243),l(-.107,-.184),l(-.719,-.055),l(-.248,-.084),l(-.521,.043),l(-.443,.212),l(-.244,.297),l(.207,.593),l(-.103,.339),l(-.318,.707),l(.083,.579),l(.054,.41),l(-.293,.664),l(-.583,1.187),l(-.7,1.682),l(-.255,1.314),l(.104,1.171),l(.172,.296),l(.229,.169),l(.55,-.072),l(.396,-.142),l(.252,.07),l(.135,.353),l(.009,.325),l(-.08,.466),l(.141,.282),l(.178,.211),l(.271,-.094),l(.17,.46),l(.209,.974),l(-.032,.254),l(.127,.737),l(.434,.871),l(.167,.155),l(.801,.281),l(.539,.112),l(.467,-.058),l(.294,.197),l(.266,.612),l(.664,.544),l(.212,.145), -N(204.31,158.989),l(-.175,.412),l(.612,-.173),l(.026,.429),l(-.419,1.241),l(.178,.269),l(-.237,.795),l(.189,.318),l(-.092,.397),l(-.358,.875),l(-.3,.35),l(-.36,.032),l(-.054,.286),l(-.388,.238),l(0,.286),l(-.69,.016),l(.215,-4.297),l(-.025,-.329),l(.278,-.095),l(.386,.27),l(.599,-.857),l(.178,-.447),l(.437,-.016), -N(200.276,169.481),l(-.151,-.056),l(-.928,-.342),l(-.614,.032),l(-.766,-.032),l(-.608,-.239),l(-.909,-.656),l(-.513,-.419),l(-.044,-.454),l(-.054,-.553),l(.207,-.238),l(-.305,-.397),l(1.076,-1.812),l(1.06,-.007),l(1.762,.007),l(.211,-.683),l(-.532,-.223),l(-.359,-.69),l(-.624,-.231),l(-.495,-.541),l(-.396,-.223),l(.999,-.032),l(.04,-1.24),l(1.792,.005),l(2.332,.006),l(-.215,4.297),l(.69,-.016),l(.303,.095),l(.311,.302),l(.14,-.191),l(-.066,-.381),l(.336,.157),l(.458,.367),l(-1.507,1.208),l(-.499,.238),l(-.177,.493),l(.162,.604),l(-.438,.302),l(-.467,.048),l(-.043,.254),l(.164,.159),l(-.351,.111),l(-.184,.302),l(-.22,-.016),l(-.565,.461),l(-.012,.223), -N(204.413,165.093),l(.312,-.03),l(.612,-.27),l(.639,-.058),l(.743,.126),l(.478,.069),l(1.443,.04),l(.699,-.228),l(.379,-.199),l(.567,.267),l(.788,-.03),l(.763,-.101),l(.63,-.001),l(.5,.126),l(.564,.253),l(-.038,.353),l(-.102,.226),l(.228,.282),l(.787,.238),l(.557,.069),l(.244,.524),l(-1.425,.486),l(-.424,.229),l(-.248,.086),l(-.463,-.097),l(-.328,-.182),l(-.259,-.013),l(-.294,.242),l(-.503,.794),l(-1.207,.997),l(-.725,-.42),l(-.513,.583),l(-.882,.034),l(-.005,.961),l(-.293,.412),l(-.29,.143),l(-1.001,.125),l(-.311,-.661),l(-.025,-.085),l(-.478,-.3),l(.085,-.731),l(-.128,-.175),l(-.272,0),l(-.541,-.276),l(-.433,.34),l(-.365,-.016),l(-.066,-.271),l(-.565,-.35),l(-.409,-.08),l(-.208,-.418),l(-.677,-.17),l(.438,-.302),l(-.162,-.604),l(.177,-.493),l(.499,-.238),l(1.507,-1.208), -N(205.532,170.085),l(.035,.076),l(-.203,.057),l(.01,.265),l(-.237,.334),l(-.68,-.046),l(-.853,-.139),l(-1.697,-.505),l(-1.305,-.435),l(-.325,-.21),l(.012,-.223),l(.565,-.461),l(.22,.016),l(.184,-.302),l(.351,-.111),l(-.164,-.159),l(.043,-.254),l(.467,-.048),l(.677,.17),l(.208,.418),l(.409,.08),l(.565,.35),l(.066,.271),l(.365,.016),l(.433,-.34),l(.541,.276),l(.272,0),l(.128,.175),l(-.085,.731), -N(242.38,173.617),l(-.128,-.105),l(-.84,.171),l(-.534,.156),l(-.414,.2),l(-.056,.288),l(.048,.497),l(-.129,.396),l(-.227,-.027),l(-.381,.059),l(-.99,1.758),l(-.172,.722),l(-.241,.722),l(-.709,1.191),l(.402,.025),l(.234,-.1),l(.384,-.017),l(.31,.606),l(.855,1.45),l(.103,.395),l(-.226,1.132),l(.099,.353),l(.401,.309),l(.429,.548),l(.397,.252),l(.496,-.017),l(1.163,-.12),l(1.167,-.05),l(.521,.181),l(.64,.321),l(.188,.253),l(.847,.998),l(.554,.576),l(.144,0),l(.522,-.13),l(.76,-.174),l(1.99,-.224),l(.644,.081),l(-.409,.525),l(-.085,1.004),l(-.379,.511),l(-.147,.326),l(.026,.254),l(.035,.438),l(.048,.367),l(.162,.804),l(.447,.789),l(.256,.437),l(.486,.647),l(.121,.282),l(-.731,.612),l(-.479,.526),l(.51,.491),l(.797,1.182),l(-.52,.286),l(-.834,.57),l(-.412,.158),l(-.463,.017),l(-2.812,-.082),l(-.64,-.024),l(-.042,.325),l(-.013,1.031),l(.178,.154),l(.896,.122),l(.177,.084),l(.293,.408),l(.052,.367),l(-.384,-.04),l(-.417,-.11),l(-.687,.032),l(-.493,.187),l(-.111,.085),l(-.001,1.071),l(0,.554),l(.192,.197),l(.688,.363),l(.192,.183),l(-.031,.777),l(.399,.562),l(.031,.212),l(-.326,1.428),l(-.706,4.411),l(-.073,.382),l(-.133,.198),l(-.156,-.14),l(-.575,-.703),l(-.237,-.126),l(-.161,.058),l(-.448,.031),l(1.155,-1.956),l(.035,-.198),l(-.127,-.069),l(-1.299,-.84),l(-.509,-.209),l(-.708,.442),l(-.397,-.182),l(-.523,-.421),l(-.452,.427),l(-.337,.157),l(-.496,.031),l(-1.038,-.008),l(-.573,-.152),l(-.092,-.281),l(.004,-.396),l(-.173,-.296),l(-.479,-.039),l(-.366,-.14),l(-.078,-.282),l(-.251,-.761),l(-.988,-.672),l(-.526,-.364),l(-.208,-.62),l(-.208,-.324),l(-.513,-.435),l(-.897,-.418),l(-.927,-.107),l(-.081,-.112),l(-.269,-.162),l(-.197,-.118),l(-.709,-.631),l(-.128,-.056),l(-.89,.401),l(-.67,.061),l(-.977,-.277),l(-.355,-.309),l(-.166,-.493),l(-.227,-.225),l(-1.432,-.656),l(-1.496,-.803),l(.033,-.068),l(-.117,-.311),l(-.181,-.282),l(.108,-.212),l(.509,-.114),l(.465,.112),l(.186,-.325),l(-.348,-.564),l(.086,-.424),l(.314,-.227),l(.878,-.058),l(.193,.042),l(.41,-.227),l(.445,-.679),l(.45,-.961),l(.651,-1.061),l(-.122,-.268),l(-.56,-.408),l(-.071,-.184),l(.306,-.721),l(.089,-.523),l(-.149,-.861),l(-.371,-.86),l(.085,-.254),l(.49,-.143),l(.135,-.212),l(-.088,-.198),l(-.565,-.479),l(-.042,-.226),l(.103,-.198),l(.242,-.326),l(.036,-.254),l(-.173,-.282),l(-.739,-.719),l(-.364,-.396),l(.256,-.753),l(.228,-.082),l(-.045,-.45),l(.19,.082),l(.085,.307),l(.584,-.409),l(.094,-.43),l(.322,-.062),l(-.509,-1.038),l(-.228,-.149),l(-.084,-.327),l(.142,.075),l(.42,.338),l(.397,.507),l(.22,.508),l(.235,.197),l(.199,-.17),l(.147,-.241),l(-.332,-.776),l(.02,-.212),l(.176,-.297),l(.445,-.34),l(.399,-.297),l(.501,-.736),l(.327,-.156),l(.684,-.101),l(.217,-.382),l(-.104,-.381),l(.174,-.777),l(.067,-.65),l(.207,-.48),l(.498,-.439),l(.429,-.283),l(.592,-.242),l(.113,0),l(.374,.206),l(.22,.443),l(.281,-.34),l(.031,-.438),l(.199,-.551),l(.22,-.071),l(.267,.126),l(.855,.041),l(.562,-.001),l(.623,-.27),l(.237,-.254),l(.476,-.298),l(.848,-.256),l(.435,-.396),l(.278,-.551),l(.333,-.255),l(.469,-.17),l(.58,.013),l(.526,.338),l(.155,.126),l(.155,.339),l(-.285,.332), -N(408.6,174.04),l(-.062,.777),l(.164,.762),l(.388,.718),l(-.316,.962),l(-.19,.566),l(-.223,.298),l(-.656,.414),l(-.095,.34),l(.116,.592),l(-.078,.368),l(-.433,.13),l(-.257,.03),l(-.237,.397),l(.002,.381),l(.003,.48),l(-.012,.876),l(-.09,.989),l(.217,1.439),l(-.121,1.188),l(.006,.234),l(-.333,.015),l(-1.232,.144),l(-.669,.052),l(-.106,-.205),l(-.295,-1.072),l(.188,-.708),l(.026,-.833),l(-.036,-.537),l(-.135,-.974),l(-.006,-.862),l(-.035,-.522),l(.013,-.579),l(-.442,-1.311),l(-.164,-.691),l(-.403,-.323),l(-.468,-.294),l(-.18,-.395),l(.141,-.594),l(.046,-.424),l(.062,-.142),l(.24,-.157),l(.366,-.553),l(.415,-.271),l(.418,-.045),l(.739,.095),l(.337,-.158),l(.415,-.468),l(.237,-.764),l(-.131,-.367),l(.577,-.3),l(.321,-.073),l(.339,.28),l(.727,.589),l(.902,.503), -N(394.266,178.814),l(.191,-.17),l(-.02,-.41),l(-.261,-1.934),l(.125,-.34),l(.271,-.157),l(2.119,-.041),l(.867,.037),l(1.429,.006),l(.976,-.458),l(.161,.032),l(.595,.119),l(-.25,.849),l(.05,.254),l(.633,.915),l(.244,.451),l(-.188,.721),l(.02,.396),l(.265,1.114),l(.181,.592),l(.503,.788),l(.032,.155),l(-.286,.242),l(-.174,.382),l(.01,1.314),l(-.011,.72),l(.021,.551),l(.18,.479),l(.468,.577),l(.752,.608),l(-.503,.682),l(-.304,.099),l(-.593,-.013),l(-.992,.144),l(-.463,.185),l(-.188,.098),l(-.898,.469),l(-1.263,.398),l(-.942,.412),l(-.958,.567),l(-.578,-.324),l(-.945,-.436),l(-.074,-.124),l(-.066,-.741),l(-.554,-1.155),l(-.263,-.747),l(-.103,-.706),l(.327,-1.005),l(.437,-1.274),l(.521,-.851),l(.203,-.595),l(-.334,-1.438),l(-.189,-1.285),l(-.178,-.154), -N(400.72,175.499),l(1.013,.163),l(.611,.166),l(.29,.041),l(-.046,.424),l(-.141,.594),l(.18,.395),l(.468,.294),l(.403,.323),l(.164,.691),l(.442,1.311),l(-.013,.579),l(.035,.522),l(.006,.862),l(.135,.974),l(.036,.537),l(-.026,.833),l(-.188,.708),l(.295,1.072),l(.106,.205),l(-.452,.035),l(-.479,.128),l(-.368,.212),l(-.023,.04),l(-.752,-.608),l(-.468,-.577),l(-.18,-.479),l(-.021,-.551),l(.011,-.72),l(-.01,-1.314),l(.174,-.382),l(.286,-.242),l(-.032,-.155),l(-.503,-.788),l(-.181,-.592),l(-.265,-1.114),l(-.02,-.396),l(.188,-.721),l(-.244,-.451),l(-.633,-.915),l(-.05,-.254),l(.25,-.849), -N(383.772,190.418),l(.041,-.919),l(.105,-.565),l(.247,-.849),l(.059,-.452),l(-.131,-.282),l(-1.264,-1.334),l(-.592,.032),l(-.369,-.097),l(-.194,-.183),l(-.05,-.183),l(.501,-.865),l(.059,-.438),l(-.119,-.55),l(.062,-.17),l(.047,-.099),l(.602,-.554),l(.188,-.354),l(-.179,-.21),l(-.296,-.549),l(.03,-.127),l(.158,-.199),l(.304,-.03),l(.548,.223),l(.304,.012),l(.19,-.143),l(-.051,-.226),l(-.648,-.561),l(-.309,-.351),l(.332,-.37),l(.125,-.283),l(-.197,-.31),l(-.695,-.405),l(-.214,-.409),l(.264,-.623),l(.379,-.397),l(.522,-.54),l(.352,-.059),l(.566,.321),l(.455,.436),l(.35,-.228),l(.362,-.469),l(.571,-.483),l(.239,-.114),l(.257,.041),l(.147,.211),l(.004,.297),l(.117,.381),l(.148,.239),l(.352,-.059),l(.604,-.399),l(.159,-.1),l(.259,.168),l(.545,-.003),l(.308,.252),l(.15,.465),l(.52,.562),l(.452,.223),l(.354,.083),l(.368,-.115),l(.446,-.257),l(.608,-.159),l(.769,-.075),l(.644,.166),l(.63,.434),l(.178,.154),l(.189,1.285),l(.334,1.438),l(-.203,.595),l(-.521,.851),l(-.437,1.274),l(-.327,1.005),l(.103,.706),l(.263,.747),l(.554,1.155),l(.066,.741),l(-.119,-.201),l(-.289,-.197),l(-.208,.015),l(-.143,.24),l(-.096,.042),l(-.48,-.027),l(-.705,-.167),l(-.608,-.083),l(-2.352,.062),l(-1.279,.243),l(-.575,.199),l(-1.07,.369),l(-1.739,.781),l(-.701,.425),l(-.256,-.013),l(-.075,-.032), -N(627.408,186.411),l(.035,.024),l(.523,.098),l(1.061,1.198),l(.693,.916),l(.506,.762),l(.081,.579),l(-.023,.805),l(-.134,.862),l(.07,1.073),l(-.07,.636),l(.097,.494),l(.196,.381),l(.53,.493),l(.338,.536),l(.705,1.608),l(.062,.127),l(-.366,-.069),l(-.895,-.055),l(-.401,.142),l(-.175,-.07),l(-.521,-.437),l(-.885,-.605),l(-.6,-.337),l(-1.231,-.675),l(-1.02,-.732),l(-.217,-.254),l(-.16,-.988),l(-.438,-.691),l(-.895,-.817),l(-.195,-.663),l(.039,-.494),l(.03,-.283),l(-.107,-.409),l(-.399,-.634),l(-.347,-1.849),l(-.188,-.72),l(.043,-.362),l(.448,-.17),l(.571,-.013),l(.106,.466),l(.447,.119),l(.261,.238),l(.055,.226),l(.041,.21),l(-.213,.398),l(.118,.239),l(.204,.083),l(.244,-.394),l(.279,-.28),l(.309,.163),l(.05,.478),l(.644,-.089),l(.11,-.575),l(.495,-.35),l(.086,-.337),M(643.95,196.042),l(.081,.044),l(.375,.408),l(.397,.141),l(.861,.083),l(.413,.168),l(.761,.436),l(.335,.042),l(.337,-.1),l(-.503,-.535),l(.169,-.551),l(.365,-.608),l(.528,-1.258),l(.584,-.27),l(1.481,-.342),l(1.018,-.299),l(.428,-.326),l(.524,-1.021),l(.523,-.323),l(.87,-1.117),l(.22,-.212),l(.244,-.147),l(.112,-.068),l(.084,.126),l(.062,.37),l(.234,-.012),l(.111,.259),l(.309,.271),l(.383,-.271),l(1.234,-.42),l(-.025,-.086),l(-.197,-.197),l(.013,-.247),l(.024,-.111),l(-.148,-.444),l(-.11,-.174),l(.167,-.042),l(.188,.143),l(.085,-.016),l(.449,-.084),l(.161,-.283),l(-.036,-.24),l(-.478,-.366),l(.197,-.396),l(.436,-.071),l(.511,.041),l(.154,-.605),l(.408,-.313),l(.284,-.48),l(.531,-.58),l(.498,-1.032),l(.075,-.17),l(.322,.465),l(.33,.098),l(.315,-.424),l(.305,.494),l(.351,.282),l(.402,.211),l(.075,.338),l(-.182,.354),l(-.234,.452),l(.037,.198),l(.631,-.128),l(.472,-.128),l(.115,.226),l(-.349,.495),l(.742,-.1),l(.357,-.085),l(.269,.056),l(1.035,.662),l(.345,.14),l(.1,.24),l(-.158,.269),l(-.201,.155),l(-.44,.143),l(-.594,.029),l(-.683,-.083),l(-.355,.311),l(.096,.254),l(.888,.69),l(-.161,.311),l(-.458,.199),l(-.646,.1),l(-.518,.114),l(-.067,.15),l(-.182,-.09),l(-.753,-.292),l(-.446,-.04),l(-.624,.018),l(-.651,-.081),l(-.748,-.081),l(-.464,.017),l(-.247,.157),l(-.381,.638),l(-.119,.565),l(.106,.988),l(-.22,.383),l(-.646,.244),l(-.218,.34),l(.076,.748),l(-.928,1.785),l(-.387,.299),l(-.864,.175),l(-.465,.172),l(-.467,.356),l(-.287,.03),l(-.559,-.152),l(-.524,-.223),l(-.557,-.251),l(-.431,-.11),l(-.479,.074),l(-.531,.441),l(-.403,.525),l(-.528,.342),l(-.399,.172),l(-.543,-.11),l(-.526,-.223),l(-.255,.001),l(-.928,.416),l(-.446,-.28),l(-.304,-.083),l(-1,-.983),l(-.253,-.295),l(-.288,-.792), -N(274.556,195.884),l(.06,-.212),l(-.332,-.563),l(-.49,-1.127),l(-.246,-.832),l(-.185,-.295),l(-.561,-.067),l(-.532,-.675),l(-.571,-.831),l(.328,-.694),l(.095,-.467),l(-.078,-.777),l(.169,-.17),l(1.131,-.091),l(.183,-.27),l(.082,-.862),l(.142,-.496),l(.015,-.339),l(.326,-.312),l(.382,-.057),l(1.392,.463),l(.465,.042),l(.083,-.41),l(.141,-.085),l(.337,.027),l(.833,.012),l(.863,-.03),l(.723,.069),l(.63,.182),l(.999,.427),l(-.647,.876),l(-.391,.751),l(-.137,.594),l(.094,.381),l(.134,.635),l(.086,.664),l(.521,.844),l(.029,.438),l(-.424,1.472),l(-.489,.963),l(-1.05,-.488),l(-.319,.001),l(-.534,.385),l(-.398,.059),l(-.418,-.139),l(-.642,-.124),l(-.172,.156),l(-.2,.326),l(.611,1.014),l(-.528,-.054),l(-1.108,-.276),l(-.4,-.04), -N(285.859,190.719),l(.015,.422),l(-1.102,1.646),l(-.427,.765),l(-.439,.992),l(-.464,.681),l(-.299,.214),l(-.56,-.025),l(-1.11,-.389),l(-.882,.613),l(-.225,-.069),l(-.649,-.505),l(.489,-.963),l(.424,-1.472),l(-.029,-.438),l(-.521,-.844),l(-.086,-.664),l(-.134,-.635),l(-.094,-.381),l(.137,-.594),l(.391,-.751),l(.647,-.876),l(.218,.093),l(1.033,.294),l(.55,.196),l(.799,.549),l(1.264,1.084),l(.545,.564),l(.317,.465),l(.193,.028), -N(429.505,210.684),l(-.695,-.533),l(-.351,.13),l(-.68,.513),l(-.536,.414),l(-.112,-.177),l(-.392,-.86),l(-1.381,-1.344),l(.184,-.295),l(.413,-.229),l(.803,.307),l(.343,-.681),l(-.052,-.296),l(-.274,-.253),l(-.39,-.521),l(-.116,-.366),l(.058,-.495),l(.127,-.1),l(.909,-.146),l(.604,-.243),l(.125,-.213),l(.167,-.807),l(.174,-.185),l(.239,-.029),l(.193,.14),l(.341,.479),l(.405,.521),l(.386,.195),l(.287,-.016),l(.188,-.228),l(.362,-.482),l(.29,.253),l(.167,.578),l(.146,.112),l(.304,.068),l(.255,-.114),l(.184,-.68),l(.243,-1.089),l(.131,-1.229),l(.229,-1.047),l(-.114,-.338),l(-.161,-.127),l(-.384,-.082),l(-.528,-.208),l(-.242,-.31),l(-.132,-.437),l(.008,-.109),l(.021,-.3),l(.157,-.284),l(.492,-.398),l(.556,-.441),l(.094,-.354),l(-.389,-.902),l(-.369,-.322),l(-.592,-.067),l(-.939,.5),l(-.463,-.025),l(-.146,-.253),l(-.068,-.734),l(.077,-.679),l(.396,-.468),l(.56,.109),l(.863,.023),l(.878,-.076),l(.271,.055),l(.479,.04),l(.56,.124),l(.576,.194),l(.864,.334),l(.863,.292),l(.271,-.086),l(-.1,-.861),l(.159,-.185),l(.303,-.312),l(.365,-.497),l(.158,-.523),l(.222,-1.287),l(.255,-.228),l(.479,-.102),l(.975,-.175),l(.367,.054),l(.624,.138),l(.895,.093),l(.751,-.287),l(.128,.197),l(-.031,.156),l(-.398,1.203),l(-.558,.837),l(-.349,.821),l(-.094,.551),l(-.156,.764),l(-.196,2.021),l(-.254,1.342),l(-.115,.61),l(-.169,.708),l(-.139,.523),l(-.459,.427),l(-.525,.229),l(-.809,.599),l(-.41,.454),l(-.47,.836),l(-.343,.751),l(-.193,1.159),l(-.074,.396),l(.122,.72),l(-.086,.706),l(-1.025,.938),l(-.364,.229),l(-.931,.811),l(-.554,.399),l(-.57,.328),l(-.147,-.211),l(-.042,-.664),l(-.054,-.424),l(-1.495,.532),l(-.327,.581),l(-.443,.271),l(-.177,-.013),l(-.484,-.336), -N(425.506,195.522),l(.045,-.495),l(.88,.093),l(1.773,.088),l(.831,.038),l(1.022,.149),l(-.396,.468),l(-.077,.679),l(.068,.734),l(.146,.253),l(.463,.025),l(.939,-.5),l(.592,.067),l(.369,.322),l(.389,.902),l(-.094,.354),l(-.556,.441),l(-.492,.398),l(-.157,.284),l(-.021,.3),l(-.008,.109),l(.132,.437),l(.242,.31),l(.528,.208),l(.384,.082),l(.161,.127),l(.114,.338),l(-.229,1.047),l(-.131,1.229),l(-.243,1.089),l(-.184,.68),l(-.255,.114),l(-.304,-.068),l(-.146,-.112),l(-.167,-.578),l(-.29,-.253),l(-.362,.482),l(-.188,.228),l(-.287,.016),l(-.386,-.195),l(-.405,-.521),l(-.341,-.479),l(-.193,-.14),l(-.239,.029),l(-.174,.185),l(-.167,.807),l(-.125,.213),l(-.604,.243),l(-.909,.146),l(-.127,.1),l(-.058,.495),l(.116,.366),l(.39,.521),l(.274,.253),l(.052,.296),l(-.343,.681),l(-.803,-.307),l(-.413,.229),l(-.184,.295),l(-.038,-.037),l(-.563,-.493),l(-.532,-.55),l(-.259,-.466),l(-1.318,-1.169),l(.286,-.312),l(-.369,-.281),l(-.528,-.056),l(-.918,-1.438),l(.382,-.297),l(.111,-.1),l(-.321,-.395),l(-.464,-.14),l(-.29,-.564),l(-.369,-.451),l(.319,-.17),l(.541,-.411),l(.223,-.396),l(.291,-.976),l(.089,-.295),l(.415,.07),l(.495,.013),l(-.064,-.211),l(-.56,-.352),l(-.561,-.451),l(.208,-.042),l(.271,-.128),l(.142,-.617),l(.83,-.043),l(.927,.008),l(1.245,.021),l(.575,-.032),l(-.001,-.155),l(-.02,-.551),l(-.026,-1.836), -N(422.536,195.513),l(1.005,-.007),l(1.965,.017),l(.026,1.836),l(.02,.551),l(.001,.155),l(-.575,.032),l(-1.245,-.021),l(-.927,-.008),l(-.83,.043),l(.033,-.146),l(-.049,-.297),l(-.144,-.084),l(-.416,-.098),l(.287,-.467),l(.447,-.523),l(.335,-.58),l(.066,-.403),M(419.636,193.273),l(-.484,-.049),l(-.049,-.218),l(.049,-.291),l(.242,-.097),l(.024,-.146),l(0,-.291),l(.17,-.097),l(.169,-.121),l(.219,.048),l(.218,.048),l(.097,.194),l(-.193,.169),l(-.146,.243),l(-.17,.339),l(-.146,.267), -N(222.291,207.801),l(.188,-.126),l(.264,-.312),l(.585,-1.061),l(.038,-.269),l(-.209,-.733),l(.058,-.391),l(-.478,.617),l(-.732,.623),l(-.333,-.098),l(-.601,-.324),l(-.408,-.408),l(.389,-.283),l(.1,-.24),l(-.167,-.579),l(.005,-.438),l(.133,-.466),l(-.109,-.282),l(-.362,-.649),l(.193,-.17),l(.48,-.198),l(.721,-.454),l(-.319,-.395),l(0,-.226),l(.175,-.354),l(.497,-.462),l(.157,-.146),l(.14,-.848),l(-.116,-.452),l(-.082,-.184),l(.11,-.226),l(.686,-.101),l(.891,-.341),l(.396,-.241),l(.474,-.382),l(.09,-.186),l(1.496,.803),l(1.432,.656),l(.227,.225),l(.166,.493),l(.355,.309),l(.977,.277),l(.67,-.061),l(.89,-.401),l(.128,.056),l(.709,.631),l(.197,.118),l(.269,.162),l(.081,.112),l(.387,.76),l(.321,.789),l(-.08,.255),l(-.352,.384),l(-.547,1.147),l(-.533,.779),l(-.71,.725),l(-1.001,.755),l(-.336,.087),l(-1.028,.303),l(-.901,.358),l(-.809,.499),l(-.59,.653),l(-.284,.51),l(-.987,2.506),l(-.267,.312),l(-.242,.072),l(-.398,-.068),l(-.398,-.491),l(-.191,-.479),l(-.312,-.252),l(-.815,.005),l(-.444,-.11),l(-.105,-.197),l(-.097,-.494),l(.233,-.34),l(.029,-.495),l(.005,-.569), -N(245.934,224.314),l(1.109,1.843),l(.922,1.646),l(.08,.24),l(-.437,.736),l(-.15,.523),l(-.143,.848),l(.057,.522),l(.236,.902),l(-.156,.34),l(-.221,.34),l(-.532,.582),l(-.102,.452),l(.347,.845),l(-.21,.368),l(-.159,.34),l(.022,.48),l(.604,1.168),l(.015,.522),l(-.285,.439),l(-.723,.61),l(-.12,.227),l(.049,.48),l(.132,.295),l(.018,.142),l(-.586,.187),l(-.15,.199),l(-.228,.933),l(-.259,.298),l(-.852,.275),l(-.201,-.517),l(-.289,-.31),l(-1.422,-.618),l(-.313,-.239),l(-.233,-.678),l(-.315,-.38),l(-.559,-.225),l(-.504,-.281),l(-.489,-.254),l(-.616,-.309),l(-.873,-.464),l(-.673,-.366),l(-.866,-.379),l(-.838,-.337),l(-1.271,-.845),l(-1.354,-.985),l(-1.232,-1.099),l(-.594,-.705),l(-.42,-.677),l(.008,-.438),l(0,-.903),l(-.269,-.606),l(-.781,-1.043),l(-1.389,-2.778),l(-.285,-.268),l(-.467,-.211),l(-.074,-.085),l(.055,-.536),l(-.02,-.396),l(-.149,-.396),l(-1.208,-2.199),l(-.997,-1.961),l(-.688,-1.27),l(-1.365,-1.917),l(-.272,-.353),l(-.598,-.973),l(-.462,-.423),l(-.75,-.437),l(-.914,-.365),l(-.61,-.365),l(.119,-.17),l(.181,-.113),l(.609,-.029),l(.144,-.41),l(-.118,-.282),l(-.592,-.874),l(-.353,-.437),l(-.258,-.72),l(.01,-.24),l(.244,-.523),l(.582,-.622),l(1.02,-.878),l(.47,-.198),l(.317,-.214),l(-.005,.569),l(-.029,.495),l(-.233,.34),l(.097,.494),l(.105,.197),l(.444,.11),l(.815,-.005),l(.312,.252),l(.191,.479),l(.398,.491),l(.398,.068),l(.242,-.072),l(.267,-.312),l(.987,-2.506),l(.284,-.51),l(.59,-.653),l(.809,-.499),l(.901,-.358),l(1.028,-.303),l(.336,-.087),l(1.001,-.755),l(.71,-.725),l(.533,-.779),l(.547,-1.147),l(.352,-.384),l(.08,-.255),l(-.321,-.789),l(-.387,-.76),l(.927,.107),l(.897,.418),l(.513,.435),l(.208,.324),l(.208,.62),l(.526,.364),l(.988,.672),l(.251,.761),l(.078,.282),l(.366,.14),l(.479,.039),l(.173,.296),l(-.004,.396),l(.092,.281),l(.573,.152),l(1.038,.008),l(.496,-.031),l(.337,-.157),l(.452,-.427),l(.523,.421),l(.397,.182),l(.708,-.442),l(.509,.209),l(1.299,.84),l(.127,.069),l(-.035,.198),l(-1.155,1.956),l(.448,-.031),l(.161,-.058),l(.237,.126),l(.575,.703),l(.156,.14),l(.136,.324),l(-.341,.186),l(-.793,-.235),l(-.493,-.096),l(-.322,.072),l(-.604,.441),l(-.371,.115),l(-.669,-.066),l(-1.895,.773),l(-.701,.442),l(-.372,.172),l(-.599,1.415),l(-.319,.511),l(-.021,.155),l(.277,.86),l(.012,.112),l(-.625,.498),l(-.62,.328),l(-.349,.342),l(-.247,.622),l(.106,.564),l(.619,.957),l(1.333,2.166),l(.106,.127),l(-.247,.495),l(-.208,.312),l(1.085,.12),l(.415,.04),l(.312,.182),l(.241,.323),l(.096,.663),l(1.843,.032),l(.762,-.499),l(.648,-.484),l(.326,-.114),l(-.059,1.511),l(-.098,1.173),l(.108,.353),l(.317,.337),l(.285,.068),l(.358,-.072),l(.786,-.259),l(.42,-.045), -N(279.288,257.295),l(-.063,-.423),l(.027,-.777),l(.222,-.819),l(.298,-.835),l(.321,-.75),l(-.019,-.141),l(-.491,-.336),l(-.234,-.112),l(-1.29,.445),l(-.224,-.055),l(-.254,-.563),l(-.487,-2.524),l(-.121,-.437),l(-.843,-.404),l(-.724,-.278),l(-.115,.001),l(-.709,.413),l(-.346,.03),l(-.925,-.221),l(-.818,-.15),l(-.372,-.04),l(.006,-.72),l(.086,-.721),l(.132,-.862),l(-.104,-.959),l(-.521,-.872),l(-.084,-.663),l(-.253,-.408),l(.421,-.666),l(.38,-.765),l(.238,-.834),l(.185,-1.173),l(-.022,-.494),l(-.307,-.774),l(-.316,-.479),l(-.73,-.362),l(-.436,-.407),l(-.067,-.563),l(.261,-.835),l(-.042,-.296),l(-.693,-.024),l(-1.615,-.019),l(-.5,-.012),l(-.967,-.036),l(-.153,-.112),l(-.249,-.944),l(-.138,-2.032),l(-.03,-.706),l(-.203,-1.029),l(.038,-.565),l(-.085,-.169),l(-.403,-.237),l(-.537,-.166),l(-.636,-.123),l(-1.148,.077),l(-.22,-.084),l(-.398,-.308),l(-.385,-.774),l(-.096,-.014),l(-.882,-.037),l(-.3,-.098),l(-.75,-.603),l(-.688,-.307),l(-.676,-.25),l(-.355,.03),l(-.787,-.023),l(-.316,-.097),l(-1.1,-.939),l(-.813,-.928),l(-.335,-.591),l(-.141,-.635),l(-.036,-.818),l(.064,-.622),l(.079,-.621),l(-.045,-.748),l(-1.283,-.021),l(-.934,.076),l(-.36,.158),l(-.874,.485),l(-1.471,1.109),l(-.415,.243),l(-.48,-.025),l(-.336,-.026),l(-.946,.824),l(-.355,.03),l(-1.122,-.304),l(-.939,-.136),l(-.42,.045),l(-.786,.259),l(-.358,.072),l(-.285,-.068),l(-.317,-.337),l(-.108,-.353),l(.098,-1.173),l(.059,-1.511),l(-.326,.114),l(-.648,.484),l(-.762,.499),l(-1.843,-.032),l(-.096,-.663),l(-.241,-.323),l(-.312,-.182),l(-.415,-.04),l(-1.085,-.12),l(.208,-.312),l(.247,-.495),l(-.106,-.127),l(-1.333,-2.166),l(-.619,-.957),l(-.106,-.564),l(.247,-.622),l(.349,-.342),l(.62,-.328),l(.625,-.498),l(-.012,-.112),l(-.277,-.86),l(.021,-.155),l(.319,-.511),l(.599,-1.415),l(.372,-.172),l(.701,-.442),l(1.895,-.773),l(.669,.066),l(.371,-.115),l(.604,-.441),l(.322,-.072),l(.493,.096),l(.793,.235),l(.341,-.186),l(-.136,-.324),l(.133,-.198),l(.073,-.382),l(.706,-4.411),l(.326,-1.428),l(-.031,-.212),l(-.399,-.562),l(.031,-.777),l(-.192,-.183),l(-.688,-.363),l(-.192,-.197),l(0,-.554),l(.001,-1.071),l(.111,-.085),l(.493,-.187),l(.687,-.032),l(.417,.11),l(.384,.04),l(-.052,-.367),l(-.293,-.408),l(-.177,-.084),l(-.896,-.122),l(-.178,-.154),l(.013,-1.031),l(.042,-.325),l(.64,.024),l(2.812,.082),l(.463,-.017),l(.412,-.158),l(.834,-.57),l(.52,-.286),l(.148,.168),l(.138,.437),l(.161,.861),l(.088,.452),l(.199,.437),l(.432,.054),l(.694,.546),l(.482,.223),l(.414,-.073),l(.757,-.697),l(.083,.183),l(.186,.776),l(.271,-.016),l(.645,-.739),l(.74,-.654),l(.554,-.286),l(.652,-.173),l(.235,-.213),l(.259,-.666),l(.203,-.199),l(.652,-.131),l(.569,-.272),l(.265,-.27),l(-.15,-.253),l(-.434,-.125),l(-.96,-.051),l(-.166,-.239),l(-.079,-.55),l(-.302,-1.524),l(-.391,-.69),l(-.616,-.688),l(.041,-.184),l(.159,-.029),l(.309,.125),l(.896,.461),l(.385,.04),l(1.149,-.035),l(.344,.224),l(.628,.618),l(.348,-.115),l(.232,-1.117),l(.284,-.115),l(.465,.054),l(.557,-.074),l(.807,-.23),l(1.74,-.9),l(.592,-.385),l(.163,-.326),l(-.103,-.169),l(.375,-.257),l(.302,-.058),l(.516,.124),l(.26,.111),l(.04,.212),l(-.452,1.09),l(.304,-.001),l(.533,.138),l(.435,.958),l(-.179,.368),l(-.547,1.416),l(-.213,.962),l(.156,.465),l(.281,.394),l(.167,.31),l(-.072,.354),l(.008,.396),l(.15,.296),l(1.103,.897),l(.613,.392),l(.686,-.075),l(.694,-.513),l(.505,-.314),l(1,-.331),l(.934,-.429),l(.943,.022),l(.4,.04),l(1.108,.276),l(.528,.054),l(-.611,-1.014),l(.2,-.326),l(.172,-.156),l(.642,.124),l(.418,.139),l(.398,-.059),l(.534,-.385),l(.319,-.001),l(1.05,.488),l(.649,.505),l(.225,.069),l(.882,-.613),l(1.11,.389),l(.56,.025),l(.299,-.214),l(.464,-.681),l(.439,-.992),l(.427,-.765),l(1.102,-1.646),l(-.015,-.422),l(.409,-.241),l(.276,.141),l(.235,.423),l(.164,.791),l(.414,1.34),l(.108,.607),l(.472,1.383),l(.296,.55),l(.324,.324),l(.978,.21),l(.196,.338),l(.038,.551),l(-.045,.254),l(-.524,.354),l(-.933,1.414),l(-.238,.325),l(-.51,.411),l(-.41,.231),l(-.244,.138),l(-.798,.778),l(-.544,.947),l(-.419,1.018),l(-.402,.453),l(.271,.112),l(.512,-.072),l(.497,-.198),l(1.202,-.709),l(.112,-.028),l(.299,.889),l(.442,.818),l(.255,.112),l(.287,.07),l(1.135,-.031),l(.592,-.058),l(.737,-.298),l(-.277,.679),l(-.017,.584),l(.448,-.557),l(1.254,-1.006),l(.289,-.156),l(.306,-.382),l(.499,-.933),l(.272,-.396),l(.256,-.099),l(1.006,-.003),l(.352,-.198),l(.175,0),l(.687,.549),l(.654,.267),l(.32,-.028),l(.814,.28),l(1.069,.45),l(.334,.281),l(.269,.593),l(.08,.028),l(.176,-.015),l(.402,-.354),l(.319,.042),l(.302,.254),l(.538,.789),l(.205,.396),l(-.13,.254),l(-.308,.41),l(-.116,.424),l(.091,.466),l(.171,.396),l(.825,-.821),l(.369,-.156),l(.609,-.156),l(.995,-.454),l(.224,-.028),l(.367,.069),l(.764,.38),l(.907,.436),l(.462,.098),l(1.117,.167),l(1.118,.083),l(.464,-.058),l(.48,-.029),l(.577,-.171),l(.416,-.016),l(1.131,.351),l(.731,.408),l(.762,.479),l(.586,.437),l(1.595,1.395),l(.742,.662),l(.821,.605),l(.41,.338),l(.477,.196),l(.734,.168),l(1.247,.097),l(.912,.04),l(.445,.197),l(.265,.465),l(.087,.607),l(.592,2.004),l(.268,1.143),l(.062,.988),l(-.076,.579),l(-.179,.904),l(-.243,.848),l(-.559,1.301),l(-.518,.849),l(-1.347,1.175),l(-1.388,1.288),l(-.44,.198),l(-.354,.043),l(-.39,.637),l(-.094,.396),l(-.012,.353),l(-.504,1.074),l(-.6,.976),l(-.8,1.104),l(-.266,.212),l(-.194,.015),l(-.079,-.423),l(-.278,-.296),l(-.367,-.084),l(-.064,.79),l(-.538,1.64),l(-.049,.734),l(-.077,.607),l(.318,2.738),l(.078,.988),l(-.577,2.543),l(-.039,.663),l(.14,.649),l(.043,.085),l(-.759,.495),l(-.404,.51),l(-.261,.791),l(-.04,.367),l(.245,1.468),l(-.106,.367),l(-.214,.283),l(-.676,.608),l(-.752,1.498),l(-1.01,1.4),l(-.201,.537),l(-.055,.311),l(.144,.945),l(-1.203,.37),l(-.544,.283),l(-.355,.368),l(-.084,.466),l(.021,.367),l(-.401,.114),l(-.864,-.041),l(-.979,.172),l(-.654,.001),l(-.764,-.055),l(-.465,-.112),l(-.922,.072),l(-.736,.002),l(-.214,.607),l(-.295,.198),l(-.795,.312),l(-.481,.453),l(-.21,.354),l(-.747,-.267),l(-.35,.071),l(-.563,.255),l(-1.864,1.232),l(-.528,.396),l(-.725,.383),l(-.616,.438),l(-.532,.679),l(-.486,.241),l(-.567,.072),l(-.278,-.014),l(.006,.24),l(.336,.225),l(.12,.536),l(-.111,.537),l(-.099,.282),l(-.282,.156),l(-.084,.155),l(.384,.648),l(.036,1.186),l(.05,1.045),l(-.057,.311),l(-.11,.594),l(-.198,.621),l(-.464,.735),l(-.566,.495),l(-.788,.524),l(-.866,1.046),l(-.208,.396),l(-.476,1.145),l(-.499,.933),l(-.75,1.004),l(-.69,.623),l(-.801,.78),l(.321,-.808),l(.436,-.594),l(.629,-.566),l(.605,-1.158),l(-.06,-.254),l(-.356,.142),l(-.397,-.014),l(-.633,-.21),l(-.075,.155),l(.002,.297),l(-.401,1.215),l(-.349,.48),l(-.661,.438),l(-.317,.283),l(-.225,.424),l(-.013,.354),l(-.448,1.709),l(-.481,.763),l(-.787,.934),l(-1.076,.979),l(-.101,-.313),l(-.258,-.746),l(.103,-.269),l(.634,-.766),l(.017,-.269),l(-.333,-.379),l(-.163,-.027),l(-.131,-.197),l(-.853,-1.109),l(-.474,-.435),l(-.999,-.587),l(-.55,-.194),l(-.617,-.194),l(-.432,-.576),l(-.365,-.393),l(-.693,.427),l(-.27,.016),l(-.232,-.38),l(-.59,-.814),l(-.379,-.407),l(-.47,-.364),l(-.266,-.098),l(-.25,.101),l(-1.042,.246),l(-.55,.003),l(.214,-.27),l(.833,-.88),l(1.805,-1.816),l(1.435,-1.363),l(1.633,-1.448),l(.348,-.242),l(1.754,-.744),l(.521,-.313),l(.161,-.467),l(.094,-1.638),l(-.517,-1.154),l(-.206,-.196),l(-.462,.017),l(-.957,.161),M(288.966,203.943),l(-.558,-.125),l(-.301,-.536),l(-.078,-.382),l(.16,-.197),l(-.094,-.636),l(.048,-.381),l(.208,-1.018),l(.176,-.099),l(.479,-.058),l(.879,.097),l(1.007,.11),l(.479,-.199),l(.368,.028),l(.479,.168),l(.479,.083),l(.319,.155),l(-.335,.538),l(-.193,.946),l(-.257,.494),l(-.289,.312),l(-.561,.326),l(-.464,.171),l(-.527,.015),l(-.783,.016),l(-.641,.171), -N(732.92,214.323),l(-.164,-.24),l(-.225,-.197),l(-.379,-.126),l(-.416,.198),l(-.399,-.38),l(-.287,-.184),l(-.659,-.238),l(-.243,-.239),l(.156,-.255),l(.29,.027),l(.731,-.058),l(.538,.126),l(.743,.083),l(.523,-.058),l(.258,-.185),l(.232,-.509),l(.056,.099),l(.351,.395),l(.286,.184),l(.241,.014),l(.961,-.2),l(.366,-.227),l(.361,-.722),l(.241,-.212),l(.653,-.029),l(.263,-.128),l(.04,-.282),l(-.064,-.565),l(-.043,-.536),l(.495,.196),l(.404,.056),l(.324,-.354),l(.318,.578),l(.077,.353),l(-.196,.495),l(-.099,.184),l(-.509,.044),l(-.159,.226),l(.061,.17),l(.437,.479),l(-.308,.354),l(-.264,.113),l(-.742,-.083),l(-.416,.001),l(-.091,.269),l(-.408,.495),l(-.275,.156),l(-.973,.426),l(-.484,.143),l(-.798,.029),l(-.807,.115),M(713.795,220.696),l(.031,-3.438),l(-.046,-.805),l(-.431,-1.368),l(.44,-.822),l(-.169,-7.966),l(2.581,.802),l(.85,.337),l(1.04,.295),l(1.254,.378),l(.848,.507),l(.613,.323),l(.597,.084),l(.38,-.058),l(.26,.508),l(.274,.254),l(.635,.352),l(.687,.395),l(.779,.718),l(-.3,.947),l(.033,.226),l(.305,.226),l(.665,.111),l(1.887,.787),l(.354,.027),l(.72,.183),l(.181,.254),l(.413,.535),l(.211,.579),l(-.166,.113),l(-1.114,.073),l(-.563,.156),l(-.098,.155),l(.047,.339),l(.589,.987),l(.5,.521),l(1.464,1),l(.218,.847),l(.725,1.044),l(.288,.141),l(.304,-.015),l(.712,-.086),l(.338,.013),l(.087,.198),l(-.354,.551),l(.218,.212),l(.401,.141),l(.423,.041),l(.63,.168),l(.096,.127),l(-.031,.142),l(-.648,.213),l(.287,.24),l(1.064,.28),l(.538,.295),l(.235,.763),l(-.064,.226),l(-1.094,-.012),l(-.215,-.154),l(-.146,-.466),l(-.126,-.099),l(-1.011,-.111),l(-1.063,-.266),l(-.644,-.126),l(-.752,.016),l(-.774,-.026),l(-.573,-.211),l(-.494,-.352),l(-.223,-.522),l(-.24,-.268),l(-.726,-.31),l(-.472,-.338),l(-.135,-.197),l(-1.089,-1.608),l(-.613,-.817),l(-.454,-.056),l(-1.524,-.336),l(-.671,-.31),l(-.55,-.055),l(-.415,.185),l(-.394,.071),l(-.78,-.45),l(.282,.762),l(-.027,.212),l(-.249,.071),l(-.382,-.126),l(-.311,.1),l(.296,.395),l(-.116,.113),l(-1.037,.045),l(-1.125,-.182),l(-.478,.029),l(.237,.127),l(.24,.154),l(.642,.169),l(.662,.352),l(.404,.338),l(.219,.395),l(-.411,.199),l(-.739,.425),l(-.458,.213),l(-.668,-.097),l(-1.801,-.039),l(-1.219,-.092), -N(726.605,297.247),l(-.479,-.229),l(-1.179,-.471),l(-.543,-.371),l(-.508,-.715),l(-.477,-.558),l(-.216,-.414),l(.264,-.044),l(.169,.1),l(.421,.171),l(.129,-.143),l(-.209,-.387),l(-.703,-.699),l(-.617,-.713),l(-.149,-.257),l(-.375,-.956),l(-.008,-.67),l(.177,-.044),l(1.004,.312),l(1.476,.354),l(1.089,.369),l(.797,-.03),l(.463,-.144),l(.382,-.115),l(.373,-.058),l(.684,.027),l(.306,-.301),l(.716,-.244),l(.475,.385),l(-.009,.1),l(.128,.8),l(-.009,.686),l(-.751,1.503),l(-.124,.758),l(-.245,.315),l(-.943,.26),l(-.553,.388),l(-.49,.689),l(-.189,.272),l(-.274,.072),M(716.883,224.344),l(.682,.394),l(.233,.509),l(.047,.649),l(.118,.678),l(.256,.197),l(.42,.013),l(.102,.24),l(-.45,.919),l(.715,.338),l(.175,.282),l(.147,.593),l(.08,1.3),l(.144,.621),l(.456,1.157),l(.293,.268),l(.422,.014),l(.328,-.312),l(.384,-.185),l(.32,.663),l(.363,.127),l(.563,.408),l(.385,.154),l(.144,.155),l(.002,.41),l(.083,.96),l(.275,.776),l(-.046,1.06),l(.279,.24),l(.93,1.325),l(.276,.706),l(.055,.777),l(-.209,.876),l(.403,.649),l(.275,.833),l(.204,.353),l(1.395,.803),l(.285,.154),l(.744,.111),l(.402,.649),l(.843,.535),l(.483,.169),l(1.141,.068),l(.117,.197),L(731,245.42),l(-.273,.565),l(.309,.424),l(.879,.479),l(.22,.564),l(.469,1.342),l(.211,.748),l(.112,.396),l(.252,.311),l(.771,.352),l(-.021,-.127),l(-.141,-.777),l(.913,.507),l(.567,.154),l(.184,.127),l(.136,.296),l(.106,1.752),l(.884,.762),l(.573,.323),l(.604,.154),l(.287,.296),l(.244,.579),l(.229,.424),l(.545,.168),l(.176,.297),l(.007,.269),l(.19,.536),l(.106,.113),l(.506,.126),l(.156,.112),l(.162,.354),l(.366,1.327),l(.026,.876),l(.013,.862),l(-.132,.41),l(-.181,.325),l(.778,1.271),l(.223,.48),l(.181,.833),l(.034,.749),l(-.293,.708),l(-.353,1.668),l(-.585,1.755),l(.137,.791),l(-.065,.806),l(-.306,.778),l(-.661,.977),l(-.203,.665),l(-.598,.821),l(-.45,.185),l(-.465,.1),l(-.423,.468),l(-.466,.68),l(-.328,1.527),l(-.477,.638),l(-.34,.495),l(.014,.65),l(-.208,.539),l(-.331,.312),l(-.601,.341),l(-.27,.326),l(-.3,1.021),l(-.169,1.049),l(-.079,.937),l(.021,.666),l(-.283,.64),l(-.322,.354),l(-.463,.3),l(-.754,.101),l(-1.158,.087),l(-.82,.03),l(-.527,.157),l(-.516,.299),l(-1.529,.94),l(-.443,.129),l(-.214,.284),l(-.346,.071),l(-.528,.059),l(-.286,-.014),l(.295,.368),l(.209,.27),l(-1.315,-.665),l(-.885,-.353),l(.003,-.469),l(-.073,-.156),l(-.56,-.467),l(-.628,-.368),l(-.421,-.014),l(-.485,.172),l(-.335,.242),l(.748,.467),l(-.97,.243),l(-.929,.428),l(-.953,.442),l(-.222,.028),l(-.604,-.226),l(-.886,-.438),l(-.67,-.226),l(-1.086,-.311),l(-.51,-.041),l(-.239,.156),l(-.044,.113),l(-.716,-.169),l(-.751,-.353),l(-.522,-.298),l(-.896,-.82),l(-.526,-.34),l(-.422,-.879),l(.09,-1.035),l(-.082,-.411),l(-.184,-.495),l(-.664,-.736),l(-.141,-.523),l(-.029,-.425),l(-.534,-.014),l(-.786,.398),l(-.597,.114),l(-.34,.058),l(-.178,-.07),l(-.167,-.17),l(.517,-.454),l(.233,-.567),l(.073,-.821),l(-.253,-.324),l(-.536,-.593),l(-.247,-.353),l(-.485,.735),l(-.443,1.431),l(-.19,.113),l(-.796,.002),l(-.199,.156),l(-.196,.015),l(-.255,.028),l(.198,-.396),l(.081,-.396),l(.079,-.1),l(.634,.041),l(.242,-.142),l(.126,-.255),l(-.105,-1.004),l(.454,-.835),l(.328,-.453),l(.091,-.396),l(.018,-.409),l(.151,-.128),l(.245,-.015),l(.218,-.354),l(-.052,-.227),l(-.323,-.494),l(-.338,-.494),l(-.107,.707),l(-.288,.255),l(-.518,.299),l(-.311,.467),l(-.086,.155),l(-.189,.467),l(-.281,.326),l(-.747,.242),l(-.735,.481),l(-.653,.567),l(-.36,.693),l(-.514,.808),l(-.41,-.339),l(-.38,-1.328),l(-.263,-.579),l(-.19,-.325),l(-.688,-.79),l(-.297,-.734),l(-.176,-.212),l(-.704,.072),l(-.235,-.099),l(-.139,-.24),l(-.085,-.269),l(.334,-.34),l(-.047,-.297),l(-.346,-.395),l(-.543,-.494),l(-.266,-.098),l(-.83,.157),l(-.486,-.07),l(-.95,-.549),l(-.274,-.014),l(-.438,.17),l(-.433,-.027),l(-.421,-.183),l(-.662,-.521),l(-.921,-.437),l(-.218,.001),l(-.723,.213),l(-1.282,.088),l(-.669,.001),l(-1.764,.061),l(-.611,.129),l(-.656,.213),l(-.989,.44),l(-.972,.256),l(-1.039,.257),l(-1.503,.088),l(-.794,-.013),l(-.383,.044),l(-.927,.284),l(-.993,.469),l(-.773,.397),l(-.538,.143),l(-.431,.085),l(-.361,.199),l(-.615,.693),l(-.774,1.02),l(-.588,.284),l(-.766,-.013),l(-.547,-.013),l(-.927,.143),l(-.4,.185),l(-.663,-.395),l(-.294,-.084),l(-.734,.016),l(-1.572,.173),l(-.938,.157),l(-.459,-.041),l(-.672,.044),l(-.398,.227),l(-.583,.793),l(-.344,.128),l(-.958,-.125),l(-.158,.057),l(-.57,.708),l(-.465,.368),l(-.919,.271),l(-.586,.086),l(-1.516,-.082),l(-.638,-.055),l(-.688,-.197),l(-.633,-.366),l(-.778,-.677),l(-.74,-.353),l(-.374,-.041),l(-.151,-.07),l(-.19,-1.229),l(.055,-.255),l(.489,.112),l(.45,-.086),l(.332,-.425),l(.197,-.467),l(.267,-1.357),l(-.043,-1.215),l(-.156,-.622),l(-.258,-.593),l(-1.117,-1.906),l(-.208,-.635),l(-.144,-.834),l(.027,-.989),l(-.16,-.692),l(-.467,-1.072),l(-.663,-.945),l(-.603,-.734),l(-.214,-.254),l(.128,-.904),l(-.215,-.536),l(-.733,-1.115),l(-.972,-1.018),l(-.273,-.583),l(.126,-.233),l(.188,.187),l(.152,.443),l(.183,.163),l(.235,.35),l(.327,.188),l(.354,.023),l(-.348,-1.144),l(-.437,-.396),l(-.226,-.326),l(.08,-.304),l(.748,.84),l(.495,.979),l(.477,.065),l(-.099,-.555),l(.289,-.039),l(.004,-.564),l(-.282,-.48),l(-1.03,-1.368),l(-.354,-.691),l(-.119,-.579),l(-.038,-.734),l(.355,-.595),l(.323,-.523),l(.21,-.664),l(-.083,-1.031),l(-.254,-.635),l(.033,-.368),l(.438,-.692),l(.109,-.325),l(.064,-.156),l(.271,.649),l(.011,.424),l(.105,.184),l(.35,.027),l(.171,-.113),l(.187,-.565),l(.141,-.48),l(.765,-.468),l(1.22,-.624),l(.484,-.326),l(.676,-.581),l(.585,-.467),l(.632,-.327),l(.79,-.114),l(.697,-.016),l(.7,-.002),l(.431,-.043),l(.352,-.185),l(.474,-.453),l(.494,-.128),l(.929,-.072),l(.279,-.143),l(.291,-.551),l(.158,-.1),l(.444,.027),l(.877,.224),l(.626,-.043),l(.911,-.299),l(1.084,-.469),l(.359,-.213),l(.716,-.665),l(.427,-.58),l(.29,-.622),l(.132,-.297),l(.41,-.369),l(.968,-.651),l(.079,-.17),l(-.067,-.409),l(-.242,-.805),l(-.016,-.495),l(1.063,-1.118),l(.387,-.692),l(.291,.169),l(.341,.437),l(.619,1.355),l(.262,.253),l(.177,-.579),l(.021,-.466),l(.436,.238),l(.272,.07),l(.189,-.607),l(-.06,-.142),l(-.563,-.238),l(-.175,-.24),l(.007,-.565),l(.044,-.112),l(.897,.04),l(.661,.253),l(.642,-.029),l(.334,-.029),l(.289,.074),l(-.699,-.455),l(-.431,-.141),l(.128,-.537),l(-.07,-.296),l(.135,-.509),l(.422,-.354),l(.165,-.07),l(.732,.394),l(.202,-.043),l(-.112,-.452),l(.11,-.48),l(.146,-.367),l(-.041,-.522),l(.358,-.171),l(.4,-.113),l(.813,.04),l(.529,-1.088),l(.371,-.298),l(.35,.169),l(.268,.451),l(.265,-.552),l(.222,-.227),l(.197,-.48),l(.695,.62),l(.513,.084),l(.293,.211),l(.331,.536),l(.632,.592),l(.122,.706),l(-.072,.594),l(.181,.197),l(.256,-.283),l(.462,-.679),l(.155,-.128),l(1.16,.082),l(.479,.155),l(.637,.492),l(.332,.141),l(.156,-.48),l(.302,-.297),l(.022,-.24),l(-.266,-.324),l(-.601,-.395),l(-.079,-.184),l(.008,-.24),l(.145,-.099),l(.604,-.538),l(.007,-.452),l(.191,-.213),l(.518,-.283),l(.268,-.241),l(.151,-.269),l(-.094,-.184),l(.003,-.296),l(.512,-.863),l(.121,-.057),l(.317,-.029),l(.397,-.029),l(.248,-.17),l(-.205,-.409),l(.377,-.396),l(.344,-.071),l(.793,.366),l(.616,-.072),l(1.291,-.088),l(.512,-.128),l(.232,-.17),l(.04,-.057),l(-.077,-.197),l(-.2,-.734),l(-.248,-.282),l(-.471,-.268),l(-.374,.086),l(-.244,-.141),l(.035,-.212),l(.367,-.143),l(.396,-.043),l(.617,.521),l(.255,.099),l(.34,-.1),l(.364,.31),l(.676,.465),l(.36,.154),l(1.297,.294),l(.591,.084),l(.413,-.143),l(.372,.014),l(.396,.606),l(.419,.112),l(.141,-.029),l(.562,-.438),l(.454,.027),l(.652,.38),l(.331,.479),l(.46,-.143),l(.122,-.791),l(.181,-.085),l(.455,.465),l(.337,.099),l(.152,.154),l(-.436,.411),l(-.126,.424),l(-.176,.212),l(-.011,.438),l(-.12,.255),l(-.513,.015),l(-.51,.228),l(-.396,.34),l(-.004,.551),l(.301,.353),l(-.187,.692),l(-.381,.58),l(-.559,.481),l(-.155,.48),l(.063,.17),l(.469,.437),l(1.038,.619),l(.81,.677),l(.508,.606),l(.246,.099),l(.349,-.114),l(.264,.027),l(.782,.352),l(.742,.465),l(.434,.451),l(.679,.535),l(.335,.127),l(.442,.027),l(.784,.182),l(.25,.184),l(.218,.621),l(.167,.169),l(.507,.31),l(.76,.423),l(.537,.154),l(.422,-.072),l(.414,-.17),l(.603,-.199),l(.208,-.156),l(.736,-1.344),l(.403,-1.131),l(.194,-1.314),l(.259,-.721),l(.43,-.679),l(-.131,-.424),l(-.409,-.621),l(.022,-.311),l(.236,-.637),l(.187,-.48),l(-.164,-.282),l(-.183,-.395),l(.088,-.692),l(.104,-1.004),l(.225,-.297),l(.329,-.156),l(.158,-.311),l(-.534,-.521),l(.033,-.198),l(.576,-.947),l(.312,-.934),l(.072,-.833),l(.191,-.241),l(.279,-.297), -N(270.934,276.123),l(.054,-.338),l(-.194,-.577),l(.011,-.522),l(.24,-.495),l(.48,-.524),l(.118,-.325),l(-.168,-.986),l(-.049,-.847),l(.103,-.522),l(.595,-2.359),l(.065,-.452),l(.443,-.524),l(.55,-.003),l(1.042,-.246),l(.25,-.101),l(.266,.098),l(.47,.364),l(.379,.407),l(.59,.814),l(.232,.38),l(.27,-.016),l(.693,-.427),l(.365,.393),l(.432,.576),l(.617,.194),l(.55,.194),l(.999,.587),l(.474,.435),l(.853,1.109),l(.131,.197),l(.163,.027),l(.333,.379),l(-.017,.269),l(-.634,.766),l(-.103,.269),l(.258,.746),l(.101,.313),l(-.059,.053),l(-.803,1.103),l(-.625,.552),l(-.775,.454),l(-.441,.156),l(-.818,.1),l(-.874,-.337),l(-.551,.044),l(-.551,.114),l(-.64,.283),l(-.38,-.042),l(-.846,-.676),l(-.637,-.252),l(-.76,-.154),l(-.469,.128),l(-.507,.072),l(-.327,-.127),l(-.548,-.563),l(-.354,-.159), -N(418.763,73.869),l(.391,-.499),l(.389,-.262),l(.283,.081),l(.663,-.062),l(.762,-.075),l(.324,-.137),l(.891,-.787),l(.979,-.2),l(.224,.025),l(.198,-.219),l(.175,.032),l(-.349,.531),l(.11,.106),l(.026,.481),l(-.288,.156),l(-.17,.368),l(-1.675,.069),l(-.376,-.106),l(-.428,.031),l(-.14,-.062),l(-.239,.081),l(-.275,.031),l(-.153,.417),l(-.249,.218),l(-.353,.118),l(-.08,.112),l(-.229,-.155),l(-.411,-.292),M(421.68,78.002),l(-1.839,.129),l(-.116,-.016),l(.064,-.404),l(-.19,-.638),l(-.174,.015),l(-.36,-.293),l(-.233,.184),l(-.398,-.172),l(.2,-.355),l(.434,-.293),l(-.007,-.181),l(-.445,-.541),l(.018,-.256),l(.131,-.498),l(.279,-.106),l(.318,.15),l(.495,.12),l(.43,-.574),l(.299,-.091),l(.296,.437),l(.391,-.046),l(.022,-.528),l(.107,-.363),l(1.032,-.017),l(.848,.089),l(.03,.544),l(.187,.301),l(1.138,.058),l(.14,.166),l(-.307,.604),l(-.565,.142),l(-.119,-.261),l(-.331,.031),l(-.263,.136),l(.121,.278),l(-.184,.414),l(-.312,.077),l(-.069,.244),l(-.635,.035),l(.157,.229),l(-.291,.094),l(-.191,.24),l(-.061,.285),l(.003,.21),l(-.215,.338),l(.166,.084),M(427.177,77.967),l(-.139,-.149),l(-.312,-.344),l(-.405,.031),l(-.665,-.059),l(-.123,-.329),l(-.285,-.66),l(.433,-.091),l(.603,-.467),l(.356,.495),l(.521,.179),l(.2,-.271),l(.078,-.586),l(.333,-.046),l(.459,.044),l(.056,.571),l(-.134,.36),l(-.144,.09),l(-.413,.286),l(.603,.299),l(-.285,.166),l(-.499,.39),l(-.238,.09), -N(417.259,94.301),l(-.135,-.233),l(.216,-.701),l(-.091,-.076),l(.075,-.295),l(.321,-.372),l(.054,-.358),l(.054,-.213),l(.954,-.806),l(-.605,-.193),l(-.479,.014),l(-.456,-.09),l(-.095,-.186),l(-.233,-.007),l(-.072,.048),l(-.689,.062),l(-.045,-.145),l(-.395,.055),l(-.337,-.277),l(-.428,-.319),l(-.074,-.353),l(.248,-.144),l(.044,-.288),l(-.466,-.096),l(-.41,-.312),l(-.062,-.301),l(.422,-.376),l(-.038,-.468),l(-.282,-.365),l(-.344,-.177),l(.165,-.278),l(-.143,-.217),l(-.182,-.037),l(.08,-.097),l(.235,-.133),l(.236,-.133),l(-.193,-.121),l(.201,-.275),l(.095,-.148),l(-.152,-.292),l(-.082,-.265),l(-.376,-.182),l(.07,-.182),l(.341,-.078),l(.175,-.092),l(.378,.134),l(.664,-.151),l(.32,-.152),l(.128,-.376),l(.412,-.207),l(.003,-.328),l(-.16,-.17),l(-.188,.061),l(-.44,-.134),l(.029,-.184),l(.113,-.181),l(.571,.036),l(.084,-.401),l(.345,-.361),l(-.151,-.438),l(.066,-.147),l(-.465,-.192),l(.126,-.43),l(.285,-.181),l(.371,-.028),l(1.12,-.062),l(.293,-.012),l(.095,.16),l(.195,.271),l(-.155,.158),l(.324,.113),l(.148,-.068),l(.042,-.192),l(-.159,-.204),l(.259,.012),l(.437,.169),l(-.163,-.362),l(.247,-.419),l(.687,.113),l(.614,-.091),l(-.596,-.17),l(-.084,-.227),l(.282,-.102),l(-.252,-.114),l(-.12,-.147),l(.166,-.08),l(.068,-.136),l(-.675,.08),l(-.06,-.182),l(.664,-.125),l(.218,-.193),l(-.464,-.42),l(-.324,-.341),l(.045,-.28),l(.116,.016),l(1.839,-.129),l(.254,.13),l(.565,.341),l(.271,.297),l(-.02,.228),l(-.252,.175),l(.445,-.05),l(.171,.216),l(.157,-.078),l(.283,.021),l(.235,.156),l(.45,.073),l(.866,-.121),l(.077,.208),l(-.07,.149),l(-.057,.125),l(-.665,.295),l(.316,.193),l(.649,-.136),l(.113,.182),l(.457,-.006),l(.349,-.391),l(1.059,-.136),l(.602,-.234),l(.757,-.266),l(.249,.113),l(.396,-.17),l(.184,.182),l(.085,.159),l(.634,.29),l(.182,.074),l(.526,-.12),l(.156,.12),l(.059,.34),l(.036,.227),l(.154,.102),l(.354,.125),l(.372,-.022),l(.028,.13),l(.201,.025),l(.319,.835),l(-.219,.52),l(-.391,.147),l(-.051,.328),l(.391,.102),l(.683,.429),l(-.217,.395),l(.094,.18),l(.312,.146),l(-.021,.304),l(.131,.102),l(-.118,.292),l(-.214,.124),l(-.007,.191),l(.325,.27),l(-.114,.258),l(.468,.188),l(.281,.485),l(-.435,.698),l(-.142,.115),l(-.344,-.072),l(-.031,-.278),l(-.308,-.121),l(-.436,.072),l(.282,.218),l(-.254,.084),l(-.284,.097),l(-.524,.048),l(-.124,.169),l(-.735,.024),l(-.112,.217),l(-.176,-.072),l(-.358,.061),l(-.097,.229),l(-.382,.012),l(-.078,.181),l(-.442,0),l(-.422,.201),l(-.293,-.033),l(-.26,.181),l(-.243,.168),l(.037,.056),l(.258,.378),l(.413,.098),l(-.155,.25),l(-.08,.406),l(.159,.085),l(.036,.233),l(.244,.173),l(.478,.265),l(.188,-.072),l(.573,.515),l(.431,.17),l(.184,.201),l(.219,-.084),l(.165,.18),l(.207,.036),l(.447,.633),l(-.682,.26),l(-.437,-.151),l(-.132,.027),l(-.039,.337),l(-.162,.172),l(-.968,.295),l(-.364,.227),l(.538,.571),l(-.197,.295),l(.334,.014),l(.056,.158),l(-.098,.343),l(-.082,.055),l(-.441,-.178),l(.049,-.165),l(-.146,-.117),l(-.564,.062),l(-.195,-.138),l(-.433,.035),l(-.092,.178),l(-1.25,.035),l(-.125,.171),l(-.319,.014),l(-.044,.13),L(425.4,94.7),l(-.594,.021),l(-.059,-.144),l(-.093,-.145),l(-.493,-.089),l(-.262,.055),l(-.237,-.041),l(.032,.274),l(-.452,.343),l(-.215,0),l(.078,-.195),l(-.26,-.039),l(.011,-.165),l(-.194,-.048),l(-.104,-.137),l(-.249,-.007),l(-.096,-.11),l(-.164,.137),l(-.368,-.014),l(-.664,-.261),l(-.852,-.007),l(-.149,-.089),l(-.199,.014),l(-.017,-.151),l(-.709,.199),l(.179,.199),l(-.354,.021),l(-.278,-.11),l(-.567,.158),l(-.271,-.096),l(-.272,.117),l(-.271,-.089),M(432.012,80.473),l(-.171,-.038),l(-.088,-.049),l(-.447,.08),l(-.111,-.264),l(.002,-.213),l(.647,.281),l(.168,.203), -N(450.734,91.05),l(-.831,-.33),l(-.424,-.101),l(-.104,-.216),l(-.703,-.186),l(-.129,-.13),l(-.561,.076),l(-.508,-.041),l(-.073,.137),l(-.373,.18),l(-.46,-.254),l(-.483,.046),l(-.168,-.056),l(-.558,.204),l(-.104,.177),l(-.149,.135),l(-.18,-.12),l(-.389,.083),l(-.003,-.204),l(.026,-.083),l(-.066,-.18),l(-.331,.025),l(-.073,-.169),l(-.194,-.24),l(-.261,.024),l(-.062,.112),l(-.193,-.016),l(-.183,.24),l(-.43,.048),l(-.03,-.228),l(-.285,-.041),l(-.105,-.331),l(-.382,-.096),l(-.188,-.208),l(.02,-.249),l(-.802,-.132),l(-.311,-.181),l(-.368,.161),l(-.293,-.013),l(-.013,-.221),l(.001,-.253),l(-.329,.084),l(.181,-.283),l(-.709,.005),l(-.258,-.121),l(-.509,-.193),l(-.286,-.024),l(-.003,.145),l(.282,.302),l(-.41,.12),l(-.22,.187),l(-.318,-.072),l(-.296,-.38),l(-.55,-.247),l(.224,-.211),l(.208,-.024),l(.099,-.121),l(-.199,-.181),l(-.257,-.024),l(-.061,.066),l(-.466,.066),l(.005,-.169),l(-.278,.037),l(-.132,-.181),l(-.568,-.054),l(-.201,-.025),l(-.363,-.163),l(-.093,-.26),l(-.211,-.091),l(-.361,.018),l(-.063,.084),l(.062,.073),l(-.024,.151),l(-.375,0),l(.435,-.698),l(-.281,-.485),l(-.468,-.188),l(.114,-.258),l(-.325,-.27),l(.007,-.191),l(.214,-.124),l(.118,-.292),l(-.131,-.102),l(.021,-.304),l(-.312,-.146),l(-.094,-.18),l(.217,-.395),l(-.683,-.429),l(-.391,-.102),l(.051,-.328),l(.391,-.147),l(.219,-.52),l(-.319,-.835),l(.34,.043),l(.23,.125),l(-.093,-.193),l(.156,-.153),l(-.019,-.147),l(-.166,-.13),l(-.021,-.129),l(-.012,-.075),l(.93,-.154),l(.431,-.051),l(.516,-.152),l(1.304,-.128),l(.48,-.158),l(.797,-.479),l(1.117,-.298),l(1.515,-.303),l(1.382,-.086),l(1.067,.417),l(-.882,-.294),l(-.054,.147),l(.256,.172),l(.132,.466),l(.355,.135),l(.648,.061),l(.645,-.11),l(1.063,-.409),l(.054,.004),l(-.978,.417),l(-.19,.11),l(-.004,.123),l(.218,.012),l(.286,-.123),l(.613,-.208),l(.543,-.253),l(.842,.006),l(2.246,.115),l(2.96,-.101),l(.641,-.021),l(.04,.014),l(.679,.243),l(.284,.487),l(.099,.186),l(.016,.029),l(.09,.171),l(.16,.302),l(.615,1.5),l(.172,.502),l(-.023,.236),l(-.263,.208),l(-.44,.03),l(-.571,.244),l(-.291,.328),l(-.128,.292),l(.289,.012),l(.421,.146),l(.149,.176),l(.218,.146),l(.013,.25),l(-.315,.752),l(.126,.137),l(.161,.175),l(-.074,.242),l(.816,.835),l(.316,.193),l(-.298,.048),l(-.085,.133),l(.328,.302),l(-.009,.314),l(-.255,.24),l(-.429,.013),l(-.286,.181),l(-.599,.398),l(-1.509,1.218),l(-.082,.306),l(.044,.552),l(.349,.383),l(-.653,-.018),M(431.844,80.27),l(.232,.024),l(.069,.208),l(-.134,-.029),l(-.168,-.203),M(432.739,80.361),l(-.03,.129),l(-.278,-.024),l(-.191,.03),l(-.046,-.208),l(.174,-.012),l(.266,0),l(.106,.085), -N(416.488,81.945),l(.151,.438),l(-.345,.361),l(-.084,.401),l(-.571,-.036),l(-.113,.181),l(-.029,.184),l(.44,.134),l(.188,-.061),l(.16,.17),l(-.003,.328),l(-.412,.207),l(-.128,.376),l(-.32,.152),l(-.664,.151),l(-.378,-.134),l(-.175,.092),l(-.341,.078),l(-.07,.182),l(.376,.182),l(.082,.265),l(.152,.292),l(-.095,.148),l(-.201,.275),l(.193,.121),l(-.236,.133),l(-.235,.133),l(-.08,.097),l(.182,.037),l(.143,.217),l(-.165,.278),l(-.672,.024),l(-.001,-.338),l(.172,-.097),l(.11,-.423),l(-.754,-.375),l(-.535,.109),l(-.292,-.375),l(-.228,-.061),l(-.173,.121),l(-.313,-.242),l(-.267,.182),l(-.307,0),l(-.307,-.012),l(.025,.157),l(-.52,.034),l(-.407,-.042),l(-.477,-.098),l(-.07,-.162),l(-.496,-.264),l(.795,-.472),l(.858,-.621),l(.273,-.354),l(.563,-1.167),l(.173,-.104),l(.644,-.12),l(.367,.251),l(.136,.268),l(-.28,.203),l(-.228,-.056),l(.066,.496),l(-.191,.124),l(1.163,.225),l(.225,-.236),l(.406,-.113),l(.134,-.417),l(-.458,-.022),l(-.123,-.124),l(-.02,-.203),l(.236,-.158),l(-.171,-.023),l(-.558,-.067),l(.072,-.328),l(-.034,-.13),l(-.023,-.034),l(.128,-.283),l(.572,-.198),l(.709,-.238),l(.654,.03),l(1.089,-.151),l(.245,.275),l(.329,.045),l(.076,.181),l(.259,0), -N(431.57,91.965),l(-.447,-.633),l(-.207,-.036),l(-.165,-.18),l(-.219,.084),L(430.349,91),l(-.431,-.17),l(-.573,-.515),l(-.188,.072),l(-.478,-.265),l(-.244,-.173),l(-.036,-.233),l(-.159,-.085),l(.08,-.406),l(.155,-.25),l(-.413,-.098),l(-.258,-.378),l(-.037,-.056),l(.243,-.168),l(.26,-.181),l(.293,.033),l(.422,-.201),l(.442,0),l(.078,-.181),l(.382,-.012),l(.097,-.229),l(.358,-.061),l(.176,.072),l(.112,-.217),l(.735,-.024),l(.124,-.169),l(.524,-.048),l(.284,-.097),l(.254,-.084),l(-.282,-.218),l(.436,-.072),l(.308,.121),l(.031,.278),l(.344,.072),l(.142,-.115),l(.375,0),l(.024,-.151),l(-.062,-.073),l(.063,-.084),l(.361,-.018),l(.211,.091),l(.093,.26),l(.363,.163),l(.201,.025),l(.568,.054),l(.132,.181),l(.278,-.037),l(-.005,.169),l(.466,-.066),l(.061,-.066),l(.257,.024),l(.199,.181),l(-.099,.121),l(-.208,.024),l(-.224,.211),l(.55,.247),l(.296,.38),l(.318,.072),l(.22,-.187),l(.41,-.12),l(-.282,-.302),l(.003,-.145),l(.286,.024),l(.509,.193),l(.258,.121),l(.709,-.005),l(-.181,.283),l(.329,-.084),l(-.001,.253),l(.013,.221),l(.293,.013),l(.368,-.161),l(.311,.181),l(.802,.132),l(-.02,.249),l(.188,.208),l(.382,.096),l(.105,.331),l(-.071,-.012),l(-.065,.066),l(-.066,.04),l(-.105,-.026),L(442,89.998),l(-.119,.013),l(-.065,.04),l(-.132,.066),l(-.053,.079),l(-.118,.092),l(-.119,.053),l(-.132,.079),l(-.105,.013),l(-.118,.013),l(-.053,.092),l(-.026,.092),l(-.026,.132),l(-.053,.079),l(-.053,.105),l(-.145,.066),l(-.105,.04),l(-.092,-.026),l(-.079,.079),l(-.04,.092),l(-.053,.079),l(-.039,0),l(-.105,.026),l(-.066,.026),l(-.079,.053),l(-.118,.053),l(-.132,0),l(-.145,.04),l(-.093,.026),l(-.065,-.026),l(-.065,-.026),l(-.093,0),l(-.065,.026),l(-.158,0),l(-.132,-.053),l(-.092,-.053),l(-.093,.026),l(-.171,.053),l(-.026,.04),l(-.146,.119),l(-.092,.066),l(-.014,.131),l(-.065,.105),l(-.039,.044),l(-.055,-.095),l(-.545,-.2),l(-1.332,.181),l(-1.019,-.227),l(-1.374,-.341),l(-.746,.773),l(-.598,.163),l(-.483,-.099),l(-.354,-.129),l(-.145,-.014), -N(421.683,94.397),l(.368,.014),l(.164,-.137),l(.096,.11),l(.249,.007),l(.104,.137),l(.194,.048),l(-.011,.165),l(.26,.039),l(-.078,.195),l(.215,0),l(.452,-.343),l(-.032,-.274),l(.237,.041),l(.262,-.055),l(.493,.089),l(.093,.145),l(.059,.144),L(425.4,94.7),l(.377,-.103),l(.044,-.13),l(.319,-.014),l(.125,-.171),l(1.25,-.035),l(.092,-.178),l(.433,-.035),l(.195,.138),l(.564,-.062),l(.146,.117),l(-.049,.165),l(.441,.178),l(.082,-.055),l(.098,-.343),l(-.056,-.158),l(-.334,-.014),l(.197,-.295),l(-.538,-.571),l(.364,-.227),l(.968,-.295),l(.162,-.172),l(.039,-.337),l(.132,-.027),l(.437,.151),l(.682,-.26),l(.145,.014),l(.354,.129),l(.483,.099),l(.598,-.163),l(.746,-.773),l(1.374,.341),l(1.019,.227),l(1.332,-.181),l(.545,.2),l(.055,.095),l(.053,.093),l(-.097,.581),l(.155,.26),l(.761,.547),l(-.636,.291),l(-.019,.367),l(-.701,.054),l(-.164,-.134),l(-.325,0),l(-.223,.197),l(.452,.063),l(.136,.196),l(-.157,.206),l(-.409,.062),l(-.04,.375),l(.204,.188),l(-.154,.294),l(-.346,.299),l(-.693,.157),l(.082,.393),l(-.89,-.116),l(-.298,.196),l(-.85,-.08),l(-.566,.107),l(-.646,.5),l(-.287,-.152),l(-.612,.009),l(-.179,-.107),l(-1.04,-.065),l(-.478,-.112),l(-.894,-.082),l(-1.311,-.247),l(-.32,-.391),l(-.318,-.096),l(-.023,-.363),l(-.856,.227),l(-.301,-.103),l(-.445,.11),l(-.183,-.083),l(-.366,.096),l(-.329,.411),l(-.597,-.034),l(-.631,-.171),l(.029,-.171),l(-.215,-.117),l(-.579,.332),l(-.55,-.242),l(-.008,-.144),l(-.622,-.062),l(.09,-.192),l(-.214,-.288),l(.266,-.274),l(-.193,-.336), -N(431.763,171.063),l(-.067,.354),l(.091,.72),l(.108,.508),l(.225,.168),l(.562,.11),l(.144,.183),l(.077,.353),l(-.089,1.116),l(-.146,.227),l(-.274,.171),l(-.885,.217),l(-.291,.256),l(-.664,1.275),l(-.503,1.203),l(-.243,1.004),l(-.354,.129),l(-.369,.03),l(-.129,.354),l(-.146,1.229),l(-.192,.312),l(-.385,.045),l(-.257,.284),l(-.417,.836),l(-.944,2.223),l(-.304,.624),l(-.352,.496),l(-.368,.355),l(-.239,.114),l(-.145,-.056),l(-.722,-.97),l(-.145,-.14),l(-1.104,-.05),l(-.272,.03),l(-1.31,1.265),l(-.941,.839),l(-.495,.526),l(.02,.974),l(-.189,.552),l(-.376,.686),l(-.188,-.119),l(-.224,-.042),l(-.176,-.127),l(-.145,.212),l(.144,.296),l(-.063,.127),l(-.353,.198),l(-.56,.03),l(-.977,.101),l(-.607,-.267),l(-.288,.043),l(-.271,.368),l(-.177,.113),l(-.432,-.07),l(-1.247,-.011),l(-.528,-.225),l(-.543,-.451),l(-.416,-.72),l(-.192,-.649),l(.048,-.254),l(.208,-.254),l(-.144,-.296),l(-.513,-.069),l(-.128,-.254),l(-.464,-.55),l(-.561,-.465),l(-.608,-.253),l(-.641,-.253),l(-.272,-.31),l(-.513,.072),l(-.24,.297),l(-.336,.071),l(-.881,.044),l(-.659,.03),l(-.006,-.234),l(.121,-1.188),l(-.217,-1.439),l(.09,-.989),l(.012,-.876),l(-.003,-.48),l(-.002,-.381),l(.237,-.397),l(.257,-.03),l(.433,-.13),l(.078,-.368),l(-.116,-.592),l(.095,-.34),l(.656,-.414),l(.223,-.298),l(.19,-.566),l(.316,-.962),l(-.388,-.718),l(-.164,-.762),l(.062,-.777),l(.092,-.961),l(.158,-.849),l(.353,-.482),l(.687,-1.614),l(.676,-.4),l(1.064,-.188),l(1.174,-.108),l(1.111,.121),l(.821,.277),l(1.095,1.223),l(.209,.098),l(.37,-.002),l(1.337,-.544),l(.467,-.116),l(.354,.083),l(1.173,.742),l(.965,.277),l(.934,-.005),l(.273,-.059),l(.629,-.399),l(.403,-.327),l(.774,-.287),l(.628,-.103),l(.709,-.047),l(.531,.04),l(.884,.221),l(.724,.193),l(.609,.208),l(.259,-.058),l(.761,-.697),l(.453,-.299),l(.437,-.2),l(.951,-.034),l(.173,.394),l(.575,.52),l(.351,.407), -N(425.506,195.522),l(-1.965,-.017),l(-1.005,.007),l(.029,-.176),l(-.208,-.536),l(.271,-.989),l(-.159,-.72),l(-.191,-.522),l(-.399,-.649),l(.433,-.396),l(-.287,-.367),l(-.24,-.056),l(-.576,.058),l(-.559,-.268),l(-.176,-.324),l(-.063,-.537),l(-.111,-.211),l(-.527,-.14),l(-.101,-.064),l(.376,-.686),l(.189,-.552),l(-.02,-.974),l(.495,-.526),l(.941,-.839),l(1.31,-1.265),l(.272,-.03),l(1.104,.05),l(.145,.14),l(.722,.97),l(.145,.056),l(.239,-.114),l(.368,-.355),l(.352,-.496),l(.304,-.624),l(.944,-2.223),l(.417,-.836),l(.257,-.284),l(.385,-.045),l(.192,-.312),l(.146,-1.229),l(.129,-.354),l(.369,-.03),l(.354,-.129),l(.243,-1.004),l(.503,-1.203),l(.664,-1.275),l(.291,-.256),l(.885,-.217),l(.274,-.171),l(.146,-.227),l(.089,-1.116),l(-.077,-.353),l(-.144,-.183),l(-.562,-.11),l(-.225,-.168),l(-.108,-.508),l(-.091,-.72),l(.067,-.354),l(.627,.109),l(.208,.083),l(.923,1.238),l(.395,.887),l(.119,1.2),l(-.134,.651),l(.169,1.228),l(.205,.578),l(.381,.633),l(.208,.21),l(.047,.127),l(-.225,.143),l(-.674,.032),l(-1.187,-.191),l(-.481,-.082),l(-.24,.1),l(-.29,.312),l(-.323,.539),l(1.088,1.067),l(1.343,1.179),l(.638,1.07),l(.382,1.057),l(.208,.183),l(-.208,.114),l(-.354,.327),l(-.866,1.743),l(-.4,.511),l(-.528,.399),l(-.144,.198),l(-.064,.424),l(.112,.776),l(.273,1.185),l(.207,.592),l(.4,.661),l(.432,.605),l(.064,.791),l(.112,.324),l(1.217,1.236),l(.498,.802),l(.194,.804),l(.209,.451),l(-.159,.185),l(.1,.861),l(-.271,.086),l(-.863,-.292),l(-.864,-.334),l(-.576,-.194),l(-.56,-.124),l(-.479,-.04),l(-.271,-.055),l(-.878,.076),l(-.863,-.023),l(-.56,-.109),l(-1.022,-.149),l(-.831,-.038),l(-1.773,-.088),l(-.88,-.093),l(-.045,.495), -N(551.793,147.278),l(-.788,-.111),l(-.458,-.253),l(-.379,-.367),l(-.248,-1.101),l(-.112,-.141),l(-.342,-.141),l(-.662,-.083),l(-.105,-.07),l(-.014,-.268),l(.116,-.466),l(-.178,-.451),l(-.418,-.38),l(-.294,-.013),l(-1.181,.412),l(-1.229,.087),l(-.81,.143),l(-.947,.073),l(-.415,-.083),l(-.263,-.226),l(-.135,-.197),l(-.909,.143),l(-.548,.382),l(-.856,.016),l(-1.264,-.011),l(-.691,.128),l(-.723,.115),l(-.541,.03),l(.182,-.954),l(.049,-.354),l(.31,-.792),l(.285,-.383),l(.794,-.47),l(.697,-.258),l(1,-.077),l(.209,-.072),l(.188,-.255),l(.036,-.974),l(-.186,-.281),l(-.652,-.053),l(-.185,-.394),l(-.111,-1.34),l(-.168,-.38),l(-.409,-.224),l(-1.144,-.388),l(-.695,-.391),l(-.353,-.464),l(-.71,-1.068),l(-.802,-1.083),l(.887,.32),l(.63,.194),l(1.069,.248),l(.854,.235),l(.541,.039),l(.742,.024),l(1.187,-.218),l(.349,-.002),l(1.005,.135),l(1.234,-.12),l(.964,-.175),l(1.183,-.19),l(1.066,-.274),l(.247,-.156),l(.069,-.184),l(.099,-.903),l(.232,-.876),l(.188,-.34),l(.412,-.369),l(.597,-.441),l(.283,-.072),l(.644,.039),l(.516,.082),l(.254,-.086),l(.321,-.693),l(.362,-.271),l(.559,-.243),l(.562,.025),l(1.001,.375),l(.237,-.086),l(.34,-.383),l(.021,-.084),l(.139,-1.214),l(.288,-.834),l(.224,-.424),l(.292,-.228),l(.416,-.115),l(.513,-.031),l(.315,-.115),l(.199,-.255),l(-.088,-.437),l(-.129,-.281),L(556.193,125),l(-.35,-.336),l(.355,-.129),l(.997,.122),l(.698,.039),l(.513,-.215),l(.289,-.255),l(-.033,-.31),l(-.223,-.478),l(.13,-.283),l(.4,-.341),l(.524,-.355),l(.324,-.426),l(-.198,-.477),l(.119,-.483),l(-.232,-.171),l(-.01,-.336),l(-.411,-.271),l(-.01,-.32),l(.464,-.413),l(.258,-.214),l(.246,.023),l(.559,-.395),l(.272,-.19),l(.53,-.292),l(1.148,-.152),l(1.345,-.012),l(.647,.144),l(.338,-.179),l(.332,.005),l(.455,-.297),l(.358,-.004),l(.148,-.142),l(.313,.14),l(.105,.112),l(.281,-.21),l(.296,.047),l(.554,.117),l(.004,.456),l(.282,-.128),l(.625,-.009),l(.373,.323),l(.213,.247),l(.007,.501),l(-.312,.516),l(.301,.07),l(.198,.218),l(.252,.281),l(.52,-.196),l(.239,0),l(.104,.199),l(.178,.09),l(.565,.436),l(1.337,.104),l(.305,.111),l(.147,.126),l(-.207,.084),l(-.688,.37),l(-.411,.232),l(-.155,.43),l(-.071,.479),l(-.234,.116),l(-.125,-.179),l(-.621,-.102),l(-.438,.132),l(-.271,.298),l(-.262,-.116),l(-.557,.265),l(-.928,-.149),l(-.568,-.138),l(-1.708,-.325),l(-.894,.265),l(-.38,.611),l(.09,.166),l(.336,0),l(.047,.314),l(-.202,.149),l(.101,.199),l(.598,-.017),l(-.002,.347),l(-.384,.099),l(-.139,.413),l(.389,.232),l(-.116,.479),l(-.215,.132),l(.089,.248),l(.606,.298),l(-.003,.532),l(.782,-.003),l(-.039,.43),l(.188,.248),l(.702,-.05),l(.668,.377),l(.012,.211),l(-.2,.255),l(-.504,.2),l(-.643,.196),l(-.517,.248),l(.032,.366),l(.188,.377),l(-.237,.977),l(-1.512,1.503),l(.261,.38),l(-.358,.281),l(-.609,.133),l(-.353,.467),l(-.509,1.216),l(-.478,.547),l(-1.193,.496),l(-.177,.364),l(-.277,.481),l(-.563,.61),l(-.076,.38),l(-.71,.259),l(-.734,-.011),l(-.895,.314),l(-.361,-.094),l(-.158,-.518),l(-.207,-.132),l(-.404,.083),l(-.535,.463),l(-.144,.446),l(-.979,.893),l(-.186,.543),l(-.079,.269),l(.116,.38),l(.541,.163),l(.504,.085),l(.425,.014),l(-.114,.689),l(-.154,.735),l(.412,.411),l(.33,.099),l(.537,-.099),l(.112,.441),l(.216,.507),l(.654,1.333),l(-.232,.149),l(.241,.463),l(-.317,.066),l(-.15,.248),l(-.55,.083),l(-.145,-.335),l(-.183,-.062),l(-.78,.215),l(-.2,.331),l(-.735,-.099),l(-.229,-.149),l(-.835,-.021),l(-.835,-.009),l(-.259,-.052),l(.015,.728),l(-.866,.017),l(-.296,.431),l(-.37,.036), -N(606.155,150.953),l(-.037,-.466),l(-.627,-2.479),l(-.064,-.578),l(-.4,.044),l(-.281,.115),l(-.395,1.159),l(-.224,.354),l(-.529,-.448),l(-.249,-.267),l(-.23,-.281),l(-.001,-.381),l(-.009,-.522),l(.131,-.283),l(.651,-.356),l(.498,-.13),l(.938,-.767),l(.159,-.34),l(.012,-.79),l(-.057,-.127),l(-.111,-.098),l(-2.473,-.198),l(-.559,.003),l(-.916,.062),l(-.547,-.053),l(-.537,-.109),l(-.095,-.099),l(-.079,-.719),l(-.053,-.479),l(-.129,-.324),l(-.417,-.054),l(-.489,.06),l(-.372,-.266),l(-.339,-.266),l(-1.252,-.303),l(-.234,.171),l(-.555,.525),l(-.124,.283),l(.083,.155),l(.494,.237),l(1.224,.938),l(.126,.112),l(-.047,.155),l(-.382,.101),l(-.502,.13),l(-.4,.299),l(-.548,.61),l(.339,.323),l(1.042,.431),l(.193,.21),l(-.029,.269),l(-.505,.765),l(.04,.254),l(.352,.45),l(.325,1.409),l(.402,1.775),l(.147,.532),l(-.172,.322),l(.068,.183),l(-.321,.071),l(-.35,-.056),l(-.148,-.706),l(-.198,-.084),l(-.253,.354),l(-.171,.354),l(-.172,.057),l(-.115,-.099),l(-.28,-.592),l(-.152,-.169),l(-.412,.537),l(-.504,.298),l(-.992,.397),l(-.571,.213),l(-.264,.226),l(-.05,.113),l(.106,.579),l(.183,.409),l(-.336,.495),l(-.305,.332),l(-.013,.257),l(-.548,.415),l(-.593,.467),l(-.467,.185),l(-.432,.057),l(-.746,.206),l(-.591,.362),l(-.459,.58),l(-.551,.552),l(-.88,1.061),l(-.611,.552),l(-.673,.276),l(-.675,.829),l(-.676,.467),l(-.728,.368),l(-.452,.241),l(-.427,.312),l(-.192,.509),l(-.073,.466),l(-.341,.41),l(-.649,.298),l(-.428,.058),l(-.506,-.098),l(-.258,.269),l(-.366,.887),l(-.277,.23),l(-.505,-.253),l(-.614,.142),l(-.354,.283),l(-.304,.565),l(-.165,.48),l(-.005,.508),l(.166,1.539),l(.018,.805),l(-.208,.495),l(.227,.324),l(.315,.423),l(-.015,.508),l(-.199,.607),l(-.669,1.611),l(-.341,.834),l(-.13,.636),l(.047,.649),l(.21,1.764),l(-.081,.24),l(-.643,.001),l(-.433,-.013),l(-.186,.142),l(-.334,.961),l(-.324,.594),l(.025,.127),l(.493,.352),l(-.805,.327),l(-.306,.015),l(-.77,.284),l(-.295,.41),l(-.101,.692),l(-.157,.255),l(-.367,.283),l(-.526,.255),l(-.099,.057),l(-.066,.042),l(-.231,.156),l(-.145,0),l(-.174,-.056),l(-1.417,-1.451),l(-.092,-.395),l(-.276,-.522),l(-.34,-1.397),l(-.689,-1.792),l(-.94,-1.933),l(-.979,-1.508),l(-.554,-1.722),l(-.507,-1.792),l(-.738,-1.636),l(-.82,-1.42),l(-.424,-.737),l(-.598,-1.439),l(-.363,-1.157),l(-.767,-3.274),l(-.469,-2.695),l(-.157,-1.566),l(-.051,-.24),l(.232,-.565),l(.546,-.834),l(.007,-.311),l(-.404,-.281),l(-.367,-.437),l(-.113,-.635),l(-.108,-.917),l(.065,-.622),l(-.837,.03),l(-.19,.212),l(-.235,.424),l(.009,.183),l(.276,.254),l(.074,.183),l(-.073,.438),l(-.301,.438),l(-.503,.368),l(-.812,.369),l(-.504,.114),l(-.617,.255),l(-.377,.015),l(-.861,-.281),l(-.572,-.38),l(-1.018,-1),l(-1.391,-1.268),l(-.516,-.705),l(.267,-.043),l(1.062,.125),l(.615,-.086),l(.443,-.142),l(.461,-.283),l(.521,-.608),l(-.067,-.24),l(-.156,.071),l(-.587,.114),l(-.847,-.026),l(-.607,-.112),l(-.632,-.132),l(-.5,-.218),l(-.203,-.07),l(-.929,-.661),l(-.668,-.775),l(-.057,-.197),l(.37,-.036),l(.296,-.431),l(.866,-.017),l(-.015,-.728),l(.259,.052),l(.835,.009),l(.835,.021),l(.229,.149),l(.735,.099),l(.2,-.331),l(.78,-.215),l(.183,.062),l(.145,.335),l(.55,-.083),l(.15,-.248),l(.317,-.066),l(-.241,-.463),l(.232,-.149),l(-.654,-1.333),l(-.216,-.507),l(-.112,-.441),L(557,143.058),l(-.33,-.099),l(-.412,-.411),l(.154,-.735),l(.114,-.689),l(-.425,-.014),l(-.504,-.085),l(-.541,-.163),l(-.116,-.38),l(.079,-.269),l(.186,-.543),l(.979,-.893),l(.144,-.446),l(.535,-.463),l(.404,-.083),l(.207,.132),l(.158,.518),l(.361,.094),l(.895,-.314),l(.734,.011),l(.71,-.259),l(.076,-.38),l(.563,-.61),l(.277,-.481),l(.177,-.364),l(1.193,-.496),l(.478,-.547),l(.509,-1.216),l(.353,-.467),l(.609,-.133),l(.358,-.281),l(-.261,-.38),l(1.512,-1.503),l(.237,-.977),l(-.188,-.377),l(-.032,-.366),l(.517,-.248),l(.643,-.196),l(.504,-.2),l(.2,-.255),l(-.012,-.211),l(-.668,-.377),l(-.702,.05),l(-.188,-.248),l(.039,-.43),l(-.782,.003),l(.003,-.532),l(-.606,-.298),l(-.089,-.248),l(.215,-.132),l(.116,-.479),l(-.389,-.232),l(.139,-.413),l(.384,-.099),l(.002,-.347),l(-.598,.017),l(-.101,-.199),l(.202,-.149),l(-.047,-.314),l(-.336,0),l(-.09,-.166),l(.38,-.611),l(.894,-.265),l(1.708,.325),l(.568,.138),l(.928,.149),l(.557,-.265),l(.262,.116),l(.271,-.298),l(.438,-.132),l(.621,.102),l(.125,.179),l(.234,-.116),l(.071,-.479),l(.155,-.43),l(.411,-.232),l(.688,-.37),l(.207,-.084),l(.502,-.152),l(0,.515),l(.441,1.03),l(.221,.515),l(.81,.11),l(.441,.405),l(.221,.258),l(-.331,.221),l(-.184,.184),l(.073,.589),l(.037,.552),l(.294,.221),l(.718,.096),l(.092,.078),l(.044,.182),l(.68,.099),l(-.104,.414),l(.367,.694),l(-.578,.364),l(-.376,.281),l(-.368,.049),l(-.337,-.264),l(-.033,-.364),l(-.785,.198),l(.157,.694),l(.579,.595),l(-.104,.446),l(.272,.364),l(-.215,.215),l(.099,.43),l(.198,.066),l(.477,-.314),l(.383,.248),l(.772,.843),l(.363,-.116),l(1.078,.579),l(-.116,.364),l(.756,.248),l(.154,-.066),l(.859,.596),l(-1.07,.909),l(-.281,.116),l(.008,.364),l(-.221,.265),l(.04,.396),l(-.309,.397),l(-.218,.43),l(.039,.248),l(.63,.38),l(.466,-.083),l(.665,.479),l(.704,.149),l(.305,.529),l(1.242,.678),l(.231,-.166),l(1.027,.595),l(.538,-.066),l(.182,.397),l(.835,.166),l(.304,.198),l(.15,-.066),l(.087,-.215),l(.503,0),l(.482,.265),l(.582,-.347),l(.494,.298),l(.643,.066),l(.142,.231),l(-.101,.446),l(.663,.149),l(.286,.281),l(.618,.265),l(.584,-.281),l(.313,.066),l(-.034,.331),l(.312,.248),l(.379,-.231),l(.721,.148),l(.847,.364),l(.606,-.297),l(.268,.364),l(.399,.116),l(.357,-.132),l(.271,.083),l(.687,-.132),l(.336,.05),l(.311,-.694),l(-.429,-.827),l(.07,-.876),l(.318,-.761),l(-.037,-.022),l(.345,-.129),l(.471,-.102),l(.231,.069),l(.139,.183),l(-.052,.861),l(.212,.662),l(-.092,.113),l(.235,.493),l(.637,.18),l(.559,.081),l(.869,.214),l(.085,.021),l(.544,-.074),l(.531,-.313),l(.301,.055),l(.335,.125),l(1.238,.063),l(1.036,-.062),l(.624,-.06),l(.217,-.58),l(-.017,-.282),l(-.258,-.238),l(-.313,-.069),l(-.326,-.294),l(-.042,-.24),l(.07,-.156),l(.189,-.1),l(.784,-.033),l(.714,-.216),l(.397,-.27),l(1.123,-1.107),l(.543,-.37),l(.829,-.258),l(1.105,-.726),l(.546,-.299),l(.355,-.087),l(.286,.167),l(.975,.319),l(.377,-.044),l(1.377,-.84),l(.455,.392),l(.716,.715),l(.046,.38),l(-.354,.454),l(-.138,.269),l(.102,.056),l(.3,.055),l(.657,.081),l(.73,.179),l(.624,.081),l(-.018,.508),l(-.112,.24),l(-.596,.582),l(-.072,.283),l(.184,.718),l(-.295,.058),l(-.853,-.221),l(-.558,-.082),l(-.312,.129),l(-.719,.512),l(-1.446,.883),l(-.197,.354),l(.057,.761),l(-.136,.382),l(-.938,1.134),l(-.045,.212),l(.192,.408),l(0,.324),l(-1.148,2.25),l(-.17,.128),l(-.309,-.013),l(-.391,-.11),l(-.811,-.32),l(-.133,.283),l(.146,1.594),l(-.191,.354),l(-.401,.144),l(-.228,.185),l(.152,.93),l(-.015,.678),l(-.273,.368),l(-.25,.129),l(-.255,-.14),l(-.595,-.152), -N(478.516,135.173),l(.052,-.292),l(-.049,-.169),l(-.197,-.107),l(.107,-.175),l(.292,-.919),l(-.015,-.818),l(.517,-1.09),l(.3,-.891),l(-.004,-.409),l(.133,-.283),l(.07,-.749),l(.033,-.847),l(.062,-.174),l(.026,-.278),l(-.065,-.411),l(.037,-.119),l(.102,-.063),l(1.902,1.034),l(.365,.167),l(.253,-.016),l(1.139,-.656),l(2.96,-1.541),l(.161,-.071),l(.87,1.632),l(.311,.69),l(.093,.056),l(-.46,.44),l(-.257,.171),l(-.97,.26),l(-2.586,.622),l(-.646,.229),l(1.146,1.32),l(.698,.885),l(-.765,.724),l(-.456,.37),l(-.24,.072),l(-1.249,.332),l(-.462,.61),l(-.975,.782),l(-2.079,-.299),l(-.154,-.017), -N(456.028,151.46),l(-.021,1.003),l(.033,3.078),l(-.088,.17),l(-1.561,-.019),l(-.52,-.011),l(-.073,1.13),l(-1.981,-.963),l(-5.577,-2.792),l(-4.941,-2.372),l(-5.231,-2.554),l(-.41,.059),l(-1.818,.858),l(-1.519,.729),l(-.231,.157),l(-1.192,-.911),l(-.258,-.182),l(-1.008,-.333),l(-1.646,-.442),l(-.832,-.137),l(-.098,-.07),l(-.86,-1.506),l(-.178,-.168),l(-1.028,-.347),l(-.702,-.165),l(-.544,.201),l(-.244,-.154),l(-.562,-.873),l(-.249,-.917),l(-1.272,-1.702),l(.152,-.283),l(.249,-.128),l(.666,-.47),l(.086,-.17),l(.061,-.664),l(-.457,-1.156),l(.158,-.495),l(.16,-.622),l(-.101,-.748),l(.1,-.862),l(-.052,-.691),l(-.147,-.833),l(-.88,-1.605),l(.241,-.383),l(.204,-.156),l(.22,-.143),l(.864,-.598),l(.155,-.227),l(.147,-.537),l(-.274,-.973),l(.126,-.354),l(1.473,-1.138),l(.579,-.314),l(.802,-.428),l(.093,-.269),l(-.064,-.564),l(.093,-.981),l(1.436,.59),l(.995,.309),l(.521,.013),l(.863,-.129),l(.604,.027),l(1.552,.223),l(.614,.479),l(.794,.224),l(.486,-.001),l(.342,.197),l(.173,.226),l(.26,.819),l(.39,.564),l(.688,.591),l(.378,.126),l(.678,.14),l(1.031,.083),l(.447,.07),l(.973,.224),l(.639,.224),l(.552,.281),l(1.289,.788),l(.84,.464),l(.465,.013),l(.441,-.128),l(.758,-.411),l(.706,-.623),l(.3,-.523),l(0,-.254),l(-.276,-.621),l(-.112,-.579),l(.044,-.41),l(.237,-.537),l(.661,-.58),l(.333,-.198),l(.554,-.241),l(.644,-.298),l(1.376,-.413),l(1.205,.054),l(.728,.154),l(.844,.365),l(.188,.169),l(.043,.508),l(.281,.253),l(.301,.014),l(.945,.125),l(.712,.309),l(.45,.027),l(1.286,.04),l(.302,.197),l(.068,.381),l(.276,.296),l(-.099,.208),l(-.369,.228),l(-.21,.34),l(.354,1.283),l(-.231,.425),l(-.322,.553),l(-.056,.311),l(.185,.945),l(.388,.916),l(.042,.367),l(-.015,.988),l(-.019,3.869),l(-.016,1.468),l(-.008,2.048),l(-.001,.692),l(.045,2.81),l(-.021,1.342),l(.011,2.612), -N(478.212,134.714),l(-.834,-1.746),l(-.796,-1.944),l(-.124,-.289),l(.109,-.066),l(.679,-.851),l(.219,-.438),l(.183,-.507),l(.171,-.566),l(.188,-.822),l(.116,.018),l(.137,-.093),l(.006,-.204),l(.028,-.315),l(.372,-.051),l(.151,.022),l(.07,.099),l(.355,-.07),l(.009,-.167),l(.067,-.193),l(.088,-.041),l(.07,.023),l(.183,.346),l(.201,.128),l(.021,.183),l(-.047,.122),l(.082,.085),l(-.102,.063),l(-.037,.119),l(.065,.411),l(-.026,.278),l(-.062,.174),l(-.033,.847),l(-.07,.749),l(-.133,.283),l(.004,.409),l(-.3,.891),l(-.517,1.09),l(.015,.818),l(-.292,.919),l(-.107,.175),l(-.067,.068),l(-.042,.042), -N(495.751,163.817),l(-.03,-.184),l(-.112,-.537),l(-.508,-.945),l(-.73,-.987),l(-.438,-.493),l(-.846,-.69),l(-.51,-.875),l(-.814,-1.876),l(-.474,-.889),l(-.28,-.409),l(-.794,-.507),l(-1.271,-.689),l(-.527,-.634),l(-.8,-1.17),l(-.081,-.96),l(-.061,-.776),l(-.002,-.89),l(-.104,-.381),l(-.312,-.663),l(-.944,-1.65),l(-.357,-.494),l(-.758,-.62),l(-.459,-.225),l(-.499,-.126),l(-.308,-.282),l(-.483,-.578),l(.149,-.692),l(-.111,-.437),l(-.474,-.818),l(-.747,-1.072),l(-.793,-.902),l(-1.069,-1.494),l(-.525,-.931),l(-.352,-.479),l(-.722,-.761),l(-.524,-.056),l(-.248,0),l(.077,-.296),l(.193,-.283),l(.311,-1.314),l(.104,-.583),l(.154,.017),l(2.079,.299),l(.975,-.782),l(.462,-.61),l(1.249,-.332),l(.24,-.072),l(.456,-.37),l(.765,-.724),l(-.698,-.885),l(-1.146,-1.32),l(.646,-.229),l(2.586,-.622),l(.97,-.26),l(.257,-.171),l(.46,-.44),l(.093,.056),l(1.129,.459),l(.757,.222),l(2.034,.934),l(1.14,.473),l(2.44,1.101),l(.258,.196),l(.399,.633),l(.141,.07),l(.973,-.048),l(.135,.366),l(-.118,.396),l(.047,.818),l(.118,.253),l(.812,.277),l(1.557,.697),l(4.048,.132),l(1.657,.259),l(.408,.054),l(.334,.619),l(.185,.239),l(1.07,.05),l(.644,-.044),l(.043,.121),l(.277,.648),l(.365,.494),l(.178,.663),l(.052,.113),l(.615,-.029),l(.248,.126),l(-.204,.237),l(.194,.187),l(.184,.282),l(.234,.067),l(.234,.27),l(.886,.168),l(.423,.437),l(-.07,.28),l(-.235,.035),l(-.111,.25),l(.316,.381),l(-.188,.593),l(-.122,.198),l(.165,.268),l(.302,.666),l(.149,-.117),l(.372,.282),l(.105,.616),l(.422,.696),l(-.028,.423),l(.222,.268),l(.16,.197),l(.287,.084),l(.136,-.007),l(.336,.083),l(1.043,2.198),l(.548,1.154),l(.261,.902),l(3.362,.375),l(3.387,.446),l(.839,.108),l(.584,-.469),l(.152,-.057),l(.581,.914),l(.155,1.453),l(-5.346,2.982),l(-2.35,1.213),l(-1.691,.815),l(-.169,.085),l(-1.148,.346),l(-3.097,1.035),l(-4.618,1.566),l(-.484,.229),l(-.041,.127),l(-.383,.397),l(-1.907,2.271),l(-2.042,2.667),l(-1.302,-2.703),l(-1.211,-2.45),l(-.452,-.012),l(-.715,.047),l(-.446,-.125),l(-.671,-.151),l(-.216,.1),l(-.174,.185),l(-.11,.495),l(.041,.678),l(-.113,.565),l(-.692,.563), -N(476.458,130.735),l(.124,.289),l(.796,1.944),l(.834,1.746),l(-.38,.381),l(-.479,1.145),l(-.334,1.413),l(-.171,.593),l(-.18,.156),l(-.407,-.07),l(-.448,-.521),l(-.782,-.676),l(-.386,-.494),l(-.338,-.988),l(-.521,-.45),l(-.289,-.621),l(-.17,-.479),l(-.198,-.353),l(-.466,.17),l(-.267,.523),l(.604,1.34),l(.131,.381),l(.634,.86),l(.933,1.042),l(.473,1.199),l(.526,.973),l(.277,.818),l(.391,.465),l(.912,1.735),l(1.072,1.904),l(.428,.705),l(.586,.549),l(.451,.352),l(.151,.183),l(-.241,.17),l(-.285,.1),l(-.043,.155),l(.238,1.087),l(.252,.467),l(.127,.238),l(.812,.591),l(.397,.168),l(.406,.521),l(.416,.38),l(.311,.56),l(-10.382,-.006),l(-2.138,-.001),l(-2.774,.002),l(-2.513,.015),l(-2.268,-.029),l(-1.664,.01),l(-1.241,.007),l(-1.614,-.019),l(-.914,.005),l(-.819,.089),l(-.011,-2.612),l(.021,-1.342),l(-.045,-2.81),l(.001,-.692),l(.008,-2.048),l(.016,-1.468),l(.019,-3.869),l(.015,-.988),l(-.042,-.367),l(-.388,-.916),l(-.185,-.945),l(.056,-.311),l(.322,-.553),l(.231,-.425),l(-.354,-1.283),l(.21,-.34),l(.369,-.228),l(.099,-.208),l(.337,.168),l(.553,-.015),l(.628,-.1),l(.786,-.001),l(1.513,.293),l(.587,.115),l(.779,.122),l(.721,.154),l(.348,.409),l(.4,0),l(.928,.083),l(.998,.394),l(.628,.069),l(.245,-.127),l(.72,-.538),l(.925,-.397),l(.837,-.186),l(.78,-.27),l(.375,-.072),l(.346,.056),l(.535,-.001),l(.723,.126),l(.202,.465),l(.596,.366),l(.518,-.156),l(.64,.267),l(.382,.027),l(.561,-.401),l(.241,.179),l(.277,.056),l(.674,.13),l(.338,-.062),l(.46,-.165),l(.51,-.308), -N(580.625,132.873),l(.24,.43),l(.299,.05),l(.276,-.314),l(.134,-.513),l(.275,.066),l(.186,-.182),l(1.079,.199),l(.132,.612),l(.867,.264),l(.726,.595),l(.472,.215),l(.15,-.132),l(.454,.281),l(.657,.794),l(.158,-.166),l(.71,-.116),l(.289,.166),l(.178,.38),l(-.069,.281),l(1.451,.893),l(.333,-.248),l(.326,.017),l(-.175,.396),l(.014,.265),l(.935,.066),l(.365,-.066),l(.54,.496),l(.141,.463),l(.237,-.099),l(-.01,-.364),l(.685,.38),l(.271,-.083),l(.08,-.331),l(.407,0),l(.63,.281),l(.319,.364),l(.849,-.066),l(.341,.116),l(.339,-.281),l(.655,.159),l(.037,.022),l(-.318,.761),l(-.07,.876),l(.429,.827),l(-.311,.694),l(-.336,-.05),l(-.687,.132),l(-.271,-.083),l(-.357,.132),l(-.399,-.116),l(-.268,-.364),l(-.606,.297),l(-.847,-.364),l(-.721,-.148),l(-.379,.231),l(-.312,-.248),l(.034,-.331),l(-.313,-.066),l(-.584,.281),l(-.618,-.265),l(-.286,-.281),l(-.663,-.149),l(.101,-.446),l(-.142,-.231),l(-.643,-.066),l(-.494,-.298),l(-.582,.347),l(-.482,-.265),l(-.503,0),l(-.087,.215),l(-.15,.066),l(-.304,-.198),l(-.835,-.166),l(-.182,-.397),l(-.538,.066),l(-1.027,-.595),l(-.231,.166),l(-1.242,-.678),l(-.305,-.529),l(-.704,-.149),l(-.665,-.479),l(-.466,.083),l(-.63,-.38),l(-.039,-.248),l(.218,-.43),l(.309,-.397),l(-.04,-.396),l(.221,-.265),l(-.008,-.364),l(.281,-.116),l(1.07,-.909), -N(374.125,167.166),l(-1.41,-.924),l(-.661,-.604),l(-.537,-.788),l(-.292,-.662),l(-.15,-.183),l(-.312,-.154),l(-.567,-.053),l(-.655,-.307),l(-.695,-.561),l(-.604,-.194),l(-.567,-.025),l(-1.209,.12),l(-1.821,.194),l(-.523,.417),l(.06,-.502),l(.563,-1.301),l(.188,-.819),l(.13,-1.13),l(-.162,-1.101),l(-.3,-.791),l(-.624,-.747),l(.267,-.283),l(.182,-.424),l(.067,-.975),l(-.065,-.537),l(-.174,-.353),l(-.808,-.817),l(-.297,-.112),l(-.393,.438),l(-.055,-.197),l(-.013,-.381),l(.08,-.689),l(.474,.013),l(5.055,.056),l(2.396,.014),l(.732,-.033),l(.212,.027),l(-.051,-1.102),l(-.164,-1.539),l(.01,-.707),l(.249,-.383),l(.575,-.427),l(.726,-.315),l(.809,-.287),l(.144,-.128),l(.099,-2.6),l(.07,-2.261),l(.047,-.509),l(.557,-.074),l(6.005,.022),l(.56,.011),l(.104,-.396),l(-.002,-.65),l(.03,-1.752),l(2.829,1.509),l(4.12,2.42),l(1.414,.91),l(-.523,.13),l(-3.231,.089),l(.049,.776),l(.908,7.962),l(.19,1.468),l(.178,1.736),l(.325,2.753),l(.202,2.386),l(.186,1.468),l(.724,.787),l(-.379,1.613),l(-6.457,.01),l(-1.953,.026),l(-.945,.344),l(-.387,.031),l(-.485,-.054),l(-.713,-.137),l(-.535,-.124),l(-.06,.212),l(.055,.296),l(-.107,.269),l(-.454,-.082),l(-.214,-.168),l(-.568,-.83),l(-.261,-.111),l(-.402,.073),l(-.252,.256),l(-.181,.552),l(-.018,.607),l(-.332,.284), -N(476.114,191.139),l(-.563,.54),l(-.626,.314),l(-.367,.016),l(-.303,-.196),l(-.303,-.097),l(-.88,.132),l(-.881,.33),l(-.911,.048),l(-.942,-.234),l(-.495,-.011),l(-.464,.087),l(-.496,.229),l(-1.288,-1.32),l(-1.032,-.926),l(-.207,-.083),l(-.258,.157),l(-.436,.582),l(-.16,.1),l(-.684,-.631),l(-.384,-.012),l(-.529,.37),l(-.258,.242),l(-.352,.016),l(-.366,-.195),l(-.525,-.477),l(-.348,-.493),l(-.795,-.772),l(-.143,-.239),l(-.031,-.07),l(.083,-.679),l(-.157,-.352),l(-.558,-.477),l(-.814,-.165),l(-.367,-.224),l(-.285,-.436),l(-.059,-.72),l(-.206,-.366),l(-.207,-.168),l(-.717,-.434),l(-.558,-.378),l(-.445,-.351),l(-.173,-.395),l(.148,-.481),l(-.223,-.267),l(-.351,-.196),l(-.799,-.235),l(-.797,-.447),l(-.223,-.225),l(-.252,-.493),l(-.207,-.126),l(-.272,.001),l(-.802,.019),l(-.158,-.211),l(-.01,-.664),l(.416,-1.472),l(-.122,-.536),l(-.347,-.549),l(-1.342,-1.673),l(.15,-.425),l(-.026,-.367),l(-.266,-.465),l(-.444,-.407),l(-.155,-.295),l(-.137,-.522),l(-.221,-1.228),l(-.141,-.225),l(-.338,-.012),l(-.517,.088),l(-.219,-.352),l(.316,-.609),l(.542,-.596),l(.087,-.34),l(-.342,-.662),l(.053,-.24),l(.718,-.428),l(.149,-.212),l(-.131,-.677),l(.122,-.438),l(.583,-.809),l(.417,-1.245),l(.229,-.143),l(1.245,-.05),l(.839,.009),l(.04,-.283),l(-.031,-1.229),l(-.036,-1.002),l(.038,-.749),l(-.085,-2.5),l(.036,-.636),l(.016,-.946),l(.02,-1.045),l(.073,-1.13),l(.52,.011),l(1.561,.019),l(.088,-.17),l(-.033,-3.078),l(.021,-1.003),l(.819,-.089),l(.914,-.005),l(1.614,.019),l(1.241,-.007),l(1.664,-.01),l(2.268,.029),l(2.513,-.015),l(2.774,-.002),l(2.138,.001),l(10.382,.006),l(.229,.414),l(.499,1.115),l(.281,3.501),l(.319,1.637),l(.182,.211),l(.625,.394),l(.595,.366),l(.617,.507),l(.491,.197),l(.254,.223),l(-.238,.199),l(-.277,.327),l(-.306,.566),l(-.369,.242),l(-.511,.172),l(-.427,.116),l(-.153,.142),l(-.235,.496),l(-.348,.171),l(-.73,.033),l(-.204,.552),l(-.038,.452),l(-.202,.862),l(-.242,.722),l(-.541,1.302),l(-.068,.495),l(.092,.903),l(-.013,.679),l(-.001,.083),l(-.148,.947),l(-.398,1.231),l(-.214,1.061),l(-1.04,.331),l(-.414,.37),l(-.693,1.134),l(-.154,.34),l(-.191,1.088),l(-.141,1.074),l(-.197,.185),l(-.274,.044),l(-.431,-.096),l(-.259,.072),l(-.163,.114),l(-.187,1.103),l(-.115,.933),l(-.2,1.272),l(.039,.522),l(-.229,1.159),l(-.469,.299),l(-.288,-.012),l(-.928,-.122),l(-.321,.03),l(-.188,.806),l(-.054,.466),l(.094,.141),l(.479,.11),l(.734,.123),l(.334,.167),l(.805,.913),l(1.06,1.067),l(.751,1.464),l(.345,.732),l(.348,.421),l(.462,.28),l(.415,.097),l(.269,.309),l(.117,.988),l(-.034,.17),l(-.018,.141),l(-.079,-.028),l(-.464,.017),l(-1.009,.133),l(-.832,.005),l(-.671,-.052),l(-.291,.327),l(-.678,.795), -N(518.402,163.079),l(-.282,.097),l(-.538,.27),l(-.656,.566),l(-.265,.297),l(-.166,.508),l(-.062,.41),l(-.41,.326),l(-1.418,.652),l(-2.27,.641),l(-1.285,.412),l(-.843,.312),l(-.356,.297),l(-.473,.622),l(-.436,.269),l(-.506,.114),l(-.593,-.069),l(-.521,.072),l(-.83,.439),l(-.65,.396),l(-.956,.397),l(-.752,.199),l(-1.16,.003),l(-.562,-.013),l(-.297,.128),l(-.386,.312),l(-.272,.297),l(-.45,.312),l(-.511,.241),l(-.389,.043),l(-.239,-.042),l(-.535,.411),l(-.839,.058),l(-.494,-.112),l(-.623,-.437),l(-.17,-.155),l(-.317,-.437),l(-.084,-.254),l(.18,-.721),l(-.081,-.635),l(-.312,-.507),l(-.341,-1.171),l(-.572,-1.919),l(-.072,-.438),l(.268,-.707),l(-.124,-.748),l(.692,-.563),l(.113,-.565),l(-.041,-.678),l(.11,-.495),l(.174,-.185),l(.216,-.1),l(.671,.151),l(.446,.125),l(.715,-.047),l(.452,.012),l(1.211,2.45),l(1.302,2.703),l(2.042,-2.667),l(1.907,-2.271),l(.383,-.397),l(.041,-.127),l(.484,-.229),l(4.618,-1.566),l(3.097,-1.035),l(1.148,-.346),l(.169,-.085),l(.092,.663),l(.226,.634),l(.604,.971),l(.933,1.364),l(.127,.253),l(-.006,.296),l(.483,.689),l(.241,.306), -N(494.64,172.627),l(-.261,-.166),l(-.476,-.633),l(-.475,-.159),l(-.437,-.911),l(-1.267,-.792),l(-.277,-.594),l(-.673,-.673),l(-.594,-.119),l(-.871,-.554),l(-.555,.079),l(-.158,-.158),l(-.237,.04),l(-.277,-.198),l(-.356,.159),l(-.476,.079),l(-.277,-.436),l(-.158,.237),l(-.436,.198),l(-.792,.079),l(-.554,-.594),l(-.238,0),l(-.396,-.317),l(-.832,1.663),l(-.436,-.871),l(-.475,.079),l(-.277,.356),l(-.396,-.08),l(-.349,.041),l(.013,-.679),l(-.092,-.903),l(.068,-.495),l(.541,-1.302),l(.242,-.722),l(.202,-.862),l(.038,-.452),l(.204,-.552),l(.73,-.033),l(.348,-.171),l(.235,-.496),l(.153,-.142),l(.427,-.116),l(.511,-.172),l(.369,-.242),l(.306,-.566),l(.277,-.327),l(.238,-.199),l(.098,.129),l(.718,2.102),l(.442,1.623),l(.689,1.919),l(.618,.832),l(.205,-.212),l(-.072,-.479),l(.093,-.226),l(.31,.253),l(.4,.677),l(.384,.395),l(.534,-.043),l(.242,.014),l(1.338,1.282),l(.809,.916),l(.124,.099),l(.706,.055),l(.618,.874),l(.021,.24),l(-.025,.198),l(.118,.212),l(.507,.182),l(.915,.869),l(-.075,.094),l(-.529,.78),l(-.331,-.182),l(-.396,-.125),l(-.214,.114),l(-.055,.085), -N(370.147,172.035),l(-2.301,-.043),l(-1.045,.006),l(-.505,.384),l(-.51,.187),l(-.74,-.024),l(-.819,.047),l(-.463,.139),l(-.009,-.003),l(-.278,-.226),l(-.169,-.409),l(.104,-.424),l(-.095,-.55),l(-.018,-.198),l(.001,-.046),l(1.695,.014),l(0,-.434),l(.155,0),l(.341,-.016),l(.186,-.077),l(.248,.062),l(.294,-.046),l(.124,-.093),l(.016,-.263),l(.077,-.078),l(.14,-.016),l(.155,.155),l(.232,.124),l(.356,.108),l(.046,.108),l(.139,.047),l(.217,-.031),l(.263,.108),l(.186,.17),l(.434,0),l(.186,-.108),l(.263,-.108),l(.279,0),l(.108,-.124),l(.016,-.124),l(-.155,-.217),l(-.202,-.077),l(-.201,.031),l(-.294,.093),l(-.108,.093),l(-.248,.062),l(-.279,-.186),l(-.031,-.186),l(-.186,-.108),l(-.17,-.015),l(-.186,.124),l(-.139,-.108),l(-.108,-.217),l(-.155,-.108),l(-.201,.031),l(-.17,-.062),l(-.387,.17),l(-.108,-.108),l(-.155,.046),l(-.202,.124),l(-.093,.294),l(-1.664,0),l(-.007,-.067),l(-.028,-.269),l(-.377,-.268),l(-.068,-.155),l(-.057,-.367),l(-.386,-.635),l(-.399,-.494),l(-.379,-.31),l(-.472,-.183),l(.54,-.34),l(.723,-.75),l(.588,-1.004),l(.334,-.82),l(.099,-.826),l(.523,-.417),l(1.821,-.194),l(1.209,-.12),l(.567,.025),l(.604,.194),l(.695,.561),l(.655,.307),l(.567,.053),l(.312,.154),l(.15,.183),l(.292,.662),l(.537,.788),l(.661,.604),l(1.41,.924),l(-.506,.399),l(-.057,.339),l(.251,1.1),l(.144,.663),l(.22,.479),l(.181,.197),l(.554,.322),l(.265,.337),l(.082,.833),l(-.004,.565),l(-.062,.142),l(-.146,-.042),l(-.963,.091),l(-.658,.074),l(-.725,-.081),l(-.503,-.209),l(-.795,-.32),l(-1.255,-.021), -N(495.973,175.881),l(-.363,.807),l(.083,.409),l(.428,.732),l(.587,.844),l(.732,.801),l(.596,.547),l(.634,.321),l(.54,.209),l(4.26,1.443),l(1.447,.472),l(1.875,-.04),l(.236,.154),l(-4.087,4.205),l(-1.562,1.69),l(-.813,.909),l(-.8,.004),l(-1.693,-.046),l(-.626,.088),l(-.562,.215),l(-.388,.214),l(-.502,.497),l(-.294,.426),l(-.337,.115),l(-1.216,.078),l(-.305,.101),l(-.453,.511),l(-1.103,-.106),l(-.461,-.181),l(-.46,-.336),l(-.271,-.098),l(-.852,.358),l(-.675,.343),l(-.258,.199),l(-.71,.753),l(-.16,.114),l(-.847,-.094),l(-.67,-.193),l(-1.373,-.133),l(-.335,-.041),l(-2.353,-1.525),l(-.604,-.293),l(-.749,-.193),l(-1.054,-.149),l(-.319,-.069),l(.018,-.141),l(.034,-.17),l(-.117,-.988),l(-.269,-.309),l(-.415,-.097),l(-.462,-.28),l(-.348,-.421),l(-.345,-.732),l(-.751,-1.464),l(-1.06,-1.067),l(-.805,-.913),l(-.334,-.167),l(-.734,-.123),l(-.479,-.11),l(-.094,-.141),l(.054,-.466),l(.188,-.806),l(.321,-.03),l(.928,.122),l(.288,.012),l(.469,-.299),l(.229,-1.159),l(-.039,-.522),l(.2,-1.272),l(.115,-.933),l(.187,-1.103),l(.163,-.114),l(.259,-.072),l(.431,.096),l(.274,-.044),l(.197,-.185),l(.141,-1.074),l(.191,-1.088),l(.154,-.34),l(.693,-1.134),l(.414,-.37),l(1.04,-.331),l(.214,-1.061),l(.398,-1.231),l(.148,-.947),l(.001,-.083),l(.349,-.041),l(.396,.08),l(.277,-.356),l(.475,-.079),l(.436,.871),l(.832,-1.663),l(.396,.317),l(.238,0),l(.554,.594),l(.792,-.079),l(.436,-.198),l(.158,-.237),l(.277,.436),l(.476,-.079),l(.356,-.159),l(.277,.198),l(.237,-.04),l(.158,.158),l(.555,-.079),l(.871,.554),l(.594,.119),l(.673,.673),l(.277,.594),l(1.267,.792),l(.437,.911),l(.475,.159),l(.476,.633),l(.261,.166),l(-.594,.921),l(-.488,.61),l(-.105,.254),l(-.029,.396),l(.202,1.157),l(.5,-.074),l(.892,-.246),l(.4,.04),l(.556,.195), -N(364.011,169.929),l(1.664,0),l(.093,-.294),l(.202,-.124),l(.155,-.046),l(.108,.108),l(.387,-.17),l(.17,.062),l(.201,-.031),l(.155,.108),l(.108,.217),l(.139,.108),l(.186,-.124),l(.17,.015),l(.186,.108),l(.031,.186),l(.279,.186),l(.248,-.062),l(.108,-.093),l(.294,-.093),l(.201,-.031),l(.202,.077),l(.155,.217),l(-.016,.124),l(-.108,.124),l(-.279,0),l(-.263,.108),l(-.186,.108),l(-.434,0),l(-.186,-.17),l(-.263,-.108),l(-.217,.031),l(-.139,-.047),l(-.046,-.108),l(-.356,-.108),l(-.232,-.124),l(-.155,-.155),l(-.14,.016),l(-.077,.078),l(-.016,.263),l(-.124,.093),l(-.294,.046),l(-.248,-.062),l(-.186,.077),l(-.341,.016),l(-.155,0),l(0,.434),l(-1.695,-.014),l(.019,-.477),l(.173,-.198),l(.434,-.058),l(.093,-.155),l(-.006,-.059), -N(495.973,175.881),l(-.556,-.195),l(-.4,-.04),l(-.892,.246),l(-.5,.074),l(-.202,-1.157),l(.029,-.396),l(.105,-.254),l(.488,-.61),l(.594,-.921),l(.055,-.085),l(.214,-.114),l(.396,.125),l(.331,.182),l(.529,-.78),l(.075,-.094),l(.627,.596),l(.285,.465),l(.036,.282),l(-.118,.113),l(-.361,.185),l(-.438,.1),l(-.56,.312),l(-.566,.467),l(.253,.127),l(.645,-.058),l(.321,.013),l(.434,.124),l(-.114,.26),l(-.37,.468),l(-.34,.567), -N(363.763,172.732),l(.463,-.139),l(.819,-.047),l(.74,.024),l(.51,-.187),l(.505,-.384),l(1.045,-.006),l(2.301,.043),l(-.111,.792),l(.115,.847),l(-.186,.312),l(-.333,.186),l(-.513,.031),l(-.401,.017),l(-.381,.186),l(-.789,.64),l(-.321,.372),l(-.047,-.126),l(-.192,0),l(-.501,-.14),l(-.165,-.254),l(.121,-.41),l(.33,-.438),l(.253,-.212),l(-.131,-.141),l(-.372,-.112),l(-.498,.015),l(-.415,.17),l(-.161,0),l(-.616,-.281),l(-.36,-.296),l(-.069,-.24),l(-.323,-.084),l(-.316,-.137), -N(383.005,177.596),l(-.379,.397),l(-.264,.623),l(.214,.409),l(.695,.405),l(.197,.31),l(-.125,.283),l(-.332,.37),l(.309,.351),l(.648,.561),l(.051,.226),l(-.19,.143),l(-.304,-.012),l(-.548,-.223),l(-.304,.03),l(-.158,.199),l(-.03,.127),l(.296,.549),l(.179,.21),l(-.188,.354),l(-.602,.554),l(-.047,.099),l(-.339,-.224),l(-.337,-.097),l(-.143,.086),l(-.756,.922),l(-.321,-.026),l(-.404,-.322),l(-.277,-.323),l(.044,-.283),l(-.009,-.65),l(-.22,-.846),l(-.165,-.366),l(-.338,-.097),l(-.528,.046),l(-.367,.143),l(-.252,.242),l(-.193,.376),l(-.26,-.656),l(-.165,-1.369),l(-.252,-.761),l(-.475,-.619),l(-.456,-.421),l(-.42,-.224),l(-.466,-.04),l(-1.137,.148),l(-.594,-.039),l(-.238,.157),l(-.643,.866),l(-1.088,1.235),l(.051,-.392),l(-.312,-.55),l(-.764,-.775),l(-.122,-.649),l(-.84,-.366),l(-.908,-.563),l(-.277,-.296),l(.09,-.396),l(-.053,-.311),l(-.547,-.041),l(-.323,-.098),l(-.115,-.155),l(.059,-.311),l(-.038,-.1),l(.321,-.372),l(.789,-.64),l(.381,-.186),l(.401,-.017),l(.513,-.031),l(.333,-.186),l(.186,-.312),l(-.115,-.847),l(.111,-.792),l(1.255,.021),l(.795,.32),l(.503,.209),l(.725,.081),l(.658,-.074),l(.963,-.091),l(.146,.042),l(.113,.028),l(.18,.183),l(.882,.715),l(.536,.265),l(.252,-.256),l(.475,-.413),l(.338,.026),l(.356,.153),l(.565,.152),l(.43,-.243),l(.3,-.327),l(.684,-.428),l(.323,.055),l(.246,.281),l(.022,.339),l(.271,.832),l(.265,.451),l(.474,.478),l(.349,.718),l(.194,1.143),l(.559,.901), -N(266.015,188.956),l(.103,.169),l(-.163,.326),l(-.592,.385),l(-1.74,.9),l(-.807,.23),l(-.557,.074),l(-.465,-.054),l(-.284,.115),l(-.232,1.117),l(-.348,.115),l(-.628,-.618),l(-.344,-.224),l(-1.149,.035),l(-.385,-.04),l(-.896,-.461),l(-.309,-.125),l(-.159,.029),l(-.041,.184),l(.616,.688),l(.391,.69),l(.302,1.524),l(.079,.55),l(.166,.239),l(.96,.051),l(.434,.125),l(.15,.253),l(-.265,.27),l(-.569,.272),l(-.652,.131),l(-.203,.199),l(-.259,.666),l(-.235,.213),l(-.652,.173),l(-.554,.286),l(-.74,.654),l(-.645,.739),l(-.271,.016),l(-.186,-.776),l(-.083,-.183),l(-.757,.697),l(-.414,.073),l(-.482,-.223),l(-.694,-.546),l(-.432,-.054),l(-.199,-.437),l(-.088,-.452),l(-.161,-.861),l(-.138,-.437),l(-.148,-.168),l(-.797,-1.182),l(-.51,-.491),l(.479,-.526),l(.731,-.612),l(-.121,-.282),l(-.486,-.647),l(-.256,-.437),l(-.447,-.789),l(-.162,-.804),l(-.048,-.367),l(-.035,-.438),l(-.026,-.254),l(.147,-.326),l(.379,-.511),l(.085,-1.004),l(.409,-.525),l(-.644,-.081),l(-1.99,.224),l(-.76,.174),l(-.522,.13),l(-.144,0),l(-.554,-.576),l(-.847,-.998),l(-.188,-.253),l(-.64,-.321),l(-.521,-.181),l(-1.167,.05),l(-1.163,.12),l(-.496,.017),l(-.397,-.252),l(-.429,-.548),l(-.401,-.309),l(-.099,-.353),l(.226,-1.132),l(-.103,-.395),l(-.855,-1.45),l(-.31,-.606),l(-.384,.017),l(-.234,.1),l(-.402,-.025),l(.709,-1.191),l(.241,-.722),l(.172,-.722),l(.99,-1.758),l(.381,-.059),l(.227,.027),l(.129,-.396),l(-.048,-.497),l(.056,-.288),l(.414,-.2),l(.534,-.156),l(.84,-.171),l(.128,.105),l(-.9,.151),l(-.731,.312),l(-.145,.212),l(.19,.607),l(.142,.407),l(.224,.126),l(-.043,.145),l(.153,.579),l(-.135,.367),l(-.327,.364),l(-.348,.824),l(-.137,.368),l(.253,.479),l(.288,.253),l(.25,.72),l(.341,.353),l(.523,-.114),l(.184,-.156),l(.419,-.255),l(.12,-.142),l(.066,-.523),l(-.167,-.649),l(-.21,-.282),l(-.438,-.804),l(-.136,-.135),l(-.118,-.395),l(-.247,-.18),l(.239,-.099),l(.095,-.251),l(-.204,-.144),l(1,-.379),l(1.085,-.327),l(.998,-.272),l(.086,-.225),l(.69,-.086),l(.143,-.008),l(-.042,-.157),l(-.055,-.198),l(-.125,-.036),l(-.039,-.108),l(-.128,-.072),l(-.226,.071),l(-.156,.027),l(-.229,-.012),l(-.315,-.55),l(.109,-.254),l(.337,-.213),l(.367,-.043),l(.09,.112),l(.14,.368),l(.186,.162),l(-.001,.148),l(.026,.193),l(.068,.09),l(.004,.198),l(.253,.258),l(.329,-.02),l(.699,.111),l(.455,.07),l(.593,.196),l(.323,.254),l(.393,.564),l(.156,.635),l(.358,.324),l(.359,.084),l(1.02,-.129),l(.928,-.059),l(.59,-.058),l(.799,-.059),l(.714,.125),l(.4,.479),l(.267,.169),l(.578,.253),l(.49,.14),l(1.094,.04),l(.382,-.057),l(.388,-.227),l(1.042,-.807),l(.47,-.185),l(.453,.042),l(.959,-.073),l(1.152,-.073),l(.919,.055),l(.248,.112),l(-.056,.141),l(-.294,.185),l(-.854,-.041),l(-.433,.015),l(-.083,.212),l(.059,.184),l(.593,.253),l(.609,.535),l(.195,.649),l(.246,-.523),l(.185,-.142),l(.415,.253),l(.483,.027),l(.374,.098),l(.258,.338),l(.918,.394),l(.464,.295),l(-.729,.496),l(-.161,.65),l(-.214,.226),l(-1.055,.417),l(.5,.064),l(.598,.098),l(.368,-.029),l(.33,-.142),l(.929,-.03),l(.725,.083),l(.84,.274),l(.095,.296),l(-.061,.41),l(-1.655,1.239),l(-.101,.255),l(.074,.212),l(.62,.604),l(.141,.282),l(-.308,.299),l(-.41,.144),l(-1.032,.19),l(-.061,.452),l(.008,.58),l(-.395,.539),l(-.071,.212),l(.324,.521),l(.732,.745),l(.503,.647), -N(493.044,204.258),l(-1.223,-1.771),l(-.027,-.932),l(-.03,-1.43),l(-.042,-2.045),l(-.003,-1.017),l(0,-.438),l(.016,-.848),l(.004,-1.215),l(.002,-.508),l(1.649,-2.467),l(.453,-.511),l(.305,-.101),l(1.216,-.078),l(.337,-.115),l(.294,-.426),l(.502,-.497),l(.388,-.214),l(.562,-.215),l(.626,-.088),l(1.693,.046),l(.8,-.004),l(.813,-.909),l(1.562,-1.69),l(4.087,-4.205),l(-.236,-.154),l(-1.875,.04),l(-1.447,-.472),l(-4.26,-1.443),l(-.54,-.209),l(-.634,-.321),l(-.596,-.547),l(-.732,-.801),l(-.587,-.844),l(-.428,-.732),l(-.083,-.409),l(.363,-.807),l(.34,-.567),l(.37,-.468),l(.114,-.26),l(.154,.044),l(.935,1.142),l(.586,.62),l(.243,.381),l(.265,.211),l(.372,-.071),l(.417,-.001),l(.465,.027),l(.372,-.071),l(.572,-.27),l(.836,-.425),l(.585,-.157),l(.397,.098),l(.76,.267),l(.549,-.072),l(.56,-.326),l(.779,-.566),l(.247,-.127),l(.447,.041),l(.479,.098),l(.419,-.043),l(1.195,-.482),l(.288,.027),l(.682,.196),l(.74,-.03),l(.764,-.185),l(.964,-.327),l(.9,-.666),l(.47,-.382),l(.604,.154),l(.391,.211),l(.08,.014),l(.147,.268),l(-.414,.919),l(.021,.564),l(.132,.621),l(-.165,.452),l(-.375,.509),l(-.028,.678),l(-.047,.833),l(-.163,.509),l(-1.264,2.262),l(-.842,.792),l(-.122,.311),l(.102,.353),l(-.893,1.569),l(-.834,1.272),l(-.214,.947),l(-.351,.636),l(-.712,1.117),l(-.874,1.188),l(-1.159,1.498),l(-.384,.439),l(-2.274,2.504),l(-1.82,1.557),l(-2.164,1.121),l(-.593,.382),l(-1.28,1.09),l(-1.74,1.755),l(-.06,.061),l(-1.055,1.1),l(-1.235,1.569),l(-.615,.835),l(.1,.353),l(-.094,.276), -N(264.768,176.039),l(-.128,.225),l(-.115,.067),l(-.029,.135),l(.039,.25),l(-.058,.086),l(.125,.376),l(-.039,.424),l(-.453,.154),l(-.135,-.01),l(-.144,.039),l(-.482,-.039),l(-.192,.039),l(-.087,-.048),l(-.356,0),l(-.02,-.058),l(.039,-.067),l(.202,-.029),l(.222,-.135),l(.019,-.087),l(.106,.02),l(.154,.01),l(.135,-.145),l(-.096,-.279),l(.048,-.125),l(.029,-.183),l(-.067,-.125),l(-.097,-.135),l(-.279,-.048),l(.116,-.096),l(.164,-.019),l(.231,-.029),l(.115,-.087),l(.385,.02),l(.106,-.039),l(.299,-.067),l(.244,.006), -N(654.075,190.187),l(.206,-.125),l(.63,-.114),l(.656,-.938),l(.241,-.07),l(-.069,.268),l(.122,.087),l(.187,-.046),l(.11,.174),l(.148,.444),l(-.024,.111),l(-.013,.247),l(.197,.197),l(.025,.086),l(-1.234,.42),l(-.383,.271),l(-.309,-.271),l(-.111,-.259),l(-.234,.012),l(-.062,-.37),l(-.084,-.126), -N(493.044,204.258),l(-.602,.389),l(-.557,.171),l(-.385,-.112),l(-.086,.777),l(-.282,.367),l(-.67,.115),l(-.394,.382),l(-.088,.48),l(.006,.353),l(-.356,.622),l(-.964,1.358),l(.092,.536),l(-.337,.65),l(-.25,.255),l(-.334,.1),l(-.084,.152),l(-1.067,-.807),l(-2.427,-1.752),l(-.07,-.239),l(.116,-.552),l(-.137,-.381),l(-3.553,-1.984),l(-4.663,-2.568),l(-1.448,.033),l(1.144,-2.479),l(.105,-.229),l(.656,-.835),l(.985,-.938),l(.477,-.525),l(.43,-.695),l(.143,-.566),l(-.048,-.664),l(-.223,-.606),l(-.224,-.352),l(-.732,-1.069),l(-.174,-.465),l(-.027,-.861),l(-.126,-.226),l(-.477,-.463),l(-.3,-.493),l(.678,-.795),l(.291,-.327),l(.671,.052),l(.832,-.005),l(1.009,-.133),l(.464,-.017),l(.079,.028),l(.319,.069),l(1.054,.149),l(.749,.193),l(.604,.293),l(2.353,1.525),l(.335,.041),l(1.373,.133),l(.67,.193),l(.847,.094),l(.16,-.114),l(.71,-.753),l(.258,-.199),l(.675,-.343),l(.852,-.358),l(.271,.098),l(.46,.336),l(.461,.181),l(1.103,.106),l(-1.649,2.467),l(-.002,.508),l(-.004,1.215),l(-.016,.848),l(0,.438),l(.003,1.017),l(.042,2.045),l(.03,1.43),l(.027,.932),l(1.223,1.771), -N(466.196,203.275),l(.188,-.298),l(.076,-.27),l(-.057,-.748),l(.025,-.734),l(-.021,-.593),l(.107,-.507),l(.217,-1.02),l(.395,-.681),l(.255,-.284),l(1.241,-.996),l(1.195,-1.066),l(.191,-.453),l(-.111,-.31),l(-.271,-.182),l(-.479,-.04),l(-.191,-.027),l(-.128,-.253),l(.26,-1.88),l(.018,-.424),l(-.159,-.183),l(-.063,-.028),l(.496,-.229),l(.464,-.087),l(.495,.011),l(.942,.234),l(.911,-.048),l(.881,-.33),l(.88,-.132),l(.303,.097),l(.303,.196),l(.367,-.016),l(.626,-.314),l(.563,-.54),l(.3,.493),l(.477,.463),l(.126,.226),l(.027,.861),l(.174,.465),l(.732,1.069),l(.224,.352),l(.223,.606),l(.048,.664),l(-.143,.566),l(-.43,.695),l(-.477,.525),l(-.985,.938),l(-.656,.835),l(-.105,.229),l(-1.144,2.479),l(-4.659,0),l(-1.277,.05),l(-.319,.017),l(-.554,.398),l(-.458,.427),l(-.431,.045),l(-.546,-.223),l(-.064,-.042), -N(713.621,206.298),l(.169,7.966),l(-.44,.822),l(.431,1.368),l(.046,.805),l(-.031,3.438),l(-.515,-.512),l(-.927,-.888),l(-.716,-.902),l(-.406,-.056),l(-.776,.101),l(-.739,.143),l(-.434,-.013),l(.091,-.382),l(.435,-.65),l(.006,-.283),l(-.561,-.521),l(-.565,-.775),l(.028,-.226),l(.442,.111),l(.236,-.042),l(.135,-.113),l(-.467,-.409),l(-.595,-.408),l(-.287,-.381),l(-.275,-.648),l(-1.053,-1.693),l(-.508,-.394),l(-.467,-.282),l(-.604,-.196),l(-1.983,-.603),l(-1.26,-.379),l(-.613,-.069),l(-.705,-.238),l(-.63,-.323),l(.072,-.34),l(-.098,-.268),l(-.193,-.028),l(-.617,.101),l(-.389,-.07),l(-.412,-.196),l(-.408,-.395),l(-.209,-.579),l(.133,-.494),l(-.155,-.226),l(-.187,.113),l(-.234,.396),l(-.122,.664),l(-.251,.608),l(-.334,.269),l(-.696,.354),l(-.155,-.169),l(-.331,-.677),l(.022,-.155),l(.384,-.27),l(-.152,-.424),l(-.173,-.239),l(-.564,-.395),l(-.707,-.394),l(-.338,-.056),l(-.059,-.212),l(.038,-.226),l(.413,-.044),l(.388,.084),l(.603,.239),l(.158,-.029),l(.368,-.34),l(.525,-.41),l(.146,.056),l(.3,.269),l(1.021,-.045),l(.139,-.128),l(.09,-.522),l(-.063,-.409),l(-.238,.028),l(-.345,.199),l(-.604,.071),l(-.656,-.041),l(-.766,.044),l(-1.026,-.082),l(-.411,-.31),l(-.135,-.197),l(-.148,-.664),l(-.202,-.338),l(-.42,-.155),l(-1.249,-.124),l(.265,-.297),l(.058,-.255),l(.004,-.593),l(.463,-.029),l(.92,-.411),l(.49,-.383),l(.444,-.283),l(.352,.027),l(.4,.069),l(1.494,.646),l(.515,.169),l(.913,.153),l(.382,.705),l(.138,.396),l(-.283,.749),l(-.067,.381),l(.221,.381),l(.115,.494),l(.115,.48),l(.215,.521),l(.186,.197),l(.197,.127),l(.226,-.65),l(.085,.113),l(.087,.141),l(.309,1.073),l(.169,.169),l(.234,.183),l(.294,.112),l(.354,.056),l(.58,-.198),l(.504,-.439),l(1.192,-1.853),l(.352,-.015),l(1.078,-.215),l(.378,-.142),l(.045,-.085),l(.014,-.509),l(.219,-.17),l(1.1,-.609),l(.335,-.043),l(1.732,.759),l(2.129,.941),l(1.54,.52),l(1.299,.404),M(691.208,208.707),l(-.388,-.069),l(-.693,-.38),l(-.852,-.647),l(-.295,-.141),l(-.414,.028),l(-.059,.1),l(.024,.452),l(-.206,.028),l(-1.014,-.407),l(-.258,-.353),l(-.582,.199),l(-.289,.269),l(-.326,.185),l(-.186,-.184),l(-.312,-.451),l(-.245,-.451),l(.246,-.198),l(.303,-.029),l(.274,.056),l(1.104,.04),l(.574,.31),l(.319,-.015),l(.544,-.326),l(.414,-.015),l(.534,.126),l(.857,.21),l(.499,.395),l(.293,.395),l(.179,.621),l(-.049,.254),M(682.045,208.699),l(-.419,-.056),l(-.715,-.493),l(-.232,-.451),l(.146,-.283),l(.603,-.1),l(.766,-.044),l(.246,.126),l(.256,.311),l(.313,.197),l(.108,.226),l(-.067,.226),l(-.125,.057),l(-.879,.285),M(707.635,219.095),l(-1.11,-.209),l(.589,-1.032),l(.56,-.708),l(.407,-.269),l(.427,-.072),l(.527,.338),l(.198,.24),l(-.11,.184),l(-.324,.637),l(-.256,.17),l(-.638,.693),l(-.27,.028),M(673.797,218.703),l(-.562,.257),l(.034,.233),l(-.886,.326),l(-.582,.274),l(-.339,-.041),l(-.453,.325),l(-.504,-.069),l(-.427,-.112),l(-.378,.255),l(-.3,.058),l(-.358,-.07),l(-.58,-.196),l(-1.046,-.04),l(-.316,.043),l(-.211,-.564),l(.027,-.24),l(.383,-.198),l(.672,-.199),l(.528,-.016),l(1.142,.407),l(.445,.324),l(.338,.013),l(.326,-.297),l(.464,-.016),l(.429,-.071),l(.414,.187),l(.467,-.116),l(-.072,-.222),l(.421,-.187),l(.404,-.233),l(.094,-.151),l(-.076,-.117),l(-.184,.023),l(.116,-.198),l(.16,.012),l(.22,.094),l(.177,.221),l(.013,.304),M(662.661,219.065),l(-.312,-.099),l(-.203,-.127),l(-.062,-.169),l(.03,-.212),l(.256,-.198),l(.315,-.036),l(.17,.092),l(.053,.212),l(.182,.098),l(.305,-.145),l(.34,.105),l(.104,.151),l(-.012,.451),l(.183,-.148),l(.163,-.304),l(.318,-.029),l(.229,.226),l(.021,.424),l(.181,-.036),l(.062,.104),l(-.025,.397),l(-.316,-.211),l(-.311,-.058),l(-.141,.058),l(.072,.155),l(-.852,.157),l(-.143,-.091),l(.097,-.268),l(-.085,-.059),l(-.308,.269),l(-.229,.256),l(-.296,-.046),l(-.63,.225),l(-.624,.199),l(-.357,-.051),l(-.31,.123),l(-.392,-.07),l(-.103,-.07),l(-.202,-.123),l(-.063,-.279),l(.143,-.261),l(-.08,-.253),l(.193,-.115),l(.23,-.113),l(.233,-.156),l(.224,.07),l(.61,.013),l(.4,.104),l(.089,.28),l(.291,.109),l(.294,.056),l(.189,-.259),l(.29,-.012),l(.051,-.187),l(-.263,-.15),M(656.294,219.602),l(-.393,-.282),l(-.855,-.449),l(-.118,-.269),l(.417,-.001),l(.514,-.185),l(.462,-.029),l(.925,.521),l(-.338,.17),l(-.232,.1),l(-.381,.425),M(631.053,200.125),l(-.061,.225),l(-.413,.439),l(-.204,.41),l(-.381,.354),l(.164,.353),l(.162,.169),l(.806,.493),l(.832,.055),l(.241,.112),l(.151,.381),l(.128,.763),l(-.007,.409),l(.267,.423),l(.212,.127),l(.544,.041),l(-.45,.933),l(.151,.212),l(.703,-.453),l(.824,.252),l(.177,.042),l(.265,.254),l(.144,.438),l(.698,.676),l(-.515,1.979),l(-.04,.452),l(.23,.946),l(-.021,.438),l(.021,.664),l(-.002,.268),l(-.149,1.06),l(-.087,.156),l(-.107,.07),l(-.367,-.253),l(-.381,-.522),l(-.261,-.084),l(-.262,.481),l(-.081,.268),l(-1.043,-.619),l(-.219,.086),l(.394,.747),l(-.163,.213),l(-.204,-.197),l(-1.343,-1.424),l(-.775,-.761),l(-1.011,-.859),l(-1.348,-.958),l(-.391,-.451),l(-.199,-.493),l(-.191,-.339),l(-1.003,-.633),l(-.697,-.677),l(-1.186,-1.509),l(-.074,-.353),l(.039,-.339),l(-.324,-.875),l(-.841,-1.467),l(-.667,-1.044),l(-.612,-.775),l(-.369,-.301),l(-.287,-.234),l(-.64,-.295),l(-.254,-.748),l(-.688,-1.806),l(.067,-.24),l(-.107,-.311),l(-.157,-.197),l(-.662,-.507),l(-.711,-.394),l(-.539,-.21),l(-.317,-.099),l(-.119,-.353),l(-.077,-.734),l(-.18,-.409),l(-.386,-.479),l(-.818,-.831),l(-.368,-.423),l(-.725,.128),l(-.613,-.676),l(-.646,-.606),l(-.593,-.69),l(-.562,-.945),l(-.229,-.635),l(-.032,-.367),l(.057,-.198),l(.149,-.113),l(.401,-.043),l(.364,.098),l(.25,.126),l(.632,.563),l(.361,.155),l(.922,.153),l(.335,.027),l(.548,-.1),l(.454,-.142),l(.4,-.015),l(.323,.31),l(.919,1.156),l(.513,.31),l(.058,.155),l(-.12,.537),l(1.066,.916),l(.749,.493),l(1.175,.689),l(.678,.323),l(.139,.169),l(.03,.593),l(-.02,.155),l(.573,.055),l(.745,.944),l(.612,.55),l(.271,-.015),l(.004,-.198),l(-.123,-.226),l(.069,-.24),l(.507,.21),l(.479,.804),l(.441,.38),l(.446,.056),l(.429,.197),l(.314,.366),l(.28,.734),l(.316,.437),l(.431,.268),l(.511,.126),l(.767,.083),l(.431,.154),l(.494,.38),l(.576,.606),l(-.019,.071),M(684.201,200.125),l(-.007,-.172),l(-.414,-1.058),l(.18,-.551),l(-.078,-.141),l(-.141,-.296),l(.036,-.325),l(.286,-.89),l(.514,-.82),l(.263,.367),l(.152,.353),l(-.054,.283),l(-.246,.396),l(-.361,.763),l(.061,.325),l(.19,.141),l(.097,-.141),l(.436,-.411),l(.135,-.522),l(.179,-.142),l(.806,-.412),l(.141,.141),l(-.052,.254),l(.104,.55),l(-.354,.212),l(-.467,.354),l(-.162,.311),l(.159,.099),l(.446,.126),l(.398,.211),l(-.016,.141),l(.159,.353),l(-.688,-.154),l(-.431,-.154),l(-.367,-.042),l(-.304,.156),l(-.08,.438),l(.049,.258),l(.131,.688),l(.341,.62),l(.405,.438),l(.196,.282),l(-.156,.212),l(-.26,-.211),l(-.664,-.648),l(-.55,-.733),l(-.002,-.396),l(-.011,-.251),M(637.361,207.144),l(-.863,-.394),l(-.377,-.239),l(-.205,-.367),l(-.045,-.367),l(-.156,-.395),l(-.507,-.395),l(-.291,-.099),l(-.446,.029),l(-.116,-.141),l(.271,-.65),l(.234,-.24),l(.509,.55),l(.148,-.467),l(.313,-.269),l(.072,.395),l(.312,.89),l(.648,.817),l(.698,.31),l(-.265,.184),l(-.118,.283),l(.183,.564),M(634.321,215.345),l(-.091,-.187),l(.316,-.023),l(.402,.093),l(.369,-.129),l(.068,-.524),l(.018,-.14),l(.309,.057),l(-.043,-.5),l(.222,-.235),l(.093,-.277),l(.202,.121),l(.631,.112),l(.474,-.047),l(.237,.443),l(.524,-.089),l(.158,-.297),l(.022,-.244),l(.259,.116),l(.618,.168),l(.411,.438),l(.338,-.046),l(.204,.271),l(.446,-.029),l(.453,-.185),l(.302,.211),l(.369,.522),l(.179,.521),l(.884,.041),l(.462,.188),l(.49,-.077),l(1.435,.124),l(.479,-.029),l(.34,-.17),l(.213,-.65),l(.271,-.269),l(.447,-.015),l(.223,.211),l(.289,.494),l(.633,.125),l(.53,.027),l(.774,.083),l(.796,.153),l(.289,.24),l(.293,.288),l(-.08,.445),l(.275,.466),l(.119,.099),l(.877,.352),l(.422,.069),l(.658,.013),l(.45,-.185),l(.415,-.015),l(.628,.238),l(.048,.197),l(-.255,.425),l(-.152,.494),l(.578,.776),l(-.499,-.211),l(-.802,-.196),l(-.599,-.253),l(-.891,-.309),l(-.528,.001),l(-.589,.256),l(-.348,.057),l(-.714,-.098),l(-1.454,-.138),l(-1.47,-.138),l(-.805,-.253),l(-.839,-.479),l(-1.099,-.336),l(-1.125,-.267),l(-.948,-.04),l(-.556,.298),l(-.445,.043),l(-.957,-.153),l(-.805,-.492),l(-.357,-.07),l(-1.606,-.066),l(-.363,-.155),l(.055,-.141),l(.448,-.468),l(-.402,-.267),l(-.551,-.099),l(-.506,-.14),l(-.307,-.027),l(-1.261,-.121),M(675.004,223.092),l(.249,-.494),l(.023,-.537),l(.113,-.312),l(.674,-.481),l(1.447,-.624),l(.662,-.454),l(.36,-.607),l(.466,-.157),l(1.578,-.102),l(.91,-.214),l(.541,-.044),l(.869,-.143),l(.118,.07),l(.099,.197),l(-.237,.212),l(-.36,.256),l(-1.609,.61),l(-1.369,.44),l(-.713,.256),l(-.606,.354),l(-1.09,.963),l(-.653,.481),l(-.439,.086),l(-.552,.228),l(-.48,.015),M(667.866,223.149),l(-.217,-.069),l(-.917,-.605),l(-.8,-.45),l(-.347,-.099),l(-.493,-.126),l(-.292,-.197),l(.108,-.212),l(.371,-.142),l(.992,-.03),l(.502,-.114),l(.35,.296),l(1.147,.746),l(.265,.381),l(-.125,.325),l(-.246,.24),l(-.299,.057),M(661.819,191.241),l(-.041,.09),l(.319,.691),l(-.23,.142),l(-.546,.043),l(-.579,.086),l(.198,.226),l(.115,.296),l(-.169,.226),l(.216,.211),l(.235,.112),l(.546,.832),l(.536,.747),l(.043,.198),l(-.338,.721),l(.075,.226),l(.406,.465),l(.743,.45),l(.6,.493),l(.551,.761),l(-.465,.17),l(-.75,-.026),l(-.797,-.238),l(-.337,.1),l(-.387,.467),l(-.354,.918),l(-.08,.476),l(-.046,.272),l(.132,.649),l(.116,.424),l(-.133,.848),l(-.256,0),l(-.466,-.154),l(-1.037,.963),l(-.433,.65),l(-.751,.608),l(.443,.381),l(.06,.396),l(.17,.296),l(-.685,.058),l(.452,.578),l(.009,.212),l(-.103,.227),l(-.547,.665),l(-.206,.396),l(-.127,.354),l(-.529,.594),l(-1.294,.61),l(-.607,.284),l(-.292,.198),l(-.194,-.311),l(.024,-.424),l(-.33,-.804),l(-.306,-.381),l(-.265,-.184),l(-.286,.029),l(-.503,.523),l(-.302,.029),l(-.328,-.508),l(-.313,-.197),l(-.437,-.112),l(-.387,-.451),l(-.342,-.154),l(-.35,.806),l(-.135,.198),l(-.381,.058),l(-.356,-.112),l(-.442,.128),l(-.318,.354),l(-.364,.071),l(-.059,-.551),l(.034,-.311),l(-.314,-1.03),l(-.336,.396),l(-1.42,.44),l(-.321,-.408),l(-.639,.015),l(-.281,.156),l(-.303,.029),l(-.058,-.649),l(-.022,-.65),l(-.267,-1.411),l(-.012,-.48),l(-.352,-.747),l(-.406,-.409),l(-.79,-.422),l(-.146,-.141),l(.555,-.354),l(-.531,-.38),l(-.258,-.296),l(.188,-.735),l(-.074,-.128),l(-.278,-.478),l(-.352,-.296),l(.065,-.466),l(-.125,-.593),l(.182,-.65),l(.133,-.353),l(.424,-.58),l(.303,-.806),l(.318,.028),l(.204,.11),l(.288,.792),l(.253,.295),l(1,.983),l(.304,.083),l(.446,.28),l(.928,-.416),l(.255,-.001),l(.526,.223),l(.543,.11),l(.399,-.172),l(.528,-.342),l(.403,-.525),l(.531,-.441),l(.479,-.074),l(.431,.11),l(.557,.251),l(.524,.223),l(.559,.152),l(.287,-.03),l(.467,-.356),l(.465,-.172),l(.864,-.175),l(.387,-.299),l(.928,-1.785),l(-.076,-.748),l(.218,-.34),l(.646,-.244),l(.22,-.383),l(-.106,-.988),l(.119,-.565),l(.381,-.638),l(.247,-.157),l(.464,-.017),l(.748,.081),l(.651,.081),l(.624,-.018),l(.446,.04),l(.753,.292),l(.182,.09),M(666.561,200.125),l(.012,-.049),l(.48,-1.188),l(.434,-.41),l(.289,-.142),l(.429,.338),l(.29,-.311),l(.162,-.325),l(.293,-.481),l(.496,-.058),l(.605,.14),l(.729,.535),l(.447,.027),l(.863,-.044),l(.478,.168),l(.749,.267),l(.577,-.227),l(1.853,.081),l(.72,-.128),l(.627,-.354),l(.211,-.283),l(-.156,-.268),l(.196,-.283),l(.388,-.241),l(.295,-.41),l(.289,-.057),l(.075,.24),l(-.073,.537),l(-.117,.311),l(-.081,.127),l(-.082,.127),l(-.969,1.259),l(-.416,.396),l(-.464,.1),l(-1.23,.229),l(-.495,-.069),l(-.591,-.422),l(-1.149,-.068),l(-1.151,.059),l(-.878,-.041),l(-1.039,.045),l(-.575,-.083),l(-.671,.029),l(-.415,.1),l(-.433,.368),l(-.259,.461),l(-.154,.274),l(-.187,.721),l(.068,.48),l(.263,.494),l(.194,.183),l(.403,.226),l(.259,.196),l(.221,.607),l(.179,.154),l(.226,.042),l(.815,.026),l(.249,-.269),l(.652,-.976),l(.385,.056),l(.307,.183),l(.496,.041),l(.363,-.227),l(.669,-.156),l(.62,-.143),l(.268,-.298),l(.271,-.057),l(.466,.196),l(.131,.212),l(-.083,.734),l(-.469,-.267),l(-.544,-.042),l(-.361,.298),l(-.389,.523),l(-.438,.425),l(-1.059,.439),l(-.214,.325),l(-.143,.029),l(-.241,-.042),l(-.468,-.126),l(-.03,.056),l(.025,.312),l(.212,.126),l(.676,.578),l(.467,.521),l(.854,1.24),l(-.097,.325),l(-.156,.679),l(.102,.409),l(.447,.535),l(.555,.438),l(.062,.226),l(-.045,.282),l(-.436,-.056),l(-.652,.059),l(-.412,.297),l(-.224,.692),l(-.498,-.026),l(-.461,-.183),l(-.107,-.17),l(.052,-.649),l(.204,-.58),l(-.978,-.845),l(-.417,-.31),l(-.174,-.269),l(.036,-.24),l(.284,-.396),l(.116,-.579),l(-.165,-.494),l(-.737,-.055),l(-.503,.213),l(-.494,.396),l(.16,.353),l(.143,.932),l(-.068,.509),l(-.236,1.145),l(.363,.903),l(-.01,.311),l(-.377,.636),l(-.019,.227),l(.275,.564),l(-.726,.171),l(-.513,.241),l(-.476,.071),l(-.245,-.324),l(-.16,-.522),l(.156,-.325),l(.181,-.466),l(.069,-.876),l(.06,-1.073),l(-.125,-.509),l(.029,-.339),l(-.213,-.395),l(-.311,-.127),l(-.391,.171),l(-.574,.029),l(.011,-.41),l(-.25,-1.284),l(.131,-.311),l(.491,-.524),l(.469,-.777),l(.161,-.48),l(-.089,-.918),l(-.006,-.254),l(.087,-.452),l(.339,-.721),l(.447,-.058),l(-.043,-.861),l(.254,-1.053), -N(341.05,41.069),l(2.084,.272),l(.344,.361),l(-.869,.174),l(-.541,.139),l(-1.678,.106),l(-1.159,.037),l(-.689,.156),l(-.372,.224),l(-.308,.6),l(-.361,.376),l(1.05,.39),l(.971,.168),l(2.117,.064),l(.601,-.001),l(1.775,-.242),l(1.93,-.038),l(.866,.135),l(.933,.219),l(.417,.135),l(.284,-.018),l(1.001,-.002),l(1.277,.032),l(.615,.05),l(-1.277,.626),l(-1.583,.457),l(-1.976,.523),l(-.556,-.016),l(-.695,-.116),l(-.951,.671),l(-1.061,.503),l(-1.246,.452),l(-1.125,.296),l(-.211,.056),l(-2.212,.054),l(-.525,.134),l(-.502,.001),l(-.982,.201),l(-.665,.167),l(-.528,.051),l(-.946,-.413),l(-.375,.05),l(-.69,.913),l(-.958,.118),l(-.631,-.065),l(-.743,-.197),l(-.622,-.463),l(-.854,-.43),l(-.647,-.215),l(-.109,0),l(.008,.2),l(.707,1.043),l(-.192,.249),l(-.319,.017),l(-.69,.249),l(-.84,.249),l(-.573,.38),l(-1,.906),l(-.657,.657),l(-1.051,.851),l(-.776,.262),l(-1.034,.083),l(-1.023,-.275),l(-.148,.554),l(-.438,.569),l(-.783,.277),l(-.992,-.095),l(-.616,.05),l(-1.18,.439),l(.942,-1.723),l(-.121,.017),l(-.795,-.015),l(-1.055,-.177),l(.26,.423),l(-.026,.455),l(-.386,.407),l(-.794,.39),l(-1.16,.164),l(-.973,.002),l(-1.255,.083),l(.467,.403),l(.212,.403),l(-.09,.387),l(-.379,.097),l(-.321,-.063),l(-.47,.033),l(-1.792,-.157),l(.517,.32),l(.765,.462),l(.295,.351),l(-.01,.224),l(-.26,.176),l(-1.197,.034),l(-1.051,.129),l(.844,.413),l(.47,.126),l(.448,.222),l(.389,.333),l(-.554,.461),l(-.285,.111),l(-.599,-.094),l(-.478,.096),l(.345,.474),l(-.009,.127),L(308.501,60),l(-.486,-.125),l(-.583,-.062),l(.026,.158),l(.255,.457),l(-.101,.347),l(-.288,0),l(-.656,-.093),l(-.089,-.016),l(-.979,.112),l(-1.081,.018),l(.682,.487),l(1.108,.391),l(.331,.204),l(-.077,1.035),l(-.382,.938),l(-.427,.094),l(-.815,-.061),l(.489,.591),l(-.016,.498),l(.156,.233),l(-.068,.373),l(-.316,.062),l(-.495,-.03),l(-.771,.079),l(.762,.386),l(.427,.603),l(-.117,.447),l(-.287,.031),l(-.967,-.26),l(-1.052,-.508),l(-.498,.294),l(-.425,.602),l(-.635,-.599),l(.158,-.573),l(-.387,-.201),l(-1.124,-.184),l(-.577,-.309),l(.04,-.187),l(.253,-.249),l(.066,-.218),l(-.325,-.28),l(-.366,-.186),l(-.668,.359),l(-.276,.016),l(-.3,.141),l(-.444,-.046),l(-.98,.064),l(-.417,.017),l(-.571,.296),l(-.476,.28),l(-.426,-.403),l(-.104,-.357),l(-.222,-.217),l(-.513,-.233),l(-.817,-.232),l(-.772,-.389),l(-.517,-.781),l(.07,-.737),l(-.199,-.156),l(-.434,-.094),l(-.467,.048),l(-.97,-.266),l(-.108,-.094),l(-.138,-.236),l(.14,-.457),l(.459,-.395),l(.071,-.269),l(-.258,-.062),l(-.551,-.031),l(-.542,-.094),l(-.278,-.221),l(-.058,-.633),l(-.458,-.126),l(-.616,.049),l(-.589,-.57),l(.023,-.191),l(.198,-.254),l(.618,-.367),l(1.22,-.337),l(.405,-.304),l(.476,-.128),l(.051,-.383),l(-.277,-.287),l(-.473,.097),l(-.921,.082),l(-.493,.097),l(-.635,.416),l(-.538,.129),l(-.63,.304),l(-.339,-.318),l(.038,-.623),l(-.114,-.784),l(-.206,-.451),l(.015,-.355),l(-.243,-.323),l(-.504,.082),l(-.271,-.032),l(-.666,-.355),l(-.594,-.485),l(-.013,-.357),l(.842,-.538),l(.265,.019),l(-.556,-.189),l(-1.083,.064),l(-.103,-.284),l(.383,-.176),l(.677,-.03),l(.586,-.052),l(.456,-.087),l(.322,-.672),l(-1.208,-.047),l(-.572,.05),l(-.362,-.032),l(-.29,-.163),l(-.116,-.197),l(.223,-.28),l(.218,-.008),l(.18,-.16),l(.427,-.055),l(-.375,-.188),l(-.552,.073),l(-.22,-.248),l(.057,-.188),l(.073,-.132),l(.259,0),l(.309,-.099),l(.827,-.25),l(1.218,.081),l(.854,.163),l(.776,.032),l(.378,.131),l(.927,.146),l(1.027,.097),l(-.031,-.363),l(.299,-.545),l(-.298,-.182),l(-1.02,-.263),l(-1.356,-.312),l(-.903,-.164),l(-1.592,-.33),l(-.354,-.116),l(.336,-.35),l(.788,-.001),l(1.462,.363),l(1.034,.048),l(.463,-.067),l(.114,-.067),l(.088,-.6),l(.088,-.301),l(.595,-.034),l(.528,.116),l(.227,-.101),l(-.027,-.351),l(-.195,-.184),l(-.891,-.317),l(.162,-.437),l(.528,-.455),l(-.258,-.286),l(-1.21,-.167),l(-1.154,.002),l(-1.178,-.286),l(-1.649,-.49),l(-.78,-.101),l(-.903,-.05),l(-.76,-.34),l(-.811,-.477),l(.156,-.035),l(.323,-.155),l(.605,-.001),l(.572,-.019),l(2.085,.305),l(.716,.033),l(1.249,.306),l(1.451,.458),l(.729,.169),l(.056,-.307),l(-.311,-.426),l(-.86,-.546),l(-.172,-.446),l(-.603,-.446),l(-.485,-.051),l(-.677,-.24),l(.361,-.277),l(.542,-.139),L(285.644,41),l(-.704,-.241),l(-1.101,-.015),l(-.625,-.086),l(-1.132,-.327),l(-.88,.608),l(-.324,.156),l(-.274,.294),l(-.875,.243),l(-1.402,-.066),l(-1.031,-.343),l(-.306,-.242),l(-.027,-.294),l(.438,-.313),l(.293,-.645),l(-.152,-1.259),l(.582,-.054),l(.691,.192),l(.372,-.124),l(.151,-.334),l(-.383,-.369),l(-.933,-.545),l(-.452,-.141),l(-.946,-.796),l(-.895,-.925),l(-1.105,-1.289),l(-.578,-.485),l(-1.855,-.379),l(-.667,-.255),l(-.291,-.202),l(-.052,-.701),l(-.904,-.406),l(-.962,-.109),l(-1.589,-.165),l(-1.928,-.425),l(-1.903,-.333),l(-2.133,-.183),l(-.997,-.054),l(-1.632,-.035),l(-.785,.189),l(-1.043,.096),l(-.806,.188),l(-1.419,.152),l(-1.228,-.166),l(-1.46,-.296),l(.319,.747),l(-.051,.093),l(-1.051,-.017),l(-1.294,-.184),l(-3.168,-.611),l(1.538,-.566),l(.463,-.114),l(-.092,-.226),l(-.423,-.169),l(-1.067,-.017),l(-2.21,-.015),l(-.812,-.074),l(-.629,-.018),l(-1.238,-.434),l(-.87,-.208),l(.587,-.306),l(1.257,-.041),l(3.036,.147),l(2.025,.034),l(1.343,.017),l(2.117,-.157),l(1.055,-.212),l(.292,-.096),l(.054,-.345),l(-.627,-.287),l(-.82,-.21),l(-1.217,.156),l(-1.11,.252),l(-1.31,.021),l(-1.138,-.113),l(-.753,.078),l(-.879,.098),l(-.68,-.056),l(-.857,-.19),l(-.664,-.365),l(-.816,-.191),l(-.662,-.057),l(-.726,.059),l(-.486,-.076),l(-1.416,-.481),l(-.044,-.35),l(.36,-.45),l(.81,-.119),l(1.235,-.1),l(1.517,-.14),l(2.074,-.161),l(1.29,-.081),l(.951,-.396),l(1.089,-.259),l(.843,-.081),l(2.478,-.005),l(1.101,-.101),l(1.942,.036),l(.402,-.139),l(.31,-.199),l(.609,-.16),l(.202,-.658),l(.276,-.501),l(.116,-.101),l(-.89,-.228),l(-1.947,-.039),l(-1.155,.194),l(-.959,-.125),l(-1.243,-.383),l(.595,-.781),l(1.38,-.332),l(2.845,-.359),l(1.407,-.225),l(1.962,-.249),l(2.112,-.162),l(1.163,.087),l(1.213,-.07),l(1.319,-.07),l(.345,-.181),l(.011,-.226),l(-.357,-.753),l(-.022,-.208),l(.522,-.14),l(1.886,-.05),l(1.526,.205),l(2.141,.41),l(1.296,.226),l(.802,.181),l(.823,-.275),l(-1.657,-.525),l(-.697,-.509),l(.167,-.047),l(2.2,-.122),l(1.166,-.12),l(1.854,-.216),l(2.52,-.195),l(.73,.069),l(1.064,.116),l(.232,1.738),l(.913,-.162),l(.539,-.322),l(.432,-1),l(1.003,.021),l(2.004,.323),l(1.858,.414),l(1.529,.25),l(.205,-.3),l(-.644,-.3),l(-.816,-.537),l(-.894,-.4),l(.295,-.287),l(.742,.022),l(1.758,.02),l(1.136,.212),l(2.754,.373),l(1.284,.279),l(2.109,.322),l(1.878,.274),l(1.872,.204),l(.8,-.209),l(.816,-1.483),l(-.326,-.191),l(-1.292,-.334),l(-1.176,-.533),l(.708,-.247),l(2.404,-.005),l(2.962,-.328),l(1.329,-.077),l(1.527,.17),l(2.221,.488),l(1.567,.167),l(2.005,.142),l(.3,-.761),l(-.3,-.472),l(2.646,-.206),l(2.021,-.08),l(2.589,.095),l(1.989,.146),l(1.886,-.18),l(2.367,-.207),l(2.043,-.005),l(1.859,.223),l(1.825,-.055),l(1.315,.072),l(.619,.099),l(.55,-.102),l(1.946,.146),l(1.707,.046),l(1.673,.096),l(2.438,.761),l(1.368,.241),l(1.345,-.076),l(1.118,.168),l(2.594,.237),l(.445,.408),l(-.304,.12),l(-.492,.192),l(-1.683,.146),l(-2.303,.124),l(-1.152,.121),l(-1.233,.05),l(-1.469,-.068),l(-2.831,-.064),l(-2.22,-.066),l(-1.389,.168),l(-1.614,.027),l(-1.933,.027),l(-1.16,.026),l(-1.485,.168),l(-.444,.118),l(-1.322,.213),l(-.335,.464),l(.743,.251),l(2.551,-.281),l(1.367,-.072),l(3.912,.038),l(2.223,-.12),l(2.331,-.005),l(.997,-.025),l(.93,.067),l(1.77,.434),l(.671,.09),l(1.087,-.186),l(1.663,-.21),l(1.536,-.281),l(1.964,-.144),l(.59,.462),l(-.566,.482),l(-2.316,.639),l(-.973,.338),l(-1.281,.734),l(.12,.307),l(.319,.152),l(.796,-.089),l(.477,-.044),l(1.616,-.553),l(1.766,-.537),l(1.413,-.385),l(1.706,-.32),l(.775,-.207),l(1.662,-.163),l(1.618,.111),l(1.391,.065),l(1.497,-.3),l(.703,-.324),l(1.129,-.234),l(2.148,-.004),l(1.672,.112),l(1.097,.044),l(1.197,.136),l(1.135,.228),l(1.107,.112),l(.316,.25),l(-.181,.273),l(-1.97,.252),l(-1.491,.138),l(-1.245,.494),l(-.557,.289),l(-1.604,.355),l(-1.57,.548),l(-1.063,.089),l(-.918,-.042),l(-1.592,.047),l(-2.213,-.039),l(-1.491,.198),l(-.731,.217),l(-.495,.535),l(.166,.322),l(1.949,-.305),l(1.581,-.046),l(1.856,.101),l(.003,.42),l(-.743,.241),l(-2.388,.124),l(-.463,.14),l(-.213,.199),l(-.156,.595),l(-.471,.71),l(-.678,.158),l(-1.06,-.077),l(-.742,.041),l(-.837,.9),l(-.987,1.087),l(-.15,.347),l(.454,.307),l(.403,.095),l(.602,-.481),l(.743,-.368),l(.856,-.041),l(2.345,.266),l(.353,.096),l(.262,.288),l(-.059,.211),l(-1.234,-.074),l(-.673,-.018),l(-.512,.097),l(-.136,.191),l(.29,.286),l(1.756,.188),l(.557,.132),l(1.802,-.137),l(.526,.208),l(.214,.323),l(-.049,.436),l(-.256,.133),l(-1.835,-.186),l(-1.653,-.054),l(-.781,-.074),l(-1.295,.078),l(-1.382,.475),l(-.823,-.13),l(-.49,-.15),l(-1.06,.04),l(-.283,.377),l(1.393,.599),l(1.187,.222),l(1.298,.128),l(1.665,.072),l(.696,.148),l(.551,.482),l(.272,.444),l(.014,.554),l(-.434,.405),l(-.384,.074),l(-1.292,-.181),l(-.82,-.109),l(-.372,.111),l(.023,.55),l(.118,.236),l(.426,.162),l(.618,.089),l(.723,.215),l(.914,.142),l(.752,.16),l(.383,.376),l(-.338,.233),l(-.832,.145),l(-.647,.126),l(-1.747,-.032),l(-1.176,-.087),l(-1.624,-.086),l(-.592,.448),l(.551,.195),l(1.396,.051),l(1.052,.158),l(.724,.248),l(.088,.319),l(-.035,.549),l(-.13,-.005),l(-1.092,-.045),l(-1.247,.108),l(-.596,.266),l(-1.246,.02),l(-1.225,-.139),l(-1.497,-.404),l(-.922,-.478),l(-.373,-.07),l(-1.094,.286),L(345,36.811),l(-1.084,.09),l(-.589,.178),l(-1.451,-.033),l(-.913,-.087),l(-.969,.143),l(-.395,.125),l(-.174,.283),l(.006,.141),l(.354,.527),l(.71,.245),l(1.284,.05),l(1.515,.26),l(1.567,-.056),l(1.323,.54),l(.758,.226),l(.482,.226),l(1.196,.329),l(1.252,.38),l(.376,.276),l(.483,.898),l(.892,-.208),l(.278,-.139),l(.397,.207),l(.298,.43),l(.071,.344),l(.198,1.164),l(-.169,.205),l(-.371,.12),l(-.541,-.101),l(-.546,-.119),l(-.917,.002),l(-1.041,.036),l(-1.488,-.27),l(-.637,-.409),l(-.415,-.634),l(-.354,-.274),l(-1.17,-.566),l(-.84,-.292),l(-.748,-.137),l(-1.095,-.084),l(-.521,.14),l(-.962,.105),M(351.365,40.026),l(-1.527,-.537),l(-.96,-.225),l(-.712,-.156),l(-.159,-.069),l(-.314,-.419),l(1.483,-.038),l(.893,.139),l(1.064,.26),l(.819,.296),l(.162,.488),l(-.215,.209),l(-.533,.053),M(281.574,46.135),l(-.568,-.133),l(-.707,-.318),l(-.801,-.183),l(-.197,-.101),l(-.25,-.218),l(-.08,-.844),l(.287,-.34),l(.368,-.018),l(.646,.135),l(1.157,.066),l(1.287,.27),l(.748,.269),l(.595,.1),l(.777,.217),l(.603,.335),l(-.144,.202),l(-.112,.034),l(-.543,.051),l(-.774,.035),l(-.77,.186),l(-1.009,.153),l(-.511,.102), -N(105.98,81.688),l(-.952,-.826),l(-.198,-.342),l(-.024,-.476),l(.095,-.104),l(.408,.044),l(.312,-.045),l(.781,.177),l(.658,-.076),l(.28,.119),l(.138,.163),l(-.234,.224),l(-.173,.565),l(-.028,.312),l(-.581,.075),l(-.483,.19),M(125.24,92.375),l(-1.312,-.288),l(-1.345,-.434),l(-.218,-.174),l(.061,-.189),l(.376,-.466),l(-1.023,.002),l(-.413,.248),l(-.299,-.072),l(-.416,-.188),l(.166,-.452),l(-.487,-.334),l(-.269,-.014),l(-.735,-.086),l(-.226,-.262),l(.317,-.292),l(-.976,-.524),l(-.556,.118),l(-.386,-.102),l(-.852,-.511),l(-1.277,-.863),l(-.219,-.235),l(.02,-.117),l(.962,-.12),l(.337,.043),l(1.979,.598),l(.981,.204),l(1.772,.202),l(.385,.263),l(.618,.526),l(.426,.642),l(.433,.422),l(.362,.189),l(1.587,.536),l(.316,.203),l(.48,.756),l(.116,.407),l(-.279,.349),l(-.407,.016),M(271.379,92.089),l(-1.202,-.23),l(.641,-.743),l(.358,-.161),l(.279,.058),l(.292,0),l(.355,-.263),l(-.697,-.653),l(.079,-.219),L(272,89.003),l(1.121,-1.35),l(1.454,-1.31),l(.725,-.442),l(.496,-.192),l(1.315,-.194),l(.198,.073),l(.11,.221),l(-.299,.221),l(-.582,.03),l(-.242,.133),l(.349,.44),l(-.755,.78),l(-1.226,1.438),l(-.271,.526),l(.113,.291),l(.11,0),l(.428,-.176),l(.483,-.555),l(.458,-.191),l(1.115,.305),l(-.896,.687),l(.261,.203),l(.229,.072),l(1.423,.565),l(.758,-.03),l(.325,-.408),l(.309,-.059),l(.718,.057),l(.826,.202),l(.616,.231),l(-.297,.292),l(-.373,.233),l(-.708,.467),l(.339,.333),l(.477,.362),l(.26,.014),l(.417,-.161),l(.464,-.132),l(.278,.116),l(.02,.16),l(-.254,.262),l(-.404,.248),l(-.892,.104),L(280.84,93),l(.273,.362),l(.124,.405),l(.28,.231),l(.183,-.203),l(.309,-.262),l(.527,.159),l(-.099,.449),l(.149,.275),l(.716,.028),l(.085,-.015),l(.015,.203),l(-.168,.304),l(-.25,.652),l(-.34,.651),l(-.222,-.072),l(-.71,-.128),l(-.301,-.144),l(-.042,-.651),l(-.601,.406),l(-.374,.015),l(-.095,-.274),l(.497,-.652),l(.011,-.333),l(-.421,-.478),l(-.279,-.072),l(-.388,.392),l(-.423,.291),l(-.365,.146),l(-.435,.204),l(-.552,.536),l(-.496,.334),l(-.881,-.042),l(-.222,-.217),l(.165,-.145),l(1.229,-.408),l(.466,-.522),l(.632,-.363),l(-.699,-.129),l(-.601,-.057),l(-.322,.464),l(-.412,.015),l(-.13,-.159),l(.04,-.493),l(-.757,.016),l(-.148,.29),l(-.41,.218),l(-1.052,.045),l(-.709,-.057),l(-1.139,-.186),l(-1.012,-.085),l(-1.355,.061),l(-1.014,.147),l(-.145,-.188),l(-.215,-.463),l(.187,-.175),l(.561,-.334),l(.734,-.408),l(.502,-.161),l(.636,-.335),M(265.435,98.655),l(-.469,-.057),l(-.497,-.273),l(-.356,-.562),l(.062,-.635),l(.742,-.738),l(.932,-1.043),l(.816,.432),l(-.375,.435),l(-.112,.462),l(-.233,.333),l(-.262,.116),l(-.58,.319),l(-.244,.448),l(.522,.244),l(.168,-.029),l(.279,-.26),l(.42,-.362),l(.617,-.319),l(.309,.057),l(.495,.461),l(-.177,.347),l(-.246,.159),l(-1.134,.42),l(-.682,.044),M(211.34,59.677),l(-.68,-.046),l(.068,-.872),l(-.375,-.333),l(-.958,.161),l(-2.375,.29),l(.107,-.461),l(.56,-.303),l(1.644,-.561),l(-.302,-.478),l(-.102,-.415),l(.106,-.417),l(.398,-.835),l(.434,-.566),l(.254,-.648),l(.331,-.471),l(1.11,.566),l(-.312,.518),l(.791,.386),l(.527,.047),l(.402,-.469),l(.67,.112),l(.806,.289),l(.917,.514),l(.582,.255),l(2.168,.492),l(.442,.271),l(.176,.255),l(-.09,.925),l(.539,.047),l(.57,-.065),l(.934,.046),l(.701,.142),l(1.019,.427),l(-.419,.096),l(-.269,.127),l(-.46,.271),l(-.949,-.046),l(-.623,-.125),l(-1.328,-.125),l(-.438,-.126),L(217.259,58),l(-.528,-.301),l(-1.017,-.237),l(-.528,.017),l(-.203,.271),l(.174,.588),l(-.126,.096),l(-1.314,.161),l(-.673,.493),l(-.588,.302),l(-1.116,.287),M(200.125,19.1),l(-.862,-.015),l(-1.085,-.195),l(-.308,-.664),l(.819,-.304),l(.77,-.072),l(.666,-.024),l(3.475,-.125),l(1.263,-.12),l(1.374,-.026),l(1.714,.324),l(.397,-.094),l(.397,-.377),l(1.303,-.287),l(1.759,-.099),l(1.975,.209),l(.746,-.001),l(2.562,.137),l(2.621,.324),l(1.424,.09),l(1.461,.161),l(.448,-.165),l(-1.433,-.42),l(-1.67,-.352),l(-.816,-.429),l(.293,-.242),l(1.361,-.148),l(1.101,-.246),l(1.431,-.101),l(2.382,-.201),l(1.666,.119),l(1.944,.191),l(1.009,.265),l(1.19,.456),l(.354,.047),l(.273,-.362),l(-.959,-.508),l(-.828,-.292),l(.499,-.248),l(1.45,.121),l(1.832,.168),l(1.653,.07),l(1.639,.46),l(.378,.023),l(.062,-.195),l(-.301,-.539),l(1.781,-.004),l(1.408,.046),l(.832,.269),l(.831,.34),l(.618,-.001),l(-.044,-.268),l(-.331,-.467),l(1.075,-.077),l(3.691,.386),l(2.726,.288),l(1.937,-.077),l(2.987,.018),l(.967,.047),l(.757,.12),l(.126,0),l(1.419,.094),l(1.089,.191),l(.744,.095),l(1.685,.044),l(1.357,.357),l(-.385,.358),l(-1.237,.121),l(-1.206,.356),l(-1.849,.191),l(-.978,-.045),l(-2.191,-.159),l(-2.284,.005),l(-.776,.142),l(-1.915,.168),l(-.597,.465),l(.75,.366),l(.761,.044),l(1.03,-.048),l(1.705,-.279),l(.79,.021),l(.808,.434),l(-.168,.114),l(-1.246,.139),l(-1.38,.207),l(-1.174,.295),l(-2.098,.518),l(-1.316,.224),l(-1.19,.355),l(-.924,.286),l(-2.252,.005),l(.65,.906),l(-.449,.193),l(-2.297,.455),l(-.768,-.019),l(-1.587,-.037),l(-1.462,-.218),l(-2.386,-.164),l(-.66,.33),l(2.591,.695),l(-.662,.141),l(-.967,-.038),l(-1.297,.022),l(-1.068,.022),l(-2.58,-.214),l(-2.009,.063),l(-.134,.66),l(1.257,-.105),l(1.065,.018),l(2.312,.292),l(.557,.157),l(.12,.67),l(-.33,.197),l(-1.031,.12),l(-.515,.705),l(-1.073,.021),l(-.448,-.058),l(-.402,.176),l(.297,.253),l(.759,.25),l(-.328,.136),l(-1.615,.08),l(-.867,-.037),l(-1.71,-.171),l(-.422,.078),l(.41,.791),l(-.08,.231),l(-.649,.289),l(-.767,.155),l(-1.52,-.112),l(-2.039,-.111),l(-1.43,-.227),l(-1.008,.079),l(-1.219,.5),l(1.031,.112),l(.368,.057),l(2.154,.11),l(1.759,.13),l(1.534,.168),l(2.001,.034),l(.66,.34),l(.045,.359),l(-.907,.398),l(-2.685,.268),l(-.927,.115),l(-1.054,.227),l(-1.115,.077),l(-.467,-.28),l(-.797,-.638),l(-.56,.039),l(-.631,.001),l(-1.453,-.318),l(-.001,.17),l(.331,.508),l(-1.477,-.016),l(-1.5,-.129),l(-.875,-.319),l(-1.033,-.471),l(-.388,.058),l(.527,.717),l(-.24,.17),l(-.821,.133),l(-1.72,-.109),l(-2.276,-.033),l(-.972,-.073),l(-1.382,-.394),l(-.642,-.131),l(-.282,.453),l(-.619,.152),l(-1.843,-.316),l(.161,-.586),l(.219,-.228),l(1.525,-.117),l(.61,-.249),l(.961,-.173),l(1.179,.036),l(.499,-.172),l(-1.073,-.4),l(-1.043,-.651),l(.052,-.154),l(.479,-.117),l(1.316,.036),l(1.743,.093),l(.888,.21),l(1.108,.517),l(1.35,.323),l(1.085,.093),l(1.667,-.022),l(.829,-.136),l(.086,-.268),l(.514,-.304),l(-3.019,.001),l(-1.025,-.171),l(-.156,-.85),l(.211,-.154),l(-1.74,-.153),l(-1.963,-.152),l(-.274,0),l(-.631,.114),l(.204,-.758),l(1.159,-.551),l(1.104,-.16),l(1.837,-.003),l(1.164,.037),l(1.37,.076),l(2.023,.311),l(1.342,.115),l(.486,-.158),l(1.132,-.041),l(-3.399,-.802),l(-1.742,-.313),l(-3.555,-1.27),l(-.406,.242),l(-1.398,-.878),l(.025,-.258),l(.313,-.108),l(1.747,.104),l(1.905,-.004),l(2.019,.06),l(1.6,.382),l(2.535,.784),l(1.448,-.043),l(.833,.095),l(-1.387,-.555),l(-2.015,-.317),l(1.208,-.743),l(1.456,-.329),l(1.731,-.025),l(1.529,-.222),l(2.042,-.07),l(1.157,-.112),l(1.414,-.051),l(-1.778,-.479),l(-1.425,-.153),l(-2.501,.027),l(-1.243,.248),l(-1.305,.158),l(-1.425,.202),l(-1.447,.047),l(-.586,.067),l(-1.532,-.438),l(-.214,.111),l(-.543,.156),l(-2.16,-.018),l(-1.58,.365),l(.311,-.828),l(.98,-.292),l(.007,-.202),l(-.606,-.247),l(-1.375,-.156),l(-1.39,.003),l(-4.189,.505),l(-2.031,.672),l(-.408,-.11),l(-.569,-.251),l(.395,-.133),l(.678,-.023),l(-.117,-.316),l(-.698,-.398),l(-1.216,-.056),l(-.216,-.003),M(200.125,20.844),l(.899,-.096),l(.832,.196),l(.339,.5),l(.511,.495),l(.427,.063),l(1.141,.041),l(-.081,-.236),l(.056,-.411),l(.438,-.109),l(.718,.194),l(.718,.322),l(.374,.3),l(-.066,.171),l(.056,.826),l(.764,.442),l(.953,-.017),l(1.276,-.074),l(1.646,.504),l(-1.123,-.264),l(-1.528,.34),l(-1.599,.221),l(-.83,.377),l(-.287,.197),l(-.265,.315),l(-.448,.021),l(-1.493,-.41),l(-.656,.335),l(.465,.43),l(-.029,.235),l(-.412,.196),l(-.392,.04),l(-1.086,-.31),l(-.944,-.311),l(-.26,.645),l(-.117,.068),l(-.083,.049),l(-.888,.041),l(-1.74,-.094),l(-1.458,-.153),l(-.888,-.154),l(-.494,.021),l(-3.115,-1.31),l(-.191,-.276),l(1.971,-.241),l(3.32,.093),l(.889,.097),l(1.573,.1),l(-2.485,-.693),l(-3.019,-.213),l(-1.103,.122),l(-1.43,-.017),l(-.597,.18),l(-1.008,.022),l(-.606,-.198),l(-1.066,-.517),l(-1.425,-.479),l(-.341,-.355),l(1.971,.124),l(2.278,-.175),l(-1.255,-.249),l(-.756,-.351),l(.38,-.305),l(.729,-.132),l(.769,-.023),l(.921,.042),l(.156,-.219),l(-1.799,-.793),l(1.053,-.114),l(1.213,-.182),l(1.13,.087),l(.584,-.046),l(.145,-.18),l(-.514,-.475),l(1.362,.134),l(.941,.066),l(.83,.202),l(1.589,.869),l(.653,.264),l(.772,.24),l(.674,-.001),l(.36,-.039),M(179.067,27.216),l(-1.156,-.056),l(-.604,-.173),l(-.926,-.638),l(-.621,-.193),l(-3.102,-.091),l(-1.487,.081),l(-.622,.001),l(-1.444,-.056),l(-.767,-.154),l(-1.019,-.37),l(-.161,-.234),l(.335,-.138),l(.802,-.001),l(1.687,.232),l(.867,-.021),l(-.031,-.235),l(-.252,-.275),l(-1.344,-.49),l(-.579,-.098),l(-1.075,-.077),l(-1.392,-.196),l(.065,-.397),l(2.246,-.124),l(2.392,.155),l(.77,.376),l(.999,.453),l(1.979,.193),l(2.189,.114),l(1.178,.233),l(.604,.254),l(1.123,.721),l(.581,.446),l(.168,.426),l(-.481,.194),l(-.919,.137),M(185.907,26.758),l(-1.078,-.037),L(184,26.529),l(-1.029,-.484),l(-1.144,-.76),l(-.03,-.216),l(.239,-.099),l(2.296,-.044),l(1.816,.311),l(3.101,.542),l(-.047,.351),l(-.254,.331),l(-.436,.04),l(-1.563,.177),l(-1.043,.08),M(156.886,26.865),l(-1.573,.646),l(-.558,.27),l(-1.85,.042),l(-1.019,.079),l(-1.898,-.15),l(-.577,-.114),l(-.302,-.423),l(.334,-.291),l(1.365,-.177),l(.899,.056),l(2.351,-.102),l(.496,0),l(2.331,.163),M(132.902,31.305),l(-.53,-.186),l(-.95,-.466),l(-.424,-.112),l(-.33,.057),l(-.56,.207),l(-1.269,.059),l(-.786,-.279),l(-.283,-.319),l(.23,-.264),l(1.13,-.097),l(.503,-.133),l(.771,-.134),l(.977,-.399),l(.848,-.211),l(.726,-.172),l(.548,-.344),l(1.083,-.231),l(1.277,-.079),l(2.532,-.158),l(1.68,.016),l(.888,-.29),l(1.038,-.079),l(1.503,.438),l(-.756,.097),l(-.852,.231),l(-.22,.268),l(.12,.266),l(.469,.474),l(-.777,.001),l(-.912,.115),l(-.918,.662),l(-1,-.017),l(-.867,-.981),l(-.694,-.15),l(-.379,.02),l(-.229,.285),l(-.588,.342),l(-.63,.623),l(-.595,.151),l(-.284,.375),l(-.705,.356),l(-.787,.058),M(191.827,30.313),l(-1.266,-.054),l(-2.278,-.165),l(-.426,.058),l(-.332,-.094),l(-.896,-.489),l(-1.185,-.414),l(.192,-.229),l(2.433,-.042),l(1.542,.263),l(1.472,.054),l(.171,0),l(.89,.358),l(-.179,.246),l(.123,.32),l(-.263,.188),M(144.688,31.739),l(-2.222,-.395),l(-.325,-.674),l(.503,-.057),l(.595,-.17),l(.945,-.096),l(.953,-.133),l(1.279,-.059),l(.522,.187),l(.65,.374),l(.659,.186),l(1.55,-.209),l(.617,.149),l(1.624,.762),l(1.016,.351),l(.897,.036),l(.96,-.058),l(1.418,.09),l(.591,-.02),l(1.116,-.169),l(.092,-.297),l(-.557,-.559),l(-.941,-.391),l(-1.347,-.354),l(.96,-.322),l(.524,-.379),l(.569,-.152),l(1.097,-.116),l(.507,.17),l(.773,.678),l(-.017,.413),l(.518,.654),l(.565,.111),l(.9,.036),l(1.805,.406),l(-.334,-.465),l(.151,-.28),l(.409,-.076),l(1.495,.24),l(.932,.39),l(-.292,.409),l(.039,.5),l(-.358,.461),l(-.573,.277),l(-.755,.111),l(-.782,.001),l(-1.682,.095),l(-1.156,-.071),l(-1.757,-.18),l(-.622,-.017),l(-1.129,.277),l(-1.132,.202),l(-.76,.182),l(-.977,.254),l(-1.625,.292),l(-1.338,.2),L(149.23,34.5),l(-.748,-.07),l(-1.445,-.286),l(-.276,-.378),l(.648,-.128),l(1.219,-.038),l(.738,-.146),l(.852,-.075),l(1.166,-.057),l(.622,.017),l(1.09,-.149),l(.483,-.553),l(-2.768,-.087),l(-.925,-.054),l(-1.564,.28),l(-1.625,.168),l(-1.292,.04),l(-.795,.093),l(-1.681,-.347),l(-.479,.167),l(-.92,.075),l(-.979,-.127),l(-.854,-.33),l(.023,-.111),l(.863,-.427),l(1.098,-.058),l(2.047,-.022),l(.96,-.159),M(178.479,33.234),l(-.984,-.219),l(-.193,-.294),l(.764,-.389),l(.433,-.112),l(.088,-.167),l(-.447,-.333),l(-1.161,-.054),l(-2.13,.227),l(-.939,.076),l(-.331,.019),l(-.854,-.276),l(.039,-.335),l(.739,-.02),l(.542,-.244),l(.587,-.057),l(-.466,-.598),l(.176,-.245),l(.132,-.226),l(.49,.018),l(.859,.224),l(1.942,.746),l(.426,.186),l(.46,-.094),l(-.101,-.243),l(-.959,-.486),l(-.371,-.131),l(-.407,-.357),l(.436,-.095),l(.956,-.059),l(.713,.131),l(1.033,.262),l(.572,.168),l(.27,.018),l(.162,-.452),l(.478,-.133),l(.73,.112),l(.717,.168),l(.327,.168),l(.367,.75),l(-.034,.616),l(-.247,.242),l(-.831,.335),l(-.017,.352),l(.35,.625),l(-.361,.147),l(-1.648,-.089),l(-.862,.112),l(-1.446,.003),M(200.125,30.572),l(-.895,.045),l(-.853,.17),l(-.37,.467),l(1.133,.054),l(.984,-.038),l(.046,-.001),l(.847,.11),l(.463,.129),l(.498,.463),l(.727,.424),l(.621,.091),l(.213,-.074),l(.043,-.314),l(.286,-.056),l(1.075,-.002),l(.883,-.187),l(.766,.11),l(.835,.239),l(.665,.257),l(.976,.053),l(.775,-.463),l(1.393,-.281),l(1.704,-.114),l(1.951,-.246),l(1.533,.053),l(2.59,.014),l(.381,.037),l(.79,.314),l(.911,.239),l(1.418,.146),l(.653,.128),l(.21,.037),l(.361,.166),l(.181,.257),l(-.4,.148),l(-1.833,.407),l(-.135,.255),l(.469,.666),l(-2.486,.076),l(-.592,.02),l(-.651,.091),l(-.768,-.053),l(-.846,-.16),l(-.405,-.125),l(-.306,-.667),l(-.833,-.218),l(-.366,.129),l(.072,.723),l(-.536,.127),l(-.747,-.053),l(-.91,.109),l(-.728,-.017),l(-.495,.001),l(-1.342,-.213),l(-.593,-.197),l(-.495,-.017),l(-.209,.433),l(-1.801,.111),l(-.831,.074),l(-1.453,-.069),l(-.404,-.251),l(-.144,-.686),l(-1.237,.129),l(-.389,.181),l(-.326,.325),l(-.955,.2),l(-1.011,-.034),l(-.112,-.027),l(-.704,-.169),l(-1.186,-.575),l(-.675,.489),l(-1.131,-.07),l(-.666,-.688),l(-.442,-.717),l(.587,-.481),l(.019,-.371),l(-.292,-.316),l(-1.249,-.651),l(-.617,-.299),l(-.047,-.338),l(.636,-.133),l(1.226,-.078),l(2.472,-.023),l(.763,.093),l(1.118,.261),l(.188,.04),l(.872,.184),l(-.613,.189),l(-.259,.013),M(128.19,41.985),l(-.926,-.016),l(-1.059,-.102),l(-.362,-.466),l(-.549,-.467),l(-.432,-.259),l(-1.123,-.363),l(-1.36,-.067),l(-.951,-.138),l(-.469,-.19),l(-.168,-.174),l(.537,-.106),l(.589,-.298),l(.481,-.211),l(.08,-.386),l(-.437,-.809),l(.552,-.001),l(.468,-.177),l(.307,-.372),l(1.104,-.533),l(.526,-.588),l(-.121,-.32),l(-.271,-.16),l(-1.229,-.677),l(-.375,-.448),l(.869,-.001),l(.823,-.056),l(1.455,.051),l(.97,.016),l(1.515,-.092),l(1.284,-.146),l(1.242,-.074),l(.495,.125),l(3.242,.801),l(.918,.088),l(.708,-.055),l(1.316,-.127),l(1.223,.016),l(.771,.07),l(1.35,.373),l(2.389,.815),l(-.242,.143),l(-.432,.036),l(-.26,.072),l(-1.609,.322),l(-1.073,.144),l(-1.829,.428),l(-1.069,.319),l(-1.604,.725),l(-1.025,.563),l(-.549,.089),l(-.974,.124),l(.066,.924),l(-.271,.504),l(-.662,.278),l(-1.215,.124),l(-1.213,-.067),l(-.521,.485),l(-.898,.312),M(190.483,39.666),l(-1.146,-.208),l(-.146,-.524),l(-.941,-.806),l(-.207,-.582),l(.058,-.389),l(.27,-.657),l(.377,-.321),l(1.256,.033),l(-.089,-.16),l(-.416,-.266),l(-.185,-.286),l(.211,-.09),l(.234,-.072),l(2.154,-.058),l(1.215,.087),l(1.464,.248),l(1.282,.051),l(1.316,-.146),l(1.051,.016),l(.694,.105),l(.639,.213),l(-.007,.089),l(-.224,.179),l(-.824,.428),l(-.874,.746),l(-1.513,.92),l(-1.386,.073),l(-2.379,-.154),l(-1.269,.055),l(1.392,.717),l(-.188,.315),l(-.855,.369),l(-.964,.072),M(181.204,41.523),l(-.491,-.085),l(-1.101,-.552),l(-.952,-.641),l(-1.014,-.468),l(-.978,-.225),l(-1.438,-.12),l(-.55,-.174),l(-2.255,-1.066),l(.866,-.654),l(.653,.14),l(1.032,.474),l(1.063,.227),l(.46,.052),l(.615,-.283),l(.908,-.619),l(.415,-.036),l(.018,-.212),l(-1.062,-.565),l(-1.068,-.424),l(-.177,-.231),l(.132,-.107),l(1.683,.086),l(.711,-.215),l(.42,0),l(.996,.39),l(.56,.035),l(.58,-.055),l(.435,-.25),l(1.232,-.127),l(1.354,.069),l(.912,.23),l(-.324,.268),l(-.58,.125),l(-.323,.338),l(-1.55,.375),l(-.392,.16),l(-.069,.194),l(.253,.247),l(.506,.105),l(.692,-.089),l(1.08,.174),l(.868,.245),l(.391,.017),l(.564,.262),l(.186,.438),l(-.681,.352),l(-.156,.35),l(-.271,.68),l(-.457,.366),l(-.508,.14),l(-.658,.019),l(-.582,-.103),l(-.773,-.346),l(-.653,-.103),l(.013,.208),l(1.054,.553),l(-.817,.399),l(-.77,.036),M(243.524,60.394),l(-.234,-.208),l(-1.199,-.235),l(-.673,-.331),l(-.154,-.269),l(.346,-.064),l(.616,-.461),l(-1.378,-.521),l(-1.132,-.125),l(-.76,-.349),l(-.929,-.731),l(-.035,-.511),l(-1.115,-.062),l(-1.311,-.366),l(-.675,-.031),l(.284,.767),l(-.155,.096),l(-.409,-.015),l(-1.704,-.332),l(-.309,.033),l(-.325,.304),l(-.441,.288),l(-1.312,.082),l(-1.349,-.173),l(-1.343,-.189),l(-.813,-.254),l(-.052,-.319),l(.196,-.4),l(.382,-.354),l(1.066,-.163),l(.192,-.178),l(-.128,-.516),l(.206,-.033),l(1.357,.11),l(1.408,.175),l(.517,.144),l(.962,.626),l(.051,-.386),l(-.154,-.193),l(.077,-.194),l(.585,-.033),l(.977,-.099),l(.652,-.163),l(.649,-.114),l(.515,.063),l(.785,.031),l(.166,-.275),l(-1.138,-.825),l(-.773,-.356),l(-.119,-.228),l(.167,-.163),l(.586,-.066),l(.72,-.246),l(1.409,-.591),l(.361,-.541),l(.771,-.46),l(.493,-.379),l(-.109,-.593),l(-.899,-.841),l(-.407,-.496),l(-.541,-.364),l(-.414,.001),l(-1.258,-.33),l(-1.041,-.481),l(-.244,-.467),l(-.527,-.384),l(-.442,.202),l(-.551,.202),l(-.825,-.015),l(-.293,.117),l(-.62,.018),l(-1.255,.169),l(-.214,-.667),l(1.032,-.052),l(1.23,-.103),l(.163,-.269),l(-1.604,-.618),l(-1.552,-.67),l(-.879,-.015),l(-.567,-.185),l(-.169,-.542),l(-.677,-.339),l(-.45,-.05),l(-.918,-.306),l(-.687,-.341),l(-.385,-.119),l(-.611,.155),l(-.81,-.187),l(-1.177,-.238),l(-.489,-.085),l(-.379,.138),l(.529,.307),l(.453,.05),l(2.838,.712),l(.438,.271),l(.069,.306),l(-.505,.221),l(-.669,.069),l(-.541,-.033),l(-.757,-.049),l(-.818,-.252),l(-1.153,-.27),l(-.667,-.066),l(-.323,.17),l(.044,.204),l(.426,.236),l(.259,.438),l(-1.703,-.553),l(-.47,-.05),l(-.396,.119),l(-.63,.153),l(-.767,-.218),l(-.693,-.117),l(-.859,.12),l(-1.474,-.184),l(-1.995,-.167),l(-1.321,.037),l(-1.146,-.032),l(-.862,-.186),l(-.003,-.597),l(-.363,-.153),l(-.904,-.049),l(-.396,.342),l(-.623,.086),l(-1.214,-.049),l(-1.076,-.168),l(-1.303,-.477),l(-.415,-.376),l(.123,-.275),l(.868,-.07),l(1.131,.067),l(1.212,.101),l(.879,-.019),l(.312,-.19),l(-.934,-.463),l(-.8,-.275),l(-.905,-.102),l(-1.106,-.119),l(-.752,.036),l(-.539,-.017),l(-1.249,-.223),l(.114,-.416),l(.292,-.557),l(.34,-.14),l(.646,-.054),l(.081,-.227),l(-1.082,-.4),l(-.044,-.175),l(.449,-.79),l(1.197,-.919),l(.565,-.284),l(.918,-.321),l(.74,-.374),l(.423,-.037),l(.37,-.178),l(.698,-.001),l(.481,-.125),l(.71,-.09),l(1.436,-.109),l(1.348,.033),l(.857,.194),l(-.92,.393),l(-.815,.48),l(-1.394,.639),l(-.43,.529),l(.169,.369),l(1.256,.541),l(-.444,.298),l(-.076,.402),l(.257,.313),l(.862,.554),l(1.559,.621),l(-.096,.121),l(-1.272,.331),l(-.072,.31),l(.959,.033),l(1.504,.101),l(.654,-.639),l(-.103,-.415),l(-.343,-.277),l(-.724,-.103),l(-.422,-.138),l(-.884,-.538),l(.101,-.157),l(.506,-.245),l(.473,-.193),l(1.001,.12),l(.837,-.071),l(-1.204,-.47),l(-.703,-.034),l(-.793,-.279),l(-.056,-.193),l(.053,-.545),l(.886,-.319),l(1.207,.086),l(1.509,-.056),l(-.939,-.281),l(-1.233,-.351),l(.793,-.303),l(1.288,-.198),l(1.044,-.126),l(1.688,-.323),l(1.114,.016),l(.642,.052),l(.833,.141),l(.782,.478),l(1.536,.97),l(.058,.141),l(-.583,.687),l(-.709,.632),l(.038,.733),l(.364,.086),l(.65,.033),l(1.088,-.315),l(.284,-.455),l(.595,-.088),l(.791,.034),l(.454,.174),l(-.006,.262),l(.16,.47),l(.875,.189),l(.196,-.122),l(-.204,-.854),l(.218,-.123),l(.456,-.474),l(1.038,-.265),l(.98,-.054),l(.748,.034),l(.98,.174),l(1.172,.138),l(1.151,-.09),l(.688,.139),l(.327,.262),l(.621,.331),l(.574,.191),L(235.438,40),l(0,.191),l(-.531,.088),l(-.484,.279),l(-.818,.262),l(-.148,.225),l(.45,.259),l(.427,.068),l(.897,-.417),l(.652,-.174),l(.502,.051),l(.476,.242),l(.365,.466),l(.516,.413),l(.342,-.242),l(1.304,-.798),l(1.935,.256),l(.915,.361),l(-.051,.069),l(-.638,.346),l(-.708,.517),l(1.167,-.054),l(.455,-.173),l(1.078,-.105),l(.033,.704),l(.797,.324),l(.523,-.069),l(.831,-.207),l(1.316,-.088),l(.816,.221),l(.566,.273),l(-.162,.154),l(-.461,.223),l(-1.87,.43),l(-.238,.272),l(.523,.253),l(.456,-.068),l(.747,-.171),l(1.235,-.122),l(.406,-.29),l(.361,-.103),l(.479,.067),l(.51,.187),l(.544,.339),l(.636,.522),l(-1.019,.002),l(-1.2,.053),l(-.424,.135),l(.059,.269),l(.372,.134),l(1.333,.065),l(.938,.183),l(.543,.217),l(.233,.301),l(-.37,.034),l(-.748,.001),l(-1.011,-.082),l(-.875,-.216),l(-.824,-.065),l(-.316,.185),l(1.23,.583),l(-.216,.201),l(-1.552,.12),l(.245,.283),l(.437,.166),l(.551,.032),l(1.331,.364),l(1.312,.347),l(.247,.182),l(.039,.282),l(.351,.38),l(.75,-.217),l(.536,.049),l(1.413,.295),l(.298,-.067),l(.649,-.15),l(.61,.032),l(.752,.379),l(.862,.477),l(.376,.346),l(-.685,.1),l(-.801,.117),l(-.027,.444),l(.795,-.001),l(1.405,-.052),l(.51,-.132),l(.895,.048),l(-.386,.559),l(.918,.179),l(.514,-.001),l(.943,-.379),l(.685,.343),l(1.089,.407),l(.194,.098),l(-.275,.229),l(-.254,.099),l(-.103,.326),l(-.819,.05),l(-.718,-.21),l(-.247,-.048),l(-.794,.213),l(.968,.454),l(.279,.162),l(.057,.276),l(-1.057,.197),l(-.356,.228),l(-.312,.292),l(-.372,-.113),l(-.819,-.583),l(-.29,1.103),l(.354,.903),l(-.419,.065),l(-.677,-.257),l(-.751,-.176),l(-.205,-.177),l(-.018,-.243),l(-.315,-.274),l(-.93,.276),l(-.743,-.613),l(.051,-.292),l(.27,-.374),l(-.304,-.129),l(-.224,-.016),l(-.992,-.08),l(-.718,-.292),l(-1.17,-.617),l(-.769,-.292),l(-.762,-.048),l(-.452,.23),l(-.645,.083),L(250,52.592),l(.281,.179),l(1.05,.682),l(-.321,.114),l(-.686,.05),l(-.359,-.259),L(249.277,53),l(-.646,-.21),l(.275,.488),l(.859,.972),l(.604,.015),l(.587,.08),l(.5,.581),l(.612,.805),l(.513,.432),l(.615,-.321),l(.285,.047),l(.592,.399),l(.585,.271),l(1.38,.396),l(-.634,.113),l(-.213,.208),l(.254,.19),l(.568,.286),l(.962,.444),l(.324,.237),l(.242,.682),l(-.112,.428),l(-1.302,-1.155),l(-.554,-.237),l(-.027,.238),l(.118,.27),l(1.055,1.281),l(-.01,.3),l(-.926,-.125),l(.053,.205),l(.432,.409),l(.378,.519),l(-.563,-.172),l(-.615,-.313),l(-.889,-.693),l(-.145,-.031),l(-.719,.064),l(-.91,-.188),l(-1.44,-.662),l(-.319,-.285),l(-1.062,-.665),l(.187,.777),l(-1.22,-.473),l(-.567,-.158),l(-.872,-.03),l(.095,.222),l(.799,.696),l(.853,.426),l(1.842,.645),l(1.296,.644),l(.774,.549),l(.442,.486),l(.429,.689),l(-1.833,-.341),l(-1.524,-.421),l(-1.251,-.28),l(-1.444,-.107),l(-1.092,-.25),l(-.898,-.644),l(-1.146,-.14),l(-.638,-.204),l(-.635,-.141),l(-.058,.145),M(146.194,38.698),l(.818,-.037),l(.78,-.125),l(1.138,-.548),l(.895,-.019),l(1.723,.243),l(.939,.262),l(-.188,.877),l(.515,-.071),l(.66,-.019),l(.792,-.229),l(.599,-.141),l(.758,.016),l(.334,-.071),l(-.989,-.965),l(.156,-.036),l(1.38,.138),l(1.208,.245),l(.675,.245),l(.259,.245),l(.194,.508),l(.965,1.063),l(.638,.346),l(1.045,-.315),l(.14,-.261),l(-1.243,-1.361),l(-.439,-1.321),l(.228,-.354),l(1.91,.262),l(1.775,.156),l(2.031,.719),l(.36,.175),l(.3,.316),l(.16,.701),l(.511,.645),l(.352,.26),l(.856,.606),l(.048,.19),l(-.178,.243),l(-.333,.605),l(.179,.31),l(.224,.12),l(1.4,.649),l(.509,.171),l(1.151,.254),l(1.513,.1),l(2.056,.576),l(1.012,.39),l(.364,.793),l(-.168,.101),l(-1.071,-.082),l(-.811,-.234),l(-.945,-.234),l(-.551,.169),l(-.665,.204),l(-1.021,.036),l(-.256,.118),l(.208,.689),l(1.087,-.069),l(.614,-.152),l(.676,-.119),l(.876,.536),l(-.01,.235),l(-.526,.151),l(-.517,.252),l(-.583,.102),l(-1.417,.12),l(-1.049,-.015),l(-1.194,-.082),l(-1.594,-.248),l(-2.278,-.499),l(-.553,-.217),l(-.436,-.335),l(-.482,-.033),l(-.581,.102),l(-.402,.37),l(-1.114,.505),l(-1.055,.019),l(-1.411,.103),l(-1.253,.42),l(-2.753,.356),l(-1.42,.019),l(-1.205,.086),l(-1.984,-.063),l(-.483,.101),l(-.916,-.015),l(-1,-.282),l(-.061,-.468),l(.198,-.101),l(.002,-.302),l(-.395,-.2),l(-.462,-.1),l(-3.146,-.112),l(-1.258,-.115),l(-.864,-.167),l(-.801,-.2),l(-.753,-.504),l(-1.274,-.554),l(.303,-.069),l(.531,-.222),l(1.572,-.054),l(.603,-.188),l(.558,.016),l(.91,-.019),l(.904,-.087),l(1.716,.031),l(.935,-.002),l(2.14,.047),l(1.09,-.002),l(1.711,-.038),l(.415,-.154),l(-.681,-.221),l(-2.312,-.492),l(-1.942,-.202),l(-4.059,-.061),l(-1.569,-.014),l(-1.694,.055),l(-.955,.053),l(-.604,.001),l(-1.651,-.529),l(.011,-.207),l(.28,-.069),l(.823,-.053),l(1.315,-.209),l(.996,.032),l(1.78,-.141),l(.931,-.105),l(.5,-.277),l(-.392,-.346),l(-2.023,.073),l(-1.578,.159),l(-.393,-.051),l(-.554,-.189),l(-.677,-.346),l(-.65,-.19),l(-.692,.054),l(-.709,-.242),l(-.039,-.279),l(1.304,-.981),l(2.62,-.848),l(.909,-.143),l(.373,-.177),l(1.297,-.267),l(1.324,-.162),l(.701,-.267),l(1.113,-.091),l(1.026,.246),l(-.07,.212),l(-.548,.354),l(-.021,.81),M(251.273,99.526),l(-.188,.153),l(-.16,-.291),l(.192,-.077),l(-.02,-.256),l(.143,-.069),l(-.042,-.154),l(-.224,0),l(-.606,-.231),l(.077,-.229),l(-.31,-2.819),l(-.174,-.274),l(-.488,-.288),l(-.771,-.025),l(-.41,.176),l(-.381,-.085),l(-.505,-.36),l(-.273,-.085),l(-.632,.526),l(-.514,.626),l(-1.139,2.22),l(-1.139,1.45),l(-1.161,-.124),l(-.402,.06),l(-.363,.435),l(-.174,.375),l(-1.093,-.095),l(-1.855,-.004),l(-2.508,-.029),l(-1.76,.009),l(-.968,.523),l(-.534,.305),l(-1.754,.814),l(-.545,.164),l(-.146,.434),l(-.163,.512),l(-.44,.275),l(-1.156,.197),l(-1.305,-.138),l(-1.123,-.01),l(-.93,.091),l(-.47,.203),l(-.162,.375),l(.018,.319),l(.16,.471),l(.047,.362),l(-.875,.427),l(-1.464,.452),l(-.944,.163),l(-.919,.062),l(-.88,.262),l(-.939,.478),l(-.925,.506),l(-.524,.117),l(-.573,-.068),l(-.497,-.169),l(-.371,-.427),l(-.012,-.33),l(.044,-.218),l(.707,-.525),l(.414,-.294),l(.264,-.433),l(.294,-.544),l(.377,-.576),l(.028,-.746),l(-.054,-.545),l(-.876,-3.16),l(-2.529,-1.05),l(-.26,-.33),l(.11,-.318),l(-.307,-.235),l(-.916,-.181),l(-.184,-.294),l(-.178,-.135),l(-.628,.024),l(-.46,-.465),l(-.101,-.429),l(-2.15,-1.061),l(-3.975,-1.576),l(-.977,-.386),l(-.797,-.227),l(-.805,.189),l(-1.469,.592),l(-.707,-.074),l(-.542,.049),l(-.196,-.144),l(-.156,-.115),l(-.474,-.041),l(-.855,.083),l(-.197,-.116),l(-.028,-.282),l(-.373,.075),l(-.412,.191),l(-.219,.06),l(-.573,.141),l(-.506,-.098),l(-.064,-.185),l(-.469,-.086),l(-.241,-.271),l(-.502,-.013),l(-.16,.247),l(-.338,-.48),l(-.271,.012),l(-.02,-.185),l(-1.425,-.208),l(-.518,.076),l(-.833,-.451),l(-.468,-.46),l(-.279,-.371),l(-.896,-.748),l(-.501,.036),l(.131,.347),l(.387,.588),l(-.68,-.003),l(-2.687,.029),l(-2.798,-.029),l(-1.348,.007),l(-2.105,-.003),l(-2.915,.016),l(-2.781,-.029),l(-2.131,.012),l(-2.935,-.014),l(-.601,.003),l(-4.84,-.018),l(-3.617,.004),l(-.875,.005),l(-3.821,-.023),l(-1.089,.035),l(-4.13,-.021),l(-.74,-.011),l(-5.117,.028),l(-1.687,-.006),l(-2.87,.001),l(-3.938,-.008),l(-4.588,.025),l(-1.335,-.022),l(-2.579,-.001),l(-.194,-.013),l(-.187,-.151),l(-.509,-.305),l(-.071,-.437),l(.074,-.346),l(-.708,.25),l(-.373,-.029),l(-.331,-.305),l(-.162,-.496),l(-.125,-.189),l(-.385,.088),l(-.23,.205),l(-.483,.059),l(-.721,-.495),l(-.119,-.425),l(-.201,-.821),l(-1.051,.104),l(-1.01,-.277),l(-.487,-.087),l(-.173,-.087),l(-.143,-.396),l(-.438,-.352),l(-.591,.222),l(-1.236,.046),l(-.461,-.117),l(-.383,-.249),l(-.106,-.25),l(.257,-.648),l(.458,-.222),l(-.227,-.294),l(-1.24,-.086),l(.617,-.518),l(.398,-.281),l(.547,-.149),l(.605,-.508),l(-.874,.006),l(-.621,.149),l(-.362,-.043),L(116,83.422),l(-.039,-.978),l(-.789,.002),l(-1.015,-1.066),l(.132,-.238),l(.034,-.53),l(-.547,.056),l(-.83,.492),l(-1.266,-.934),l(-.384,-.521),l(-.204,-.402),l(-.068,-.432),l(.419,-.404),l(.161,-.254),l(.436,-.3),l(-.358,-.689),l(-.393,-.777),l(.163,-.788),l(-.402,-.255),l(-2.025,-.763),l(-.98,-.314),l(-.189,-.029),l(-.512,-.393),l(-1.67,-1.882),l(-1.769,-1.768),l(-.814,-.58),l(-2.048,-1.175),l(-.35,-.322),l(-.371,-.492),l(-.316,-.199),l(-.832,-.073),l(-.495,.126),l(-.731,.498),l(-1.225,.67),l(-.848,.205),l(-.238,.325),l(-.945,-.673),l(-2.162,-1.318),l(-.348,-.292),l(-.173,-.387),l(-.332,-.388),l(-.739,-.059),l(-2.424,.122),l(-.84,-.074),l(-.196,-.279),l(-.089,-1.046),l(-.026,-2.167),l(.043,-4.334),l(.026,-2.183),l(-.129,-2.796),l(-.052,-2.335),l(-.039,-2.259),l(.003,-2.855),l(-.102,-.483),l(.71,.024),l(.9,-.086),l(.964,.116),l(2.012,.451),l(1.601,.518),l(1.214,.266),l(1.04,.115),l(.731,.032),l(1.619,.164),l(.888,.232),l(.429,.149),l(.254,-.034),l(-.452,-.601),l(-.357,-.2),l(-.345,-.15),l(-.064,-.419),l(1.344,-.423),l(.745,.066),l(.578,-.068),l(.15,-.102),l(1.736,.148),l(.771,-.001),l(1.125,-.373),l(.309,-.186),l(.442,0),l(.656,-.221),l(.759,-.069),l(.866,-.086),l(.734,-.086),l(.469,-.239),l(.392,-.188),l(.771,-.104),l(1.045,-.002),l(.872,.123),l(-.445,.404),l(-.352,.119),l(-1.101,.137),l(-1.092,.373),l(-1.244,.171),l(-1.22,.271),l(-.699,.522),l(-1.767,.255),l(-.681,.487),l(.846,.266),l(1.441,.748),l(-.219,-.55),l(.168,-.351),l(1.196,-.253),l(.39,-.235),l(.726,-.421),l(1.727,-.053),l(.96,-.372),l(1.158,-.389),l(2.066,-.173),l(.643,-.338),l(.921,-.272),l(.821,-.189),l(.476,-.239),l(-.178,-.272),l(-.702,-.392),l(-.655,-.444),l(.899,.101),l(.764,.272),l(.701,.306),l(.412,.324),l(.376,.476),l(.449,.523),l(.393,.235),l(1.246,.486),l(.186,.067),l(1.154,.216),l(.394,-.018),l(.199,-.151),l(-.511,-.639),l(.07,-.27),l(.548,-.035),l(.334,-.136),l(.627,-.103),l(.383,.354),l(.059,.421),l(-.205,.287),l(.833,.133),l(.938,-.069),l(1.136,-.457),l(.536,-.49),l(.479,-.069),l(1.131,.015),l(1.536,.267),l(1.745,.435),l(1.396,.334),l(2.095,.349),l(1.024,.216),l(.619,.066),l(1.572,.282),l(1.121,.065),l(1.144,.148),l(1.096,.032),l(1.4,-.086),l(.899,.099),l(1.008,.282),l(.982,.349),l(.434,.249),l(.191,.333),l(-.524,.134),l(-.935,-.032),l(-.566,.051),l(-.849,.135),l(-.354,.714),l(3.323,.358),l(1.726,.079),l(1.749,.014),l(.868,-.068),l(.738,-.051),l(.94,-.167),l(.895,-.118),l(.938,-.101),l(.886,.032),l(1.432,.477),l(1.452,.179),l(.42,.115),l(1.225,.443),l(-.013,.312),l(-.504,.083),l(-.35,.247),l(.305,.147),l(1.823,.979),l(-.162,-.392),l(-.024,-.312),l(.456,-.05),l(.617,-.132),l(-.062,-.181),l(-.972,-.656),l(-.128,-.198),l(-.145,-.445),l(.121,-.745),l(.35,-.034),l(1.944,-.136),l(.928,-.151),l(.207,-.299),l(.459,-.217),l(.613,-.035),l(1.098,.281),l(1.528,.279),l(.968,.064),l(.969,-.102),l(.612,.414),l(.248,.082),l(.962,.213),l(1.211,.13),l(.678,.081),l(1.146,-.002),l(.879,-.2),l(1.755,-.02),l(1.876,.029),l(1.07,-.052),l(1.18,-.267),l(.959,.478),l(.95,.296),l(.522,-.018),l(.243,-.314),l(-.017,-.513),l(-.666,-.231),l(-.732,-.131),l(-1.377,-.064),l(.089,-.449),l(1.193,-.085),l(.575,.065),l(.804,.214),l(.871,.198),l(.858,.048),l(.498,.198),l(.088,.183),l(-.095,.132),l(-.287,.86),l(.179,.51),l(.304,.164),l(.177,.065),l(.792,.097),l(.951,.311),l(-.071,-.559),l(-.466,-.989),l(.137,-.48),l(.258,-.266),l(.712,.015),l(.811,-.035),l(1.229,-.85),l(.492,-.051),l(.479,-.001),l(.517,-.151),l(.033,-.133),l(-.15,-.367),l(-.375,-.35),l(-.307,.001),l(-.81,.185),l(-.988,-.082),l(.535,-.52),l(.806,-.069),l(.435,-.168),l(.572,-.001),l(.739,.4),l(.464,.167),l(.065,-.268),l(-.081,-.956),l(-.744,.069),l(-.897,-.032),l(-.68,-.116),l(-.859,-.318),l(-.725,.085),l(-1.245,-.183),l(-.861,-.234),l(-.956,-.218),l(-.657,-.338),l(-.092,-.136),l(-.022,-.324),l(.33,-.137),l(.842,-.463),l(-.486,-.221),l(-1.188,-.375),l(.09,-.207),l(.58,-.604),l(.593,-.294),l(.387,-.035),l(1.032,.257),l(.139,-.035),l(.173,-.346),l(-.709,-.362),l(-.201,-.277),l(.23,-.035),l(.551,-.331),l(.367,-.035),l(1.841,-.021),l(.559,.086),l(.728,.189),l(1.26,.449),l(.432,.328),l(.195,.38),l(-.246,.603),l(1.261,.53),l(.809,.495),l(1.134,.493),l(-.377,.341),l(-.985,.036),l(-.474,.273),l(-.416,.557),l(.471,.067),l(1.071,.233),l(.805,.049),l(.387,-.136),l(.597,-.001),l(1.477,.351),l(-.335,.353),l(-.563,.219),l(.092,.151),l(.796,.467),l(.358,.601),l(.025,.833),l(.303,-.063),l(.021,-.004),l(.411,-.067),l(.608,-.367),l(.655,-1.137),l(.668,-.42),l(.523,.016),l(.731,.284),l(1.064,.55),l(.473,.383),l(.209,.45),l(-.159,.433),l(-.336,.034),l(-.796,-.098),l(-.202,.299),l(-.043,.415),l(.35,.396),l(1.146,.659),l(.61,.493),l(.463,.279),l(.595,-.166),l(.896,-.167),l(.369,-.132),l(.208,-.66),l(.764,-.398),l(.599,-.416),l(.249,-.664),l(.363,-.75),l(.237,-.184),l(1.394,.081),l(.329,-.067),l(.134,-.518),l(-.985,-.333),l(-.918,-.35),l(.088,-.891),l(.595,-.271),l(.787,.032),l(.42,-.068),l(.571,.016),l(3.459,.616),l(1.325,.669),l(.506,-.001),l(.553,-.068),l(.454,.201),l(.244,1.036),l(-.474,.268),l(-.431,.101),l(-.243,-.05),l(-.718,-.532),l(-.263,0),l(-.799,.269),l(.123,.316),l(.309,.515),l(.699,.729),l(.855,.528),l(1.108,.576),l(.024,.313),l(-.478,.642),l(-.439,.181),l(-1.407,.772),l(-.674,.083),l(-1.123,.509),l(-.763,-.276),l(-1.654,-.962),l(-.586,-.262),l(-.497,-.048),l(-.684,.281),l(1.364,.521),l(1.483,.896),l(-.708,.067),l(-.691,-.081),l(-1.288,.084),l(-.375,-.129),l(-.596,-.62),l(-1.147,-.014),l(-1.857,.118),l(-.253,.229),l(.614,.244),l(1.311,.421),l(-.159,.195),l(-.611,.327),l(-2.045,1.106),l(-.657,.179),l(-.527,.001),l(-.859,-.241),l(-.816,-.484),l(-.225,-.081),l(-1.189,-.225),l(-.736,-.259),l(-.598,-.112),l(-.947,.014),l(-.289,.004),l(-1.214,.174),l(1.503,.278),l(1.136,.21),l(1.751,.774),l(1.629,.433),l(1.233,.126),l(1.02,.031),l(-.618,1.091),l(-1.237,.705),l(-.856,.432),l(-.728,.161),l(-.829,.049),l(-.928,-.126),l(-1.062,-.38),l(-.048,.351),l(-.025,.287),l(.321,.572),l(-.02,.159),l(-.741,.031),l(-.058,.002),l(-1.365,-.108),l(-1.649,-.41),l(-.884,-.078),l(-2.962,-.322),l(2.146,.864),l(1.576,.156),l(1.367,.267),l(.562,.205),l(.33,.268),l(-.011,.19),l(-.642,.333),l(-1.106,.207),l(-1.429,-.076),l(-.511,-.062),l(-.367,.269),l(1.254,.423),l(-.469,.426),l(-1.06,.316),l(-1.454,.662),l(-.421,.252),l(.218,.704),l(-.313,.235),l(-.909,.205),l(-.31,.282),l(-.529,.64),l(-.276,.296),l(-.241,.669),l(-.274,.543),l(-.323,.666),l(.056,.416),l(-.161,.554),l(.123,.875),l(.136,.536),l(.598,.366),l(.25,.015),l(.257,.091),l(.664,.014),l(1.164,-.094),l(.276,.045),l(.367,.29),l(.413,.763),l(.813,1.157),l(.22,.668),l(-.132,.91),l(.673,.014),l(1.874,-.428),l(1.261,-.033),l(.723,.074),l(.535,.157),l(1.062,.311),l(2.129,.435),l(1.896,.903),l(.993,.933),l(3.5,.67),l(.644,.225),l(.982,.403),l(.986,.253),l(.553,.104),l(.702,-.091),l(.453,.044),l(.828,-.077),l(1.245,.163),l(1.407,.207),l(.401,.194),l(-.297,.702),l(-.142,.85),l(.154,.283),l(.307,.342),l(.07,.416),l(-.115,1.025),l(-.309,.593),l(.022,.208),l(.604,.266),l(.481,.339),l(.264,.354),l(.046,.488),l(-.076,.354),l(.97,.116),l(.963,.47),l(.676,.588),l(.392,.588),l(.078,.162),l(.64,.014),l(.726,.41),l(.907,.601),l(-.349,-.66),l(-.22,-.279),l(.134,-.338),l(.573,-.414),l(.365,.176),l(.381,.456),l(.262,.353),l(.165,-.354),l(.107,-.545),l(-.215,-.456),l(.541,-.532),l(.139,-.546),l(-.183,-.517),l(-.337,-.458),l(-.261,-.754),l(-.004,-.548),l(-.205,-.593),l(-.218,-.43),l(.615,-.016),l(-.097,-.476),l(-.296,-.252),l(-.657,-.163),l(-.375,-.282),l(-.326,-.923),l(1.252,-.271),l(.872,-.241),l(.625,-.271),l(1.758,-.949),l(.629,-.302),l(1.043,-.935),l(.434,-.544),l(.237,-.665),l(.054,-.529),l(-.257,-1.045),l(-.246,-.531),l(-.239,-.319),l(-.938,-.729),l(-.467,-.274),l(-1.105,-.532),l(-.363,-.122),l(-.453,-.274),l(-.151,-.046),l(-.293,-.351),l(.08,-.107),l(.868,-.522),l(.553,-.875),l(.293,-.416),l(.25,-.092),l(.447,-.017),l(.295,-.277),l(-.106,-.523),l(-.18,-.355),l(-.316,-.402),l(-.048,-.202),l(.258,-.357),l(.005,-.264),l(-1.751,-.105),l(1.084,-.92),l(.503,-.704),l(.007,-.125),l(-.316,-.203),l(-.609,-.265),l(-.244,-.266),l(-.043,-.533),l(.305,-.425),l(.554,-.315),l(.57,-.19),l(.827,.062),l(1.781,.374),l(1.097,.234),l(.753,.077),l(1.44,.013),l(1.08,-.144),l(.86,-.222),l(.21,-.047),l(.179,-.063),l(.589,.078),l(.991,.407),l(.254,.125),l(.754,.454),l(.918,.375),l(.796,.437),l(-.294,.391),l(.406,.233),l(1.698,.496),l(1.958,.354),l(.725,-.033),l(.368,-.203),l(.339,.295),l(-.013,.404),l(-.577,.343),l(-.123,.45),l(.438,1.327),l(.136,.722),l(.23,.414),l(-.049,.353),l(-.248,.169),l(-.445,-.014),l(-.347,-.015),l(-.138,.674),l(.375,.274),l(1.137,-.415),l(.366,-.047),l(.781,-.047),l(.286,.015),l(.677,.32),l(.378,.351),l(.004,.259),l(-.081,.123),l(.277,.32),l(.516,-.184),l(.306,-.046),l(1.173,-.079),l(.636,-.184),l(.436,-.383),l(.333,-.551),l(.326,.015),l(.194,.122),l(.693,.717),l(.042,-.062),l(.108,-.764),l(.317,-.583),l(.475,-.262),l(.539,-.385),l(-.651,-.505),l(.008,-.308),l(.272,-.139),l(.98,-.094),l(.193,-.139),l(.512,-.665),l(.667,.37),l(.607,.599),l(.785,.506),l(.596,.797),l(1.045,.764),l(.264,.352),l(-.344,.291),l(.095,.335),l(.573,-.031),l(.365,.777),l(.182,.183),l(.324,.121),l(.743,.136),l(.281,.258),l(.133,.38),l(-.379,.092),l(-.416,.168),l(.411,.318),l(.397,.227),l(.77,.196),l(.279,.227),l(.034,.424),l(-.056,.076),l(-.409,.106),l(-.676,-.029),l(-.745,-.12),l(-.316,.061),l(.091,.166),l(.273,.181),l(.189,.241),l(.333,.513),l(.411,.226),l(.634,.029),l(.462,.18),l(.838,.496),l(.899,.435),l(.246,.33),l(-.035,.195),l(-.447,.781),l(.508,.059),l(.663,-.166),l(.786,-.077),l(.79,.164),l(.574,.194),l(1.162,.49),l(.981,.132),l(1.517,.295),l(-.184,.253),l(-.718,.21),l(-.736,.21),l(-.663,.046),l(-.834,.24),l(-.583,.402),l(-.65,.225),l(-1.032,.061),l(-.286,.075),l(-.324,.268),l(.029,.371),l(-.271,.535),l(1.175,-.343),l(.542,-.09),l(.649,-.105),l(1.201,-.774),l(1.251,-.478),l(1.146,-.106),l(.662,.237),l(.35,.341),l(-.398,.446),l(.036,.119),l(.307,.296),l(.616,-.224),l(.455,-.164),l(.655,.192),l(1.051,.487),l(.226,.251),l(.022,.178),l(-.299,.43),l(-.05,.355),l(-.406,.444),l(1.001,.929),l(-.365,.37),l(-.795,.282),l(-1.078,.621),l(-.662,.281),l(-1.097,.046),l(-.823,.119),l(-1.548,.077),l(-.433,.413),l(-.916,.795),l(-.686,.427),l(-.612,.294),l(-.938,.222),l(-1.494,.172),l(-1.845,.127),l(-1.452,-.07),l(-2.031,-.084),l(-.355,.03),l(-1.073,.075),l(-1.058,-.012),l(-1.873,-.099),l(-.917,-.027),l(-1.758,.106),l(-.547,.206),l(-.523,.294),l(-.537,.585),l(-.205,.554),l(-.287,.335),l(-.591,.19),l(-1.07,.104),l(-.537,.147),l(-1.098,.555),l(-.774,.54),l(-.794,.612),l(-.325,.363),l(-.33,.233),l(-.868,.843),l(-.485,.566),l(-.418,.276),l(-.46,.58),l(-.518,.968),l(.749,-.737),l(.375,-.131),l(.688,-.479),l(1.059,-.944),l(1.097,-.785),l(2.028,-.948),l(1.245,-.395),l(1.797,-.512),l(1.065,-.235),l(1.03,-.235),l(1.473,-.148),l(.922,.056),l(.895,.289),l(.509,.29),l(.136,.189),l(.144,.464),l(-.125,.218),l(-.326,.219),l(-1.059,.292),l(-.753,.452),l(-.581,.044),l(-.845,-.23),l(-.726,.045),l(-.645,.19),l(.279,.08),l(1.13,.229),l(.17,.122),l(.256,.444),l(.074,.095),l(1.299,-.485),l(-.028,.216),l(.479,-.148),l(.372,.162),l(-.36,.229),l(-.231,.256),l(.112,.27),l(-.163,.014),l(-.074,.229),l(-.91,.444),l(1.216,.013),l(.077,.188),l(-.187,.282),l(.091,.43),l(.118,-.081),l(.239,.134),l(-.063,.134),l(.048,.202),l(.351,.457),l(.009,.147),l(.824,.054),l(.154,.094),l(.04,-.067),l(.727,.147),l(-.315,.134),l(-.373,-.013),l(-.047,.134),l(.525,.147),l(.211,.241),l(.569,-.081),l(.135,.134),l(.212,-.014),l(.134,.174),l(.418,-.04),l(-.075,-.107),l(.843,.067),l(.241,.107),l(-.207,.201),l(.242,-.107),l(.26,.027),l(.245,-.013),l(.696,-.362),l(.303,-.081),l(.104,.362),l(.377,.161),l(.538,-.121),l(.488,.416),l(-.405,.254),l(.089,.107),l(.825,.027),l(.164,.174),l(-.521,.121),l(-.161,-.121),l(-.3,.134),l(.118,.094),l(-.515,0),l(-.23,-.04),l(.109,.161),l(-.45,.04),l(.056,.107),l(-.443,.014),l(-.128,.147),l(-.45,.04),l(-.368,.253),l(-.09,-.106),l(-.706,.28),l(-.046,.053),l(-.529,.133),l(-.119,-.267),l(-.274,.106),l(-.163,.267),l(-.188,-.187),l(-.068,.253),l(-.218,.08),l(-.094,.187),l(-.513,0),l(-.081,-.08),l(-.169,-.053),l(.032,-.347),l(-.242,.36),l(-.202,.12),l(-.131,-.253),l(-.354,.027),l(.043,.24),l(-.233,.04),l(.312,.08),l(.033,.213),l(-.103,.12),l(-.174,-.067),l(-.768,.453),l(.127,.16),l(-.235,.12),l(-.194,.053),l(.015,.213),l(-.161,-.12),l(.083,.173),l(-.217,.08),l(-.14,-.107),l(.096,.253),l(-.222,.066),l(-.146,-.08),l(-.148,0),l(-.064,.133),l(-.156,-.106),l(-.243,.227),l(-.086,.292),l(-.201,-.226),l(-.344,.133),l(-.154,-.187),l(-.349,-.479),l(-.138,.24),l(-.419,-.866),l(.456,-.773),l(.284,-.16),l(.035,-.12),l(-.35,.12),l(-.357,.267),l(-.076,-.106),l(.924,-.507),l(.125,.146),l(.195,-.093),l(-.258,-.107),l(1.103,-.52),l(1.109,-.562),l(.658,-.361),l(.336,.094),l(-.067,.428),l(.179,-.054),l(.258,.281),l(-.044,-.201),l(-.017,-.174),l(.632,-.214),l(.73,-.134),l(.192,.067),l(.202,-.081),l(-.152,-.094),l(-.653,-.053),l(-.595,.053),l(-.42,-.053),l(-.804,-.014),l(-.306,.027),l(-.251,.081),l(-.246,.094),l(.033,-.214),l(1.128,-.563),l(.054,-.201),l(.252,-.08),l(-.052,-.174),l(-.523,.281),l(.097,-.134),l(-.502,-.51),l(.309,.443),l(-.36,.482),l(-.328,.013),l(-1.974,.817),l(-.284,.08),l(-.362,-.201),l(-.227,-.067),l(.23,.201),l(-.788,.401),l(-.219,-.174),l(-1.019,-.054),l(-.124,.147),l(-.38,-.241),M(186.193,47.833),l(-.713,-.032),l(-.922,-.181),l(-.882,-.065),l(-1.25,-.314),l(-.973,-.182),l(-.604,-.049),l(-1.083,-.199),l(.43,-.335),l(1.542,-.405),l(.385,-.186),l(.115,-.673),l(.305,-.236),l(.831,-.069),l(.743,.184),l(1.436,.603),l(1.287,.4),l(.074,.285),l(.315,.284),l(1.094,.516),l(-.288,.117),l(-1.263,.486),l(-.578,.051),M(231.09,50.646),l(-1.319,-.03),l(-.449,-.147),l(-.232,-.247),l(-.173,-.478),l(.3,-.43),l(.708,-.664),l(.662,-.267),l(1.359,-.168),l(.911,.197),l(.79,.314),l(-.021,.464),l(-.039,.727),l(-.362,.265),l(-1.025,.348),l(-1.108,.117), -N(444.972,79.145),l(.47,-.218),l(.307,-.093),l(-.294,-.024),l(-.419,.061),l(-.15,-.135),l(-.125,.184),l(-.108,-.012),l(.066,-.491),l(.177,-.218),l(.41,.009),l(1.489,.062),l(.417,.014),l(.339,-.075),l(.121,-.253),l(-.175,-.288),l(.246,-.05),l(-.068,-.122),l(-.068,-.123),l(.353,-.096),l(.12,-.034),l(.051,.154),l(.086,.052),l(.24,0),l(.223,.12),l(.257,.069),l(.514,.068),l(.086,.103),l(.223,-.051),l(.445,0),l(.257,0),l(.223,-.017),l(.086,.137),l(.103,.103),l(.188,.034),l(.171,.069),l(.018,.137),l(.052,.12),l(-.224,.12),l(-.068,.154),l(-.068,.206),l(.018,.171),l(.034,.137),l(.029,.038),l(-2.96,.101),l(-2.246,-.115),l(-.842,-.006),M(717.633,81.109),l(.42,.443),l(.429,.62),l(.183,.457),l(.01,.767),l(-.244,.442),l(-.197,.78),l(-.002,.764),l(.29,.777),l(.592,.849),l(.65,1.446),l(.899,1.614),l(1.115,1.679),l(-1.26,-.677),l(-.832,-.39),l(-.99,-.056),l(-.268,.088),l(-.396,.204),l(-.462,1.045),l(-.266,1.101),l(-.082,.579),l(.277,.982),l(.183,.216),l(.659,.908),l(.54,.201),l(.463,.648),l(-.314,1.246),l(-.664,-1.258),l(-.866,-.301),l(-.224,.029),l(-.415,.303),l(-.311,.534),l(-.643,.907),l(-.422,-.5),l(-.19,-.929),l(.637,-1.146),l(-.395,-.884),l(.175,-.454),l(.502,-.63),l(-.131,-.723),l(-.196,-.376),l(-.27,-.55),l(-.062,-.235),l(.403,-.302),l(.284,-.915),l(.075,-.784),l(.005,-1.326),l(.15,-1.302),l(-.09,-.732),l(-.213,-.469),l(-.83,-.85),l(-.1,-.897),l(.114,-.192),l(.359,-.722),l(.065,-.738),l(-.336,-.457),l(.172,-.237),l(.374,-.03),l(.62,-.031),l(1.023,-.534),M(471.158,84.281),l(-.002,-.142),l(-.165,-.066),l(-.082,-.115),l(-.164,-.082),l(.033,-.099),l(-.033,-.23),l(-.033,-.164),l(.082,-.099),l(-.147,-.131),l(-.099,-.148),l(.132,-.066),l(0,-.165),l(-.296,-.164),l(-.279,-.263),l(-.017,-.164),l(.099,-.131),l(.131,-.165),l(.362,-.017),l(.328,.049),l(.197,.132),l(.51,.016),l(.525,-.099),l(.444,-.247),l(.049,-.065),l(.148,-.083),l(.296,0),l(.065,-.164),l(-.033,-.131),l(-.279,-.066),l(-.296,-.148),l(-.099,-.181),l(.082,-.017),l(.066,-.049),l(.032,-.065),l(-.263,-.066),l(-.361,-.099),l(-.378,-.066),l(-.361,.066),l(-.182,-.066),l(.066,-.181),l(.099,-.197),l(-.066,-.148),l(-.164,-.099),l(-.279,-.082),l(-.23,-.066),l(-.443,-.213),l(-.115,-.23),l(-.164,-.263),l(-.214,-.017),l(-.017,-.099),l(.066,-.131),l(.099,-.115),l(-.132,-.033),l(-.181,.049),l(-.082,-.115),l(-.132,-.181),l(-.345,-.049),l(.049,-.147),l(.033,-.165),l(.099,-.049),l(.115,-.082),l(0,-.083),l(.114,0),l(.066,-.131),l(-.05,-.164),l(-.147,-.099),l(-.197,-.247),l(.131,-.165),l(.033,-.164),l(0,-.083),l(.065,-.115),l(-.049,-.115),l(-.147,.033),l(-.165,-.033),l(-.147,-.099),l(-.099,-.099),l(-.279,-.099),l(-.132,-.131),l(-.542,-.115),l(-.247,.049),l(-.099,-.049),l(-.131,-.049),l(-.23,.083),l(-.147,.099),l(-.165,0),l(-.279,.016),l(-.214,.197),l(-.197,0),l(-.164,-.148),l(-.065,-.148),l(.017,-.099),l(.164,-.099),l(0,-.115),l(-.147,-.017),l(-.296,-.065),l(-.312,-.049),l(-.361,.049),l(-.214,.065),l(-.197,.033),l(-.082,-.148),l(-.132,-.148),l(-.312,-.033),l(-.181,-.016),l(-.197,.131),l(-.229,-.066),l(-.165,-.147),l(.061,-.042),l(.015,-.117),l(.044,-.087),l(-.088,-.233),l(.015,-.189),l(-.131,-.117),l(.059,-.087),l(-.16,-.043),l(-.146,-.102),l(-.029,-.16),l(-.131,-.058),l(-.116,-.102),l(.043,-.073),l(.059,-.087),l(-.073,-.044),l(-.087,-.014),l(-.131,-.073),l(-.146,.015),l(-.204,.059),l(.044,-.102),l(.102,-.073),l(.073,-.087),l(-.029,-.117),l(.072,-.131),l(-.131,-.087),l(.103,-.029),l(.087,-.015),l(.102,-.073),l(.015,-.087),l(.029,-.116),l(.015,-.087),l(-.204,-.058),l(-.087,-.073),l(-.204,-.087),l(-.232,-.073),l(0,-.117),l(.015,-.116),l(-.37,.004),l(-.081,-.106),l(.116,-.058),L(461.402,72),l(.029,-.117),l(.131,0),l(.087,-.116),l(.059,-.102),l(.16,-.058),l(.262,-.043),l(.175,-.073),l(-.059,-.059),l(-.175,-.043),l(-.043,-.146),l(-.015,-.087),l(0,-.073),l(-.088,-.073),l(-.203,-.087),l(-.175,-.233),l(0,-.175),l(.175,-.131),l(-.029,-.16),l(-.073,-.189),l(-.131,-.437),l(-.029,-.16),l(.088,-.16),l(.204,-.131),l(.319,-.131),l(.219,-.204),l(.175,-.277),l(.058,-.131),l(.088,-.043),l(.116,0),l(.189,0),l(.175,-.044),l(.043,-.174),l(-.16,-.131),l(-.145,-.053),l(-.089,-.13),l(-.17,-.038),l(.1,-.253),l(.339,-.038),l(.153,.165),l(.229,.063),l(.188,-.088),l(-.094,-.139),l(.301,-.154),l(.485,.199),l(.296,-.062),l(.312,-.338),l(.311,-.185),l(.75,.106),l(.781,.275),l(.439,0),l(.363,-.154),l(-.386,-.399),l(-.59,-.323),l(-.393,-.03),l(-1.204,.08),l(-.616,-.091),l(-.271,-.108),l(-.299,-.309),l(.258,-.434),l(-.065,-.201),l(-.199,.044),l(.174,-.285),l(1.946,-1.145),l(1.983,-1.195),l(1.385,-.758),l(.591,-.536),l(.43,-.536),l(.105,-.409),l(-.161,-.346),l(-.436,-.392),l(-.703,-.265),l(-1.357,-.499),l(-.439,-.33),l(.327,-.191),l(.542,-.415),l(.057,-.254),l(-.151,-.253),l(-1.286,-1.395),l(-.37,-.509),l(.029,-.37),l(.187,-.403),l(.44,-.535),l(.196,-.356),l(-.772,-1.195),l(-1.402,-1.394),l(.328,-.296),l(1.303,-.777),l(.421,-.364),l(-.543,-.392),l(-.964,-.506),l(-.872,-.194),l(-.563,-.212),l(-.116,-.529),l(.258,-.465),l(.024,-.283),l(.689,-.303),l(1.013,-.672),l(1.023,-.49),l(.77,-.121),l(.824,-.021),l(.514,-.204),l(.404,-.288),l(.617,-.051),l(1.002,-.254),l(.643,-.237),l(.01,.151),l(.255,.386),l(.358,.284),l(.543,.2),l(.919,.082),l(.602,.1),l(.078,.602),l(.695,-.319),l(.421,.049),l(1.083,.048),l(.875,.015),l(.522,.032),l(1.116,-.002),l(1.293,.281),l(2.728,.512),l(.984,.364),l(1.595,.86),l(.583,.214),l(1.48,.246),l(1.296,.212),l(2.018,.623),l(.328,.279),l(-.051,.444),l(.147,.295),l(.426,.294),l(.104,.294),l(-.24,.344),l(-.69,.491),l(-1.092,.54),l(-.816,.262),l(-1.75,.36),l(-.907,.083),l(-1.631,-.013),l(-1.391,-.192),l(-2.038,-.175),l(-1.63,-.192),l(-1.342,-.339),l(-2.256,-.485),l(-1.114,-.112),l(-.476,-.048),l(-.621,-.473),l(-.371,-.163),l(-.771,-.13),l(-.943,.117),l(.307,.163),l(.149,.065),l(.73,.538),l(.482,.146),l(1.109,.601),l(.832,.291),l(.921,.161),l(.634,.242),l(.405,.453),l(-.002,.405),l(-.276,.291),l(-.684,.195),l(.086,.113),l(.208,.531),l(.771,.943),l(.093,.494),l(.155,.207),l(.438,.174),l(1.203,.078),l(.872,.125),l(.499,.619),l(.401,.095),l(1.26,.077),l(.575,.126),l(.364,.079),l(.402,-.128),l(.785,-.097),l(.243,-.302),l(-.001,-.318),l(-.387,-.397),l(-.471,-.079),l(-.455,.096),l(-.447,-.031),l(-.589,-.206),l(-.952,-.795),l(.701,-.674),l(.484,-.001),l(1.116,.479),l(1.441,.333),l(2.09,.427),l(.952,.078),l(.834,-.146),l(.723,.174),l(.261,-.224),l(.05,-.415),l(-.214,-.239),l(-.858,-.656),l(-.348,-.628),l(.285,-.323),l(.19,-.049),l(1.432,-.423),l(1.495,-.359),l(.599,-.244),l(1.133,-.717),l(.172,-.049),l(.462,.064),l(1.829,.29),l(1.41,.533),l(.341,-.001),l(.052,-.065),l(.154,-.503),l(.581,-.767),l(-.048,-.653),l(-.317,-.408),l(-.847,-.163),l(-.3,-.229),l(1.139,-1.005),l(.101,-.247),l(-.205,-.594),l(-.771,-.512),l(.069,-.315),l(.353,-.051),l(1.458,.23),l(2.025,-.12),l(.631,.132),l(.664,.611),l(.616,.445),l(.433,.461),l(-1.045,.051),l(-1.559,.085),l(-.822,.215),l(-.492,.51),l(.191,.18),l(.952,.293),l(.732,.555),l(.804,.194),l(.723,.097),l(1.268,-.133),l(1.33,-.084),l(.301,-.164),l(.257,-.491),l(.291,-.591),l(.284,-.412),l(1.232,-.2),l(1.223,-.414),l(.988,-.216),l(1.924,-.483),l(1.429,-.251),l(1.537,-.318),l(.921,-.3),l(.205,.464),l(.278,.083),l(.571,-.117),l(.487,-.266),l(.148,-.465),l(.386,-.167),l(.718,-.135),l(.859,.065),l(-.18,.399),l(-.058,.597),l(-.858,.084),l(-.178,.149),l(.002,.215),l(.687,.197),l(.507,-.083),l(1.169,-.167),l(.436,-.001),l(.161,.198),l(.23,.049),l(.278,-.133),l(.264,-.216),l(.29,-.431),l(.464,-.183),l(.861,-.118),l(1.049,-.068),l(.768,.032),l(1.075,.23),l(.755,-.018),l(.36,-.083),l(.963,-.467),l(1,-.285),l(.803,-.052),l(.952,.182),l(.326,.166),l(-.631,.45),l(.129,.232),l(.217,.099),l(.632,.131),l(.579,-.018),l(.288,-.232),l(.074,-.398),l(.342,-.084),l(.962,.065),l(.543,-.184),l(.395,-.316),l(.115,-.417),l(-1.37,-1.033),l(.405,-.168),l(.66,-.37),l(.403,-.068),l(.609,.016),l(2.171,.063),l(1.272,.199),l(1.241,.149),l(1.135,.199),l(2.111,.515),l(1.071,.098),l(1.712,.414),l(1.02,.248),l(1.305,.53),l(1.455,.611),l(.864,.379),l(.376,.049),l(.229,-.1),l(1.145,-1.047),l(.236,-.3),l(-.927,.035),l(-.4,-.049),l(-.564,-.232),l(-.365,-.433),l(.027,-.652),l(-.727,-.283),l(-1.987,-.147),l(-.19,-.268),l(.064,-.168),l(.305,-.303),l(.693,-.255),l(.236,-.153),l(.085,-.187),l(-.052,-.833),l(-.251,-.238),l(-1.135,-.066),l(-.232,-.29),l(.328,-.532),l(.359,-.241),l(.391,-.035),l(1.482,-.416),l(1.098,-.485),l(.521,-.416),l(.581,-.608),l(.544,-1.22),l(.637,-.421),l(.374,.069),l(1.562,.155),l(1.613,-.125),l(1.605,-.091),l(.695,.069),l(1.066,-.055),l(.574,.122),l(.309,.279),l(-.018,.332),l(-.423,.836),l(-.348,.348),l(-1.334,.833),l(-.223,.345),l(.752,.342),l(.931,.667),l(.277,.342),l(.21,.818),l(-.174,.222),l(-.575,.375),l(.254,1.179),l(-.058,1.305),l(.263,.583),l(.45,.381),l(1.027,.264),l(.19,.166),l(-.001,.133),l(-.485,.481),l(-.417,.826),l(-.333,.33),l(-.784,.462),l(-1.232,.625),l(-.63,.198),l(-.55,.263),l(.321,.522),l(-.433,.115),L(558,52.195),l(-1.599,-.372),l(-.731,-.08),l(-.97,.034),l(-.601,.115),l(.195,.31),l(.583,.276),l(.738,.21),l(1.569,.208),l(1.133,.079),l(.613,-.05),l(1.188,.144),l(.922,-.034),l(.472,-.358),l(.303,-.358),l(1.352,-.328),l(1.166,-.492),l(.268,-.278),l(.386,-.606),l(.818,-.313),l(.864,-.626),l(.064,-.362),l(-.225,-.561),l(-.609,-.545),l(.244,-.548),l(.237,-.1),l(.677,-.151),l(1.38,-.152),l(1.757,-.003),l(.74,.231),l(.842,.463),l(.151,.778),l(-.34,1.023),l(.302,.279),l(.92,.212),l(1.298,.047),l(.864,-.149),l(.129,-.296),l(-.514,-.18),l(-.797,-.18),l(-.571,.034),l(-.457,-.098),l(.068,-.379),l(1.03,-.382),l(.065,-.249),l(-.218,-.148),l(-.166,-.331),l(-.441,-.763),l(-.511,-.266),l(-.836,-.098),l(-1.093,-.231),l(-.801,-.116),l(-1.288,-.165),l(-.91,.186),l(-.638,.101),l(-1.297,-.181),l(-.896,.019),l(-.015,-.267),l(-.564,-1.071),l(.305,-.657),l(.736,-.697),l(.282,-.46),l(-.134,-.221),l(-1.092,-1.042),l(-.949,-.514),l(-.12,-.189),l(.833,-.554),l(1.213,-.106),l(.998,-.262),l(.744,-.348),l(.172,-.226),l(.169,-.644),l(-.13,-.663),l(.23,.069),l(.64,.051),l(.466,.086),l(.108,.471),l(-.186,.54),l(-.636,.608),l(-.167,.554),l(.14,.448),l(.373,.274),l(.485,.274),l(1.384,.134),l(1.574,.169),l(1.632,.083),l(.819,.409),l(.321,.017),l(.799,-.036),l(-.527,-.89),l(-.521,-.274),l(-1.893,-.1),l(-.931,-.067),l(-.576,-.154),l(-.609,-.448),l(.275,-.329),l(1.374,-.054),l(.444,.172),l(1.145,.084),l(.747,-.157),l(-.09,-.728),l(.408,-.088),l(.84,-.105),l(1.278,-.02),l(1.067,.207),l(1.413,.379),l(1.088,.535),l(1.326,.343),l(.547,.085),l(1.822,.014),l(.727,-.174),l(.138,.345),l(-.781,.38),l(-.696,.259),l(-.248,.771),l(-.129,.972),l(.333,.136),l(.68,-.785),l(.387,-.292),l(.285,.051),l(.604,.528),l(-.088,.749),l(.743,-.205),l(.681,-.273),l(-.044,-.306),l(-.191,-.119),l(-.147,-.358),l(-.748,-.821),l(.188,-.223),l(.686,-.759),l(-.797,-.448),l(-.772,-.258),l(-.93,-.241),l(-.257,-.382),l(-.655,-.051),l(-.979,-.242),l(-1.34,-.207),l(-.307,-.296),l(.062,-.577),l(-.096,-.386),l(-.811,-.667),l(.081,-.247),l(.266,-.16),l(.484,-.125),l(2.31,-.11),l(2.54,-.022),l(2.125,-.128),l(1.421,-.162),l(.475,.317),l(.382,.052),l(.844,-.267),l(1.056,-.286),l(1.413,-.109),l(.589,.194),l(-.957,.338),l(-.451,.407),l(1.737,-.233),l(.521,-.107),l(.955,-.374),l(.27,-.284),l(-.334,-.444),l(-.326,-.177),l(-.925,-.266),l(-.365,-.303),l(-.002,-.232),l(.324,-.539),l(1.176,-.397),l(.966,-.22),l(3.028,-.903),l(.889,-.094),l(.248,-.036),l(.522,-.076),l(1.899,-.096),l(1.663,-.114),l(2.302,-.244),l(2.048,-.263),l(1.595,-.43),l(.855,-.243),l(1.763,.034),l(1.065,-.002),l(.383,.185),l(-.351,.409),l(1.504,.108),l(1.018,-.039),l(1.261,-.188),l(1.345,-.225),l(.95,-.039),l(.982,.166),l(.687,.073),l(.693,-.206),l(.12,-.335),l(-.133,-.167),l(.466,-.337),l(.942,-.077),l(.939,.036),l(1.243,-.377),l(-.618,-.506),l(.122,-.34),l(1.165,-.438),l(1.554,-.383),l(2.23,-.406),l(1.229,-.077),l(.993,.056),l(1.486,-.003),l(.86,.265),l(.045,.266),l(-1.528,.401),l(-.66,.342),l(.488,.15),l(1.83,-.117),l(1.588,.148),l(2.039,-.079),l(.177,.113),l(-.375,.283),l(-1.187,.453),l(-.296,.3),l(1.971,-.004),l(.833,-.02),l(.234,.093),l(1.052,-.545),l(1.366,-.002),l(1.771,-.097),l(.631,.13),l(1.35,-.021),l(1.954,.165),l(1.4,.259),l(1.181,.427),l(.52,.445),l(.726,-.001),l(.854,-.076),l(.422,.5),l(-1.354,.832),l(.241,.128),l(.896,.365),l(-2.329,.859),l(-1.035,.235),l(-1.166,.11),l(-3.404,1.061),l(-3.018,.965),l(-.793,.285),l(-2.388,.375),l(-2.35,.586),l(-2.065,1.126),l(.715,.017),l(1.081,-.247),l(.922,-.458),l(1.663,-.161),l(1.231,-.02),l(2.101,-.268),l(1.879,-.286),l(.879,-.107),l(1.004,-.284),l(-.094,-.389),l(-.492,-.123),l(-.034,-.071),l(.281,-.249),l(.581,-.214),l(.873,.211),l(.603,.389),l(.621,.052),l(.593,.193),l(.737,.052),l(.853,-.055),l(1.155,-.268),l(.499,.07),l(.192,.3),l(.009,.512),l(.522,.404),l(1.422,-.778),l(1.66,-.021),l(1.506,-.145),l(2.354,.014),l(1.919,.155),l(.854,.034),l(1.204,.033),l(-.271,.74),l(.354,.333),l(2.043,.154),l(.848,.121),l(.698,.069),l(1.035,.103),l(2.49,-.145),l(1.209,-.02),l(1.42,.348),l(1.405,-.932),l(-.161,-.352),l(-.038,-.229),l(-.034,-.105),l(1.806,-.48),l(.521,-.019),l(.802,.104),l(1.148,.298),l(.851,.281),l(1.711,.032),l(1.354,-.073),l(1.384,.033),l(1.323,.431),l(.409,.181),l(.058,.386),l(-.52,.088),l(-.268,.036),l(-1.905,.406),l(-2.438,.737),l(-.233,.227),l(.253,.069),l(1.033,.067),l(.957,.016),l(.659,.155),l(.659,.293),l(1.014,.396),l(.583,.172),l(.78,.481),l(1.27,.805),l(1.814,.801),l(1.351,.305),l(.612,-.018),l(.795,-.394),l(.843,-.72),l(1.093,-1.051),l(.601,-.329),l(.29,.017),l(.236,.465),l(.772,.308),l(1.346,.29),l(1.105,.135),l(.848,-.087),l(1.973,-.468),l(.778,-.07),l(.813,.067),l(1.196,.239),l(1.921,.734),l(.315,-.052),l(.186,-.069),l(.491,-.258),l(.221,-.258),l(-.137,-.051),l(.013,-.189),l(.726,-.312),l(.509,-.018),l(.5,.257),l(.575,.188),l(1.302,.032),l(.181,-.5),l(-.194,-.466),l(.15,-.363),l(.093,-.521),l(-1.131,.159),l(-.643,.001),l(-.179,-.104),l(.442,-.296),l(.318,-.087),l(.986,-.089),l(1.021,-.02),l(.832,-.141),l(1.566,-.648),l(.254,0),l(1.76,.241),l(1.561,.137),l(2.036,.188),l(.997,.068),l(.654,.103),l(2.307,.065),l(-1.732,.628),l(.865,.051),l(1.011,-.089),l(.335,.138),l(-.305,.381),l(-.926,.192),l(-.846,.261),l(-.177,.293),l(.664,.033),l(.52,-.122),l(.916,-.14),l(.978,-.33),l(1.62,-.799),l(2.766,.012),l(1.196,.067),l(.903,.172),l(.946,.137),l(.205,.19),l(.221,.104),l(-2.247,.59),l(.559,.137),l(1.674,.289),l(2.174,.202),l(.946,.204),l(.801,.375),l(.367,.427),l(.564,.357),l(.522,.152),l(1.459,-.037),l(1.364,-.105),l(1.138,-.139),l(2.518,-.329),l(2.208,-.107),l(3.008,.131),l(1.515,.134),l(.734,.118),l(1.168,.424),l(.655,.169),l(.525,.338),l(.361,.39),l(-.123,.491),l(-.286,.521),l(.509,.25),l(.764,.065),l(.835,.015),l(.643,.083),l(-.017,.685),l(.419,.416),l(.686,-.168),l(.545,-.435),l(1.211,-.387),l(.348,-.067),l(.35,.049),l(1.696,-.02),l(1.521,-.288),l(.736,.032),l(.588,.434),l(.707,.116),l(1.541,.014),l(2.176,.062),l(.869,-.118),l(1.378,-.504),l(.406,.2),l(.93,.533),l(.396,.216),l(1.095,.265),l(.875,.332),l(.282,.398),l(.612,.148),l(1.556,-.136),l(1.653,-.319),l(.16,-.25),l(-.248,-.333),l(-.805,-.833),l(-.833,-.115),l(.4,-.336),l(.479,-.571),l(1.89,.098),l(1.214,.082),l(1.135,.065),l(1.221,.166),l(.222,.318),l(1.396,-.153),l(2.084,-.054),l(2.304,.013),l(1.292,.148),l(.786,.199),l(1.185,.199),l(1.391,.098),l(.751,.182),l(1.302,.332),l(.747,.065),l(.703,.182),l(1.145,.505),l(0,2.126),l(0,2.222),l(0,2.222),l(0,1.292),l(0,.157),l(0,.576),l(0,.219),l(-1.083,.371),l(-.651,.03),l(-.645,.37),l(-.56,.065),l(-1.044,.065),l(-.355,-.079),l(-.928,-.052),l(-.118,-.343),l(-.271,-.211),l(-.501,.027),l(.241,-.185),l(-.938,.324),l(-.846,.02),l(-.337,-.211),l(-.478,-.079),l(.424,.501),l(-.569,.29),l(.32,.103),l(.942,.205),l(.634,-.36),l(.395,.041),l(.335,.079),l(0,.477),l(.248,.206),l(.76,.269),l(1.059,-.228),l(-.439,.322),l(.741,-.243),l(.065,.336),l(.247,.206),l(.187,.363),l(.068,.189),l(-.722,.522),l(.593,-.064),l(.349,.172),l(.473,.503),l(.501,.157),l(.145,.251),l(-.162,.456),l(.792,-.111),l(-.125,.393),l(.023,.25),l(-.43,.299),l(-.691,.205),l(-.635,-.046),l(-.448,-.14),l(-1.243,-.154),l(-.889,-.077),l(-.347,-.14),l(.123,-.267),l(-.493,-.046),l(-.304,.032),l(-.559,.55),l(-.069,.11),l(-3.06,.913),l(-1.155,.174),l(-.245,0),l(-.43,.203),l(-.219,.188),l(-.719,.22),l(-.991,.033),l(-.308,.11),l(-.48,.405),l(-.462,.203),l(-.946,.033),l(-.854,.622),l(-.24,.279),l(-1.67,.452),l(-.392,.449),l(-1.229,.25),l(-.406,.14),l(-.151,.293),l(.01,.292),l(-.473,.292),l(-.406,.016),l(-.586,-.306),l(-.183,-.262),l(-.169,-.37),l(-.67,-.308),l(-1.074,-.044),l(-1.021,.048),l(-1.159,.172),l(-1.301,.188),l(-.523,.217),l(-1.333,.756),l(-.536,.277),l(-.184,-.138),l(.575,-1.293),l(-.55,.094),l(-.392,-.097),l(-.811,.531),l(-.67,.186),l(-.401,.155),l(-.114,.506),l(-.66,.154),l(-.317,-.168),l(-.253,-.49),l(-.483,-.261),l(-1.024,.636),l(.261,-.204),l(-.557,.062),l(-.283,.092),l(-.628,.522),l(-.141,.261),l(.126,.229),l(.344,.152),l(-.932,.521),l(-.182,.199),l(.342,.167),l(-.647,.352),l(-.88,.55),l(-.626,.503),l(-.298,.35),l(-.01,.531),l(.421,.317),l(.477,.09),l(1.382,-.048),l(.562,.166),l(.11,.167),l(-.436,.394),l(-.752,.455),l(-.181,.302),l(.224,.512),l(.292,.452),l(.786,.089),l(.165,.391),l(-.014,.616),l(-.349,.361),l(-.528,.061),l(-.481,-.209),l(-.017,-.21),l(.388,-.527),l(-.444,-.014),l(-.454,.242),l(-1.014,.843),l(-.56,.675),l(-.237,.599),l(.321,.672),l(.647,.311),l(.154,.237),l(-.294,.387),l(-.688,.313),l(-.956,.031),l(-.664,-.088),l(-.344,.001),l(-.619,.179),l(-.837,.476),l(-.214,.149),l(-.525,.504),l(-.137,.341),l(.111,.281),l(.492,.398),l(.038,.221),l(-.056,.133),l(-.679,.238),l(-.604,.016),L(753.44,82.4),l(-.727,.296),l(-.065,.251),l(.067,.28),l(-.161,.854),l(-.293,.412),l(-.8,.78),l(-1.53,.971),l(-.854,.5),l(-.285,.103),l(-.295,-.614),l(-.198,-.821),l(-.25,-.69),l(-.064,-.794),l(-.351,-.75),l(-.305,-.383),l(-.214,-.915),l(-.514,-1.36),l(-.008,-.578),l(-.154,-.563),l(-.017,-.327),l(-.105,-.193),l(-.262,-.817),l(-.026,-.792),l(.116,-.808),l(.271,-1.396),l(.167,-.226),l(1.185,-.86),l(.716,-.424),l(.57,-.695),l(.14,-.227),l(-.085,-.318),l(-.139,-.166),l(1.632,-.367),l(1.001,-.305),l(.811,-.32),l(1.729,-.884),l(.641,-.412),l(.431,-.428),l(.14,-.335),l(1.784,-.889),l(.872,-.445),l(1.535,-.861),l(.368,-.293),l(.26,-.433),l(1.252,-.435),l(2.106,-.514),l(.257,-.434),l(.773,-.528),l(.086,-.233),l(-.568,-.216),l(.814,-.904),l(-.036,-.483),l(.183,-.391),l(.598,-.204),l(1.729,-.082),l(.513,-.063),l(-.485,-.328),l(-2.065,-.215),l(-.71,.095),l(-1.062,.174),l(-.777,.189),l(.042,.328),l(-.664,.923),l(.125,.202),l(-.04,.14),l(-.662,.11),l(-.479,.11),l(-1.555,.718),l(-1.979,1.042),l(-1.169,.342),l(-.249,-.062),l(.156,-.325),l(.352,-.465),l(-.933,-.076),l(-.16,-.263),l(.252,-.451),l(.442,-.467),l(.207,-.328),l(-.069,-.202),l(-.339,-.031),l(-1.136,.454),l(-.496,.032),l(-.277,-.358),l(-.589,-.17),l(-1.606,.144),l(-1.312,.111),l(-.956,.08),l(-.606,.157),l(-.894,.359),l(-.093,.436),l(.082,.186),l(-1.262,.53),l(-.408,.233),l(.149,.495),l(-1.294,.357),l(-1.019,.434),l(-.84,.479),l(-.496,.461),l(-.332,.46),l(.004,.383),l(.527,.213),l(1.269,.043),l(.278,.275),l(.062,.122),l(-1.152,.139),l(-1.028,.262),l(-1.045,-.059),l(-.698,-.136),l(-.382,.031),l(-.311,.107),l(-.721,.398),l(-.695,-.35),l(-1.112,.383),l(-.747,.139),l(-.487,-.09),l(-.284,-.137),l(.108,-.29),l(.748,-.124),l(.868,-.124),l(.164,-.046),l(-.741,-.64),L(736.444,68),l(-1.06,.017),l(-.854,.155),l(-.353,-.061),l(-.868,-.458),l(-.775,-.029),l(-.745,.047),l(-.704,.246),l(.042,.398),l(-.26,.229),l(-.477,.215),l(-.695,-.243),l(-.408,-.122),l(-1.26,.063),l(-.784,.093),l(-.651,-.075),l(-.887,-.136),l(-.563,.078),l(-.067,.122),l(-.147,.474),l(-.677,.017),l(-.311,-.137),l(-.038,-.382),l(-.203,-.259),l(-1.241,.094),l(-1.014,-.059),l(-1.257,.033),l(-1.158,.063),l(-.836,-.029),l(-.18,.016),l(-1.085,.292),l(-.964,.444),l(-.74,.474),l(-.536,.504),l(-.789,.245),l(-.904,.336),l(-.194,.152),l(-1.047,1.17),l(-1.634,.684),l(-.949,.471),l(-1.157,.711),l(-1.653,1.253),l(-.828,.572),l(-1.573,.873),l(-.893,.376),l(-1.889,.871),l(-.632,.388),l(-.203,.298),l(.018,.357),l(.428,.281),l(.485,.043),l(.918,.013),l(1.046,-.15),l(.656,.043),l(-.329,1.261),l(.016,.415),l(.303,.103),l(.63,-.09),l(.601,-.371),l(.761,.117),l(-.127,.148),L(705.293,81),l(-.112,.222),l(.373,.073),l(1.645,-.018),l(.566,-.238),l(.39,-.519),l(.017,-.638),l(.763,.014),l(.647,-.001),l(.726,.014),l(.951,.265),l(.658,.354),l(.486,.591),l(.847,.575),l(.426,.176),l(.506,.324),l(-.07,.148),l(-.581,.355),l(.453,.221),l(.13,.309),l(-.336,.723),l(.491,.117),l(.215,.235),l(-.291,.515),l(-.348,.397),l(-.532,.559),l(-.724,1.364),l(-.181,.688),l(.057,.219),l(.24,.701),l(-.188,.917),l(-.098,.741),l(-.403,1.408),l(-.146,.493),l(-1.928,1.538),l(-.371,.435),l(-.217,.65),l(-.587,.42),l(-.741,.579),l(-.241,.361),l(-.574,.981),l(-.587,.606),l(-.941,.778),l(-1.784,1.512),l(-.464,.474),l(-.235,.458),l(-.323,.33),l(-.758,.388),l(-.618,.416),l(-.574,.702),l(-.431,.458),l(-.875,.673),l(-.955,.487),l(-1.838,.475),l(-.798,.244),l(-.278,-.427),l(-.519,-.085),l(-.243,.043),l(-.337,-.185),l(-.337,-.513),l(-.663,.272),l(-.464,.101),l(.424,-.586),l(-.624,.173),l(-.506,.486),l(-.649,.543),l(-1.326,1.001),l(-.072,.049),l(-.167,-.393),l(-.298,-.439),l(.111,-.058),l(1.252,-.462),l(.511,-.43),l(.156,-.329),l(-.112,-.299),l(.097,-.128),l(.025,-.385),l(.006,-.613),l(-.062,-.656),l(-.332,-.897),l(.048,-.557),l(1.664,-.982),l(.396,.041),l(.685,.24),l(.679,.225),l(.547,.098),l(.47,-.347),l(.551,-.69),l(.329,-.432),l(.627,-1.08),l(.538,-1.066),l(.278,-.893),l(.291,-.707),l(.66,-.393),l(.566,-.407),l(-.017,-.504),l(-.116,-.389),l(-.064,-.259),l(-.246,-.114),l(-.902,.034),l(-1.181,.208),l(-1.357,.31),l(-.953,.308),l(-.604,.22),l(-1.657,.052),l(-.649,.018),l(-.68,.033),l(-.261,-.446),l(-.44,-1.283),l(-.297,-.866),l(-.205,-.144),l(-2.659,-.839),l(-1.523,-.253),l(-1.247,-.341),l(-.507,-.2),l(-.436,-.389),l(-.927,-1.903),l(-.94,-1.588),l(-1.087,-2.384),l(-.742,-.952),l(-.763,-.467),l(-.539,-.026),l(-1.386,.125),l(-.683,-.188),l(-1.037,-.481),l(-1.148,-.215),l(-.917,.049),l(-1.203,.109),l(-.836,.123),l(-1.854,.143),l(-.602,.136),l(-.478,.165),l(-1.193,.787),l(-.375,.282),l(-.119,.25),l(.822,-.078),l(.558,.026),l(.465,.306),l(.107,.249),l(-.167,.794),l(-1.371,.608),l(-.599,.545),l(-.667,.779),l(-.416,.543),l(-.422,.426),l(-.103,.249),l(.062,.146),l(.35,.348),l(.056,.306),l(-.123,.233),l(-.779,.339),l(-2.44,.752),l(-.438,.089),l(-.343,.016),l(-1.126,-.574),l(-.452,-.172),l(-.046,-.018),l(-.431,-.168),l(-.622,.018),l(-1.228,.297),l(-.86,-.169),l(-.34,-.129),l(-.751,-.506),l(-.74,-.156),l(-.609,.047),l(-.333,.002),l(-1.165,.487),l(-.755,.498),l(-.447,.394),l(-.604,.264),l(-.526,.163),l(-1.147,.136),l(-.867,.106),l(-.532,.075),l(-1.018,.063),l(-1.602,.11),l(-.739,-.039),l(-.984,-.082),l(-.905,-.241),l(-1.318,-.254),l(-.812,-.373),l(-1.132,-.313),l(-.623,-.331),l(-1.333,-.75),l(-.769,-.229),l(-1.423,-.022),l(-1.172,-.037),l(-.796,.077),l(-2.48,.538),l(-.673,-.113),l(-1.643,-.531),l(-.421,-.333),l(-.408,-.451),l(-.182,-.481),l(-.004,-.541),l(-.145,-.204),l(-.767,-.143),l(-.989,-.317),l(-.702,-.231),l(-1.748,-.328),l(-1.036,-.185),l(-1.028,-.098),l(-.84,-.201),l(-1.269,.96),l(-.905,.839),l(-.098,.293),l(.409,.86),l(.396,.304),l(.116,.204),l(-.163,.526),l(-.744,.572),l(-.31,.162),l(-.755,.28),l(-.562,.018),l(-.576,-.186),l(-.312,-.114),l(-.875,-.068),l(-.85,.004),l(-.719,-.083),l(-1.458,.008),l(-.699,-.113),l(-.393,-.406),l(-.694,-.755),l(-.831,-.083),l(-1.842,-.122),l(-.932,-.156),l(-.953,-.097),l(-.84,.18),l(-1.512,.476),l(-1.143,.341),l(-.787,.398),l(-.971,.692),l(-.017,.012),l(-.727,.381),l(-.603,.148),l(-1.387,.08),l(-.599,.207),l(-.799,.425),l(-.154,.044),l(-.244,.074),l(-.569,.003),l(-.228,.014),l(-.064,-.145),l(-.589,0),l(-.294,-.478),l(-.441,-.331),l(.073,-.331),l(-.625,.184),l(-.478,.368),l(-.993,-.074),l(-.882,-.073),l(-.662,-.699),l(-.588,-.552),l(-.956,-.147),l(-.331,-.625),l(-.772,-.588),l(-.698,-.441),l(-.993,.037),l(-.771,.221),l(-.993,.221),l(-.992,0),l(-.589,0),l(-.184,-.184),l(-.258,-.257),l(-.478,0),l(0,-.368),l(-.367,-.331),l(-.92,0),l(-.367,.515),l(-.331,.257),l(-.515,.257),l(-1.104,-1.434),l(-.846,-.882),l(-1.69,-2.133),l(-1.066,-1.029),l(-1.287,-.772),l(-.809,-.294),l(-1.104,-.588),l(.11,-.368),l(.515,-.11),l(0,-.441),l(-.809,.074),l(-.515,.22),l(-.772,.221),l(-.956,.515),l(-1.103,.257),l(-.772,.441),l(-.294,.294),l(-.552,-.184),l(-.441,-.037),l(-.771,.073),l(-.441,.11),l(-.331,-.184),l(.331,-.441),l(.441,-.184),l(.146,-.294),l(-.367,0),l(-.441,.221),l(-.478,-.11),l(-.405,-.294),l(-.478,-.037),l(-.184,.147),l(-.147,.147),l(-.367,-.221),l(-.295,-.368),l(-.294,-.11),l(-.331,.221),l(-.367,-.074),l(-.368,.147),l(-.44,-.11),l(-.295,.147),l(-.478,-.074),l(-.184,-.257),l(.33,-.037),l(-.073,-.331),l(.147,-.257),l(.11,-.331),l(-.515,-.22),l(-.147,-.221),l(.037,-.331),l(-.368,-.404),l(-.882,.037),l(-.625,.11),l(-.772,-.257),l(-.515,-.11),l(-.919,-.147),l(-.735,.037),l(-.11,.221),l(-.589,.184),l(-.515,.037),l(0,.294),l(-.367,.368),l(-.625,.074),l(-1.876,.073),l(-2.021,.405),l(-1.177,.037),l(-.625,.331),l(-.221,.331),l(-.331,-.073),l(-.588,.073),l(-1.545,.11),l(-.735,.11),l(-1.029,.037),l(-1.396,.405),l(-.368,.184),l(-.772,0),l(-.515,0),L(537.304,80),l(-.33,.074),l(-.185,.515),l(.074,.441),l(.294,.221),l(-.294,.074),l(0,.331),l(1.065,.11),l(.956,.294),l(-.11,.257),l(-.515,.073),l(-1.103,-.147),l(-.698,.184),l(-.662,.515),l(.146,.257),l(.441,.478),l(-.331,.294),l(-.588,.147),l(-.735,.368),l(-.467,.067),l(.164,.274),l(.239,0),l(.377,.137),l(-.068,.171),l(.377,.137),l(.651,.069),l(.274,.308),l(1.165,.171),l(.24,.24),l(-.138,.686),l(-.137,.309),l(-1.577,.411),l(-.959,-.034),l(-.343,-.343),l(-.24,0),l(-.171,.309),l(-.651,.343),l(-.411,-.171),l(-.754,-.137),l(-.926,-.309),l(-.274,-.548),l(-.754,-.103),l(-1.062,.103),l(-.137,.412),l(-.617,.068),l(-.651,-.411),l(-.65,-.035),l(-.823,-.068),l(-.514,.377),l(-.377,.343),l(-.274,.274),l(-.686,.171),l(-.411,-.24),l(-.686,-.137),l(-.582,-.548),l(-.72,-.068),l(.034,.24),l(.205,.48),l(-.239,.274),l(-.274,-.137),l(-.068,-.583),l(-.411,-.274),l(-.789,-.343),l(-.582,-.206),l(0,-.343),l(-.96,-.171),l(-.617,.069),l(-.788,-.035),l(-.411,-.514),l(-.411,-.069),l(-.617,.24),l(-.273,.137),l(-.651,.137),l(-.309,-.274),l(-.479,0),l(-.651,-.069),l(-.515,.309),l(-.548,.343),l(-.788,.377),l(-.549,.068),l(-.514,.171),l(-.309,.309),l(-.172,.24),L(509.58,87.5),l(-.479,.206),l(.068,.445),l(.171,.411),l(-.068,.446),l(-.411,.24),l(-.651,0),l(-.514,-.411),l(-.48,-.548),l(-.514,-.24),l(-.411,.069),l(-.103,.308),l(-.343,.549),l(-.823,.137),l(-.205,1.303),l(.343,.171),l(.239,.274),l(-.239,.206),l(-.446,.274),l(-.65,1.165),l(1.37,.343),l(.138,.377),l(-.068,.309),l(.514,.514),l(.103,-.343),l(.583,.206),l(.343,-.034),l(.514,.034),l(.515,.445),l(.479,.206),l(.343,.514),l(.96,1.131),l(-.138,.103),l(-.445,-.103),l(-.309,-.103),l(-.343,.103),l(.068,.308),l(.857,.377),l(.616,.19),l(-.167,.2),l(-.399,.28),l(-.38,.12),l(-.12,0),l(0,.14),l(0,.22),l(-.14,.08),l(-.3,-.2),l(-.34,.2),l(-.399,.26),l(-.64,.12),l(-.319,.08),l(-.26,-.08),l(-.181,-.08),l(-.1,.04),l(-.06,.16),l(.12,.26),l(-.221,.2),l(-.18,.3),l(-.18,.319),l(-.319,.42),l(-.18,.28),l(-.32,.16),l(-.34,.24),l(-.14,.32),l(.08,.2),l(.34,.2),l(.319,.04),l(.18,.3),l(.24,.04),l(.239,.34),l(.28,.419),l(-.06,.38),l(-.101,.2),l(.061,.16),l(.1,-.2),l(.1,-.34),l(.12,-.22),l(.16,-.02),l(-.141,.439),l(-.22,.36),l(.061,.4),l(.12,.1),l(-.16,.2),l(-.04,.4),l(.38,.24),l(.119,.1),l(.12,.52),l(.28,.06),l(.359,.42),l(.2,.28),l(.439,.419),l(.18,.36),l(.359,.06),l(.047,.146),l(-.292,.449),l(-.496,.284),l(-.283,.094),l(-.308,.331),l(-.165,.213),l(-.379,.047),l(-.449,-.142),l(-.591,-.094),l(0,-.308),l(-.283,-.284),l(-.118,0),l(-.095,-.118),l(-.473,-.284),l(-.142,-.189),H(504.5,0),l(-.213,.047),L(504.264,107),l(-.229,.023),l(-.126,-.189),l(-.236,-.071),l(-.236,.023),l(-.284,-.047),l(-.26,-.094),l(-.284,-.166),l(-.354,-.284),l(.118,-.307),l(.118,-.189),l(-.118,-.142),l(-.354,-.024),l(-.378,0),l(-.213,-.166),l(-.189,-.118),l(-.212,0),l(-.143,-.094),l(-.236,-.118),l(-.118,0),l(-.095,.071),l(-.142,.166),l(-.188,-.142),l(-.261,-.071),l(-.354,0),l(-.213,.071),l(-.094,.095),l(-.166,.166),l(-.283,0),l(-.261,.118),l(-.212,-.071),l(-.261,-.118),l(.048,-.118),l(.142,-.118),l(-.308,-.119),l(-.236,-.118),l(-.354,-.071),l(-.52,-.118),l(-.284,-.213),l(-.095,-.142),l(-.354,-.166),l(-.283,.047),l(-.189,0),l(-.401,-.166),l(-.544,0),l(-.426,.095),l(-.307,0),l(-.355,-.047),l(-.307,-.071),l(-.261,-.095),l(-.212,-.166),l(-.213,0),l(-.331,0),l(-.189,-.047),l(-.188,-.094),l(-.284,-.142),l(-.283,-.095),l(-.449,-.023),l(-.402,-.023),l(-.07,-.047),l(-.284,-.047),l(-.26,.166),l(-.112,.309),l(-1.421,-1.012),l(-1.188,-.842),l(-.817,-.385),l(-.62,-.084),l(-.373,-.157),l(-.509,-.5),l(-.236,-.057),l(-.338,.159),l(-.329,-.042),l(-.347,-.515),l(-.795,-.674),l(.595,-.188),l(.519,-.001),l(.445,-.073),l(.1,-.519),l(.359,-.476),L(485,97.85),l(.526,-.03),l(.516,-.131),l(-.432,-.532),l(-.654,-.273),l(-.474,-.36),l(.243,-.116),l(.367,-.03),l(.82,-.117),l(.715,-.348),l(1.244,-.436),l(-.196,-.375),l(-.076,-.058),l(-.799,.088),l(-1.312,.175),l(.012,-.126),l(.021,-.112),l(0,-.224),l(.09,-.514),l(.224,-.089),l(.357,-.022),l(.38,-.134),l(.223,-.179),l(.022,-.179),l(.269,0),l(.736,-.045),l(.805,.157),l(.335,-.134),l(0,-.156),l(.156,-.291),l(.156,-.491),l(-.066,-.067),l(-.09,-.201),l(-.045,-.179),l(-.044,-.134),l(-.179,-.067),l(-.156,-.067),l(.044,-.224),l(.045,-.179),l(.246,0),l(.312,0),l(.134,-.156),l(-.29,-.044),l(-.269,-.089),l(-.223,-.246),l(.312,-.044),l(.357,-.201),l(.156,-.067),l(.201,-.089),l(.045,-.224),l(-.09,-.179),l(-.111,-.089),l(.022,-.179),l(.089,-.111),l(-.156,-.089),l(-.201,.089),l(-.134,.044),l(-.269,0),l(-.357,-.156),l(-.111,-.224),l(-.469,-.022),l(-.291,-.089),l(-.201,-.179),l(-.357,.067),l(-.268,-.112),l(-.469,-.112),l(-.425,-.067),l(-.29,-.268),l(-.224,.067),l(-.045,.157),l(-.29,.134),l(-.224,-.112),l(-.179,-.179),l(-.402,-.044),l(-.022,-.134),l(-.201,-.179),l(0,-.134),l(-.268,-.179),l(-.111,-.156),l(-.357,.067),l(-.536,.134),l(-.269,0),l(-.312,.112),l(-.425,.112),l(-.179,-.156),l(-.179,-.022),l(-.201,.067),l(-.469,-.291),l(-.268,-.067),l(-.47,.067),l(-.268,.179),l(-.291,-.29),l(-.179,-.089),l(-.089,-.224),l(.089,-.179),l(-.089,-.246),l(-.224,-.268),l(0,-.357),l(-.402,0),l(0,-.312),l(-.38,-.022),l(-.514,.067),l(-.156,-.112),l(-.647,0),l(-.269,-.29),l(-.111,-.357),l(-.134,-.291),l(.312,-.134),l(.312,.022),l(0,-.268),l(-.312,-.156),l(-.246,-.156),l(-.134,-.201),l(-.246,-.335),l(-.312,-.134),l(-.201,-.268),l(-.514,.134),l(-.692,-.112),l(-.67,.223),l(-.536,.022),l(-.536,-.246),l(-.134,.268),l(-.179,.291),l(-.313,.156),l(-.469,-.022),l(-.357,-.089),M(527.156,37.071),l(-.59,-.14),l(-.955,-.21),l(-1.128,-.139),l(-.739,.054),l(-.959,.037),l(-.732,.143),l(-.411,-.105),l(-1.025,-.476),l(.737,-.303),l(1.21,-.429),l(.654,-.09),l(1.549,-.002),l(.135,-.357),l(-.728,-.338),l(.351,-.269),l(.419,-.144),l(.676,-.02),l(.852,-.181),l(-.25,-.161),l(-.526,-.233),l(1.539,-.895),l(.513,-.129),l(.226,.073),l(.892,.017),l(.981,-.535),l(.863,-.333),l(1.02,-.261),l(.975,-.15),l(1.305,-.113),l(1.274,.053),l(.738,-.15),l(.786,-.615),l(.273,.018),l(.873,-.132),l(1.722,.276),l(.471,-.038),l(1.93,-.321),l(.958,-.039),l(2.184,-.247),l(1.864,-.116),l(.771,-.564),l(.376,-.152),l(2.511,-.137),l(1.965,-.079),l(.471,.131),l(.442,.225),l(.154,.357),l(-.812,.47),l(-.541,.169),l(-1.346,.319),l(-2.609,.433),l(-4.329,.49),l(-2.187,.281),l(-2.122,.299),l(-1.842,.316),l(-2.102,.242),l(-.941,.203),l(-.288,.274),l(.644,.216),l(-.422,.217),l(-.943,.361),l(-.527,.037),l(-2.047,-.068),l(-.432,.18),l(-.119,.233),l(.621,.249),l(-.331,.233),l(-1.206,.448),l(-.402,-.142),l(-.752,-.087),l(-.592,.304),l(.877,.283),l(.052,.319),l(-1.094,.657),l(-.822,.284),M(517.491,38.443),l(1.041,-.37),l(.512,-.299),l(.428,-.212),l(1.426,-.021),l(1.316,-.249),l(.987,-.02),l(1.412,-.091),l(.551,.069),l(.988,.227),l(-.063,.176),l(-.463,.528),l(-.302,.158),l(-.697,.071),l(-.443,.228),l(-.233,.385),l(.006,.818),l(.445,1.039),l(.957,.826),l(.505,.308),l(.775,.307),l(1.162,.392),l(-.028,.282),l(-2.62,-.089),l(-.844,.053),l(-.917,.326),l(-.596,.086),l(-.676,-.494),l(-.382,-.034),l(-1.091,.088),l(-.673,-.102),l(-.031,-.359),l(1.347,-.362),l(.073,-.24),l(-.102,-.017),l(-.944,-.273),l(-1.442,-.411),l(-1.519,-.17),l(-.33,.156),l(-.624,.122),l(-.681,-.033),l(-.625,-.396),l(-.114,-.415),l(.229,-.312),l(.39,-.209),l(.344,-.036),l(.318,.104),l(.65,.016),l(.518,-.192),l(1.121,-.768),l(.243,-.35),l(-.322,0),l(-.981,-.243),M(.125,56.089),l(0,-.562),l(0,-.576),l(0,-.157),l(0,-1.292),V(0,51.28),l(0,-2.222),l(0,-2.12),l(2.917,.61),l(1.693,.598),l(.933,.181),l(3.819,.99),l(1.059,.395),l(.204,.149),l(.074,.214),l(.445,.429),l(.406,.789),l(-.209,.428),l(1.034,.8),l(.982,.26),l(-.02,-.18),l(.297,-.148),l(-.051,-.196),l(-.638,-.392),l(.016,-.542),l(.077,-.296),l(1.026,-.183),l(.984,.278),l(.573,.098),l(.767,.064),l(1.003,-.117),l(.933,.13),l(.93,.425),l(.694,.359),l(1.676,.684),l(.32,.081),l(.584,.179),l(.43,.211),l(.09,.13),l(-.343,.033),l(-1.026,-.096),l(-.364,.034),l(-.808,.798),l(-1.539,-.468),l(.138,.178),l(.438,.227),l(.465,.324),l(-1.177,-.111),l(-1.008,.05),l(-1.202,-.387),l(-.708,-.096),l(.135,.129),l(.289,.259),l(.084,0),l(.561,.259),l(.205,.307),l(.131,.453),l(-.056,.339),l(-.814,.05),l(-.805,.065),l(-.189,.161),l(.5,.865),l(-.115,.272),l(-1.04,-.078),l(-.397,.081),l(-1.193,-.174),l(-.264,-.352),l(-1.795,-.51),l(-.253,.273),L(9.85,55.79),l(-.276,-.161),l(-.265,-.403),l(.174,-.178),l(-.321,-.42),l(-.87,-.339),l(-.565,-.063),l(-.762,.034),l(-.858,.229),l(-1.343,.084),L(3.57,54.443),l(.059,-.325),l(-.155,-.325),l(-.618,-.487),L(1.958,53.43),l(-.45,.409),l(-.655,1.228),l(-.166,.715),l(-.562,.307), -N(449.401,22.792),l(-1.596,-.014),l(-2.019,-.016),l(-1.739,.063),l(-.764,.061),l(-1.972,-.316),l(.812,-.456),l(.826,-.172),l(.735,-.453),l(1.148,-.588),l(1.354,.691),l(.998,.105),l(1.116,-.088),l(.9,.084),l(.704,.341),l(.865,-.323),l(.53,-.454),l(.868,-.306),l(-.311,.823),l(.086,.32),l(.851,-.001),l(.991,-.495),l(1.061,-.261),l(.803,.128),l(.559,.472),l(.705,.041),l(2.007,-.111),l(1.543,.189),l(.551,.376),l(-.507,.201),l(-2.004,.622),l(-1.623,.38),l(-1.069,.062),l(-.976,.14),l(-1.324,.366),l(-6.271,-.097),l(-.033,-.377),l(1.492,-.26),l(.702,-.677),M(430.027,22.752),l(.068,.697),l(.252,.119),l(1.694,.155),l(.221,-.377),l(.13,-.418),l(.573,-.141),l(.523,-.041),l(.949,.477),l(1.192,.771),l(.798,.235),l(.568,-.218),l(-.222,-.296),l(-.46,-.356),l(-.327,-.477),l(-.04,-.22),l(.91,-.407),l(1.001,.103),l(.485,.18),l(1.278,.018),l(.586,.179),l(-.08,.419),l(-.169,.298),l(.104,.159),l(.549,.118),l(.743,-.338),l(.44,-.1),l(.662,.396),l(.678,.335),l(.785,.156),l(.948,.117),l(1.672,.429),l(.498,.234),l(-1.305,.277),l(-1.981,.218),l(-.696,.293),l(-.731,1.144),l(-.885,.885),l(-1.243,.117),l(-.766,.535),l(-.455,.589),l(-.029,.378),l(-.786,.209),l(-.556,-.018),l(-1.593,-.355),l(-1.883,-.507),l(-1.365,-.568),l(.651,-.364),l(1.565,-.041),l(1.788,-.137),l(.944,-.386),l(-.652,-.249),l(-1.822,.139),l(-1.566,.118),l(-1.694,.042),l(-.502,-.519),l(.959,-.06),l(1.371,-.215),l(2.149,-.314),l(1.547,-.45),l(-2.525,-.405),l(-.881,-.292),l(-.589,.138),l(-1.036,.646),l(-1.069,.293),l(-.562,.059),l(-1.236,-.172),l(-.338,-.174),l(-1.05,-.368),l(-.807,-.233),l(-.698,-.41),l(1.698,-.396),l(-.817,-.571),l(-1.359,.319),l(-.467,-.078),l(-.924,-.751),l(.812,-.36),l(.516,-.021),l(1.075,-.122),l(1.017,.038),l(.577,-.061),l(1.188,-.042),M(425.42,68.82),l(-.148,-.21),l(-.629,.132),l(-.134,-.026),l(-.249,-.237),l(-.239,-.343),l(.188,-.158),l(-.143,-.291),l(-.361,.185),l(-.062,.29),l(.113,.237),l(-.147,.105),l(-.339,.316),l(-.086,.185),l(-.521,.105),l(-.533,-.131),l(-.781,.342),l(.057,.131),l(-.502,.289),l(-.498,.263),l(-1.658,.813),L(418.697,71),l(-.274,.052),l(-.271,0),l(-2.111,.209),l(-.188,-.236),l(-.33,-.131),l(-.183,.209),L(414.976,71),l(.384,-.184),l(-.935,-.236),l(-.794,-.341),l(-.574,-.052),l(-.479,-.578),l(.292,-.368),l(-.126,-.21),l(.34,.026),l(.085,.316),l(.284,-.21),l(.667,.263),l(-.244,-.197),l(.127,-.145),l(.5,-.092),l(-.479,.026),l(-.245,.105),l(-.263,-.184),l(-.111,-.132),l(.579,-.276),l(.455,-.185),l(-.482,.066),l(-.317,-.132),l(.441,-.237),l(.083,-.237),l(-.661,.475),l(-.036,-.264),l(-.265,-.171),l(.005,.211),l(.076,.171),l(-.419,.158),l(-.41,0),l(.014,-.277),l(-.15,.264),l(-.235,-.079),l(-.2,-.448),l(.658,-.449),l(.08,.436),l(.068,-.317),l(.438,.158),l(.211,-.092),l(-.166,-.106),l(.674,-.079),l(.479,-.251),l(-.611,.159),l(-.48,0),l(-.335,-.159),l(.196,-.132),l(.387,-.146),l(.196,-.471),l(-.821,-.014),l(-.546,.094),l(-.406,-.309),l(.368,-.14),l(.643,-.404),l(-.212,-.186),l(-.445,.063),l(-.399,-.062),l(-.211,-.217),l(.284,-.482),l(.619,-.265),l(-.595,-.248),l(-.225,-.374),l(.272,-.188),l(-.089,-.687),l(.106,-.094),l(.594,-.063),l(.392,-.045),l(.455,.044),l(.082,-.11),l(-.255,-.134),l(-.425,-.118),l(-.228,-.17),l(.098,-.188),l(.211,-.125),l(.575,-.064),l(.511,-.346),l(.567,.109),l(.498,-.111),l(.179,-.55),l(.835,.093),l(.668,.125),l(.571,-.252),l(-.989,-.234),l(-.266,-.314),l(.236,-.143),l(1.151,.014),l(.851,-.08),l(.538,.219),l(.06,-.473),l(.477,-.27),l(.297,-.333),l(.78,-.175),l(.438,.189),l(.138,.079),l(.5,-.476),l(.869,-.413),l(.084,-.429),l(.437,-.398),l(1.497,-.735),l(.335,-.192),l(.235,-.048),l(.481,.175),l(.335,-.001),l(.319,-.224),l(-.225,-.223),l(.141,-.128),l(.488,-.224),l(.457,-.305),l(.481,-.483),l(.245,.064),l(.676,-.017),l(-.067,-.612),l(-.471,-.112),l(.434,-.405),l(.511,-.648),l(.841,.063),l(.047,-.341),l(.096,-.228),l(.954,-.116),l(-.396,-.357),l(-.327,-.097),l(-.193,-.146),l(.164,-.245),l(.313,-.246),l(.464,.048),l(.888,-.067),l(-.543,-.522),l(.249,-.082),l(.435,-.034),l(.707,-.263),l(.592,-.067),l(.308,-.208),l(-.358,-.064),l(-.105,-.187),l(.289,-.1),l(.616,-.33),l(.557,.032),l(.351,.098),l(.434,-.264),l(.369,-.031),l(.035,-.176),l(-.421,-.321),l(.627,-.232),l(.146,-.275),l(.336,.01),l(.359,.297),l(.397,.082),l(.526,-.381),l(-.281,-.656),l(.438,.065),l(.698,-.058),l(.207,-.174),l(-.604,-.315),l(.411,-.224),l(.816,-.251),l(.093,-.257),l(.261,-.194),l(.73,-.135),l(.074,.067),l(.274,-.051),l(.102,-.067),l(.492,-.67),l(.521,.25),l(.96,-.153),l(.411,.133),l(.265,.1),l(.646,.065),l(.536,-.419),l(.747,-.84),l(.286,-.085),l(.16,.168),l(-.178,.286),l(-.182,.587),l(.791,-.454),l(.403,-.572),l(.819,-.085),l(.688,-.439),l(.437,.117),l(.665,.353),l(.567,-.643),l(.318,-.272),l(.976,.1),l(1.019,.506),l(.197,-.152),l(.479,-.595),l(.709,-.444),l(.283,-.052),l(.562,.067),l(.338,-.308),l(.469,-.291),l(.619,-.189),l(1.2,-.173),l(.984,.015),l(-1.337,.755),l(-.24,.273),l(-.107,.646),l(.42,.084),l(.691,-.579),l(1.53,-.941),l(.764,-.275),l(.028,.257),l(-.004,.905),l(.704,-.172),l(.438,-.239),l(.855,-.874),l(.959,-.104),l(.586,-.001),l(.216,.154),l(-.383,.257),l(-.335,.257),l(.074,.239),l(-.319,.41),l(.921,.118),l(.221,-.443),l(.902,-.651),l(.421,.017),l(1.682,.561),l(.667,.135),l(.935,.015),l(.649,.237),l(.1,.272),l(-1.216,.393),l(-1.148,.036),l(-2.233,-.047),l(.193,.084),l(.585,.304),l(1.058,.284),l(.383,.302),l(.728,-.052),l(.679,-.102),l(.831,.032),l(.708,.25),l(-.404,.288),l(-.514,.204),l(-.824,.021),l(-.77,.121),l(-1.023,.49),l(-1.013,.672),l(-.689,.303),l(-.001,-.2),l(.096,-.367),l(.874,-.923),l(-.044,-.268),l(-.88,-.348),l(-.672,-.114),l(-1.125,-.431),l(-.556,.003),l(-.555,.07),l(-2.004,.095),l(-.865,.374),l(-.567,.422),l(-.26,.437),l(-.079,.501),l(-.188,.5),l(-1.25,.472),l(-.582,.368),l(-.31,-.148),l(-1.288,-.492),l(-1.657,.225),l(-1.411,-.042),l(-.536,-.13),l(-.861,-.595),l(-.994,-.612),l(-.486,-.082),l(-.355,.103),l(-1.012,.656),l(-.114,-.063),l(-.41,-.031),l(-.865,.038),l(-.281,1.066),l(-.164,.449),l(-.271,.25),l(-.323,-.015),l(-.67,-.129),l(-.972,-.144),l(-1.731,-.389),l(-.168,.183),l(-.021,.663),l(-.083,.199),l(-.318,.299),l(-.695,.004),l(-.871,-.095),l(-.279,-.015),l(-.465,.167),l(-1.484,1.176),l(.05,.213),l(.171,.507),l(-.188,.345),l(-.615,.346),l(-1.325,.919),l(-.687,.442),l(-.981,.021),l(-.121,.244),l(-.06,.971),l(-.32,.598),l(-.383,.469),l(-.574,.499),l(-.495,.545),l(.339,.125),l(.381,.269),l(.252,.587),l(-.17,.176),l(-.44,.177),l(-.733,.036),l(-.932,-.027),l(-.618,.114),l(-.613,.257),l(-.617,.479),l(-.389,.492),l(-.077,.664),l(-.349,1.093),l(.65,.729),l(-.335,1.171),l(.582,.39),l(.715,.186),l(.297,.243),l(-.432,.67),l(-.941,.16),l(.571,.735),l(.26,.427),l(-.249,.346),l(-.029,.532),l(-.769,.384),l(-.414,.013),l(-.117,.423),l(-.506,.224),l(.22,.831),l(-.324,.737),l(-.41,.013),l(-.15,-.342),l(-.293,-.132), -N(464.349,47.431),l(-.024,.283),l(-.258,.465),l(.116,.529),l(.563,.212),l(.872,.194),l(.964,.506),l(.543,.392),l(-.421,.364),l(-1.303,.777),l(-.328,.296),l(1.402,1.394),l(.772,1.195),l(-.196,.356),l(-.44,.535),l(-.187,.403),l(-.029,.37),l(.37,.509),l(1.286,1.395),l(.151,.253),l(-.057,.254),l(-.542,.415),l(-.327,.191),l(.439,.33),l(1.357,.499),l(.703,.265),l(.436,.392),l(.161,.346),l(-.105,.409),l(-.43,.536),l(-.591,.536),l(-1.385,.758),l(-1.983,1.195),l(-1.946,1.145),l(-.174,.285),l(-.935,.206),l(-1.195,.188),l(-.149,.181),l(-.506,-.217),l(-.518,.146),l(-.052,.134),l(-.688,-.07),l(-.193,-.108),l(.057,-.387),l(-.241,.527),l(-.268,.14),l(-.633,.047),l(-.328,.03),l(-.1,.267),l(-.589,-.326),l(-.29,.275),l(-.676,.064),l(-.34,.178),l(-.052,-.127),l(-.504,.108),l(-.504,.108),l(-.211,.266),l(-.311,-.152),l(-.672,.126),l(-.04,-.114),l(-.658,.215),l(-.547,.013),l(-.482,.025),l(-.487,-.253),l(-.223,-.274),l(.273,-.34),l(-.846,.017),l(-.517,.177),l(.065,-.382),l(-.446,.076),l(-.644,-.271),l(-.409,-.061),l(-.415,-.231),l(-.26,-.403),l(-.036,-.714),l(.158,-.374),l(.05,-.436),l(.09,-.234),l(-.347,-.483),l(-.431,-.375),l(.3,-.658),l(-.02,-.392),l(-.305,-.204),l(-.37,-.093),l(.062,-.299),l(.295,-.331),l(.637,-.285),l(.144,-.189),l(-.113,-.331),l(.382,-.143),l(.633,.125),l(.274,.063),l(.483,-.222),l(.303,-.427),l(.104,-.459),l(.207,-.27),l(.301,.316),l(.27,0),l(1.678,-1.114),l(1.142,-.654),l(.835,-.576),l(1.026,-.401),l(.874,.03),l(.06,-.304),l(-.13,-.144),l(-.357,-.16),l(.119,-.371),l(.146,-.387),l(-.329,-.274),l(-1.139,-.095),l(-.836,-.451),l(-.594,-.024),l(-.113,-.234),l(-.327,-.307),l(-.208,-.535),l(.5,-.8),l(-.028,-.392),l(-.405,-.685),l(-.507,-.637),l(.004,-.526),l(.062,-.413),l(-.77,-.558),l(-.508,-.229),l(-1.583,-.207),l(-1.085,-.292),l(-1.286,-.658),l(-.616,-.463),l(-.146,-.033),l(1.012,-.656),l(.355,-.103),l(.486,.082),l(.994,.612),l(.861,.595),l(.536,.13),l(1.411,.042),l(1.657,-.225),l(1.288,.492),l(.31,.148),l(.582,-.368),l(1.25,-.472),l(.188,-.5),l(.079,-.501),l(.26,-.437),l(.567,-.422),l(.865,-.374),l(2.004,-.095),l(.555,-.07),l(.556,-.003),l(1.125,.431),l(.672,.114),l(.88,.348),l(.044,.268),l(-.874,.923),l(-.096,.367),l(.001,.2), -N(453.795,53.873),l(-.23,-.004),l(-.975,.164),l(-.447,.098),l(-.902,-.387),l(-.339,-.178),l(-.347,.114),l(-.641,.374),l(-.542,.599),l(-.309,.146),l(-.658,.018),l(-.545,.355),l(.325,.241),l(.146,.192),l(-.355,.273),l(-.907,.401),l(.317,.271),l(.385,.159),l(.33,.302),l(-.749,.367),l(-.405,.43),l(-.368,.461),l(-1.591,.669),l(-.699,.286),l(-.456,-.205),l(-.326,.08),l(-.538,.539),l(-.646,.144),l(-.663,.348),l(-.217,.284),l(-.191,.142),l(-.746,.033),l(-.221,-.031),l(.151,.535),l(-.484,.425),L(439,61.33),l(.216,.533),l(.243,.25),l(-.244,.955),l(-.498,.063),l(-.217,.204),l(.189,.757),l(-.009,.544),l(.381,.444),l(-.287,.175),l(.926,.082),l(.225,.187),l(.499,-.082),l(.652,.594),l(.428,.314),l(.86,.163),l(.198,.406),l(.32,.139),l(.014,.335),l(-.391,0),l(-.508,.323),l(-.861,.3),l(-.492,.162),l(-.521,-.012),l(-.146,-.115),l(-.805,-.115),l(-.66,-.173),l(-.634,-.069),l(-.137,.104),l(-.446,-.115),l(-.257,.3),l(.819,-.069),l(.497,.265),l(.591,.046),l(.205,.208),l(.481,.069),l(.021,-.127),l(.616,.069),l(.258,-.196),l(.297,.011),l(.481,-.104),l(.226,.081),l(.026,-.15),l(.164,0),l(.214,.15),l(-.029,.081),l(-.722,.023),l(.219,.288),l(-.792,.265),l(-.168,.288),l(-.386,.08),l(-.089,-.092),l(.042,-.161),l(-.014,-.276),l(-.258,.023),l(-.091,.46),l(-.501,.333),l(-.248,.058),l(-.36,-.069),l(-.005,.218),l(-1.418,.035),l(.156,.458),l(.513,.258),l(.066,.609),l(-.109,.33),l(-.281,.051),l(-.308,-.064),l(.038,.429),l(.29,.081),l(-.126,.268),l(.24,.228),l(-.365,.364),l(-.222,.455),l(-.041,.56),l(-.766,1.043),l(-.58,.71),l(-.165,-.062),l(-.442,-.236),l(-.614,.193),l(-1.262,-.089),l(-.106,.311),l(-.252,-.083),l(-.518,.264),l(-.295,.517),l(.356,.336),l(-.376,.374),l(-.48,-.129),l(-.173,-.037),l(-1.158,.269),l(-1.11,-.116),l(-.001,-.142),l(.19,-.078),l(-.062,-.181),l(.281,-.297),l(-.638,-.53),l(-.413,-.479),l(-.22,-.272),l(.529,-.116),l(-.082,-.312),l(.421,.077),l(.147,-.245),l(-.19,-.234),l(-.285,.013),l(-.292,-.377),l(-.527,-.221),l(-.63,-.99),l(-.286,0),l(.011,-.408),l(-.256,-.364),l(-.348,-.298),l(.221,-.484),l(.206,-.341),l(-.418,-.154),l(-.405,.102),l(-.055,-.288),l(-.412,.051),l(-.18,-1.207),l(-.225,-.131),l(.311,-.355),l(.293,.132),l(.15,.342),l(.41,-.013),l(.324,-.737),l(-.22,-.831),l(.506,-.224),l(.117,-.423),l(.414,-.013),l(.769,-.384),l(.029,-.532),l(.249,-.346),l(-.26,-.427),l(-.571,-.735),l(.941,-.16),l(.432,-.67),l(-.297,-.243),l(-.715,-.186),l(-.582,-.39),l(.335,-1.171),l(-.65,-.729),l(.349,-1.093),l(.077,-.664),l(.389,-.492),l(.617,-.479),l(.613,-.257),l(.618,-.114),l(.932,.027),l(.733,-.036),l(.44,-.177),l(.17,-.176),l(-.252,-.587),l(-.381,-.269),l(-.339,-.125),l(.495,-.545),l(.574,-.499),l(.383,-.469),l(.32,-.598),l(.06,-.971),l(.121,-.244),l(.981,-.021),l(.687,-.442),l(1.325,-.919),l(.615,-.346),l(.188,-.345),l(-.171,-.507),l(-.05,-.213),l(1.484,-1.176),l(.465,-.167),l(.279,.015),l(.871,.095),l(.695,-.004),l(.318,-.299),l(.083,-.199),l(.021,-.663),l(.168,-.183),l(1.731,.389),l(.972,.144),l(.67,.129),l(.323,.015),l(.271,-.25),l(.164,-.449),l(.281,-1.066),l(.865,-.038),l(.41,.031),l(.114,.063),l(.146,.033),l(.616,.463),l(1.286,.658),l(1.085,.292),l(1.583,.207),l(.508,.229),l(.77,.558),l(-.062,.413),l(-.004,.526),l(.507,.637),l(.405,.685),l(.028,.392),l(-.5,.8),l(.208,.535),l(.327,.307),l(.113,.234), -N(238.107,361.753),l(.515,-.688),l(.859,0),l(1.202,-.515),l(-.171,-.858),l(-3.091,.344),l(-2.061,.515),l(-1.545,-.344),l(-.515,-.858),l(1.374,-.515),l(1.202,-.172),l(3.091,-.172),l(1.374,-.515),l(-.172,-1.03),l(.859,-.516),l(0,-1.374),l(-1.326,-1.054),l(.982,-.491),l(1.202,-.344),l(1.545,-.172),l(.858,.344),l(.858,.858),l(1.03,1.374),l(1.374,1.202),l(1.03,1.373),l(-.515,2.061),l(-1.545,.516),l(-1.545,.858),l(-3.434,.172),l(-3.435,0),M(172.686,360.379),l(3.091,-.687),l(3.262,0),l(5.495,0),l(2.919,1.202),l(-2.748,.687),l(-3.759,-.337),l(-5.169,-.35),l(-3.091,-.516),M(65.13,371.085),l(1.194,-.265),l(1.393,.133),l(.796,.464),l(-1.99,0),l(-1.393,-.332),M(277.944,379.954),l(.515,-1.202),l(2.404,-1.03),l(2.748,-.172),l(2.061,-.171),l(1.545,-.859),l(.343,-1.545),l(1.374,-.687),l(3.091,-.688),l(4.464,0),l(2.404,0),l(3.434,.688),l(.687,1.889),l(0,1.202),l(-2.061,1.201),l(-11.848,1.03),l(-11.161,.344),M(36.004,376.434),l(1.202,-.858),l(2.061,-.343),l(4.121,.515),l(4.293,1.374),l(-.887,.482),l(-2.719,.204),l(-4.293,-.515),l(-3.777,-.859),M(777.843,385.46),l(3.823,.391),l(.899,.029),l(.322,.234),l(1.202,.294),l(2.329,.088),l(2.126,-.003),l(5.218,.329),l(3.046,.348),l(1.144,-.059),l(.762,.029),l(1.411,.37),l(0,2.175),l(0,2.223),l(0,2.222),l(0,2.223),l(0,2.222),l(0,1.551),l(-.041,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.182,0),l(-.041,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.223,0),l(-2.182,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.223,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),l(-2.222,0),H(9.014,0),H(6.792,0),H(4.569,0),H(2.347,0),H(.125,0),l(0,-1.544),l(0,-2.222),l(0,-2.223),l(0,-2.222),l(0,-2.223),l(0,-2.223),l(3.941,.297),l(10.131,0),l(7.898,.516),l(6.868,.172),l(8.586,.858),l(6.353,.515),l(8.757,.172),l(4.808,-.172),l(6.525,-.172),l(2.404,.344),l(3.606,-.858),l(16.312,.344),l(4.638,-.013),l(1.143,-.467),l(-14.366,-.551),l(-9.616,-.688),l(-2.232,0),l(-3.091,-.172),l(-.858,-.171),l(-1.545,-.344),l(-.498,-.455),l(.155,-1.434),l(.687,-.858),l(1.889,-.688),l(-3.263,-.687),l(-2.232,-.344),l(-.953,-.503),l(1.589,-.521),l(-2.891,-.6),l(-3.074,-.208),l(-.104,-.261),l(2.857,-.312),l(2.748,0),l(6.525,.343),l(3.434,0),l(2.576,.344),l(4.636,-1.202),l(2.404,-.687),l(-2.748,-1.03),l(-3.778,-.858),l(-4.391,-.405),l(-2.649,-.625),l(-3.262,-.172),l(-2.919,0),l(-2.919,-.858),l(2.576,-.516),l(1.28,-.342),l(-1.28,-.517),l(-2.919,.516),H(52.66,0),l(-1.717,-.344),L(49.054,373),l(.343,-1.202),l(1.956,-.07),l(1.65,-.273),l(4.98,0),l(4.626,.493),l(3.272,.709),l(1.374,.172),l(4.465,-.858),l(4.089,.243),l(0,-.729),l(.066,-.597),l(-2.255,-.73),l(-2.93,-.075),l(-2.576,-.344),l(2.404,-.687),l(4.121,.171),l(1.717,-.343),l(3.091,-.516),l(3.09,-.343),l(5.667,-.688),l(4.465,-.343),l(3.949,-.516),l(4.464,-.515),l(2.748,.343),l(5.667,0),l(4.464,.258),l(4.121,-.515),l(7.898,.343),l(7.555,-.687),l(3.091,.172),l(1.545,-.688),l(1.545,.516),l(5.323,-.172),l(.121,-.87),l(1.758,-.293),l(1.433,.325),l(.586,.554),l(-.423,.813),l(2.364,.329),l(1.38,-.264),l(-.006,-.938),l(1.438,-.267),l(1.48,.267),l(.212,1.036),l(-1.009,.423),l(.521,.781),l(3.024,-.351),l(1.889,.343),l(3.434,.172),l(2.576,-.687),l(3.778,.086),l(4.868,.33),l(2.344,.013),l(1.449,.109),l(.693,-.53),l(-.611,-.285),l(-2.202,-.122),l(1.305,-.285),l(.041,-.408),l(-.367,-.245),l(-1.386,.123),l(-.693,.04),l(-.856,-.979),l(-2.178,-.337),l(-.676,-.193),l(-.182,-.665),l(4.056,.462),l(3.874,-.245),l(-1.224,-.489),l(-6.035,-.163),l(-.774,-.082),l(-.653,-.489),l(0,-.815),l(2.301,.105),l(.839,.67),l(5.301,-.204),l(7.253,.736),l(2.404,-.172),l(3.262,-.172),l(4.464,.172),l(3.263,.172),l(2.061,-.516),l(.687,-.687),l(1.202,0),l(.344,1.03),l(2.576,.343),l(2.404,-.343),l(.858,.515),l(3.435,.688),l(3.777,.343),l(2.061,.172),l(1.03,-.515),l(.687,-1.202),l(2.747,-.172),l(1.03,.515),l(1.717,.688),l(3.091,-.172),l(3.434,.258),l(4.121,-.344),l(4.979,-.516),l(5.495,-.858),l(3.091,-.515),l(1.202,-.688),l(0,-1.373),l(-1.374,-1.202),l(-.859,-1.545),l(-1.202,-.688),l(-.344,-1.03),l(1.202,-1.03),l(1.717,-.343),l(.858,-1.202),l(-.343,-.858),l(-.172,-1.03),l(-1.202,-.516),l(.344,-1.545),l(1.889,-.172),l(2.404,-1.374),l(1.545,-.515),l(.859,-.859),l(1.03,-.687),l(2.919,-1.202),l(3.606,-.515),l(2.404,-1.202),l(2.404,-.172),l(2.232,-1.03),l(1.545,-.343),l(.343,1.03),l(-1.374,.515),l(-1.03,.344),l(-1.202,.515),l(-.858,0),l(-1.202,0),l(-2.919,1.202),l(-1.03,.687),l(-1.717,1.374),l(-.172,1.202),l(-.687,.687),l(-1.374,-.344),l(-1.03,0),l(-1.202,.516),l(-1.202,.687),l(-1.03,.688),l(-.687,1.201),l(.515,.688),l(.687,.687),l(1.374,.344),l(1.545,0),l(.858,.515),l(.687,1.202),l(1.545,1.546),l(.687,.858),l(1.03,.687),l(.687,1.374),l(.858,1.373),l(.344,1.546),l(-.344,.858),l(-.858,1.717),l(-2.919,1.889),l(-1.202,.172),l(-1.03,.858),l(-1.717,1.03),l(-3.263,.344),l(-4.979,.858),l(-2.404,.344),l(-2.919,.687),l(-7.377,-.141),l(-4.556,-.316),l(-.773,-.401),l(-1.717,-.344),l(-1.717,-.343),l(-1.374,0),l(-.859,.515),l(.515,.858),l(2.061,.688),l(4.121,1.202),l(4.995,.04),l(1.202,.759),l(-3.278,.574),l(-5.667,-.343),l(-4.979,-.516),l(-3.097,-.285),l(-2.151,.253),l(.823,.696),l(1.164,.538),l(3.262,.172),l(2.232,0),l(1.374,.343),l(-.249,.402),l(-.782,.113),l(-2.232,.515),l(-5.151,-.171),l(-1.374,-.172),l(-2.232,-1.202),l(-2.404,0),l(.128,.917),l(2.62,1.144),l(1.03,.172),l(1.202,-.172),l(1.374,.344),l(2.404,0),l(4.98,-.516),l(3.09,.687),l(.385,.431),l(-.041,.6),l(-2.061,.172),l(-3.263,.172),l(-2.608,-.185),l(3.811,.871),l(3.656,-.238),l(1.324,.41),l(2.576,.687),l(6.869,.859),l(8.585,.858),l(10.646,1.373),l(6.525,.516),l(2.061,.858),l(.687,1.03),l(3.091,-.344),l(5.323,-1.545),l(6.525,-.687),l(2.455,-.066),l(6.474,-.105),l(9.788,-.344),l(1.889,.344),l(2.576,-1.202),l(8.414,-1.03),l(11.333,-.172),l(8.929,-.858),l(1.202,-.858),l(-1.202,-.516),l(-.271,-1.07),l(-1.184,-.338),l(-5.071,.035),l(-2.232,.172),l(-4.808,-.344),l(-3.091,0),l(0,-1.202),l(3.263,-1.545),l(3.949,-1.202),l(2.404,-.172),l(4.121,-1.03),l(9.444,-1.202),l(5.323,-.858),l(6.525,0),l(4.979,-.516),l(2.747,-2.061),l(6.039,-1.541),l(-1.23,-.52),l(-2.576,.516),l(-2.061,-.344),l(1.545,-1.03),l(1.545,-.343),l(2.48,-.249),l(.696,-.742),l(3.85,-.742),l(1.577,-.418),l(.603,-.557),l(-1.716,-.881),l(-.093,-.604),l(1.252,-.231),l(.464,.742),l(1.017,-.097),l(2.061,-.858),l(1.03,-.343),l(.858,.171),l(1.203,1.544),l(2.403,-.342),l(.242,-.91),l(.96,-.807),l(1.889,-.516),l(1.374,.516),l(-1.162,.574),l(-.139,.604),l(3.189,-.319),l(4.808,.258),l(3.263,-.172),l(1.03,.858),l(1.545,-.344),l(1.717,-.515),l(5.839,-.858),l(7.212,-1.03),l(4.292,-.858),l(2.061,0),l(2.061,1.373),l(1.718,.344),l(1.889,-.344),l(1.545,-.858),l(7.556,-.344),l(3.434,-.171),l(4.293,.171),l(6.697,.945),l(2.575,0),l(4.293,-.516),l(6.01,-.687),l(5.151,-.688),l(2.404,-.515),l(2.231,-.344),l(.615,-.959),l(1.148,-.835),l(1.671,-.095),l(.938,.965),l(1.294,.409),l(1.732,1.052),l(1.009,.139),l(1.009,-.661),l(1.322,-.174),l(.209,.522),l(-.835,.312),l(.661,.244),l(.8,.278),l(.383,-.383),l(.313,-.383),l(.312,.209),l(-.174,.348),l(0,.521),l(.592,-.174),l(1.913,-.557),l(.418,-1.704),l(5.102,-1.137),l(1.374,-.687),l(3.605,-.172),l(1.363,-.646),l(2.758,-.126),l(.21,-.27),l(-.165,-.297),l(.692,-.23),l(1.221,.165),l(.197,.593),l(.66,.231),l(2.165,-.536),l(1.265,-.223),l(-.726,-.297),l(-.561,-.264),l(.099,-.362),l(1.451,-.1),l(1.562,.215),l(.647,.28),l(.692,-.132),l(-.066,-.33),l(-.527,-.33),l(0,-.561),l(.297,-.23),l(.846,-.242),l(4.292,-.858),l(2.92,-.172),l(3.058,.115),l(2.296,1.076),l(1.316,.023),l(.741,.144),l(.023,.383),l(-.908,.096),l(-.168,.454),l(1.723,.216),l(4.892,.646),l(5.571,.453),l(1.546,.172),l(1.717,-.172),l(7.556,.688),l(5.323,0),l(.687,.687),l(.2,1.075),l(-.73,1.232),l(-.672,.439),l(-.425,1.113),l(-.73,.319),l(-.905,-.402),l(-.83,.402),l(-.73,.959),l(1.507,.457),l(.594,.045),l(.959,-.593),l(.411,.365),l(-.867,1.05),l(-1.215,.062),l(-1.717,1.374),l(0,.858),l(1.889,.688),l(2.919,0),l(1.718,-.859),l(1.889,-1.545),l(1.717,-1.717),l(1.374,-.688),l(4.121,-1.03),l(2.231,-.687),l(3.263,-.344),l(2.061,-1.03),l(1.03,-1.03),l(3.435,-1.03),l(2.403,-.687),l(2.061,-.687),l(2.061,-.172),l(6.182,-.687),l(3.778,.171),l(1.204,-.542),l(.169,-.659),l(.54,-.759),l(.49,-.101),l(.471,.776),l(.305,.775),l(4.892,-.35),l(5.838,0),l(4.979,-.172),l(3.091,.344),l(2.112,-.214),l(1.328,.085),l(1.018,.594),l(1.188,-.764),l(2.714,-1.046),l(1.866,-.226),l(.664,-.028),l(.594,-.028),l(.777,-.057),l(1.512,.311),l(1.166,-.172),l(3.606,.687),l(3.777,.344),l(1.03,0),l(1.064,.573),l(.745,.088),l(2.149,-.088),l(1.271,-.263),l(1.315,-.438),l(-.192,-.216),l(.28,-.53),l(1.447,-.131),l(.921,-.088),l(.786,.062),l(2.195,-.501),l(2.097,.501),l(.688,.687),l(.373,.435),l(1.842,-.131),l(.921,-.044),l(.985,.255),l(1.889,.688),l(2.919,.515),l(2.919,-.343),l(4.121,-.258),l(2.232,-.344),l(2.404,0),l(3.521,.315),l(.702,-.755),l(2.158,-.162),l(.863,1.133),l(4.909,.323),l(.917,-1.133),l(1.889,-.593),l(5.988,.013),l(.756,-.283),l(1.996,.108),l(-.432,-1.403),l(.054,-.809),l(1.232,-.36),l(.872,1.277),l(-.647,1.079),l(.805,.219),l(2.81,.482),l(5.262,.376),l(5.494,.344),l(2.278,.583),l(1.283,.14),l(1.396,-.167),l(2.204,.446),l(1.961,-.167),l(.719,.278),l(-.435,.431),l(-.151,.351),l(.293,.123),l(2.081,.331),l(1.078,.484),l(2.706,-.134),l(.377,.595),l(1.038,.227),l(4.808,.515),l(-.123,.536),l(.567,.236),l(2.695,-.095),l(3.214,.181),l(-.329,-.984),l(.71,-.095),l(.804,.426),l(.331,.709),l(1.135,.284),l(2.672,.519),l(2.576,-.343),l(4.017,.999),l(1.626,.495),l(1.672,.871),l(1.626,.023),l(.504,.187),l(.532,-.021),l(.754,-.047),l(.777,.047),l(.896,.589),l(.541,.118),l(.542,.07),l(.142,-.259),l(.471,0),l(1.484,-.048),l(1.416,.237),l(5.951,.535),l(.729,.516),l(1.733,.323),l(2.979,.944),l(.43,-.335),l(.551,.191),l(.454,.67),l(-.741,.215),l(-1.124,.167),l(-.216,.359),l(.168,.263),l(.55,-.048),l(-.024,.67),l(-.43,-.048),l(-.096,.287),l(-.312,.071),l(-.598,.622),l(-.526,.12),l(-.55,.287),l(-.168,.669),l(-1.603,.096),l(-1.339,-.239),l(-1.794,.359),l(-2.153,.425),l(-2.629,.764),l(1.271,1.103),l(-1.907,.212),l(-1.23,-.255),l(-.763,.212),l(-.043,.637),l(-2.374,.169),l(.136,.514),l(.924,.632),l(-.127,.763),l(-.382,.085),l(-.466,.467),l(.551,.466),l(.085,.764),l(-.764,.424),l(.637,.254),l(.763,0),l(.764,.255),l(.339,.509),l(.17,.721),l(1.284,-.187),l(.836,.907),l(2.035,.297),l(.339,.339),l(2.672,.552),l(-4.113,0),l(-2.799,.138),l(-2.332,.541),l(-1.823,-.085),l(-.806,.212),l(-1.611,.339),l(-1.326,-.32),l(-.546,.426),l(1.116,.529),l(-.503,.447),l(-.669,.195),l(-1.117,.753),l(-2.623,.642),l(.475,.391),l(2.205,-.111),l(.53,0),l(.809,.307),l(.168,.363),l(.499,.18),l(.422,.183),l(.111,.894),l(.209,.502),l(3.195,.279),l(2.874,.948),l(3.662,.801),l(5.151,1.202),l(1.456,.062),l(1.015,.17),l(-.146,.234),l(-1.67,.264),l(-.47,.264),l(1.173,.088),l(2.198,-.293),l(1.988,.166), -E(0,0) -}; - -#undef N -#undef M -#undef L -#undef l -#undef E diff --git a/test/xcb-huge-image-shm.c b/test/xcb-huge-image-shm.c deleted file mode 100644 index 269d7f0..0000000 --- a/test/xcb-huge-image-shm.c +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright © 2011 Uli Schlachter - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Uli Schlachter - */ - -#include "cairo-test.h" - -#define WIDTH 3000 -#define HEIGHT 3000 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_t *surface; - cairo_surface_t *image; - cairo_t *cr2; - - /* We use a similar surface to have way smaller ref images */ - surface = cairo_surface_create_similar (cairo_get_target (cr), - CAIRO_CONTENT_COLOR_ALPHA, - WIDTH, HEIGHT); - - /* First we have to defeat xcb's deferred clear */ - cr2 = cairo_create (surface); - cairo_test_paint_checkered (cr2); - cairo_destroy (cr2); - - /* Now we try to map this to an image. This will try to use shared memory - * but fail the allocation, because of the huge surface. */ - image = cairo_surface_map_to_image (surface, NULL); - cairo_surface_unmap_image (surface, image); - - /* Finally we make sure that errors aren't lost. */ - cairo_set_source_surface (cr, surface, 0, 0); - cairo_paint (cr); - cairo_surface_destroy (surface); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (xcb_huge_image_shm, - "Force a failed shm allocation when receiving an image", - "xcb", /* keywords */ - NULL, /* requirements */ - 2, 2, - NULL, draw) diff --git a/test/xcb-huge-subimage.c b/test/xcb-huge-subimage.c deleted file mode 100644 index fc8e278..0000000 --- a/test/xcb-huge-subimage.c +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright © 2012 Uli Schlachter - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Uli Schlachter - */ - -#include "cairo-test.h" - -#define WIDTH 6000 -#define HEIGHT 6000 - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_t *surface; - cairo_surface_t *image; - cairo_surface_t *subimage; - cairo_rectangle_int_t extents; - cairo_t *cr2; - - extents.x = extents.y = 10; - extents.width = WIDTH - 20; - extents.height = HEIGHT - 20; - - /* We use a similar surface to have way smaller ref images */ - surface = cairo_surface_create_similar (cairo_get_target (cr), - CAIRO_CONTENT_COLOR_ALPHA, - WIDTH, HEIGHT); - - /* First we have to defeat xcb's deferred clear */ - cr2 = cairo_create (surface); - cairo_test_paint_checkered (cr2); - cairo_destroy (cr2); - - /* Get us an image surface with a non-natural stride */ - image = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, - WIDTH, HEIGHT); - subimage = cairo_surface_map_to_image (image, &extents); - - /* Paint the subimage to the similar surface and trigger the big upload */ - cr2 = cairo_create (surface); - cairo_set_source_surface (cr2, subimage, 0, 0); - cairo_paint (cr2); - cairo_destroy (cr2); - - /* Finally we make sure that errors aren't lost. */ - cairo_surface_unmap_image (image, subimage); - cairo_set_source_surface (cr, surface, 0, 0); - cairo_paint (cr); - cairo_surface_destroy (image); - cairo_surface_destroy (surface); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (xcb_huge_subimage, - "Test if the maximum request size is honored", - "xcb", /* keywords */ - NULL, /* requirements */ - 2, 2, - NULL, draw) diff --git a/test/xcb-snapshot-assert.c b/test/xcb-snapshot-assert.c deleted file mode 100644 index b578f8c..0000000 --- a/test/xcb-snapshot-assert.c +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright © 2011 Uli Schlachter - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Uli Schlachter - */ - -#include "cairo-test.h" -#include "cairo.h" - -static cairo_surface_t * -create_image (int width, int height) -{ - cairo_surface_t *surface; - cairo_t *cr; - - surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, width, height); - /* Paint something random to the image */ - cr = cairo_create (surface); - cairo_surface_destroy (surface); - - cairo_set_source_rgb (cr, 0, 1, 1); - cairo_paint (cr); - - surface = cairo_surface_reference (cairo_get_target (cr)); - cairo_destroy (cr); - - return surface; -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_surface_t *image; - - /* Image has to have same geometry as xcb surface to be added as a snapshot */ - image = create_image (width, height); - cairo_set_source_surface (cr, image, 0, 0); - cairo_surface_destroy (image); - - /* This attaches the tested xcb surface as a snapshot */ - cairo_paint (cr); - - /* Now cairo is modifying a snapshot which fails an - * assert in _cairo_surface_begin_modification */ - cairo_paint (cr); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (xcb_snapshot_assert, - "Test a wrong _cairo_surface_attach_snapshot call", - "xcb", /* keywords */ - NULL, /* requirements */ - 2, 2, - NULL, draw) diff --git a/test/xcb-stress-cache.c b/test/xcb-stress-cache.c deleted file mode 100644 index 3e3d0a2..0000000 --- a/test/xcb-stress-cache.c +++ /dev/null @@ -1,118 +0,0 @@ -/* - * Copyright © 2011 Uli Schlachter - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Uli Schlachter - */ - -#include "cairo-test.h" - -#define WIDTH 512 -#define HEIGHT 512 - -/* This is a random pick. This results in 512 (width) * 512 (height) * - * 2 (surfaces per run) * 4 (ARGB32) * ITERATIONS = 200 MiB of image data. */ -#define ITERATIONS 100 - -/* This tries to trigger a bug in the xcb backend where a Picture is freed to - * early. It goes something like this: - * - * - _composite_mask calls _cairo_xcb_picture_for_pattern to get a xcb_picture_t - * for the source. - * - _cairo_xcb_picture_for_pattern calls _cairo_xcb_surface_picture which calls - * _cairo_xcb_screen_store_surface_picture which adds the picture to a cache. - * - _cairo_xcb_surface_picture also attached the picture as a snapshot to - * the source surface using cairo_surface_finish as detach_func. - * - _composite_mask calls _cairo_xcb_picture_for_pattern to get a xcb_picture_t - * for the mask. - * - The resulting picture surface is added to the cache again, but the cache is - * already full, so a random cache entry is picked and removed. - * - The surface that was added before is picked and gets fed to - * _surface_cache_entry_destroy. - * - This calls _cairo_surface_detach_snapshot which causes the - * detach_func from above to be called, so the surface is finished and the - * associated picture is FreePicture'd. - * - _composite_mask now uses a Picture that was already freed. - * - * So this depends on the screen's surface cache to be full which is why we do - * all this looping. - */ - -static cairo_surface_t * -create_image (void) -{ - cairo_surface_t *surface; - cairo_t *cr; - - surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, WIDTH, HEIGHT); - /* Paint something random to the image */ - cr = cairo_create (surface); - cairo_paint (cr); - cairo_set_source_rgb (cr, 0, 1, 1); - cairo_rectangle (cr, 0, 0, WIDTH/2.0, HEIGHT/2.0); - cairo_fill (cr); - cairo_set_source_rgb (cr, 1, 0, 1); - cairo_rectangle (cr, WIDTH/2.0, HEIGHT/2.0, WIDTH/2.0, HEIGHT/2.0); - cairo_fill (cr); - cairo_destroy (cr); - - return surface; -} - -static cairo_surface_t * -dirty_cache (cairo_t *cr) -{ - cairo_surface_t *surface; - - /* Set a source surface... */ - surface = create_image (); - cairo_set_source_surface (cr, surface, 0, 0); - cairo_surface_destroy (surface); - /* ...and create a mask surface, so that we can hit the early FreePicture */ - surface = create_image (); - cairo_mask_surface (cr, surface, 0, 0); - - return surface; -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - int i; - cairo_surface_t *array[ITERATIONS]; - - /* We have to keep the associated cairo_surface_t alive so that they aren't - * removed from the cache */ - for (i = 0; i < ITERATIONS; i++) - array[i] = dirty_cache (cr); - for (i = 0; i < ITERATIONS; i++) - cairo_surface_destroy (array[i]); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (xcb_stress_cache, - "Stress test for a image surface cache in cairo-xcb", - "xcb, stress", /* keywords */ - NULL, /* requirements */ - 2, 2, - NULL, draw) diff --git a/test/xcb-surface-source.c b/test/xcb-surface-source.c deleted file mode 100644 index d2c7a13..0000000 --- a/test/xcb-surface-source.c +++ /dev/null @@ -1,149 +0,0 @@ -/* - * Copyright © 2009 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" -#if CAIRO_HAS_XCB_SURFACE -#include -#endif - -#include "surface-source.c" - -#if CAIRO_HAS_XCB_SURFACE -static cairo_user_data_key_t closure_key; - -struct closure { - cairo_device_t *device; - xcb_connection_t *connection; - xcb_pixmap_t pixmap; -}; - -static void -cleanup (void *data) -{ - struct closure *arg = data; - - cairo_device_finish (arg->device); - cairo_device_destroy (arg->device); - - xcb_free_pixmap (arg->connection, arg->pixmap); - xcb_disconnect (arg->connection); - - free (arg); -} - -static xcb_render_pictforminfo_t * -find_depth (xcb_connection_t *connection, int depth, void **formats_out) -{ - xcb_render_query_pict_formats_reply_t *formats; - xcb_render_query_pict_formats_cookie_t cookie; - xcb_render_pictforminfo_iterator_t i; - - cookie = xcb_render_query_pict_formats (connection); - xcb_flush (connection); - - formats = xcb_render_query_pict_formats_reply (connection, cookie, 0); - if (formats == NULL) - return NULL; - - for (i = xcb_render_query_pict_formats_formats_iterator (formats); - i.rem; - xcb_render_pictforminfo_next (&i)) - { - if (XCB_RENDER_PICT_TYPE_DIRECT != i.data->type) - continue; - - if (depth != i.data->depth) - continue; - - *formats_out = formats; - return i.data; - } - - free (formats); - return NULL; -} -#endif - -static cairo_surface_t * -create_source_surface (int size) -{ -#if CAIRO_HAS_XCB_SURFACE - xcb_connection_t *connection; - xcb_render_pictforminfo_t *render_format; - struct closure *data; - cairo_surface_t *surface; - xcb_screen_t *root; - xcb_void_cookie_t cookie; - void *formats; - - connection = xcb_connect (NULL, NULL); - if (connection == NULL) - return NULL; - - data = xmalloc (sizeof (struct closure)); - data->connection = connection; - - render_format = find_depth (connection, 32, &formats); - if (render_format == NULL) { - xcb_disconnect (connection); - free (data); - return NULL; - } - - root = xcb_setup_roots_iterator (xcb_get_setup (connection)).data; - - data->pixmap = xcb_generate_id (connection); - cookie = xcb_create_pixmap_checked (connection, 32, - data->pixmap, root->root, size, size); - /* slow, but sure */ - if (xcb_request_check (connection, cookie) != NULL) { - free (formats); - xcb_disconnect (connection); - free (data); - return NULL; - } - - surface = cairo_xcb_surface_create_with_xrender_format (connection, - root, - data->pixmap, - render_format, - size, size); - free (formats); - - data->device = cairo_device_reference (cairo_surface_get_device (surface)); - cairo_surface_set_user_data (surface, &closure_key, data, cleanup); - - return surface; -#else - return NULL; -#endif -} - -CAIRO_TEST (xcb_surface_source, - "Test using a XCB surface as the source", - "source", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - preamble, draw) diff --git a/test/xcomposite-projection.c b/test/xcomposite-projection.c deleted file mode 100644 index 39686cf..0000000 --- a/test/xcomposite-projection.c +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright 2009 Benjamin Otte - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Benjamin Otte - */ - -#include "cairo-test.h" - -/* - * Exercise a bug in the projection of a rotated trapezoid mask. - * I used CAIRO_ANTIALIAS_NONE and a single-color source in the test to get - * rid of aliasing issues in the output images. This makes some issues - * slightly less visible, but still fails for all of them. If you want to - * get a clearer view: - * #define ANTIALIAS CAIRO_ANTIALIAS_DEFAULT - */ - -#define ANTIALIAS CAIRO_ANTIALIAS_NONE - -static const char png_filename[] = "romedalen.png"; - -static cairo_pattern_t * -get_source (const cairo_test_context_t *ctx, - int *width, int *height) -{ - cairo_surface_t *surface; - cairo_pattern_t *pattern; - - if (ANTIALIAS == CAIRO_ANTIALIAS_NONE) { - cairo_t *cr; - - surface = cairo_image_surface_create (CAIRO_FORMAT_RGB24, 256, 192); - cr = cairo_create (surface); - - cairo_set_source_rgb (cr, 0.75, 0.25, 0.25); - cairo_paint (cr); - - pattern = cairo_pattern_create_for_surface (cairo_get_target (cr)); - cairo_destroy (cr); - } else { - surface = cairo_test_create_surface_from_png (ctx, png_filename); - pattern = cairo_pattern_create_for_surface (surface); - } - - *width = cairo_image_surface_get_width (surface); - *height = cairo_image_surface_get_height (surface); - cairo_surface_destroy (surface); - - return pattern; -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - cairo_pattern_t *image; - int img_width, img_height; - - image = get_source (cairo_test_get_context (cr), - &img_width, &img_height); - - /* we don't want to debug antialiasing artifacts */ - cairo_set_antialias (cr, ANTIALIAS); - - /* dark grey background */ - cairo_set_source_rgb (cr, 0.25, 0.25, 0.25); - cairo_paint (cr); - - /* magic transform */ - cairo_translate (cr, 10, -40); - cairo_rotate (cr, -0.05); - - /* place the image on our surface */ - cairo_set_source (cr, image); - - /* paint the image */ - cairo_rectangle (cr, 0, 0, img_width, img_height); - cairo_fill (cr); - - cairo_pattern_destroy (image); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (xcomposite_projection, - "Test a bug with XRenderComposite reference computation when projecting the first trapezoid onto 16.16 space", - "xlib", /* keywords */ - "target=raster", /* requirements */ - 300, 150, - NULL, draw) diff --git a/test/xlib-expose-event.c b/test/xlib-expose-event.c deleted file mode 100644 index 1de23e0..0000000 --- a/test/xlib-expose-event.c +++ /dev/null @@ -1,196 +0,0 @@ -/* - * Copyright © 2008 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -/* This test tries to emulate the behaviour of most toolkits; it tries - * to simulate typical usage of a single surface with multiple exposures. - * - * The first goal of the test is to reproduce the XSetClipMask(NULL) bug - * reintroduced in 1.6.2 (but was originally fixed in 40558cb15). As I've - * made the same mistake again, it is worth adding a regression test... - */ - -#include "cairo-test.h" - -#include -#include - -#include "cairo.h" - -#include "buffer-diff.h" - -#define SIZE 160 -#define NLOOPS 10 - -static const char *png_filename = "romedalen.png"; - -static void -draw_mask (cairo_t *cr) -{ - cairo_surface_t *surface; - cairo_t *cr2; - - surface = cairo_surface_create_similar (cairo_get_group_target (cr), - CAIRO_CONTENT_ALPHA, - 50, 50); - cr2 = cairo_create (surface); - cairo_surface_destroy (surface); - - cairo_rectangle (cr2, - 0, 0, - 40, 40); - cairo_rectangle (cr2, - 10, 10, - 40, 40); - cairo_clip (cr2); - - cairo_move_to (cr2, 0, 25); - cairo_line_to (cr2, 50, 25); - cairo_move_to (cr2, 25, 0); - cairo_line_to (cr2, 25, 50); - cairo_set_source_rgb (cr2, 1, 1, 1); - cairo_stroke (cr2); - - cairo_set_source_rgb (cr, 1, 0, 0); - cairo_mask_surface (cr, cairo_get_target (cr2), 50, 50); - cairo_destroy (cr2); -} - -static cairo_surface_t * -clone_similar_surface (cairo_surface_t * target, cairo_surface_t *surface) -{ - cairo_t *cr; - cairo_surface_t *similar; - - similar = cairo_surface_create_similar (target, - cairo_surface_get_content (surface), - cairo_image_surface_get_width (surface), - cairo_image_surface_get_height (surface)); - - cr = cairo_create (similar); - cairo_surface_destroy (similar); - - cairo_set_source_surface (cr, surface, 0, 0); - cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); - cairo_paint (cr); - - similar = cairo_surface_reference (cairo_get_target (cr)); - cairo_destroy (cr); - - return similar; -} - -static void -draw_image (const cairo_test_context_t *ctx, - cairo_t *cr, - cairo_surface_t *image) -{ - cairo_set_source_surface (cr, image, 0, 0); - cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); - cairo_paint (cr); -} - -static void -draw (const cairo_test_context_t *ctx, - cairo_t *cr, - cairo_surface_t *image, - cairo_rectangle_t *region, - int n_regions) -{ - cairo_save (cr); - if (region != NULL) { - int i; - for (i = 0; i < n_regions; i++) { - cairo_rectangle (cr, - region[i].x, region[i].y, - region[i].width, region[i].height); - } - cairo_clip (cr); - } - cairo_push_group (cr); - draw_image (ctx, cr, image); - draw_mask (cr); - cairo_pop_group_to_source (cr); - cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); - cairo_paint (cr); - cairo_restore (cr); -} - -static cairo_test_status_t -draw_func (cairo_t *cr, int width, int height) -{ - cairo_rectangle_t region[4]; - const cairo_test_context_t *ctx; - cairo_surface_t *source, *image; - int i, j; - - ctx = cairo_test_get_context (cr); - - source = cairo_test_create_surface_from_png (ctx, png_filename); - image = clone_similar_surface (cairo_get_group_target (cr), source); - cairo_surface_destroy (source); - - cairo_push_group_with_content (cr, CAIRO_CONTENT_COLOR); - draw (ctx, cr, image, NULL, 0); - for (i = 0; i < NLOOPS; i++) { - for (j = 0; j < NLOOPS; j++) { - region[0].x = i * SIZE / NLOOPS; - region[0].y = i * SIZE / NLOOPS; - region[0].width = SIZE / 4; - region[0].height = SIZE / 4; - - region[1].x = j * SIZE / NLOOPS; - region[1].y = j * SIZE / NLOOPS; - region[1].width = SIZE / 4; - region[1].height = SIZE / 4; - - region[2].x = i * SIZE / NLOOPS; - region[2].y = j * SIZE / NLOOPS; - region[2].width = SIZE / 4; - region[2].height = SIZE / 4; - - region[3].x = j * SIZE / NLOOPS; - region[3].y = i * SIZE / NLOOPS; - region[3].width = SIZE / 4; - region[3].height = SIZE / 4; - - draw (ctx, cr, image, region, 4); - } - } - - cairo_pop_group_to_source (cr); - cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); - cairo_paint (cr); - - cairo_surface_destroy (image); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (xlib_expose_event, - "Emulate a typical expose event", - "xlib", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, draw_func) diff --git a/test/xlib-surface-source.c b/test/xlib-surface-source.c deleted file mode 100644 index 7d2ed71..0000000 --- a/test/xlib-surface-source.c +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright © 2008 Chris Wilson - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Chris Wilson not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Chris Wilson makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Chris Wilson - */ - -#include "cairo-test.h" -#include -#if CAIRO_HAS_XLIB_XRENDER_SURFACE -#include -#endif - -#include "surface-source.c" - -static cairo_user_data_key_t closure_key; - -struct closure { - cairo_device_t *device; - Display *dpy; - Pixmap pix; -}; - -static void -cleanup (void *data) -{ - struct closure *arg = data; - - cairo_device_finish (arg->device); - cairo_device_destroy (arg->device); - - XFreePixmap (arg->dpy, arg->pix); - XCloseDisplay (arg->dpy); - - free (arg); -} - -static cairo_surface_t * -create_source_surface (int size) -{ -#if CAIRO_HAS_XLIB_XRENDER_SURFACE - XRenderPictFormat *xrender_format; - struct closure *data; - cairo_surface_t *surface; - - data = xmalloc (sizeof (struct closure)); - - data->dpy = XOpenDisplay (NULL); - if (!data->dpy) { - return NULL; - } - - xrender_format = XRenderFindStandardFormat (data->dpy, PictStandardARGB32); - - data->pix = XCreatePixmap (data->dpy, DefaultRootWindow (data->dpy), - size, size, xrender_format->depth); - - surface = cairo_xlib_surface_create_with_xrender_format (data->dpy, - data->pix, - DefaultScreenOfDisplay (data->dpy), - xrender_format, - size, size); - data->device = cairo_device_reference (cairo_surface_get_device (surface)); - if (cairo_surface_set_user_data (surface, &closure_key, data, cleanup)) { - cairo_surface_finish (surface); - cairo_surface_destroy (surface); - cleanup (data); - return NULL; - } - - return surface; -#else - return NULL; -#endif -} - -CAIRO_TEST (xlib_surface_source, - "Test using a Xlib surface as the source", - "source", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - preamble, draw) diff --git a/test/xlib-surface.c b/test/xlib-surface.c deleted file mode 100644 index 137b282..0000000 --- a/test/xlib-surface.c +++ /dev/null @@ -1,353 +0,0 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" - -#include -#include - -#include "cairo.h" -#include "cairo-xlib.h" - -#include "cairo-boilerplate-xlib.h" - -#include "buffer-diff.h" - -#define SIZE 100 -#define OFFSCREEN_OFFSET 50 - -cairo_bool_t result = 0; - -#if CAIRO_HAS_XLIB_XRENDER_SURFACE - -#include "cairo-xlib-xrender.h" - -/* Vladimir Vukicevic reported that surfaces were being created with - * mismatching Visuals and XRenderPictFormats. - */ -static cairo_bool_t -surface_compare_visual_and_format (cairo_surface_t *surface) -{ - Display *dpy; - Visual *visual; - XRenderPictFormat *format; - - dpy = cairo_xlib_surface_get_display (surface); - - visual = cairo_xlib_surface_get_visual (surface); - if (visual == NULL) - return TRUE; - - format = cairo_xlib_surface_get_xrender_format (surface); - if (format == NULL) - return TRUE; - - return format == XRenderFindVisualFormat (dpy, visual); - -} -#else - -static cairo_bool_t -surface_compare_visual_and_format (cairo_surface_t *surface) -{ - return TRUE; -} - -#endif - -static cairo_bool_t -check_similar_visual_and_format (cairo_surface_t *surface) -{ - cairo_surface_t *similar; - cairo_bool_t ret; - - similar = cairo_surface_create_similar (surface, - CAIRO_CONTENT_COLOR_ALPHA, - 1, 1); - if (cairo_surface_status (similar)) - return FALSE; - - ret = surface_compare_visual_and_format (similar); - - cairo_surface_destroy (similar); - - return ret; -} - - -static void -draw_pattern (cairo_surface_t *surface) -{ - cairo_t *cr = cairo_create (surface); - int i; - - cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); /* white */ - cairo_paint (cr); - - cairo_set_source_rgba (cr, 0, 0.0, 0.0, 0.50); /* half-alpha-black */ - - for (i = 1; i <= 3; i++) { - int inset = SIZE / 8 * i; - - cairo_rectangle (cr, - inset, inset, - SIZE - 2 * inset, SIZE - 2 * inset); - cairo_fill (cr); - } - - cairo_destroy (cr); -} - -static void -erase_pattern (cairo_surface_t *surface) -{ - cairo_t *cr = cairo_create (surface); - - cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); /* black */ - cairo_paint (cr); - - cairo_destroy (cr); -} - -static cairo_test_status_t -do_test (const cairo_test_context_t *ctx, - Display *dpy, - unsigned char *reference_data, - unsigned char *test_data, - unsigned char *diff_data, - cairo_bool_t use_pixmap, - cairo_bool_t set_size, - cairo_bool_t offscreen) -{ - cairo_surface_t *surface; - cairo_surface_t *test_surface; - cairo_t *test_cr; - buffer_diff_result_t result; - Drawable drawable; - int screen = DefaultScreen (dpy); - - if (use_pixmap && offscreen) - return CAIRO_TEST_SUCCESS; - - if (use_pixmap) { - drawable = XCreatePixmap (dpy, DefaultRootWindow (dpy), - SIZE, SIZE, DefaultDepth (dpy, screen)); - } else { - XSetWindowAttributes xwa; - int x, y; - - xwa.override_redirect = True; - - if (offscreen) { - x = - OFFSCREEN_OFFSET; - y = - OFFSCREEN_OFFSET; - } else { - x = 0; - y = 0; - } - - drawable = XCreateWindow (dpy, DefaultRootWindow (dpy), - x, y, SIZE, SIZE, 0, - DefaultDepth (dpy, screen), InputOutput, - DefaultVisual (dpy, screen), - CWOverrideRedirect, &xwa); - XMapWindow (dpy, drawable); - } - - surface = cairo_xlib_surface_create (dpy, - drawable, - DefaultVisual (dpy, screen), - SIZE, SIZE); - - if (! surface_compare_visual_and_format (surface)) - return CAIRO_TEST_FAILURE; - - if (set_size) { - cairo_xlib_surface_set_size (surface, SIZE, SIZE); - - if (cairo_xlib_surface_get_width (surface) != SIZE || - cairo_xlib_surface_get_height (surface) != SIZE) - return CAIRO_TEST_FAILURE; - } - - if (! check_similar_visual_and_format (surface)) - return CAIRO_TEST_FAILURE; - - draw_pattern (surface); - - test_surface = cairo_image_surface_create_for_data (test_data, - CAIRO_FORMAT_RGB24, - SIZE, SIZE, - SIZE * 4); - - test_cr = cairo_create (test_surface); - cairo_set_source_surface (test_cr, surface, 0, 0); - cairo_paint (test_cr); - - cairo_destroy (test_cr); - cairo_surface_destroy (test_surface); - - /* We erase the surface to black in case we get the same - * memory back again for the pixmap case. - */ - erase_pattern (surface); - cairo_surface_destroy (surface); - - if (use_pixmap) - XFreePixmap (dpy, drawable); - else - XDestroyWindow (dpy, drawable); - - if (offscreen) { - size_t offset = 4 * (SIZE * OFFSCREEN_OFFSET + OFFSCREEN_OFFSET); - - buffer_diff_noalpha (reference_data + offset, - test_data + offset, - diff_data + offset, - SIZE - OFFSCREEN_OFFSET, - SIZE - OFFSCREEN_OFFSET, - 4 * SIZE, - &result); - } else { - buffer_diff_noalpha (reference_data, - test_data, - diff_data, - SIZE, - SIZE, - 4 * SIZE, - &result); - } - - cairo_test_log (ctx, "xlib-surface: %s, %s, %s: %s\n", - set_size ? " size" : "no-size", - use_pixmap ? "pixmap" : "window", - use_pixmap ? " " : (offscreen ? ", offscreen" : ", onscreen"), - image_diff_is_failure (&result, 0) ? "FAIL" : "PASS"); - - if (image_diff_is_failure (&result, 0)) - return CAIRO_TEST_FAILURE; - else - return CAIRO_TEST_SUCCESS; -} - -static cairo_bool_t -check_visual (Display *dpy) -{ - Visual *visual = DefaultVisual (dpy, DefaultScreen (dpy)); - - if ((visual->red_mask == 0xff0000 && - visual->green_mask == 0x00ff00 && - visual->blue_mask == 0x0000ff) || - (visual->red_mask == 0x0000ff && - visual->green_mask == 0x00ff00 && - visual->blue_mask == 0xff0000)) - return 1; - else - return 0; -} - -#undef xcalloc -static void * -xcalloc (const cairo_test_context_t *ctx, size_t a, size_t b) -{ - void *ptr = calloc (a, b); - if (ptr == NULL) { - cairo_test_log (ctx, "xlib-surface: unable to allocate memory, skipping\n"); - abort (); - } - return ptr; -} - -static cairo_test_status_t -preamble (cairo_test_context_t *ctx) -{ - Display *dpy; - unsigned char *reference_data; - unsigned char *test_data; - unsigned char *diff_data; - cairo_surface_t *reference_surface; - cairo_bool_t use_pixmap; - cairo_bool_t set_size; - cairo_bool_t offscreen; - cairo_test_status_t status, result = CAIRO_TEST_UNTESTED; - int stride; - - if (! cairo_test_is_target_enabled (ctx, "xlib")) - goto CLEANUP_TEST; - - dpy = XOpenDisplay (NULL); - if (!dpy) { - cairo_test_log (ctx, "xlib-surface: Cannot open display, skipping\n"); - goto CLEANUP_TEST; - } - - if (!check_visual (dpy)) { - cairo_test_log (ctx, "xlib-surface: default visual is not RGB24 or BGR24, skipping\n"); - goto CLEANUP_DISPLAY; - } - - stride = cairo_format_stride_for_width (CAIRO_FORMAT_RGB24, SIZE); - - reference_data = xcalloc (ctx, SIZE, stride); - test_data = xcalloc (ctx, SIZE, stride); - diff_data = xcalloc (ctx, SIZE, stride); - - reference_surface = cairo_image_surface_create_for_data (reference_data, - CAIRO_FORMAT_RGB24, - SIZE, SIZE, - stride); - - draw_pattern (reference_surface); - cairo_surface_destroy (reference_surface); - - result = CAIRO_TEST_SUCCESS; - - for (set_size = 0; set_size <= 1; set_size++) - for (use_pixmap = 0; use_pixmap <= 1; use_pixmap++) - for (offscreen = 0; offscreen <= 1; offscreen++) { - status = do_test (ctx, dpy, - reference_data, test_data, diff_data, - use_pixmap, set_size, offscreen); - if (status) - result = status; - } - - free (reference_data); - free (test_data); - free (diff_data); - - CLEANUP_DISPLAY: - XCloseDisplay (dpy); - - CLEANUP_TEST: - return result; -} - -CAIRO_TEST (xlib_surface, - "Check creating surfaces for various XWindows", - "xlib", /* keywords */ - NULL, /* requirements */ - 0, 0, - preamble, NULL) diff --git a/test/zero-alpha.c b/test/zero-alpha.c deleted file mode 100644 index 0105cc8..0000000 --- a/test/zero-alpha.c +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright © 2006 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" - -#define SIZE 3 -#define REPS 10 - -/* History: - * - * 2006-06-13 Paul Giblock reports a "Stange alpha channel problem" on - * the cairo mailing list. - * - * 2006-06-13 Carl Worth writes this test in an attempt to reproduce - * the problem. The test first fills in a 3x3 rectangle with red, then - * starts pounding on that center pixel with various forms of - * zero-alpha rendering to see if its value can ever be made to - * change. - * - * 2006-06-13 Paul Giblock reports that this only happens with the - * xlib backend, and then only on some systems. - */ -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - int i; - cairo_surface_t *surface; - uint32_t zero = 0; - - /* First paint background red. */ - cairo_set_source_rgb (cr, 1.0, 0.0, 0.0); /* red */ - cairo_paint (cr); - - /* Then we paint zero-alpha in several ways (always REPS times): */ - - /* 1. fill a rectangle with a zero-alpha solid source. */ - cairo_set_source_rgba (cr, 0.0, 0.0, 0.0, 0.0); /* transparent */ - cairo_rectangle (cr, 1.0, 1.0, 1.0, 1.0); - for (i=0; i < REPS; i++) - cairo_fill_preserve (cr); - cairo_new_path (cr); - - /* 2. paint with a zero-alpha image surface source. */ - surface = cairo_image_surface_create_for_data ((unsigned char *) &zero, - CAIRO_FORMAT_ARGB32, 1, 1, 4); - cairo_set_source_surface (cr, surface, 1, 1); - for (i=0; i < REPS; i++) - cairo_paint (cr); - - /* 3. clip to rectangle then paint with zero-alpha solid source. */ - cairo_rectangle (cr, 1.0, 1.0, 1.0, 1.0); - cairo_clip (cr); - cairo_set_source_rgba (cr, 0.0, 0.0, 0.0, 0.0); /* transparent */ - for (i=0; i < REPS; i++) - cairo_paint (cr); - - /* 4. With the clip still there, paint our image surface. */ - cairo_set_source_surface (cr, surface, 1, 1); - for (i=0; i < REPS; i++) - cairo_paint (cr); - - cairo_surface_finish (surface); /* zero will go out of scope */ - cairo_surface_destroy (surface); - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (zero_alpha, - "Testing that drawing with zero alpha has no effect", - "alpha", /* keywords */ - NULL, /* requirements */ - SIZE, SIZE, - NULL, draw) diff --git a/test/zero-mask.c b/test/zero-mask.c deleted file mode 100644 index 3d2f34d..0000000 --- a/test/zero-mask.c +++ /dev/null @@ -1,198 +0,0 @@ -/* - * Copyright © 2010 Red Hat, Inc. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Benjamin Otte - */ - -#include "cairo-test.h" - -#define RECT 10 -#define SPACE 5 - -static void -paint_with_alpha (cairo_t *cr) -{ - cairo_paint_with_alpha (cr, 0.0); -} - -static void -mask_with_solid (cairo_t *cr) -{ - cairo_pattern_t *pattern = cairo_pattern_create_rgba (1, 0, 0, 0); - - cairo_mask (cr, pattern); - - cairo_pattern_destroy (pattern); -} - -static void -mask_with_empty_gradient (cairo_t *cr) -{ - cairo_pattern_t *pattern = cairo_pattern_create_linear (1, 2, 3, 4); - - cairo_mask (cr, pattern); - - cairo_pattern_destroy (pattern); -} - -static void -mask_with_gradient (cairo_t *cr) -{ - cairo_pattern_t *pattern = cairo_pattern_create_radial (1, 2, 3, 4, 5, 6); - - cairo_pattern_add_color_stop_rgba (pattern, 0, 1, 0, 0, 0); - cairo_pattern_add_color_stop_rgba (pattern, 0, 0, 0, 1, 0); - - cairo_mask (cr, pattern); - - cairo_pattern_destroy (pattern); -} - -static void -mask_with_surface (cairo_t *cr) -{ - cairo_surface_t *surface = cairo_surface_create_similar (cairo_get_target (cr), - CAIRO_CONTENT_COLOR_ALPHA, - RECT, - RECT); - - cairo_mask_surface (cr, surface, 0, 0); - - cairo_surface_destroy (surface); -} - -static void -mask_with_alpha_surface (cairo_t *cr) -{ - cairo_surface_t *surface = cairo_surface_create_similar (cairo_get_target (cr), - CAIRO_CONTENT_ALPHA, - RECT / 2, - RECT / 2); - cairo_pattern_t *pattern = cairo_pattern_create_for_surface (surface); - cairo_pattern_set_extend (pattern, CAIRO_EXTEND_REFLECT); - - cairo_mask (cr, pattern); - - cairo_pattern_destroy (pattern); - cairo_surface_destroy (surface); -} - -static void -mask_with_nonclear_surface (cairo_t *cr) -{ - static unsigned char data[8 * 4] = { 0, }; - cairo_surface_t *surface = cairo_image_surface_create_for_data (data, - CAIRO_FORMAT_A1, - 16, 8, 4); - - cairo_mask_surface (cr, surface, 0, 0); - - cairo_surface_destroy (surface); -} - -static void -mask_with_0x0_surface (cairo_t *cr) -{ - cairo_surface_t *surface = cairo_surface_create_similar (cairo_get_target (cr), - CAIRO_CONTENT_COLOR_ALPHA, - 0, 0); - - cairo_mask_surface (cr, surface, 0, 0); - - cairo_surface_destroy (surface); -} - -static void -mask_with_extend_none (cairo_t *cr) -{ - cairo_surface_t *surface = cairo_surface_create_similar (cairo_get_target (cr), - CAIRO_CONTENT_COLOR_ALPHA, - RECT, - RECT); - - cairo_mask_surface (cr, surface, 2 * RECT, 2 * RECT); - - cairo_surface_destroy (surface); -} - -typedef void (* mask_func_t) (cairo_t *); - -static mask_func_t mask_funcs[] = { - paint_with_alpha, - mask_with_solid, - mask_with_empty_gradient, - mask_with_gradient, - mask_with_surface, - mask_with_alpha_surface, - mask_with_nonclear_surface, - mask_with_0x0_surface, - mask_with_extend_none -}; - -static cairo_operator_t operators[] = { - CAIRO_OPERATOR_CLEAR, - CAIRO_OPERATOR_SOURCE, - CAIRO_OPERATOR_OVER, - CAIRO_OPERATOR_IN, - CAIRO_OPERATOR_DEST_ATOP, - CAIRO_OPERATOR_SATURATE, - CAIRO_OPERATOR_MULTIPLY -}; - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - unsigned int i, op; - - /* 565-compatible gray background */ - cairo_set_source_rgb (cr, 0.51613, 0.55555, 0.51613); - cairo_paint (cr); - - cairo_set_source_rgb (cr, 0.0, 1.0, 0.0); /* green */ - /* mask with zero-alpha in several ways */ - - cairo_translate (cr, SPACE, SPACE); - - for (op = 0; op < ARRAY_LENGTH (operators); op++) { - cairo_set_operator (cr, operators[op]); - - for (i = 0; i < ARRAY_LENGTH (mask_funcs); i++) { - cairo_save (cr); - cairo_translate (cr, i * (RECT + SPACE), op * (RECT + SPACE)); - cairo_rectangle (cr, 0, 0, RECT, RECT); - cairo_clip (cr); - mask_funcs[i] (cr); - cairo_restore (cr); - } - } - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (zero_mask, - "Testing that masking with zero alpha works", - "alpha, mask", /* keywords */ - NULL, /* requirements */ - SPACE + (RECT + SPACE) * ARRAY_LENGTH (mask_funcs), - SPACE + (RECT + SPACE) * ARRAY_LENGTH (operators), - NULL, draw) diff --git a/util/backtrace-symbols.c b/util/backtrace-symbols.c deleted file mode 100644 index 045ad78..0000000 --- a/util/backtrace-symbols.c +++ /dev/null @@ -1,377 +0,0 @@ -/* - A hacky replacement for backtrace_symbols in glibc - - backtrace_symbols in glibc looks up symbols using dladdr which is limited in - the symbols that it sees. libbacktracesymbols opens the executable and shared - libraries using libbfd and will look up backtrace information using the symbol - table and the dwarf line information. - - It may make more sense for this program to use libelf instead of libbfd. - However, I have not investigated that yet. - - Derived from addr2line.c from GNU Binutils by Jeff Muizelaar - - Copyright 2007 Jeff Muizelaar -*/ - -/* addr2line.c -- convert addresses to line number and function name - Copyright 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. - Contributed by Ulrich Lauther - - This file was part of GNU Binutils. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA. */ - -#define fatal(a, b) exit(1) -#define bfd_fatal(a) exit(1) -#define bfd_nonfatal(a) exit(1) -#define list_matching_formats(a) exit(1) - -/* 2 characters for each byte, plus 1 each for 0, x, and NULL */ -#define PTRSTR_LEN (sizeof(void *) * 2 + 3) -#define true 1 -#define false 0 - -#define _GNU_SOURCE -#include -#include -#include -#include -#include -#include -#include -#include -#if 0 - -void (*dbfd_init)(void); -bfd_vma (*dbfd_scan_vma)(const char *string, const char **end, int base); -bfd* (*dbfd_openr)(const char *filename, const char *target); -bfd_boolean (*dbfd_check_format)(bfd *abfd, bfd_format format); -bfd_boolean (*dbfd_check_format_matches)(bfd *abfd, bfd_format format, char ***matching); -bfd_boolean (*dbfd_close)(bfd *abfd); -bfd_boolean (*dbfd_map_over_sections)(bfd *abfd, void (*func)(bfd *abfd, asection *sect, void *obj), - void *obj); -#define bfd_init dbfd_init - -static void load_funcs(void) -{ - void * handle = dlopen("libbfd.so", RTLD_NOW); - dbfd_init = dlsym(handle, "bfd_init"); - dbfd_scan_vma = dlsym(handle, "bfd_scan_vma"); - dbfd_openr = dlsym(handle, "bfd_openr"); - dbfd_check_format = dlsym(handle, "bfd_check_format"); - dbfd_check_format_matches = dlsym(handle, "bfd_check_format_matches"); - dbfd_close = dlsym(handle, "bfd_close"); - dbfd_map_over_sections = dlsym(handle, "bfd_map_over_sections"); -} - -#endif - - -static asymbol **syms; /* Symbol table. */ - -/* 150 isn't special; it's just an arbitrary non-ASCII char value. */ -#define OPTION_DEMANGLER (150) - -static void slurp_symtab(bfd * abfd); -static void find_address_in_section(bfd *abfd, asection *section, void *data); - -/* Read in the symbol table. */ - -static void slurp_symtab(bfd * abfd) -{ - long symcount; - unsigned int size; - - if ((bfd_get_file_flags(abfd) & HAS_SYMS) == 0) - return; - - symcount = bfd_read_minisymbols(abfd, false, (PTR) & syms, &size); - if (symcount == 0) - symcount = bfd_read_minisymbols(abfd, true /* dynamic */ , - (PTR) & syms, &size); - - if (symcount < 0) - bfd_fatal(bfd_get_filename(abfd)); -} - -/* These global variables are used to pass information between - translate_addresses and find_address_in_section. */ - -static bfd_vma pc; -static const char *filename; -static const char *functionname; -static unsigned int line; -static int found; - -/* Look for an address in a section. This is called via - bfd_map_over_sections. */ - -static void find_address_in_section(bfd *abfd, asection *section, void *data __attribute__ ((__unused__)) ) -{ - bfd_vma vma; - bfd_size_type size; - - if (found) - return; - - if ((bfd_get_section_flags(abfd, section) & SEC_ALLOC) == 0) - return; - - vma = bfd_get_section_vma(abfd, section); - if (pc < vma) - return; - - size = bfd_section_size(abfd, section); - if (pc >= vma + size) - return; - - found = bfd_find_nearest_line(abfd, section, syms, pc - vma, - &filename, &functionname, &line); -} - -/* Read hexadecimal addresses from stdin, translate into - file_name:line_number and optionally function name. */ -#if 0 -static void translate_addresses(bfd * abfd, char (*addr)[PTRSTR_LEN], int naddr) -{ - while (naddr) { - pc = bfd_scan_vma(addr[naddr-1], NULL, 16); - - found = false; - bfd_map_over_sections(abfd, find_address_in_section, - (PTR) NULL); - - if (!found) { - printf("[%s] \?\?() \?\?:0\n",addr[naddr-1]); - } else { - const char *name; - - name = functionname; - if (name == NULL || *name == '\0') - name = "??"; - if (filename != NULL) { - char *h; - - h = strrchr(filename, '/'); - if (h != NULL) - filename = h + 1; - } - - printf("\t%s:%u\t", filename ? filename : "??", - line); - - printf("%s()\n", name); - - } - - /* fflush() is essential for using this command as a server - child process that reads addresses from a pipe and responds - with line number information, processing one address at a - time. */ - fflush(stdout); - naddr--; - } -} -#endif - -static char** translate_addresses_buf(bfd * abfd, bfd_vma *addr, int naddr) -{ - int naddr_orig = naddr; - char b; - int total = 0; - enum { Count, Print } state; - char *buf = &b; - int len = 0; - char **ret_buf = NULL; - /* iterate over the formating twice. - * the first time we count how much space we need - * the second time we do the actual printing */ - for (state=Count; state<=Print; state++) { - if (state == Print) { - ret_buf = malloc(total + sizeof(char*)*naddr); - buf = (char*)(ret_buf + naddr); - len = total; - } - while (naddr) { - if (state == Print) - ret_buf[naddr-1] = buf; - pc = addr[naddr-1]; - - found = false; - bfd_map_over_sections(abfd, find_address_in_section, - (PTR) NULL); - - if (!found) { - total += snprintf(buf, len, "[0x%llx] \?\?() \?\?:0",(long long unsigned int) addr[naddr-1]) + 1; - } else { - const char *name; - - name = functionname; - if (name == NULL || *name == '\0') - name = "??"; - if (filename != NULL) { - char *h; - - h = strrchr(filename, '/'); - if (h != NULL) - filename = h + 1; - } - total += snprintf(buf, len, "%s:%u\t%s()", filename ? filename : "??", - line, name) + 1; - - } - if (state == Print) { - /* set buf just past the end of string */ - buf = buf + total + 1; - } - naddr--; - } - naddr = naddr_orig; - } - return ret_buf; -} -/* Process a file. */ - -static char **process_file(const char *file_name, bfd_vma *addr, int naddr) -{ - bfd *abfd; - char **matching; - char **ret_buf; - - abfd = bfd_openr(file_name, NULL); - - if (abfd == NULL) - bfd_fatal(file_name); - - if (bfd_check_format(abfd, bfd_archive)) - fatal("%s: can not get addresses from archive", file_name); - - if (!bfd_check_format_matches(abfd, bfd_object, &matching)) { - bfd_nonfatal(bfd_get_filename(abfd)); - if (bfd_get_error() == - bfd_error_file_ambiguously_recognized) { - list_matching_formats(matching); - free(matching); - } - xexit(1); - } - - slurp_symtab(abfd); - - ret_buf = translate_addresses_buf(abfd, addr, naddr); - - free (syms); - syms = NULL; - - bfd_close(abfd); - return ret_buf; -} - -#define MAX_DEPTH 16 - -struct file_match { - const char *file; - void *address; - void *base; - void *hdr; -}; - -static int find_matching_file(struct dl_phdr_info *info, - size_t size, void *data) -{ - struct file_match *match = data; - /* This code is modeled from Gfind_proc_info-lsb.c:callback() from libunwind */ - long n; - const ElfW(Phdr) *phdr; - ElfW(Addr) load_base = info->dlpi_addr; - phdr = info->dlpi_phdr; - for (n = info->dlpi_phnum; --n >= 0; phdr++) { - if (phdr->p_type == PT_LOAD) { - ElfW(Addr) vaddr = phdr->p_vaddr + load_base; - if (match->address >= vaddr && match->address < vaddr + phdr->p_memsz) { - /* we found a match */ - match->file = info->dlpi_name; - match->base = info->dlpi_addr; - } - } - } - return 0; -} - -char **backtrace_symbols(void *const *buffer, int size) -{ - int stack_depth = size - 1; - int x,y; - /* discard calling function */ - int total = 0; - - char ***locations; - char **final; - char *f_strings; - - locations = malloc(sizeof(char**) * (stack_depth+1)); - - bfd_init(); - for(x=stack_depth, y=0; x>=0; x--, y++){ - struct file_match match = { .address = buffer[x] }; - char **ret_buf; - bfd_vma addr; - dl_iterate_phdr(find_matching_file, &match); - addr = buffer[x] - match.base; - if (match.file && strlen(match.file)) - ret_buf = process_file(match.file, &addr, 1); - else - ret_buf = process_file("/proc/self/exe", &addr, 1); - locations[x] = ret_buf; - total += strlen(ret_buf[0]) + 1; - } - - /* allocate the array of char* we are going to return and extra space for - * all of the strings */ - final = malloc(total + (stack_depth + 1) * sizeof(char*)); - /* get a pointer to the extra space */ - f_strings = (char*)(final + stack_depth + 1); - - /* fill in all of strings and pointers */ - for(x=stack_depth; x>=0; x--){ - strcpy(f_strings, locations[x][0]); - free(locations[x]); - final[x] = f_strings; - f_strings += strlen(f_strings) + 1; - } - - free(locations); - - return final; -} - -void -backtrace_symbols_fd(void *const *buffer, int size, int fd) -{ - int j; - char **strings; - - strings = backtrace_symbols(buffer, size); - if (strings == NULL) { - perror("backtrace_symbols"); - exit(EXIT_FAILURE); - } - - for (j = 0; j < size; j++) - printf("%s\n", strings[j]); - - free(strings); -}