Opensource Compliance Issue.
[platform/core/graphics/cairo.git] / test / rectangle-rounding-error.c
1 /*
2  * Copyright © 2005 Bertram Felgenhauer
3  *
4  * Permission to use, copy, modify, distribute, and sell this software
5  * and its documentation for any purpose is hereby granted without
6  * fee, provided that the above copyright notice appear in all copies
7  * and that both that copyright notice and this permission notice
8  * appear in supporting documentation, and that the name of
9  * the author not be used in advertising or publicity pertaining to
10  * distribution of the software without specific, written prior
11  * permission. The author makes no representations about the
12  * suitability of this software for any purpose.  It is provided "as
13  * is" without express or implied warranty.
14  *
15  * THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
16  * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
17  * FITNESS, IN NO EVENT SHALL THE AUTHOR. BE LIABLE FOR ANY SPECIAL,
18  * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
19  * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
20  * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
21  * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
22  *
23  * Author: Bertram Felgenhauer <int-e@gmx.de>
24  */
25
26 #include "cairo-test.h"
27
28 /* Test case for:
29  *
30  *      https://bugs.freedesktop.org/show_bug.cgi?id=4137
31  */
32
33 static cairo_test_status_t
34 draw (cairo_t *cr, int width, int height)
35 {
36     cairo_set_source_rgb (cr, 1, 1, 1);
37     cairo_paint (cr);
38
39     cairo_set_antialias (cr, CAIRO_ANTIALIAS_NONE);
40     cairo_set_source_rgb (cr, 0, 0, 0);
41
42     cairo_translate(cr, -300, -300);
43     cairo_scale(cr, 677.0/26, 677.0/26);
44     cairo_translate(cr, 1, 1);
45
46     /* this should draw a seamless 2x2 rectangle */
47     cairo_rectangle(cr, 11, 11, 1, 1);
48     cairo_rectangle(cr, 11, 12, 1, 1);
49     cairo_rectangle(cr, 12, 11, 1, 1);
50     cairo_rectangle(cr, 12, 12, 1, 1);
51
52     cairo_set_source_rgb(cr, 0, 0, 0);
53     cairo_fill(cr);
54
55     return CAIRO_TEST_SUCCESS;
56 }
57
58 CAIRO_TEST (rectangle_rounding_error,
59             "This demonstrates (or not) a rounding error that causes a gap between "
60             "two neighbouring rectangles.",
61             "trap", /* keywords */
62             "target=raster", /* requirements */
63             76, 76,
64             NULL, draw)