diff --git a/src/Core_30/HandyControl_Core_30/HandyControl_Core_30.csproj b/src/Core_30/HandyControl_Core_30/HandyControl_Core_30.csproj index 07314a19..ce527ed8 100644 --- a/src/Core_30/HandyControl_Core_30/HandyControl_Core_30.csproj +++ b/src/Core_30/HandyControl_Core_30/HandyControl_Core_30.csproj @@ -56,5 +56,8 @@ Resources\dropper.cur + + Resources\Effects\ColorComplementEffect.ps + \ No newline at end of file diff --git a/src/Net_40/HandyControl_Net_40/HandyControl_Net_40.csproj b/src/Net_40/HandyControl_Net_40/HandyControl_Net_40.csproj index 28017834..3017e107 100644 --- a/src/Net_40/HandyControl_Net_40/HandyControl_Net_40.csproj +++ b/src/Net_40/HandyControl_Net_40/HandyControl_Net_40.csproj @@ -108,6 +108,9 @@ Resources\dropper.cur + + Resources\Effects\ColorComplementEffect.ps + diff --git a/src/Net_GE45/HandyControl_Net_GE45/HandyControl_Net_GE45.csproj b/src/Net_GE45/HandyControl_Net_GE45/HandyControl_Net_GE45.csproj index 49bc677b..5c685b76 100644 --- a/src/Net_GE45/HandyControl_Net_GE45/HandyControl_Net_GE45.csproj +++ b/src/Net_GE45/HandyControl_Net_GE45/HandyControl_Net_GE45.csproj @@ -179,6 +179,9 @@ Resources\dropper.cur + + Resources\Effects\ColorComplementEffect.ps + diff --git a/src/Shared/HandyControl_Shared/HandyControl_Shared.projitems b/src/Shared/HandyControl_Shared/HandyControl_Shared.projitems index b01bf9b2..f5f1e48d 100644 --- a/src/Shared/HandyControl_Shared/HandyControl_Shared.projitems +++ b/src/Shared/HandyControl_Shared/HandyControl_Shared.projitems @@ -58,6 +58,7 @@ + diff --git a/src/Shared/HandyControl_Shared/Media/Effects/ColorComplementEffect.cs b/src/Shared/HandyControl_Shared/Media/Effects/ColorComplementEffect.cs new file mode 100644 index 00000000..bae72b0d --- /dev/null +++ b/src/Shared/HandyControl_Shared/Media/Effects/ColorComplementEffect.cs @@ -0,0 +1,34 @@ +using System; +using System.Windows; +using System.Windows.Media; +using System.Windows.Media.Effects; + +namespace HandyControl.Media.Effects +{ + public class ColorComplementEffect : ShaderEffect + { + public static readonly DependencyProperty InputProperty = RegisterPixelShaderSamplerProperty("Input", typeof(ColorComplementEffect), 0); + + private static readonly PixelShader Shader; + + static ColorComplementEffect() + { + Shader = new PixelShader + { + UriSource = new Uri("pack://application:,,,/HandyControl;component/Resources/Effects/ColorComplementEffect.ps") + }; + } + + public ColorComplementEffect() + { + PixelShader = Shader; + UpdateShaderValue(InputProperty); + } + + public Brush Input + { + get => (Brush)GetValue(InputProperty); + set => SetValue(InputProperty, value); + } + } +} diff --git a/src/Shared/HandyControl_Shared/Properties/AssemblyInfo.cs b/src/Shared/HandyControl_Shared/Properties/AssemblyInfo.cs index 65c79a43..8b80dbb4 100644 --- a/src/Shared/HandyControl_Shared/Properties/AssemblyInfo.cs +++ b/src/Shared/HandyControl_Shared/Properties/AssemblyInfo.cs @@ -22,6 +22,7 @@ using System.Runtime.InteropServices; [assembly: XmlnsDefinition("https://handyorg.github.io/handycontrol", "HandyControl.Expression.Shapes")] [assembly: XmlnsDefinition("https://handyorg.github.io/handycontrol", "HandyControl.Expression.Media")] [assembly: XmlnsDefinition("https://handyorg.github.io/handycontrol", "HandyControl.Media.Animation")] +[assembly: XmlnsDefinition("https://handyorg.github.io/handycontrol", "HandyControl.Media.Effects")] [assembly: XmlnsDefinition("https://handyorg.github.io/handycontrol", "HandyControl.Data")] [assembly: XmlnsDefinition("https://handyorg.github.io/handycontrol", "HandyControl.Properties.Langs")] [assembly: XmlnsPrefix("https://handyorg.github.io/handycontrol", "hc")] \ No newline at end of file diff --git a/src/Shared/HandyControl_Shared/Resources/Effects/ColorComplementEffect.ps b/src/Shared/HandyControl_Shared/Resources/Effects/ColorComplementEffect.ps new file mode 100644 index 00000000..bfeb1a74 Binary files /dev/null and b/src/Shared/HandyControl_Shared/Resources/Effects/ColorComplementEffect.ps differ