| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- /*
- * 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)
|