using System;
using System.Drawing;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using CategoryTheory;
using DiagramUI;
using FormulaEditor;
using FormulaEditorUI;
using DataPerformer;
using DataPerformerUI;
using BitmapConsumer;
namespace ImageTransformations
{
/// <summary>
/// Summary description for FormColorTransformer.
/// </summary>
public class FormColorTransformer : System.Windows.Forms.Form, IUpdatableForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;
private static readonly string[] head = new string[]{"r ", "g ","b "};
private IObjectLabel label;
private System.Data.DataSet dataSetAliases;
private System.Windows.Forms.Label labelProt;
private System.Windows.Forms.PictureBox pictureBoxPrototype;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Panel panelComments;
private System.Windows.Forms.Panel panelBitmap;
private System.Windows.Forms.TabControl tabControlMain;
private System.Windows.Forms.TabPage tabPageBitmap;
private System.Windows.Forms.TabPage tabPageParameters;
private System.Windows.Forms.Panel panelFormula;
private System.Windows.Forms.DataGrid dataGridConstants;
private System.Data.DataTable dataTableConstants;
private System.Data.DataColumn dataColumnParameter;
private System.Data.DataColumn dataColumnValue;
private System.Windows.Forms.Button buttonAcceptForm;
private System.Windows.Forms.Button buttonAcceptPar;
private System.Windows.Forms.Button buttonRefresh;
private System.Windows.Forms.Panel panelBmp;
private System.Windows.Forms.Label labelX;
private System.Windows.Forms.Label labelY;
private System.Windows.Forms.Label labelR;
private System.Windows.Forms.Label labelG;
private System.Windows.Forms.Label labelB;
private ColorTransformer transformer;
public FormColorTransformer()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
//
// TODO: Add any constructor code after InitializeComponent call
//
}
public FormColorTransformer(IObjectLabel label)
{
InitializeComponent();
panelBmp.Left = 0;
panelBmp.Top = 0;
ResourceService.Resources.LoadControlResources(this);
this.label = label;
transformer = label.Object as ColorTransformer;
UpdateFormUI();
createFormulaControls();
fillConstantTable();
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(components != null)
{
components.Dispose();
}
}
//NamedComponent.RemoveForm(label);
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.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(FormColorTransformer));
this.dataSetAliases = new System.Data.DataSet();
this.dataTableConstants = new System.Data.DataTable();
this.dataColumnParameter = new System.Data.DataColumn();
this.dataColumnValue = new System.Data.DataColumn();
this.tabControlMain = new System.Windows.Forms.TabControl();
this.tabPageBitmap = new System.Windows.Forms.TabPage();
this.buttonRefresh = new System.Windows.Forms.Button();
this.labelProt = new System.Windows.Forms.Label();
this.pictureBoxPrototype = new System.Windows.Forms.PictureBox();
this.label1 = new System.Windows.Forms.Label();
this.panelComments = new System.Windows.Forms.Panel();
this.panelBitmap = new System.Windows.Forms.Panel();
this.panelBmp = new System.Windows.Forms.Panel();
this.tabPageParameters = new System.Windows.Forms.TabPage();
this.buttonAcceptPar = new System.Windows.Forms.Button();
this.buttonAcceptForm = new System.Windows.Forms.Button();
this.dataGridConstants = new System.Windows.Forms.DataGrid();
this.panelFormula = new System.Windows.Forms.Panel();
this.labelX = new System.Windows.Forms.Label();
this.labelY = new System.Windows.Forms.Label();
this.labelR = new System.Windows.Forms.Label();
this.labelG = new System.Windows.Forms.Label();
this.labelB = new System.Windows.Forms.Label();
((System.ComponentModel.ISupportInitialize)(this.dataSetAliases)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.dataTableConstants)).BeginInit();
this.tabControlMain.SuspendLayout();
this.tabPageBitmap.SuspendLayout();
this.panelBitmap.SuspendLayout();
this.tabPageParameters.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.dataGridConstants)).BeginInit();
this.SuspendLayout();
//
// dataSetAliases
//
this.dataSetAliases.DataSetName = "NewDataSet";
this.dataSetAliases.Locale = new System.Globalization.CultureInfo("ru-RU");
this.dataSetAliases.Tables.AddRange(new System.Data.DataTable[] {
this.dataTableConstants});
//
// dataTableConstants
//
this.dataTableConstants.Columns.AddRange(new System.Data.DataColumn[] {
this.dataColumnParameter,
this.dataColumnValue});
this.dataTableConstants.TableName = "TableConstants";
//
// dataColumnParameter
//
this.dataColumnParameter.ColumnName = "Parameter";
this.dataColumnParameter.ReadOnly = true;
//
// dataColumnValue
//
this.dataColumnValue.ColumnName = "Value";
this.dataColumnValue.DataType = typeof(System.Double);
//
// tabControlMain
//
this.tabControlMain.Controls.Add(this.tabPageBitmap);
this.tabControlMain.Controls.Add(this.tabPageParameters);
this.tabControlMain.Location = new System.Drawing.Point(48, 32);
this.tabControlMain.Name = "tabControlMain";
this.tabControlMain.SelectedIndex = 0;
this.tabControlMain.Size = new System.Drawing.Size(1024, 688);
this.tabControlMain.TabIndex = 0;
//
// tabPageBitmap
//
this.tabPageBitmap.Controls.Add(this.labelB);
this.tabPageBitmap.Controls.Add(this.labelG);
this.tabPageBitmap.Controls.Add(this.labelR);
this.tabPageBitmap.Controls.Add(this.labelY);
this.tabPageBitmap.Controls.Add(this.labelX);
this.tabPageBitmap.Controls.Add(this.buttonRefresh);
this.tabPageBitmap.Controls.Add(this.labelProt);
this.tabPageBitmap.Controls.Add(this.pictureBoxPrototype);
this.tabPageBitmap.Controls.Add(this.label1);
this.tabPageBitmap.Controls.Add(this.panelComments);
this.tabPageBitmap.Controls.Add(this.panelBitmap);
this.tabPageBitmap.Location = new System.Drawing.Point(4, 22);
this.tabPageBitmap.Name = "tabPageBitmap";
this.tabPageBitmap.Size = new System.Drawing.Size(1016, 662);
this.tabPageBitmap.TabIndex = 0;
this.tabPageBitmap.Text = "Bitmap";
//
// buttonRefresh
//
this.buttonRefresh.Location = new System.Drawing.Point(64, 104);
this.buttonRefresh.Name = "buttonRefresh";
this.buttonRefresh.TabIndex = 10;
this.buttonRefresh.Text = "Refresh";
this.buttonRefresh.Click += new System.EventHandler(this.buttonRefresh_Click);
//
// labelProt
//
this.labelProt.Location = new System.Drawing.Point(80, 47);
this.labelProt.Name = "labelProt";
this.labelProt.Size = new System.Drawing.Size(72, 23);
this.labelProt.TabIndex = 9;
//
// pictureBoxPrototype
//
this.pictureBoxPrototype.Location = new System.Drawing.Point(32, 47);
this.pictureBoxPrototype.Name = "pictureBoxPrototype";
this.pictureBoxPrototype.Size = new System.Drawing.Size(32, 32);
this.pictureBoxPrototype.TabIndex = 8;
this.pictureBoxPrototype.TabStop = false;
//
// label1
//
this.label1.Location = new System.Drawing.Point(56, 15);
this.label1.Name = "label1";
this.label1.TabIndex = 7;
this.label1.Text = "Prototype";
//
// panelComments
//
this.panelComments.BackColor = System.Drawing.SystemColors.ControlLightLight;
this.panelComments.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.panelComments.Location = new System.Drawing.Point(176, 7);
this.panelComments.Name = "panelComments";
this.panelComments.Size = new System.Drawing.Size(784, 112);
this.panelComments.TabIndex = 6;
//
// panelBitmap
//
this.panelBitmap.AutoScroll = true;
this.panelBitmap.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.panelBitmap.Controls.Add(this.panelBmp);
this.panelBitmap.Location = new System.Drawing.Point(72, 143);
this.panelBitmap.Name = "panelBitmap";
this.panelBitmap.Size = new System.Drawing.Size(824, 512);
this.panelBitmap.TabIndex = 5;
//
// panelBmp
//
this.panelBmp.Cursor = System.Windows.Forms.Cursors.Cross;
this.panelBmp.Location = new System.Drawing.Point(88, 32);
this.panelBmp.Name = "panelBmp";
this.panelBmp.TabIndex = 0;
this.panelBmp.Paint += new System.Windows.Forms.PaintEventHandler(this.panelBmp_Paint);
this.panelBmp.MouseMove += new System.Windows.Forms.MouseEventHandler(this.panelBmp_MouseMove);
//
// tabPageParameters
//
this.tabPageParameters.Controls.Add(this.buttonAcceptPar);
this.tabPageParameters.Controls.Add(this.buttonAcceptForm);
this.tabPageParameters.Controls.Add(this.dataGridConstants);
this.tabPageParameters.Controls.Add(this.panelFormula);
this.tabPageParameters.Location = new System.Drawing.Point(4, 22);
this.tabPageParameters.Name = "tabPageParameters";
this.tabPageParameters.Size = new System.Drawing.Size(1016, 662);
this.tabPageParameters.TabIndex = 1;
this.tabPageParameters.Text = "Parameters";
//
// buttonAcceptPar
//
this.buttonAcceptPar.Location = new System.Drawing.Point(736, 608);
this.buttonAcceptPar.Name = "buttonAcceptPar";
this.buttonAcceptPar.Size = new System.Drawing.Size(264, 23);
this.buttonAcceptPar.TabIndex = 14;
this.buttonAcceptPar.Text = "Accept input parameters";
this.buttonAcceptPar.Click += new System.EventHandler(this.buttonAcceptPar_Click);
//
// buttonAcceptForm
//
this.buttonAcceptForm.Location = new System.Drawing.Point(48, 608);
this.buttonAcceptForm.Name = "buttonAcceptForm";
this.buttonAcceptForm.Size = new System.Drawing.Size(216, 23);
this.buttonAcceptForm.TabIndex = 13;
this.buttonAcceptForm.Text = "Accept formulas";
this.buttonAcceptForm.Click += new System.EventHandler(this.buttonAcceptForm_Click);
//
// dataGridConstants
//
this.dataGridConstants.DataMember = "";
this.dataGridConstants.DataSource = this.dataTableConstants;
this.dataGridConstants.HeaderForeColor = System.Drawing.SystemColors.ControlText;
this.dataGridConstants.Location = new System.Drawing.Point(800, 376);
this.dataGridConstants.Name = "dataGridConstants";
this.dataGridConstants.Size = new System.Drawing.Size(208, 136);
this.dataGridConstants.TabIndex = 1;
//
// panelFormula
//
this.panelFormula.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.panelFormula.Location = new System.Drawing.Point(96, 40);
this.panelFormula.Name = "panelFormula";
this.panelFormula.Size = new System.Drawing.Size(688, 544);
this.panelFormula.TabIndex = 0;
//
// labelX
//
this.labelX.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(204)));
this.labelX.Location = new System.Drawing.Point(904, 216);
this.labelX.Name = "labelX";
this.labelX.TabIndex = 11;
this.labelX.Text = "X = ";
//
// labelY
//
this.labelY.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(204)));
this.labelY.Location = new System.Drawing.Point(904, 264);
this.labelY.Name = "labelY";
this.labelY.TabIndex = 12;
this.labelY.Text = "Y =";
//
// labelR
//
this.labelR.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(204)));
this.labelR.ForeColor = System.Drawing.Color.Crimson;
this.labelR.Location = new System.Drawing.Point(904, 312);
this.labelR.Name = "labelR";
this.labelR.TabIndex = 13;
this.labelR.Text = "R = ";
//
// labelG
//
this.labelG.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(204)));
this.labelG.ForeColor = System.Drawing.Color.Green;
this.labelG.Location = new System.Drawing.Point(904, 360);
this.labelG.Name = "labelG";
this.labelG.TabIndex = 14;
this.labelG.Text = "G = ";
//
// labelB
//
this.labelB.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(204)));
this.labelB.ForeColor = System.Drawing.Color.Navy;
this.labelB.Location = new System.Drawing.Point(904, 416);
this.labelB.Name = "labelB";
this.labelB.TabIndex = 15;
this.labelB.Text = "B =";
//
// FormColorTransformer
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(1088, 733);
this.Controls.Add(this.tabControlMain);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "FormColorTransformer";
this.Text = "FormColorTransformer";
((System.ComponentModel.ISupportInitialize)(this.dataSetAliases)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.dataTableConstants)).EndInit();
this.tabControlMain.ResumeLayout(false);
this.tabPageBitmap.ResumeLayout(false);
this.panelBitmap.ResumeLayout(false);
this.tabPageParameters.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.dataGridConstants)).EndInit();
this.ResumeLayout(false);
}
#endregion
#region IUpdatableForm Members
public void UpdateFormUI()
{
Text = label.RootName;//NamedComponent.GetText(label);
ICategoryObject p = transformer.Provider as ICategoryObject;
if (p == null)
{
return;
}
IObjectLabel lab = p.Object as IObjectLabel;
pictureBoxPrototype.Image = NamedComponent.GetImage(lab);
labelProt.Text = lab.RootName;//NamedComponent.GetText(lab);
}
#endregion
private void createFormulaControls()
{
int w = panelFormula.Width;
int y = 0;
string[] str = transformer.Formulas;
int n = str.Length;
for (int i = 0; i < n; i++)
{
PanelFormula p = new PanelFormula(head[i], this, panelFormula.Width, 200,
"rgbxyacdfhijklmnopqstuvwz", false, null, null);
p.Left = 0;
p.Top = y;
y += p.Height;
p.Formula = str[i];
panelFormula.Controls.Add(p);
}
}
private void refreshConstants()
{
Hashtable old = new Hashtable();
foreach (DataRow row in dataTableConstants.Rows)
{
string s = row[0] as string;
double a = (double) row[1];
old[s] = a;
}
dataTableConstants.Rows.Clear();
List<string> names = transformer.AliasNames;
foreach (string n in names)
{
double a = 0;
if (old.ContainsKey(n))
{
a = (double) old[n];
}
transformer[n] = a;
dataTableConstants.Rows.Add(new object[]{n, a});
}
}
private void fillConstantTable()
{
List<string> names = transformer.AliasNames;
foreach (string n in names)
{
double a = (double) transformer[n];
dataTableConstants.Rows.Add(new object[]{n, a});
}
}
private void buttonAcceptForm_Click(object sender, System.EventArgs e)
{
try
{
string[] form = new string[3];
int i = 0;
foreach (Control c in panelFormula.Controls)
{
if (!(c is PanelFormula))
{
continue;
}
PanelFormula p = c as PanelFormula;
form[i] = p.Formula;
++i;
}
transformer.Formulas = form;
refreshConstants();
}
catch (Exception ex)
{
DefaultForm.ShowError(this, ex);
}
}
private void buttonRefresh_Click(object sender, System.EventArgs e)
{
try
{
BitmapConsumerLink.Update(transformer);
Refresh();
}
catch (Exception ex)
{
ex = ex;
}
}
private void panelBmp_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
Bitmap bmp = transformer.Bitmap;
if (bmp == null)
{
return;
}
if ((panelBmp.Width != bmp.Width) | (panelBmp.Height != bmp.Height))
{
panelBmp.Width = bmp.Width;
panelBmp.Height = bmp.Height;
}
e.Graphics.DrawImage(bmp, 0, 0);
}
private void buttonAcceptPar_Click(object sender, System.EventArgs e)
{
foreach (DataRow row in dataTableConstants.Rows)
{
string s = (string) row[0];
double a = (double) row[1];
transformer[s] = a;
}
}
private void panelBmp_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
int x = e.X;
int y = e.Y;
Bitmap bmp = transformer.Bitmap;
if (bmp == null)
{
return;
}
if ((x >= bmp.Width) | (y >= bmp.Height))
{
return;
}
labelX.Text = "X = " + x;
labelY.Text = "Y = " + y;
Color c = bmp.GetPixel(x, y);
labelR.Text = "R = " + c.R;
labelG.Text = "G = " + c.G;
labelB.Text = "B = " + c.B;
}
}
}