@@ -88,7 +88,7 @@ void SolidBackgroundElementRenderer::Render(CRect bounds)
8888 auto rt = renderTarget.lock ();
8989 if (e->flags .self_visible )
9090 {
91- CComPtr<ID2D1RenderTarget> d2dRenderTarget = rt->GetDirect2DRenderTarget ();
91+ auto d2dRenderTarget = rt->GetDirect2DRenderTarget ();
9292 d2dRenderTarget->FillRectangle (
9393 D2D1::RectF ((FLOAT)bounds.left , (FLOAT)bounds.top , (FLOAT)bounds.right , (FLOAT)bounds.bottom ),
9494 brush
@@ -100,7 +100,6 @@ void SolidBackgroundElementRenderer::Render(CRect bounds)
100100
101101#pragma region GradientBackground
102102GradientBackgroundElement::GradientBackgroundElement ()
103- : direction(Horizontal)
104103{
105104
106105}
@@ -223,7 +222,7 @@ void GradientBackgroundElementRenderer::Render(CRect bounds)
223222 brush->SetStartPoint (points[0 ]);
224223 brush->SetEndPoint (points[1 ]);
225224
226- CComPtr<ID2D1RenderTarget> d2dRenderTarget = rt->GetDirect2DRenderTarget ();
225+ auto d2dRenderTarget = rt->GetDirect2DRenderTarget ();
227226 d2dRenderTarget->FillRectangle (
228227 D2D1::RectF ((FLOAT)bounds.left , (FLOAT)bounds.top , (FLOAT)bounds.right , (FLOAT)bounds.bottom ),
229228 brush
@@ -235,11 +234,6 @@ void GradientBackgroundElementRenderer::Render(CRect bounds)
235234
236235#pragma region SolidLabel
237236SolidLabelElement::SolidLabelElement ()
238- : hAlignment(Alignment::StringAlignmentNear)
239- , vAlignment(Alignment::StringAlignmentNear)
240- , wrapLine(false )
241- , multiline(false )
242- , wrapLineHeightCalculation(false )
243237{
244238 fontProperties.fontFamily = _T (" Microsoft Yahei" );
245239 fontProperties.size = 12 ;
@@ -396,7 +390,6 @@ void SolidLabelElement::SetWrapLineHeightCalculation(bool value)
396390}
397391
398392SolidLabelElementRenderer::SolidLabelElementRenderer ()
399- : oldMaxWidth(-1 )
400393{
401394
402395}
@@ -443,7 +436,7 @@ void SolidLabelElementRenderer::Render(CRect bounds)
443436
444437 if (!e->GetMultiline () && !e->GetWrapLine ())
445438 {
446- CComPtr<ID2D1RenderTarget> d2dRenderTarget = rt->GetDirect2DRenderTarget ();
439+ auto d2dRenderTarget = rt->GetDirect2DRenderTarget ();
447440 d2dRenderTarget->DrawTextLayout (
448441 D2D1::Point2F ((FLOAT)x, (FLOAT)y),
449442 textLayout,
@@ -453,7 +446,7 @@ void SolidLabelElementRenderer::Render(CRect bounds)
453446 }
454447 else
455448 {
456- CComPtr<IDWriteFactory> dwriteFactory = Direct2D::Singleton ().GetDirectWriteFactory ();
449+ auto dwriteFactory = Direct2D::Singleton ().GetDirectWriteFactory ();
457450 DWRITE_TRIMMING trimming;
458451 CComPtr<IDWriteInlineObject> inlineObject;
459452 textLayout->GetTrimming (&trimming, &inlineObject);
@@ -490,7 +483,7 @@ void SolidLabelElementRenderer::Render(CRect bounds)
490483 textLayout->SetMaxWidth ((FLOAT)textBounds.Width ());
491484 textLayout->SetMaxHeight ((FLOAT)textBounds.Height ());
492485
493- CComPtr<ID2D1RenderTarget> d2dRenderTarget = rt->GetDirect2DRenderTarget ();
486+ auto d2dRenderTarget = rt->GetDirect2DRenderTarget ();
494487 d2dRenderTarget->DrawTextLayout (
495488 D2D1::Point2F ((FLOAT)textBounds.left , (FLOAT)textBounds.top ),
496489 textLayout,
@@ -684,4 +677,81 @@ void SolidLabelElementRenderer::FinalizeInternal()
684677 DestroyTextFormat (rt);
685678}
686679
687- #pragma endregion SolidLabel
680+ #pragma endregion SolidLabel
681+
682+ #pragma region RoundBorder
683+
684+ RoundBorderElement::RoundBorderElement ()
685+ {
686+
687+ }
688+
689+ RoundBorderElement::~RoundBorderElement ()
690+ {
691+ renderer->Finalize ();
692+ }
693+
694+ CString RoundBorderElement::GetElementTypeName ()
695+ {
696+ return _T (" RoundBorder" );
697+ }
698+
699+ cint RoundBorderElement::GetTypeId ()
700+ {
701+ return RoundBorder;
702+ }
703+
704+ CColor RoundBorderElement::GetColor ()
705+ {
706+ return color;
707+ }
708+
709+ void RoundBorderElement::SetColor (CColor value)
710+ {
711+ if (color != value)
712+ {
713+ color = value;
714+ if (renderer)
715+ {
716+ renderer->OnElementStateChanged ();
717+ }
718+ }
719+ }
720+
721+ FLOAT RoundBorderElement::GetRadius ()
722+ {
723+ return radius;
724+ }
725+
726+ void RoundBorderElement::SetRadius (FLOAT value)
727+ {
728+ if (radius != value)
729+ {
730+ radius = value;
731+ if (renderer)
732+ {
733+ renderer->OnElementStateChanged ();
734+ }
735+ }
736+ }
737+
738+ void RoundBorderElementRenderer::Render (CRect bounds)
739+ {
740+ auto e = element.lock ();
741+ auto rt = renderTarget.lock ();
742+ if (e->flags .self_visible )
743+ {
744+ auto d2dRenderTarget = rt->GetDirect2DRenderTarget ();
745+ d2dRenderTarget->FillRoundedRectangle (
746+ D2D1::RoundedRect (
747+ D2D1::RectF ((FLOAT)bounds.left , (FLOAT)bounds.top , (FLOAT)bounds.right , (FLOAT)bounds.bottom ),
748+ e->GetRadius (),
749+ e->GetRadius ()
750+ ),
751+ brush
752+ );
753+ }
754+ GraphicsRenderer::Render (bounds);
755+ }
756+
757+ #pragma endregion RoundBorder
0 commit comments