Line data Source code
1 : /* cairo - a vector graphics library with display and print output
2 : *
3 : * Copyright © 2002 University of Southern California
4 : * Copyright © 2005 Red Hat, Inc.
5 : *
6 : * This library is free software; you can redistribute it and/or
7 : * modify it either under the terms of the GNU Lesser General Public
8 : * License version 2.1 as published by the Free Software Foundation
9 : * (the "LGPL") or, at your option, under the terms of the Mozilla
10 : * Public License Version 1.1 (the "MPL"). If you do not alter this
11 : * notice, a recipient may use your version of this file under either
12 : * the MPL or the LGPL.
13 : *
14 : * You should have received a copy of the LGPL along with this library
15 : * in the file COPYING-LGPL-2.1; if not, write to the Free Software
16 : * Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA
17 : * You should have received a copy of the MPL along with this library
18 : * in the file COPYING-MPL-1.1
19 : *
20 : * The contents of this file are subject to the Mozilla Public License
21 : * Version 1.1 (the "License"); you may not use this file except in
22 : * compliance with the License. You may obtain a copy of the License at
23 : * http://www.mozilla.org/MPL/
24 : *
25 : * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY
26 : * OF ANY KIND, either express or implied. See the LGPL or the MPL for
27 : * the specific language governing rights and limitations.
28 : *
29 : * The Original Code is the cairo graphics library.
30 : *
31 : * The Initial Developer of the Original Code is University of Southern
32 : * California.
33 : *
34 : * Contributor(s):
35 : * Carl D. Worth <cworth@cworth.org>
36 : */
37 :
38 : #ifndef _CAIRO_SLOPE_PRIVATE_H
39 : #define _CAIRO_SLOPE_PRIVATE_H
40 :
41 : #include "cairo-types-private.h"
42 : #include "cairo-fixed-private.h"
43 :
44 : static inline void
45 0 : _cairo_slope_init (cairo_slope_t *slope,
46 : const cairo_point_t *a,
47 : const cairo_point_t *b)
48 : {
49 0 : slope->dx = b->x - a->x;
50 0 : slope->dy = b->y - a->y;
51 0 : }
52 :
53 : static inline cairo_bool_t
54 0 : _cairo_slope_equal (const cairo_slope_t *a, const cairo_slope_t *b)
55 : {
56 0 : return _cairo_int64_eq (_cairo_int32x32_64_mul (a->dy, b->dx),
57 : _cairo_int32x32_64_mul (b->dy, a->dx));
58 : }
59 :
60 : static inline cairo_bool_t
61 0 : _cairo_slope_backwards (const cairo_slope_t *a, const cairo_slope_t *b)
62 : {
63 0 : return _cairo_int64_negative (_cairo_int64_add (_cairo_int32x32_64_mul (a->dx, b->dx),
64 : _cairo_int32x32_64_mul (a->dy, b->dy)));
65 : }
66 :
67 : cairo_private int
68 : _cairo_slope_compare (const cairo_slope_t *a,
69 : const cairo_slope_t *b) cairo_pure;
70 :
71 :
72 : #endif /* _CAIRO_SLOPE_PRIVATE_H */
|