--- /dev/null
+//------------------------------------------------------------------------------\r
+// <auto-generated>\r
+// このコードはツールによって生成されました。\r
+// ランタイム バージョン:4.0.30319.1\r
+//\r
+// このファイルへの変更は、以下の状況下で不正な動作の原因になったり、\r
+// コードが再生成されるときに損失したりします。\r
+// </auto-generated>\r
+//------------------------------------------------------------------------------\r
+\r
+using System;\r
+using System.Windows;\r
+using System.Windows.Media;\r
+using System.Windows.Media.Effects;\r
+using System.Windows.Media.Media3D;\r
+\r
+\r
+namespace Psychlops\r
+{\r
+\r
+\r
+ public static partial class Figures\r
+ {\r
+\r
+\r
+ public class ShaderGabor : ShaderField\r
+ {\r
+ protected Shader.GaborProgram ps = null;\r
+ public ShaderGabor()\r
+ {\r
+ initialize__ = initialize___;\r
+ setParameters = setParameters__;\r
+ }\r
+ internal void initialize()\r
+ {\r
+ if (!initialized)\r
+ {\r
+ Main.canvas.beginInvoke(initialize___);\r
+ initialized = true;\r
+ }\r
+ }\r
+ internal void initialize___()\r
+ {\r
+ if (!initialized)\r
+ {\r
+ if (ps == null)\r
+ {\r
+ ps = new Shader.GaborProgram();\r
+ initializeShader();\r
+ }\r
+ shader = ps;\r
+ initialized = true;\r
+ }\r
+ }\r
+\r
+ //public double contrast { get; set; }\r
+ //public double frequency { get; set; }\r
+ //public double phase { get; set; }\r
+ //public double orientation { get; set; }\r
+ public double contrast = 1.0, wavelength = 20.0, phase = 0.0, orientation = 0.0, alpha = 1.0;\r
+ public ShaderGabor setSigma(double s)\r
+ {\r
+ set(s*8, s*8);\r
+ return this;\r
+ }\r
+ \r
+ public void setParameters__()\r
+ {\r
+ ps.Contrast = contrast;\r
+ ps.WaveLength = wavelength;\r
+ ps.Phase = phase;\r
+ ps.Orientation = orientation;\r
+ ps.Sigma = 4.0;\r
+ ps.Size = width;\r
+ ps.Alpha = alpha;\r
+ ps.Update();\r
+ }\r
+\r
+\r
+ }\r
+ }\r
+\r
+\r
+ namespace Shader\r
+ {\r
+ internal static partial class Connector\r
+ {\r
+ internal delegate void PixelShaderConnector(ShaderEffect q, Uri s);\r
+ }\r
+\r
+\r
+ public abstract class ShaderProgram : ShaderEffect\r
+ {\r
+ }\r
+\r
+ public class GaborProgram : ShaderProgram\r
+ {\r
+ public static readonly Uri ps = new Uri(@"/PsychlopsSilverlight4;component/Shader/Gabor.ps", UriKind.Relative);\r
+\r
+ public static readonly DependencyProperty InputProperty = ShaderEffect.RegisterPixelShaderSamplerProperty("Input", typeof(GaborProgram), 0);\r
+ public static readonly DependencyProperty ContrastProperty = DependencyProperty.Register("Contrast", typeof(double), typeof(GaborProgram), new PropertyMetadata(((double)(1D)), PixelShaderConstantCallback(1)));\r
+ public static readonly DependencyProperty FrequencyProperty = DependencyProperty.Register("Frequency", typeof(double), typeof(GaborProgram), new PropertyMetadata(((double)(100D)), PixelShaderConstantCallback(2)));\r
+ public static readonly DependencyProperty PhaseProperty = DependencyProperty.Register("Phase", typeof(double), typeof(GaborProgram), new PropertyMetadata(((double)(0D)), PixelShaderConstantCallback(3)));\r
+ public static readonly DependencyProperty OrientationProperty = DependencyProperty.Register("Orientation", typeof(double), typeof(GaborProgram), new PropertyMetadata(((double)(0D)), PixelShaderConstantCallback(4)));\r
+ public static readonly DependencyProperty SigmaProperty = DependencyProperty.Register("Sigma", typeof(double), typeof(GaborProgram), new PropertyMetadata(((double)(4D)), PixelShaderConstantCallback(5)));\r
+ public static readonly DependencyProperty AlphaProperty = DependencyProperty.Register("Alpha", typeof(double), typeof(GaborProgram), new PropertyMetadata(((double)(1D)), PixelShaderConstantCallback(6)));\r
+ public GaborProgram()\r
+ {\r
+ PixelShader pixelShader = new PixelShader();\r
+ pixelShader.UriSource = ps;\r
+ this.PixelShader = pixelShader;\r
+\r
+ this.UpdateShaderValue(InputProperty);\r
+ this.UpdateShaderValue(ContrastProperty);\r
+ this.UpdateShaderValue(FrequencyProperty);\r
+ this.UpdateShaderValue(PhaseProperty);\r
+ this.UpdateShaderValue(OrientationProperty);\r
+ this.UpdateShaderValue(SigmaProperty);\r
+ this.UpdateShaderValue(AlphaProperty);\r
+\r
+ Size = 200;\r
+ Contrast = 1.0;\r
+ WaveLength = 100.0;\r
+ Orientation = 0.0;\r
+ Sigma = 4.0;\r
+ Alpha = 1.0;\r
+ }\r
+\r
+ public void Update()\r
+ {\r
+ this.UpdateShaderValue(InputProperty);\r
+ this.UpdateShaderValue(ContrastProperty);\r
+ this.UpdateShaderValue(FrequencyProperty);\r
+ this.UpdateShaderValue(PhaseProperty);\r
+ this.UpdateShaderValue(OrientationProperty);\r
+ this.UpdateShaderValue(SigmaProperty);\r
+ this.UpdateShaderValue(AlphaProperty);\r
+ }\r
+\r
+\r
+ private double size__, wavelength__;\r
+ public double Size { get { return size__; } set { size__ = value; setFrequency(); } }\r
+ private void setFrequency()\r
+ {\r
+ double freq = size__ * 2.0 * Math.PI / (wavelength__);\r
+ this.SetValue(FrequencyProperty, freq);\r
+ }\r
+\r
+ /// <summary>Amplitude of Grating</summary>\r
+ public double Contrast\r
+ {\r
+ get\r
+ {\r
+ return ((double)(this.GetValue(ContrastProperty))) * 2.0;\r
+ }\r
+ set\r
+ {\r
+ this.SetValue(ContrastProperty, value / 2.0);\r
+ }\r
+ }\r
+ /// <summary>Phase of Grating</summary>\r
+ public double WaveLength\r
+ {\r
+ get\r
+ {\r
+ return wavelength__;\r
+ }\r
+ set\r
+ {\r
+ wavelength__ = value;\r
+ setFrequency();\r
+ }\r
+ }\r
+ /// <summary>Phase of Grating</summary>\r
+ public double Phase\r
+ {\r
+ get\r
+ {\r
+ return ((double)(this.GetValue(PhaseProperty)));\r
+ }\r
+ set\r
+ {\r
+ this.SetValue(PhaseProperty, value);\r
+ }\r
+ }\r
+ /// <summary>Orientation of Grating</summary>\r
+ public double Orientation\r
+ {\r
+ get\r
+ {\r
+ return ((double)(this.GetValue(OrientationProperty)));\r
+ }\r
+ set\r
+ {\r
+ this.SetValue(OrientationProperty, value);\r
+ }\r
+ }\r
+ /// <summary>Half bandwidth of envelope</summary>\r
+ public double Sigma\r
+ {\r
+ get\r
+ {\r
+ return ((double)(this.GetValue(SigmaProperty)));\r
+ }\r
+ set\r
+ {\r
+ this.SetValue(SigmaProperty, value);\r
+ }\r
+ }\r
+ /// <summary>Transparency of Figure</summary>\r
+ public double Alpha\r
+ {\r
+ get\r
+ {\r
+ return ((double)(this.GetValue(AlphaProperty)));\r
+ }\r
+ set\r
+ {\r
+ this.SetValue(AlphaProperty, value);\r
+ }\r
+ }\r
+ }\r
+\r
+ \r
+ }\r
+}
\ No newline at end of file