From 8d59e7138ccbda23b2ba3b1fe50c8e771f144f18 Mon Sep 17 00:00:00 2001 From: Paddy Xu Date: Fri, 4 Aug 2017 22:02:32 +0300 Subject: [PATCH] WIP #56: adjust shadows; add Gaussian blur, try out the new InfoPanel --- .../ImagePanel.xaml | 3 +- .../BackgroundVisualHost.cs | 2 +- .../{ => BusyDecorator}/BusyDecorator.cs | 2 +- .../VisualTargetPresentationSource.cs | 2 +- .../GlassLayer/100-50-5-monochrome.png | Bin 0 -> 15500 bytes QuickLook/Controls/GlassLayer/GaussianBlur.fx | 48 +++ QuickLook/Controls/GlassLayer/GaussianBlur.ps | Bin 0 -> 9160 bytes .../Controls/GlassLayer/GaussianBlurEffect.cs | 59 +++ QuickLook/Controls/GlassLayer/GlassLayer.xaml | 36 ++ .../Controls/GlassLayer/GlassLayer.xaml.cs | 93 ++++ QuickLook/MainWindowTransparent.xaml | 406 +++++++++--------- QuickLook/MainWindowTransparent.xaml.cs | 10 +- QuickLook/Plugin/InfoPanel/InfoPanel.xaml | 25 +- QuickLook/QuickLook.csproj | 19 +- QuickLook/Styles/BusyDecorator.xaml | 5 +- QuickLook/Translations.config | 2 +- QuickLook/packages.config | 1 + 17 files changed, 491 insertions(+), 222 deletions(-) rename QuickLook/Controls/{ => BusyDecorator}/BackgroundVisualHost.cs (99%) rename QuickLook/Controls/{ => BusyDecorator}/BusyDecorator.cs (99%) rename QuickLook/Controls/{ => BusyDecorator}/VisualTargetPresentationSource.cs (98%) create mode 100644 QuickLook/Controls/GlassLayer/100-50-5-monochrome.png create mode 100644 QuickLook/Controls/GlassLayer/GaussianBlur.fx create mode 100644 QuickLook/Controls/GlassLayer/GaussianBlur.ps create mode 100644 QuickLook/Controls/GlassLayer/GaussianBlurEffect.cs create mode 100644 QuickLook/Controls/GlassLayer/GlassLayer.xaml create mode 100644 QuickLook/Controls/GlassLayer/GlassLayer.xaml.cs diff --git a/QuickLook.Plugin/QuickLook.Plugin.ImageViewer/ImagePanel.xaml b/QuickLook.Plugin/QuickLook.Plugin.ImageViewer/ImagePanel.xaml index 240b2fc..310d2a5 100644 --- a/QuickLook.Plugin/QuickLook.Plugin.ImageViewer/ImagePanel.xaml +++ b/QuickLook.Plugin/QuickLook.Plugin.ImageViewer/ImagePanel.xaml @@ -6,6 +6,7 @@ xmlns:local="clr-namespace:QuickLook.Plugin.ImageViewer" xmlns:animatedImage="clr-namespace:QuickLook.Plugin.ImageViewer.AnimatedImage" mc:Ignorable="d" + Background="White" x:Name="imagePanel" d:DesignHeight="300" d:DesignWidth="300"> @@ -13,7 +14,7 @@ VerticalScrollBarVisibility="Auto" Focusable="False" IsManipulationEnabled="True"> + AnimationUri="{Binding ImageUriSource, ElementName=imagePanel}" Margin="0,28,0,0" /> \ No newline at end of file diff --git a/QuickLook/Controls/BackgroundVisualHost.cs b/QuickLook/Controls/BusyDecorator/BackgroundVisualHost.cs similarity index 99% rename from QuickLook/Controls/BackgroundVisualHost.cs rename to QuickLook/Controls/BusyDecorator/BackgroundVisualHost.cs index f077acf..712921c 100644 --- a/QuickLook/Controls/BackgroundVisualHost.cs +++ b/QuickLook/Controls/BusyDecorator/BackgroundVisualHost.cs @@ -22,7 +22,7 @@ using System.Windows; using System.Windows.Media; using System.Windows.Threading; -namespace QuickLook.Controls +namespace QuickLook.Controls.BusyDecorator { public delegate Visual CreateContentFunction(); diff --git a/QuickLook/Controls/BusyDecorator.cs b/QuickLook/Controls/BusyDecorator/BusyDecorator.cs similarity index 99% rename from QuickLook/Controls/BusyDecorator.cs rename to QuickLook/Controls/BusyDecorator/BusyDecorator.cs index 675ec97..1398e4a 100644 --- a/QuickLook/Controls/BusyDecorator.cs +++ b/QuickLook/Controls/BusyDecorator/BusyDecorator.cs @@ -22,7 +22,7 @@ using System.Windows.Controls; using System.Windows.Data; using System.Windows.Media; -namespace QuickLook.Controls +namespace QuickLook.Controls.BusyDecorator { [StyleTypedProperty(Property = "BusyStyle", StyleTargetType = typeof(Control))] public class BusyDecorator : Decorator, IDisposable diff --git a/QuickLook/Controls/VisualTargetPresentationSource.cs b/QuickLook/Controls/BusyDecorator/VisualTargetPresentationSource.cs similarity index 98% rename from QuickLook/Controls/VisualTargetPresentationSource.cs rename to QuickLook/Controls/BusyDecorator/VisualTargetPresentationSource.cs index 82b67d2..04512e6 100644 --- a/QuickLook/Controls/VisualTargetPresentationSource.cs +++ b/QuickLook/Controls/BusyDecorator/VisualTargetPresentationSource.cs @@ -18,7 +18,7 @@ using System.Windows; using System.Windows.Media; -namespace QuickLook.Controls +namespace QuickLook.Controls.BusyDecorator { public class VisualTargetPresentationSource : PresentationSource { diff --git a/QuickLook/Controls/GlassLayer/100-50-5-monochrome.png b/QuickLook/Controls/GlassLayer/100-50-5-monochrome.png new file mode 100644 index 0000000000000000000000000000000000000000..69d69bc71419763f5c64cecd9a572905114b9e5a GIT binary patch literal 15500 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 Ml{6JgZdgA09|;Bg_W%F@ literal 0 HcmV?d00001 diff --git a/QuickLook/Controls/GlassLayer/GaussianBlur.fx b/QuickLook/Controls/GlassLayer/GaussianBlur.fx new file mode 100644 index 0000000..f519425 --- /dev/null +++ b/QuickLook/Controls/GlassLayer/GaussianBlur.fx @@ -0,0 +1,48 @@ +sampler2D Texture1Sampler : register(S0); + +float2 Direction : register(C0); + +float4 DdxDdy : register(C1); + +// http://dev.theomader.com/gaussian-kernel-calculator/ +static const float HalfWidth = 80; +static const float poisson[161] = +{ + 0.004411,0.004466,0.004521,0.004576,0.004631,0.004686,0.004741,0.004796,0.004851,0.004905, + 0.004959,0.005014,0.005067,0.005121,0.005175,0.005228,0.005281,0.005334,0.005386,0.005438, + 0.00549,0.005541,0.005592,0.005642,0.005692,0.005742,0.005791,0.005839,0.005888,0.005935, + 0.005982,0.006029,0.006074,0.00612,0.006164,0.006208,0.006252,0.006294,0.006336,0.006377, + 0.006418,0.006458,0.006497,0.006535,0.006572,0.006609,0.006644,0.006679,0.006713,0.006746, + 0.006779,0.00681,0.00684,0.00687,0.006898,0.006926,0.006952,0.006978,0.007003,0.007026, + 0.007049,0.00707,0.007091,0.00711,0.007128,0.007146,0.007162,0.007177,0.007191,0.007204, + 0.007216,0.007227,0.007236,0.007245,0.007252,0.007258,0.007263,0.007267,0.00727,0.007272, + 0.007272, + 0.007272,0.00727,0.007267,0.007263,0.007258,0.007252,0.007245,0.007236,0.007227,0.007216, + 0.007204,0.007191,0.007177,0.007162,0.007146,0.007128,0.00711,0.007091,0.00707,0.007049, + 0.007026,0.007003,0.006978,0.006952,0.006926,0.006898,0.00687,0.00684,0.00681,0.006779, + 0.006746,0.006713,0.006679,0.006644,0.006609,0.006572,0.006535,0.006497,0.006458,0.006418, + 0.006377,0.006336,0.006294,0.006252,0.006208,0.006164,0.00612,0.006074,0.006029,0.005982, + 0.005935,0.005888,0.005839,0.005791,0.005742,0.005692,0.005642,0.005592,0.005541,0.00549, + 0.005438,0.005386,0.005334,0.005281,0.005228,0.005175,0.005121,0.005067,0.005014,0.004959, + 0.004905,0.004851,0.004796,0.004741,0.004686,0.004631,0.004576,0.004521,0.004466,0.004411 +}; + +float4 main(float2 uv : TEXCOORD) : COLOR +{ + float4 color = { 0, 0, 0, 1 }; + +for (int delta = -HalfWidth; delta <= HalfWidth; delta++) +{ + float2 coord; + coord.x = uv.x + delta * DdxDdy.x * Direction.x; + coord.y = uv.y + delta * DdxDdy.w * Direction.y; + coord = saturate(coord); + + // Sample pixel + color += tex2D(Texture1Sampler, coord) * poisson[delta + HalfWidth]; +} + +return(color); +} + + diff --git a/QuickLook/Controls/GlassLayer/GaussianBlur.ps b/QuickLook/Controls/GlassLayer/GaussianBlur.ps new file mode 100644 index 0000000000000000000000000000000000000000..49c502260beac85466ef0772fa7c343d401dfb95 GIT binary patch literal 9160 zcmbuE4NR5S8OP7%Uf=>3LHQ5_X2#4&iA`<#WxB?>89U~vvsIbdVqc6c#L@mPb&~nXn0JFX~Apv z=s-jvJotZ;19)shxW108htX+S@wOD}ZC}U*ys8%o9~ll$#%~UER6vnRQQg1&bdp2`*_`+7w*6 zW>srjXYjstPj#$C&tPp?Wo=pQyvnkwii!&JQ)8l|Oj5XTYp;!%LO;6yU%Ra1UT|Z= z1IF|XY1NPab*T8$gw+Q!xr^dZulRrNQz8U;E;c?Mk|ir{4qb2JaFc z51#PL!?vN~eee$OcHs%&>%Tc-A9(R7_!{t5;Q{c>g}=AI9y|u#0=`msBKVExkK5Hn ze*j+rzD)Qe@TUh(*tF#*!JEOGgeQRqulL*48wbFbfHw+H20!RKWv^`i5WE4rUif72 zHU5w6lC7t~Yrw08PXS+b>tnmI{S)wV@KWI^;Hi0o_C(I#z|VYO%;^u@c}@lI^Ix=~ ze_sUe2R|k}4g8hQ{%(&R90ETK{-*GB@b(Sg*p+pcz{B8sgii%;x^>B}KlBgqUhp2_ z8Q^8L!}i95!{DI?^l5P8W`h6x_BHDZI&S*$w+WvHKKH;iyZNhY?){GUyZ2{--^{vZ zfAKTN`@zG)v%xF7uG;Q1SDgpr4hqi!fA+u?+mqyY5IkA(nGQbxci-9gIak0Nz{`c_ zf{(oTt-W3R9e4|Pv+yAJtB+r{o?Dl}L*O04XMnfleQnzd{|Y_`eolBE`0<6O?a@Em=gKr{-UFMJ8wO^9a1GT{q^uRwbx zq6N_^yhivMwA&FKh%Vu^!n@Jlga{#?6J95LGum4aJ&3Kst?+GVZ%6bZb_lN*z7y@; zh`oru#ksh3L_>Axo8iEyrww} z?gsJVdXD2mA>$tkyS7K#!_szr-0>(J#~|S-vuo57>EktTgAIiu?~Ax+O>pC$AbrQ& z5!blejpapuuNgt^5szb$@y1!yXx_8T4|npuS2uFI%k4AE@31kqPvOQnzT+9oJDRwo z748_~jv?+Cg*%qGV~IOf;r0`^pSb-BcL{Nq5O;~f9Y@@8#2u$_#}juvamOp%3B;X1 z+zASIfVcz19Z-PdnR$uRJaR>yMVY06z+WD&L{4C zg*%V9^N2f7;hsU3&Kw!6+rHgRVw+*!n( zMci2m_cY?3M%>dB?o8s&B<@UwJ7a>|Yf?g}GeaJ8bw8e^mUK0ltLI$3=W4>S`YvO1 zd{>{2_PeL|JBJw`2ese$IBx9!HO_dy;ZUY|`@izz{qFuAv2&K8IA`qhV4wADMcvH4 zN9;Q~Tah>W{m<7d&r#&fuJ7#LQKrZ{IN^6Y zwobwBd1Z>c+5ME=tLG~6X7d0x$C#_go6TR?+^AfUH=B2{IbFFTZ#G|KbI}S#-fW)B z=Fk<2yxIJm&HXDCd9%8L)hv~YybH*0ht*nDio97J$7;kXMc%CbWVLOzB5zhVvzokG zkvFUN*;>LpMc!IoSJ>Lkd_~@DU5KqY%~#~j*0b1J*#br0Y#olR@hwo~ z&DIau+GLF)Z?^8q)>La0d9(FewiaBg$eXP*vo-8mMc!~Sw6aGK@ZBY~U_r~_y>POGX r#99p-mUn73gIaQ|R&)E3_c}h?OLY5`WBZHPCl#;T&va~L#F+m8*tIU# literal 0 HcmV?d00001 diff --git a/QuickLook/Controls/GlassLayer/GaussianBlurEffect.cs b/QuickLook/Controls/GlassLayer/GaussianBlurEffect.cs new file mode 100644 index 0000000..c8e8aeb --- /dev/null +++ b/QuickLook/Controls/GlassLayer/GaussianBlurEffect.cs @@ -0,0 +1,59 @@ +// Copyright © 2017 Paddy Xu +// +// This file is part of QuickLook program. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +using System; +using System.Windows; +using System.Windows.Media; +using System.Windows.Media.Effects; + +namespace QuickLook.Controls.GlassLayer +{ + public class GaussianBlurEffect : ShaderEffect + { + public static readonly DependencyProperty InputProperty = + RegisterPixelShaderSamplerProperty("Input", typeof(GaussianBlurEffect), 0); + public static readonly DependencyProperty DirectionProperty = + DependencyProperty.Register("Direction", typeof(Point), typeof(GaussianBlurEffect), + new UIPropertyMetadata(new Point(0, 1), PixelShaderConstantCallback(0))); + + public GaussianBlurEffect() + { + var pixelShader = new PixelShader + { + UriSource = new Uri("pack://application:,,,/QuickLook;component/Controls/GlassLayer/GaussianBlur.ps", + UriKind.Absolute) + }; + PixelShader = pixelShader; + + DdxUvDdyUvRegisterIndex = 1; + UpdateShaderValue(InputProperty); + UpdateShaderValue(DirectionProperty); + } + + public Brush Input + { + get => (Brush) GetValue(InputProperty); + set => SetValue(InputProperty, value); + } + + public Point Direction + { + get => (Point) GetValue(DirectionProperty); + set => SetValue(DirectionProperty, value); + } + } +} \ No newline at end of file diff --git a/QuickLook/Controls/GlassLayer/GlassLayer.xaml b/QuickLook/Controls/GlassLayer/GlassLayer.xaml new file mode 100644 index 0000000..b87d5ca --- /dev/null +++ b/QuickLook/Controls/GlassLayer/GlassLayer.xaml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/QuickLook/Controls/GlassLayer/GlassLayer.xaml.cs b/QuickLook/Controls/GlassLayer/GlassLayer.xaml.cs new file mode 100644 index 0000000..4e28cbe --- /dev/null +++ b/QuickLook/Controls/GlassLayer/GlassLayer.xaml.cs @@ -0,0 +1,93 @@ +// Copyright © 2017 Paddy Xu +// +// This file is part of QuickLook program. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +using System.Windows; +using System.Windows.Controls; +using System.Windows.Media; + +namespace QuickLook.Controls.GlassLayer +{ + /// + /// Interaction logic for GlassLayer.xaml + /// + public partial class GlassLayer : UserControl + { + public GlassLayer() + { + InitializeComponent(); + } + + #region public Visual BlurredElement + + /// + /// Identifies the BlurredElement dependency property. + /// + public static DependencyProperty BlurredElementProperty = + DependencyProperty.Register("BlurredElement", typeof(Visual), typeof(GlassLayer), null); + + /// + /// + public Visual BlurredElement + { + get => (Visual) GetValue(BlurredElementProperty); + + set => SetValue(BlurredElementProperty, value); + } + + #endregion public Visual BlurredElement + + #region public double GlassOpacity + + /// + /// Identifies the GlassOpacity dependency property. + /// + public static DependencyProperty GlassOpacityProperty = + DependencyProperty.Register("GlassOpacity", typeof(double), typeof(GlassLayer), + new UIPropertyMetadata(0.6)); + + /// + /// + public double GlassOpacity + { + get => (double) GetValue(GlassOpacityProperty); + + set => SetValue(GlassOpacityProperty, value); + } + + #endregion public double GlassOpacity + + #region public Visibility NoiseVisibility + + /// + /// Identifies the NoiseVisibility dependency property. + /// + public static DependencyProperty NoiseVisibilityProperty = + DependencyProperty.Register("NoiseVisibility", typeof(Visibility), typeof(GlassLayer), + new UIPropertyMetadata(Visibility.Visible)); + + /// + /// + public Visibility NoiseVisibility + { + get => (Visibility) GetValue(NoiseVisibilityProperty); + + set => SetValue(NoiseVisibilityProperty, value); + } + + #endregion public Visibility NoiseVisibility + } +} \ No newline at end of file diff --git a/QuickLook/MainWindowTransparent.xaml b/QuickLook/MainWindowTransparent.xaml index 557c1ec..d06ff8b 100644 --- a/QuickLook/MainWindowTransparent.xaml +++ b/QuickLook/MainWindowTransparent.xaml @@ -3,17 +3,20 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:fa="http://schemas.fontawesome.io/icons/" xmlns:local="clr-namespace:QuickLook" - xmlns:control="clr-namespace:QuickLook.Controls" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:converters="clr-namespace:QuickLook.Converters" + xmlns:controls="clr-namespace:QuickLook.Controls" + xmlns:busyDecorator="clr-namespace:QuickLook.Controls.BusyDecorator" + xmlns:glassLayer="clr-namespace:QuickLook.Controls.GlassLayer" mc:Ignorable="d" x:Class="QuickLook.MainWindowTransparent" x:Name="mainWindow" UseLayoutRounding="True" d:DesignWidth="624" d:DesignHeight="700" MinWidth="275" MinHeight="150" WindowStartupLocation="CenterScreen" Focusable="False" WindowStyle="None" - Background="#E5FAFAFA" AllowsTransparency="True" + AllowsTransparency="True" + Background="Transparent" ShowActivated="False" ShowInTaskbar="False"> @@ -21,213 +24,218 @@ - - - - - - - - - - - - - - + + + + + + + + - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + diff --git a/QuickLook/MainWindowTransparent.xaml.cs b/QuickLook/MainWindowTransparent.xaml.cs index 37779d1..6b3cef1 100644 --- a/QuickLook/MainWindowTransparent.xaml.cs +++ b/QuickLook/MainWindowTransparent.xaml.cs @@ -50,8 +50,8 @@ namespace QuickLook SourceInitialized += (sender, e) => { - if (AllowsTransparency) - BlurWindow.EnableWindowBlur(this); + //if (AllowsTransparency) + // BlurWindow.EnableWindowBlur(this); }; buttonPin.MouseLeftButtonUp += (sender, e) => @@ -234,10 +234,8 @@ namespace QuickLook // revert UI changes ContextObject.IsBusy = true; - var newHeight = ContextObject.PreferredSize.Height + titlebar.Height + windowBorder.BorderThickness.Top + - windowBorder.BorderThickness.Bottom; - var newWidth = ContextObject.PreferredSize.Width + windowBorder.BorderThickness.Left + - windowBorder.BorderThickness.Right; + var newHeight = ContextObject.PreferredSize.Height + titlebar.Height; + var newWidth = ContextObject.PreferredSize.Width; ResizeAndCenter(new Size(newWidth, newHeight)); diff --git a/QuickLook/Plugin/InfoPanel/InfoPanel.xaml b/QuickLook/Plugin/InfoPanel/InfoPanel.xaml index 8a21ac4..37fe420 100644 --- a/QuickLook/Plugin/InfoPanel/InfoPanel.xaml +++ b/QuickLook/Plugin/InfoPanel/InfoPanel.xaml @@ -5,13 +5,18 @@ xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:local="clr-namespace:QuickLook.Plugin.InfoPanel" FontSize="14" - mc:Ignorable="d" Width="453" Height="172" UseLayoutRounding="True"> + Background="#FFF8F8FB" + mc:Ignorable="d" Width="453" Height="172" UseLayoutRounding="True" TextOptions.TextHintingMode="Animated"> + + + + - + - + @@ -43,13 +48,19 @@ - + LineHeight="25" MaxHeight="60" TextTrimming="CharacterEllipsis" FontWeight="Normal"> FilenameFilenameFilenameFilenameFilenameFilenameFilenameFilenameFilenameFilename.ext - Last modified at 01/01/2017 00:00:00 - Calculating size... + + Last modified at 01/01/2017 00:00:00 + + + Calculating size... + \ No newline at end of file diff --git a/QuickLook/QuickLook.csproj b/QuickLook/QuickLook.csproj index bb62c09..073ea42 100644 --- a/QuickLook/QuickLook.csproj +++ b/QuickLook/QuickLook.csproj @@ -111,15 +111,19 @@ Properties\GitVersion.cs + + + GlassLayer.xaml + - - - + + + @@ -163,6 +167,10 @@ Component + + MSBuild:Compile + Designer + MSBuild:Compile Designer @@ -218,6 +226,7 @@ Always + @@ -269,6 +278,10 @@ Designer + + + + powershell -file "$(SolutionDir)Scripts\update-version.ps1" diff --git a/QuickLook/Styles/BusyDecorator.xaml b/QuickLook/Styles/BusyDecorator.xaml index 9911782..ec08b35 100644 --- a/QuickLook/Styles/BusyDecorator.xaml +++ b/QuickLook/Styles/BusyDecorator.xaml @@ -3,9 +3,10 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:fa="http://schemas.fontawesome.io/icons/" xmlns:local="clr-namespace:QuickLook" - xmlns:controls="clr-namespace:QuickLook.Controls"> + xmlns:controls="clr-namespace:QuickLook.Controls" + xmlns:busyDecorator="clr-namespace:QuickLook.Controls.BusyDecorator"> -