struct TextCreate
{
std::unique_ptr<CD3DFont> pD3DFont;
TextCreate(const char * szFontName,int FontHeight,DWORD dwCreateFlags)
:pD3DFont(szFontName,FontHeight,dwCreateFlags)
{pD3DFont->Initialize(origIDirect3DDevice9);}
//unique_ptr automatically leaves move constructor, move assignment
//unique_ptr automatically deletes copy constructor, copy assignment
~TextCreate()
{pD3DFont->Invalidate();}
};
std::vector<TextCreate> fonts;
// ---OR---
struct TextCreate
{
CD3DFont pD3DFont;
TextCreate(const char * szFontName,int FontHeight,DWORD dwCreateFlags)
:D3DFont(szFontName,FontHeight,dwCreateFlags)
{D3DFont.Initialize(origIDirect3DDevice9);}
TextCreate(const TextCreate& rhs) = delete;
TextCreate(TextCreate&& rhs) = delete;
TextCreate& operator=(const TextCreate& rhs) = delete;
TextCreate& operator=(TextCreate&& rhs) = delete;
~TextCreate()
{pD3DFont.Invalidate();}
};
std::vector<std::unique_ptr<TextCreate>> fonts;
c3RydWN0IFRleHRDcmVhdGUKewogICAgc3RkOjp1bmlxdWVfcHRyPENEM0RGb250PiBwRDNERm9udDsKCglUZXh0Q3JlYXRlKGNvbnN0IGNoYXIgKiBzekZvbnROYW1lLGludCBGb250SGVpZ2h0LERXT1JEIGR3Q3JlYXRlRmxhZ3MpCiAgICA6cEQzREZvbnQoc3pGb250TmFtZSxGb250SGVpZ2h0LGR3Q3JlYXRlRmxhZ3MpIAogICAge3BEM0RGb250LT5Jbml0aWFsaXplKG9yaWdJRGlyZWN0M0REZXZpY2U5KTt9CiAgICAKICAgIC8vdW5pcXVlX3B0ciBhdXRvbWF0aWNhbGx5IGxlYXZlcyBtb3ZlIGNvbnN0cnVjdG9yLCBtb3ZlIGFzc2lnbm1lbnQKICAgIC8vdW5pcXVlX3B0ciBhdXRvbWF0aWNhbGx5IGRlbGV0ZXMgY29weSBjb25zdHJ1Y3RvciwgY29weSBhc3NpZ25tZW50CgoJflRleHRDcmVhdGUoKQogICAge3BEM0RGb250LT5JbnZhbGlkYXRlKCk7fSAKfTsKCnN0ZDo6dmVjdG9yPFRleHRDcmVhdGU+IGZvbnRzOwoKLy8gLS0tT1ItLS0Kc3RydWN0IFRleHRDcmVhdGUKewogICAgQ0QzREZvbnQgcEQzREZvbnQ7CgogICAgVGV4dENyZWF0ZShjb25zdCBjaGFyICogc3pGb250TmFtZSxpbnQgRm9udEhlaWdodCxEV09SRCBkd0NyZWF0ZUZsYWdzKQogICAgOkQzREZvbnQoc3pGb250TmFtZSxGb250SGVpZ2h0LGR3Q3JlYXRlRmxhZ3MpIAogICAge0QzREZvbnQuSW5pdGlhbGl6ZShvcmlnSURpcmVjdDNERGV2aWNlOSk7fQogICAgCiAgICBUZXh0Q3JlYXRlKGNvbnN0IFRleHRDcmVhdGUmIHJocykgPSBkZWxldGU7CiAgICBUZXh0Q3JlYXRlKFRleHRDcmVhdGUmJiByaHMpID0gZGVsZXRlOwogICAgVGV4dENyZWF0ZSYgb3BlcmF0b3I9KGNvbnN0IFRleHRDcmVhdGUmIHJocykgPSBkZWxldGU7CiAgICBUZXh0Q3JlYXRlJiBvcGVyYXRvcj0oVGV4dENyZWF0ZSYmIHJocykgPSBkZWxldGU7Cgl+VGV4dENyZWF0ZSgpCiAgICB7cEQzREZvbnQuSW52YWxpZGF0ZSgpO30gCn07CgpzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8VGV4dENyZWF0ZT4+IGZvbnRzOw==