mirror of
https://github.com/Mauler125/r5sdk.git
synced 2025-02-09 19:15:03 +01:00
50 lines
948 B
C++
50 lines
948 B
C++
#include "stdafx.h"
|
|
#include "Font.h"
|
|
|
|
namespace Drawing
|
|
{
|
|
Font::Font(HWND Handle, const HFONT hFont)
|
|
: _Handle(Handle), _NativeFont(hFont), _OwnsFont(false)
|
|
{
|
|
}
|
|
|
|
Font::Font(HWND Handle, const Gdiplus::Font& FontObject)
|
|
: _Handle(Handle), _NativeFont(nullptr), _OwnsFont(true)
|
|
{
|
|
LOGFONTA FontParams{};
|
|
auto hDC = GetDC(Handle);
|
|
auto Gfx = Graphics::FromHDC(hDC);
|
|
|
|
FontObject.GetLogFontA(Gfx, &FontParams);
|
|
|
|
_NativeFont = CreateFontIndirectA(&FontParams);
|
|
|
|
delete Gfx;
|
|
ReleaseDC(Handle, hDC);
|
|
}
|
|
|
|
Font::~Font()
|
|
{
|
|
if (_OwnsFont && _NativeFont != nullptr)
|
|
DeleteObject(_NativeFont);
|
|
|
|
_NativeFont = nullptr;
|
|
_Handle = nullptr;
|
|
}
|
|
|
|
HFONT Font::GetFontHandle()
|
|
{
|
|
return _NativeFont;
|
|
}
|
|
|
|
std::unique_ptr<Gdiplus::Font> Font::GetFont()
|
|
{
|
|
auto hDC = GetDC(this->_Handle);
|
|
|
|
auto Result = std::make_unique<Gdiplus::Font>(hDC, this->_NativeFont);
|
|
ReleaseDC(this->_Handle, hDC);
|
|
|
|
return std::move(Result);
|
|
}
|
|
}
|