- added some functionality to FDynamicColormap to allow not creating

the colormap data if it isn't needed by the renderer.


SVN r635 (trunk)
This commit is contained in:
Christoph Oelckers 2007-12-24 21:56:49 +00:00
parent d12ede252f
commit 3eb741e391
6 changed files with 36 additions and 3 deletions

View file

@ -1,4 +1,6 @@
December 24, 2007 (Changes by Graf Zahl)
- added some functionality to FDynamicColormap to allow not creating
the colormap data.
- also replaced the AM crosshair drawer by a DCanvas::DrawPixel function.
- moved the AM line drawer into DCanvas as a virtual function. While testing
this code I discovered that the antialias precalculation was never used

View file

@ -180,7 +180,7 @@ FFont * V_GetFont(const char *name)
if (strlen(name) > 8)
{
fullname.Format("%s.fon", name);
lump = Wads.CheckNumForFullName(name);
lump = Wads.CheckNumForFullName(fullname);
}
else
{

View file

@ -659,14 +659,18 @@ FDynamicColormap *GetSpecialLights (PalEntry color, PalEntry fade, int desaturat
// Not found. Create it.
colormap = new FDynamicColormap;
colormap->Maps = new BYTE[NUMCOLORMAPS*256];
colormap->Next = NormalLight.Next;
colormap->Color = color;
colormap->Fade = fade;
colormap->Desaturate = desaturate;
NormalLight.Next = colormap;
colormap->BuildLights ();
if (screen->UsesColormap())
{
colormap->Maps = new BYTE[NUMCOLORMAPS*256];
colormap->BuildLights ();
}
else colormap->Maps = NULL;
return colormap;
}
@ -788,6 +792,24 @@ void FDynamicColormap::ChangeColorFade (PalEntry lightcolor, PalEntry fadecolor)
}
}
void FDynamicColormap::RebuildAllLights()
{
if (screen->UsesColormap())
{
FDynamicColormap *cm;
for (cm = &NormalLight; cm != NULL; cm = cm->Next)
{
if (cm->Maps == NULL)
{
cm->Maps = new BYTE[NUMCOLORMAPS*256];
cm->BuildLights ();
}
}
}
}
CCMD (testcolor)
{
FString colorstring;

View file

@ -71,6 +71,7 @@ struct FDynamicColormap
void ChangeColor (PalEntry lightcolor, int desaturate);
void ChangeColorFade (PalEntry lightcolor, PalEntry fadecolor);
void BuildLights ();
static void RebuildAllLights();
BYTE *Maps;
PalEntry Color;

View file

@ -328,6 +328,11 @@ void DCanvas::Dim (PalEntry color, float damount, int x1, int y1, int w, int h)
}
}
bool DCanvas::UsesColormap() const
{
return true;
}
int V_GetColorFromString (const DWORD *palette, const char *cstr)
{
int c[3], i, p;

View file

@ -179,6 +179,9 @@ public:
// Calculate gamma table
void CalcGamma (float gamma, BYTE gammalookup[256]);
// Can be overridden so that the colormaps for sector color/fade won't be built.
virtual bool UsesColormap() const;
// Text drawing functions -----------------------------------------------
virtual void SetFont (FFont *font);