23 static const float DU_PI = 3.14159265f;
    40         virtual void texture(
bool state) = 0;
    50         virtual void vertex(
const float* pos, 
unsigned int color) = 0;
    55         virtual void vertex(
const float x, 
const float y, 
const float z, 
unsigned int color) = 0;
    60         virtual void vertex(
const float* pos, 
unsigned int color, 
const float* uv) = 0;
    65         virtual void vertex(
const float x, 
const float y, 
const float z, 
unsigned int color, 
const float u, 
const float v) = 0;
    68         virtual void end() = 0;
    71 inline unsigned int duRGBA(
int r, 
int g, 
int b, 
int a)
    73         return ((
unsigned int)r) | ((
unsigned int)g << 8) | ((
unsigned int)b << 16) | ((
unsigned int)a << 24);
    76 inline unsigned int duRGBAf(
float fr, 
float fg, 
float fb, 
float fa)
    78         unsigned char r = (
unsigned char)(fr*255.0f);
    79         unsigned char g = (
unsigned char)(fg*255.0f);
    80         unsigned char b = (
unsigned char)(fb*255.0f);
    81         unsigned char a = (
unsigned char)(fa*255.0f);
    88 inline unsigned int duMultCol(
const unsigned int col, 
const unsigned int d)
    90         const unsigned int r = col & 0xff;
    91         const unsigned int g = (col >> 8) & 0xff;
    92         const unsigned int b = (col >> 16) & 0xff;
    93         const unsigned int a = (col >> 24) & 0xff;
    94         return duRGBA((r*d) >> 8, (g*d) >> 8, (b*d) >> 8, a);
    99         return ((col >> 1) & 0x007f7f7f) | (col & 0xff000000);
   102 inline unsigned int duLerpCol(
unsigned int ca, 
unsigned int cb, 
unsigned int u)
   104         const unsigned int ra = ca & 0xff;
   105         const unsigned int ga = (ca >> 8) & 0xff;
   106         const unsigned int ba = (ca >> 16) & 0xff;
   107         const unsigned int aa = (ca >> 24) & 0xff;
   108         const unsigned int rb = cb & 0xff;
   109         const unsigned int gb = (cb >> 8) & 0xff;
   110         const unsigned int bb = (cb >> 16) & 0xff;
   111         const unsigned int ab = (cb >> 24) & 0xff;
   113         unsigned int r = (ra*(255-u) + rb*u)/255;
   114         unsigned int g = (ga*(255-u) + gb*u)/255;
   115         unsigned int b = (ba*(255-u) + bb*u)/255;
   116         unsigned int a = (aa*(255-u) + ab*u)/255;
   120 inline unsigned int duTransCol(
unsigned int c, 
unsigned int a)
   122         return (a<<24) | (c & 0x00ffffff);
   126 void duCalcBoxColors(
unsigned int* colors, 
unsigned int colTop, 
unsigned int colSide);
   129                                                          float maxx, 
float maxy, 
float maxz, 
unsigned int col, 
const float lineWidth);
   132                                                 float maxx, 
float maxy, 
float maxz, 
unsigned int col, 
const float lineWidth);
   135                                         const float x1, 
const float y1, 
const float z1, 
const float h,
   136                                         const float as0, 
const float as1, 
unsigned int col, 
const float lineWidth);
   139                                           const float x1, 
const float y1, 
const float z1,
   140                                           const float as0, 
const float as1, 
unsigned int col, 
const float lineWidth);
   143                                            const float r, 
unsigned int col, 
const float lineWidth);
   146                                           const float size, 
unsigned int col, 
const float lineWidth);
   149                                         float maxx, 
float maxy, 
float maxz, 
const unsigned int* fcol);
   152                                                  float maxx, 
float maxy, 
float maxz, 
unsigned int col);
   155                                            const int w, 
const int h, 
const float size,
   156                                            const unsigned int col, 
const float lineWidth);
   161                                                   float maxx, 
float maxy, 
float maxz, 
unsigned int col);
   164                                          float maxx, 
float maxy, 
float maxz, 
unsigned int col);
   167                                            float maxx, 
float maxy, 
float maxz, 
unsigned int col);
   170                                  const float x1, 
const float y1, 
const float z1, 
const float h,
   171                                  const float as0, 
const float as1, 
unsigned int col);
   174                                    const float x1, 
const float y1, 
const float z1,
   175                                    const float as0, 
const float as1, 
unsigned int col);
   178                                         const float r, 
unsigned int col);
   181                                    const float size, 
unsigned int col);
   184                                  float maxx, 
float maxy, 
float maxz, 
const unsigned int* fcol);
   187                                           float maxx, 
float maxy, 
float maxz, 
unsigned int col);
   193         unsigned int* m_color;
   201         void resize(
int cap);
   208         virtual void vertex(
const float x, 
const float y, 
const float z, 
unsigned int color);
   209         virtual void vertex(
const float* pos, 
unsigned int color);
   216 #endif // DEBUGDRAW_H virtual void texture(bool state)=0
 
void duDebugDrawCylinderWire(struct duDebugDraw *dd, float minx, float miny, float minz, float maxx, float maxy, float maxz, unsigned int col, const float lineWidth)
 
virtual void vertex(const float *pos, unsigned int color)=0
Submit a vertex. 
 
void duDebugDrawCircle(struct duDebugDraw *dd, const float x, const float y, const float z, const float r, unsigned int col, const float lineWidth)
 
void duAppendCross(struct duDebugDraw *dd, const float x, const float y, const float z, const float size, unsigned int col)
 
virtual void depthMask(bool state)=0
 
void duAppendArc(struct duDebugDraw *dd, const float x0, const float y0, const float z0, const float x1, const float y1, const float z1, const float h, const float as0, const float as1, unsigned int col)
 
void duCalcBoxColors(unsigned int *colors, unsigned int colTop, unsigned int colSide)
 
void duAppendBox(struct duDebugDraw *dd, float minx, float miny, float minz, float maxx, float maxy, float maxz, const unsigned int *fcol)
 
void duDebugDrawCylinder(struct duDebugDraw *dd, float minx, float miny, float minz, float maxx, float maxy, float maxz, unsigned int col)
 
void duAppendCircle(struct duDebugDraw *dd, const float x, const float y, const float z, const float r, unsigned int col)
 
unsigned int duDarkenCol(unsigned int col)
 
unsigned int duIntToCol(int i, int a)
 
unsigned int duMultCol(const unsigned int col, const unsigned int d)
 
unsigned int duLerpCol(unsigned int ca, unsigned int cb, unsigned int u)
 
void duDebugDrawBoxWire(struct duDebugDraw *dd, float minx, float miny, float minz, float maxx, float maxy, float maxz, unsigned int col, const float lineWidth)
 
void duDebugDrawGridXZ(struct duDebugDraw *dd, const float ox, const float oy, const float oz, const int w, const int h, const float size, const unsigned int col, const float lineWidth)
 
void duDebugDrawArc(struct duDebugDraw *dd, const float x0, const float y0, const float z0, const float x1, const float y1, const float z1, const float h, const float as0, const float as1, unsigned int col, const float lineWidth)
 
void duDebugDrawCross(struct duDebugDraw *dd, const float x, const float y, const float z, const float size, unsigned int col, const float lineWidth)
 
unsigned int duTransCol(unsigned int c, unsigned int a)
 
virtual void begin(duDebugDrawPrimitives prim, float size=1.0f)=0
Begin drawing primitives. 
 
Abstract debug draw interface. 
 
void duAppendCylinder(struct duDebugDraw *dd, float minx, float miny, float minz, float maxx, float maxy, float maxz, unsigned int col)
 
unsigned int duRGBAf(float fr, float fg, float fb, float fa)
 
void duDebugDrawBox(struct duDebugDraw *dd, float minx, float miny, float minz, float maxx, float maxy, float maxz, const unsigned int *fcol)
 
void duAppendArrow(struct duDebugDraw *dd, const float x0, const float y0, const float z0, const float x1, const float y1, const float z1, const float as0, const float as1, unsigned int col)
 
void duAppendBoxPoints(struct duDebugDraw *dd, float minx, float miny, float minz, float maxx, float maxy, float maxz, unsigned int col)
 
unsigned int duRGBA(int r, int g, int b, int a)
 
virtual void end()=0
End drawing primitives. 
 
void duAppendBoxWire(struct duDebugDraw *dd, float minx, float miny, float minz, float maxx, float maxy, float maxz, unsigned int col)
 
void duDebugDrawArrow(struct duDebugDraw *dd, const float x0, const float y0, const float z0, const float x1, const float y1, const float z1, const float as0, const float as1, unsigned int col, const float lineWidth)
 
void duAppendCylinderWire(struct duDebugDraw *dd, float minx, float miny, float minz, float maxx, float maxy, float maxz, unsigned int col)