rodecomp/Source/Render/ClientTextureSources.cpp
2026-10-24 00:35:19 +00:00

41 lines
1.1 KiB
C++

#include "Contents/BinkMovies.h"
#include "Render/ClientTextureSources.h"
#include "Render/RenderSystemBase.h"
#include "Resource/TextureNames.h"
ClientTextureSources::ClientTextureSources(
TextureNames& names,
const int& modeType,
BinkMovies* const& movies,
CRenderSystemBase*& system,
IDirectDraw7* const& directDraw
)
: m_names(names), m_modeType(modeType), m_movies(movies), m_system(system), m_directDraw(directDraw) {
}
const char* ClientTextureSources::Resolve(const char* name) {
return this->m_names.Resolve(name);
}
bool ClientTextureSources::MovieSize(const char* name, int& width, int& height) {
if (this->m_modeType != 1 || !this->m_movies) {
return false;
}
NamedBinkMovie* movie = this->m_movies->Get(name, 1);
if (!movie) {
return false;
}
width = movie->decoder->Handle()->width;
height = movie->decoder->Handle()->height;
return true;
}
void ClientTextureSources::CleanupTextures() {
// DX7 slot compacts IDirectDraw; DX9 slot is empty.
if (this->m_system && this->m_system->Backend() == 1 && this->m_directDraw) {
this->m_directDraw->Compact();
}
}