mirror of
https://github.com/nzp-team/fteqw.git
synced 2024-11-10 14:42:13 +00:00
Fixed sw renderer's console background when the input image is not 320*200.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@2533 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
parent
5b04efa344
commit
0ba5341e4e
1 changed files with 34 additions and 31 deletions
|
@ -2016,15 +2016,15 @@ Draw_ConsoleBackground
|
||||||
*/
|
*/
|
||||||
void SWDraw_ConsoleBackground (int lines)
|
void SWDraw_ConsoleBackground (int lines)
|
||||||
{
|
{
|
||||||
int x, y, v;
|
int x, y, v, w, h;
|
||||||
qbyte *src;
|
qbyte *src;
|
||||||
qbyte *dest;
|
qbyte *dest;
|
||||||
int f, fstep;
|
int f, fstep;
|
||||||
mpic_t *conback;
|
mpic_t *conback;
|
||||||
char ver[100];
|
char ver[100];
|
||||||
static char saveback[320*8];
|
// static char saveback[320*8];
|
||||||
|
|
||||||
if (!scr_con_forcedraw && !scr_conalpha.value)
|
if ((!scr_con_forcedraw && !scr_conalpha.value) || !lines)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
conback = (mpic_t *)SWDraw_SafeCachePic ("gfx/conback.lmp");
|
conback = (mpic_t *)SWDraw_SafeCachePic ("gfx/conback.lmp");
|
||||||
|
@ -2032,7 +2032,7 @@ void SWDraw_ConsoleBackground (int lines)
|
||||||
conback = (mpic_t *)SWDraw_SafeCachePic("pics/conback.pcx");
|
conback = (mpic_t *)SWDraw_SafeCachePic("pics/conback.pcx");
|
||||||
if (!conback)
|
if (!conback)
|
||||||
conback = (mpic_t *)SWDraw_SafeCachePic ("gfx/menu/conback.lmp");
|
conback = (mpic_t *)SWDraw_SafeCachePic ("gfx/menu/conback.lmp");
|
||||||
if (!conback)
|
if (!conback || conback->width < 320 || conback->height < 200)
|
||||||
{
|
{
|
||||||
swcachepic_t *cp;
|
swcachepic_t *cp;
|
||||||
|
|
||||||
|
@ -2046,6 +2046,9 @@ void SWDraw_ConsoleBackground (int lines)
|
||||||
conback->flags = 0;
|
conback->flags = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
w = conback->width;
|
||||||
|
h = conback->height;
|
||||||
|
|
||||||
if (lines > vid.conheight)
|
if (lines > vid.conheight)
|
||||||
lines = vid.conheight;
|
lines = vid.conheight;
|
||||||
|
|
||||||
|
@ -2054,9 +2057,9 @@ void SWDraw_ConsoleBackground (int lines)
|
||||||
//sprintf (ver, "start commands with a \\ character %4.2f", VERSION);
|
//sprintf (ver, "start commands with a \\ character %4.2f", VERSION);
|
||||||
|
|
||||||
sprintf (ver, "%i", build_number());
|
sprintf (ver, "%i", build_number());
|
||||||
dest = conback->data + 320 + 320*186 - 11 - 8*strlen(ver);
|
dest = conback->data + w + w*186 - 11 - 8*strlen(ver);
|
||||||
|
|
||||||
memcpy(saveback, conback->data + 320*186, 320*8);
|
// memcpy(saveback, conback->data + w*186, w*8);
|
||||||
for (x=0 ; x<strlen(ver) ; x++)
|
for (x=0 ; x<strlen(ver) ; x++)
|
||||||
SWDraw_CharToConback (ver[x], dest+(x<<3));
|
SWDraw_CharToConback (ver[x], dest+(x<<3));
|
||||||
|
|
||||||
|
@ -2071,10 +2074,10 @@ void SWDraw_ConsoleBackground (int lines)
|
||||||
|
|
||||||
for (y=0 ; y<lines ; y++, dest += vid.conrowbytes)
|
for (y=0 ; y<lines ; y++, dest += vid.conrowbytes)
|
||||||
{
|
{
|
||||||
v = (vid.conheight - lines + y)*200/vid.conheight;
|
v = (vid.conheight - lines + y)*h/vid.conheight;
|
||||||
src = conback->data + v*320;
|
src = conback->data + v*w;
|
||||||
f = 0;
|
f = 0;
|
||||||
fstep = 320*0x10000/vid.conwidth;
|
fstep = w*0x10000/vid.conwidth;
|
||||||
for (x=0 ; x<vid.conwidth ; x+=4)
|
for (x=0 ; x<vid.conwidth ; x+=4)
|
||||||
{
|
{
|
||||||
dest[x] = Trans(dest[x], src[f>>16]);
|
dest[x] = Trans(dest[x], src[f>>16]);
|
||||||
|
@ -2093,14 +2096,14 @@ void SWDraw_ConsoleBackground (int lines)
|
||||||
for (y=0 ; y<lines ; y++, dest += vid.conrowbytes)
|
for (y=0 ; y<lines ; y++, dest += vid.conrowbytes)
|
||||||
{
|
{
|
||||||
|
|
||||||
v = (vid.conheight - lines + y)*200/vid.conheight;
|
v = (vid.conheight - lines + y)*h/vid.conheight;
|
||||||
src = conback->data + v*320;
|
src = conback->data + v*w;
|
||||||
if (vid.conwidth == 320)
|
if (vid.conwidth == w)
|
||||||
memcpy (dest, src, vid.conwidth);
|
memcpy (dest, src, vid.conwidth);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
f = 0;
|
f = 0;
|
||||||
fstep = 320*0x10000/vid.conwidth;
|
fstep = w*0x10000/vid.conwidth;
|
||||||
for (x=0 ; x<vid.conwidth ; x+=4)
|
for (x=0 ; x<vid.conwidth ; x+=4)
|
||||||
{
|
{
|
||||||
dest[x] = src[f>>16];
|
dest[x] = src[f>>16];
|
||||||
|
@ -2124,14 +2127,14 @@ void SWDraw_ConsoleBackground (int lines)
|
||||||
for (y=0 ; y<lines ; y++, dest16 += vid.conrowbytes)
|
for (y=0 ; y<lines ; y++, dest16 += vid.conrowbytes)
|
||||||
{
|
{
|
||||||
|
|
||||||
v = (vid.conheight - lines + y)*200/vid.conheight;
|
v = (vid.conheight - lines + y)*h/vid.conheight;
|
||||||
src = conback->data + v*320;
|
src = conback->data + v*w;
|
||||||
// if (vid.conwidth == 320)
|
// if (vid.conwidth == w)
|
||||||
// memcpy (dest16, src, vid.conwidth);
|
// memcpy (dest16, src, vid.conwidth);
|
||||||
// else
|
// else
|
||||||
{
|
{
|
||||||
f = 0;
|
f = 0;
|
||||||
fstep = 320*0x10000/vid.conwidth;
|
fstep = w*0x10000/vid.conwidth;
|
||||||
for (x=0 ; x<vid.conwidth ; x+=4)
|
for (x=0 ; x<vid.conwidth ; x+=4)
|
||||||
{
|
{
|
||||||
dest16[x] = pal[src[f>>16]];
|
dest16[x] = pal[src[f>>16]];
|
||||||
|
@ -2166,16 +2169,16 @@ void SWDraw_ConsoleBackground (int lines)
|
||||||
int vf, hf;
|
int vf, hf;
|
||||||
for (y=0 ; y<lines ; y++, dest += (vid.conrowbytes<<2))
|
for (y=0 ; y<lines ; y++, dest += (vid.conrowbytes<<2))
|
||||||
{
|
{
|
||||||
v = (vid.conheight - lines + y)*199/vid.conheight;
|
v = (vid.conheight - lines + y)*(h-1)/vid.conheight;
|
||||||
src = conback->data + v*320;
|
src = conback->data + v*w;
|
||||||
v = (vid.conheight - lines + y)*199/vid.conheight+1;
|
v = (vid.conheight - lines + y)*(h-1)/vid.conheight+1;
|
||||||
src2 = conback->data + v*320;
|
src2 = conback->data + v*w;
|
||||||
|
|
||||||
v = (vid.conheight - lines + y)*199/vid.conheight;
|
v = (vid.conheight - lines + y)*(h-1)/vid.conheight;
|
||||||
vf = (((vid.conheight - lines + y)*199.0/vid.conheight) - v) * 255;
|
vf = (((vid.conheight - lines + y)*(h-1.0)/vid.conheight) - v) * 255;
|
||||||
|
|
||||||
f = 0;
|
f = 0;
|
||||||
fstep = 319*0x10000/vid.conwidth;
|
fstep = (w-1)*0x10000/vid.conwidth;
|
||||||
for (x=0 ; x<vid.conwidth ; x+=1)
|
for (x=0 ; x<vid.conwidth ; x+=1)
|
||||||
{
|
{
|
||||||
hf = (f - (f>>16)*65536) / 256;
|
hf = (f - (f>>16)*65536) / 256;
|
||||||
|
@ -2208,11 +2211,11 @@ void SWDraw_ConsoleBackground (int lines)
|
||||||
{
|
{
|
||||||
for (y=0 ; y<lines ; y++, dest += (vid.conrowbytes<<2))
|
for (y=0 ; y<lines ; y++, dest += (vid.conrowbytes<<2))
|
||||||
{
|
{
|
||||||
v = (vid.conheight - lines + y)*200/vid.conheight;
|
v = (vid.conheight - lines + y)*h/vid.conheight;
|
||||||
src = conback->data + v*320;
|
src = conback->data + v*w;
|
||||||
|
|
||||||
f = 0;
|
f = 0;
|
||||||
fstep = 320*0x10000/vid.conwidth;
|
fstep = w*0x10000/vid.conwidth;
|
||||||
for (x=0 ; x<vid.conwidth ; x+=1)
|
for (x=0 ; x<vid.conwidth ; x+=1)
|
||||||
{
|
{
|
||||||
dest[(x<<2) + 0] = ((255-alpha)*dest[(x<<2) + 0] + alpha*pal[(src[f>>16]<<2) + 0])/255;
|
dest[(x<<2) + 0] = ((255-alpha)*dest[(x<<2) + 0] + alpha*pal[(src[f>>16]<<2) + 0])/255;
|
||||||
|
@ -2227,11 +2230,11 @@ void SWDraw_ConsoleBackground (int lines)
|
||||||
{
|
{
|
||||||
for (y=0 ; y<lines ; y++, p24dest += vid.conrowbytes)
|
for (y=0 ; y<lines ; y++, p24dest += vid.conrowbytes)
|
||||||
{
|
{
|
||||||
v = (vid.conheight - lines + y)*200/vid.conheight;
|
v = (vid.conheight - lines + y)*h/vid.conheight;
|
||||||
src = conback->data + v*320;
|
src = conback->data + v*w;
|
||||||
|
|
||||||
f = 0;
|
f = 0;
|
||||||
fstep = 320*0x10000/vid.conwidth;
|
fstep = w*0x10000/vid.conwidth;
|
||||||
for (x=0 ; x<vid.conwidth ; x+=4)
|
for (x=0 ; x<vid.conwidth ; x+=4)
|
||||||
{
|
{
|
||||||
p24dest[x] = d_8to32table[src[f>>16]];
|
p24dest[x] = d_8to32table[src[f>>16]];
|
||||||
|
@ -2247,7 +2250,7 @@ void SWDraw_ConsoleBackground (int lines)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// put it back
|
// put it back
|
||||||
memcpy(conback->data + 320*186, saveback, 320*8);
|
// memcpy(conback->data + 320*186, saveback, 320*8);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SWDraw_EditorBackground (int lines)
|
void SWDraw_EditorBackground (int lines)
|
||||||
|
|
Loading…
Reference in a new issue