Computer Assisted Medical Intervention Tool Kit  version 6.0
Loading...
Searching...
No Matches
qtcanvas.cpp File Reference
#include "qtcanvas.h"
#include <QtGui/QApplication>
#include <QtGui/QBitmap>
#include <QtGui/QDesktopWidget>
#include <QtGui/QImage>
#include <QtGui/QPainter>
#include <QtCore/QTimer>
#include <QtCore/qhash.h>
#include <QtCore/qset.h>
#include <QtCore/qalgorithms.h>
#include <QtGui/qevent.h>
#include <QtGui/qpainterpath.h>
#include <stdlib.h>

Classes

struct  _EdgeTableEntry
struct  _ScanLineList
struct  _ScanLineListBlock
struct  BRESINFO
struct  DDXPointRec
struct  EdgeTable
class  QPolygonalProcessor
class  QtCanvasChunk
class  QtCanvasClusterizer
class  QtCanvasData
class  QtCanvasItemExtra
class  QtCanvasItemLess
class  QtCanvasPolygonScanner
class  QtCanvasViewData
class  QtCanvasWidget
class  QtPolygonScanner

Macros

#define BRESINCRPGON(d, minval, m, m1, incr1, incr2)
#define BRESINCRPGONSTRUCT(bres)
#define BRESINITPGON(dy, x1, x2, xStart, d, m, m1, incr1, incr2)
#define BRESINITPGONSTRUCT(dmaj, min1, min2, bres)
#define EVALUATEEDGEEVENODD(pAET, pPrevAET, y)
#define EVALUATEEDGEWINDING(pAET, pPrevAET, y, fixWAET)
#define MAXINT   0x7fffffff
#define MININT   -MAXINT
#define NUMPTSTOBUFFER   200
#define SLLSPERBLOCK   25

Typedefs

typedef struct DDXPointRecDDXPointPtr
typedef struct _EdgeTableEntry EdgeTableEntry
typedef struct _ScanLineList ScanLineList
typedef struct _ScanLineListBlock ScanLineListBlock

Functions

static bool collision_double_dispatch (const QtCanvasSprite *s1, const QtCanvasPolygonalItem *p1, const QtCanvasRectangle *r1, const QtCanvasEllipse *e1, const QtCanvasText *t1, const QtCanvasSprite *s2, const QtCanvasPolygonalItem *p2, const QtCanvasRectangle *r2, const QtCanvasEllipse *e2, const QtCanvasText *t2)
static const QBrush & defaultPolygonBrush ()
static const QPen & defaultPolygonPen ()
static int gcd (int a, int b)
static void include (QRect &r, const QRect &rect)
static void micomputeWAET (EdgeTableEntry *AET)
static bool miCreateETandAET (int count, DDXPointPtr pts, EdgeTable *ET, EdgeTableEntry *AET, EdgeTableEntry *pETEs, ScanLineListBlock *pSLLBlock)
static void miFreeStorage (ScanLineListBlock *pSLLBlock)
static bool miInsertEdgeInET (EdgeTable *ET, EdgeTableEntry *ETE, int scanline, ScanLineListBlock **SLLBlock, int *iSLLBlock)
static int miInsertionSort (EdgeTableEntry *AET)
static void miloadAET (EdgeTableEntry *AET, EdgeTableEntry *ETEs)
bool qt_testCollision (const QtCanvasSprite *s1, const QtCanvasSprite *s2)
static int scm (int a, int b)

Macro Definition Documentation

◆ BRESINCRPGON

#define BRESINCRPGON ( d,
minval,
m,
m1,
incr1,
incr2 )
Value:
{ \
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; \
} \
} \
}

◆ BRESINCRPGONSTRUCT

#define BRESINCRPGONSTRUCT ( bres)
Value:
BRESINCRPGON(bres.d, bres.minor, bres.m, bres.m1, bres.incr1, bres.incr2)
#define BRESINCRPGON(d, minval, m, m1, incr1, incr2)
Definition canvas_typed/qtcanvas.cpp:5042

◆ BRESINITPGON

#define BRESINITPGON ( dy,
x1,
x2,
xStart,
d,
m,
m1,
incr1,
incr2 )
Value:
{ \
int dx; /* local storage */ \
\
/* \
* if the edge is horizontal, then it is ignored \
* and assumed not to be processed. Otherwise, do this stuff. \
*/ \
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; \
} \
} \
}

◆ BRESINITPGONSTRUCT

#define BRESINITPGONSTRUCT ( dmaj,
min1,
min2,
bres )
Value:
BRESINITPGON(dmaj, min1, min2, bres.minor, bres.d, \
bres.m, bres.m1, bres.incr1, bres.incr2)
#define BRESINITPGON(dy, x1, x2, xStart, d, m, m1, incr1, incr2)
Definition canvas_typed/qtcanvas.cpp:5019

◆ EVALUATEEDGEEVENODD

#define EVALUATEEDGEEVENODD ( pAET,
pPrevAET,
y )
Value:
{ \
if (pAET->ymax == y) { /* leaving this edge */ \
pPrevAET->next = pAET->next; \
pAET = pPrevAET->next; \
if (pAET) \
pAET->back = pPrevAET; \
} \
else { \
BRESINCRPGONSTRUCT(pAET->bres) \
pPrevAET = pAET; \
pAET = pAET->next; \
} \
}

Referenced by QtPolygonScanner::scan().

◆ EVALUATEEDGEWINDING

#define EVALUATEEDGEWINDING ( pAET,
pPrevAET,
y,
fixWAET )
Value:
{ \
if (pAET->ymax == y) { /* leaving this edge */ \
pPrevAET->next = pAET->next; \
pAET = pPrevAET->next; \
fixWAET = 1; \
if (pAET) \
pAET->back = pPrevAET; \
} \
else { \
BRESINCRPGONSTRUCT(pAET->bres); \
pPrevAET = pAET; \
pAET = pAET->next; \
} \
}

Referenced by QtPolygonScanner::scan().

◆ MAXINT

#define MAXINT   0x7fffffff

◆ MININT

#define MININT   -MAXINT

◆ NUMPTSTOBUFFER

#define NUMPTSTOBUFFER   200

Referenced by QtPolygonScanner::scan().

◆ SLLSPERBLOCK

#define SLLSPERBLOCK   25

Typedef Documentation

◆ DDXPointPtr

typedef struct DDXPointRec * DDXPointPtr

◆ EdgeTableEntry

◆ ScanLineList

typedef struct _ScanLineList ScanLineList

◆ ScanLineListBlock

Function Documentation

◆ collision_double_dispatch()

◆ defaultPolygonBrush()

const QBrush & defaultPolygonBrush ( )
static

◆ defaultPolygonPen()

const QPen & defaultPolygonPen ( )
static

◆ gcd()

int gcd ( int a,
int b )
static

Referenced by scm().

◆ include()

void include ( QRect & r,
const QRect & rect )
static

◆ micomputeWAET()

void micomputeWAET ( EdgeTableEntry * AET)
static

◆ miCreateETandAET()

bool miCreateETandAET ( int count,
DDXPointPtr pts,
EdgeTable * ET,
EdgeTableEntry * AET,
EdgeTableEntry * pETEs,
ScanLineListBlock * pSLLBlock )
static

Referenced by QtPolygonScanner::scan().

◆ miFreeStorage()

void miFreeStorage ( ScanLineListBlock * pSLLBlock)
static

◆ miInsertEdgeInET()

◆ miInsertionSort()

◆ miloadAET()

◆ qt_testCollision()

bool qt_testCollision ( const QtCanvasSprite * s1,
const QtCanvasSprite * s2 )

◆ scm()

int scm ( int a,
int b )
static

References gcd().