|
|
|
@@ -52,11 +52,37 @@ namespace DirectWriteTypeLayout |
|
|
|
return S_OK;
|
|
|
|
}
|
|
|
|
|
|
|
|
JUCE_COMRESULT GetCurrentTransform (void*, DWRITE_MATRIX*) { return S_OK; }
|
|
|
|
JUCE_COMRESULT GetPixelsPerDip (void*, FLOAT*) { return S_OK; }
|
|
|
|
JUCE_COMRESULT DrawUnderline (void*, FLOAT, FLOAT, DWRITE_UNDERLINE const*, IUnknown*) { return S_OK; }
|
|
|
|
JUCE_COMRESULT DrawStrikethrough (void*, FLOAT, FLOAT, DWRITE_STRIKETHROUGH const*, IUnknown*) { return S_OK; }
|
|
|
|
JUCE_COMRESULT DrawInlineObject (void*, FLOAT, FLOAT, IDWriteInlineObject*, BOOL, BOOL, IUnknown*) { return E_NOTIMPL; }
|
|
|
|
JUCE_COMRESULT GetCurrentTransform (void*, DWRITE_MATRIX* matrix)
|
|
|
|
{
|
|
|
|
matrix->m11 = 1.0f;
|
|
|
|
matrix->m12 = 0.0f;
|
|
|
|
matrix->m21 = 0.0f;
|
|
|
|
matrix->m22 = 1.0f;
|
|
|
|
matrix->dx = 0.0f;
|
|
|
|
matrix->dy = 0.0f;
|
|
|
|
return S_OK;
|
|
|
|
}
|
|
|
|
|
|
|
|
JUCE_COMRESULT GetPixelsPerDip (void*, FLOAT* pixelsPerDip)
|
|
|
|
{
|
|
|
|
*pixelsPerDip = 1.0f;
|
|
|
|
return S_OK;
|
|
|
|
}
|
|
|
|
|
|
|
|
JUCE_COMRESULT DrawUnderline (void*, FLOAT, FLOAT, DWRITE_UNDERLINE const*, IUnknown*)
|
|
|
|
{
|
|
|
|
return E_NOTIMPL;
|
|
|
|
}
|
|
|
|
|
|
|
|
JUCE_COMRESULT DrawStrikethrough (void*, FLOAT, FLOAT, DWRITE_STRIKETHROUGH const*, IUnknown*)
|
|
|
|
{
|
|
|
|
return E_NOTIMPL;
|
|
|
|
}
|
|
|
|
|
|
|
|
JUCE_COMRESULT DrawInlineObject (void*, FLOAT, FLOAT, IDWriteInlineObject*, BOOL, BOOL, IUnknown*)
|
|
|
|
{
|
|
|
|
return E_NOTIMPL;
|
|
|
|
}
|
|
|
|
|
|
|
|
JUCE_COMRESULT DrawGlyphRun (void* clientDrawingContext, FLOAT baselineOriginX, FLOAT baselineOriginY, DWRITE_MEASURING_MODE,
|
|
|
|
DWRITE_GLYPH_RUN const* glyphRun, DWRITE_GLYPH_RUN_DESCRIPTION const* runDescription,
|
|
|
|
@@ -419,20 +445,6 @@ bool TextLayout::createNativeLayout (const AttributedString& text) |
|
|
|
|
|
|
|
if (factories->d2dFactory != nullptr && factories->systemFonts != nullptr)
|
|
|
|
{
|
|
|
|
#if JUCE_64BIT
|
|
|
|
// There's a mysterious bug in 64-bit Windows that causes garbage floating-point
|
|
|
|
// values to be returned to DrawGlyphRun the first time that it gets used.
|
|
|
|
// In lieu of a better plan, this bodge uses a dummy call to work around this.
|
|
|
|
static bool hasBeenCalled = false;
|
|
|
|
if (! hasBeenCalled)
|
|
|
|
{
|
|
|
|
hasBeenCalled = true;
|
|
|
|
TextLayout dummy;
|
|
|
|
DirectWriteTypeLayout::createLayout (dummy, text, factories->directWriteFactory,
|
|
|
|
factories->d2dFactory, factories->systemFonts);
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
|
|
DirectWriteTypeLayout::createLayout (*this, text, factories->directWriteFactory,
|
|
|
|
factories->d2dFactory, factories->systemFonts);
|
|
|
|
return true;
|
|
|
|
|