2025-11-28 00:35:46 +09:00

51 lines
1.3 KiB
C++

//// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
//// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
//// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
//// PARTICULAR PURPOSE.
////
//// Copyright (c) Microsoft Corporation. All rights reserved
#pragma once
#include <array>
class FontFileStream : public IDWriteFontFileStream
{
public:
FontFileStream(_In_ std::vector<BYTE> *data);
virtual HRESULT STDMETHODCALLTYPE QueryInterface(
REFIID uuid,
_Outptr_ void** object
) override;
virtual ULONG STDMETHODCALLTYPE AddRef() override;
virtual ULONG STDMETHODCALLTYPE Release() override;
virtual HRESULT STDMETHODCALLTYPE ReadFileFragment(
_Outptr_result_bytebuffer_(fragmentSize) void const** fragmentStart,
UINT64 fileOffset,
UINT64 fragmentSize,
_Out_ void** fragmentContext
) override;
virtual void STDMETHODCALLTYPE ReleaseFileFragment(
_In_ void* fragmentContext
) override;
virtual HRESULT STDMETHODCALLTYPE GetFileSize(
_Out_ UINT64* fileSize
) override;
virtual HRESULT STDMETHODCALLTYPE GetLastWriteTime(
_Out_ UINT64* lastWriteTime
) override;
private:
// Reference counter
ULONG m_refCount;
// Raw data of the file
std::vector<BYTE> m_data;
};