diff options
| author | sanine <sanine.not@pm.me> | 2022-10-12 12:03:23 -0500 | 
|---|---|---|
| committer | sanine <sanine.not@pm.me> | 2022-10-12 12:03:23 -0500 | 
| commit | 530ffd0b7d3c39757b20f00716e486b5caf89aff (patch) | |
| tree | 76b35fdf57317038acf6b828871f6ae25fce2ebe /libs/cairo-1.16.0/test/rel-path.c | |
| parent | 3dbe9332e47c143a237db12440f134caebd1cfbe (diff) | |
add cairo
Diffstat (limited to 'libs/cairo-1.16.0/test/rel-path.c')
| -rw-r--r-- | libs/cairo-1.16.0/test/rel-path.c | 129 | 
1 files changed, 129 insertions, 0 deletions
| diff --git a/libs/cairo-1.16.0/test/rel-path.c b/libs/cairo-1.16.0/test/rel-path.c new file mode 100644 index 0000000..d1ef259 --- /dev/null +++ b/libs/cairo-1.16.0/test/rel-path.c @@ -0,0 +1,129 @@ +/* + * 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) | 
