Files
how-to-vulkan/ktx/external/basisu/contrib/previewers/win/basisthumbprovider.h
T
2026-06-14 19:09:18 +01:00

59 lines
1.3 KiB
C++

#pragma once
#include <Windows.h>
#include <thumbcache.h>
/**
*
*/
class BasisThumbProvider : public IInitializeWithStream, public IThumbnailProvider
{
public:
BasisThumbProvider();
// IUnknown::QueryInterface()
IFACEMETHODIMP QueryInterface(REFIID riid, void **ppv) override;
// IUnknown::AddRef()
IFACEMETHODIMP_(ULONG) AddRef() override;
// IUnknown::Release()
IFACEMETHODIMP_(ULONG) Release() override;
// IInitializeWithStream::Initialize()
IFACEMETHODIMP Initialize(IStream *pStream, DWORD grfMode) override;
// IThumbnailProvider::GetThumbnail()
IFACEMETHODIMP GetThumbnail(UINT cx, HBITMAP *phbmp, WTS_ALPHATYPE *pdwAlpha) override;
protected:
virtual ~BasisThumbProvider();
private:
LONG count;
IStream* stream;
};
/**
*
*/
class BasisThumbProviderFactory : public IClassFactory
{
public:
BasisThumbProviderFactory();
// IUnknown::QueryInterface()
IFACEMETHODIMP QueryInterface(REFIID riid, void **ppv) override;
// IUnknown::AddRef()
IFACEMETHODIMP_(ULONG) AddRef() override;
// IUnknown::Release()
IFACEMETHODIMP_(ULONG) Release() override;
// IClassFactory::CreateInstance()
IFACEMETHODIMP CreateInstance(IUnknown *pUnkOuter, REFIID riid, void **ppv) override;
// IClassFactory::LockServer()
IFACEMETHODIMP LockServer(BOOL fLock) override;
protected:
virtual ~BasisThumbProviderFactory();
private:
LONG count;
};