#define CACHEPICHASHSIZE 256
static cachepic_t *cachepichash[CACHEPICHASHSIZE];
static cachepic_t cachepics[MAX_CACHED_PICS];
#define CACHEPICHASHSIZE 256
static cachepic_t *cachepichash[CACHEPICHASHSIZE];
static cachepic_t cachepics[MAX_CACHED_PICS];
- buffer[i][0] = 83 + (qbyte)(random * 64);
- buffer[i][1] = 71 + (qbyte)(random * 32);
- buffer[i][2] = 23 + (qbyte)(random * 16);
+ buffer[i][0] = 83 + (unsigned char)(random * 64);
+ buffer[i][1] = 71 + (unsigned char)(random * 32);
+ buffer[i][2] = 23 + (unsigned char)(random * 16);
buffer[i][3] = data[i*4+0];
}
// White chars
for (i = 8192;i < 32768;i++)
{
random = lhrandom (0.0,1.0);
buffer[i][3] = data[i*4+0];
}
// White chars
for (i = 8192;i < 32768;i++)
{
random = lhrandom (0.0,1.0);
- buffer[i][0] = 95 + (qbyte)(random * 64);
- buffer[i][1] = 95 + (qbyte)(random * 64);
- buffer[i][2] = 95 + (qbyte)(random * 64);
+ buffer[i][0] = 95 + (unsigned char)(random * 64);
+ buffer[i][1] = 95 + (unsigned char)(random * 64);
+ buffer[i][2] = 95 + (unsigned char)(random * 64);
buffer[i][3] = data[i*4+0];
}
// Gold numbers
for (i = 32768;i < 40960;i++)
{
random = lhrandom (0.0,1.0);
buffer[i][3] = data[i*4+0];
}
// Gold numbers
for (i = 32768;i < 40960;i++)
{
random = lhrandom (0.0,1.0);
- buffer[i][0] = 83 + (qbyte)(random * 64);
- buffer[i][1] = 71 + (qbyte)(random * 32);
- buffer[i][2] = 23 + (qbyte)(random * 16);
+ buffer[i][0] = 83 + (unsigned char)(random * 64);
+ buffer[i][1] = 71 + (unsigned char)(random * 32);
+ buffer[i][2] = 23 + (unsigned char)(random * 16);
buffer[i][3] = data[i*4+0];
}
// Red chars
for (i = 40960;i < 65536;i++)
{
random = lhrandom (0.0,1.0);
buffer[i][3] = data[i*4+0];
}
// Red chars
for (i = 40960;i < 65536;i++)
{
random = lhrandom (0.0,1.0);
- buffer[i][0] = 96 + (qbyte)(random * 64);
- buffer[i][1] = 43 + (qbyte)(random * 32);
- buffer[i][2] = 27 + (qbyte)(random * 32);
+ buffer[i][0] = 96 + (unsigned char)(random * 64);
+ buffer[i][1] = 43 + (unsigned char)(random * 32);
+ buffer[i][2] = 27 + (unsigned char)(random * 32);
return R_LoadTexture2D(drawtexturepool, "conchars", 256, 256, &buffer[0][0], TEXTYPE_RGBA, TEXF_ALPHA | TEXF_PRECACHE, NULL);
}
return R_LoadTexture2D(drawtexturepool, "conchars", 256, 256, &buffer[0][0], TEXTYPE_RGBA, TEXF_ALPHA | TEXF_PRECACHE, NULL);
}
return R_LoadTexture2D(drawtexturepool, "mousepointer", 16, 16, &buffer[0][0], TEXTYPE_RGBA, TEXF_ALPHA | TEXF_PRECACHE, NULL);
}
return R_LoadTexture2D(drawtexturepool, "mousepointer", 16, 16, &buffer[0][0], TEXTYPE_RGBA, TEXF_ALPHA | TEXF_PRECACHE, NULL);
}
}
}
return R_LoadTexture2D(drawtexturepool, va("crosshair%i", num), 16, 16, &data[0][0], TEXTYPE_RGBA, TEXF_ALPHA | TEXF_PRECACHE, NULL);
}
}
return R_LoadTexture2D(drawtexturepool, va("crosshair%i", num), 16, 16, &data[0][0], TEXTYPE_RGBA, TEXF_ALPHA | TEXF_PRECACHE, NULL);
}
return R_LoadTexture2D(drawtexturepool, "ditherpattern", 8, 8, data, TEXTYPE_RGBA, TEXF_FORCENEAREST | TEXF_PRECACHE, NULL);
#else
}
return R_LoadTexture2D(drawtexturepool, "ditherpattern", 8, 8, data, TEXTYPE_RGBA, TEXF_FORCENEAREST | TEXF_PRECACHE, NULL);
#else
memset(data, 255, sizeof(data));
data[0] = data[1] = data[2] = data[12] = data[13] = data[14] = 0;
return R_LoadTexture2D(drawtexturepool, "ditherpattern", 2, 2, data, TEXTYPE_RGBA, TEXF_FORCENEAREST | TEXF_PRECACHE, NULL);
memset(data, 255, sizeof(data));
data[0] = data[1] = data[2] = data[12] = data[13] = data[14] = 0;
return R_LoadTexture2D(drawtexturepool, "ditherpattern", 2, 2, data, TEXTYPE_RGBA, TEXF_FORCENEAREST | TEXF_PRECACHE, NULL);
// FIXME: move this to client somehow
cachepic_t *Draw_CachePic (const char *path, qboolean persistent)
{
// FIXME: move this to client somehow
cachepic_t *Draw_CachePic (const char *path, qboolean persistent)
{
hashkey = ((crc >> 8) ^ crc) % CACHEPICHASHSIZE;
for (pic = cachepichash[hashkey];pic;pic = pic->chain)
if (!strcmp (path, pic->name))
return pic;
if (numcachepics == MAX_CACHED_PICS)
hashkey = ((crc >> 8) ^ crc) % CACHEPICHASHSIZE;
for (pic = cachepichash[hashkey];pic;pic = pic->chain)
if (!strcmp (path, pic->name))
return pic;
if (numcachepics == MAX_CACHED_PICS)
pic = cachepics + (numcachepics++);
strlcpy (pic->name, path, sizeof(pic->name));
// link into list
pic = cachepics + (numcachepics++);
strlcpy (pic->name, path, sizeof(pic->name));
// link into list
// compatibility with older versions
pic->tex = loadtextureimage(drawtexturepool, path + 4, 0, 0, false, flags);
// failed to find gfx/whatever.tga or similar, try the wad
// compatibility with older versions
pic->tex = loadtextureimage(drawtexturepool, path + 4, 0, 0, false, flags);
// failed to find gfx/whatever.tga or similar, try the wad
- qbyte *pix;
- // conchars is a raw image and with the wrong transparent color
- pix = (qbyte *)p;
- for (i = 0;i < 128 * 128;i++)
- if (pix[i] == 0)
- pix[i] = 255;
- pic->tex = R_LoadTexture2D(drawtexturepool, path, 128, 128, pix, TEXTYPE_PALETTE, flags, palette_complete);
+ // conchars is a raw image and with color 0 as transparent instead of 255
+ pic->tex = R_LoadTexture2D(drawtexturepool, path, 128, 128, (unsigned char *)p, TEXTYPE_PALETTE, flags, palette_font);
- pic->tex = R_LoadTexture2D(drawtexturepool, path, p->width, p->height, p->data, TEXTYPE_PALETTE, flags, palette_complete);
+ pic->tex = R_LoadTexture2D(drawtexturepool, path, p->width, p->height, p->data, TEXTYPE_PALETTE, flags, palette_transparent);
}
}
if (pic->tex == NULL && !strcmp(path, "gfx/conchars"))
pic->tex = draw_generateconchars();
}
}
if (pic->tex == NULL && !strcmp(path, "gfx/conchars"))
pic->tex = draw_generateconchars();
- if (pic->tex == NULL && !strcmp(path, "gfx/colorcontrol/ditherpattern.tga"))
+ if (pic->tex == NULL && !strcmp(path, "gfx/crosshair6"))
+ pic->tex = draw_generatecrosshair(5);
+ if (pic->tex == NULL && !strcmp(path, "gfx/colorcontrol/ditherpattern"))
-cachepic_t *Draw_NewPic(const char *picname, int width, int height, int alpha, qbyte *pixels)
+cachepic_t *Draw_NewPic(const char *picname, int width, int height, int alpha, unsigned char *pixels)
hashkey = ((crc >> 8) ^ crc) % CACHEPICHASHSIZE;
for (pic = cachepichash[hashkey];pic;pic = pic->chain)
if (!strcmp (picname, pic->name))
hashkey = ((crc >> 8) ^ crc) % CACHEPICHASHSIZE;
for (pic = cachepichash[hashkey];pic;pic = pic->chain)
if (!strcmp (picname, pic->name))
pic = cachepics + (numcachepics++);
strcpy (pic->name, picname);
// link into list
pic = cachepics + (numcachepics++);
strcpy (pic->name, picname);
// link into list
hashkey = ((crc >> 8) ^ crc) % CACHEPICHASHSIZE;
for (pic = cachepichash[hashkey];pic;pic = pic->chain)
{
hashkey = ((crc >> 8) ^ crc) % CACHEPICHASHSIZE;
for (pic = cachepichash[hashkey];pic;pic = pic->chain)
{
drawtexturepool = R_AllocTexturePool();
numcachepics = 0;
memset(cachepichash, 0, sizeof(cachepichash));
char_texture = Draw_CachePic("gfx/conchars", true)->tex;
drawtexturepool = R_AllocTexturePool();
numcachepics = 0;
memset(cachepichash, 0, sizeof(cachepichash));
char_texture = Draw_CachePic("gfx/conchars", true)->tex;
r_view_x = bound(0, r_refdef.x, vid.width - r_refdef.width);
r_view_y = bound(0, r_refdef.y, vid.height - r_refdef.height);
r_view_z = 0;
r_view_x = bound(0, r_refdef.x, vid.width - r_refdef.width);
r_view_y = bound(0, r_refdef.y, vid.height - r_refdef.height);
r_view_z = 0;
r_view_matrix = r_refdef.viewentitymatrix;
GL_ColorMask(r_refdef.colormask[0], r_refdef.colormask[1], r_refdef.colormask[2], 1);
qglViewport(r_view_x, vid.height - (r_view_y + r_view_height), r_view_width, r_view_height);
GL_SetupView_Mode_Ortho(0, 0, vid_conwidth.integer, vid_conheight.integer, -10, 100);
qglDepthFunc(GL_LEQUAL);
r_view_matrix = r_refdef.viewentitymatrix;
GL_ColorMask(r_refdef.colormask[0], r_refdef.colormask[1], r_refdef.colormask[2], 1);
qglViewport(r_view_x, vid.height - (r_view_y + r_view_height), r_view_width, r_view_height);
GL_SetupView_Mode_Ortho(0, 0, vid_conwidth.integer, vid_conheight.integer, -10, 100);
qglDepthFunc(GL_LEQUAL);
m.pointer_vertex = mesh->data_vertex3f;
m.pointer_color = mesh->data_color4f;
m.pointer_texcoord[0] = mesh->data_texcoord2f;
m.pointer_vertex = mesh->data_vertex3f;
m.pointer_color = mesh->data_color4f;
m.pointer_texcoord[0] = mesh->data_texcoord2f;
+ case DRAWQUEUE_LINEWIDTH:
+ qglLineWidth(x);
+ break;
+ case DRAWQUEUE_LINES:
+ mesh = (drawqueuemesh_t *)(dq + 1);
+ GL_Color(c[0], c[1], c[2], c[3]);
+ qglBegin(GL_LINE_LOOP);
+ for (num = 0;num < mesh->num_vertices;num++)
+ qglVertex2f(mesh->data_vertex3f[num*3+0], mesh->data_vertex3f[num*3+1]);
+ qglEnd();
+ break;