scummvm/engines/saga2/vpal.h

103 lines
2.7 KiB
C
Raw Normal View History

2021-05-17 18:47:39 +00:00
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
2021-05-17 18:47:39 +00:00
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
2021-05-17 18:47:39 +00:00
*
*
* Based on the original sources
* Faery Tale II -- The Halls of the Dead
* (c) 1993-1996 The Wyrmkeep Entertainment Co.
*/
#ifndef SAGA2_VPAL_H
#define SAGA2_VPAL_H
#include "saga2/idtypes.h"
2021-05-17 18:47:39 +00:00
namespace Saga2 {
// Stores an RGB value
struct gPaletteEntry {
uint8 r,
g,
b;
};
// An entire palette of 256 colors
struct gPalette {
2021-06-07 16:19:10 +00:00
gPaletteEntry entry[256];
void read(Common::InSaveFile *in);
void write(Common::MemoryWriteStreamDynamic *out);
2021-05-17 18:47:39 +00:00
};
2021-08-21 22:26:24 +00:00
typedef gPalette *gPalettePtr;
2021-05-17 18:47:39 +00:00
/* ===================================================================== *
Prototypes
* ===================================================================== */
void LoadPalette(gPalette &palette);
int32 ColorDistance(gPaletteEntry &c1, gPaletteEntry &c2);
void CalcPens(gPalette &, gPaletteEntry *, gPen *, int16, bool);
2021-08-21 22:26:24 +00:00
class PaletteManager {
private:
gPalette _currentPalette;
gPalette _oldPalette,
_destPalette,
_quickPalette;
int32 _startTime,
_totalTime;
public:
gPalette _newPalette;
2021-08-21 22:26:24 +00:00
gPalettePtr _midnightPalette,
_noonPalette,
_darkPalette;
uint32 _prevLightLevel;
2021-08-21 22:26:24 +00:00
PaletteManager();
//~PaletteManager() {}
void assertCurrentPalette();
void loadPalettes();
void cleanupPalettes();
void beginFade(gPalettePtr newPalette, int32 fadeDuration);
bool updatePalette();
void createPalette(gPalettePtr newP, gPalettePtr srcP, gPalettePtr dstP,
int32 elapsedTime, int32 totalTime_);
void setCurrentPalette(gPalettePtr newPal);
void getCurrentPalette(gPalettePtr pal);
void initPaletteState();
void lightsOut();
void quickSavePalette();
void quickRestorePalette();
void savePaletteState(Common::OutSaveFile *outS);
void loadPaletteState(Common::InSaveFile *in);
};
2021-05-17 18:47:39 +00:00
} // end of namespace Saga2
#endif