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:
		@@ -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.
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user