Files
firestorm/Gameleap/code/mw4/Libraries/mlr/GOSImage.cpp
T
Cyd 2b8ca921cb Initial full mirror of c:\VWE (source + assets + toolchain + outputs) via Git LFS
Complete disaster-recovery snapshot: engine/game source, game data assets,
VC6 toolchain + DX SDKs, build outputs, deployed game, and _UNUSED archive.
Large binaries in Git LFS; text preserved byte-for-byte (core.autocrlf=false,
no eol attributes). See RECOVERY.md for the one-clone rebuild procedure.
2026-06-24 21:28:16 -05:00

124 lines
2.4 KiB
C++

#include "MLRHeaders.hpp"
//#############################################################################
//############################ GOSImage ###############################
//#############################################################################
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
GOSImage::GOSImage( const char* iName ) : Plug (DefaultData)
{
imageName = iName;
flags = 0;
instance = 0;
imageHandle = 0;
ptr.pTexture = NULL;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
GOSImage::GOSImage( DWORD iHandle ) : Plug (DefaultData)
{
char str[20];
sprintf(str, "image%03d", iHandle);
imageName = str;
flags = Loaded;
instance = 0;
imageHandle = iHandle;
ptr.pTexture = NULL;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
GOSImage::GOSImage(gos_TextureFormat format, const char *name, int size, gos_TextureHints hints) : Plug (DefaultData)
{
imageName = name;
flags = Loaded;
instance = 0;
imageHandle = gos_NewEmptyTexture( format, name, size, hints);
ptr.pTexture = NULL;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
GOSImage::~GOSImage()
{
if((flags & Locked) != 0)
{
// gos_UnLockTexture(imageHandle);
}
if((flags & Loaded) != 0)
{
gos_DestroyTexture(imageHandle);
}
flags = 0;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
int
GOSImage::GetWidth()
{
return ptr.Width;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
int
GOSImage::GetHeight()
{
return ptr.Height;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
void
GOSImage::LockImage()
{
if(!(flags & Locked))
{
flags |= Locked;
gos_LockTexture(imageHandle, 0, false, &ptr);
}
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
void
GOSImage::UnlockImage()
{
if(flags & Locked)
{
flags &= ~Locked;
MLR_RENDER("Unlock Texture");
Start_Timer(Unlock_Texture_Time);
gos_UnLockTexture(imageHandle);
Stop_Timer(Unlock_Texture_Time);
ptr.pTexture = NULL;
}
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
BYTE*
GOSImage::GetImagePtr()
{
return (BYTE *)ptr.pTexture;
}