215 lines
7.8 KiB
C++
215 lines
7.8 KiB
C++
//
|
|
// Copyright 2020 Electronic Arts Inc.
|
|
//
|
|
// TiberianDawn.DLL and RedAlert.dll and corresponding source code 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.
|
|
|
|
// TiberianDawn.DLL and RedAlert.dll and corresponding source code is distributed
|
|
// in the hope that it will be useful, but with permitted additional restrictions
|
|
// under Section 7 of the GPL. See the GNU General Public License in LICENSE.TXT
|
|
// distributed with this program. You should have received a copy of the
|
|
// GNU General Public License along with permitted additional restrictions
|
|
// with this program. If not, see https://github.com/electronicarts/CnC_Remastered_Collection
|
|
|
|
/* $Header: /CounterStrike/COMPAT.H 1 3/03/97 10:24a Joe_bostic $ */
|
|
/***********************************************************************************************
|
|
*** C O N F I D E N T I A L --- W E S T W O O D S T U D I O S ***
|
|
***********************************************************************************************
|
|
* *
|
|
* Project Name : Command & Conquer *
|
|
* *
|
|
* File Name : COMPAT.H *
|
|
* *
|
|
* Programmer : Joe L. Bostic *
|
|
* *
|
|
* Start Date : 03/02/95 *
|
|
* *
|
|
* Last Update : March 2, 1995 [JLB] *
|
|
* *
|
|
*---------------------------------------------------------------------------------------------*
|
|
* Functions: *
|
|
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
|
|
|
|
#ifndef COMPAT_H
|
|
#define COMPAT_H
|
|
|
|
|
|
#define BuffType BufferClass
|
|
//#define movmem(a,b,c) memmove(b,a,c)
|
|
#define ShapeBufferSize _ShapeBufferSize
|
|
|
|
/*=========================================================================*/
|
|
/* Define some equates for the different graphic routines we will install */
|
|
/* later. */
|
|
/*=========================================================================*/
|
|
#define HIDBUFF ((void *)(0xA0000))
|
|
#define Size_Of_Region(a, b) ((a)*(b))
|
|
|
|
/*=========================================================================*/
|
|
/* Define some Graphic Routines which will only be fixed by these defines */
|
|
/*=========================================================================*/
|
|
#define Set_Font_Palette(a) Set_Font_Palette_Range(a, 0, 15)
|
|
|
|
/*
|
|
** These are the Open_File, Read_File, and Seek_File constants.
|
|
*/
|
|
#define READ 1 // Read access.
|
|
#define WRITE 2 // Write access.
|
|
|
|
#ifndef SEEK_SET
|
|
#define SEEK_SET 0 // Seek from start of file.
|
|
#define SEEK_CUR 1 // Seek relative from current location.
|
|
#define SEEK_END 2 // Seek from end of file.
|
|
#endif
|
|
|
|
#define ERROR_WINDOW 1
|
|
#define ErrorWindow 1
|
|
|
|
|
|
//extern unsigned char *Palette;
|
|
extern unsigned char MDisabled; // Is mouse disabled?
|
|
extern WORD Hard_Error_Occured;
|
|
|
|
/*
|
|
** This is the menu control structures.
|
|
*/
|
|
typedef enum MenuIndexType {
|
|
MENUX,
|
|
MENUY,
|
|
ITEMWIDTH,
|
|
ITEMSHIGH,
|
|
MSELECTED,
|
|
NORMCOL,
|
|
HILITE,
|
|
MENUPADDING=0x1000
|
|
} MenuIndexType;
|
|
|
|
|
|
#ifdef NEVER
|
|
#define BITSPERBYTE 8
|
|
#define MAXSHORT 0x7FFF
|
|
#define HIBITS 0x8000
|
|
#define MAXLONG 0x7FFFFFFFL
|
|
#define HIBITL 0x80000000
|
|
|
|
#define MAXINT MAXLONG
|
|
#define HIBITI HIBITL
|
|
|
|
#define DMAXEXP 308
|
|
#define FMAXEXP 38
|
|
#define DMINEXP -307
|
|
#define FMINEXP -37
|
|
|
|
#define MAXDOUBLE 1.797693E+308
|
|
#define MAXFLOAT 3.37E+38F
|
|
#define MINDOUBLE 2.225074E-308
|
|
#define MINFLOAT 8.43E-37F
|
|
|
|
#define DSIGNIF 53
|
|
#define FSIGNIF 24
|
|
|
|
#define DMAXPOWTWO 0x3FF
|
|
#define FMAXPOWTWO 0x7F
|
|
#define DEXPLEN 11
|
|
#define FEXPLEN 8
|
|
#define EXPBASE 2
|
|
#define IEEE 1
|
|
#define LENBASE 1
|
|
#define HIDDENBIT 1
|
|
#define LN_MAXDOUBLE 7.0978E+2
|
|
#define LN_MINDOUBLE -7.0840E+2
|
|
#endif
|
|
|
|
/* These defines handle the various names given to the same color. */
|
|
#define DKGREEN GREEN
|
|
#define DKBLUE BLUE
|
|
#define GRAY GREY
|
|
#define DKGREY GREY
|
|
#define DKGRAY GREY
|
|
#define LTGRAY LTGREY
|
|
|
|
|
|
class IconsetClass;
|
|
#ifndef WIN32
|
|
typedef struct {
|
|
short Width; // Width of icons (pixels).
|
|
short Height; // Height of icons (pixels).
|
|
short Count; // Number of (logical) icons in this set.
|
|
short Allocated; // Was this iconset allocated?
|
|
short MapWidth; // Width of map (in icons).
|
|
short MapHeight; // Height of map (in icons).
|
|
long Size; // Size of entire iconset memory block.
|
|
long Icons; // Offset from buffer start to icon data.
|
|
// unsigned char * Icons; // Offset from buffer start to icon data.
|
|
long Palettes; // Offset from buffer start to palette data.
|
|
long Remaps; // Offset from buffer start to remap index data.
|
|
long TransFlag; // Offset for transparency flag table.
|
|
long ColorMap; // Offset for color control value table.
|
|
long Map; // Icon map offset (if present).
|
|
// unsigned char * Map; // Icon map offset (if present).
|
|
} IControl_Type;
|
|
#endif
|
|
|
|
inline int Get_IconSet_MapWidth(void const * data)
|
|
{
|
|
if (data) {
|
|
return(((IControl_Type *)data)->MapWidth);
|
|
}
|
|
return(0);
|
|
}
|
|
|
|
inline int Get_IconSet_MapHeight(void const * data)
|
|
{
|
|
if (data) {
|
|
return(((IControl_Type *)data)->MapHeight);
|
|
}
|
|
return(0);
|
|
}
|
|
|
|
inline unsigned char const * Get_IconSet_ControlMap(void const * data)
|
|
{
|
|
if (data) {
|
|
return((unsigned char const *)((char *)data + ((IControl_Type *)data)->ColorMap));
|
|
}
|
|
return(0);
|
|
}
|
|
|
|
class IconsetClass : protected IControl_Type
|
|
{
|
|
public:
|
|
/*
|
|
** Query functions.
|
|
*/
|
|
int Map_Width(void) const {return(MapWidth);};
|
|
int Map_Height(void) const {return(MapHeight);};
|
|
unsigned char * Control_Map(void) {return((unsigned char *)this + ColorMap);};
|
|
unsigned char const * Control_Map(void) const {return((unsigned char const *)this + ColorMap);};
|
|
int Icon_Count(void) const {return(Count);};
|
|
int Pixel_Width(void) const {return(Width);};
|
|
int Pixel_Height(void) const {return(Height);};
|
|
int Total_Size(void) const {return(Size);};
|
|
unsigned char const * Palette_Data(void) const {return((unsigned char const *)this + Palettes);};
|
|
unsigned char * Palette_Data(void) {return((unsigned char *)this + Palettes);};
|
|
unsigned char const * Icon_Data(void) const {return((unsigned char const *)this + Icons);};
|
|
unsigned char * Icon_Data(void) {return((unsigned char *)this + Icons);};
|
|
unsigned char const * Map_Data(void) const {return((unsigned char const *)this + Map);};
|
|
unsigned char * Map_Data(void) {return((unsigned char *)this + Map);};
|
|
unsigned char const * Remap_Data(void) const {return((unsigned char const *)this + Remaps);};
|
|
unsigned char * Remap_Data(void) {return((unsigned char *)this + Remaps);};
|
|
unsigned char const * Trans_Data(void) const {return((unsigned char const *)this + TransFlag);};
|
|
unsigned char * Trans_Data(void) {return((unsigned char *)this + TransFlag);};
|
|
|
|
/*
|
|
** Disallow these operations with an IconsetClass object.
|
|
*/
|
|
private:
|
|
IconsetClass & operator = (IconsetClass const &);
|
|
IconsetClass(void);
|
|
static void * operator new(size_t);
|
|
};
|
|
|
|
|
|
#endif
|