Gfx: Cosmetics

This commit is contained in:
Birunthan Mohanathas 2013-04-12 19:18:56 +03:00
parent 73adaffe43
commit b73735251e
3 changed files with 23 additions and 28 deletions

View File

@ -95,25 +95,24 @@ void TextFormatD2D::SetProperties(
{
Dispose();
HRESULT hr = E_FAIL;
// |fontFamily| uses the GDI/GDI+ font naming convention so try to create DirectWrite font
// using the GDI family name and then create a text format using the DirectWrite family name
// obtained from it.
WCHAR dwFamilyName[LF_FACESIZE];
DWRITE_FONT_WEIGHT dwFontWeight;
DWRITE_FONT_STYLE dwFontStyle;
DWRITE_FONT_STRETCH dwFontStretch;
if (Util::GetDWritePropertiesFromGDIProperties(
CanvasD2D::c_DWFactory, fontFamily, bold, italic, dwFontWeight, dwFontStyle, dwFontStretch,
dwFamilyName, _countof(dwFamilyName)))
WCHAR dwriteFamilyName[LF_FACESIZE];
DWRITE_FONT_WEIGHT dwriteFontWeight;
DWRITE_FONT_STYLE dwriteFontStyle;
DWRITE_FONT_STRETCH dwriteFontStretch;
HRESULT hr = Util::GetDWritePropertiesFromGDIProperties(
CanvasD2D::c_DWFactory, fontFamily, bold, italic, dwriteFontWeight, dwriteFontStyle,
dwriteFontStretch, dwriteFamilyName, _countof(dwriteFamilyName));
if (SUCCEEDED(hr))
{
hr = CanvasD2D::c_DWFactory->CreateTextFormat(
dwFamilyName,
dwriteFamilyName,
nullptr,
dwFontWeight,
dwFontStyle,
dwFontStretch,
dwriteFontWeight,
dwriteFontStyle,
dwriteFontStretch,
size * (4.0f / 3.0f),
L"",
&m_TextFormat);

View File

@ -21,12 +21,12 @@
namespace Gfx {
namespace Util {
bool GetDWritePropertiesFromGDIProperties(
HRESULT GetDWritePropertiesFromGDIProperties(
IDWriteFactory* factory, const WCHAR* gdiFamilyName, const bool gdiBold, const bool gdiItalic,
DWRITE_FONT_WEIGHT& dwriteFontWeight, DWRITE_FONT_STYLE& dwriteFontStyle,
DWRITE_FONT_STRETCH& dwriteFontStretch, WCHAR* dwriteFamilyName, UINT dwriteFamilyNameSize)
{
bool result = false;
HRESULT hr = E_FAIL;
IDWriteFont* dwriteFont = CreateDWriteFontFromGDIFamilyName(factory, gdiFamilyName);
if (dwriteFont)
{
@ -57,13 +57,13 @@ bool GetDWritePropertiesFromGDIProperties(
dwriteFontStretch = dwriteFont->GetStretch();
result = true;
hr = S_OK;
}
dwriteFont->Release();
}
return result;
return hr;
}
IDWriteFont* CreateDWriteFontFromGDIFamilyName(IDWriteFactory* factory, const WCHAR* gdiFamilyName)
@ -95,7 +95,7 @@ IDWriteFont* CreateDWriteFontFromGDIFamilyName(IDWriteFactory* factory, const WC
return nullptr;
}
bool GetFamilyNameFromDWriteFont(IDWriteFont* font, WCHAR* buffer, const UINT bufferSize)
HRESULT GetFamilyNameFromDWriteFont(IDWriteFont* font, WCHAR* buffer, const UINT bufferSize)
{
IDWriteFontFamily* dwriteFontFamily;
HRESULT hr = font->GetFontFamily(&dwriteFontFamily);
@ -103,33 +103,29 @@ bool GetFamilyNameFromDWriteFont(IDWriteFont* font, WCHAR* buffer, const UINT bu
{
GetFamilyNameFromDWriteFontFamily(dwriteFontFamily, buffer, bufferSize);
dwriteFontFamily->Release();
return true;
}
return false;
return hr;
}
bool GetFamilyNameFromDWriteFontFamily(
HRESULT GetFamilyNameFromDWriteFontFamily(
IDWriteFontFamily* fontFamily, WCHAR* buffer, const UINT bufferSize)
{
bool result = false;
IDWriteLocalizedStrings* dwFamilyNames;
HRESULT hr = fontFamily->GetFamilyNames(&dwFamilyNames);
if (SUCCEEDED(hr))
{
// TODO: Determine the best index?
hr = dwFamilyNames->GetString(0, buffer, bufferSize);
result = SUCCEEDED(hr);
dwFamilyNames->Release();
}
return result;
return hr;
}
bool IsFamilyInSystemFontCollection(IDWriteFactory* factory, const WCHAR* familyName)
{
bool result = false;
IDWriteFontCollection* systemFontCollection;
HRESULT hr = factory->GetSystemFontCollection(&systemFontCollection);
if (SUCCEEDED(hr))

View File

@ -26,7 +26,7 @@ namespace Util {
// Maps the GDI family name and italic/bold flags to the DirectWrite family name, weight, style,
// and stretch.
bool GetDWritePropertiesFromGDIProperties(
HRESULT GetDWritePropertiesFromGDIProperties(
IDWriteFactory* factory, const WCHAR* gdiFamilyName, const bool gdiBold, const bool gdiItalic,
DWRITE_FONT_WEIGHT& dwriteFontWeight, DWRITE_FONT_STYLE& dwriteFontStyle,
DWRITE_FONT_STRETCH& dwriteFontStretch, WCHAR* dwriteFamilyName, UINT dwriteFamilyNameSize);
@ -37,9 +37,9 @@ bool GetDWritePropertiesFromGDIProperties(
// style.
IDWriteFont* CreateDWriteFontFromGDIFamilyName(IDWriteFactory* factory, const WCHAR* fontFamily);
bool GetFamilyNameFromDWriteFont(IDWriteFont* font, WCHAR* buffer, UINT bufferSize);
HRESULT GetFamilyNameFromDWriteFont(IDWriteFont* font, WCHAR* buffer, UINT bufferSize);
bool GetFamilyNameFromDWriteFontFamily(
HRESULT GetFamilyNameFromDWriteFontFamily(
IDWriteFontFamily* fontFamily, WCHAR* buffer, UINT bufferSize);
bool IsFamilyInSystemFontCollection(IDWriteFactory* factory, const WCHAR* familyName);