openclfilter hinzugefügt
This commit is contained in:
commit
91de52b222
BIN
AForge.Video.DirectShow.dll
Normal file
BIN
AForge.Video.DirectShow.dll
Normal file
Binary file not shown.
BIN
AForge.Video.dll
Normal file
BIN
AForge.Video.dll
Normal file
Binary file not shown.
BIN
AForge.dll
Normal file
BIN
AForge.dll
Normal file
Binary file not shown.
BIN
OpenCL.NET.dll
Normal file
BIN
OpenCL.NET.dll
Normal file
Binary file not shown.
143
OpenCL.NET.xml
Normal file
143
OpenCL.NET.xml
Normal file
@ -0,0 +1,143 @@
|
||||
<?xml version="1.0"?>
|
||||
<doc>
|
||||
<assembly>
|
||||
<name>OpenCL.NET</name>
|
||||
</assembly>
|
||||
<members>
|
||||
<member name="T:GASS.OpenCL.OpenGL.OpenCLGLDriver">
|
||||
<summary>
|
||||
This class provides the driver interface for OpenGL interoperability
|
||||
with OpenCL standard.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:GASS.OpenCL.OpenCLDriver">
|
||||
<summary>
|
||||
This class provides the driver interface to OpenCL functions.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:GASS.Types.SizeT">
|
||||
<summary>
|
||||
Used to represent a platform dependent sized variable.
|
||||
On 32 bit platforms it is 4 bytes wide (int, uint), on 64 bit it is
|
||||
8 bytes wide (long, ulong).
|
||||
|
||||
This class maps to the C/C++ native size_t data type.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:GASS.Types.SizeT.#ctor(System.Int32)">
|
||||
<summary>
|
||||
Creates a new instance based on the given value.
|
||||
</summary>
|
||||
<param name="value">Integer value to represent.</param>
|
||||
</member>
|
||||
<member name="M:GASS.Types.SizeT.#ctor(System.UInt32)">
|
||||
<summary>
|
||||
Creates a new instance based on the given value.
|
||||
</summary>
|
||||
<param name="value">Integer value to represent.</param>
|
||||
</member>
|
||||
<member name="M:GASS.Types.SizeT.#ctor(System.Int64)">
|
||||
<summary>
|
||||
Creates a new instance based on the given value.
|
||||
</summary>
|
||||
<param name="value">Integer value to represent.</param>
|
||||
</member>
|
||||
<member name="M:GASS.Types.SizeT.#ctor(System.UInt64)">
|
||||
<summary>
|
||||
Creates a new instance based on the given value.
|
||||
</summary>
|
||||
<param name="value">Integer value to represent.</param>
|
||||
</member>
|
||||
<member name="M:GASS.Types.SizeT.op_Implicit(GASS.Types.SizeT)~System.Int32">
|
||||
<summary>
|
||||
Converts the object to int.
|
||||
</summary>
|
||||
<param name="t">Object to convert.</param>
|
||||
<returns>Integer value represented by the object.</returns>
|
||||
</member>
|
||||
<member name="M:GASS.Types.SizeT.op_Implicit(GASS.Types.SizeT)~System.UInt32">
|
||||
<summary>
|
||||
Converts the object to uint.
|
||||
</summary>
|
||||
<param name="t">Object to convert.</param>
|
||||
<returns>Integer value represented by the object.</returns>
|
||||
</member>
|
||||
<member name="M:GASS.Types.SizeT.op_Implicit(GASS.Types.SizeT)~System.Int64">
|
||||
<summary>
|
||||
Converts the object to long.
|
||||
</summary>
|
||||
<param name="t">Object to convert.</param>
|
||||
<returns>Integer value represented by the object.</returns>
|
||||
</member>
|
||||
<member name="M:GASS.Types.SizeT.op_Implicit(GASS.Types.SizeT)~System.UInt64">
|
||||
<summary>
|
||||
Converts the object to ulong.
|
||||
</summary>
|
||||
<param name="t">Object to convert.</param>
|
||||
<returns>Integer value represented by the object.</returns>
|
||||
</member>
|
||||
<member name="M:GASS.Types.SizeT.op_Implicit(System.Int32)~GASS.Types.SizeT">
|
||||
<summary>
|
||||
Converts the given integer to an object.
|
||||
</summary>
|
||||
<param name="value">Integer value to convert.</param>
|
||||
<returns>New object representing this value.</returns>
|
||||
</member>
|
||||
<member name="M:GASS.Types.SizeT.op_Implicit(System.UInt32)~GASS.Types.SizeT">
|
||||
<summary>
|
||||
Converts the given integer to an object.
|
||||
</summary>
|
||||
<param name="value">Integer value to convert.</param>
|
||||
<returns>New object representing this value.</returns>
|
||||
</member>
|
||||
<member name="M:GASS.Types.SizeT.op_Implicit(System.Int64)~GASS.Types.SizeT">
|
||||
<summary>
|
||||
Converts the given integer to an object.
|
||||
</summary>
|
||||
<param name="value">Integer value to convert.</param>
|
||||
<returns>New object representing this value.</returns>
|
||||
</member>
|
||||
<member name="M:GASS.Types.SizeT.op_Implicit(System.UInt64)~GASS.Types.SizeT">
|
||||
<summary>
|
||||
Converts the given integer to an object.
|
||||
</summary>
|
||||
<param name="value">Integer value to convert.</param>
|
||||
<returns>New object representing this value.</returns>
|
||||
</member>
|
||||
<member name="M:GASS.Types.SizeT.op_Inequality(GASS.Types.SizeT,GASS.Types.SizeT)">
|
||||
<summary>
|
||||
Compares two SizeT objects.
|
||||
</summary>
|
||||
<param name="val1">First value to compare.</param>
|
||||
<param name="val2">Second value to compare.</param>
|
||||
<returns>true or false for the comparison result.</returns>
|
||||
</member>
|
||||
<member name="M:GASS.Types.SizeT.op_Equality(GASS.Types.SizeT,GASS.Types.SizeT)">
|
||||
<summary>
|
||||
Compares two SizeT objects.
|
||||
</summary>
|
||||
<param name="val1">First value to compare.</param>
|
||||
<param name="val2">Second value to compare.</param>
|
||||
<returns>true or false for the comparison result.</returns>
|
||||
</member>
|
||||
<member name="M:GASS.Types.SizeT.Equals(System.Object)">
|
||||
<summary>
|
||||
Returns a value indicating whether this instance is equal to a specified object.
|
||||
</summary>
|
||||
<param name="obj">An object to compare with this instance or null.</param>
|
||||
<returns>true if obj is an instance of System.IntPtr and equals the value of this instance; otherwise, false.</returns>
|
||||
</member>
|
||||
<member name="M:GASS.Types.SizeT.ToString">
|
||||
<summary>
|
||||
Converts the numeric value of the current object to its equivalent string representation.
|
||||
</summary>
|
||||
<returns>The string representation of the value of this instance.</returns>
|
||||
</member>
|
||||
<member name="M:GASS.Types.SizeT.GetHashCode">
|
||||
<summary>
|
||||
Returns the hash code for this instance.
|
||||
</summary>
|
||||
<returns>A 32-bit signed integer hash code.</returns>
|
||||
</member>
|
||||
</members>
|
||||
</doc>
|
20
OpenCLFilter.sln
Normal file
20
OpenCLFilter.sln
Normal file
@ -0,0 +1,20 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 11.00
|
||||
# Visual Studio 2010
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenCLFilter", "OpenCLFilter\OpenCLFilter.csproj", "{E40C284E-CF7A-4208-B586-C56E3D6DA194}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{E40C284E-CF7A-4208-B586-C56E3D6DA194}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{E40C284E-CF7A-4208-B586-C56E3D6DA194}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{E40C284E-CF7A-4208-B586-C56E3D6DA194}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{E40C284E-CF7A-4208-B586-C56E3D6DA194}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
309
OpenCLFilter/CLFilter.cs
Normal file
309
OpenCLFilter/CLFilter.cs
Normal file
@ -0,0 +1,309 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using OpenCLTemplate;
|
||||
using System.Text;
|
||||
|
||||
//By Douglas Andrade douglas@cmsoft.com.br
|
||||
//http://www.cmsoft.com.br
|
||||
//Filter examples: visit http://www.gamedev.net/reference/programming/features/imageproc/page2.asp
|
||||
|
||||
namespace OpenCLFilter
|
||||
{
|
||||
/// <summary>Applies filter to a given image</summary>
|
||||
public static class CLFilter
|
||||
{
|
||||
/// <summary>Static class already initialized?</summary>
|
||||
private static bool Initialized = false;
|
||||
|
||||
/// <summary>Apply filter kernel</summary>
|
||||
private static CLCalc.Program.Kernel kernelApplyFilter;
|
||||
/// <summary>Apply filter kernel</summary>
|
||||
private static CLCalc.Program.Kernel kernelApplyFilterWorkDim2;
|
||||
|
||||
/// <summary>Filter values</summary>
|
||||
private static CLCalc.Program.Variable varFilter;
|
||||
|
||||
/// <summary>Initializes class</summary>
|
||||
private static void Init(int FilterSize)
|
||||
{
|
||||
if (CLCalc.CLAcceleration == CLCalc.CLAccelerationType.Unknown) CLCalc.InitCL();
|
||||
|
||||
//Compiles source code
|
||||
CLCalc.Program.Compile((new CLFilterSrc()).src);
|
||||
|
||||
//Creates kernel
|
||||
kernelApplyFilter = new CLCalc.Program.Kernel("ApplyFilter");
|
||||
kernelApplyFilterWorkDim2 = new CLCalc.Program.Kernel("ImgFilter");
|
||||
|
||||
//Creates filter
|
||||
varFilter = new CLCalc.Program.Variable(new float[3 * FilterSize * FilterSize]);
|
||||
//Width
|
||||
varWidth = new CLCalc.Program.Variable(new int[1]);
|
||||
|
||||
Initialized = true;
|
||||
}
|
||||
|
||||
private static float[] FilteredVals;
|
||||
private static CLCalc.Program.Variable varFiltered;
|
||||
private static CLCalc.Program.Variable varWidth;
|
||||
|
||||
/// <summary>Applies given filter to the image</summary>
|
||||
/// <param name="imgDt">Image to be filtered</param>
|
||||
/// <param name="Filter">Filter. [3*size*size]</param>
|
||||
public static void ApplyFilter(ImageData imgDt, float[] Filter, bool useOpenCL, bool useWorkDim2)
|
||||
{
|
||||
int FilterSize = (int)Math.Sqrt(Filter.Length/3);
|
||||
|
||||
if (Filter.Length != 3 * FilterSize * FilterSize)
|
||||
throw new Exception("Invalid filter");
|
||||
|
||||
if (!Initialized && useOpenCL) Init(FilterSize);
|
||||
|
||||
//Writes filter to device
|
||||
if(useOpenCL) varFilter.WriteToDevice(Filter);
|
||||
|
||||
if (FilteredVals == null || FilteredVals.Length != imgDt.Height * imgDt.Width * 3)
|
||||
{
|
||||
//Filtered values
|
||||
FilteredVals = new float[imgDt.Height * imgDt.Width * 3];
|
||||
varFiltered = new CLCalc.Program.Variable(FilteredVals);
|
||||
}
|
||||
|
||||
//Width
|
||||
if (useOpenCL) varWidth.WriteToDevice(new int[] { imgDt.Width });
|
||||
|
||||
|
||||
//Executes filtering
|
||||
int mean = (FilterSize - 1) / 2;
|
||||
if (useOpenCL)
|
||||
{
|
||||
CLCalc.Program.Variable[] args = new CLCalc.Program.Variable[] { imgDt.varData, varFilter, varFiltered, varWidth };
|
||||
if (useWorkDim2)
|
||||
{
|
||||
kernelApplyFilterWorkDim2.Execute(args, new int[] { imgDt.Width - FilterSize, imgDt.Height - FilterSize });
|
||||
}
|
||||
else
|
||||
{
|
||||
kernelApplyFilter.Execute(args, new int[] { imgDt.Height - FilterSize });
|
||||
}
|
||||
//Reads data back
|
||||
varFiltered.ReadFromDeviceTo(FilteredVals);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
ApplyFilter(imgDt.Data, Filter, FilteredVals, new int[] { imgDt.Width }, imgDt.Height - FilterSize);
|
||||
}
|
||||
|
||||
//Writes to image data
|
||||
for (int y = mean; y < imgDt.Height - mean - 1; y++)
|
||||
{
|
||||
int wy = imgDt.Width * y;
|
||||
for (int x = mean; x < imgDt.Width - mean - 1; x++)
|
||||
{
|
||||
int ind = 3 * (x + wy);
|
||||
imgDt.Data[ind] = (byte)FilteredVals[ind];
|
||||
imgDt.Data[ind + 1] = (byte)FilteredVals[ind + 1];
|
||||
imgDt.Data[ind + 2] = (byte)FilteredVals[ind + 2];
|
||||
}
|
||||
}
|
||||
|
||||
//Writes filtered values
|
||||
//In the future this rewriting can be avoided
|
||||
//because byte_addressable will be widely available
|
||||
if (useOpenCL) imgDt.varData.WriteToDevice(imgDt.Data);
|
||||
}
|
||||
|
||||
private const int FILTERSIZE = 7;
|
||||
private const int CENTER = 3;
|
||||
|
||||
private static void ApplyFilter(byte[] ImgData,
|
||||
float[] Filter,
|
||||
float[] FilteredImage,
|
||||
int[] ImgWidth, int n)
|
||||
{
|
||||
for (int y = 0; y < n; y++)
|
||||
{
|
||||
int w = ImgWidth[0];
|
||||
|
||||
//Image values
|
||||
float[, ,] ImgValues = new float[3, FILTERSIZE, FILTERSIZE];
|
||||
|
||||
//Copies filter to local memory
|
||||
float[, ,] localfilter = new float[3, FILTERSIZE, FILTERSIZE];
|
||||
|
||||
//Initialization of ImgValues
|
||||
for (int i = 0; i < FILTERSIZE; i++)
|
||||
{
|
||||
for (int j = 0; j < FILTERSIZE; j++)
|
||||
{
|
||||
ImgValues[0, i, j] = ImgData[3 * ((y + i) * w + j)];
|
||||
ImgValues[1, i, j] = ImgData[3 * ((y + i) * w + j) + 1];
|
||||
ImgValues[2, i, j] = ImgData[3 * ((y + i) * w + j) + 2];
|
||||
|
||||
localfilter[0, i, j] = Filter[3 * (i * FILTERSIZE + j)];
|
||||
localfilter[1, i, j] = Filter[3 * (i * FILTERSIZE + j) + 1];
|
||||
localfilter[2, i, j] = Filter[3 * (i * FILTERSIZE + j) + 2];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int xMax = w - CENTER - 1;
|
||||
int ind = 0;
|
||||
for (int x = 0; x < xMax; x++)
|
||||
{
|
||||
//Calculates filtered value
|
||||
float[] filteredValue = new float[3];
|
||||
for (int i = 0; i < FILTERSIZE; i++)
|
||||
{
|
||||
for (int j = 0; j < FILTERSIZE - 1; j++)
|
||||
{
|
||||
// float4 pixVals = (float4)(ImgValues[0][i][j],ImgValues[1][i][j],ImgValues[2][i][j],0);
|
||||
// float4 filterVals = (float4)(localfilter[0][i][j],localfilter[1][i][j],localfilter[2][i][j],0);
|
||||
//
|
||||
// filteredValue = mad(pixVals,filterVals,filteredValue);
|
||||
|
||||
filteredValue[0] = ImgValues[0, i, j] * localfilter[0, i, j] + filteredValue[0];
|
||||
filteredValue[1] = ImgValues[1, i, j] * localfilter[1, i, j] + filteredValue[1];
|
||||
filteredValue[2] = ImgValues[2, i, j] * localfilter[2, i, j] + filteredValue[2];
|
||||
}
|
||||
}
|
||||
ind = 3 * ((y + CENTER) * w + x + CENTER);
|
||||
FilteredImage[ind] = Math.Min(Math.Max(filteredValue[0], 0), 255);
|
||||
FilteredImage[ind + 1] = Math.Min(Math.Max(filteredValue[1], 0), 255);
|
||||
FilteredImage[ind + 2] = Math.Min(Math.Max(filteredValue[2], 0), 255);
|
||||
|
||||
//Gets next filter values
|
||||
for (int i = 0; i < FILTERSIZE; i++)
|
||||
{
|
||||
for (int j = 0; j < FILTERSIZE - 1; j++)
|
||||
{
|
||||
ImgValues[0, i, j] = ImgValues[0, i, j + 1];
|
||||
ImgValues[1, i, j] = ImgValues[1, i, j + 1];
|
||||
ImgValues[2, i, j] = ImgValues[2, i, j + 1];
|
||||
}
|
||||
ind = 3 * ((y + i) * w + x + FILTERSIZE - 1);
|
||||
ImgValues[0, i, FILTERSIZE - 1] = ImgData[ind];
|
||||
ImgValues[1, i, FILTERSIZE - 1] = ImgData[ind + 1];
|
||||
ImgValues[2, i, FILTERSIZE - 1] = ImgData[ind + 2];
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>Filter source</summary>
|
||||
private class CLFilterSrc
|
||||
{
|
||||
public string src = @"
|
||||
|
||||
#define FILTERSIZE 7
|
||||
#define CENTER 3
|
||||
|
||||
__kernel void ApplyFilter(__global uchar * ImgData,
|
||||
__global float * Filter,
|
||||
__global float * FilteredImage,
|
||||
__global int * ImgWidth)
|
||||
|
||||
{
|
||||
int y = get_global_id(0);
|
||||
int w = ImgWidth[0];
|
||||
|
||||
//Image values
|
||||
float ImgValues[3][FILTERSIZE][FILTERSIZE];
|
||||
|
||||
//Copies filter to local memory
|
||||
float localfilter[3][FILTERSIZE][FILTERSIZE];
|
||||
|
||||
//Initialization of ImgValues
|
||||
for (int i = 0; i < FILTERSIZE; i++)
|
||||
{
|
||||
for (int j = 0; j < FILTERSIZE; j++)
|
||||
{
|
||||
ImgValues[0][i][j] = ImgData[3*((y+i)*w+j)];
|
||||
ImgValues[1][i][j] = ImgData[3*((y+i)*w+j)+1];
|
||||
ImgValues[2][i][j] = ImgData[3*((y+i)*w+j)+2];
|
||||
|
||||
localfilter[0][i][j] = Filter[3*(i*FILTERSIZE + j)];
|
||||
localfilter[1][i][j] = Filter[3*(i*FILTERSIZE + j)+1];
|
||||
localfilter[2][i][j] = Filter[3*(i*FILTERSIZE + j)+2];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int xMax = w-CENTER;
|
||||
int ind = 0;
|
||||
for (int x = 0; x < xMax; x++)
|
||||
{
|
||||
//Calculates filtered value
|
||||
float4 filteredValue = 0;
|
||||
for (int i = 0; i < FILTERSIZE; i++)
|
||||
{
|
||||
for (int j = 0; j < FILTERSIZE-1; j++)
|
||||
{
|
||||
float4 pixVals = (float4)(ImgValues[0][i][j],ImgValues[1][i][j],ImgValues[2][i][j],0);
|
||||
float4 filterVals = (float4)(localfilter[0][i][j],localfilter[1][i][j],localfilter[2][i][j],0);
|
||||
|
||||
filteredValue = pixVals*filterVals+filteredValue;
|
||||
|
||||
// filteredValue.x = mad(ImgValues[0][i][j], localfilter[0][i][j], filteredValue.x);
|
||||
// filteredValue.y = mad(ImgValues[1][i][j], localfilter[1][i][j], filteredValue.y);
|
||||
// filteredValue.z = mad(ImgValues[2][i][j], localfilter[2][i][j], filteredValue.z);
|
||||
}
|
||||
}
|
||||
ind = 3*((y+CENTER)*w+x+CENTER);
|
||||
FilteredImage[ind] = clamp(filteredValue.x,0,255);
|
||||
FilteredImage[ind+1] = clamp(filteredValue.y,0,255);
|
||||
FilteredImage[ind+2] = clamp(filteredValue.z,0,255);
|
||||
|
||||
//Gets next filter values
|
||||
for (int i = 0; i < FILTERSIZE; i++)
|
||||
{
|
||||
for (int j = 0; j < FILTERSIZE-1; j++)
|
||||
{
|
||||
ImgValues[0][i][j] = ImgValues[0][i][j+1];
|
||||
ImgValues[1][i][j] = ImgValues[1][i][j+1];
|
||||
ImgValues[2][i][j] = ImgValues[2][i][j+1];
|
||||
}
|
||||
ind = 3*((y+i)*w+x+FILTERSIZE-1);
|
||||
ImgValues[0][i][FILTERSIZE-1] = ImgData[ind];
|
||||
ImgValues[1][i][FILTERSIZE-1] = ImgData[ind+1];
|
||||
ImgValues[2][i][FILTERSIZE-1] = ImgData[ind+2];
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
kernel void ImgFilter(global uchar * image,
|
||||
global float * Filter,
|
||||
global float * FilteredImage,
|
||||
global int * Width)
|
||||
|
||||
{
|
||||
int x = get_global_id(0);
|
||||
int y = get_global_id(1);
|
||||
int w = Width[0];
|
||||
int ind = 0;
|
||||
int ind2 = 0;
|
||||
|
||||
float4 filteredVal = (float4)(0,0,0,0);
|
||||
for (int i = 0; i < FILTERSIZE; i++)
|
||||
{
|
||||
for (int j = 0; j < FILTERSIZE; j++)
|
||||
{
|
||||
ind = 3*(x+j + w*(y+i));
|
||||
ind2 = 3*(i*FILTERSIZE + j);
|
||||
filteredVal.x = mad(Filter[ind2] , (float)image[ind], filteredVal.x);
|
||||
filteredVal.y = mad(Filter[ind2+1] , (float)image[ind+1],filteredVal.y);
|
||||
filteredVal.z = mad(Filter[ind2+2] , (float)image[ind+2],filteredVal.z);
|
||||
}
|
||||
}
|
||||
ind = 3*(x+CENTER + w*(y+CENTER));
|
||||
FilteredImage[ind] = clamp(filteredVal.x,0,255);
|
||||
FilteredImage[ind+1] = clamp(filteredVal.y,0,255);
|
||||
FilteredImage[ind+2] = clamp(filteredVal.z,0,255);
|
||||
}
|
||||
";
|
||||
}
|
||||
}
|
||||
}
|
276
OpenCLFilter/Form1.Designer.cs
generated
Normal file
276
OpenCLFilter/Form1.Designer.cs
generated
Normal file
@ -0,0 +1,276 @@
|
||||
namespace OpenCLFilter
|
||||
{
|
||||
partial class frmMainFilter
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmMainFilter));
|
||||
this.toolStrip1 = new System.Windows.Forms.ToolStrip();
|
||||
this.btnOpenFile = new System.Windows.Forms.ToolStripButton();
|
||||
this.btnSave = new System.Windows.Forms.ToolStripButton();
|
||||
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.btnApplyFilter = new System.Windows.Forms.ToolStripButton();
|
||||
this.cmbWorkDim = new System.Windows.Forms.ToolStripComboBox();
|
||||
this.btnFilterNoOpenCL = new System.Windows.Forms.ToolStripButton();
|
||||
this.btnConfigFilter = new System.Windows.Forms.ToolStripButton();
|
||||
this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.btnStartWebCam = new System.Windows.Forms.ToolStripButton();
|
||||
this.btnDeactivateCam = new System.Windows.Forms.ToolStripButton();
|
||||
this.lblFps = new System.Windows.Forms.ToolStripLabel();
|
||||
this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.btnCLConfig = new System.Windows.Forms.ToolStripButton();
|
||||
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
||||
this.panel1 = new System.Windows.Forms.Panel();
|
||||
this.pic = new System.Windows.Forms.PictureBox();
|
||||
this.toolStrip1.SuspendLayout();
|
||||
this.groupBox1.SuspendLayout();
|
||||
this.panel1.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pic)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// toolStrip1
|
||||
//
|
||||
this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.btnOpenFile,
|
||||
this.btnSave,
|
||||
this.toolStripSeparator1,
|
||||
this.btnApplyFilter,
|
||||
this.cmbWorkDim,
|
||||
this.btnFilterNoOpenCL,
|
||||
this.btnConfigFilter,
|
||||
this.toolStripSeparator2,
|
||||
this.btnStartWebCam,
|
||||
this.btnDeactivateCam,
|
||||
this.lblFps,
|
||||
this.toolStripSeparator3,
|
||||
this.btnCLConfig});
|
||||
this.toolStrip1.Location = new System.Drawing.Point(0, 0);
|
||||
this.toolStrip1.Name = "toolStrip1";
|
||||
this.toolStrip1.Size = new System.Drawing.Size(702, 55);
|
||||
this.toolStrip1.TabIndex = 0;
|
||||
this.toolStrip1.Text = "toolStrip1";
|
||||
//
|
||||
// btnOpenFile
|
||||
//
|
||||
this.btnOpenFile.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
|
||||
this.btnOpenFile.Image = ((System.Drawing.Image)(resources.GetObject("btnOpenFile.Image")));
|
||||
this.btnOpenFile.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None;
|
||||
this.btnOpenFile.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.btnOpenFile.Name = "btnOpenFile";
|
||||
this.btnOpenFile.Size = new System.Drawing.Size(52, 52);
|
||||
this.btnOpenFile.Text = "Load picture to be filtered";
|
||||
this.btnOpenFile.Click += new System.EventHandler(this.btnOpenFile_Click);
|
||||
//
|
||||
// btnSave
|
||||
//
|
||||
this.btnSave.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
|
||||
this.btnSave.Image = ((System.Drawing.Image)(resources.GetObject("btnSave.Image")));
|
||||
this.btnSave.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None;
|
||||
this.btnSave.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.btnSave.Name = "btnSave";
|
||||
this.btnSave.Size = new System.Drawing.Size(52, 52);
|
||||
this.btnSave.ToolTipText = "Save image";
|
||||
//
|
||||
// toolStripSeparator1
|
||||
//
|
||||
this.toolStripSeparator1.Name = "toolStripSeparator1";
|
||||
this.toolStripSeparator1.Size = new System.Drawing.Size(6, 55);
|
||||
//
|
||||
// btnApplyFilter
|
||||
//
|
||||
this.btnApplyFilter.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
|
||||
this.btnApplyFilter.Image = ((System.Drawing.Image)(resources.GetObject("btnApplyFilter.Image")));
|
||||
this.btnApplyFilter.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None;
|
||||
this.btnApplyFilter.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.btnApplyFilter.Name = "btnApplyFilter";
|
||||
this.btnApplyFilter.Size = new System.Drawing.Size(52, 52);
|
||||
this.btnApplyFilter.ToolTipText = "Apply filter";
|
||||
this.btnApplyFilter.Click += new System.EventHandler(this.btnApplyFilter_Click);
|
||||
//
|
||||
// cmbWorkDim
|
||||
//
|
||||
this.cmbWorkDim.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cmbWorkDim.Items.AddRange(new object[] {
|
||||
"Work_dim = 1",
|
||||
"Work_dim = 2"});
|
||||
this.cmbWorkDim.Name = "cmbWorkDim";
|
||||
this.cmbWorkDim.Size = new System.Drawing.Size(121, 55);
|
||||
this.cmbWorkDim.SelectedIndexChanged += new System.EventHandler(this.cmbWorkDim_SelectedIndexChanged);
|
||||
this.cmbWorkDim.Click += new System.EventHandler(this.cmbWorkDim_Click);
|
||||
//
|
||||
// btnFilterNoOpenCL
|
||||
//
|
||||
this.btnFilterNoOpenCL.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
|
||||
this.btnFilterNoOpenCL.Image = ((System.Drawing.Image)(resources.GetObject("btnFilterNoOpenCL.Image")));
|
||||
this.btnFilterNoOpenCL.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None;
|
||||
this.btnFilterNoOpenCL.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.btnFilterNoOpenCL.Name = "btnFilterNoOpenCL";
|
||||
this.btnFilterNoOpenCL.Size = new System.Drawing.Size(52, 52);
|
||||
this.btnFilterNoOpenCL.ToolTipText = "Filter image without using OpenCL";
|
||||
this.btnFilterNoOpenCL.Click += new System.EventHandler(this.btnFilterNoOpenCL_Click);
|
||||
//
|
||||
// btnConfigFilter
|
||||
//
|
||||
this.btnConfigFilter.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
|
||||
this.btnConfigFilter.Image = ((System.Drawing.Image)(resources.GetObject("btnConfigFilter.Image")));
|
||||
this.btnConfigFilter.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None;
|
||||
this.btnConfigFilter.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.btnConfigFilter.Name = "btnConfigFilter";
|
||||
this.btnConfigFilter.Size = new System.Drawing.Size(52, 52);
|
||||
this.btnConfigFilter.Text = "Change filter configuration";
|
||||
this.btnConfigFilter.Click += new System.EventHandler(this.btnConfigFilter_Click);
|
||||
//
|
||||
// toolStripSeparator2
|
||||
//
|
||||
this.toolStripSeparator2.Name = "toolStripSeparator2";
|
||||
this.toolStripSeparator2.Size = new System.Drawing.Size(6, 55);
|
||||
//
|
||||
// btnStartWebCam
|
||||
//
|
||||
this.btnStartWebCam.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
|
||||
this.btnStartWebCam.Image = ((System.Drawing.Image)(resources.GetObject("btnStartWebCam.Image")));
|
||||
this.btnStartWebCam.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None;
|
||||
this.btnStartWebCam.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.btnStartWebCam.Name = "btnStartWebCam";
|
||||
this.btnStartWebCam.Size = new System.Drawing.Size(52, 52);
|
||||
this.btnStartWebCam.ToolTipText = "Activate webcam real-time filtering";
|
||||
this.btnStartWebCam.Click += new System.EventHandler(this.btnStartWebCam_Click);
|
||||
//
|
||||
// btnDeactivateCam
|
||||
//
|
||||
this.btnDeactivateCam.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
|
||||
this.btnDeactivateCam.Image = ((System.Drawing.Image)(resources.GetObject("btnDeactivateCam.Image")));
|
||||
this.btnDeactivateCam.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None;
|
||||
this.btnDeactivateCam.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.btnDeactivateCam.Name = "btnDeactivateCam";
|
||||
this.btnDeactivateCam.Size = new System.Drawing.Size(52, 52);
|
||||
this.btnDeactivateCam.Text = "toolStripButton3";
|
||||
this.btnDeactivateCam.ToolTipText = "Deactivate webcam real-time filtering";
|
||||
this.btnDeactivateCam.Click += new System.EventHandler(this.btnDeactivateCam_Click);
|
||||
//
|
||||
// lblFps
|
||||
//
|
||||
this.lblFps.AutoSize = false;
|
||||
this.lblFps.Name = "lblFps";
|
||||
this.lblFps.Size = new System.Drawing.Size(60, 52);
|
||||
this.lblFps.Text = "0 fps";
|
||||
//
|
||||
// toolStripSeparator3
|
||||
//
|
||||
this.toolStripSeparator3.Name = "toolStripSeparator3";
|
||||
this.toolStripSeparator3.Size = new System.Drawing.Size(6, 55);
|
||||
//
|
||||
// btnCLConfig
|
||||
//
|
||||
this.btnCLConfig.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
|
||||
this.btnCLConfig.Image = ((System.Drawing.Image)(resources.GetObject("btnCLConfig.Image")));
|
||||
this.btnCLConfig.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None;
|
||||
this.btnCLConfig.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.btnCLConfig.Name = "btnCLConfig";
|
||||
this.btnCLConfig.Size = new System.Drawing.Size(52, 52);
|
||||
this.btnCLConfig.ToolTipText = "Open OpenCL configuration";
|
||||
this.btnCLConfig.Click += new System.EventHandler(this.btnCLConfig_Click);
|
||||
//
|
||||
// groupBox1
|
||||
//
|
||||
this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.groupBox1.Controls.Add(this.panel1);
|
||||
this.groupBox1.Location = new System.Drawing.Point(12, 58);
|
||||
this.groupBox1.Name = "groupBox1";
|
||||
this.groupBox1.Size = new System.Drawing.Size(678, 305);
|
||||
this.groupBox1.TabIndex = 1;
|
||||
this.groupBox1.TabStop = false;
|
||||
this.groupBox1.Text = "Picture";
|
||||
//
|
||||
// panel1
|
||||
//
|
||||
this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.panel1.AutoScroll = true;
|
||||
this.panel1.Controls.Add(this.pic);
|
||||
this.panel1.Location = new System.Drawing.Point(6, 19);
|
||||
this.panel1.Name = "panel1";
|
||||
this.panel1.Size = new System.Drawing.Size(666, 280);
|
||||
this.panel1.TabIndex = 0;
|
||||
//
|
||||
// pic
|
||||
//
|
||||
this.pic.Location = new System.Drawing.Point(3, 3);
|
||||
this.pic.Name = "pic";
|
||||
this.pic.Size = new System.Drawing.Size(150, 116);
|
||||
this.pic.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
|
||||
this.pic.TabIndex = 0;
|
||||
this.pic.TabStop = false;
|
||||
//
|
||||
// frmMainFilter
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(702, 375);
|
||||
this.Controls.Add(this.groupBox1);
|
||||
this.Controls.Add(this.toolStrip1);
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.Name = "frmMainFilter";
|
||||
this.Text = "CMSoft OpenCL image filtering Case Study";
|
||||
this.Load += new System.EventHandler(this.frmMainFilter_Load);
|
||||
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.frmMainFilter_FormClosing);
|
||||
this.toolStrip1.ResumeLayout(false);
|
||||
this.toolStrip1.PerformLayout();
|
||||
this.groupBox1.ResumeLayout(false);
|
||||
this.panel1.ResumeLayout(false);
|
||||
this.panel1.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pic)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.ToolStrip toolStrip1;
|
||||
private System.Windows.Forms.ToolStripButton btnOpenFile;
|
||||
private System.Windows.Forms.ToolStripButton btnApplyFilter;
|
||||
private System.Windows.Forms.ToolStripButton btnSave;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
|
||||
private System.Windows.Forms.ToolStripButton btnConfigFilter;
|
||||
private System.Windows.Forms.GroupBox groupBox1;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;
|
||||
private System.Windows.Forms.ToolStripButton btnStartWebCam;
|
||||
private System.Windows.Forms.ToolStripButton btnDeactivateCam;
|
||||
private System.Windows.Forms.Panel panel1;
|
||||
private System.Windows.Forms.PictureBox pic;
|
||||
private System.Windows.Forms.ToolStripButton btnCLConfig;
|
||||
private System.Windows.Forms.ToolStripLabel lblFps;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator3;
|
||||
private System.Windows.Forms.ToolStripButton btnFilterNoOpenCL;
|
||||
private System.Windows.Forms.ToolStripComboBox cmbWorkDim;
|
||||
}
|
||||
}
|
||||
|
226
OpenCLFilter/Form1.cs
Normal file
226
OpenCLFilter/Form1.cs
Normal file
@ -0,0 +1,226 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using AForge.Video;
|
||||
using AForge.Video.DirectShow;
|
||||
|
||||
namespace OpenCLFilter
|
||||
{
|
||||
public partial class frmMainFilter : Form
|
||||
{
|
||||
public frmMainFilter()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
frmCfgFilter frmFilter;
|
||||
private void btnConfigFilter_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (frmFilter == null || frmFilter.IsDisposed)
|
||||
frmFilter = new frmCfgFilter();
|
||||
|
||||
frmFilter.Show();
|
||||
}
|
||||
|
||||
#region Open and store file, apply filter to bitmap
|
||||
Bitmap bmp;
|
||||
ImageData imgDt;
|
||||
private void btnOpenFile_Click(object sender, EventArgs e)
|
||||
{
|
||||
OpenFileDialog ofd = new OpenFileDialog();
|
||||
ofd.Filter = "Pictures|*.jpg";
|
||||
|
||||
if (ofd.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
try
|
||||
{
|
||||
bmp = new Bitmap(ofd.FileName);
|
||||
imgDt = new ImageData(bmp);
|
||||
pic.Image = bmp;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.ToString(), this.Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void btnApplyFilter_Click(object sender, EventArgs e)
|
||||
{
|
||||
System.Diagnostics.Stopwatch sWatch = new System.Diagnostics.Stopwatch();
|
||||
sWatch.Start();
|
||||
|
||||
if (frmFilter == null || frmFilter.IsDisposed)
|
||||
frmFilter = new frmCfgFilter();
|
||||
|
||||
frmFilter.Show();
|
||||
|
||||
float[] filter = frmFilter.GetFilters();
|
||||
|
||||
CLFilter.ApplyFilter(imgDt, filter, true, cmbWorkDim.SelectedIndex == 1);
|
||||
|
||||
bmp = imgDt.GetStoredBitmap(bmp);
|
||||
pic.Image = bmp;
|
||||
|
||||
sWatch.Stop();
|
||||
lblFps.Text = sWatch.Elapsed.ToString();
|
||||
}
|
||||
|
||||
private void btnFilterNoOpenCL_Click(object sender, EventArgs e)
|
||||
{
|
||||
System.Diagnostics.Stopwatch sWatch = new System.Diagnostics.Stopwatch();
|
||||
sWatch.Start();
|
||||
|
||||
if (frmFilter == null || frmFilter.IsDisposed)
|
||||
frmFilter = new frmCfgFilter();
|
||||
|
||||
frmFilter.Show();
|
||||
|
||||
float[] filter = frmFilter.GetFilters();
|
||||
|
||||
CLFilter.ApplyFilter(imgDt, filter, false, false);
|
||||
|
||||
bmp = imgDt.GetStoredBitmap(bmp);
|
||||
pic.Image = bmp;
|
||||
|
||||
sWatch.Stop();
|
||||
lblFps.Text = sWatch.Elapsed.ToString();
|
||||
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
|
||||
private void btnCLConfig_Click(object sender, EventArgs e)
|
||||
{
|
||||
OpenCLTemplate.frmCLInfo frmCL = new OpenCLTemplate.frmCLInfo();
|
||||
frmCL.ShowDialog();
|
||||
|
||||
}
|
||||
|
||||
#region Webcam
|
||||
|
||||
VideoCaptureDevice vcd;
|
||||
ImageData ImgDtWebCam;
|
||||
private void btnStartWebCam_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (frmFilter == null || frmFilter.IsDisposed)
|
||||
frmFilter = new frmCfgFilter();
|
||||
|
||||
frmFilter.Show();
|
||||
filterWebCam = frmFilter.GetFilters();
|
||||
|
||||
|
||||
FilterInfoCollection devs = new FilterInfoCollection(FilterCategory.VideoInputDevice);
|
||||
delegRefreshPic = RefreshPic;
|
||||
vcd = new VideoCaptureDevice(devs[0].MonikerString);
|
||||
vcd.NewFrame += new NewFrameEventHandler(vcd_NewFrame);
|
||||
vcd.DesiredFrameSize = new Size(600, 400);
|
||||
vcd.Start();
|
||||
}
|
||||
|
||||
System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
|
||||
bool processando = false;
|
||||
int nFrames = 0; double fRate = 1;
|
||||
float[] filterWebCam;
|
||||
void vcd_NewFrame(object sender, NewFrameEventArgs eventArgs)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!processando)
|
||||
{
|
||||
processando = true;
|
||||
|
||||
bmp = (Bitmap)eventArgs.Frame.Clone();
|
||||
if (ImgDtWebCam == null)
|
||||
ImgDtWebCam = new ImageData(bmp);
|
||||
else ImgDtWebCam.ReadBmp(bmp);
|
||||
|
||||
//Filter
|
||||
if (!frmFilter.IsDisposed) filterWebCam = frmFilter.GetFilters();
|
||||
|
||||
CLFilter.ApplyFilter(ImgDtWebCam, filterWebCam, true, WorkDim2);
|
||||
bmp = ImgDtWebCam.GetStoredBitmap(bmp);
|
||||
|
||||
|
||||
if (!sw.IsRunning) sw.Start();
|
||||
|
||||
|
||||
nFrames++;
|
||||
fRate = nFrames / sw.Elapsed.TotalSeconds;
|
||||
|
||||
this.Invoke(delegRefreshPic);
|
||||
|
||||
processando = false;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
System.Windows.Forms.MessageBox.Show(ex.ToString());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private delegate void voidFunc();
|
||||
voidFunc delegRefreshPic;
|
||||
|
||||
private void RefreshPic()
|
||||
{
|
||||
pic.Image = bmp;
|
||||
pic.Refresh();
|
||||
lblFps.Text = Math.Round(fRate, 3).ToString();
|
||||
}
|
||||
|
||||
private void btnDeactivateCam_Click(object sender, EventArgs e)
|
||||
{
|
||||
sw.Stop(); sw.Reset();
|
||||
nFrames = 0; fRate = 1;
|
||||
CloseVIdeo();
|
||||
}
|
||||
|
||||
private void CloseVIdeo()
|
||||
{
|
||||
if (vcd != null)
|
||||
{
|
||||
if (vcd.IsRunning)
|
||||
{
|
||||
vcd.SignalToStop();
|
||||
vcd = null;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private void frmMainFilter_FormClosing(object sender, FormClosingEventArgs e)
|
||||
{
|
||||
CloseVIdeo();
|
||||
}
|
||||
#endregion
|
||||
|
||||
private void frmMainFilter_Load(object sender, EventArgs e)
|
||||
{
|
||||
cmbWorkDim.SelectedIndex = 1;
|
||||
}
|
||||
|
||||
bool WorkDim2 = true;
|
||||
private void cmbWorkDim_Click(object sender, EventArgs e)
|
||||
{
|
||||
}
|
||||
|
||||
private void cmbWorkDim_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
WorkDim2 = (cmbWorkDim.SelectedIndex == 1);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
719
OpenCLFilter/Form1.resx
Normal file
719
OpenCLFilter/Form1.resx
Normal file
@ -0,0 +1,719 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="btnOpenFile.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
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
|
||||
</value>
|
||||
</data>
|
||||
<data name="btnSave.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
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
|
||||
gg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="btnApplyFilter.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
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
|
||||
</value>
|
||||
</data>
|
||||
<data name="btnFilterNoOpenCL.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
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
|
||||
lf8PxJedC/iiEG4AAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="btnConfigFilter.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
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
|
||||
AAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="btnStartWebCam.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
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
|
||||
</value>
|
||||
</data>
|
||||
<data name="btnDeactivateCam.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
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
|
||||
</value>
|
||||
</data>
|
||||
<data name="btnCLConfig.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAE3SURBVGhD7ZcNCsIwDIUD0gM4vIl38k7eyTvpMojEkv4u
|
||||
YTKeUNTatC9fstgQ4QUCIAACIAACIAACIOBO4Jbofk30WC70XN9fS6K3jO37Oi+D18laNfdjk9vzHmzj
|
||||
KtwSLWJFZO6U/p3tWVDJeWutiwMt4SLMEtfrQIj4EeGalNjpqNTo/5V4HYXDHJglL1Fg+3yUct+dvod4
|
||||
TZ4/izNW1XJ1YK/4WsWI3Hs7N/KAyL2L4vmPxSO84TU/+oDT0feI6vdZA/1K2QlPncjKEx3ZQyqPa+5H
|
||||
XmlnU6d2ATQzdW+YrQN146KbnBb9YfH60tXTgERelafFj6aRjphuFWe7rNZ+3Z1YKZV0j5r3unLDrEXS
|
||||
splNsS5nao70toWW06251vPRJR6LQAAEQAAEQAAEQAAEQCCEwAdvJl7skTF2UQAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAABAAEAMDAAAAEAIACoJQAAFgAAACgAAAAwAAAAYAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAD8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8
|
||||
/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/39/f/6Ojo/9fX1//Q0ND/2dnZ/+rq6v/39/f/+/v7//z8
|
||||
/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8
|
||||
/P/8/Pz//Pz8//z8/P/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7
|
||||
+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//r6+v/s6+v/0tHR/7++vv+ysrH/tLSz/8nJ
|
||||
yf/k5OT/8/Pz//n5+f/6+vr/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7
|
||||
+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/i4uH/y8rK/7m4
|
||||
uP+qqqn/nJyb/6mpqf/Jycn/4eHh//Hx8f/4+Pj/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/7+/v/+/v7//v7+//7+/v/+/v7//v7
|
||||
+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//n5
|
||||
+f/e3t3/zs3M/83My/++vbz/nJua/5qZmf+0tLT/zMzM/+Li4v/y8vL/+fn5//r6+v/7+/v/+/v7//v7
|
||||
+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//T09P/X19b/zMrK/8/OzP/Av73/nZya/5eWlv+rq6v/vLy8/8/Pz//k5OT/8vLy//j4
|
||||
+P/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7
|
||||
+//7+/v/+/v7//v7+//7+/v/+/v7/+/v7//R0ND/yMbF/9LRz//BwL7/nJuZ/5qZmP+xsbH/vb29/8jI
|
||||
yP/Y2Nj/5+fn//Hx8f/29vb/+Pj4//r6+v/6+vr/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7
|
||||
+//7+/v/+/v7//v7+//5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5/+fn5//Ix8f/xMLB/9PR0P/Av73/m5mX/5yb
|
||||
mv+5ubn/yMjI/8rKyv/S0tL/29vb/+Tk5P/r6+v/8PDw//T09P/39/f/+Pj4//n5+f/5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7
|
||||
+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7/+Li4v/CwL//wL68/9XT
|
||||
0v/BwL7/mZiV/52cm//CwsH/1tbW/9fX1//Y2Nj/3Nzc/+Dg4P/k5OT/6enp/+7u7v/y8vL/9vb2//j4
|
||||
+P/5+fn/+vr6//r6+v/7+/v/+/v7//v7+//7+/v/+/v7//v7+//5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5/9vb
|
||||
2v+4trX/uri2/9TT0f/Av7z/lZSR/5ybmf/Gxsb/4uLi/+Pj4//j4+P/4+Pj/+Tk5P/l5eX/5+fn/+rq
|
||||
6v/t7e3/8fHx//T09P/29vb/9/f3//j4+P/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/5+fn/9/f3/9TT0/+xr67/trSy/9TS0P/Avrz/lJKP/5qZl//JyMj/6+vr/+7u7v/u7u7/7u7u/+7u
|
||||
7v/u7u7/7u7u/+/v7//w8PD/8fHx//Pz8//19fX/9vb2//f39//4+Pj/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/8vLy/8zMy/+pp6X/tLGv/9TS0P+/vrv/k5GO/5iWlP/IyMf/7u7u//X1
|
||||
9f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9fX1//b29v/29vb/9/f3//j4+P/4+Pj/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/7u7u/8XFxP+lo6H/tbKw/9TS0P/Avrz/lpSR/5eV
|
||||
k//GxcT/7Ozs//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6
|
||||
+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/6enp/728vP+fnJr/tLGv/9TT
|
||||
0f/Avrz/lpSR/5SSkP/BwMD/6urq//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6
|
||||
+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/5OTk/7a1
|
||||
tf+bmJb/tLKv/9TS0P/Av7z/mJaU/5OSkP+9vbz/5ubm//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/7+/v/+/v7//v7
|
||||
+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7
|
||||
+//7+/v/4eHh/6+urf+Vk5H/tLGv/9XU0v/BwL3/mZeU/5KQjv+6urn/5OTk//v7+//7+/v/+/v7//v7
|
||||
+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7
|
||||
+//5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/29vb/6mop/+SkI3/tLKv/9XU0v/Cwb//nJqY/5KQjv+4t7b/4eHh//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7
|
||||
+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/2dnY/6Ojof+PjYr/t7Sy/9rZ1//Kycf/oqCe/5OR
|
||||
j/+2tbX/4eHh//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7
|
||||
+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/1NTU/5+enP+IhYL/pqOg/8XD
|
||||
wP+7ubf/npuY/5CNiv+ysK//3t3d//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/7+/v/+/v7//v7+//7+/v/+/v7//v7
|
||||
+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//39/f/z87N/5iW
|
||||
lP96d3T/i4eE/56bmP+WlJD/h4N//4J+ev+ppqP/2djX//n5+f/7+/v/+/v7//v7+//7+/v/+/v7//v7
|
||||
+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/s7Ov/wcC+/5OQjf95dnL/fXp2/4J+ev98eHT/cm5p/3hzbf+emZT/y8jG//Dw8P/5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7
|
||||
+//7+/v/+/v7//b29v/a2df/tLKv/4+MiP+IhYH/jYmG/46Khv9+e3f/b2tm/3Vwav+OiIL/vLiz/+Hf
|
||||
3v/4+Pj/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7
|
||||
+//7+/v/+/v7//v7+//5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/+Pj4/+jn5v/GxML/pKGe/5ORjv+XlJH/n5yZ/56bl/+LiIT/dXJt/3Ju
|
||||
aP+CfXb/pJ+Z/8vIxP/t7Ov/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7
|
||||
+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/8/Pz/9bV0/+4trP/n5yZ/5yZl/+joJ7/rqun/6uo
|
||||
pP+Vko7/fHl0/3BsaP98d3D/k42F/7q1r//a2db/9vb2//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7
|
||||
+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/39/f/4+Lh/8XDwf+qp6T/op+c/6Gg
|
||||
nv+tq6n/uLWy/7KvrP+cmZX/gX56/29saP9zb2n/h4F5/6KclP/Fwb3/5+bl//j4+P/5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/u7u3/0c/O/7i1
|
||||
s/+opaP/pqSi/6qopv+4trT/wL68/7i2sv+ioJz/iIWB/3Fva/9tamT/f3py/5ONhP+yrqf/0c/M//Hx
|
||||
8P/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//X0
|
||||
9P/c29r/w8G//66rqf+rqaj/qaim/7OysP/CwL//ycfE/768uP+ppqL/jouH/3Rybv9pZmL/dHBq/4qE
|
||||
fP+emJD/vbm0/9/e3P/29vb/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5/+np6P/OzMr/uLaz/7CurP+vr63/sK+u/7+9vP/Ny8r/0c/N/8XDwP+xr6v/l5SR/3x6
|
||||
dv9raWX/bmtm/4R/eP+Wj4f/rKeg/8nGw//t7Oz/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6
|
||||
+v/6+vr/+vr6//r6+v/6+vr/8/Ly/9fW1P/Bv73/s7Gv/7Szsv+xsbD/uLi3/8nIx//X1dT/2NbU/8zK
|
||||
x/+5trP/npyY/4KAff9ua2j/aGZh/3l1b/+QiYH/nZeO/7ezrv/Y1tT/9fX1//r6+v/6+vr/+vr6//r6
|
||||
+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6
|
||||
+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/49/f/4+Lh/8nHxf+3tLL/trSz/7a1tP+1tbX/wcHB/9PS
|
||||
0v/f3tz/3NvZ/9HQzf/Avrv/p6Si/4uIhv90cW7/aWdj/3Juaf+KhHz/mZKJ/6ehmf/Cvrv/5+bl//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/7+/v/+/v7//v7
|
||||
+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//v7u7/0M/N/7u5tv+zsq//uLe2/7a2
|
||||
tf+7urr/ysrK/93d3P/m5uX/4eDf/9fW1P/HxsP/r62q/5KQjf95d3T/amhk/2poY/9/enT/lo+G/56W
|
||||
jv+xrKb/z83L//Ly8v/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7
|
||||
+//6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//X19f/a2dj/wb68/7Cu
|
||||
q/+0srH/tbW0/7e3t//AwMD/09PT/+Tl5P/q6un/5eTi/9zb2f/NzMr/t7Wz/5uZlv+Afnz/bmxp/2ln
|
||||
Y/91cmz/j4mB/52WjP+hm5P/uray/9/e3P/39/f/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+vr6/+jn
|
||||
5//GxML/sK2q/6yqp/+ysbD/s7Oy/7m5uf/Hx8f/3Nzc/+3t7f/v7+7/6eno/+Hg3//U09H/v767/6Oh
|
||||
n/+HhYP/cnBu/2lnY/9tamb/hH94/5qTi/+el43/qKOd/8bDwP/u7e3/+/v7//v7+//7+/v/+/v7//v7
|
||||
+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6
|
||||
+v/6+vr/8vHx/8/OzP+zsK7/o6Gd/6qopv+srKr/sbGx/7q6uv/Nzc3/5OTk//Ly8v/x8fH/7Ovr/+Xk
|
||||
4//a2Nf/x8XD/6yqqP+Pjoz/eXd1/2xqZ/9raGT/enZx/5SNhv+hmZD/nZaO/7Ouqv/W1NP/9vb1//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/7+/v/+/v7//v7+//7+/v/+/v7//v7
|
||||
+//7+/v/+/v7//v7+//4+Pj/3t3c/7q3tf+fnJj/npuY/6SioP+op6b/sLCv/7y9vP/U1NT/7Ozs//f3
|
||||
9//19fT/8PDv/+rp6P/g393/zs3L/7SysP+XlZP/fn16/25tav9pZ2T/cW5p/4mEff+fmI//oJiP/6Kc
|
||||
lf++urf/6Ofm//r6+v/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//6+vr/+vr6//r6
|
||||
+v/6+vr/+vr6//r6+v/6+vr/+vr6//n5+f/r6+r/w8G+/6Kem/+TkIz/mZeU/5ybmf+ko6L/rq6t/7/A
|
||||
v//Z2tn/8PDw//j4+P/29vb/8vHx/+zs6//j4+H/1NPR/7y6uf+fnZz/hYSC/3RycP9ramf/bWpm/396
|
||||
df+Ykor/pZ2U/5uUi/+rpqH/zcvJ//Ly8v/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//X19f/T0tD/qqik/42Khf+Niob/kY+M/5eW
|
||||
lP+hoJ//ra2s/8PEw//f4N//9PT0//r6+v/4+Pj/9fX1//Dw7//p6ef/29rZ/8TCwf+npaT/jIqI/3h3
|
||||
df9ubGr/bGlm/3Zybf+PiYL/pJ2U/6Oakf+clo7/trOv/+Dg3v/5+fn/+/v7//v7+//7+/v/+/v7//v7
|
||||
+//7+/v/+/v7//v7+//5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+Pj4/+Pi4f+1s7D/j4uG/4F+
|
||||
ef+Gg3//ioiE/5ORj/+fnpz/sK+u/8rKyv/l5eT/9PT0//j4+P/4+Pj/9vb2//Ly8f/r6+r/397d/8nI
|
||||
x/+sq6r/kY+O/317ev9xb23/bWpo/3Btaf+Ef3n/nJaN/6mhl/+ak4r/o56Y/8PBvv/u7u3/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/8fHw/8bF
|
||||
w/+ZlpL/e3dx/3p2cv98enb/g4F+/4+Niv+enJr/tLOy/9HQ0P/m5+b/7u7u//Dw8P/x8fH/8fHx/+/v
|
||||
7//r6+r/4uHg/9DPzv+4trb/n56d/4yKif9+fHv/dXRx/3Nwbf99eXT/lI+H/6mhl/+lnZL/l5GJ/66r
|
||||
pv/Y19b/9/f3//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/29vb/2NfV/6Win/96dnH/b2xm/3Nxbf94dnP/gYB9/42Miv+bmpn/sK+u/8XExP/Q0ND/0tLR/9DQ
|
||||
0P/S0tL/09PT/9TU1P/T09P/0NDP/8fHxv+6ubn/rKuq/5+enf+Uk5L/i4qI/4WEgv+FgoD/ko6J/5+Z
|
||||
kv+jnJP/kIqC/5WQi/+4trP/6Ojn//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//f39//m5eX/t7a1/4mGg/9wbWr/dnRx/359e/+Ih4X/kZGP/5iYl/+enZ3/pKOj/6mp
|
||||
qf+pqan/pKSk/6Ghof+hoaH/o6Oj/6Wlpf+oqKj/qqqq/6qqqv+oqKj/pKSk/6Cfn/+ampr/lZWU/5GR
|
||||
kP+Pjo3/kZCO/5aUkP+Wk47/iYWB/397d/+bmZb/xcTD/+vr6//29vb/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/4+Pj/8PDw/9ra2v+9vLz/oqGg/4yLif+Mi4n/lZST/52dnP+kpKT/qamp/6io
|
||||
p/+hoaH/mJiY/46Ojv+FhYX/fX19/3l5ef93d3f/eHh4/3t7e/+AgID/hYWF/4mJif+MjIz/jY2N/42N
|
||||
jf+MjIz/jIyM/46Ojv+QkJD/kJCQ/4+Pj/+OjYz/iYiG/358e/+Af37/mZmY/7e3t//V1dX/7u7u//j4
|
||||
+P/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/09PT/2NjY/7e3t/+oqKj/qqqq/7Kxsf+5ubn/u7u7/7y8
|
||||
vP+9vb3/urq6/7Kysv+kpKT/lJSU/4SEhP93d3f/bm5u/2lpaf9oaGj/aWlp/21tbf9ycnL/eHh4/35+
|
||||
fv+BgYH/goKC/4KCgv+BgYH/goKC/4aGhv+Li4v/kJCQ/5OTk/+Tk5P/kJCQ/4aGhv98fHz/eXl5/4OD
|
||||
g/+lpaX/0NDQ//Pz8//5+fn/+fn5//n5+f/6+vr/+vr6//r6+v/w8PD/ycnJ/6Wlpf+np6f/yMjI/9bW
|
||||
1v/U1NT/z8/P/8nJyf/ExMT/vr6+/7a2tv+pqan/mpqa/4yMjP+BgYH/enp6/3h4eP94eHj/e3t7/4CA
|
||||
gP+FhYX/ioqK/46Ojv+QkJD/kJCQ/4+Pj/+Ojo7/j4+P/5KSkv+Wlpb/mJiY/5iYmP+Wlpb/kpKS/4uL
|
||||
i/+AgID/cnJy/2ZmZv+BgYH/v7+//+3t7f/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/y8vL/0NDQ/7m5
|
||||
uf+4uLj/zs7O/9bW1v/W1tb/0dHR/8rKyv/FxcX/v7+//7i4uP+wsLD/pqam/52dnf+Wlpb/lJSU/5WV
|
||||
lf+ZmZn/n5+f/6enp/+tra3/srKy/7a2tv+3t7f/tbW1/7Kysv+urq7/rKys/6qqqv+oqKj/pKSk/5+f
|
||||
n/+YmJj/kJCQ/4eHh/+AgID/eXl5/3l5ef+YmJj/x8fH//Dw8P/5+fn/+fn5//n5+f/7+/v/+/v7//v7
|
||||
+//5+fn/7Ozs/9XV1f/Pz8//0NDQ/87Ozv/Jycn/xcXF/8DAwP+9vb3/urq6/7a2tv+ysrL/ra2t/6io
|
||||
qP+mpqb/pqam/6urq/+ysrL/vLy8/8fHx//R0dH/2dnZ/9/f3//g4OD/3Nzc/9XV1f/Ozs7/xsbG/76+
|
||||
vv+1tbX/qqqq/6CgoP+Xl5f/kpKS/5GRkf+VlZX/nZ2d/6ysrP/Gxsb/6Ojo//j4+P/7+/v/+/v7//v7
|
||||
+//5+fn/+fn5//n5+f/6+vr/+Pj4//Ly8v/n5+f/3d3d/9fX1//Q0ND/ysrK/8XFxf/BwcH/vb29/7q6
|
||||
uv+2trb/srKy/6+vr/+urq7/sLCw/7W1tf+8vLz/xsbG/9LS0v/d3d3/5ubm/+3t7f/u7u7/6enp/+Hh
|
||||
4f/Y2Nj/z8/P/8fHx/++vr7/tra2/7Gxsf+vr6//sbGx/7e3t//CwsL/z8/P/+Dg4P/w8PD/+Pj4//n5
|
||||
+f/5+fn/+fn5//n5+f/7+/v/+/v7//v7+//7+/v/+/v7//v7+//6+vr/9vb2/+7u7v/m5ub/4uLi/97e
|
||||
3v/a2tr/1tbW/9LS0v/Q0ND/zc3N/8vLy//Kysr/y8vL/8/Pz//U1NT/2tra/+Dg4P/n5+f/7Ozs/+/v
|
||||
7//v7+//7Ozs/+fn5//i4uL/3d3d/9nZ2f/V1dX/1NTU/9XV1f/Y2Nj/3Nzc/+Pj4//t7e3/9vb2//r6
|
||||
+v/7+/v/+/v7//v7+//7+/v/+/v7//v7+//8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8
|
||||
/P/8/Pz/+/v7//n5+f/29vb/8vLy//Dw8P/u7u7/7e3t/+zs7P/s7Oz/7Ozs/+3t7f/u7u7/8PDw//Ly
|
||||
8v/09PT/9fX1//b29v/19fX/9PT0//Pz8//x8fH/8PDw//Dw8P/w8PD/8vLy//X19f/5+fn/+/v7//z8
|
||||
/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P8AAAAAAADxBAAAAAAAAPEEAAAAAAAA
|
||||
8QQAAAAAAADxBAAAAAAAAPEEAAAAAAAA8QQAAAAAAADxBAAAAAAAAPEEAAAAAAAA8QQAAAAAAADxBAAA
|
||||
AAAAAPEEAAAAAAAA8QQAAAAAAADxBAAAAAAAAPEEAAAAAAAA8QQAAAAAAADxBAAAAAAAAPEEAAAAAAAA
|
||||
8QQAAAAAAADxBAAAAAAAAPEEAAAAAAAA8QQAAAAAAADxBAAAAAAAAPEEAAAAAAAA8QQAAAAAAADxBAAA
|
||||
AAAAAPEEAAAAAAAA8QQAAAAAAADxBAAAAAAAAPEEAAAAAAAA8QQAAAAAAADxBAAAAAAAAPEEAAAAAAAA
|
||||
8QQAAAAAAADxBAAAAAAAAPEEAAAAAAAA8QQAAAAAAADxBAAAAAAAAPEEAAAAAAAA8QQAAAAAAADxBAAA
|
||||
AAAAAPEEAAAAAAAA8QQAAAAAAADxBAAAAAAAAPEEAAAAAAAA8QQAAAAAAADxBAAAAAAAAPEEAAAAAAAA
|
||||
8QQ=
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
120
OpenCLFilter/ImageData.cs
Normal file
120
OpenCLFilter/ImageData.cs
Normal file
@ -0,0 +1,120 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Imaging;
|
||||
using System.Text;
|
||||
using OpenCLTemplate;
|
||||
|
||||
namespace OpenCLFilter
|
||||
{
|
||||
/// <summary>Stores image data in OpenCL memory</summary>
|
||||
public class ImageData
|
||||
{
|
||||
/// <summary>Pixel size</summary>
|
||||
private const int PIXELSIZE = 3;
|
||||
|
||||
/// <summary>OpenCL byte array that stores the image data</summary>
|
||||
public CLCalc.Program.Variable varData;
|
||||
/// <summary>Host memory image data</summary>
|
||||
public byte[] Data;
|
||||
|
||||
private int width, height;
|
||||
|
||||
/// <summary>Gets image width</summary>
|
||||
public int Width
|
||||
{
|
||||
get { return width; }
|
||||
}
|
||||
|
||||
/// <summary>Gets image height</summary>
|
||||
public int Height
|
||||
{
|
||||
get { return height; }
|
||||
}
|
||||
|
||||
/// <summary>ImageData constructor. Reads data from a bitmap</summary>
|
||||
/// <param name="bmp">Bitmap to read from</param>
|
||||
public ImageData(Bitmap bmp)
|
||||
{
|
||||
if (CLCalc.CLAcceleration == CLCalc.CLAccelerationType.Unknown) CLCalc.InitCL();
|
||||
|
||||
width = bmp.Width;
|
||||
height = bmp.Height;
|
||||
|
||||
//Allocates space for data
|
||||
Data = new byte[3 * width * height];
|
||||
|
||||
//Reads bmp to local Data variable
|
||||
ReadToLocalData(bmp);
|
||||
|
||||
//Transfer data to OpenCL device
|
||||
varData = new CLCalc.Program.Variable(Data);
|
||||
}
|
||||
|
||||
/// <summary>Reads data from a bitmap.</summary>
|
||||
/// <param name="bmp">Source bitmap</param>
|
||||
public void ReadBmp(Bitmap bmp)
|
||||
{
|
||||
ReadToLocalData(bmp);
|
||||
varData.WriteToDevice(Data);
|
||||
}
|
||||
|
||||
/// <summary>Returns stored data in a bitmap</summary>
|
||||
/// <param name="bmp">Reference bitmap</param>
|
||||
public Bitmap GetStoredBitmap(Bitmap bmp)
|
||||
{
|
||||
Bitmap resp = new Bitmap(width, height, bmp.PixelFormat);
|
||||
|
||||
BitmapData bmd = resp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height),
|
||||
System.Drawing.Imaging.ImageLockMode.ReadOnly, bmp.PixelFormat);
|
||||
|
||||
//Write data
|
||||
unsafe
|
||||
{
|
||||
for (int y = 0; y < bmd.Height; y++)
|
||||
{
|
||||
byte* row = (byte*)bmd.Scan0 + (y * bmd.Stride);
|
||||
|
||||
for (int x = 0; x < bmd.Width; x++)
|
||||
{
|
||||
row[x * PIXELSIZE] = Data[3 * (x + width * y)];
|
||||
row[x * PIXELSIZE + 1] = Data[3 * (x + width * y) + 1];
|
||||
row[x * PIXELSIZE + 2] = Data[3 * (x + width * y) + 2];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Unlock bits
|
||||
resp.UnlockBits(bmd);
|
||||
|
||||
return resp;
|
||||
}
|
||||
|
||||
/// <summary>Copies bitmap data to local Data</summary>
|
||||
/// <param name="bmp">Bitmap to copy</param>
|
||||
private void ReadToLocalData(Bitmap bmp)
|
||||
{
|
||||
//Lock bits
|
||||
BitmapData bmd = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height),
|
||||
System.Drawing.Imaging.ImageLockMode.ReadOnly, bmp.PixelFormat);
|
||||
//Read data
|
||||
unsafe
|
||||
{
|
||||
for (int y = 0; y < bmd.Height; y++)
|
||||
{
|
||||
byte* row = (byte*)bmd.Scan0 + (y * bmd.Stride);
|
||||
|
||||
for (int x = 0; x < bmd.Width; x++)
|
||||
{
|
||||
Data[3 * (x + width * y)] = row[x * PIXELSIZE];
|
||||
Data[3 * (x + width * y) + 1] = row[x * PIXELSIZE + 1];
|
||||
Data[3 * (x + width * y) + 2] = row[x * PIXELSIZE + 2];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Unlock bits
|
||||
bmp.UnlockBits(bmd);
|
||||
}
|
||||
}
|
||||
}
|
165
OpenCLFilter/OpenCLFilter.csproj
Normal file
165
OpenCLFilter/OpenCLFilter.csproj
Normal file
@ -0,0 +1,165 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>9.0.30729</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{E40C284E-CF7A-4208-B586-C56E3D6DA194}</ProjectGuid>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>OpenCLFilter</RootNamespace>
|
||||
<AssemblyName>OpenCLFilter</AssemblyName>
|
||||
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<ApplicationIcon>filter.ico</ApplicationIcon>
|
||||
<FileUpgradeFlags>
|
||||
</FileUpgradeFlags>
|
||||
<OldToolsVersion>3.5</OldToolsVersion>
|
||||
<UpgradeBackupLocation />
|
||||
<PublishUrl>publish\</PublishUrl>
|
||||
<Install>true</Install>
|
||||
<InstallFrom>Disk</InstallFrom>
|
||||
<UpdateEnabled>false</UpdateEnabled>
|
||||
<UpdateMode>Foreground</UpdateMode>
|
||||
<UpdateInterval>7</UpdateInterval>
|
||||
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
|
||||
<UpdatePeriodically>false</UpdatePeriodically>
|
||||
<UpdateRequired>false</UpdateRequired>
|
||||
<MapFileExtensions>true</MapFileExtensions>
|
||||
<ApplicationRevision>0</ApplicationRevision>
|
||||
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
|
||||
<IsWebBootstrapper>false</IsWebBootstrapper>
|
||||
<UseApplicationTrust>false</UseApplicationTrust>
|
||||
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="AForge, Version=2.1.2.0, Culture=neutral, PublicKeyToken=c1db6ff4eaa06aeb, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\AForge.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="AForge.Video, Version=2.1.2.0, Culture=neutral, PublicKeyToken=cbfb6e07d173c401, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\AForge.Video.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="AForge.Video.DirectShow, Version=2.1.2.0, Culture=neutral, PublicKeyToken=61ea4348d43881b7, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\AForge.Video.DirectShow.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="OpenCL.NET, Version=1.0.48.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\OpenCL.NET.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="OpenCLTemplate, Version=1.0.8.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\OpenCLTemplate.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Xml.Linq">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Data.DataSetExtensions">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Deployment" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="CLFilter.cs" />
|
||||
<Compile Include="Form1.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Form1.Designer.cs">
|
||||
<DependentUpon>Form1.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="frmCfgFilter.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="frmCfgFilter.Designer.cs">
|
||||
<DependentUpon>frmCfgFilter.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="ImageData.cs" />
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<EmbeddedResource Include="Form1.resx">
|
||||
<DependentUpon>Form1.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="frmCfgFilter.resx">
|
||||
<DependentUpon>frmCfgFilter.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
<DesignTime>True</DesignTime>
|
||||
</Compile>
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
<Compile Include="Properties\Settings.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="filter.ico" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Client.3.5">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
|
||||
<Install>false</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>.NET Framework 3.5 SP1</ProductName>
|
||||
<Install>true</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>Windows Installer 3.1</ProductName>
|
||||
<Install>true</Install>
|
||||
</BootstrapperPackage>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
13
OpenCLFilter/OpenCLFilter.csproj.user
Normal file
13
OpenCLFilter/OpenCLFilter.csproj.user
Normal file
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<PublishUrlHistory />
|
||||
<InstallUrlHistory />
|
||||
<SupportUrlHistory />
|
||||
<UpdateUrlHistory />
|
||||
<BootstrapperUrlHistory />
|
||||
<ErrorReportUrlHistory />
|
||||
<FallbackCulture>de-DE</FallbackCulture>
|
||||
<VerifyUploadedFiles>false</VerifyUploadedFiles>
|
||||
</PropertyGroup>
|
||||
</Project>
|
21
OpenCLFilter/Program.cs
Normal file
21
OpenCLFilter/Program.cs
Normal file
@ -0,0 +1,21 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace OpenCLFilter
|
||||
{
|
||||
static class Program
|
||||
{
|
||||
/// <summary>
|
||||
/// The main entry point for the application.
|
||||
/// </summary>
|
||||
[STAThread]
|
||||
static void Main()
|
||||
{
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
Application.Run(new frmMainFilter());
|
||||
}
|
||||
}
|
||||
}
|
36
OpenCLFilter/Properties/AssemblyInfo.cs
Normal file
36
OpenCLFilter/Properties/AssemblyInfo.cs
Normal file
@ -0,0 +1,36 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("OpenCLFilter")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("Microsoft")]
|
||||
[assembly: AssemblyProduct("OpenCLFilter")]
|
||||
[assembly: AssemblyCopyright("Copyright © Microsoft 2010")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("e6ff6ed6-ad02-47a5-99e2-a2f233b4b0e1")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
63
OpenCLFilter/Properties/Resources.Designer.cs
generated
Normal file
63
OpenCLFilter/Properties/Resources.Designer.cs
generated
Normal file
@ -0,0 +1,63 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// Dieser Code wurde von einem Tool generiert.
|
||||
// Laufzeitversion:4.0.30319.1
|
||||
//
|
||||
// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
|
||||
// der Code erneut generiert wird.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace OpenCLFilter.Properties {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
|
||||
/// </summary>
|
||||
// Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert
|
||||
// -Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert.
|
||||
// Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen
|
||||
// mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Resources() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||
get {
|
||||
if (object.ReferenceEquals(resourceMan, null)) {
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("OpenCLFilter.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
|
||||
/// Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
117
OpenCLFilter/Properties/Resources.resx
Normal file
117
OpenCLFilter/Properties/Resources.resx
Normal file
@ -0,0 +1,117 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
26
OpenCLFilter/Properties/Settings.Designer.cs
generated
Normal file
26
OpenCLFilter/Properties/Settings.Designer.cs
generated
Normal file
@ -0,0 +1,26 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// Dieser Code wurde von einem Tool generiert.
|
||||
// Laufzeitversion:4.0.30319.1
|
||||
//
|
||||
// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
|
||||
// der Code erneut generiert wird.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace OpenCLFilter.Properties {
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
|
||||
public static Settings Default {
|
||||
get {
|
||||
return defaultInstance;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
7
OpenCLFilter/Properties/Settings.settings
Normal file
7
OpenCLFilter/Properties/Settings.settings
Normal file
@ -0,0 +1,7 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
|
||||
<Profiles>
|
||||
<Profile Name="(Default)" />
|
||||
</Profiles>
|
||||
<Settings />
|
||||
</SettingsFile>
|
BIN
OpenCLFilter/filter.ico
Normal file
BIN
OpenCLFilter/filter.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 9.4 KiB |
392
OpenCLFilter/frmCfgFilter.Designer.cs
generated
Normal file
392
OpenCLFilter/frmCfgFilter.Designer.cs
generated
Normal file
@ -0,0 +1,392 @@
|
||||
namespace OpenCLFilter
|
||||
{
|
||||
partial class frmCfgFilter
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmCfgFilter));
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.tabCtrl = new System.Windows.Forms.TabControl();
|
||||
this.tabPage1 = new System.Windows.Forms.TabPage();
|
||||
this.gbR = new System.Windows.Forms.GroupBox();
|
||||
this.txtRCode = new System.Windows.Forms.TextBox();
|
||||
this.lblAmpR = new System.Windows.Forms.Label();
|
||||
this.label8 = new System.Windows.Forms.Label();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.btnNormR = new System.Windows.Forms.Button();
|
||||
this.tabPage3 = new System.Windows.Forms.TabPage();
|
||||
this.gbG = new System.Windows.Forms.GroupBox();
|
||||
this.txtGCode = new System.Windows.Forms.TextBox();
|
||||
this.label9 = new System.Windows.Forms.Label();
|
||||
this.lblAmpG = new System.Windows.Forms.Label();
|
||||
this.label7 = new System.Windows.Forms.Label();
|
||||
this.btnNormG = new System.Windows.Forms.Button();
|
||||
this.tabPage2 = new System.Windows.Forms.TabPage();
|
||||
this.gbB = new System.Windows.Forms.GroupBox();
|
||||
this.txtBCode = new System.Windows.Forms.TextBox();
|
||||
this.label10 = new System.Windows.Forms.Label();
|
||||
this.lblAmpB = new System.Windows.Forms.Label();
|
||||
this.label5 = new System.Windows.Forms.Label();
|
||||
this.btnNormB = new System.Windows.Forms.Button();
|
||||
this.btnCopy = new System.Windows.Forms.Button();
|
||||
this.btnClear = new System.Windows.Forms.Button();
|
||||
this.tabCtrl.SuspendLayout();
|
||||
this.tabPage1.SuspendLayout();
|
||||
this.gbR.SuspendLayout();
|
||||
this.tabPage3.SuspendLayout();
|
||||
this.gbG.SuspendLayout();
|
||||
this.tabPage2.SuspendLayout();
|
||||
this.gbB.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.label1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.label1.Location = new System.Drawing.Point(12, 9);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(397, 112);
|
||||
this.label1.TabIndex = 0;
|
||||
this.label1.Text = resources.GetString("label1.Text");
|
||||
//
|
||||
// tabCtrl
|
||||
//
|
||||
this.tabCtrl.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.tabCtrl.Controls.Add(this.tabPage1);
|
||||
this.tabCtrl.Controls.Add(this.tabPage3);
|
||||
this.tabCtrl.Controls.Add(this.tabPage2);
|
||||
this.tabCtrl.Location = new System.Drawing.Point(12, 129);
|
||||
this.tabCtrl.Name = "tabCtrl";
|
||||
this.tabCtrl.SelectedIndex = 0;
|
||||
this.tabCtrl.Size = new System.Drawing.Size(397, 314);
|
||||
this.tabCtrl.TabIndex = 2;
|
||||
this.tabCtrl.Leave += new System.EventHandler(this.txtCode_Leave);
|
||||
//
|
||||
// tabPage1
|
||||
//
|
||||
this.tabPage1.Controls.Add(this.gbR);
|
||||
this.tabPage1.Location = new System.Drawing.Point(4, 22);
|
||||
this.tabPage1.Name = "tabPage1";
|
||||
this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.tabPage1.Size = new System.Drawing.Size(389, 288);
|
||||
this.tabPage1.TabIndex = 0;
|
||||
this.tabPage1.Text = "Red filter";
|
||||
this.tabPage1.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// gbR
|
||||
//
|
||||
this.gbR.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.gbR.Controls.Add(this.txtRCode);
|
||||
this.gbR.Controls.Add(this.lblAmpR);
|
||||
this.gbR.Controls.Add(this.label8);
|
||||
this.gbR.Controls.Add(this.label2);
|
||||
this.gbR.Controls.Add(this.btnNormR);
|
||||
this.gbR.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.gbR.ForeColor = System.Drawing.Color.Red;
|
||||
this.gbR.Location = new System.Drawing.Point(6, 6);
|
||||
this.gbR.Name = "gbR";
|
||||
this.gbR.Size = new System.Drawing.Size(372, 276);
|
||||
this.gbR.TabIndex = 2;
|
||||
this.gbR.TabStop = false;
|
||||
this.gbR.Text = "Red filter";
|
||||
//
|
||||
// txtRCode
|
||||
//
|
||||
this.txtRCode.Location = new System.Drawing.Point(83, 240);
|
||||
this.txtRCode.Name = "txtRCode";
|
||||
this.txtRCode.Size = new System.Drawing.Size(283, 20);
|
||||
this.txtRCode.TabIndex = 5;
|
||||
this.txtRCode.Leave += new System.EventHandler(this.txtCode_Leave);
|
||||
//
|
||||
// lblAmpR
|
||||
//
|
||||
this.lblAmpR.AutoSize = true;
|
||||
this.lblAmpR.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.lblAmpR.Location = new System.Drawing.Point(247, 206);
|
||||
this.lblAmpR.Name = "lblAmpR";
|
||||
this.lblAmpR.Size = new System.Drawing.Size(16, 15);
|
||||
this.lblAmpR.TabIndex = 4;
|
||||
this.lblAmpR.Text = "1";
|
||||
//
|
||||
// label8
|
||||
//
|
||||
this.label8.AutoSize = true;
|
||||
this.label8.Location = new System.Drawing.Point(6, 243);
|
||||
this.label8.Name = "label8";
|
||||
this.label8.Size = new System.Drawing.Size(71, 13);
|
||||
this.label8.TabIndex = 4;
|
||||
this.label8.Text = "Filter code:";
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.Location = new System.Drawing.Point(144, 206);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(97, 13);
|
||||
this.label2.TabIndex = 4;
|
||||
this.label2.Text = "Filter amplitude:";
|
||||
//
|
||||
// btnNormR
|
||||
//
|
||||
this.btnNormR.Location = new System.Drawing.Point(6, 201);
|
||||
this.btnNormR.Name = "btnNormR";
|
||||
this.btnNormR.Size = new System.Drawing.Size(132, 23);
|
||||
this.btnNormR.TabIndex = 3;
|
||||
this.btnNormR.Text = "Normalize filter";
|
||||
this.btnNormR.UseVisualStyleBackColor = true;
|
||||
this.btnNormR.Click += new System.EventHandler(this.btnNorm_Click);
|
||||
//
|
||||
// tabPage3
|
||||
//
|
||||
this.tabPage3.Controls.Add(this.gbG);
|
||||
this.tabPage3.Location = new System.Drawing.Point(4, 22);
|
||||
this.tabPage3.Name = "tabPage3";
|
||||
this.tabPage3.Size = new System.Drawing.Size(389, 288);
|
||||
this.tabPage3.TabIndex = 2;
|
||||
this.tabPage3.Text = "Green filter";
|
||||
this.tabPage3.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// gbG
|
||||
//
|
||||
this.gbG.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.gbG.Controls.Add(this.txtGCode);
|
||||
this.gbG.Controls.Add(this.label9);
|
||||
this.gbG.Controls.Add(this.lblAmpG);
|
||||
this.gbG.Controls.Add(this.label7);
|
||||
this.gbG.Controls.Add(this.btnNormG);
|
||||
this.gbG.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.gbG.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(192)))), ((int)(((byte)(0)))));
|
||||
this.gbG.Location = new System.Drawing.Point(6, 6);
|
||||
this.gbG.Name = "gbG";
|
||||
this.gbG.Size = new System.Drawing.Size(372, 279);
|
||||
this.gbG.TabIndex = 4;
|
||||
this.gbG.TabStop = false;
|
||||
this.gbG.Text = "Green filter";
|
||||
//
|
||||
// txtGCode
|
||||
//
|
||||
this.txtGCode.Location = new System.Drawing.Point(83, 240);
|
||||
this.txtGCode.Name = "txtGCode";
|
||||
this.txtGCode.Size = new System.Drawing.Size(283, 20);
|
||||
this.txtGCode.TabIndex = 7;
|
||||
this.txtGCode.Leave += new System.EventHandler(this.txtCode_Leave);
|
||||
//
|
||||
// label9
|
||||
//
|
||||
this.label9.AutoSize = true;
|
||||
this.label9.Location = new System.Drawing.Point(6, 243);
|
||||
this.label9.Name = "label9";
|
||||
this.label9.Size = new System.Drawing.Size(71, 13);
|
||||
this.label9.TabIndex = 6;
|
||||
this.label9.Text = "Filter code:";
|
||||
//
|
||||
// lblAmpG
|
||||
//
|
||||
this.lblAmpG.AutoSize = true;
|
||||
this.lblAmpG.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.lblAmpG.Location = new System.Drawing.Point(247, 206);
|
||||
this.lblAmpG.Name = "lblAmpG";
|
||||
this.lblAmpG.Size = new System.Drawing.Size(16, 15);
|
||||
this.lblAmpG.TabIndex = 4;
|
||||
this.lblAmpG.Text = "1";
|
||||
//
|
||||
// label7
|
||||
//
|
||||
this.label7.AutoSize = true;
|
||||
this.label7.Location = new System.Drawing.Point(144, 206);
|
||||
this.label7.Name = "label7";
|
||||
this.label7.Size = new System.Drawing.Size(97, 13);
|
||||
this.label7.TabIndex = 4;
|
||||
this.label7.Text = "Filter amplitude:";
|
||||
//
|
||||
// btnNormG
|
||||
//
|
||||
this.btnNormG.Location = new System.Drawing.Point(6, 201);
|
||||
this.btnNormG.Name = "btnNormG";
|
||||
this.btnNormG.Size = new System.Drawing.Size(132, 23);
|
||||
this.btnNormG.TabIndex = 3;
|
||||
this.btnNormG.Text = "Normalize filter";
|
||||
this.btnNormG.UseVisualStyleBackColor = true;
|
||||
this.btnNormG.Click += new System.EventHandler(this.btnNorm_Click);
|
||||
//
|
||||
// tabPage2
|
||||
//
|
||||
this.tabPage2.Controls.Add(this.gbB);
|
||||
this.tabPage2.Location = new System.Drawing.Point(4, 22);
|
||||
this.tabPage2.Name = "tabPage2";
|
||||
this.tabPage2.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.tabPage2.Size = new System.Drawing.Size(389, 288);
|
||||
this.tabPage2.TabIndex = 1;
|
||||
this.tabPage2.Text = "Blue filter";
|
||||
this.tabPage2.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// gbB
|
||||
//
|
||||
this.gbB.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.gbB.Controls.Add(this.txtBCode);
|
||||
this.gbB.Controls.Add(this.label10);
|
||||
this.gbB.Controls.Add(this.lblAmpB);
|
||||
this.gbB.Controls.Add(this.label5);
|
||||
this.gbB.Controls.Add(this.btnNormB);
|
||||
this.gbB.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.gbB.ForeColor = System.Drawing.Color.Blue;
|
||||
this.gbB.Location = new System.Drawing.Point(6, 6);
|
||||
this.gbB.Name = "gbB";
|
||||
this.gbB.Size = new System.Drawing.Size(377, 276);
|
||||
this.gbB.TabIndex = 3;
|
||||
this.gbB.TabStop = false;
|
||||
this.gbB.Text = "Blue filter";
|
||||
//
|
||||
// txtBCode
|
||||
//
|
||||
this.txtBCode.Location = new System.Drawing.Point(83, 240);
|
||||
this.txtBCode.Name = "txtBCode";
|
||||
this.txtBCode.Size = new System.Drawing.Size(283, 20);
|
||||
this.txtBCode.TabIndex = 7;
|
||||
//
|
||||
// label10
|
||||
//
|
||||
this.label10.AutoSize = true;
|
||||
this.label10.Location = new System.Drawing.Point(6, 243);
|
||||
this.label10.Name = "label10";
|
||||
this.label10.Size = new System.Drawing.Size(71, 13);
|
||||
this.label10.TabIndex = 6;
|
||||
this.label10.Text = "Filter code:";
|
||||
//
|
||||
// lblAmpB
|
||||
//
|
||||
this.lblAmpB.AutoSize = true;
|
||||
this.lblAmpB.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.lblAmpB.Location = new System.Drawing.Point(247, 206);
|
||||
this.lblAmpB.Name = "lblAmpB";
|
||||
this.lblAmpB.Size = new System.Drawing.Size(16, 15);
|
||||
this.lblAmpB.TabIndex = 4;
|
||||
this.lblAmpB.Text = "1";
|
||||
//
|
||||
// label5
|
||||
//
|
||||
this.label5.AutoSize = true;
|
||||
this.label5.Location = new System.Drawing.Point(144, 206);
|
||||
this.label5.Name = "label5";
|
||||
this.label5.Size = new System.Drawing.Size(97, 13);
|
||||
this.label5.TabIndex = 4;
|
||||
this.label5.Text = "Filter amplitude:";
|
||||
//
|
||||
// btnNormB
|
||||
//
|
||||
this.btnNormB.Location = new System.Drawing.Point(6, 201);
|
||||
this.btnNormB.Name = "btnNormB";
|
||||
this.btnNormB.Size = new System.Drawing.Size(132, 23);
|
||||
this.btnNormB.TabIndex = 3;
|
||||
this.btnNormB.Text = "Normalize filter";
|
||||
this.btnNormB.UseVisualStyleBackColor = true;
|
||||
this.btnNormB.Click += new System.EventHandler(this.btnNorm_Click);
|
||||
//
|
||||
// btnCopy
|
||||
//
|
||||
this.btnCopy.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||
this.btnCopy.Location = new System.Drawing.Point(12, 449);
|
||||
this.btnCopy.Name = "btnCopy";
|
||||
this.btnCopy.Size = new System.Drawing.Size(203, 40);
|
||||
this.btnCopy.TabIndex = 3;
|
||||
this.btnCopy.Text = "Copy red filter to green and blue filters";
|
||||
this.btnCopy.UseVisualStyleBackColor = true;
|
||||
this.btnCopy.Click += new System.EventHandler(this.btnCopy_Click);
|
||||
//
|
||||
// btnClear
|
||||
//
|
||||
this.btnClear.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||
this.btnClear.Location = new System.Drawing.Point(221, 449);
|
||||
this.btnClear.Name = "btnClear";
|
||||
this.btnClear.Size = new System.Drawing.Size(188, 40);
|
||||
this.btnClear.TabIndex = 3;
|
||||
this.btnClear.Text = "Clear all";
|
||||
this.btnClear.UseVisualStyleBackColor = true;
|
||||
this.btnClear.Click += new System.EventHandler(this.btnClear_Click);
|
||||
//
|
||||
// frmCfgFilter
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(421, 492);
|
||||
this.Controls.Add(this.btnClear);
|
||||
this.Controls.Add(this.btnCopy);
|
||||
this.Controls.Add(this.tabCtrl);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.Name = "frmCfgFilter";
|
||||
this.Text = "Filter Configuration";
|
||||
this.Load += new System.EventHandler(this.frmCfgFilter_Load);
|
||||
this.tabCtrl.ResumeLayout(false);
|
||||
this.tabPage1.ResumeLayout(false);
|
||||
this.gbR.ResumeLayout(false);
|
||||
this.gbR.PerformLayout();
|
||||
this.tabPage3.ResumeLayout(false);
|
||||
this.gbG.ResumeLayout(false);
|
||||
this.gbG.PerformLayout();
|
||||
this.tabPage2.ResumeLayout(false);
|
||||
this.gbB.ResumeLayout(false);
|
||||
this.gbB.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.TabControl tabCtrl;
|
||||
private System.Windows.Forms.TabPage tabPage1;
|
||||
private System.Windows.Forms.GroupBox gbR;
|
||||
private System.Windows.Forms.Label lblAmpR;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.Button btnNormR;
|
||||
private System.Windows.Forms.TabPage tabPage2;
|
||||
private System.Windows.Forms.GroupBox gbB;
|
||||
private System.Windows.Forms.Label lblAmpB;
|
||||
private System.Windows.Forms.Label label5;
|
||||
private System.Windows.Forms.Button btnNormB;
|
||||
private System.Windows.Forms.TabPage tabPage3;
|
||||
private System.Windows.Forms.GroupBox gbG;
|
||||
private System.Windows.Forms.Label lblAmpG;
|
||||
private System.Windows.Forms.Label label7;
|
||||
private System.Windows.Forms.Button btnNormG;
|
||||
private System.Windows.Forms.Button btnCopy;
|
||||
private System.Windows.Forms.Button btnClear;
|
||||
private System.Windows.Forms.TextBox txtRCode;
|
||||
private System.Windows.Forms.Label label8;
|
||||
private System.Windows.Forms.TextBox txtGCode;
|
||||
private System.Windows.Forms.Label label9;
|
||||
private System.Windows.Forms.TextBox txtBCode;
|
||||
private System.Windows.Forms.Label label10;
|
||||
}
|
||||
}
|
261
OpenCLFilter/frmCfgFilter.cs
Normal file
261
OpenCLFilter/frmCfgFilter.cs
Normal file
@ -0,0 +1,261 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace OpenCLFilter
|
||||
{
|
||||
public partial class frmCfgFilter : Form
|
||||
{
|
||||
public frmCfgFilter()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
int FilterSize = 7;
|
||||
TextBox[] txtR, txtG, txtB;
|
||||
|
||||
/// <summary>Returns red, green and blue filters. </summary>
|
||||
public float[] GetFilters()
|
||||
{
|
||||
float[] Filters = new float[3 * FilterSize * FilterSize];
|
||||
|
||||
for (int i = 0; i < FilterSize; i++)
|
||||
{
|
||||
for (int j = 0; j < FilterSize; j++)
|
||||
{
|
||||
float r, g, b;
|
||||
float.TryParse(txtR[i * FilterSize + j].Text, out r);
|
||||
float.TryParse(txtG[i * FilterSize + j].Text, out g);
|
||||
float.TryParse(txtB[i * FilterSize + j].Text, out b);
|
||||
|
||||
Filters[3*(i * FilterSize + j)] = r; //red component
|
||||
Filters[3*(i * FilterSize + j)+1] = g; //green
|
||||
Filters[3*(i * FilterSize + j)+2] = b; //blue
|
||||
}
|
||||
}
|
||||
|
||||
return Filters;
|
||||
}
|
||||
|
||||
#region Textboxes management
|
||||
private void frmCfgFilter_Load(object sender, EventArgs e)
|
||||
{
|
||||
txtR = new TextBox[FilterSize * FilterSize];
|
||||
txtG = new TextBox[FilterSize * FilterSize];
|
||||
txtB = new TextBox[FilterSize * FilterSize];
|
||||
|
||||
float[] gaussian = new float[]
|
||||
{
|
||||
0,0, 0, 0, 0,0,0,
|
||||
0,2, 4, 5, 4,2,0,
|
||||
0,4, 9,12, 9,4,0,
|
||||
0,5,12,15,12,5,0,
|
||||
0,4, 9,12, 9,4,0,
|
||||
0,2, 4, 5, 4,2,0,
|
||||
0,0, 0, 0, 0,0,0
|
||||
};
|
||||
for (int i = 0; i < gaussian.Length; i++) gaussian[i] /= 159;
|
||||
|
||||
for (int i = 0; i < FilterSize; i++)
|
||||
{
|
||||
for (int j = 0; j < FilterSize; j++)
|
||||
{
|
||||
txtR[i * FilterSize + j] = new TextBox();
|
||||
txtR[i * FilterSize + j].Width = 45; txtR[i * FilterSize + j].Top = 19 + 26 * i;
|
||||
txtR[i * FilterSize + j].Left = 6 + 50 * j;
|
||||
txtR[i * FilterSize + j].Text = gaussian[i * FilterSize + j].ToString();
|
||||
txtR[i * FilterSize + j].Font = new Font("Arial", 9, FontStyle.Regular);
|
||||
txtR[i * FilterSize + j].Leave += new EventHandler(frmCfgFilter_Leave);
|
||||
gbR.Controls.Add(txtR[i * FilterSize + j]);
|
||||
|
||||
txtG[i * FilterSize + j] = new TextBox();
|
||||
txtG[i * FilterSize + j].Width = 45; txtG[i * FilterSize + j].Top = 19 + 26 * i;
|
||||
txtG[i * FilterSize + j].Left = 6 + 50 * j;
|
||||
txtG[i * FilterSize + j].Text = gaussian[i * FilterSize + j].ToString();
|
||||
txtG[i * FilterSize + j].Font = new Font("Arial", 9, FontStyle.Regular);
|
||||
txtG[i * FilterSize + j].Leave += new EventHandler(frmCfgFilter_Leave);
|
||||
gbG.Controls.Add(txtG[i * FilterSize + j]);
|
||||
|
||||
txtB[i * FilterSize + j] = new TextBox();
|
||||
txtB[i * FilterSize + j].Width = 45; txtB[i * FilterSize + j].Top = 19 + 26 * i;
|
||||
txtB[i * FilterSize + j].Left = 6 + 50 * j;
|
||||
txtB[i * FilterSize + j].Text = gaussian[i * FilterSize + j].ToString();
|
||||
txtB[i * FilterSize + j].Font = new Font("Arial", 9, FontStyle.Regular);
|
||||
txtB[i * FilterSize + j].Leave += new EventHandler(frmCfgFilter_Leave);
|
||||
gbB.Controls.Add(txtB[i * FilterSize + j]);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
WriteCodes();
|
||||
}
|
||||
|
||||
void frmCfgFilter_Leave(object sender, EventArgs e)
|
||||
{
|
||||
TextBox t = (TextBox)sender;
|
||||
float x;
|
||||
float.TryParse(t.Text, out x);
|
||||
t.Text = x.ToString();
|
||||
WriteCodes();
|
||||
}
|
||||
|
||||
/// <summary>Writes filter codes to textbox to make them easier to retrieve</summary>
|
||||
void WriteCodes()
|
||||
{
|
||||
string sR = "", sG = "", sB = "";
|
||||
for (int i = 0; i < FilterSize; i++)
|
||||
{
|
||||
for (int j = 0; j < FilterSize; j++)
|
||||
{
|
||||
sR += txtR[i * FilterSize + j].Text;
|
||||
sG += txtG[i * FilterSize + j].Text;
|
||||
sB += txtB[i * FilterSize + j].Text;
|
||||
if (j != FilterSize - 1)
|
||||
{
|
||||
sR += " ";
|
||||
sG += " ";
|
||||
sB += " ";
|
||||
}
|
||||
}
|
||||
if (i != FilterSize - 1)
|
||||
{
|
||||
sR += ";";
|
||||
sG += ";";
|
||||
sB += ";";
|
||||
}
|
||||
}
|
||||
txtRCode.Text = sR;
|
||||
txtGCode.Text = sG;
|
||||
txtBCode.Text = sB;
|
||||
|
||||
CalcMagnitudes();
|
||||
}
|
||||
|
||||
/// <summary>Reads filter codes from textbox</summary>
|
||||
void ReadCodes()
|
||||
{
|
||||
string[] sR = txtRCode.Text.Split(';');
|
||||
string[] sG = txtRCode.Text.Split(';');
|
||||
string[] sB = txtRCode.Text.Split(';');
|
||||
if (sR.Length != FilterSize && sG.Length != FilterSize || sB.Length != FilterSize)
|
||||
{
|
||||
MessageBox.Show("Filter should have "+FilterSize.ToString() +" rows");
|
||||
WriteCodes();
|
||||
return;
|
||||
}
|
||||
|
||||
//Check columns
|
||||
for (int i = 0; i < FilterSize; i++)
|
||||
{
|
||||
string[] sR2 = sR[i].Split();
|
||||
string[] sG2 = sG[i].Split();
|
||||
string[] sB2 = sB[i].Split();
|
||||
if (sR2.Length != FilterSize && sG2.Length != FilterSize || sB2.Length != FilterSize)
|
||||
{
|
||||
MessageBox.Show("Filter should have " + FilterSize.ToString() + " columns in each row");
|
||||
WriteCodes();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
//Parse filter
|
||||
for (int i = 0; i < FilterSize; i++)
|
||||
{
|
||||
string[] sR2 = sR[i].Split();
|
||||
string[] sG2 = sR[i].Split();
|
||||
string[] sB2 = sR[i].Split();
|
||||
for (int j = 0; j < FilterSize; j++)
|
||||
{
|
||||
float r, g, b;
|
||||
float.TryParse(sR2[j], out r);
|
||||
float.TryParse(sG2[j], out g);
|
||||
float.TryParse(sB2[j], out b);
|
||||
txtR[i * FilterSize + j].Text = r.ToString();
|
||||
txtG[i * FilterSize + j].Text = g.ToString();
|
||||
txtB[i * FilterSize + j].Text = b.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
CalcMagnitudes();
|
||||
}
|
||||
|
||||
/// <summary>Returns magnitudes of the filters</summary>
|
||||
private float[] CalcMagnitudes()
|
||||
{
|
||||
float[] resp = new float[3];
|
||||
|
||||
for (int i = 0; i < FilterSize; i++)
|
||||
{
|
||||
for (int j = 0; j < FilterSize; j++)
|
||||
{
|
||||
float r, g, b;
|
||||
float.TryParse(txtR[i * FilterSize + j].Text, out r);
|
||||
float.TryParse(txtG[i * FilterSize + j].Text, out g);
|
||||
float.TryParse(txtB[i * FilterSize + j].Text, out b);
|
||||
|
||||
resp[0] += r; resp[1] += g; resp[2] += b;
|
||||
}
|
||||
}
|
||||
|
||||
lblAmpR.Text = resp[0].ToString();
|
||||
lblAmpG.Text = resp[1].ToString();
|
||||
lblAmpB.Text = resp[2].ToString();
|
||||
|
||||
return resp;
|
||||
}
|
||||
|
||||
private void txtCode_Leave(object sender, EventArgs e)
|
||||
{
|
||||
ReadCodes();
|
||||
}
|
||||
|
||||
private void btnCopy_Click(object sender, EventArgs e)
|
||||
{
|
||||
txtGCode.Text = txtRCode.Text;
|
||||
txtBCode.Text = txtRCode.Text;
|
||||
ReadCodes();
|
||||
}
|
||||
|
||||
private void btnClear_Click(object sender, EventArgs e)
|
||||
{
|
||||
string s = "0 0 0 0 0 0 0;0 0 0 0 0 0 0;0 0 0 0 0 0 0;0 0 0 1 0 0 0;0 0 0 0 0 0 0;0 0 0 0 0 0 0;0 0 0 0 0 0 0";
|
||||
txtRCode.Text = s;
|
||||
txtGCode.Text = txtRCode.Text;
|
||||
txtBCode.Text = txtRCode.Text;
|
||||
ReadCodes();
|
||||
}
|
||||
|
||||
private void btnNorm_Click(object sender, EventArgs e)
|
||||
{
|
||||
Button btn = (Button)sender;
|
||||
|
||||
float[] Mags = CalcMagnitudes();
|
||||
Mags[0] = 1 / Mags[0];
|
||||
Mags[1] = 1 / Mags[1];
|
||||
Mags[2] = 1 / Mags[2];
|
||||
for (int i = 0; i < FilterSize; i++)
|
||||
{
|
||||
for (int j = 0; j < FilterSize; j++)
|
||||
{
|
||||
float r, g, b;
|
||||
float.TryParse(txtR[i * FilterSize + j].Text, out r);
|
||||
float.TryParse(txtG[i * FilterSize + j].Text, out g);
|
||||
float.TryParse(txtB[i * FilterSize + j].Text, out b);
|
||||
|
||||
if (btn.Name == "btnNormR") txtR[i * FilterSize + j].Text = (r * Mags[0]).ToString();
|
||||
if (btn.Name == "btnNormG") txtG[i * FilterSize + j].Text = (g * Mags[1]).ToString();
|
||||
if (btn.Name == "btnNormB") txtB[i * FilterSize + j].Text = (b * Mags[2]).ToString();
|
||||
}
|
||||
}
|
||||
CalcMagnitudes();
|
||||
WriteCodes();
|
||||
}
|
||||
#endregion
|
||||
|
||||
}
|
||||
}
|
295
OpenCLFilter/frmCfgFilter.resx
Normal file
295
OpenCLFilter/frmCfgFilter.resx
Normal file
@ -0,0 +1,295 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="label1.Text" xml:space="preserve">
|
||||
<value>CMSoft image filtering case study (www.cmsoft.com.br)
|
||||
|
||||
This implementation intends to create an image filtering application which is compatible with most GPUs.
|
||||
Currently, not many GPUs and drivers support OpenCL images or other resources that would make the code faster.
|
||||
|
||||
by Douglas Andrade (douglas@cmsoft.com.br)</value>
|
||||
</data>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAABAAEAMDAAAAEAIACoJQAAFgAAACgAAAAwAAAAYAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAD8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8
|
||||
/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/39/f/6Ojo/9fX1//Q0ND/2dnZ/+rq6v/39/f/+/v7//z8
|
||||
/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8
|
||||
/P/8/Pz//Pz8//z8/P/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7
|
||||
+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//r6+v/s6+v/0tHR/7++vv+ysrH/tLSz/8nJ
|
||||
yf/k5OT/8/Pz//n5+f/6+vr/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7
|
||||
+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/i4uH/y8rK/7m4
|
||||
uP+qqqn/nJyb/6mpqf/Jycn/4eHh//Hx8f/4+Pj/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/7+/v/+/v7//v7+//7+/v/+/v7//v7
|
||||
+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//n5
|
||||
+f/e3t3/zs3M/83My/++vbz/nJua/5qZmf+0tLT/zMzM/+Li4v/y8vL/+fn5//r6+v/7+/v/+/v7//v7
|
||||
+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//T09P/X19b/zMrK/8/OzP/Av73/nZya/5eWlv+rq6v/vLy8/8/Pz//k5OT/8vLy//j4
|
||||
+P/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7
|
||||
+//7+/v/+/v7//v7+//7+/v/+/v7/+/v7//R0ND/yMbF/9LRz//BwL7/nJuZ/5qZmP+xsbH/vb29/8jI
|
||||
yP/Y2Nj/5+fn//Hx8f/29vb/+Pj4//r6+v/6+vr/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7
|
||||
+//7+/v/+/v7//v7+//5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5/+fn5//Ix8f/xMLB/9PR0P/Av73/m5mX/5yb
|
||||
mv+5ubn/yMjI/8rKyv/S0tL/29vb/+Tk5P/r6+v/8PDw//T09P/39/f/+Pj4//n5+f/5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7
|
||||
+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7/+Li4v/CwL//wL68/9XT
|
||||
0v/BwL7/mZiV/52cm//CwsH/1tbW/9fX1//Y2Nj/3Nzc/+Dg4P/k5OT/6enp/+7u7v/y8vL/9vb2//j4
|
||||
+P/5+fn/+vr6//r6+v/7+/v/+/v7//v7+//7+/v/+/v7//v7+//5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5/9vb
|
||||
2v+4trX/uri2/9TT0f/Av7z/lZSR/5ybmf/Gxsb/4uLi/+Pj4//j4+P/4+Pj/+Tk5P/l5eX/5+fn/+rq
|
||||
6v/t7e3/8fHx//T09P/29vb/9/f3//j4+P/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/5+fn/9/f3/9TT0/+xr67/trSy/9TS0P/Avrz/lJKP/5qZl//JyMj/6+vr/+7u7v/u7u7/7u7u/+7u
|
||||
7v/u7u7/7u7u/+/v7//w8PD/8fHx//Pz8//19fX/9vb2//f39//4+Pj/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/8vLy/8zMy/+pp6X/tLGv/9TS0P+/vrv/k5GO/5iWlP/IyMf/7u7u//X1
|
||||
9f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9fX1//b29v/29vb/9/f3//j4+P/4+Pj/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/7u7u/8XFxP+lo6H/tbKw/9TS0P/Avrz/lpSR/5eV
|
||||
k//GxcT/7Ozs//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6
|
||||
+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/6enp/728vP+fnJr/tLGv/9TT
|
||||
0f/Avrz/lpSR/5SSkP/BwMD/6urq//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6
|
||||
+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/5OTk/7a1
|
||||
tf+bmJb/tLKv/9TS0P/Av7z/mJaU/5OSkP+9vbz/5ubm//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/7+/v/+/v7//v7
|
||||
+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7
|
||||
+//7+/v/4eHh/6+urf+Vk5H/tLGv/9XU0v/BwL3/mZeU/5KQjv+6urn/5OTk//v7+//7+/v/+/v7//v7
|
||||
+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7
|
||||
+//5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/29vb/6mop/+SkI3/tLKv/9XU0v/Cwb//nJqY/5KQjv+4t7b/4eHh//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7
|
||||
+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/2dnY/6Ojof+PjYr/t7Sy/9rZ1//Kycf/oqCe/5OR
|
||||
j/+2tbX/4eHh//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7
|
||||
+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/1NTU/5+enP+IhYL/pqOg/8XD
|
||||
wP+7ubf/npuY/5CNiv+ysK//3t3d//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/7+/v/+/v7//v7+//7+/v/+/v7//v7
|
||||
+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//39/f/z87N/5iW
|
||||
lP96d3T/i4eE/56bmP+WlJD/h4N//4J+ev+ppqP/2djX//n5+f/7+/v/+/v7//v7+//7+/v/+/v7//v7
|
||||
+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/s7Ov/wcC+/5OQjf95dnL/fXp2/4J+ev98eHT/cm5p/3hzbf+emZT/y8jG//Dw8P/5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7
|
||||
+//7+/v/+/v7//b29v/a2df/tLKv/4+MiP+IhYH/jYmG/46Khv9+e3f/b2tm/3Vwav+OiIL/vLiz/+Hf
|
||||
3v/4+Pj/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7
|
||||
+//7+/v/+/v7//v7+//5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/+Pj4/+jn5v/GxML/pKGe/5ORjv+XlJH/n5yZ/56bl/+LiIT/dXJt/3Ju
|
||||
aP+CfXb/pJ+Z/8vIxP/t7Ov/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7
|
||||
+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/8/Pz/9bV0/+4trP/n5yZ/5yZl/+joJ7/rqun/6uo
|
||||
pP+Vko7/fHl0/3BsaP98d3D/k42F/7q1r//a2db/9vb2//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7
|
||||
+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/39/f/4+Lh/8XDwf+qp6T/op+c/6Gg
|
||||
nv+tq6n/uLWy/7KvrP+cmZX/gX56/29saP9zb2n/h4F5/6KclP/Fwb3/5+bl//j4+P/5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/u7u3/0c/O/7i1
|
||||
s/+opaP/pqSi/6qopv+4trT/wL68/7i2sv+ioJz/iIWB/3Fva/9tamT/f3py/5ONhP+yrqf/0c/M//Hx
|
||||
8P/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//X0
|
||||
9P/c29r/w8G//66rqf+rqaj/qaim/7OysP/CwL//ycfE/768uP+ppqL/jouH/3Rybv9pZmL/dHBq/4qE
|
||||
fP+emJD/vbm0/9/e3P/29vb/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5/+np6P/OzMr/uLaz/7CurP+vr63/sK+u/7+9vP/Ny8r/0c/N/8XDwP+xr6v/l5SR/3x6
|
||||
dv9raWX/bmtm/4R/eP+Wj4f/rKeg/8nGw//t7Oz/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6
|
||||
+v/6+vr/+vr6//r6+v/6+vr/8/Ly/9fW1P/Bv73/s7Gv/7Szsv+xsbD/uLi3/8nIx//X1dT/2NbU/8zK
|
||||
x/+5trP/npyY/4KAff9ua2j/aGZh/3l1b/+QiYH/nZeO/7ezrv/Y1tT/9fX1//r6+v/6+vr/+vr6//r6
|
||||
+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6
|
||||
+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/49/f/4+Lh/8nHxf+3tLL/trSz/7a1tP+1tbX/wcHB/9PS
|
||||
0v/f3tz/3NvZ/9HQzf/Avrv/p6Si/4uIhv90cW7/aWdj/3Juaf+KhHz/mZKJ/6ehmf/Cvrv/5+bl//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/7+/v/+/v7//v7
|
||||
+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//v7u7/0M/N/7u5tv+zsq//uLe2/7a2
|
||||
tf+7urr/ysrK/93d3P/m5uX/4eDf/9fW1P/HxsP/r62q/5KQjf95d3T/amhk/2poY/9/enT/lo+G/56W
|
||||
jv+xrKb/z83L//Ly8v/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7
|
||||
+//6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//X19f/a2dj/wb68/7Cu
|
||||
q/+0srH/tbW0/7e3t//AwMD/09PT/+Tl5P/q6un/5eTi/9zb2f/NzMr/t7Wz/5uZlv+Afnz/bmxp/2ln
|
||||
Y/91cmz/j4mB/52WjP+hm5P/uray/9/e3P/39/f/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+vr6/+jn
|
||||
5//GxML/sK2q/6yqp/+ysbD/s7Oy/7m5uf/Hx8f/3Nzc/+3t7f/v7+7/6eno/+Hg3//U09H/v767/6Oh
|
||||
n/+HhYP/cnBu/2lnY/9tamb/hH94/5qTi/+el43/qKOd/8bDwP/u7e3/+/v7//v7+//7+/v/+/v7//v7
|
||||
+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6
|
||||
+v/6+vr/8vHx/8/OzP+zsK7/o6Gd/6qopv+srKr/sbGx/7q6uv/Nzc3/5OTk//Ly8v/x8fH/7Ovr/+Xk
|
||||
4//a2Nf/x8XD/6yqqP+Pjoz/eXd1/2xqZ/9raGT/enZx/5SNhv+hmZD/nZaO/7Ouqv/W1NP/9vb1//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/7+/v/+/v7//v7+//7+/v/+/v7//v7
|
||||
+//7+/v/+/v7//v7+//4+Pj/3t3c/7q3tf+fnJj/npuY/6SioP+op6b/sLCv/7y9vP/U1NT/7Ozs//f3
|
||||
9//19fT/8PDv/+rp6P/g393/zs3L/7SysP+XlZP/fn16/25tav9pZ2T/cW5p/4mEff+fmI//oJiP/6Kc
|
||||
lf++urf/6Ofm//r6+v/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//6+vr/+vr6//r6
|
||||
+v/6+vr/+vr6//r6+v/6+vr/+vr6//n5+f/r6+r/w8G+/6Kem/+TkIz/mZeU/5ybmf+ko6L/rq6t/7/A
|
||||
v//Z2tn/8PDw//j4+P/29vb/8vHx/+zs6//j4+H/1NPR/7y6uf+fnZz/hYSC/3RycP9ramf/bWpm/396
|
||||
df+Ykor/pZ2U/5uUi/+rpqH/zcvJ//Ly8v/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//X19f/T0tD/qqik/42Khf+Niob/kY+M/5eW
|
||||
lP+hoJ//ra2s/8PEw//f4N//9PT0//r6+v/4+Pj/9fX1//Dw7//p6ef/29rZ/8TCwf+npaT/jIqI/3h3
|
||||
df9ubGr/bGlm/3Zybf+PiYL/pJ2U/6Oakf+clo7/trOv/+Dg3v/5+fn/+/v7//v7+//7+/v/+/v7//v7
|
||||
+//7+/v/+/v7//v7+//5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+Pj4/+Pi4f+1s7D/j4uG/4F+
|
||||
ef+Gg3//ioiE/5ORj/+fnpz/sK+u/8rKyv/l5eT/9PT0//j4+P/4+Pj/9vb2//Ly8f/r6+r/397d/8nI
|
||||
x/+sq6r/kY+O/317ev9xb23/bWpo/3Btaf+Ef3n/nJaN/6mhl/+ak4r/o56Y/8PBvv/u7u3/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/8fHw/8bF
|
||||
w/+ZlpL/e3dx/3p2cv98enb/g4F+/4+Niv+enJr/tLOy/9HQ0P/m5+b/7u7u//Dw8P/x8fH/8fHx/+/v
|
||||
7//r6+r/4uHg/9DPzv+4trb/n56d/4yKif9+fHv/dXRx/3Nwbf99eXT/lI+H/6mhl/+lnZL/l5GJ/66r
|
||||
pv/Y19b/9/f3//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/29vb/2NfV/6Win/96dnH/b2xm/3Nxbf94dnP/gYB9/42Miv+bmpn/sK+u/8XExP/Q0ND/0tLR/9DQ
|
||||
0P/S0tL/09PT/9TU1P/T09P/0NDP/8fHxv+6ubn/rKuq/5+enf+Uk5L/i4qI/4WEgv+FgoD/ko6J/5+Z
|
||||
kv+jnJP/kIqC/5WQi/+4trP/6Ojn//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//f39//m5eX/t7a1/4mGg/9wbWr/dnRx/359e/+Ih4X/kZGP/5iYl/+enZ3/pKOj/6mp
|
||||
qf+pqan/pKSk/6Ghof+hoaH/o6Oj/6Wlpf+oqKj/qqqq/6qqqv+oqKj/pKSk/6Cfn/+ampr/lZWU/5GR
|
||||
kP+Pjo3/kZCO/5aUkP+Wk47/iYWB/397d/+bmZb/xcTD/+vr6//29vb/+fn5//n5+f/5+fn/+fn5//n5
|
||||
+f/5+fn/+fn5//n5+f/4+Pj/8PDw/9ra2v+9vLz/oqGg/4yLif+Mi4n/lZST/52dnP+kpKT/qamp/6io
|
||||
p/+hoaH/mJiY/46Ojv+FhYX/fX19/3l5ef93d3f/eHh4/3t7e/+AgID/hYWF/4mJif+MjIz/jY2N/42N
|
||||
jf+MjIz/jIyM/46Ojv+QkJD/kJCQ/4+Pj/+OjYz/iYiG/358e/+Af37/mZmY/7e3t//V1dX/7u7u//j4
|
||||
+P/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/09PT/2NjY/7e3t/+oqKj/qqqq/7Kxsf+5ubn/u7u7/7y8
|
||||
vP+9vb3/urq6/7Kysv+kpKT/lJSU/4SEhP93d3f/bm5u/2lpaf9oaGj/aWlp/21tbf9ycnL/eHh4/35+
|
||||
fv+BgYH/goKC/4KCgv+BgYH/goKC/4aGhv+Li4v/kJCQ/5OTk/+Tk5P/kJCQ/4aGhv98fHz/eXl5/4OD
|
||||
g/+lpaX/0NDQ//Pz8//5+fn/+fn5//n5+f/6+vr/+vr6//r6+v/w8PD/ycnJ/6Wlpf+np6f/yMjI/9bW
|
||||
1v/U1NT/z8/P/8nJyf/ExMT/vr6+/7a2tv+pqan/mpqa/4yMjP+BgYH/enp6/3h4eP94eHj/e3t7/4CA
|
||||
gP+FhYX/ioqK/46Ojv+QkJD/kJCQ/4+Pj/+Ojo7/j4+P/5KSkv+Wlpb/mJiY/5iYmP+Wlpb/kpKS/4uL
|
||||
i/+AgID/cnJy/2ZmZv+BgYH/v7+//+3t7f/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/y8vL/0NDQ/7m5
|
||||
uf+4uLj/zs7O/9bW1v/W1tb/0dHR/8rKyv/FxcX/v7+//7i4uP+wsLD/pqam/52dnf+Wlpb/lJSU/5WV
|
||||
lf+ZmZn/n5+f/6enp/+tra3/srKy/7a2tv+3t7f/tbW1/7Kysv+urq7/rKys/6qqqv+oqKj/pKSk/5+f
|
||||
n/+YmJj/kJCQ/4eHh/+AgID/eXl5/3l5ef+YmJj/x8fH//Dw8P/5+fn/+fn5//n5+f/7+/v/+/v7//v7
|
||||
+//5+fn/7Ozs/9XV1f/Pz8//0NDQ/87Ozv/Jycn/xcXF/8DAwP+9vb3/urq6/7a2tv+ysrL/ra2t/6io
|
||||
qP+mpqb/pqam/6urq/+ysrL/vLy8/8fHx//R0dH/2dnZ/9/f3//g4OD/3Nzc/9XV1f/Ozs7/xsbG/76+
|
||||
vv+1tbX/qqqq/6CgoP+Xl5f/kpKS/5GRkf+VlZX/nZ2d/6ysrP/Gxsb/6Ojo//j4+P/7+/v/+/v7//v7
|
||||
+//5+fn/+fn5//n5+f/6+vr/+Pj4//Ly8v/n5+f/3d3d/9fX1//Q0ND/ysrK/8XFxf/BwcH/vb29/7q6
|
||||
uv+2trb/srKy/6+vr/+urq7/sLCw/7W1tf+8vLz/xsbG/9LS0v/d3d3/5ubm/+3t7f/u7u7/6enp/+Hh
|
||||
4f/Y2Nj/z8/P/8fHx/++vr7/tra2/7Gxsf+vr6//sbGx/7e3t//CwsL/z8/P/+Dg4P/w8PD/+Pj4//n5
|
||||
+f/5+fn/+fn5//n5+f/7+/v/+/v7//v7+//7+/v/+/v7//v7+//6+vr/9vb2/+7u7v/m5ub/4uLi/97e
|
||||
3v/a2tr/1tbW/9LS0v/Q0ND/zc3N/8vLy//Kysr/y8vL/8/Pz//U1NT/2tra/+Dg4P/n5+f/7Ozs/+/v
|
||||
7//v7+//7Ozs/+fn5//i4uL/3d3d/9nZ2f/V1dX/1NTU/9XV1f/Y2Nj/3Nzc/+Pj4//t7e3/9vb2//r6
|
||||
+v/7+/v/+/v7//v7+//7+/v/+/v7//v7+//8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8
|
||||
/P/8/Pz/+/v7//n5+f/29vb/8vLy//Dw8P/u7u7/7e3t/+zs7P/s7Oz/7Ozs/+3t7f/u7u7/8PDw//Ly
|
||||
8v/09PT/9fX1//b29v/19fX/9PT0//Pz8//x8fH/8PDw//Dw8P/w8PD/8vLy//X19f/5+fn/+/v7//z8
|
||||
/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P8AAAAAAADxBAAAAAAAAPEEAAAAAAAA
|
||||
8QQAAAAAAADxBAAAAAAAAPEEAAAAAAAA8QQAAAAAAADxBAAAAAAAAPEEAAAAAAAA8QQAAAAAAADxBAAA
|
||||
AAAAAPEEAAAAAAAA8QQAAAAAAADxBAAAAAAAAPEEAAAAAAAA8QQAAAAAAADxBAAAAAAAAPEEAAAAAAAA
|
||||
8QQAAAAAAADxBAAAAAAAAPEEAAAAAAAA8QQAAAAAAADxBAAAAAAAAPEEAAAAAAAA8QQAAAAAAADxBAAA
|
||||
AAAAAPEEAAAAAAAA8QQAAAAAAADxBAAAAAAAAPEEAAAAAAAA8QQAAAAAAADxBAAAAAAAAPEEAAAAAAAA
|
||||
8QQAAAAAAADxBAAAAAAAAPEEAAAAAAAA8QQAAAAAAADxBAAAAAAAAPEEAAAAAAAA8QQAAAAAAADxBAAA
|
||||
AAAAAPEEAAAAAAAA8QQAAAAAAADxBAAAAAAAAPEEAAAAAAAA8QQAAAAAAADxBAAAAAAAAPEEAAAAAAAA
|
||||
8QQ=
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
BIN
OpenCLTemplate.dll
Normal file
BIN
OpenCLTemplate.dll
Normal file
Binary file not shown.
1334
OpenCLTemplate.xml
Normal file
1334
OpenCLTemplate.xml
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user