mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 16:08:04 +02:00
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.
This commit is contained in:
parent
bc3cff2a4f
commit
4cef308726
1 changed files with 54 additions and 5 deletions
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
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,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue