2018-11-05 07:28:01 +00:00
|
|
|
// "Build Engine & Tools" Copyright (c) 1993-1997 Ken Silverman
|
|
|
|
// Ken Silverman's official web site: "http://www.advsys.net/ken"
|
|
|
|
// See the included license file "BUILDLIC.TXT" for license info.
|
|
|
|
//
|
|
|
|
// This file has been modified from Ken Silverman's original release
|
|
|
|
// by Jonathon Fowler (jf@jonof.id.au)
|
|
|
|
// by the EDuke32 team (development@voidpoint.com)
|
|
|
|
|
2016-06-21 00:33:06 +00:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#ifndef palette_h_
|
|
|
|
#define palette_h_
|
|
|
|
|
2019-12-29 20:36:21 +00:00
|
|
|
#include "renderstyle.h"
|
2019-12-07 09:49:23 +00:00
|
|
|
#include "filesystem/filesystem.h"
|
2019-03-01 08:51:50 +00:00
|
|
|
|
2016-06-21 00:33:06 +00:00
|
|
|
#define MAXBASEPALS 256
|
|
|
|
#define MAXPALOOKUPS 256
|
|
|
|
#define MAXBLENDTABS 256
|
|
|
|
|
|
|
|
#define RESERVEDPALS 4 // don't forget to increment this when adding reserved pals
|
|
|
|
#define DETAILPAL (MAXPALOOKUPS - 1)
|
|
|
|
#define GLOWPAL (MAXPALOOKUPS - 2)
|
|
|
|
#define SPECULARPAL (MAXPALOOKUPS - 3)
|
|
|
|
#define NORMALPAL (MAXPALOOKUPS - 4)
|
2019-10-17 18:29:58 +00:00
|
|
|
#define BRIGHTPAL (MAXPALOOKUPS)
|
2016-06-21 00:33:06 +00:00
|
|
|
|
|
|
|
extern uint8_t curbasepal;
|
|
|
|
|
2018-04-12 21:03:12 +00:00
|
|
|
#define paletteGetBlendTable(blend) (blendtable[blend])
|
2016-06-21 00:33:06 +00:00
|
|
|
|
2019-12-23 07:03:36 +00:00
|
|
|
extern uint8_t PaletteIndexFullbrights[32];
|
|
|
|
|
2019-10-06 17:32:35 +00:00
|
|
|
|
|
|
|
inline bool IsPaletteIndexFullbright(uint8_t col)
|
|
|
|
{
|
2019-12-23 07:03:36 +00:00
|
|
|
return (PaletteIndexFullbrights[col >> 3] & (1u << (col & 7)));
|
2019-10-06 17:32:35 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
inline void SetPaletteIndexFullbright(int col)
|
|
|
|
{
|
2019-12-23 07:03:36 +00:00
|
|
|
PaletteIndexFullbrights[col >> 3] |= (1u << (col & 7));
|
2019-10-06 17:32:35 +00:00
|
|
|
}
|
2016-06-21 00:33:06 +00:00
|
|
|
|
2019-11-10 20:11:17 +00:00
|
|
|
struct palette_t
|
|
|
|
{
|
2019-09-22 21:15:46 +00:00
|
|
|
uint8_t r, g, b, f;
|
2019-11-10 20:11:17 +00:00
|
|
|
};
|
2017-11-29 07:29:27 +00:00
|
|
|
typedef struct {
|
|
|
|
uint8_t r, g, b;
|
|
|
|
} rgb24_t;
|
2016-06-21 00:33:06 +00:00
|
|
|
extern palette_t curpalette[256], curpalettefaded[256], palfadergb;
|
2018-04-12 21:02:31 +00:00
|
|
|
|
2020-01-19 22:18:38 +00:00
|
|
|
extern unsigned char palfadedelta;
|
2018-04-12 21:03:12 +00:00
|
|
|
void paletteMakeLookupTable(int32_t palnum, const char *remapbuf, uint8_t r, uint8_t g, uint8_t b, char noFloorPal);
|
2019-10-06 17:32:35 +00:00
|
|
|
void paletteSetColorTable(int32_t id, uint8_t const *table, bool transient = false);
|
2018-04-12 21:03:12 +00:00
|
|
|
void paletteFreeColorTable(int32_t id);
|
2019-12-24 18:47:34 +00:00
|
|
|
void paletteFreeColorTables();
|
2018-04-12 21:03:12 +00:00
|
|
|
void paletteSetBlendTable(int32_t blend, const char *tab);
|
|
|
|
void paletteFreeBlendTable(int32_t blend);
|
|
|
|
int32_t paletteSetLookupTable(int32_t palnum, const uint8_t *shtab);
|
|
|
|
void paletteFreeLookupTable(int32_t palnum);
|
2020-01-26 09:58:00 +00:00
|
|
|
|
|
|
|
#include "tflags.h"
|
|
|
|
enum ESetPalFlag
|
|
|
|
{
|
|
|
|
Pal_DontResetFade = 1,
|
|
|
|
Pal_SceneBrightness = 2,
|
|
|
|
Pal_Fullscreen = 4,
|
|
|
|
Pal_2D = 8,
|
|
|
|
};
|
|
|
|
|
|
|
|
typedef TFlags<ESetPalFlag> ESetPalFlags;
|
|
|
|
DEFINE_TFLAGS_OPERATORS(ESetPalFlags)
|
|
|
|
|
|
|
|
extern ESetPalFlags curpaletteflags;
|
|
|
|
|
|
|
|
void videoSetPalette(int dabrightness, int dapalid, ESetPalFlags flags);
|
2018-04-12 21:03:12 +00:00
|
|
|
void videoFadePalette(uint8_t r, uint8_t g, uint8_t b, uint8_t offset);
|
2019-09-19 20:02:45 +00:00
|
|
|
#ifdef USE_OPENGL
|
|
|
|
void videoTintBlood(int32_t r, int32_t g, int32_t b);
|
|
|
|
#endif
|
2016-06-21 00:33:06 +00:00
|
|
|
|
2017-11-29 07:29:30 +00:00
|
|
|
extern int32_t realmaxshade;
|
|
|
|
extern float frealmaxshade;
|
|
|
|
|
2018-10-16 06:09:09 +00:00
|
|
|
extern int32_t globalpal;
|
2016-06-21 00:33:06 +00:00
|
|
|
extern int32_t globalblend;
|
|
|
|
extern uint32_t g_lastpalettesum;
|
2018-04-12 21:03:12 +00:00
|
|
|
extern palette_t paletteGetColor(int32_t col);
|
|
|
|
extern void paletteLoadFromDisk(void);
|
|
|
|
extern void palettePostLoadTables(void);
|
2016-06-21 00:33:06 +00:00
|
|
|
extern uint8_t basepalreset;
|
2019-10-05 19:59:03 +00:00
|
|
|
extern int32_t curbrightness;
|
2016-06-21 00:33:06 +00:00
|
|
|
|
2019-10-20 20:26:53 +00:00
|
|
|
extern int32_t paletteLoadLookupTable(FileReader &fp);
|
2018-04-12 21:03:12 +00:00
|
|
|
extern void paletteSetupDefaultFog(void);
|
2019-12-25 10:26:19 +00:00
|
|
|
void paletteFreeLookups();
|
2018-04-12 21:03:12 +00:00
|
|
|
extern void palettePostLoadLookups(void);
|
|
|
|
extern void paletteFixTranslucencyMask(void);
|
2016-06-21 00:33:06 +00:00
|
|
|
|
|
|
|
extern int8_t g_noFloorPal[MAXPALOOKUPS];
|
|
|
|
|
|
|
|
extern char britable[16][256];
|
|
|
|
|
|
|
|
#ifdef USE_OPENGL
|
|
|
|
extern palette_t palookupfog[MAXPALOOKUPS];
|
|
|
|
|
|
|
|
static inline void bricolor(palette_t *wpptr, int32_t dacol)
|
|
|
|
{
|
2019-10-05 19:59:03 +00:00
|
|
|
wpptr->r = curpalette[dacol].r;
|
|
|
|
wpptr->g = curpalette[dacol].g;
|
|
|
|
wpptr->b = curpalette[dacol].b;
|
2016-06-21 00:33:06 +00:00
|
|
|
}
|
2016-10-09 07:55:23 +00:00
|
|
|
|
|
|
|
enum
|
|
|
|
{
|
|
|
|
BLENDFACTOR_ZERO = 0,
|
|
|
|
BLENDFACTOR_ONE,
|
|
|
|
BLENDFACTOR_SRC_COLOR,
|
|
|
|
BLENDFACTOR_ONE_MINUS_SRC_COLOR,
|
|
|
|
BLENDFACTOR_SRC_ALPHA,
|
|
|
|
BLENDFACTOR_ONE_MINUS_SRC_ALPHA,
|
|
|
|
BLENDFACTOR_DST_ALPHA,
|
|
|
|
BLENDFACTOR_ONE_MINUS_DST_ALPHA,
|
|
|
|
BLENDFACTOR_DST_COLOR,
|
|
|
|
BLENDFACTOR_ONE_MINUS_DST_COLOR,
|
|
|
|
NUMBLENDFACTORS,
|
|
|
|
};
|
|
|
|
|
|
|
|
typedef struct glblenddef_
|
|
|
|
{
|
|
|
|
float alpha;
|
|
|
|
uint8_t src, dst, flags;
|
|
|
|
} glblenddef_t;
|
|
|
|
|
|
|
|
typedef struct glblend_
|
|
|
|
{
|
|
|
|
glblenddef_t def[2];
|
|
|
|
} glblend_t;
|
|
|
|
|
|
|
|
extern glblend_t const nullglblend, defaultglblend;
|
|
|
|
extern glblend_t glblend[MAXBLENDTABS];
|
|
|
|
|
2019-12-29 20:36:21 +00:00
|
|
|
FRenderStyle GetBlend(int blend, int def);
|
2016-10-09 07:55:23 +00:00
|
|
|
extern void handle_blend(uint8_t enable, uint8_t blend, uint8_t def);
|
2019-12-29 20:36:21 +00:00
|
|
|
float float_trans(uint32_t maskprops, uint8_t blend);
|
|
|
|
|
2016-06-21 00:33:06 +00:00
|
|
|
#endif
|
|
|
|
|
2016-12-26 06:02:01 +00:00
|
|
|
#endif
|