#include "qregion.h"
#include "qpointarray.h"
#include "qbuffer.h"
#include "qimage.h"
#include "qbitmap.h"
#include "qt_x11_p.h"
#include <stdlib.h>
#include <limits.h>
Clases |
struct | QRegionPrivate |
struct | _POINTBLOCK |
struct | BRESINFO |
struct | _EdgeTableEntry |
struct | _ScanLineList |
struct | EdgeTable |
struct | _ScanLineListBlock |
struct | BOX |
struct | _XRegion |
'defines' |
#define | RectangleOut 0 |
#define | RectangleIn 1 |
#define | RectanglePart 2 |
#define | EvenOddRule 0 |
#define | WindingRule 1 |
#define | _XREGION_H |
#define | MAX(a, b) (((a) > (b)) ? (a) : (b)) |
#define | MIN(a, b) (((a) < (b)) ? (a) : (b)) |
#define | EXTENTCHECK(r1, r2) |
#define | EXTENTS(r, idRect) |
#define | MEMCHECK(reg, rect, firstrect) |
#define | EMPTY_REGION(pReg) pReg->numRects = 0 |
#define | REGION_NOT_EMPTY(pReg) pReg->numRects |
#define | NUMPTSTOBUFFER 200 |
#define | MERGERECT(r) |
#define | BRESINITPGON(dy, x1, x2, xStart, d, m, m1, incr1, incr2) |
#define | BRESINCRPGON(d, minval, m, m1, incr1, incr2) |
#define | BRESINITPGONSTRUCT(dmaj, min1, min2, bres) |
#define | BRESINCRPGONSTRUCT(bres) BRESINCRPGON(bres.d, bres.minor_axis, bres.m, bres.m1, bres.incr1, bres.incr2) |
#define | CLOCKWISE 1 |
#define | COUNTERCLOCKWISE -1 |
#define | SLLSPERBLOCK 25 |
#define | EVALUATEEDGEWINDING(pAET, pPrevAET, y, fixWAET) |
#define | EVALUATEEDGEEVENODD(pAET, pPrevAET, y) |
#define | LARGE_COORDINATE 1000000 |
#define | SMALL_COORDINATE -LARGE_COORDINATE |
#define | AddSpan |
'typedefs' |
typedef struct _POINTBLOCK | POINTBLOCK |
typedef void(* | voidProcp )(...) |
typedef struct _EdgeTableEntry | EdgeTableEntry |
typedef struct _ScanLineList | ScanLineList |
typedef struct _ScanLineListBlock | ScanLineListBlock |
Funciones |
void | qt_setCoords (QRect *r, int xp1, int yp1, int xp2, int yp2) |
QRegionPrivate * | qt_bitmapToRegion (const QBitmap &bitmap) |
Documentación de los 'defines'
Valor:{ \
qt_setCoords( &xr, prev1, y, x-1, y ); \
UnionRectWithRegion( &xr, region, region ); \
}
#define BRESINCRPGON |
( |
|
d, |
|
|
|
minval, |
|
|
|
m, |
|
|
|
m1, |
|
|
|
incr1, |
|
|
|
incr2 |
|
) |
| |
Valor:{ \
if (m1 > 0) { \
if (d > 0) { \
minval += m1; \
d += incr1; \
} \
else { \
minval += m; \
d += incr2; \
} \
} else {\
if (d >= 0) { \
minval += m1; \
d += incr1; \
} \
else { \
minval += m; \
d += incr2; \
} \
} \
}
#define BRESINCRPGONSTRUCT |
( |
|
bres | ) |
BRESINCRPGON(bres.d, bres.minor_axis, bres.m, bres.m1, bres.incr1, bres.incr2) |
#define BRESINITPGON |
( |
|
dy, |
|
|
|
x1, |
|
|
|
x2, |
|
|
|
xStart, |
|
|
|
d, |
|
|
|
m, |
|
|
|
m1, |
|
|
|
incr1, |
|
|
|
incr2 |
|
) |
| |
Valor:{ \
int dx; \
\
\
if ((dy) != 0) { \
xStart = (x1); \
dx = (x2) - xStart; \
if (dx < 0) { \
m = dx / (dy); \
m1 = m - 1; \
incr1 = -2 * dx + 2 * (dy) * m1; \
incr2 = -2 * dx + 2 * (dy) * m; \
d = 2 * m * (dy) - 2 * dx - 2 * (dy); \
} else { \
m = dx / (dy); \
m1 = m + 1; \
incr1 = 2 * dx - 2 * (dy) * m1; \
incr2 = 2 * dx - 2 * (dy) * m; \
d = -2 * m * (dy) + 2 * dx; \
} \
} \
}
#define BRESINITPGONSTRUCT |
( |
|
dmaj, |
|
|
|
min1, |
|
|
|
min2, |
|
|
|
bres |
|
) |
| |
Valor:BRESINITPGON(dmaj, min1, min2, bres.minor_axis, bres.d, \
bres.m, bres.m1, bres.incr1, bres.incr2)
#define COUNTERCLOCKWISE -1 |
#define EMPTY_REGION |
( |
|
pReg | ) |
pReg->numRects = 0 |
#define EVALUATEEDGEEVENODD |
( |
|
pAET, |
|
|
|
pPrevAET, |
|
|
|
y |
|
) |
| |
Valor:{ \
if (pAET->ymax == y) { \
pPrevAET->next = pAET->next; \
pAET = pPrevAET->next; \
if (pAET) \
pAET->back = pPrevAET; \
} \
else { \
BRESINCRPGONSTRUCT(pAET->bres) \
pPrevAET = pAET; \
pAET = pAET->next; \
} \
}
#define EVALUATEEDGEWINDING |
( |
|
pAET, |
|
|
|
pPrevAET, |
|
|
|
y, |
|
|
|
fixWAET |
|
) |
| |
Valor:{ \
if (pAET->ymax == y) { \
pPrevAET->next = pAET->next; \
pAET = pPrevAET->next; \
fixWAET = 1; \
if (pAET) \
pAET->back = pPrevAET; \
} \
else { \
BRESINCRPGONSTRUCT(pAET->bres) \
pPrevAET = pAET; \
pAET = pAET->next; \
} \
}
#define EXTENTCHECK |
( |
|
r1, |
|
|
|
r2 |
|
) |
| |
Valor:((r1)->right() >= (r2)->left() && \
(r1)->left() <= (r2)->right() && \
(r1)->bottom() >= (r2)->top() && \
(r1)->top() <= (r2)->bottom())
#define EXTENTS |
( |
|
r, |
|
|
|
idRect |
|
) |
| |
Valor:{\
if((r)->left() < (idRect)->extents.left())\
(idRect)->extents.setLeft( (r)->left() );\
if((r)->top() < (idRect)->extents.top())\
(idRect)->extents.setTop( (r)->top() );\
if((r)->right() > (idRect)->extents.right())\
(idRect)->extents.setRight( (r)->right() );\
if((r)->bottom() > (idRect)->extents.bottom())\
(idRect)->extents.setBottom( (r)->bottom() );\
}
#define LARGE_COORDINATE 1000000 |
#define MAX |
( |
|
a, |
|
|
|
b |
|
) |
| (((a) > (b)) ? (a) : (b)) |
#define MEMCHECK |
( |
|
reg, |
|
|
|
rect, |
|
|
|
firstrect |
|
) |
| |
Valor:{\
if ((reg)->numRects >= (int)((reg)->rects.size()-1)){\
firstrect.resize(firstrect.size() * 2); \
(rect) = (firstrect).data() + (reg)->numRects;\
}\
}
Valor:if ((pReg->numRects != 0) && \
(pNextRect[-1].top() == y1) && \
(pNextRect[-1].bottom() == y2) && \
(pNextRect[-1].right() >= r->left()-1)) { \
if (pNextRect[-1].right() < r->right()) { \
pNextRect[-1].setRight( r->right() ); \
Q_ASSERT(pNextRect[-1].left() <= pNextRect[-1].right()); \
} \
} else { \
MEMCHECK(pReg, pNextRect, pReg->rects) \
qt_setCoords( pNextRect, r->left(), y1, r->right(), y2 ); \
pReg->numRects++; \
pNextRect++; \
} \
r++;
#define MIN |
( |
|
a, |
|
|
|
b |
|
) |
| (((a) < (b)) ? (a) : (b)) |
#define NUMPTSTOBUFFER 200 |
#define REGION_NOT_EMPTY |
( |
|
pReg | ) |
pReg->numRects |
#define SMALL_COORDINATE -LARGE_COORDINATE |
Documentación de los 'typedefs'
Documentación de las funciones