mirror of
https://github.com/1dot13/source.git
synced 2026-07-22 13:40:22 +02:00
git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@9216 3b4a5df2-a311-0410-b5c6-a8a6f20db521
155 lines
4.3 KiB
C
155 lines
4.3 KiB
C
#ifndef __RENDER_DIRTY_H
|
|
#define __RENDER_DIRTY_H
|
|
|
|
//DEFINES
|
|
#define BGND_FLAG_PERMANENT 0x80000000
|
|
#define BGND_FLAG_SINGLE 0x40000000
|
|
#define BGND_FLAG_SAVE_Z 0x20000000
|
|
#define BGND_FLAG_MERC 0x10000000
|
|
#define BGND_FLAG_SAVERECT 0x08000000
|
|
#define BGND_FLAG_TOPMOST 0x04000000
|
|
#define BGND_FLAG_IGNORE_RAIN 0x00000002
|
|
#define BGND_FLAG_ANIMATED 0x00000001
|
|
|
|
#define VOVERLAY_DIRTYBYTEXT 0x00000001
|
|
#define VOVERLAY_STARTDISABLED 0x00000002
|
|
|
|
|
|
#define VOVERLAY_DESC_TEXT 0x00001000
|
|
#define VOVERLAY_DESC_DISABLED 0x00002000
|
|
#define VOVERLAY_DESC_POSITION 0x00004000
|
|
|
|
// STRUCTURES
|
|
|
|
// Callback for topmost blitters
|
|
typedef void (*OVERLAY_CALLBACK)(struct _VIDEO_OVERLAY * );
|
|
|
|
// Struct for backgrounds
|
|
typedef struct
|
|
{
|
|
BOOLEAN fAllocated;
|
|
BOOLEAN fFilled;
|
|
BOOLEAN fFreeMemory;
|
|
BOOLEAN fZBuffer;
|
|
UINT32 uiFlags;
|
|
INT16 *pSaveArea;
|
|
INT16 *pZSaveArea;
|
|
INT16 sLeft;
|
|
INT16 sTop;
|
|
INT16 sRight;
|
|
INT16 sBottom;
|
|
INT16 sWidth;
|
|
INT16 sHeight;
|
|
BOOLEAN fPendingDelete;
|
|
BOOLEAN fDisabled;
|
|
|
|
} BACKGROUND_SAVE;
|
|
|
|
// Struct for topmost blitters
|
|
typedef struct _VIDEO_OVERLAY
|
|
{
|
|
UINT32 uiFlags;
|
|
BOOLEAN fAllocated;
|
|
BOOLEAN fDisabled;
|
|
BOOLEAN fActivelySaving;
|
|
BOOLEAN fDeletionPending;
|
|
INT32 uiBackground;
|
|
BACKGROUND_SAVE *pBackground;
|
|
INT16 *pSaveArea;
|
|
UINT32 uiUserData[ 5 ];
|
|
UINT32 uiFontID;
|
|
INT16 sX;
|
|
INT16 sY;
|
|
UINT8 ubFontBack;
|
|
UINT8 ubFontFore;
|
|
CHAR16 zText[ 200 ];
|
|
UINT32 uiDestBuff;
|
|
OVERLAY_CALLBACK BltCallback;
|
|
|
|
|
|
} VIDEO_OVERLAY;
|
|
|
|
|
|
// Struct for init topmost blitter
|
|
typedef struct
|
|
{
|
|
UINT32 uiFlags;
|
|
BOOLEAN fDisabled;
|
|
INT16 sLeft;
|
|
INT16 sTop;
|
|
INT16 sRight;
|
|
INT16 sBottom;
|
|
UINT32 uiFontID;
|
|
INT16 sX;
|
|
INT16 sY;
|
|
UINT8 ubFontBack;
|
|
UINT8 ubFontFore;
|
|
CHAR16 pzText[ 200 ];
|
|
OVERLAY_CALLBACK BltCallback;
|
|
|
|
} VIDEO_OVERLAY_DESC;
|
|
|
|
|
|
// GLOBAL VARIABLES
|
|
extern SGPRect gDirtyClipRect;
|
|
|
|
|
|
|
|
// FUNCTIONS
|
|
////////////
|
|
|
|
|
|
// DIRTY QUEUE
|
|
BOOLEAN InitializeBaseDirtyRectQueue( );
|
|
void ShutdownBaseDirtyRectQueue( );
|
|
void AddBaseDirtyRect( INT32 iLeft, INT32 iTop, INT32 iRight, INT32 iBottom );
|
|
BOOLEAN ExecuteBaseDirtyRectQueue( );
|
|
BOOLEAN EmptyDirtyRectQueue( );
|
|
|
|
|
|
// BACKGROUND RECT BUFFERING STUFF
|
|
void DisableBackgroundRect( INT32 iIndex, BOOLEAN fDisabled );
|
|
BOOLEAN InitializeBackgroundRects(void);
|
|
BOOLEAN ShutdownBackgroundRects(void);
|
|
INT32 RegisterBackgroundRect(UINT32 uiFlags, INT16 *pSaveArea, INT16 sLeft, INT16 sTop, INT16 sRight, INT16 sBottom);
|
|
BOOLEAN FreeBackgroundRect(INT32 iIndex);
|
|
BOOLEAN FreeBackgroundRectPending(INT32 iIndex);
|
|
BOOLEAN FreeBackgroundRectType(UINT32 uiFlags);
|
|
BOOLEAN RestoreBackgroundRects(void);
|
|
BOOLEAN SaveBackgroundRects(void);
|
|
BOOLEAN InvalidateBackgroundRects(void);
|
|
BOOLEAN UpdateSaveBuffer(void);
|
|
BOOLEAN RestoreExternBackgroundRect( INT16 sLeft, INT16 sTop, INT16 sWidth, INT16 sHeight );
|
|
BOOLEAN RestoreExternBackgroundRect(SGPRectangle rect);
|
|
void SetBackgroundRectFilled( UINT32 uiBackgroundID );
|
|
BOOLEAN EmptyBackgroundRects( void );
|
|
|
|
|
|
// GPRINTF DIRTY STUFF
|
|
UINT16 gprintfdirty(INT16 x, INT16 y, STR16 pFontString, ...);
|
|
UINT16 gprintfinvalidate(INT16 x, INT16 y, STR16 pFontString, ...);
|
|
UINT16 gprintfRestore(INT16 x, INT16 y, STR16 pFontString, ...);
|
|
|
|
|
|
// VIDEO OVERLAY STUFF
|
|
INT32 GetFreeVideoOverlay(void);
|
|
void RecountVideoOverlays(void);
|
|
INT32 RegisterVideoOverlay( UINT32 uiFlags, VIDEO_OVERLAY_DESC *pTopmostDesc );
|
|
void ExecuteVideoOverlays( );
|
|
BOOLEAN UpdateVideoOverlay( VIDEO_OVERLAY_DESC *pTopmostDesc, UINT32 iBlitterIndex, BOOLEAN fForceAll );
|
|
void SaveVideoOverlaysArea( UINT32 uiSrcBuffer );
|
|
void DeleteVideoOverlaysArea( );
|
|
void AllocateVideoOverlaysArea( );
|
|
void ExecuteVideoOverlaysToAlternateBuffer( UINT32 uiNewDestBuffer );
|
|
void RemoveVideoOverlay( INT32 iVideoOverlay );
|
|
BOOLEAN RestoreShiftedVideoOverlays( INT16 sShiftX, INT16 sShiftY );
|
|
BOOLEAN SetOverlayUserData( INT32 iVideoOverlay, UINT8 ubNum, UINT32 uiData );
|
|
void EnableVideoOverlay( BOOLEAN fEnable, INT32 iOverlayIndex );
|
|
|
|
|
|
void BlitMFont( VIDEO_OVERLAY *pBlitter );
|
|
|
|
BOOLEAN BlitBufferToBuffer(UINT32 uiSrcBuffer, UINT32 uiDestBuffer, UINT16 usSrcX, UINT16 usSrcY, UINT16 usWidth, UINT16 usHeight);
|
|
|
|
#endif
|