aboutsummaryrefslogtreecommitdiff
path: root/xorg-server/render/renderedge.c
diff options
context:
space:
mode:
Diffstat (limited to 'xorg-server/render/renderedge.c')
-rw-r--r--xorg-server/render/renderedge.c91
1 files changed, 91 insertions, 0 deletions
diff --git a/xorg-server/render/renderedge.c b/xorg-server/render/renderedge.c
new file mode 100644
index 000000000..d0ee30716
--- /dev/null
+++ b/xorg-server/render/renderedge.c
@@ -0,0 +1,91 @@
+/*
+ * Copyright © 2004 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.
+ */
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+#include "renderedge.h"
+
+/*
+ * Compute the smallest value no less than y which is on a
+ * grid row
+ */
+
+_X_EXPORT xFixed
+RenderSampleCeilY (xFixed y, int n)
+{
+ return pixman_sample_ceil_y (y, n);
+}
+
+#define _div(a,b) ((a) >= 0 ? (a) / (b) : -((-(a) + (b) - 1) / (b)))
+
+/*
+ * Compute the largest value no greater than y which is on a
+ * grid row
+ */
+_X_EXPORT xFixed
+RenderSampleFloorY (xFixed y, int n)
+{
+ return pixman_sample_floor_y (y, n);
+}
+
+/*
+ * Step an edge by any amount (including negative values)
+ */
+_X_EXPORT void
+RenderEdgeStep (RenderEdge *e, int n)
+{
+ pixman_edge_step (e, n);
+}
+
+/*
+ * Initialize one edge structure given the line endpoints and a
+ * starting y value
+ */
+_X_EXPORT void
+RenderEdgeInit (RenderEdge *e,
+ int n,
+ xFixed y_start,
+ xFixed x_top,
+ xFixed y_top,
+ xFixed x_bot,
+ xFixed y_bot)
+{
+ pixman_edge_init (e, n, y_start, x_top, y_top, x_bot, y_bot);
+}
+
+/*
+ * Initialize one edge structure given a line, starting y value
+ * and a pixel offset for the line
+ */
+_X_EXPORT void
+RenderLineFixedEdgeInit (RenderEdge *e,
+ int n,
+ xFixed y,
+ xLineFixed *line,
+ int x_off,
+ int y_off)
+{
+ pixman_line_fixed_edge_init (e, n, y, (pixman_line_fixed_t *)line, x_off, y_off);
+}
+