mirror of
https://github.com/chibicitiberiu/rainmeter-studio.git
synced 2024-02-24 04:33:31 +00:00
Gfx: Add __D2DParams option to allow testing D2D text rendering options
This commit is contained in:
parent
c1aa191235
commit
d003db6531
@ -84,6 +84,9 @@ public:
|
|||||||
virtual void SetAntiAliasing(bool enable) = 0;
|
virtual void SetAntiAliasing(bool enable) = 0;
|
||||||
virtual void SetTextAntiAliasing(bool enable) = 0;
|
virtual void SetTextAntiAliasing(bool enable) = 0;
|
||||||
|
|
||||||
|
// FIXME: Temporary hack to test things out. This will be removed when no longer needed.
|
||||||
|
virtual void SetTextRenderingOptions(float gamma, float enhancedContrast) {};
|
||||||
|
|
||||||
virtual void Clear(const Gdiplus::Color& color = Gdiplus::Color(0, 0, 0, 0)) = 0;
|
virtual void Clear(const Gdiplus::Color& color = Gdiplus::Color(0, 0, 0, 0)) = 0;
|
||||||
|
|
||||||
virtual void DrawTextW(const WCHAR* str, UINT strLen, const TextFormat& format, Gdiplus::RectF& rect, const Gdiplus::SolidBrush& brush) = 0;
|
virtual void DrawTextW(const WCHAR* str, UINT strLen, const TextFormat& format, Gdiplus::RectF& rect, const Gdiplus::SolidBrush& brush) = 0;
|
||||||
|
@ -167,6 +167,10 @@ bool CanvasD2D::BeginTargetDraw()
|
|||||||
if (SUCCEEDED(hr))
|
if (SUCCEEDED(hr))
|
||||||
{
|
{
|
||||||
SetTextAntiAliasing(m_TextAntiAliasing);
|
SetTextAntiAliasing(m_TextAntiAliasing);
|
||||||
|
if (m_TextRenderingParams)
|
||||||
|
{
|
||||||
|
m_Target->SetTextRenderingParams(m_TextRenderingParams.Get());
|
||||||
|
}
|
||||||
|
|
||||||
m_Target->BeginDraw();
|
m_Target->BeginDraw();
|
||||||
|
|
||||||
@ -295,6 +299,27 @@ void CanvasD2D::SetTextAntiAliasing(bool enable)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CanvasD2D::SetTextRenderingOptions(float gamma, float enhancedContrast)
|
||||||
|
{
|
||||||
|
Microsoft::WRL::ComPtr<IDWriteRenderingParams> defaultRenderingParams;
|
||||||
|
HRESULT hr = c_DWFactory->CreateRenderingParams(defaultRenderingParams.GetAddressOf());
|
||||||
|
if (SUCCEEDED(hr))
|
||||||
|
{
|
||||||
|
hr = c_DWFactory->CreateCustomRenderingParams(
|
||||||
|
gamma,
|
||||||
|
enhancedContrast,
|
||||||
|
defaultRenderingParams->GetClearTypeLevel(),
|
||||||
|
defaultRenderingParams->GetPixelGeometry(),
|
||||||
|
defaultRenderingParams->GetRenderingMode(),
|
||||||
|
m_TextRenderingParams.ReleaseAndGetAddressOf());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (SUCCEEDED(hr) && m_Target)
|
||||||
|
{
|
||||||
|
m_Target->SetTextRenderingParams(m_TextRenderingParams.Get());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void CanvasD2D::Clear(const Gdiplus::Color& color)
|
void CanvasD2D::Clear(const Gdiplus::Color& color)
|
||||||
{
|
{
|
||||||
if (!m_Target) // Use GDI+ if D2D render target has not been created.
|
if (!m_Target) // Use GDI+ if D2D render target has not been created.
|
||||||
|
@ -60,6 +60,7 @@ public:
|
|||||||
|
|
||||||
virtual void SetAntiAliasing(bool enable) override;
|
virtual void SetAntiAliasing(bool enable) override;
|
||||||
virtual void SetTextAntiAliasing(bool enable) override;
|
virtual void SetTextAntiAliasing(bool enable) override;
|
||||||
|
virtual void SetTextRenderingOptions(float gamma, float enhancedContrast) override;
|
||||||
|
|
||||||
virtual void Clear(const Gdiplus::Color& color) override;
|
virtual void Clear(const Gdiplus::Color& color) override;
|
||||||
|
|
||||||
@ -90,6 +91,9 @@ private:
|
|||||||
void UpdateTargetTransform();
|
void UpdateTargetTransform();
|
||||||
|
|
||||||
Microsoft::WRL::ComPtr<ID2D1RenderTarget> m_Target;
|
Microsoft::WRL::ComPtr<ID2D1RenderTarget> m_Target;
|
||||||
|
Microsoft::WRL::ComPtr<IDWriteRenderingParams> m_TextRenderingParams;
|
||||||
|
|
||||||
|
// Underlying pixel data shared by both m_Target and m_GdipBitmap.
|
||||||
Util::WICBitmapDIB m_Bitmap;
|
Util::WICBitmapDIB m_Bitmap;
|
||||||
|
|
||||||
// GDI+ objects that share the pixel data of m_Bitmap.
|
// GDI+ objects that share the pixel data of m_Bitmap.
|
||||||
|
Loading…
Reference in New Issue
Block a user