Seaside/SpyCustom/sdk/itexture.h
2021-06-16 18:46:33 +03:00

93 lines
2.5 KiB
C++

#ifndef ITEXTURE_H
#define ITEXTURE_H
#ifdef _WIN32
#pragma once
#endif
#include "platform.h"
#include "imageformat.h"
class IVTFTexture;
class ITexture;
struct Rect_t;
abstract_class ITextureRegenerator
{
public:
virtual void RegenerateTextureBits(ITexture * pTexture, IVTFTexture * pVTFTexture, Rect_t * pRect) = 0;
virtual void Release() = 0;
};
abstract_class ITexture
{
public:
virtual const char* GetName(void) const = 0;
virtual int GetMappingWidth() const = 0;
virtual int GetMappingHeight() const = 0;
virtual int GetActualWidth() const = 0;
virtual int GetActualHeight() const = 0;
virtual int GetNumAnimationFrames() const = 0;
virtual bool IsTranslucent() const = 0;
virtual bool IsMipmapped() const = 0;
virtual void GetLowResColorSample(float s, float t, float* color) const = 0;
virtual void* GetResourceData(uint32 eDataType, size_t* pNumBytes) const = 0;
virtual void IncrementReferenceCount(void) = 0;
virtual void DecrementReferenceCount(void) = 0;
inline void AddRef() { IncrementReferenceCount(); }
inline void Release() { DecrementReferenceCount(); }
virtual void SetTextureRegenerator(ITextureRegenerator* pTextureRegen) = 0;
virtual void Download(Rect_t* pRect = 0, int nAdditionalCreationFlags = 0) = 0;
virtual int GetApproximateVidMemBytes(void) const = 0;
virtual bool IsError() const = 0;
virtual bool IsVolumeTexture() const = 0;
virtual int GetMappingDepth() const = 0;
virtual int GetActualDepth() const = 0;
virtual ImageFormat GetImageFormat() const = 0;
virtual NormalDecodeMode_t GetNormalDecodeMode() const = 0;
virtual bool IsRenderTarget() const = 0;
virtual bool IsCubeMap() const = 0;
virtual bool IsNormalMap() const = 0;
virtual bool IsProcedural() const = 0;
virtual void DeleteIfUnreferenced() = 0;
#if defined( _X360 )
virtual bool ClearTexture(int r, int g, int b, int a) = 0;
virtual bool CreateRenderTargetSurface(int width, int height, ImageFormat format, bool bSameAsTexture) = 0;
#endif
virtual void SwapContents(ITexture* pOther) = 0;
virtual unsigned int GetFlags(void) const = 0;
virtual void ForceLODOverride(int iNumLodsOverrideUpOrDown) = 0;
virtual bool SaveToFile(const char* fileName) = 0;
virtual void CopyToStagingTexture(ITexture* pDstTex) = 0;
virtual void SetErrorTexture(bool bIsErrorTexture) = 0;
};
inline bool IsErrorTexture(ITexture* pTex)
{
return !pTex || pTex->IsError();
}
#endif