windows-nt/Source/XPSP1/NT/multimedia/dshow/streams/foxbear/tile.c
2020-09-26 16:20:57 +08:00

153 lines
2.8 KiB
C

/*==========================================================================
*
* Copyright (c) 1995 - 1997 Microsoft Corporation. All Rights Reserved.
* Copyright (C) 1994-1995 ATI Technologies Inc. All Rights Reserved.
*
* File: tile.c
* Content: tile loading and initialization functions
*
***************************************************************************/
#include "foxbear.h"
/*
* CreateTiles
*/
HBITMAPLIST *CreateTiles( HBITMAPLIST *phBitmapList, USHORT n )
{
HBITMAPLIST *hTileList;
USHORT i;
hTileList = CMemAlloc( n, sizeof (HBITMAPLIST) );
if( hTileList == NULL )
{
ErrorMessage( "hTileList in CreateTiles" );
}
for( i = 0; i < n; ++i )
{
hTileList[i].hBM = phBitmapList[i].hBM;
}
return hTileList;
} /* CreateTiles */
/*
* DestroyTiles
*/
BOOL DestroyTiles( HBITMAPLIST *phTileList )
{
MemFree( phTileList );
return TRUE;
} /* DestroyTiles */
/*
* getData
*/
LPSTR getData(LPSTR fileName)
{
LPSTR p = NULL;
HRSRC hRes;
hRes = FindResource(NULL, fileName, RT_RCDATA);
if( hRes != NULL )
{
p = LockResource(LoadResource(NULL, hRes));
}
return p;
} /* getData */
/*
* CreatePosList
*/
HPOSLIST *CreatePosList( LPSTR fileName, USHORT width, USHORT height )
{
HPOSLIST *hPosList;
USHORT pos;
LPSTR p;
p = getData( fileName );
if( p == NULL )
{
ErrorMessage( "p in CreatePosList" );
}
hPosList = CMemAlloc( width * height, sizeof (USHORT) );
if( hPosList == NULL )
{
ErrorMessage( "posList in CreatePosList" );
}
for( pos = 0; pos < width * height; ++pos )
{
hPosList[pos] = (USHORT) getint(&p, 0) - 1;
}
return hPosList;
} /* CreatePosList */
/*
* CreateSurfaceList
*/
HSURFACELIST *CreateSurfaceList( LPSTR fileName, USHORT width, USHORT height )
{
HSURFACELIST *hSurfaceList;
USHORT pos;
USHORT value;
LPSTR p;
p = getData( fileName );
if( p == NULL )
{
ErrorMessage( "p in CreateSurfaceList" );
}
hSurfaceList = CMemAlloc( width * height, sizeof (HSURFACELIST) );
if( hSurfaceList == NULL )
{
ErrorMessage( "posList in CreateSurfaceList" );
}
for( pos = 0; pos < width * height; ++pos )
{
value = (USHORT) getint(&p, 0);
if( value == 0 )
{
hSurfaceList[pos] = FALSE;
}
else
{
hSurfaceList[pos] = TRUE;
}
}
return hSurfaceList;
} /* CreateSurfaceList */
/*
* DestoryPosList
*/
BOOL DestroyPosList ( HPOSLIST *posList )
{
if( posList == NULL )
{
ErrorMessage( "posList in DestroyPosList" );
}
MemFree( posList );
return TRUE;
} /* DestroyPosList */