Computer Assited Medical Intervention Tool Kit  version 5.0
canvas_typed/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>
+ Include dependency graph for canvas_typed/qtcanvas.cpp:

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)   BRESINCRPGON(bres.d, bres.minor, bres.m, bres.m1, bres.incr1, bres.incr2)
 
#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)    BRESINCRPGON(bres.d, bres.minor, bres.m, bres.m1, bres.incr1, bres.incr2)

◆ 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)

◆ EVALUATEEDGEEVENODD

#define EVALUATEEDGEEVENODD (   pAET,
  pPrevAET,
 
)
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; \
} \
}

◆ 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; \
} \
}

◆ MAXINT

#define MAXINT   0x7fffffff

◆ MININT

#define MININT   -MAXINT

◆ NUMPTSTOBUFFER

#define NUMPTSTOBUFFER   200

◆ SLLSPERBLOCK

#define SLLSPERBLOCK   25

Typedef Documentation

◆ DDXPointPtr

typedef struct DDXPointRec * DDXPointPtr

◆ EdgeTableEntry

◆ ScanLineList

typedef struct _ScanLineList ScanLineList

◆ ScanLineListBlock

Function Documentation

◆ collision_double_dispatch()

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

References QtCanvasEllipse::angleLength(), QtCanvasPolygonalItem::areaPointsAdvanced(), QtCanvasItem::boundingRectAdvanced(), QtCanvasEllipse::height(), qt_testCollision(), QtCanvasEllipse::width(), QtCanvasItem::x(), QtCanvasItem::xVelocity(), QtCanvasItem::y(), and QtCanvasItem::yVelocity().

Referenced by QtCanvasSprite::collidesWith(), QtCanvasPolygonalItem::collidesWith(), QtCanvasRectangle::collidesWith(), QtCanvasEllipse::collidesWith(), and QtCanvasText::collidesWith().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ defaultPolygonBrush()

static const QBrush& defaultPolygonBrush ( )
static

◆ defaultPolygonPen()

static const QPen& defaultPolygonPen ( )
static

◆ gcd()

static int gcd ( int  a,
int  b 
)
static

References a.

Referenced by scm().

+ Here is the caller graph for this function:

◆ include()

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

Referenced by QtCanvasClusterizer::add(), camitk_communityedition_packaging(), and camitk_library().

+ Here is the caller graph for this function:

◆ micomputeWAET()

static void micomputeWAET ( EdgeTableEntry AET)
static

References _EdgeTableEntry::ClockWise, _EdgeTableEntry::next, and _EdgeTableEntry::nextWETE.

Referenced by QtPolygonScanner::scan().

+ Here is the caller graph for this function:

◆ miCreateETandAET()

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

Referenced by QtPolygonScanner::scan().

+ Here is the caller graph for this function:

◆ miFreeStorage()

static void miFreeStorage ( ScanLineListBlock pSLLBlock)
static

References _ScanLineListBlock::next.

Referenced by QtPolygonScanner::scan().

+ Here is the caller graph for this function:

◆ miInsertEdgeInET()

◆ miInsertionSort()

static int miInsertionSort ( EdgeTableEntry AET)
static

References _EdgeTableEntry::back, _EdgeTableEntry::bres, BRESINFO::minor, and _EdgeTableEntry::next.

Referenced by QtPolygonScanner::scan().

+ Here is the caller graph for this function:

◆ miloadAET()

static void miloadAET ( EdgeTableEntry AET,
EdgeTableEntry ETEs 
)
static

References _EdgeTableEntry::back, _EdgeTableEntry::bres, BRESINFO::minor, and _EdgeTableEntry::next.

Referenced by QtPolygonScanner::scan().

+ Here is the caller graph for this function:

◆ qt_testCollision()

bool qt_testCollision ( const QtCanvasSprite s1,
const QtCanvasSprite s2 
)

References QtCanvasItem::boundingRectAdvanced(), QtCanvasPixmap::collision_mask, and QtCanvasSprite::imageAdvanced().

Referenced by collision_double_dispatch().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ scm()

static int scm ( int  a,
int  b 
)
static

References a, and gcd().

Referenced by QtCanvas::QtCanvas(), and QtCanvas::setTiles().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:
BRESINITPGON
#define BRESINITPGON(dy, x1, x2, xStart, d, m, m1, incr1, incr2)
Definition: canvas_typed/qtcanvas.cpp:5019