#include "uipriv_windows.hpp"
#include "attrstr.hpp"
static std::map<uiTextItalic, DWRITE_FONT_STYLE> dwriteItalics = {
{ uiTextItalicNormal, DWRITE_FONT_STYLE_NORMAL },
{ uiTextItalicOblique, DWRITE_FONT_STYLE_OBLIQUE },
{ uiTextItalicItalic, DWRITE_FONT_STYLE_ITALIC },
};
static std::map<uiTextStretch, DWRITE_FONT_STRETCH> dwriteStretches = {
{ uiTextStretchUltraCondensed, DWRITE_FONT_STRETCH_ULTRA_CONDENSED },
{ uiTextStretchExtraCondensed, DWRITE_FONT_STRETCH_EXTRA_CONDENSED },
{ uiTextStretchCondensed, DWRITE_FONT_STRETCH_CONDENSED },
{ uiTextStretchSemiCondensed, DWRITE_FONT_STRETCH_SEMI_CONDENSED },
{ uiTextStretchNormal, DWRITE_FONT_STRETCH_NORMAL },
{ uiTextStretchSemiExpanded, DWRITE_FONT_STRETCH_SEMI_EXPANDED },
{ uiTextStretchExpanded, DWRITE_FONT_STRETCH_EXPANDED },
{ uiTextStretchExtraExpanded, DWRITE_FONT_STRETCH_EXTRA_EXPANDED },
{ uiTextStretchUltraExpanded, DWRITE_FONT_STRETCH_ULTRA_EXPANDED },
};
DWRITE_FONT_WEIGHT uiprivWeightToDWriteWeight(uiTextWeight w)
{
return (DWRITE_FONT_WEIGHT) w;
}
DWRITE_FONT_STYLE uiprivItalicToDWriteStyle(uiTextItalic i)
{
return dwriteItalics[i];
}
DWRITE_FONT_STRETCH uiprivStretchToDWriteStretch(uiTextStretch s)
{
return dwriteStretches[s];
}
void uiprivFontDescriptorFromIDWriteFont(IDWriteFont *font, uiFontDescriptor *uidesc)
{
DWRITE_FONT_STYLE dwitalic;
DWRITE_FONT_STRETCH dwstretch;
dwitalic = font->GetStyle();
uidesc->Weight = (uiTextWeight) (font->GetWeight());
dwstretch = font->GetStretch();
for (uidesc->Italic = uiTextItalicNormal; uidesc->Italic < uiTextItalicItalic; uidesc->Italic++)
if (dwriteItalics[uidesc->Italic] == dwitalic)
break;
for (uidesc->Stretch = uiTextStretchUltraCondensed; uidesc->Stretch < uiTextStretchUltraExpanded; uidesc->Stretch++)
if (dwriteStretches[uidesc->Stretch] == dwstretch)
break;
}