diff --git a/Plain Craft Launcher 2/App.config b/Plain Craft Launcher 2/App.config index 8d134eb..d464350 100644 --- a/Plain Craft Launcher 2/App.config +++ b/Plain Craft Launcher 2/App.config @@ -32,4 +32,4 @@ - + \ No newline at end of file diff --git a/Plain Craft Launcher 2/Modules/Reference/SystemDropShadowChrome.vb b/Plain Craft Launcher 2/Modules/Reference/SystemDropShadowChrome.vb deleted file mode 100644 index 6e103cf..0000000 --- a/Plain Craft Launcher 2/Modules/Reference/SystemDropShadowChrome.vb +++ /dev/null @@ -1,299 +0,0 @@ -Public NotInheritable Class SystemDropShadowChrome - Inherits Decorator - - '源码来源于:https://referencesource.microsoft.com/#PresentationFramework.Aero/parent/Shared/Microsoft/Windows/Themes/SystemDropShadowChrome.cs,6d9c27d92a8128c1 - - Public Shared ReadOnly ColorProperty As DependencyProperty = DependencyProperty.Register("Color", GetType(Color), GetType(SystemDropShadowChrome), New FrameworkPropertyMetadata(Color.FromArgb(&H71, &H0, &H0, &H0), FrameworkPropertyMetadataOptions.AffectsRender, New PropertyChangedCallback(AddressOf ClearBrushes))) - Public Property Color As Color - Get - Return CType(GetValue(ColorProperty), Color) - End Get - Set(value As Color) - SetValue(ColorProperty, value) - End Set - End Property - - Public Shared ReadOnly CornerRadiusProperty As DependencyProperty = DependencyProperty.Register("CornerRadius", GetType(CornerRadius), GetType(SystemDropShadowChrome), New FrameworkPropertyMetadata(New CornerRadius(), FrameworkPropertyMetadataOptions.AffectsRender, New PropertyChangedCallback(AddressOf ClearBrushes)), New ValidateValueCallback(AddressOf IsCornerRadiusValid)) - Public Property CornerRadius As CornerRadius - Get - Return CType(GetValue(CornerRadiusProperty), CornerRadius) - End Get - Set(value As CornerRadius) - SetValue(CornerRadiusProperty, value) - End Set - End Property - Private Shared Function IsCornerRadiusValid(value As Object) As Boolean - Dim cr As CornerRadius = CType(value, CornerRadius) - Return Not (cr.TopLeft < 0.0 OrElse cr.TopRight < 0.0 OrElse cr.BottomLeft < 0.0 OrElse cr.BottomRight < 0.0 OrElse Double.IsNaN(cr.TopLeft) OrElse Double.IsNaN(cr.TopRight) OrElse Double.IsNaN(cr.BottomLeft) OrElse Double.IsNaN(cr.BottomRight) OrElse Double.IsInfinity(cr.TopLeft) OrElse Double.IsInfinity(cr.TopRight) OrElse Double.IsInfinity(cr.BottomLeft) OrElse Double.IsInfinity(cr.BottomRight)) - End Function - - Private Const ShadowDepth As Double = 5 - - Protected Overrides Sub OnRender(drawingContext As DrawingContext) - Dim cornerRadius As CornerRadius = Me.CornerRadius - Dim shadowBounds As New Rect(New Point(ShadowDepth, ShadowDepth), New Size(RenderSize.Width, RenderSize.Height)) - Dim color As Color = Me.Color - - If shadowBounds.Width > 0 AndAlso shadowBounds.Height > 0 AndAlso color.A > 0 Then - Dim centerWidth As Double = shadowBounds.Right - shadowBounds.Left - 2 * ShadowDepth - Dim centerHeight As Double = shadowBounds.Bottom - shadowBounds.Top - 2 * ShadowDepth - Dim maxRadius As Double = Math.Min(centerWidth * 0.5, centerHeight * 0.5) - cornerRadius.TopLeft = Math.Min(cornerRadius.TopLeft, maxRadius) - cornerRadius.TopRight = Math.Min(cornerRadius.TopRight, maxRadius) - cornerRadius.BottomLeft = Math.Min(cornerRadius.BottomLeft, maxRadius) - cornerRadius.BottomRight = Math.Min(cornerRadius.BottomRight, maxRadius) - Dim brushes As Brush() = GetBrushes(color, cornerRadius) - Dim centerTop As Double = shadowBounds.Top + ShadowDepth - Dim centerLeft As Double = shadowBounds.Left + ShadowDepth - Dim centerRight As Double = shadowBounds.Right - ShadowDepth - Dim centerBottom As Double = shadowBounds.Bottom - ShadowDepth - Dim guidelineSetX As Double() = New Double() {centerLeft, centerLeft + cornerRadius.TopLeft, centerRight - cornerRadius.TopRight, centerLeft + cornerRadius.BottomLeft, centerRight - cornerRadius.BottomRight, centerRight} - Dim guidelineSetY As Double() = New Double() {centerTop, centerTop + cornerRadius.TopLeft, centerTop + cornerRadius.TopRight, centerBottom - cornerRadius.BottomLeft, centerBottom - cornerRadius.BottomRight, centerBottom} - drawingContext.PushGuidelineSet(New GuidelineSet(guidelineSetX, guidelineSetY)) - cornerRadius.TopLeft += ShadowDepth - cornerRadius.TopRight += ShadowDepth - cornerRadius.BottomLeft += ShadowDepth - cornerRadius.BottomRight += ShadowDepth - Dim topLeft As New Rect(shadowBounds.Left, shadowBounds.Top, cornerRadius.TopLeft, cornerRadius.TopLeft) - drawingContext.DrawRectangle(brushes(Placement.TopLeft), Nothing, topLeft) - Dim topWidth As Double = guidelineSetX(2) - guidelineSetX(1) - - If topWidth > 0 Then - Dim top As New Rect(guidelineSetX(1), shadowBounds.Top, topWidth, ShadowDepth) - drawingContext.DrawRectangle(brushes(Placement.Top), Nothing, top) - End If - - Dim topRight As New Rect(guidelineSetX(2), shadowBounds.Top, cornerRadius.TopRight, cornerRadius.TopRight) - drawingContext.DrawRectangle(brushes(Placement.TopRight), Nothing, topRight) - Dim leftHeight As Double = guidelineSetY(3) - guidelineSetY(1) - - If leftHeight > 0 Then - Dim left As New Rect(shadowBounds.Left, guidelineSetY(1), ShadowDepth, leftHeight) - drawingContext.DrawRectangle(brushes(Placement.Left), Nothing, left) - End If - - Dim rightHeight As Double = guidelineSetY(4) - guidelineSetY(2) - - If rightHeight > 0 Then - Dim right As New Rect(guidelineSetX(5), guidelineSetY(2), ShadowDepth, rightHeight) - drawingContext.DrawRectangle(brushes(Placement.Right), Nothing, right) - End If - - Dim bottomLeft As New Rect(shadowBounds.Left, guidelineSetY(3), cornerRadius.BottomLeft, cornerRadius.BottomLeft) - drawingContext.DrawRectangle(brushes(Placement.BottomLeft), Nothing, bottomLeft) - Dim bottomWidth As Double = guidelineSetX(4) - guidelineSetX(3) - - If bottomWidth > 0 Then - Dim bottom As New Rect(guidelineSetX(3), guidelineSetY(5), bottomWidth, ShadowDepth) - drawingContext.DrawRectangle(brushes(Placement.Bottom), Nothing, bottom) - End If - - Dim bottomRight As New Rect(guidelineSetX(4), guidelineSetY(4), cornerRadius.BottomRight, cornerRadius.BottomRight) - drawingContext.DrawRectangle(brushes(Placement.BottomRight), Nothing, bottomRight) - - If cornerRadius.TopLeft = ShadowDepth AndAlso cornerRadius.TopLeft = cornerRadius.TopRight AndAlso cornerRadius.TopLeft = cornerRadius.BottomLeft AndAlso cornerRadius.TopLeft = cornerRadius.BottomRight Then - Dim center As New Rect(guidelineSetX(0), guidelineSetY(0), centerWidth, centerHeight) - drawingContext.DrawRectangle(brushes(Placement.Center), Nothing, center) - Else - Dim figure As New PathFigure() - - If cornerRadius.TopLeft > ShadowDepth Then - figure.StartPoint = New Point(guidelineSetX(1), guidelineSetY(0)) - figure.Segments.Add(New LineSegment(New Point(guidelineSetX(1), guidelineSetY(1)), True)) - figure.Segments.Add(New LineSegment(New Point(guidelineSetX(0), guidelineSetY(1)), True)) - Else - figure.StartPoint = New Point(guidelineSetX(0), guidelineSetY(0)) - End If - - If cornerRadius.BottomLeft > ShadowDepth Then - figure.Segments.Add(New LineSegment(New Point(guidelineSetX(0), guidelineSetY(3)), True)) - figure.Segments.Add(New LineSegment(New Point(guidelineSetX(3), guidelineSetY(3)), True)) - figure.Segments.Add(New LineSegment(New Point(guidelineSetX(3), guidelineSetY(5)), True)) - Else - figure.Segments.Add(New LineSegment(New Point(guidelineSetX(0), guidelineSetY(5)), True)) - End If - - If cornerRadius.BottomRight > ShadowDepth Then - figure.Segments.Add(New LineSegment(New Point(guidelineSetX(4), guidelineSetY(5)), True)) - figure.Segments.Add(New LineSegment(New Point(guidelineSetX(4), guidelineSetY(4)), True)) - figure.Segments.Add(New LineSegment(New Point(guidelineSetX(5), guidelineSetY(4)), True)) - Else - figure.Segments.Add(New LineSegment(New Point(guidelineSetX(5), guidelineSetY(5)), True)) - End If - - If cornerRadius.TopRight > ShadowDepth Then - figure.Segments.Add(New LineSegment(New Point(guidelineSetX(5), guidelineSetY(2)), True)) - figure.Segments.Add(New LineSegment(New Point(guidelineSetX(2), guidelineSetY(2)), True)) - figure.Segments.Add(New LineSegment(New Point(guidelineSetX(2), guidelineSetY(0)), True)) - Else - figure.Segments.Add(New LineSegment(New Point(guidelineSetX(5), guidelineSetY(0)), True)) - End If - - figure.IsClosed = True - figure.Freeze() - Dim geometry As New PathGeometry() - geometry.Figures.Add(figure) - geometry.Freeze() - drawingContext.DrawGeometry(brushes(Placement.Center), Nothing, geometry) - End If - - drawingContext.Pop() - End If - End Sub - - Private Enum Placement - TopLeft = 0 - Top = 1 - TopRight = 2 - Left = 3 - Center = 4 - Right = 5 - BottomLeft = 6 - Bottom = 7 - BottomRight = 8 - End Enum - Private Shared _commonBrushes As Brush() - Private Shared _commonCornerRadius As CornerRadius - Private Shared ReadOnly _resourceAccess As New Object() - Private _brushes As Brush() - - Private Shared Sub ClearBrushes(o As DependencyObject, e As DependencyPropertyChangedEventArgs) - CType(o, SystemDropShadowChrome)._brushes = Nothing - End Sub - Private Shared Function CreateStops(c As Color, cornerRadius As Double) As GradientStopCollection - Dim gradientScale As Double = 1 / (cornerRadius + ShadowDepth) - Dim gsc As New GradientStopCollection From { - New GradientStop(c, (0.5 + cornerRadius) * gradientScale) - } - Dim stopColor As Color = c - stopColor.A = CByte(0.74336 * c.A) - gsc.Add(New GradientStop(stopColor, (1.5 + cornerRadius) * gradientScale)) - stopColor.A = CByte(0.38053 * c.A) - gsc.Add(New GradientStop(stopColor, (2.5 + cornerRadius) * gradientScale)) - stopColor.A = CByte(0.12389 * c.A) - gsc.Add(New GradientStop(stopColor, (3.5 + cornerRadius) * gradientScale)) - stopColor.A = CByte(0.02654 * c.A) - gsc.Add(New GradientStop(stopColor, (4.5 + cornerRadius) * gradientScale)) - stopColor.A = 0 - gsc.Add(New GradientStop(stopColor, (5 + cornerRadius) * gradientScale)) - gsc.Freeze() - Return gsc - End Function - Private Shared Function CreateBrushes(c As Color, cornerRadius As CornerRadius) As Brush() - Dim brushes As Brush() = New Brush(8) {} - brushes(Placement.Center) = New SolidColorBrush(c) - brushes(Placement.Center).Freeze() - Dim sideStops As GradientStopCollection = CreateStops(c, 0) - Dim top As New LinearGradientBrush(sideStops, New Point(0, 1), New Point(0, 0)) - top.Freeze() - brushes(Placement.Top) = top - Dim left As New LinearGradientBrush(sideStops, New Point(1, 0), New Point(0, 0)) - left.Freeze() - brushes(Placement.Left) = left - Dim right As New LinearGradientBrush(sideStops, New Point(0, 0), New Point(1, 0)) - right.Freeze() - brushes(Placement.Right) = right - Dim bottom As New LinearGradientBrush(sideStops, New Point(0, 0), New Point(0, 1)) - bottom.Freeze() - brushes(Placement.Bottom) = bottom - Dim topLeftStops As GradientStopCollection - - If cornerRadius.TopLeft = 0 Then - topLeftStops = sideStops - Else - topLeftStops = CreateStops(c, cornerRadius.TopLeft) - End If - - Dim topLeft As New RadialGradientBrush(topLeftStops) With { - .RadiusX = 1, - .RadiusY = 1, - .Center = New Point(1, 1), - .GradientOrigin = New Point(1, 1) - } - topLeft.Freeze() - brushes(Placement.TopLeft) = topLeft - Dim topRightStops As GradientStopCollection - - If cornerRadius.TopRight = 0 Then - topRightStops = sideStops - ElseIf cornerRadius.TopRight = cornerRadius.TopLeft Then - topRightStops = topLeftStops - Else - topRightStops = CreateStops(c, cornerRadius.TopRight) - End If - - Dim topRight As New RadialGradientBrush(topRightStops) With { - .RadiusX = 1, - .RadiusY = 1, - .Center = New Point(0, 1), - .GradientOrigin = New Point(0, 1) - } - topRight.Freeze() - brushes(Placement.TopRight) = topRight - Dim bottomLeftStops As GradientStopCollection - - If cornerRadius.BottomLeft = 0 Then - bottomLeftStops = sideStops - ElseIf cornerRadius.BottomLeft = cornerRadius.TopLeft Then - bottomLeftStops = topLeftStops - ElseIf cornerRadius.BottomLeft = cornerRadius.TopRight Then - bottomLeftStops = topRightStops - Else - bottomLeftStops = CreateStops(c, cornerRadius.BottomLeft) - End If - - Dim bottomLeft As New RadialGradientBrush(bottomLeftStops) With { - .RadiusX = 1, - .RadiusY = 1, - .Center = New Point(1, 0), - .GradientOrigin = New Point(1, 0) - } - bottomLeft.Freeze() - brushes(Placement.BottomLeft) = bottomLeft - Dim bottomRightStops As GradientStopCollection - - If cornerRadius.BottomRight = 0 Then - bottomRightStops = sideStops - ElseIf cornerRadius.BottomRight = cornerRadius.TopLeft Then - bottomRightStops = topLeftStops - ElseIf cornerRadius.BottomRight = cornerRadius.TopRight Then - bottomRightStops = topRightStops - ElseIf cornerRadius.BottomRight = cornerRadius.BottomLeft Then - bottomRightStops = bottomLeftStops - Else - bottomRightStops = CreateStops(c, cornerRadius.BottomRight) - End If - - Dim bottomRight As New RadialGradientBrush(bottomRightStops) With { - .RadiusX = 1, - .RadiusY = 1, - .Center = New Point(0, 0), - .GradientOrigin = New Point(0, 0) - } - bottomRight.Freeze() - brushes(Placement.BottomRight) = bottomRight - Return brushes - End Function - Private Function GetBrushes(c As Color, cornerRadius As CornerRadius) As Brush() - If _commonBrushes Is Nothing Then - - SyncLock _resourceAccess - - If _commonBrushes Is Nothing Then - _commonBrushes = CreateBrushes(c, cornerRadius) - _commonCornerRadius = cornerRadius - End If - End SyncLock - End If - - If c = CType(_commonBrushes(Placement.Center), SolidColorBrush).Color AndAlso cornerRadius = _commonCornerRadius Then - _brushes = Nothing - Return _commonBrushes - ElseIf _brushes Is Nothing Then - _brushes = CreateBrushes(c, cornerRadius) - End If - - Return _brushes - End Function - -End Class diff --git a/Plain Craft Launcher 2/Resources/Language/en_US.xaml b/Plain Craft Launcher 2/Resources/Language/en_US.xaml deleted file mode 100644 index f0714da..0000000 --- a/Plain Craft Launcher 2/Resources/Language/en_US.xaml +++ /dev/null @@ -1,10 +0,0 @@ - - - More - Download - Launch - Setting - - diff --git a/Plain Craft Launcher 2/Resources/Language/zh_CN.xaml b/Plain Craft Launcher 2/Resources/Language/zh_CN.xaml deleted file mode 100644 index a92d95b..0000000 --- a/Plain Craft Launcher 2/Resources/Language/zh_CN.xaml +++ /dev/null @@ -1,10 +0,0 @@ - - - 更多 - 下载 - 启动 - 设置 - -