Commit 4cef3087 authored by Keith Whitwell's avatar Keith Whitwell

util: add rectangle helpers to u_rect.h

This begins a process of repurposing this file.  The existing usage is
as a header file for some software blit fallbacks, which should be
moved to a more appropriately named header.
parent bc3cff2a
......@@ -26,19 +26,68 @@
**************************************************************************/
/**
* Pipe copy/fill rect helpers.
#ifndef U_RECT_H
#define U_RECT_H
#include "pipe/p_compiler.h"
struct u_rect {
int x0, x1;
int y0, y1;
};
/* Do two rectangles intersect?
*/
static INLINE boolean
u_rect_test_intersection(const struct u_rect *a,
const struct u_rect *b)
{
return (!(a->x1 < b->x0 ||
b->x1 < a->x0 ||
a->y1 < b->y0 ||
b->y1 < a->y0));
}
/* Find the intersection of two rectangles known to intersect.
*/
static INLINE void
u_rect_find_intersection(const struct u_rect *a,
struct u_rect *b)
{
/* Caller should verify intersection exists before calling.
*/
if (b->x0 < a->x0) b->x0 = a->x0;
if (b->x1 > a->x1) b->x1 = a->x1;
if (b->y0 < a->y0) b->y0 = a->y0;
if (b->y1 > a->y1) b->y1 = a->y1;
}
#ifndef U_RECT_H
#define U_RECT_H
static INLINE void
u_rect_possible_intersection(const struct u_rect *a,
struct u_rect *b)
{
if (u_rect_test_intersection(a,b)) {
u_rect_find_intersection(a,b);
}
else {
b->x0 = b->x1 = b->y0 = b->y1 = 0;
}
}
#include "pipe/p_format.h"
#include "util/u_pack_color.h"
/**********************************************************************
* Pipe copy/fill rect helpers.
*/
/* These really should move to a different file:
*/
#include "pipe/p_format.h"
extern void
util_copy_rect(ubyte * dst, enum pipe_format format,
unsigned dst_stride, unsigned dst_x, unsigned dst_y,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment