412 lines
13 KiB
C
412 lines
13 KiB
C
/*********************************************************************************
|
||
|
||
STRUCT.h : Definition of basic structures
|
||
Last update : 26 july 96
|
||
Last modification : I don't remember
|
||
|
||
*********************************************************************************/
|
||
|
||
/*
|
||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||
You must do :
|
||
#define TDE_GLOBALS
|
||
in one (and only one) .c file of your Module.
|
||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||
*/
|
||
|
||
/* To avoid unnecessary includes : */
|
||
#ifndef __TDE_STRUCT_H
|
||
#define __TDE_STRUCT_H
|
||
|
||
#ifdef __cplusplus
|
||
extern "C" {
|
||
#endif /* __cplusplus */
|
||
|
||
|
||
/* For DLLs who are using this module : */
|
||
#undef CPA_EXPORT
|
||
#if defined(CPA_WANTS_IMPORT)
|
||
#define CPA_EXPORT __declspec(dllimport)
|
||
#elif defined(CPA_WANTS_EXPORT)
|
||
#define CPA_EXPORT __declspec(dllexport)
|
||
#else
|
||
#define CPA_EXPORT
|
||
#endif
|
||
|
||
|
||
/* For Global declaration in C files : */
|
||
#ifndef TDE_GLOBALS
|
||
#define __TDE_EXTERN extern
|
||
#else /* !TDE_GLOBALS */
|
||
#define __TDE_EXTERN
|
||
#endif /* !TDE_GLOBALS */
|
||
|
||
/*
|
||
-----------------------------------------------------------------------------
|
||
TYPES DEFINITION :
|
||
-----------------------------------------------------------------------------
|
||
*/
|
||
|
||
#ifdef NOTUSE_GLD
|
||
/* Substitution viewport structure if we do not use GLD*/
|
||
typedef struct GLD_stViewportAttributes
|
||
{
|
||
DWORD dwInitialHeight; /* Initial height of viewport in pixels */
|
||
DWORD dwInitialWidth; /* Initial width of viewport in pixels */
|
||
DWORD dwHeight; /* Current height of viewport in pixels */
|
||
DWORD dwWidth; /* Current width of viewport in pixels */
|
||
|
||
DWORD dwBytesPerPixel;
|
||
|
||
DWORD dwTopInPix; /* Y of Left up corner */
|
||
DWORD dwBottomInPix; /* Y of right down corner */
|
||
DWORD dwLeftInPix; /* X of left up corner */
|
||
DWORD dwRightInPix; /* X of right down corner */
|
||
|
||
DWORD dwTopInPixForClip; /* Y of Left up corner */
|
||
DWORD dwBottomInPixForClip; /* Y of right down corner */
|
||
DWORD dwLeftInPixForClip; /* X of left up corner */
|
||
DWORD dwRightInPixForClip; /* X of right down corner */
|
||
|
||
DWORD dwTopInPercent; /* Y of Left up corner */
|
||
DWORD dwBottomInPercent; /* Y of right down corner */
|
||
DWORD dwLeftInPercent; /* X of left up corner */
|
||
DWORD dwRightInPercent; /* X of right bottom corner */
|
||
|
||
char *p_cVirtualScreen; /* Pointer to back memory associated with the viewport */
|
||
LONG lPitch; /* Distance to the start of the next line */
|
||
void *p_vReserved; /* Reserved */
|
||
void *p_vSpecificToXD; /* Additionnal Attributes specific to 2D or 3D */
|
||
} GLD_tdstViewportAttributes, *GLD_tdpstViewportAttributes;
|
||
|
||
|
||
/* Structures for Pictures */
|
||
typedef struct GLD_stPictureAttributes
|
||
{
|
||
char *p_szBitmap; /* Bitmap loaded in surface */
|
||
DWORD dwHeight; /* Height of picture in pixels */
|
||
DWORD dwWidth; /* Width of picture in pixels */
|
||
char *p_cVirtualScreen; /* Pointer to picture */
|
||
LONG lPitch; /* Distance to the start of the next line */
|
||
void *p_vReserved; /* Reserved */
|
||
} GLD_tdstPictureAttributes, *GLD_tdpstPictureAttributes;
|
||
#endif
|
||
|
||
/**************************************************************************
|
||
TDE_tdsVertex : 2D point structure
|
||
***************************************************************************/
|
||
typedef struct _TDE_tdsVertex
|
||
{
|
||
TDE_tdxValue xX;
|
||
TDE_tdxValue xY;
|
||
}TDE_tdsVertex;
|
||
|
||
|
||
typedef struct
|
||
{
|
||
TDE_tdsVertex Point;
|
||
TDE_tdsVertex TexPoint;
|
||
} TDE_tdsClippedVertex;
|
||
|
||
|
||
/****************************************************************************
|
||
TDE_tdsVertex1616 : 16:16 format 2D point structure
|
||
*****************************************************************************/
|
||
|
||
typedef struct _TDE_tdsVertex1616
|
||
{
|
||
TDE_tdl1616 lX;
|
||
TDE_tdl1616 lY;
|
||
}TDE_tdsVertex1616;
|
||
|
||
|
||
|
||
typedef struct _TDE_tdsClippedVertex1616
|
||
{
|
||
TDE_tdsVertex1616 Point;
|
||
TDE_tdsVertex1616 TexPoint;
|
||
}TDE_tdsClippedVertex1616;
|
||
|
||
|
||
/**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~**
|
||
NAME : TDE_tdsRect
|
||
VERSION : 2.0 / Val<61>rie
|
||
1.0 / Franck
|
||
|
||
Rectangle structure. This rectangle is linked with a DDraw
|
||
surface, so it contains info about it -> pith & pointer
|
||
**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~**/
|
||
typedef struct _TDE_tdsRect
|
||
{
|
||
TDE_tdsVertex tdsSommet[4];
|
||
long lPitch;
|
||
TDE_tdxPixel *p_usPointer;
|
||
}TDE_tdsRect;
|
||
|
||
/**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~**
|
||
NAME : TDE_tdsLRect
|
||
VERSION : 2.0 / Val<61>rie
|
||
1.0 / Franck
|
||
|
||
Light Rectangle structure. Without DD surface.
|
||
Used for Memory sprites
|
||
**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~**/
|
||
typedef struct _TDE_tdsLRect
|
||
{
|
||
TDE_tdsVertex tdsSommet[4];
|
||
}TDE_tdsLRect;
|
||
|
||
/**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~**
|
||
NAME : TDE_tdsMemZone
|
||
VERSION : 2.0 / Val<61>rie
|
||
1.0 / Franck
|
||
Contains memory zone informations for memory sprites
|
||
**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~**/
|
||
typedef struct _TDE_tdsMemZone
|
||
{
|
||
TDE_tdxPixel *p_usPointer;
|
||
TDE_tdsVertex stDim;
|
||
TDE_tdxPixel xMagicColor;
|
||
}TDE_tdsMemZone;
|
||
|
||
/********************************************************************************
|
||
TDE_tdsSpriteMatrix : Matrix structure
|
||
*********************************************************************************/
|
||
typedef struct _TDE_tdsMatrix
|
||
{
|
||
TDE_tdxValue a4_xM[2][2];
|
||
}TDE_tdsMatrix;
|
||
|
||
|
||
typedef struct _TDE_tdsSuperObjectMatrix
|
||
{
|
||
TDE_tdxAngle xAngle; /* angle in radians*/
|
||
TDE_tdsVertex stScale; /* zoom vertex*/
|
||
TDE_tdsMatrix a4_xS; /* Scale matrix*/
|
||
TDE_tdsMatrix a4_xRxS; /* Product matrix*/
|
||
TDE_tdsVertex stTranslateVertex; /* Center coodinates*/
|
||
}TDE_tdsSuperObjectMatrix;
|
||
|
||
/*********************************************************************************
|
||
TDE_tdsPictureAttributes : source attributes
|
||
**********************************************************************************/
|
||
|
||
typedef struct _TDE_tdsPictureAttributes
|
||
{
|
||
TDE_tdxValue xWidth;
|
||
TDE_tdxValue xHeight;
|
||
TDE_tdxValue xSrcPitch; /* Source pitch */
|
||
TDE_tdLP_SOURCE lp_Data; /* Source type*/
|
||
TDE_tdLP_SURF lp_DDS;
|
||
}TDE_tdsPictureAttributes;
|
||
|
||
|
||
/********************************************************************************
|
||
TDE_tdsSprite : sprite structure
|
||
*********************************************************************************/
|
||
typedef struct _TDE_tdsSprite
|
||
{
|
||
TDE_tdsVertex stDim; /* Dimensions of the sprite */
|
||
TDE_tdxPixel xMagicColor;
|
||
TDE_tdxPixel *v_pData; /* pointer on memory data */
|
||
CHAR c_NZ; /* Is there a non-zero color ?*/
|
||
TDE_tdsVertex stSourceOrigin;
|
||
CHAR cFlip;
|
||
TDE_tdsPictureAttributes stPicture; /* Picture attributes*/
|
||
CHAR cSemiTransparent; /* 1 -> semi-transparent (50-50)*/
|
||
TDE_tdxValue alpha;
|
||
}TDE_tdsSprite;
|
||
|
||
/********************************************************************************
|
||
TDE_tdsLine : line structure
|
||
*********************************************************************************/
|
||
typedef struct _TDE_tdsLine
|
||
{
|
||
LONG lColor; /* color of the line*/
|
||
TDE_tdxValue xLength;
|
||
}TDE_tdsLine;
|
||
|
||
/********************************************************************************
|
||
TDE_tdsSuperObject : super object structure
|
||
*********************************************************************************/
|
||
|
||
typedef enum {
|
||
TDE_eOT_EMPTY = 0,
|
||
TDE_eOT_SPRITE = 1,
|
||
TDE_eOT_TEXTBOX = 2,
|
||
TDE_eOT_LINE = 3
|
||
} TDE_tdeType;
|
||
|
||
typedef struct _TDE_tdsSuperObject *TDE_p_stSuperObject;
|
||
|
||
typedef struct _TDE_tdsTextBox TDE_tdsTextBox;
|
||
|
||
typedef struct _TDE_tdsSuperObject
|
||
{
|
||
SHORT sPriority;
|
||
TDE_tdsSuperObjectMatrix stMatrix; /* Rotation & translation matrix*/
|
||
TDE_tdsSuperObjectMatrix stModifiedMatrix;
|
||
TDE_p_stSuperObject p_stChild;
|
||
TDE_p_stSuperObject p_stLeftBrother;
|
||
TDE_p_stSuperObject p_stRightBrother;
|
||
TDE_p_stSuperObject p_stFather;
|
||
TDE_p_stSuperObject p_stNextZList;
|
||
TDE_tdeType eType; /* Type of the object (sprite, line)*/
|
||
union {
|
||
TDE_tdsSprite *p_stSprite;
|
||
TDE_tdsTextBox *p_stTextBox;
|
||
TDE_tdsLine *p_stLine;
|
||
void *p_vPointer;
|
||
};
|
||
TDE_tdsRect *p_stSOClipRect;
|
||
long lArea; /* ID to menu_object*/
|
||
long lObject; /* First dependance ! Maybe temporary */
|
||
}TDE_tdsSuperObject;
|
||
|
||
|
||
/*/////////////////////////////////////////////////////////////////////////////*/
|
||
/* TDE_tdsAnimatedCursor : */
|
||
/* Sprite list of an animated cursor.*/
|
||
/**/
|
||
/* stActiveCoordinates are coordinates of the acive point of the mouse cursor.*/
|
||
/* they are given in absolute coordinates but relatively to sprite center*/
|
||
/**/
|
||
/* ------------*/
|
||
/* | |*/
|
||
/* | (0,0) |*/
|
||
/* | --------> X*/
|
||
/* | | |*/
|
||
/* | | |*/
|
||
/* | | | */
|
||
/* ------|-----*/
|
||
/* Y v*/
|
||
/**/
|
||
/*/////////////////////////////////////////////////////////////////////////////*/
|
||
typedef struct _TDE_tdsAnimatedCursor *TDE_p_stAnimatedCursor;
|
||
|
||
typedef struct _TDE_tdsAnimatedCursor
|
||
{
|
||
TDE_tdsVertex stActiveCoordinates;
|
||
TDE_tdsSprite Step;
|
||
TDE_p_stAnimatedCursor Next;
|
||
}TDE_tdsAnimatedCursor;
|
||
|
||
/**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~**
|
||
NAME : TDE_tdsBitmapFont
|
||
VERSION : 2.0 / Val<61>rie
|
||
1.0 / Franck
|
||
|
||
MBF Font structure
|
||
**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~**/
|
||
typedef struct _TDE_tdsBitmapLetter
|
||
{
|
||
TDE_tdsSuperObject stBLetter;
|
||
unsigned short usVAlign;
|
||
}TDE_tdsBitmapLetter;
|
||
|
||
typedef struct _TDE_tdsBitmapFont
|
||
{
|
||
TDE_tdsBitmapLetter *p_stMBLetter[TDE_kNBLETTERS];
|
||
unsigned short usHMax;
|
||
unsigned short usVAMax;
|
||
unsigned short usHorzSep;
|
||
unsigned short usVertSep;
|
||
}TDE_tdsBitmapFont;
|
||
|
||
/**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~**
|
||
NAME : TDE_tdsTrueTypeFont
|
||
VERSION : 2.0 / Val<61>rie
|
||
1.0 / Franck
|
||
|
||
MTF Font structure
|
||
**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~**/
|
||
typedef struct _TDE_tdsTrueTypeFont
|
||
{
|
||
HFONT hFont;
|
||
COLORREF lColor;
|
||
}TDE_tdsTrueTypeFont;
|
||
|
||
/**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~**
|
||
NAME : TDE_tdsTextBox
|
||
VERSION : 2.0 / Val<61>rie
|
||
1.0 / Franck
|
||
|
||
Third SO type after sprites & lines
|
||
**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~**/
|
||
typedef enum _TDE_tdeFontType
|
||
{
|
||
TDE_eFT_BITMAP,
|
||
TDE_eFT_TRUETYPE,
|
||
TDE_eFT_UNDEFINED
|
||
} TDE_tdeFontType;
|
||
|
||
typedef enum _TDE_tdeCursorType
|
||
{
|
||
TDE_eCT_NOCURSOR = 0,
|
||
TDE_eCT_INSERT = 1,
|
||
TDE_eCT_OVERWRITE = 2
|
||
} TDE_tdeCursorType;
|
||
|
||
typedef struct _TDE_tdsTextBox
|
||
{
|
||
/* Formatting rectangle*/
|
||
TDE_tdsRect *p_stFormatRect;
|
||
/* Clipping rectangle*/
|
||
TDE_tdsRect *p_stClipRect;
|
||
/* Font*/
|
||
TDE_tdeFontType eFontType;
|
||
union {
|
||
TDE_tdsBitmapFont *p_stBFont;
|
||
TDE_tdsTrueTypeFont *p_stTFont;
|
||
};
|
||
/* Format of the text (like in Windows DrawText function)*/
|
||
unsigned long ulStyle;
|
||
/* Text*/
|
||
char *p_cText;
|
||
/* Normal colors (0) or negative colors (1)*/
|
||
char cColorMode;
|
||
/* Index of flicking cursor in text*/
|
||
long lCursorPosition;
|
||
/* Cursor type*/
|
||
TDE_tdeCursorType eCursorType;
|
||
}TDE_tdsTextBox;
|
||
|
||
/********************************************************************************
|
||
TDE_tdsCamera : camera structure
|
||
*********************************************************************************/
|
||
typedef TDE_tdsSuperObjectMatrix TDE_tdsCamera;
|
||
|
||
/**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~**
|
||
NAME : TDE_tdstPickInfo
|
||
VERSION : 2.0 / Val<61>rie
|
||
1.0 / Franck
|
||
|
||
Structure used for picking
|
||
**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~**/
|
||
typedef struct TDE_tdstSprObjPickInfo_
|
||
{
|
||
TDE_tdsSuperObject *p_stSprObj;
|
||
TDE_tdxPixel xColor;
|
||
} TDE_tdstSprObjPickInfo;
|
||
|
||
|
||
typedef struct TDE_tdstPickInfo_
|
||
{
|
||
int iNbSprPick;
|
||
TDE_tdstSprObjPickInfo aDEF_stInfo[TDE_kMAXPICK];
|
||
} TDE_tdstPickInfo;
|
||
|
||
#ifdef __cplusplus
|
||
};
|
||
#endif /* __cplusplus */
|
||
|
||
|
||
#endif /* __TDE_STRUCT_H */
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|