├── LICENSE
├── .gitignore
├── picLas2.ico
├── Resources
├── inv.jpg
├── inv2.png
├── mar.jpg
├── Icon1.ico
├── flip_vertical.png
├── flip_horizontal.png
├── 1423670303_repeat.png
└── 1423670303_repeatR.png
├── 3dpBurnerGcode2.ico
├── bin
└── Release
│ └── 3dpBurner Image2Gcode.exe
├── Form2.cs
├── .gitattributes
├── README.md
├── Program.cs
├── Properties
├── AssemblyInfo.cs
├── Settings.settings
├── Resources.Designer.cs
├── Settings.Designer.cs
└── Resources.resx
├── App.config
├── Form2.Designer.cs
├── 3dpBurnerImage2Gcode.csproj
├── WindowsFormsApplication1.csproj
├── Form1.cs
└── Form1.Designer.cs
/LICENSE:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/villamany/3dpBurner-Image2Gcode/HEAD/LICENSE
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/villamany/3dpBurner-Image2Gcode/HEAD/.gitignore
--------------------------------------------------------------------------------
/picLas2.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/villamany/3dpBurner-Image2Gcode/HEAD/picLas2.ico
--------------------------------------------------------------------------------
/Resources/inv.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/villamany/3dpBurner-Image2Gcode/HEAD/Resources/inv.jpg
--------------------------------------------------------------------------------
/Resources/inv2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/villamany/3dpBurner-Image2Gcode/HEAD/Resources/inv2.png
--------------------------------------------------------------------------------
/Resources/mar.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/villamany/3dpBurner-Image2Gcode/HEAD/Resources/mar.jpg
--------------------------------------------------------------------------------
/3dpBurnerGcode2.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/villamany/3dpBurner-Image2Gcode/HEAD/3dpBurnerGcode2.ico
--------------------------------------------------------------------------------
/Resources/Icon1.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/villamany/3dpBurner-Image2Gcode/HEAD/Resources/Icon1.ico
--------------------------------------------------------------------------------
/Resources/flip_vertical.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/villamany/3dpBurner-Image2Gcode/HEAD/Resources/flip_vertical.png
--------------------------------------------------------------------------------
/Resources/flip_horizontal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/villamany/3dpBurner-Image2Gcode/HEAD/Resources/flip_horizontal.png
--------------------------------------------------------------------------------
/Resources/1423670303_repeat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/villamany/3dpBurner-Image2Gcode/HEAD/Resources/1423670303_repeat.png
--------------------------------------------------------------------------------
/Resources/1423670303_repeatR.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/villamany/3dpBurner-Image2Gcode/HEAD/Resources/1423670303_repeatR.png
--------------------------------------------------------------------------------
/bin/Release/3dpBurner Image2Gcode.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/villamany/3dpBurner-Image2Gcode/HEAD/bin/Release/3dpBurner Image2Gcode.exe
--------------------------------------------------------------------------------
/Form2.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Drawing;
6 | using System.Linq;
7 | using System.Text;
8 | using System.Windows.Forms;
9 |
10 | namespace _3dpBurnerImage2Gcode
11 | {
12 | public partial class Form2 : Form
13 | {
14 | public Form2()
15 | {
16 | InitializeComponent();
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Auto detect text files and perform LF normalization
2 | * text=auto
3 |
4 | # Custom for Visual Studio
5 | *.cs diff=csharp
6 |
7 | # Standard to msysgit
8 | *.doc diff=astextplain
9 | *.DOC diff=astextplain
10 | *.docx diff=astextplain
11 | *.DOCX diff=astextplain
12 | *.dot diff=astextplain
13 | *.DOT diff=astextplain
14 | *.pdf diff=astextplain
15 | *.PDF diff=astextplain
16 | *.rtf diff=astextplain
17 | *.RTF diff=astextplain
18 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | /* 3dpBurner Image2Gcode. A Image to GCODE converter for GRBL based devices.
2 | This file is part of 3dpBurner mage2Gcode application.
3 | Copyright (C) 2014-2015 Adrian V. J. (villamany) contact: villamany@gmail.com
4 |
5 | This program is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | (at your option) any later version.
9 |
10 | This program is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with this program. If not, see .
17 | */
18 |
19 | GitHub notes:
20 | The master branch contain the development version.
21 | Check the "Releases" for release versions and .exe files.
22 |
23 | //-------------------------------------------------------
24 | //-------------------- Changelog ------------------------
25 | //-------------------------------------------------------
26 |
27 | none
--------------------------------------------------------------------------------
/Program.cs:
--------------------------------------------------------------------------------
1 | /* 3dpBurner Image2Gcode. A Image to GCODE converter for GRBL based devices.
2 | This file is part of 3dpBurner Image2Gcode application.
3 |
4 | Copyright (C) 2015 Adrian V. J. (villamany) contact: villamany@gmail.com
5 | This program is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | (at your option) any later version.
9 | This program is distributed in the hope that it will be useful,
10 | but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | GNU General Public License for more details.
13 | You should have received a copy of the GNU General Public License
14 | along with this program. If not, see .
15 | */
16 | //Main program
17 |
18 | using System;
19 | using System.Collections.Generic;
20 | using System.Linq;
21 | using System.Threading.Tasks;
22 | using System.Windows.Forms;
23 |
24 | namespace _3dpBurnerImage2Gcode
25 | {
26 | static class Program
27 | {
28 | ///
29 | /// The main entry point for the application.
30 | ///
31 | [STAThread]
32 | static void Main()
33 | {
34 | Application.EnableVisualStyles();
35 | Application.SetCompatibleTextRenderingDefault(false);
36 | Application.Run(new Form1());
37 | }
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("WindowsFormsApplication1")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("WindowsFormsApplication1")]
13 | [assembly: AssemblyCopyright("Copyright © 2015")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("34414bdc-26ed-428c-9b54-a0128b47503a")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | True
7 |
8 |
9 | metric
10 |
11 |
12 | 100
13 |
14 |
15 | 50
16 |
17 |
18 | 0.18
19 |
20 |
21 | 0
22 |
23 |
24 | 0
25 |
26 |
27 | (Header)
28 | G0 X0 Y0
29 | (Header end)
30 |
31 |
32 | (Footer)
33 | G0 X0 Y0
34 | (Footer end)
35 |
36 |
37 | 0
38 |
39 |
40 | S
41 |
42 |
43 | Horizontal scanning
44 |
45 |
46 | False
47 |
48 |
49 |
--------------------------------------------------------------------------------
/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | <_3dpBurnerImage2Gcode.Properties.Settings>
13 |
14 | True
15 |
16 |
17 | metric
18 |
19 |
20 | 100
21 |
22 |
23 | 50
24 |
25 |
26 | 0.18
27 |
28 |
29 | 0
30 |
31 |
32 | 0
33 |
34 |
35 | (Header)
36 | G0 X0 Y0
37 | (Header end)
38 |
39 |
40 | (Footer)
41 | G0 X0 Y0
42 | (Footer end)
43 |
44 |
45 | 0
46 |
47 |
48 | S
49 |
50 |
51 | Horizontal scanning
52 |
53 |
54 | False
55 |
56 |
57 |
58 |
59 |
--------------------------------------------------------------------------------
/Form2.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace _3dpBurnerImage2Gcode
2 | {
3 | partial class Form2
4 | {
5 | ///
6 | /// Required designer variable.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Clean up any resources being used.
12 | ///
13 | /// true if managed resources should be disposed; otherwise, false.
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Windows Form Designer generated code
24 |
25 | ///
26 | /// Required method for Designer support - do not modify
27 | /// the contents of this method with the code editor.
28 | ///
29 | private void InitializeComponent()
30 | {
31 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form2));
32 | this.richTextBox1 = new System.Windows.Forms.RichTextBox();
33 | this.SuspendLayout();
34 | //
35 | // richTextBox1
36 | //
37 | this.richTextBox1.BackColor = System.Drawing.Color.White;
38 | this.richTextBox1.BorderStyle = System.Windows.Forms.BorderStyle.None;
39 | this.richTextBox1.Dock = System.Windows.Forms.DockStyle.Fill;
40 | this.richTextBox1.Location = new System.Drawing.Point(0, 0);
41 | this.richTextBox1.Name = "richTextBox1";
42 | this.richTextBox1.ReadOnly = true;
43 | this.richTextBox1.Size = new System.Drawing.Size(424, 214);
44 | this.richTextBox1.TabIndex = 1;
45 | this.richTextBox1.Text = resources.GetString("richTextBox1.Text");
46 | //
47 | // Form2
48 | //
49 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
50 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
51 | this.BackColor = System.Drawing.Color.White;
52 | this.ClientSize = new System.Drawing.Size(424, 214);
53 | this.Controls.Add(this.richTextBox1);
54 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
55 | this.MaximizeBox = false;
56 | this.MinimizeBox = false;
57 | this.Name = "Form2";
58 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
59 | this.Text = "3dpBurner Image2Gcode";
60 | this.ResumeLayout(false);
61 |
62 | }
63 |
64 | #endregion
65 |
66 | private System.Windows.Forms.RichTextBox richTextBox1;
67 | }
68 | }
--------------------------------------------------------------------------------
/Properties/Resources.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.18408
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace _3dpBurnerImage2Gcode.Properties {
12 | using System;
13 |
14 |
15 | ///
16 | /// A strongly-typed resource class, for looking up localized strings, etc.
17 | ///
18 | // This class was auto-generated by the StronglyTypedResourceBuilder
19 | // class via a tool like ResGen or Visual Studio.
20 | // To add or remove a member, edit your .ResX file then rerun ResGen
21 | // with the /str option, or rebuild your VS project.
22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
25 | internal class Resources {
26 |
27 | private static global::System.Resources.ResourceManager resourceMan;
28 |
29 | private static global::System.Globalization.CultureInfo resourceCulture;
30 |
31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
32 | internal Resources() {
33 | }
34 |
35 | ///
36 | /// Returns the cached ResourceManager instance used by this class.
37 | ///
38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
39 | internal static global::System.Resources.ResourceManager ResourceManager {
40 | get {
41 | if (object.ReferenceEquals(resourceMan, null)) {
42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("_3dpBurnerImage2Gcode.Properties.Resources", typeof(Resources).Assembly);
43 | resourceMan = temp;
44 | }
45 | return resourceMan;
46 | }
47 | }
48 |
49 | ///
50 | /// Overrides the current thread's CurrentUICulture property for all
51 | /// resource lookups using this strongly typed resource class.
52 | ///
53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
54 | internal static global::System.Globalization.CultureInfo Culture {
55 | get {
56 | return resourceCulture;
57 | }
58 | set {
59 | resourceCulture = value;
60 | }
61 | }
62 |
63 | ///
64 | /// Looks up a localized resource of type System.Drawing.Bitmap.
65 | ///
66 | internal static System.Drawing.Bitmap flip_horizontal {
67 | get {
68 | object obj = ResourceManager.GetObject("flip_horizontal", resourceCulture);
69 | return ((System.Drawing.Bitmap)(obj));
70 | }
71 | }
72 |
73 | ///
74 | /// Looks up a localized resource of type System.Drawing.Bitmap.
75 | ///
76 | internal static System.Drawing.Bitmap flip_vertical {
77 | get {
78 | object obj = ResourceManager.GetObject("flip_vertical", resourceCulture);
79 | return ((System.Drawing.Bitmap)(obj));
80 | }
81 | }
82 |
83 | ///
84 | /// Looks up a localized resource of type System.Drawing.Bitmap.
85 | ///
86 | internal static System.Drawing.Bitmap inv2 {
87 | get {
88 | object obj = ResourceManager.GetObject("inv2", resourceCulture);
89 | return ((System.Drawing.Bitmap)(obj));
90 | }
91 | }
92 |
93 | ///
94 | /// Looks up a localized resource of type System.Drawing.Bitmap.
95 | ///
96 | internal static System.Drawing.Bitmap left {
97 | get {
98 | object obj = ResourceManager.GetObject("left", resourceCulture);
99 | return ((System.Drawing.Bitmap)(obj));
100 | }
101 | }
102 |
103 | ///
104 | /// Looks up a localized resource of type System.Drawing.Bitmap.
105 | ///
106 | internal static System.Drawing.Bitmap right {
107 | get {
108 | object obj = ResourceManager.GetObject("right", resourceCulture);
109 | return ((System.Drawing.Bitmap)(obj));
110 | }
111 | }
112 | }
113 | }
114 |
--------------------------------------------------------------------------------
/3dpBurnerImage2Gcode.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {496E57A8-49C8-44DB-BF07-622A62A882EF}
8 | WinExe
9 | Properties
10 | _3dpBurnerImage2Gcode
11 | 3dpBurner Image2Gcode
12 | v4.0
13 | 512
14 |
15 |
16 |
17 | AnyCPU
18 | true
19 | full
20 | false
21 | bin\Debug\
22 | DEBUG;TRACE
23 | prompt
24 | 4
25 | false
26 |
27 |
28 | AnyCPU
29 | pdbonly
30 | true
31 | bin\Release\
32 | TRACE
33 | prompt
34 | 4
35 |
36 |
37 | picLas2.ico
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 | Form
54 |
55 |
56 | Form1.cs
57 |
58 |
59 | Form
60 |
61 |
62 | Form2.cs
63 |
64 |
65 |
66 |
67 | Form1.cs
68 |
69 |
70 | Form2.cs
71 |
72 |
73 | ResXFileCodeGenerator
74 | Designer
75 | Resources.Designer.cs
76 |
77 |
78 | SettingsSingleFileGenerator
79 | Settings.Designer.cs
80 |
81 |
82 | True
83 | True
84 | Resources.resx
85 |
86 |
87 | True
88 | Settings.settings
89 | True
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
116 |
--------------------------------------------------------------------------------
/WindowsFormsApplication1.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {496E57A8-49C8-44DB-BF07-622A62A882EF}
8 | WinExe
9 | Properties
10 | _3dpBurnerImage2Gcode
11 | 3dpBurner Image2Gcode
12 | v4.0
13 | 512
14 |
15 |
16 |
17 | AnyCPU
18 | true
19 | full
20 | false
21 | bin\Debug\
22 | DEBUG;TRACE
23 | prompt
24 | 4
25 | false
26 |
27 |
28 | AnyCPU
29 | pdbonly
30 | true
31 | bin\Release\
32 | TRACE
33 | prompt
34 | 4
35 |
36 |
37 | 3dpBurnerGcode2.ico
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 | Form
54 |
55 |
56 | Form1.cs
57 |
58 |
59 | Form
60 |
61 |
62 | Form2.cs
63 |
64 |
65 |
66 |
67 | Form1.cs
68 |
69 |
70 | Form2.cs
71 |
72 |
73 | ResXFileCodeGenerator
74 | Designer
75 | Resources.Designer.cs
76 |
77 |
78 | SettingsSingleFileGenerator
79 | Settings.Designer.cs
80 |
81 |
82 | True
83 | True
84 | Resources.resx
85 |
86 |
87 | True
88 | Settings.settings
89 | True
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
116 |
--------------------------------------------------------------------------------
/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.18408
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace _3dpBurnerImage2Gcode.Properties {
12 |
13 |
14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.0.0.0")]
16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
17 |
18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
19 |
20 | public static Settings Default {
21 | get {
22 | return defaultInstance;
23 | }
24 | }
25 |
26 | [global::System.Configuration.UserScopedSettingAttribute()]
27 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
28 | [global::System.Configuration.DefaultSettingValueAttribute("True")]
29 | public bool autoZoom {
30 | get {
31 | return ((bool)(this["autoZoom"]));
32 | }
33 | set {
34 | this["autoZoom"] = value;
35 | }
36 | }
37 |
38 | [global::System.Configuration.UserScopedSettingAttribute()]
39 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
40 | [global::System.Configuration.DefaultSettingValueAttribute("metric")]
41 | public string units {
42 | get {
43 | return ((string)(this["units"]));
44 | }
45 | set {
46 | this["units"] = value;
47 | }
48 | }
49 |
50 | [global::System.Configuration.UserScopedSettingAttribute()]
51 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
52 | [global::System.Configuration.DefaultSettingValueAttribute("100")]
53 | public string width {
54 | get {
55 | return ((string)(this["width"]));
56 | }
57 | set {
58 | this["width"] = value;
59 | }
60 | }
61 |
62 | [global::System.Configuration.UserScopedSettingAttribute()]
63 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
64 | [global::System.Configuration.DefaultSettingValueAttribute("50")]
65 | public string height {
66 | get {
67 | return ((string)(this["height"]));
68 | }
69 | set {
70 | this["height"] = value;
71 | }
72 | }
73 |
74 | [global::System.Configuration.UserScopedSettingAttribute()]
75 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
76 | [global::System.Configuration.DefaultSettingValueAttribute("0.18")]
77 | public string resolution {
78 | get {
79 | return ((string)(this["resolution"]));
80 | }
81 | set {
82 | this["resolution"] = value;
83 | }
84 | }
85 |
86 | [global::System.Configuration.UserScopedSettingAttribute()]
87 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
88 | [global::System.Configuration.DefaultSettingValueAttribute("0")]
89 | public string minPower {
90 | get {
91 | return ((string)(this["minPower"]));
92 | }
93 | set {
94 | this["minPower"] = value;
95 | }
96 | }
97 |
98 | [global::System.Configuration.UserScopedSettingAttribute()]
99 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
100 | [global::System.Configuration.DefaultSettingValueAttribute("0")]
101 | public string maxPower {
102 | get {
103 | return ((string)(this["maxPower"]));
104 | }
105 | set {
106 | this["maxPower"] = value;
107 | }
108 | }
109 |
110 | [global::System.Configuration.UserScopedSettingAttribute()]
111 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
112 | [global::System.Configuration.DefaultSettingValueAttribute("(Header)\r\nG0 X0 Y0\r\n(Header end)")]
113 | public string header {
114 | get {
115 | return ((string)(this["header"]));
116 | }
117 | set {
118 | this["header"] = value;
119 | }
120 | }
121 |
122 | [global::System.Configuration.UserScopedSettingAttribute()]
123 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
124 | [global::System.Configuration.DefaultSettingValueAttribute("(Footer)\r\nG0 X0 Y0\r\n(Footer end)")]
125 | public string footer {
126 | get {
127 | return ((string)(this["footer"]));
128 | }
129 | set {
130 | this["footer"] = value;
131 | }
132 | }
133 |
134 | [global::System.Configuration.UserScopedSettingAttribute()]
135 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
136 | [global::System.Configuration.DefaultSettingValueAttribute("0")]
137 | public string feedrate {
138 | get {
139 | return ((string)(this["feedrate"]));
140 | }
141 | set {
142 | this["feedrate"] = value;
143 | }
144 | }
145 |
146 | [global::System.Configuration.UserScopedSettingAttribute()]
147 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
148 | [global::System.Configuration.DefaultSettingValueAttribute("S")]
149 | public string powerCommand {
150 | get {
151 | return ((string)(this["powerCommand"]));
152 | }
153 | set {
154 | this["powerCommand"] = value;
155 | }
156 | }
157 |
158 | [global::System.Configuration.UserScopedSettingAttribute()]
159 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
160 | [global::System.Configuration.DefaultSettingValueAttribute("Horizontal scanning")]
161 | public string pattern {
162 | get {
163 | return ((string)(this["pattern"]));
164 | }
165 | set {
166 | this["pattern"] = value;
167 | }
168 | }
169 |
170 | [global::System.Configuration.UserScopedSettingAttribute()]
171 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
172 | [global::System.Configuration.DefaultSettingValueAttribute("False")]
173 | public bool edgeLines {
174 | get {
175 | return ((bool)(this["edgeLines"]));
176 | }
177 | set {
178 | this["edgeLines"] = value;
179 | }
180 | }
181 | }
182 | }
183 |
--------------------------------------------------------------------------------
/Properties/Resources.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 |
122 | ..\Resources\flip_vertical.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
123 |
124 |
125 | ..\Resources\1423670303_repeatR.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
126 |
127 |
128 | ..\Resources\1423670303_repeat.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
129 |
130 |
131 | ..\Resources\inv2.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
132 |
133 |
134 | ..\Resources\flip_horizontal.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
135 |
136 |
--------------------------------------------------------------------------------
/Form1.cs:
--------------------------------------------------------------------------------
1 | /* 3dpBurner Image2Gcode. A Image to GCODE converter for GRBL based devices.
2 | This file is part of 3dpBurner Image2Gcode application.
3 |
4 | Copyright (C) 2015 Adrian V. J. (villamany) contact: villamany@gmail.com
5 | This program is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | (at your option) any later version.
9 | This program is distributed in the hope that it will be useful,
10 | but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | GNU General Public License for more details.
13 | You should have received a copy of the GNU General Public License
14 | along with this program. If not, see .
15 | */
16 | //Form 1 (Main form)
17 |
18 | using System;
19 | using System.Collections.Generic;
20 | using System.ComponentModel;
21 | using System.Data;
22 | using System.Drawing;
23 | using System.Linq;
24 | using System.Text;
25 | using System.Threading.Tasks;
26 | using System.Windows.Forms;
27 | using System.IO;
28 | using System.Drawing.Imaging;
29 | using System.Globalization;
30 | using System.Runtime.InteropServices;
31 |
32 |
33 | namespace _3dpBurnerImage2Gcode
34 | {
35 | public partial class Form1 : Form
36 | {
37 | const string ver = "v0.1";
38 | Bitmap originalImage;
39 | Bitmap adjustedImage;
40 | float lastValue;//Aux for apply processing to image only when a new value is detected
41 | public Form1()
42 | {
43 | InitializeComponent();
44 | }
45 | float ratio; //Used to lock the aspect ratio when the option is selected
46 | //Save settings
47 | private void saveSettings()
48 | {
49 | try
50 | {
51 | string set;
52 | Properties.Settings.Default.autoZoom=autoZoomToolStripMenuItem.Checked;
53 | if (imperialinToolStripMenuItem.Checked) set = "imperial";
54 | else set = "metric";
55 | Properties.Settings.Default.units =set;
56 | Properties.Settings.Default.width = tbWidth.Text;
57 | Properties.Settings.Default.height = tbHeight.Text;
58 | Properties.Settings.Default.resolution = tbRes.Text;
59 | Properties.Settings.Default.minPower = tbLaserMin.Text;
60 | Properties.Settings.Default.maxPower = tbLaserMax.Text;
61 | Properties.Settings.Default.header = rtbPreGcode.Text;
62 | Properties.Settings.Default.footer = rtbPostGcode.Text;
63 | Properties.Settings.Default.feedrate = tbFeedRate.Text;
64 | if (rbUseZ.Checked) set = "Z";
65 | else set = "S";
66 | Properties.Settings.Default.powerCommand = set;
67 | Properties.Settings.Default.pattern = cbEngravingPattern.Text;
68 | Properties.Settings.Default.edgeLines = cbEdgeLines.Checked;
69 |
70 | Properties.Settings.Default.Save();
71 | }
72 | catch (Exception e)
73 | {
74 | MessageBox.Show("Error saving config: " + e.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
75 |
76 | }
77 | }
78 | //Load settings
79 | private void loadSettings()
80 | {
81 | try
82 | {
83 | autoZoomToolStripMenuItem.Checked=Properties.Settings.Default.autoZoom;
84 | autoZoomToolStripMenuItem_Click(this, null);
85 |
86 | if (Properties.Settings.Default.units=="imperial")
87 | {
88 | imperialinToolStripMenuItem.Checked=true;
89 | imperialinToolStripMenuItem_Click(this,null);
90 | }
91 | else
92 | {
93 | metricmmToolStripMenuItem.Checked=true;
94 | metricmmToolStripMenuItem_Click(this,null);
95 | }
96 | tbWidth.Text=Properties.Settings.Default.width;
97 | tbHeight.Text=Properties.Settings.Default.height;
98 | tbRes.Text=Properties.Settings.Default.resolution;
99 | tbLaserMin.Text=Properties.Settings.Default.minPower;
100 | tbLaserMax.Text=Properties.Settings.Default.maxPower;
101 | rtbPreGcode.Text=Properties.Settings.Default.header;
102 | rtbPostGcode.Text=Properties.Settings.Default.footer;
103 | tbFeedRate.Text=Properties.Settings.Default.feedrate;
104 | if (Properties.Settings.Default.powerCommand == "Z")
105 | rbUseZ.Checked = true;
106 | else rbUseS.Checked = true;
107 | cbEngravingPattern.Text=Properties.Settings.Default.pattern;
108 | cbEdgeLines.Checked=Properties.Settings.Default.edgeLines;
109 |
110 | }
111 | catch (Exception e)
112 | {
113 | MessageBox.Show("Error saving config: " + e.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
114 |
115 | }
116 | }
117 |
118 | //Interpolate a 8 bit grayscale value (0-255) between min,max
119 | private Int32 interpolate(Int32 grayValue, Int32 min, Int32 max)
120 | {
121 | Int32 dif=max-min;
122 | return (min + ((grayValue * dif) / 255));
123 | }
124 |
125 | //Return true if char is a valid float digit, show eror message is not and return false
126 | private bool checkDigitFloat(char ch )
127 | {
128 | if ((ch != '.') & (ch != '0') & (ch != '1') & (ch != '2') & (ch != '3') & (ch != '4') & (ch != '5') & (ch != '6') & (ch != '7') & (ch != '8') & (ch != '9') & (Convert.ToByte(ch) != 8) & (Convert.ToByte(ch) != 13))//is a 0-9 numbre or . decimal separator, backspace or enter
129 | {
130 | MessageBox.Show("Allowed chars are '0'-'9' and '.' as decimal separator", "Invalid value", MessageBoxButtons.OK, MessageBoxIcon.Error);
131 | return false;
132 | }
133 | return true;
134 | }
135 | //Return true if char is a valid integer digit, show eror message is not and return false
136 | private bool checkDigitInteger(char ch)
137 | {
138 | if ((ch != '0') & (ch != '1') & (ch != '2') & (ch != '3') & (ch != '4') & (ch != '5') & (ch != '6') & (ch != '7') & (ch != '8') & (ch != '9') & (Convert.ToByte(ch) != 8) & (Convert.ToByte(ch) != 13))//is a 0-9 numbre or . decimal separator, backspace or enter
139 | {
140 | MessageBox.Show("Allowed chars are '0'-'9'", "Invalid value", MessageBoxButtons.OK, MessageBoxIcon.Error);
141 | return false;
142 | }
143 | return true;
144 | }
145 |
146 | //Apply dirthering to an image (Convert to 1 bit)
147 | private Bitmap imgDirther(Bitmap input)
148 | {
149 | lblStatus.Text = "Dirthering...";
150 | Refresh();
151 | var masks = new byte[] { 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01 };
152 | var output = new Bitmap(input.Width, input.Height, PixelFormat.Format1bppIndexed);
153 | var data = new sbyte[input.Width, input.Height];
154 | var inputData = input.LockBits(new Rectangle(0, 0, input.Width, input.Height), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);
155 | try
156 | {
157 | var scanLine = inputData.Scan0;
158 | var line = new byte[inputData.Stride];
159 | for (var y = 0; y < inputData.Height; y++, scanLine += inputData.Stride)
160 | {
161 | Marshal.Copy(scanLine, line, 0, line.Length);
162 | for (var x = 0; x < input.Width; x++)
163 | {
164 | data[x, y] = (sbyte)(64 * (GetGreyLevel(line[x * 3 + 2], line[x * 3 + 1], line[x * 3 + 0]) - 0.5));
165 | }
166 | }
167 | }
168 | finally
169 | {
170 | input.UnlockBits(inputData);
171 | }
172 | var outputData = output.LockBits(new Rectangle(0, 0, output.Width, output.Height), ImageLockMode.WriteOnly, PixelFormat.Format1bppIndexed);
173 | try
174 | {
175 | var scanLine = outputData.Scan0;
176 | for (var y = 0; y < outputData.Height; y++, scanLine += outputData.Stride)
177 | {
178 | var line = new byte[outputData.Stride];
179 | for (var x = 0; x < input.Width; x++)
180 | {
181 | var j = data[x, y] > 0;
182 | if (j) line[x / 8] |= masks[x % 8];
183 | var error = (sbyte)(data[x, y] - (j ? 32 : -32));
184 | if (x < input.Width - 1) data[x + 1, y] += (sbyte)(7 * error / 16);
185 | if (y < input.Height - 1)
186 | {
187 | if (x > 0) data[x - 1, y + 1] += (sbyte)(3 * error / 16);
188 | data[x, y + 1] += (sbyte)(5 * error / 16);
189 | if (x < input.Width - 1) data[x + 1, y + 1] += (sbyte)(1 * error / 16);
190 | }
191 | }
192 | Marshal.Copy(line, 0, scanLine, outputData.Stride);
193 | }
194 | }
195 | finally
196 | {
197 | output.UnlockBits(outputData);
198 | }
199 | lblStatus.Text = "Done";
200 | Refresh();
201 | return (output);
202 | }
203 | private static double GetGreyLevel(byte r, byte g, byte b)//aux for dirthering
204 | {
205 | return (r * 0.299 + g * 0.587 + b * 0.114) / 255;
206 | }
207 | //Adjust brightness contrast and gamma of an image
208 | private Bitmap imgBalance(Bitmap img, int brigh, int cont, int gam)
209 | {
210 | lblStatus.Text = "Balancing...";
211 | Refresh();
212 | ImageAttributes imageAttributes;
213 | float brightness = (brigh / 100.0f)+ 1.0f;
214 | float contrast = (cont / 100.0f) +1.0f;
215 | float gamma = 1/(gam / 100.0f) ;
216 | float adjustedBrightness = brightness - 1.0f;
217 | Bitmap output;
218 | // create matrix that will brighten and contrast the image
219 | float[][] ptsArray ={
220 | new float[] {contrast, 0, 0, 0, 0}, // scale red
221 | new float[] {0, contrast, 0, 0, 0}, // scale green
222 | new float[] {0, 0, contrast, 0, 0}, // scale blue
223 | new float[] {0, 0, 0, 1.0f, 0}, // don't scale alpha
224 | new float[] {adjustedBrightness, adjustedBrightness, adjustedBrightness, 0, 1}};
225 |
226 | output = new Bitmap(img);
227 | imageAttributes = new ImageAttributes();
228 | imageAttributes.ClearColorMatrix();
229 | imageAttributes.SetColorMatrix(new ColorMatrix(ptsArray), ColorMatrixFlag.Default, ColorAdjustType.Bitmap);
230 | imageAttributes.SetGamma(gamma, ColorAdjustType.Bitmap);
231 | Graphics g = Graphics.FromImage(output);
232 | g.DrawImage(output, new Rectangle(0, 0, output.Width, output.Height)
233 | , 0, 0, output.Width, output.Height,
234 | GraphicsUnit.Pixel, imageAttributes);
235 | lblStatus.Text = "Done";
236 | Refresh();
237 | return (output);
238 | }
239 | //Return a grayscale version of an image
240 | private Bitmap imgGrayscale(Bitmap original)
241 | {
242 | lblStatus.Text = "Grayscaling...";
243 | Refresh();
244 | Bitmap newBitmap = new Bitmap(original.Width, original.Height);//create a blank bitmap the same size as original
245 | Graphics g = Graphics.FromImage(newBitmap);//get a graphics object from the new image
246 | //create the grayscale ColorMatrix
247 | ColorMatrix colorMatrix = new ColorMatrix(
248 | new float[][]
249 | {
250 | new float[] {.299f, .299f, .299f, 0, 0},
251 | new float[] {.587f, .587f, .587f, 0, 0},
252 | new float[] {.114f, .114f, .114f, 0, 0},
253 | new float[] {0, 0, 0, 1, 0},
254 | new float[] {0, 0, 0, 0, 1}
255 | });
256 | ImageAttributes attributes = new ImageAttributes();//create some image attributes
257 | attributes.SetColorMatrix(colorMatrix);//set the color matrix attribute
258 |
259 | //draw the original image on the new image using the grayscale color matrix
260 | g.DrawImage(original, new Rectangle(0, 0, original.Width, original.Height),
261 | 0, 0, original.Width, original.Height, GraphicsUnit.Pixel, attributes);
262 | g.Dispose();//dispose the Graphics object
263 | lblStatus.Text = "Done";
264 | Refresh();
265 | return (newBitmap);
266 | }
267 | //Return a inverted colors version of a image
268 | private Bitmap imgInvert(Bitmap original)
269 | {
270 | lblStatus.Text = "Inverting...";
271 | Refresh();
272 | Bitmap newBitmap = new Bitmap(original.Width, original.Height);//create a blank bitmap the same size as original
273 | Graphics g = Graphics.FromImage(newBitmap);//get a graphics object from the new image
274 | //create the grayscale ColorMatrix
275 | ColorMatrix colorMatrix = new ColorMatrix(
276 | new float[][]
277 | {
278 | new float[] {-1, 0, 0, 0, 0},
279 | new float[] {0, -1, 0, 0, 0},
280 | new float[] {0, 0, -1, 0, 0},
281 | new float[] {0, 0, 0, 1, 0},
282 | new float[] {1, 1, 1, 0, 1}
283 | });
284 | ImageAttributes attributes = new ImageAttributes();//create some image attributes
285 | attributes.SetColorMatrix(colorMatrix);//set the color matrix attribute
286 |
287 | //draw the original image on the new image using the grayscale color matrix
288 | g.DrawImage(original, new Rectangle(0, 0, original.Width, original.Height),
289 | 0, 0, original.Width, original.Height, GraphicsUnit.Pixel, attributes);
290 | g.Dispose();//dispose the Graphics object
291 | lblStatus.Text = "Done";
292 | Refresh();
293 | return (newBitmap);
294 | }
295 |
296 | //Resize image to desired width/height for gcode generation
297 | private Bitmap imgResize(Bitmap input, Int32 xSize, Int32 ySize)
298 | {
299 | //Resize
300 | Bitmap output;
301 | lblStatus.Text = "Resizing...";
302 | Refresh();
303 | output= new Bitmap(input,new Size(xSize, ySize));
304 | lblStatus.Text = "Done";
305 | Refresh();
306 | return(output);
307 | }
308 | //Invoked when the user input any value for image adjust
309 | private void userAdjust()
310 | {
311 | try
312 | {
313 | if (adjustedImage == null) return;//if no image, do nothing
314 | //Apply resize to original image
315 | Int32 xSize;//Total X pixels of resulting image for GCode generation
316 | Int32 ySize;//Total Y pixels of resulting image for GCode generation
317 | xSize = Convert.ToInt32(float.Parse(tbWidth.Text, CultureInfo.InvariantCulture.NumberFormat) / float.Parse(tbRes.Text, CultureInfo.InvariantCulture.NumberFormat));
318 | ySize = Convert.ToInt32(float.Parse(tbHeight.Text, CultureInfo.InvariantCulture.NumberFormat) / float.Parse(tbRes.Text, CultureInfo.InvariantCulture.NumberFormat));
319 | adjustedImage = imgResize(originalImage, xSize, ySize);
320 | //Apply balance to adjusted (resized) image
321 | adjustedImage = imgBalance(adjustedImage, tBarBrightness.Value, tBarContrast.Value, tBarGamma.Value);
322 | //Reset dirthering to adjusted (resized and balanced) image
323 | cbDirthering.Text = "GrayScale 8 bit";
324 | //Display image
325 | pictureBox1.Image = adjustedImage;
326 | //Set preview
327 | autoZoomToolStripMenuItem_Click(this, null);
328 | }
329 | catch (Exception e)
330 | {
331 | MessageBox.Show("Error resizing/balancing image: " + e.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
332 | }
333 | }
334 | //Display a invalid values message
335 | private void invalidValue()
336 | {
337 | lblStatus.Text = "Invalid values! Check it.";
338 | }
339 | //Contrast adjusted by user
340 | private void tBarContrast_Scroll(object sender, EventArgs e)
341 | {
342 | lblContrast.Text = Convert.ToString(tBarContrast.Value);
343 | Refresh();
344 | userAdjust();
345 | }
346 | //Brightness adjusted by user
347 | private void tBarBrightness_Scroll(object sender, EventArgs e)
348 | {
349 | lblBrightness.Text = Convert.ToString(tBarBrightness.Value);
350 | Refresh();
351 | userAdjust();
352 | }
353 | //Gamma adjusted by user
354 | private void tBarGamma_Scroll(object sender, EventArgs e)
355 | {
356 | lblGamma.Text = Convert.ToString(tBarGamma.Value/100.0f);
357 | Refresh();
358 | userAdjust();
359 | }
360 | //Quick preview of the original image. Todo: use a new image container for fas return to processed image
361 | private void btnCheckOrig_MouseDown(object sender, MouseEventArgs e)
362 | {
363 | if (adjustedImage == null) return;//if no image, do nothing
364 | if (!File.Exists(openFileDialog1.FileName)) return;
365 | lblStatus.Text = "Loading original image...";
366 | Refresh();
367 | pictureBox1.Image = originalImage;
368 | lblStatus.Text = "Done";
369 | }
370 | //Reload the processed image after temporal preiew of the original image
371 | private void btnCheckOrig_MouseUp(object sender, MouseEventArgs e)
372 | {
373 | if (adjustedImage == null) return;//if no image, do nothing
374 | if (!File.Exists(openFileDialog1.FileName)) return;
375 | pictureBox1.Image = adjustedImage;
376 | }
377 |
378 | //Check if a new image width has been confirmad by user, process it.
379 | private void widthChangedCheck()
380 | {
381 | try
382 | {
383 | if (adjustedImage == null) return;//if no image, do nothing
384 | float newValue = Convert.ToSingle(tbWidth.Text, CultureInfo.InvariantCulture.NumberFormat);//Get the user input value
385 | if (newValue == lastValue) return;//if not is a new value do nothing
386 | lastValue = Convert.ToSingle(tbWidth.Text, CultureInfo.InvariantCulture.NumberFormat);
387 | if (cbLockRatio.Checked)
388 | {
389 | tbHeight.Text = Convert.ToString((newValue / ratio), CultureInfo.InvariantCulture.NumberFormat);
390 | }
391 | userAdjust();
392 | }
393 | catch
394 | {
395 | MessageBox.Show("Check width value.", "Invalid value", MessageBoxButtons.OK, MessageBoxIcon.Error);
396 | }
397 | }
398 | //Check if a new image height has been confirmad by user, process it.
399 | private void heightChangedCheck()
400 | {
401 | try
402 | {
403 | if (adjustedImage == null) return;//if no image, do nothing
404 | float newValue = Convert.ToSingle(tbHeight.Text, CultureInfo.InvariantCulture.NumberFormat);//Get the user input value
405 | if (newValue == lastValue) return;//if not is a new value do nothing
406 | lastValue = Convert.ToSingle(tbHeight.Text, CultureInfo.InvariantCulture.NumberFormat);
407 | if (cbLockRatio.Checked)
408 | {
409 | tbWidth.Text = Convert.ToString((newValue * ratio), CultureInfo.InvariantCulture.NumberFormat);
410 | }
411 | userAdjust();
412 | }
413 | catch {
414 | MessageBox.Show("Check height value.", "Invalid value", MessageBoxButtons.OK, MessageBoxIcon.Error);
415 | }
416 | }
417 | //Check if a new image resolution has been confirmad by user, process it.
418 | private void resolutionChangedCheck()
419 | {
420 | try
421 | {
422 | if (adjustedImage == null) return;//if no image, do nothing
423 | float newValue = Convert.ToSingle(tbRes.Text, CultureInfo.InvariantCulture.NumberFormat);//Get the user input value
424 | if (newValue == lastValue) return;//if not is a new value do nothing
425 | lastValue = Convert.ToSingle(tbRes.Text, CultureInfo.InvariantCulture.NumberFormat);
426 | userAdjust();
427 | }
428 | catch {
429 | MessageBox.Show("Check resolution value.", "Invalid value", MessageBoxButtons.OK, MessageBoxIcon.Error);
430 | }
431 | }
432 | //CheckBox lockAspectRatio checked. Set as mandatory the user setted width and calculate the height by using the original aspect ratio
433 | private void cbLockRatio_CheckedChanged(object sender, EventArgs e)
434 | {
435 | if (cbLockRatio.Checked)
436 | {
437 | tbHeight.Text = Convert.ToString((Convert.ToSingle(tbWidth.Text, CultureInfo.InvariantCulture.NumberFormat) / ratio), CultureInfo.InvariantCulture.NumberFormat);//Initialize y size
438 | if (adjustedImage == null) return;//if no image, do nothing
439 | userAdjust();
440 | }
441 | }
442 | //On form load
443 | private void Form1_Load(object sender, EventArgs e)
444 | {
445 | Text = "3dpBurner Image2Gcode " + ver;
446 | lblStatus.Text = "Done";
447 | loadSettings();
448 |
449 | autoZoomToolStripMenuItem_Click(this, null);//Set preview zoom mode
450 | }
451 | //Width confirmed by user by the enter key
452 | private void tbWidth_KeyPress(object sender, KeyPressEventArgs e)
453 | {
454 | //Prevent any not allowed char
455 | if (!checkDigitFloat(e.KeyChar))
456 | {
457 | e.Handled = true;//Stop the character from being entered into the control since it is non-numerical.
458 | return;
459 | }
460 |
461 | if (e.KeyChar==Convert.ToChar(13))
462 | {
463 | widthChangedCheck();
464 | }
465 | }
466 | //Height confirmed by user by the enter key
467 | private void tbHeight_KeyPress(object sender, KeyPressEventArgs e)
468 | {
469 | //Prevent any not allowed char
470 | if (!checkDigitFloat(e.KeyChar))
471 | {
472 | e.Handled = true;//Stop the character from being entered into the control since it is non-numerical.
473 | return;
474 | }
475 | if (e.KeyChar == Convert.ToChar(13))
476 | {
477 | heightChangedCheck();
478 | }
479 | }
480 | //Resolution confirmed by user by the enter key
481 | private void tbRes_KeyPress(object sender, KeyPressEventArgs e)
482 | {
483 | //Prevent any not allowed char
484 | if (!checkDigitFloat(e.KeyChar))
485 | {
486 | e.Handled = true;//Stop the character from being entered into the control since it is non-numerical.
487 | return;
488 | }
489 | if (e.KeyChar == Convert.ToChar(13))
490 | {
491 | resolutionChangedCheck();
492 | }
493 | }
494 | //Width control leave focus. Check if new value
495 | private void tbWidth_Leave(object sender, EventArgs e)
496 | {
497 | widthChangedCheck();
498 | }
499 | //Height control leave focus. Check if new value
500 | private void tbHeight_Leave(object sender, EventArgs e)
501 | {
502 | heightChangedCheck();
503 | }
504 | //Resolution control leave focus. Check if new value
505 | private void tbRes_Leave(object sender, EventArgs e)
506 | {
507 | resolutionChangedCheck();
508 | }
509 | //Width control get focusv
510 | private void tbWidth_Enter(object sender, EventArgs e)
511 | {
512 | try
513 | {
514 | lastValue = Convert.ToSingle(tbWidth.Text, CultureInfo.InvariantCulture.NumberFormat);
515 | }
516 | catch { }
517 | }
518 | //Height control get focus. Backup actual value for check changes.
519 | private void tbHeight_Enter(object sender, EventArgs e)
520 | {
521 | try
522 | {
523 | lastValue = Convert.ToSingle(tbHeight.Text, CultureInfo.InvariantCulture.NumberFormat);
524 | }
525 | catch { }
526 | }
527 | //Resolution control get focus. Backup actual value for check changes.
528 | private void tbRes_Enter(object sender, EventArgs e)
529 | {
530 | try
531 | {
532 | lastValue = Convert.ToSingle(tbRes.Text, CultureInfo.InvariantCulture.NumberFormat);
533 | }
534 | catch { }
535 | }
536 | //Generate a "minimalist" gcode line based on the actual and last coordinates and laser power
537 | string line;
538 | float coordX;//X
539 | float coordY;//Y
540 | Int32 sz;//S (or Z)
541 | float lastX;//Last x/y coords for compare
542 | float lastY;
543 | Int32 lastSz;//last 'S' value for compare
544 | char szChar;//Use 'S' or 'Z' for test laser power
545 | string coordXStr;//String formated X
546 | string coordYStr;////String formated Y
547 | string szStr;////String formated S
548 | private void generateLine()
549 | {
550 | //Generate Gcode line
551 | line = "";
552 | if (coordX != lastX)//Add X coord to line if is diferent from previous
553 | {
554 | coordXStr = string.Format(CultureInfo.InvariantCulture.NumberFormat, "{0:0.###}", coordX);
555 | line += 'X' + coordXStr;
556 | }
557 | if (coordY != lastY)//Add Y coord to line if is diferent from previous
558 | {
559 | coordYStr = string.Format(CultureInfo.InvariantCulture.NumberFormat, "{0:0.###}", coordY);
560 | line += 'Y' + coordYStr;
561 | }
562 | if (sz != lastSz)//Add power value to line if is diferent from previous
563 | {
564 | szStr = szChar + Convert.ToString(sz);
565 | line += szStr;
566 | }
567 | }
568 | //Generate button click
569 | private void btnGenerate_Click(object sender, EventArgs e)
570 | {
571 | if (adjustedImage == null) return;//if no image, do nothing
572 | float resol = Convert.ToSingle(tbRes.Text, CultureInfo.InvariantCulture.NumberFormat);//Resolution (or laser spot size)
573 | float w = Convert.ToSingle(tbWidth.Text, CultureInfo.InvariantCulture.NumberFormat);//Get the user input value only for check for cancel if not valid
574 | float h = Convert.ToSingle(tbHeight.Text, CultureInfo.InvariantCulture.NumberFormat);//Get the user input value only for check for cancel if not valid
575 |
576 | if ((resol <= 0) | (adjustedImage.Width < 1) | (adjustedImage.Height < 1) | (w < 1) | (h < 1))
577 | {
578 | MessageBox.Show("Check widht, height and resolution values.", "Invalid value", MessageBoxButtons.OK, MessageBoxIcon.Error);
579 | return;
580 | }
581 | if (Convert.ToInt32(tbFeedRate.Text) < 1)
582 | {
583 | MessageBox.Show("Check feedrate value.", "Invalid value", MessageBoxButtons.OK, MessageBoxIcon.Error);
584 | return;
585 | }
586 | if (saveFileDialog1.ShowDialog() == DialogResult.Cancel) return;
587 |
588 | Int32 lin;//top/botom pixel
589 | Int32 col;//Left/right pixel
590 |
591 | lblStatus.Text="Generating file...";
592 | Refresh();
593 |
594 | List fileLines;
595 | fileLines = new List();
596 | //S or Z use as power command
597 | if (rbUseS.Checked) szChar = 'S'; else szChar = 'Z';
598 |
599 | //first Gcode line
600 | line = "(Generated by 3dpBurner Image2Gcode " + ver+")";
601 | fileLines.Add(line);
602 | line="(@"+DateTime.Now.ToString("MMM/dd/yyy HH:mm:ss)");
603 | fileLines.Add(line);
604 |
605 |
606 |
607 | line = "M5\r";//Make sure laser off
608 | fileLines.Add(line);
609 |
610 | //Add the pre-Gcode lines
611 | lastX = -1;//reset last positions
612 | lastY = -1;
613 | lastSz = -1;
614 | foreach(string s in rtbPreGcode.Lines)
615 | {
616 | fileLines.Add(s);
617 | }
618 | line = "G90\r";//Absolute coordinates
619 | fileLines.Add(line);
620 |
621 | if (imperialinToolStripMenuItem.Checked) line = "G20\r";//Imperial units
622 | else line = "G21\r";//Metric units
623 | fileLines.Add(line);
624 | line = "F" + tbFeedRate.Text + "\r";//Feedrate
625 | fileLines.Add(line);
626 |
627 | //Generate picture Gcode
628 | Int32 pixTot = adjustedImage.Width * adjustedImage.Height;
629 | Int32 pixBurned = 0;
630 | //////////////////////////////////////////////
631 | // Generate Gcode lines by Horozontal scanning
632 | //////////////////////////////////////////////
633 | if (cbEngravingPattern.Text == "Horizontal scanning")
634 | {
635 | //Goto rapid move to lef top corner
636 | line = "G0X0Y" + string.Format(CultureInfo.InvariantCulture.NumberFormat, "{0:0.###}", adjustedImage.Height * Convert.ToSingle(tbRes.Text, CultureInfo.InvariantCulture.NumberFormat));
637 | fileLines.Add(line);
638 | line = "G1\r";//G1 mode
639 | fileLines.Add(line);
640 | line = "M3\r";//Switch laser on
641 | fileLines.Add(line);
642 |
643 | //Start image
644 | lin = adjustedImage.Height - 1;//top tile
645 | col = 0;//Left pixel
646 | while (lin >= 0)
647 | {
648 | //Y coordinate
649 | coordY = resol * (float)lin;
650 | while (col < adjustedImage.Width)//From left to right
651 | {
652 | //X coordinate
653 | coordX = resol * (float)col;
654 | //Power value
655 | Color cl = adjustedImage.GetPixel(col, (adjustedImage.Height - 1) - lin);//Get pixel color
656 | sz = 255 - cl.R;
657 | sz = interpolate(sz, Convert.ToInt32(tbLaserMin.Text), Convert.ToInt32(tbLaserMax.Text));
658 | generateLine();
659 | pixBurned++;
660 | //adjustedImage.SetPixel(col, (adjustedImage.Height-1)-lin, Color.Red);
661 | //pictureBox1.Image = adjustedImage;
662 | //Refresh();
663 |
664 | if (!string.IsNullOrEmpty(line)) fileLines.Add(line);
665 | lastX = coordX;
666 | lastY = coordY;
667 | lastSz = sz;
668 | col++;
669 | }
670 | col--;
671 | lin--;
672 | coordY = resol * (float)lin;
673 | while ((col >= 0) & (lin >= 0))//From right to left
674 | {
675 | //X coordinate
676 | coordX = resol * (float)col;
677 | //Power value
678 | Color cl = adjustedImage.GetPixel(col, (adjustedImage.Height - 1) - lin);//Get pixel color
679 | sz = 255 - cl.R;
680 | sz = interpolate(sz, Convert.ToInt32(tbLaserMin.Text), Convert.ToInt32(tbLaserMax.Text));
681 | generateLine();
682 | pixBurned++;
683 | //adjustedImage.SetPixel(col, (adjustedImage.Height-1)-lin, Color.Red);
684 | //pictureBox1.Image = adjustedImage;
685 | //Refresh();
686 |
687 | if (!string.IsNullOrEmpty(line)) fileLines.Add(line);
688 | lastX = coordX;
689 | lastY = coordY;
690 | lastSz = sz;
691 | col--;
692 | }
693 | col++;
694 | lin--;
695 | lblStatus.Text = "Generating file... " + Convert.ToString((pixBurned*100)/pixTot ) + "%";
696 | Refresh();
697 | }
698 |
699 | }
700 | //////////////////////////////////////////////
701 | // Generate Gcode lines by Diagonal scanning
702 | //////////////////////////////////////////////
703 | else
704 | {
705 | //Goto rapid move to lef top corner
706 | line = "G0X0Y0";
707 | fileLines.Add(line);
708 | line = "G1\r";//G1 mode
709 | fileLines.Add(line);
710 | line = "M3\r";//Switch laser on
711 | fileLines.Add(line);
712 |
713 | //Start image
714 | col = 0;
715 | lin = 0;
716 | while((col=0))
719 | {
720 | //Y coordinate
721 | coordY = resol * (float)lin;
722 | //X coordinate
723 | coordX = resol * (float)col;
724 |
725 | //Power value
726 | Color cl = adjustedImage.GetPixel(col, (adjustedImage.Height - 1) - lin);//Get pixel color
727 | sz = 255 - cl.R;
728 | sz = interpolate(sz, Convert.ToInt32(tbLaserMin.Text), Convert.ToInt32(tbLaserMax.Text));
729 |
730 | generateLine();
731 | pixBurned++;
732 |
733 | //adjustedImage.SetPixel(col, (adjustedImage.Height-1)-lin, Color.Red);
734 | //pictureBox1.Image = adjustedImage;
735 | //Refresh();
736 |
737 | if (!string.IsNullOrEmpty(line)) fileLines.Add(line);
738 | lastX = coordX;
739 | lastY = coordY;
740 | lastSz = sz;
741 |
742 | col++;
743 | lin--;
744 | }
745 | col--;
746 | lin++;
747 |
748 | if (col >= adjustedImage.Width-1) lin++;
749 | else col++;
750 | while ((col >=0)&(lin= adjustedImage.Height-1) col++;
780 | else lin++;
781 | lblStatus.Text = "Generating file... " + Convert.ToString((pixBurned * 100) / pixTot) + "%";
782 | Refresh();
783 | }
784 |
785 |
786 | }
787 | //Edge lines
788 | if (cbEdgeLines.Checked)
789 | {
790 | line = "M5\r";
791 | fileLines.Add(line);
792 | line = "G0X0Y0\r";
793 | fileLines.Add(line);
794 | line = "M3S" + tbLaserMax.Text + "\r";
795 | fileLines.Add(line);
796 | line = "G1X0Y"+string.Format(CultureInfo.InvariantCulture.NumberFormat,"{0:0.###}",(adjustedImage.Height-1)*resol)+"\r";
797 | fileLines.Add(line);
798 | line = "G1X" + string.Format(CultureInfo.InvariantCulture.NumberFormat, "{0:0.###}", (adjustedImage.Width - 1) * resol) + "Y" +string.Format(CultureInfo.InvariantCulture.NumberFormat, "{0:0.###}",(adjustedImage.Height - 1) * resol) + "\r";
799 | fileLines.Add(line);
800 | line = "G1X" + string.Format(CultureInfo.InvariantCulture.NumberFormat, "{0:0.###}",(adjustedImage.Width - 1)*resol) + "Y0\r";
801 | fileLines.Add(line);
802 | line = "G1X0Y0\r";
803 | fileLines.Add(line);
804 | }
805 | //Switch laser off
806 | line = "M5\r";//G1 mode
807 | fileLines.Add(line);
808 |
809 | //Add the post-Gcode
810 | foreach (string s in rtbPostGcode.Lines)
811 | {
812 | fileLines.Add(s);
813 | }
814 | lblStatus.Text="Saving file...";
815 | Refresh();
816 | //Save file
817 | File.WriteAllLines(saveFileDialog1.FileName , fileLines);
818 | lblStatus.Text = "Done (" + Convert.ToString(pixBurned) + "/" + Convert.ToString(pixTot)+")";
819 | }
820 | //Horizontal mirroing
821 | private void btnHorizMirror_Click(object sender, EventArgs e)
822 | {
823 | if (adjustedImage == null) return;//if no image, do nothing
824 | lblStatus.Text = "Mirroing...";
825 | Refresh();
826 | adjustedImage.RotateFlip(RotateFlipType.RotateNoneFlipX);
827 | originalImage.RotateFlip(RotateFlipType.RotateNoneFlipX);
828 | pictureBox1.Image = adjustedImage;
829 | lblStatus.Text = "Done";
830 | }
831 | //Vertical mirroing
832 | private void btnVertMirror_Click(object sender, EventArgs e)
833 | {
834 | if (adjustedImage == null) return;//if no image, do nothing
835 | lblStatus.Text = "Mirroing...";
836 | Refresh();
837 | adjustedImage.RotateFlip(RotateFlipType.RotateNoneFlipY);
838 | originalImage.RotateFlip(RotateFlipType.RotateNoneFlipY);
839 | pictureBox1.Image = adjustedImage;
840 | lblStatus.Text = "Done";
841 | }
842 | //Rotate right
843 | private void btnRotateRight_Click(object sender, EventArgs e)
844 | {
845 | if (adjustedImage == null) return;//if no image, do nothing
846 | lblStatus.Text = "Rotating...";
847 | Refresh();
848 | adjustedImage.RotateFlip(RotateFlipType.Rotate90FlipNone);
849 | originalImage.RotateFlip(RotateFlipType.Rotate90FlipNone);
850 | ratio = 1 / ratio;
851 | string s = tbHeight.Text;
852 | tbHeight.Text = tbWidth.Text;
853 | tbWidth.Text = s;
854 | pictureBox1.Image = adjustedImage;
855 | autoZoomToolStripMenuItem_Click(this, null);
856 | lblStatus.Text = "Done";
857 | }
858 | //Rotate left
859 | private void btnRotateLeft_Click(object sender, EventArgs e)
860 | {
861 | if (adjustedImage == null) return;//if no image, do nothing
862 | lblStatus.Text = "Rotating...";
863 | Refresh();
864 | adjustedImage.RotateFlip(RotateFlipType.Rotate270FlipNone);
865 | originalImage.RotateFlip(RotateFlipType.Rotate270FlipNone);
866 | ratio = 1 / ratio;
867 | string s = tbHeight.Text;
868 | tbHeight.Text = tbWidth.Text;
869 | tbWidth.Text = s;
870 | pictureBox1.Image = adjustedImage;
871 | autoZoomToolStripMenuItem_Click(this, null);
872 | lblStatus.Text = "Done";
873 | }
874 | //Invert image color
875 | private void btnInvert_Click(object sender, EventArgs e)
876 | {
877 | if (adjustedImage == null) return;//if no image, do nothing
878 | adjustedImage = imgInvert(adjustedImage);
879 | originalImage= imgInvert(originalImage);
880 | pictureBox1.Image = adjustedImage;
881 | }
882 |
883 | private void cbDirthering_SelectedIndexChanged(object sender, EventArgs e)
884 | {
885 | if (adjustedImage == null) return;//if no image, do nothing
886 | if (cbDirthering.Text == "Dirthering FS 1 bit")
887 | {
888 | lblStatus.Text = "Dirtering...";
889 | adjustedImage = imgDirther(adjustedImage);
890 | pictureBox1.Image = adjustedImage;
891 | lblStatus.Text = "Done";
892 | }
893 | else
894 | userAdjust();
895 | }
896 | //Feedrate Text changed
897 | private void tbFeedRate_KeyPress(object sender, KeyPressEventArgs e)
898 | {
899 | //Prevent any not allowed char
900 | if (!checkDigitInteger(e.KeyChar))
901 | {
902 | e.Handled = true;//Stop the character from being entered into the control since it is non-numerical.
903 | return;
904 | }
905 | }
906 | //Metric units selected
907 | private void metricmmToolStripMenuItem_Click(object sender, EventArgs e)
908 | {
909 | imperialinToolStripMenuItem.Checked = false;
910 | gbDimensions.Text = "Output (mm)";
911 | lblFeedRateUnits.Text = "mm/min";
912 | }
913 | //Imperial unitsSelected
914 | private void imperialinToolStripMenuItem_Click(object sender, EventArgs e)
915 | {
916 | metricmmToolStripMenuItem.Checked = false;
917 | gbDimensions.Text = "Output (in)";
918 | lblFeedRateUnits.Text = "in/min";
919 | }
920 | //About dialog
921 | private void aboutToolStripMenuItem_Click(object sender, EventArgs e)
922 | {
923 | Form2 frmAbout = new Form2();
924 | frmAbout.ShowDialog();
925 | }
926 | //Preview AutoZoom
927 | private void autoZoomToolStripMenuItem_Click(object sender, EventArgs e)
928 | {
929 | if (autoZoomToolStripMenuItem.Checked)
930 | {
931 | pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
932 | pictureBox1.Width = panel1.Width;
933 | pictureBox1.Height = panel1.Height;
934 | pictureBox1.Top = 0;
935 | pictureBox1.Left = 0;
936 | }
937 | else
938 | {
939 | pictureBox1.SizeMode = PictureBoxSizeMode.AutoSize;
940 | if (pictureBox1.Width > panel1.Width) pictureBox1.Left = 0; else pictureBox1.Left = (panel1.Width / 2) - (pictureBox1.Width / 2);
941 | if (pictureBox1.Height > panel1.Height) pictureBox1.Top = 0; else pictureBox1.Top = (panel1.Height / 2) - (pictureBox1.Height / 2);
942 | }
943 | }
944 | //Laser Min keyPress
945 | private void tbLaserMin_KeyPress(object sender, KeyPressEventArgs e)
946 | {
947 | //Prevent any not allowed char
948 | if (!checkDigitInteger(e.KeyChar))
949 | {
950 | e.Handled = true;//Stop the character from being entered into the control since it is non-numerical.
951 | return;
952 | }
953 | }
954 | //Laser Max keyPress
955 | private void tbLaserMax_KeyPress(object sender, KeyPressEventArgs e)
956 | {
957 | //Prevent any not allowed char
958 | if (!checkDigitInteger(e.KeyChar))
959 | {
960 | e.Handled = true;//Stop the character from being entered into the control since it is non-numerical.
961 | return;
962 | }
963 | }
964 | //OpenFile, save picture grayscaled to originalImage and save the original aspect ratio to ratio
965 | private void openToolStripMenuItem_Click(object sender, EventArgs e)
966 | {
967 | try
968 | {
969 | if (openFileDialog1.ShowDialog() == DialogResult.Cancel) return;//if no image, do nothing
970 | if (!File.Exists(openFileDialog1.FileName)) return;
971 | lblStatus.Text = "Opening file...";
972 | Refresh();
973 | tBarBrightness.Value = 0;
974 | tBarContrast.Value = 0;
975 | tBarGamma.Value = 100;
976 | lblBrightness.Text = Convert.ToString(tBarBrightness.Value);
977 | lblContrast.Text = Convert.ToString(tBarContrast.Value);
978 | lblGamma.Text = Convert.ToString(tBarGamma.Value / 100.0f);
979 | originalImage = new Bitmap(Image.FromFile(openFileDialog1.FileName));
980 | originalImage = imgGrayscale(originalImage);
981 | adjustedImage = new Bitmap(originalImage);
982 | ratio = (originalImage.Width + 0.0f) / originalImage.Height;//Save ratio for future use if needled
983 | if (cbLockRatio.Checked) tbHeight.Text = Convert.ToString((Convert.ToSingle(tbWidth.Text) / ratio), CultureInfo.InvariantCulture.NumberFormat);//Initialize y size
984 | userAdjust();
985 | lblStatus.Text = "Done";
986 | }
987 | catch (Exception err)
988 | {
989 | MessageBox.Show("Error opening file: " + err.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
990 | }
991 | }
992 | //Exit Menu
993 | private void exitToolStripMenuItem_Click(object sender, EventArgs e)
994 | {
995 | Close();
996 | }
997 | //On form closing
998 | private void Form1_FormClosing(object sender, FormClosingEventArgs e)
999 | {
1000 | saveSettings();
1001 | }
1002 |
1003 |
1004 |
1005 |
1006 |
1007 |
1008 |
1009 |
1010 |
1011 |
1012 |
1013 |
1014 |
1015 |
1016 |
1017 |
1018 |
1019 |
1020 |
1021 |
1022 | }
1023 | }
1024 |
--------------------------------------------------------------------------------
/Form1.Designer.cs:
--------------------------------------------------------------------------------
1 | /* 3dpBurner Image2Gcode. A Image to GCODE converter for GRBL based devices.
2 | This file is part of 3dpBurner Image2Gcode application.
3 |
4 | Copyright (C) 2015 Adrian V. J. (villamany) contact: villamany@gmail.com
5 | This program is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | (at your option) any later version.
9 | This program is distributed in the hope that it will be useful,
10 | but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | GNU General Public License for more details.
13 | You should have received a copy of the GNU General Public License
14 | along with this program. If not, see .
15 | */
16 | //Form 1 (Main form design)
17 |
18 | namespace _3dpBurnerImage2Gcode
19 | {
20 | partial class Form1
21 | {
22 | ///
23 | /// Required designer variable.
24 | ///
25 | private System.ComponentModel.IContainer components = null;
26 |
27 | ///
28 | /// Clean up any resources being used.
29 | ///
30 | /// true if managed resources should be disposed; otherwise, false.
31 | protected override void Dispose(bool disposing)
32 | {
33 | if (disposing && (components != null))
34 | {
35 | components.Dispose();
36 | }
37 | base.Dispose(disposing);
38 | }
39 |
40 | #region Windows Form Designer generated code
41 |
42 | ///
43 | /// Required method for Designer support - do not modify
44 | /// the contents of this method with the code editor.
45 | ///
46 | private void InitializeComponent()
47 | {
48 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
49 | this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
50 | this.saveFileDialog1 = new System.Windows.Forms.SaveFileDialog();
51 | this.lblStatus = new System.Windows.Forms.ToolStripStatusLabel();
52 | this.statusStrip1 = new System.Windows.Forms.StatusStrip();
53 | this.tabPage2 = new System.Windows.Forms.TabPage();
54 | this.label12 = new System.Windows.Forms.Label();
55 | this.cbEngravingPattern = new System.Windows.Forms.ComboBox();
56 | this.groupBox3 = new System.Windows.Forms.GroupBox();
57 | this.lblFeedRateUnits = new System.Windows.Forms.Label();
58 | this.tbFeedRate = new System.Windows.Forms.TextBox();
59 | this.groupBox2 = new System.Windows.Forms.GroupBox();
60 | this.rbUseS = new System.Windows.Forms.RadioButton();
61 | this.rbUseZ = new System.Windows.Forms.RadioButton();
62 | this.cbEdgeLines = new System.Windows.Forms.CheckBox();
63 | this.label5 = new System.Windows.Forms.Label();
64 | this.rtbPostGcode = new System.Windows.Forms.RichTextBox();
65 | this.rtbPreGcode = new System.Windows.Forms.RichTextBox();
66 | this.label3 = new System.Windows.Forms.Label();
67 | this.btnGenerate = new System.Windows.Forms.Button();
68 | this.tabPage3 = new System.Windows.Forms.TabPage();
69 | this.label10 = new System.Windows.Forms.Label();
70 | this.tbLaserMax = new System.Windows.Forms.TextBox();
71 | this.tbLaserMin = new System.Windows.Forms.TextBox();
72 | this.label7 = new System.Windows.Forms.Label();
73 | this.label6 = new System.Windows.Forms.Label();
74 | this.tabPage1 = new System.Windows.Forms.TabPage();
75 | this.groupBox6 = new System.Windows.Forms.GroupBox();
76 | this.cbDirthering = new System.Windows.Forms.ComboBox();
77 | this.groupBox5 = new System.Windows.Forms.GroupBox();
78 | this.lblGamma = new System.Windows.Forms.Label();
79 | this.tBarGamma = new System.Windows.Forms.TrackBar();
80 | this.lblBrightness = new System.Windows.Forms.Label();
81 | this.tBarBrightness = new System.Windows.Forms.TrackBar();
82 | this.lblContrast = new System.Windows.Forms.Label();
83 | this.tBarContrast = new System.Windows.Forms.TrackBar();
84 | this.label4 = new System.Windows.Forms.Label();
85 | this.label2 = new System.Windows.Forms.Label();
86 | this.label1 = new System.Windows.Forms.Label();
87 | this.groupBox4 = new System.Windows.Forms.GroupBox();
88 | this.btnInvert = new System.Windows.Forms.Button();
89 | this.btnRotateLeft = new System.Windows.Forms.Button();
90 | this.btnRotateRight = new System.Windows.Forms.Button();
91 | this.btnVertMirror = new System.Windows.Forms.Button();
92 | this.btnHorizMirror = new System.Windows.Forms.Button();
93 | this.gbDimensions = new System.Windows.Forms.GroupBox();
94 | this.label11 = new System.Windows.Forms.Label();
95 | this.tbRes = new System.Windows.Forms.TextBox();
96 | this.cbLockRatio = new System.Windows.Forms.CheckBox();
97 | this.label9 = new System.Windows.Forms.Label();
98 | this.tbHeight = new System.Windows.Forms.TextBox();
99 | this.label8 = new System.Windows.Forms.Label();
100 | this.tbWidth = new System.Windows.Forms.TextBox();
101 | this.btnCheckOrig = new System.Windows.Forms.Button();
102 | this.tabControl1 = new System.Windows.Forms.TabControl();
103 | this.panel1 = new System.Windows.Forms.Panel();
104 | this.pictureBox1 = new System.Windows.Forms.PictureBox();
105 | this.menuStrip1 = new System.Windows.Forms.MenuStrip();
106 | this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
107 | this.openToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
108 | this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripSeparator();
109 | this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
110 | this.viewToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
111 | this.autoZoomToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
112 | this.unitsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
113 | this.metricmmToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
114 | this.imperialinToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
115 | this.helpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
116 | this.aboutToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
117 | this.statusStrip1.SuspendLayout();
118 | this.tabPage2.SuspendLayout();
119 | this.groupBox3.SuspendLayout();
120 | this.groupBox2.SuspendLayout();
121 | this.tabPage3.SuspendLayout();
122 | this.tabPage1.SuspendLayout();
123 | this.groupBox6.SuspendLayout();
124 | this.groupBox5.SuspendLayout();
125 | ((System.ComponentModel.ISupportInitialize)(this.tBarGamma)).BeginInit();
126 | ((System.ComponentModel.ISupportInitialize)(this.tBarBrightness)).BeginInit();
127 | ((System.ComponentModel.ISupportInitialize)(this.tBarContrast)).BeginInit();
128 | this.groupBox4.SuspendLayout();
129 | this.gbDimensions.SuspendLayout();
130 | this.tabControl1.SuspendLayout();
131 | this.panel1.SuspendLayout();
132 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
133 | this.menuStrip1.SuspendLayout();
134 | this.SuspendLayout();
135 | //
136 | // openFileDialog1
137 | //
138 | this.openFileDialog1.FileName = "openFileDialog1";
139 | this.openFileDialog1.Filter = "Image files (*.jpg, *.jpeg, *.jpe, *.jfif, *.png, *.bmp)| *.jpg; *.jpeg; *.jpe; *" +
140 | ".jfif; *.png; *.bmp|All files(*.*)|*.*";
141 | //
142 | // saveFileDialog1
143 | //
144 | this.saveFileDialog1.FileName = "file.nc";
145 | this.saveFileDialog1.Filter = "G-Code Files(*.CNC;*.NC;*.TAP;*.TXT)|*.CNC;*.NC;*.TAP;*.TXT|All files (*.*)|*.*";
146 | //
147 | // lblStatus
148 | //
149 | this.lblStatus.Name = "lblStatus";
150 | this.lblStatus.Size = new System.Drawing.Size(118, 15);
151 | this.lblStatus.Text = "toolStripStatusLabel1";
152 | //
153 | // statusStrip1
154 | //
155 | this.statusStrip1.BackColor = System.Drawing.SystemColors.Control;
156 | this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
157 | this.lblStatus});
158 | this.statusStrip1.LayoutStyle = System.Windows.Forms.ToolStripLayoutStyle.Flow;
159 | this.statusStrip1.Location = new System.Drawing.Point(0, 476);
160 | this.statusStrip1.Name = "statusStrip1";
161 | this.statusStrip1.Size = new System.Drawing.Size(649, 20);
162 | this.statusStrip1.SizingGrip = false;
163 | this.statusStrip1.TabIndex = 4;
164 | this.statusStrip1.Text = "statusStrip1";
165 | //
166 | // tabPage2
167 | //
168 | this.tabPage2.BackColor = System.Drawing.SystemColors.Window;
169 | this.tabPage2.Controls.Add(this.label12);
170 | this.tabPage2.Controls.Add(this.cbEngravingPattern);
171 | this.tabPage2.Controls.Add(this.groupBox3);
172 | this.tabPage2.Controls.Add(this.groupBox2);
173 | this.tabPage2.Controls.Add(this.cbEdgeLines);
174 | this.tabPage2.Controls.Add(this.label5);
175 | this.tabPage2.Controls.Add(this.rtbPostGcode);
176 | this.tabPage2.Controls.Add(this.rtbPreGcode);
177 | this.tabPage2.Controls.Add(this.label3);
178 | this.tabPage2.Controls.Add(this.btnGenerate);
179 | this.tabPage2.Location = new System.Drawing.Point(4, 22);
180 | this.tabPage2.Name = "tabPage2";
181 | this.tabPage2.Padding = new System.Windows.Forms.Padding(3);
182 | this.tabPage2.Size = new System.Drawing.Size(191, 422);
183 | this.tabPage2.TabIndex = 1;
184 | this.tabPage2.Text = "GCODE";
185 | //
186 | // label12
187 | //
188 | this.label12.AutoSize = true;
189 | this.label12.Location = new System.Drawing.Point(1, 316);
190 | this.label12.Name = "label12";
191 | this.label12.Size = new System.Drawing.Size(91, 13);
192 | this.label12.TabIndex = 20;
193 | this.label12.Text = "Engraving pattern";
194 | //
195 | // cbEngravingPattern
196 | //
197 | this.cbEngravingPattern.FormattingEnabled = true;
198 | this.cbEngravingPattern.Items.AddRange(new object[] {
199 | "Horizontal scanning",
200 | "Diagonal scanning"});
201 | this.cbEngravingPattern.Location = new System.Drawing.Point(1, 332);
202 | this.cbEngravingPattern.Name = "cbEngravingPattern";
203 | this.cbEngravingPattern.Size = new System.Drawing.Size(187, 21);
204 | this.cbEngravingPattern.TabIndex = 4;
205 | this.cbEngravingPattern.Text = "Horizontal scanning";
206 | //
207 | // groupBox3
208 | //
209 | this.groupBox3.Controls.Add(this.lblFeedRateUnits);
210 | this.groupBox3.Controls.Add(this.tbFeedRate);
211 | this.groupBox3.Location = new System.Drawing.Point(1, 210);
212 | this.groupBox3.Name = "groupBox3";
213 | this.groupBox3.Size = new System.Drawing.Size(187, 56);
214 | this.groupBox3.TabIndex = 2;
215 | this.groupBox3.TabStop = false;
216 | this.groupBox3.Text = "Feedrate";
217 | //
218 | // lblFeedRateUnits
219 | //
220 | this.lblFeedRateUnits.AutoSize = true;
221 | this.lblFeedRateUnits.Location = new System.Drawing.Point(53, 26);
222 | this.lblFeedRateUnits.Name = "lblFeedRateUnits";
223 | this.lblFeedRateUnits.Size = new System.Drawing.Size(44, 13);
224 | this.lblFeedRateUnits.TabIndex = 19;
225 | this.lblFeedRateUnits.Text = "mm/min";
226 | //
227 | // tbFeedRate
228 | //
229 | this.tbFeedRate.Location = new System.Drawing.Point(11, 23);
230 | this.tbFeedRate.Name = "tbFeedRate";
231 | this.tbFeedRate.Size = new System.Drawing.Size(36, 20);
232 | this.tbFeedRate.TabIndex = 2;
233 | this.tbFeedRate.Text = "1000";
234 | this.tbFeedRate.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.tbFeedRate_KeyPress);
235 | //
236 | // groupBox2
237 | //
238 | this.groupBox2.Controls.Add(this.rbUseS);
239 | this.groupBox2.Controls.Add(this.rbUseZ);
240 | this.groupBox2.Location = new System.Drawing.Point(1, 269);
241 | this.groupBox2.Name = "groupBox2";
242 | this.groupBox2.Size = new System.Drawing.Size(187, 41);
243 | this.groupBox2.TabIndex = 3;
244 | this.groupBox2.TabStop = false;
245 | this.groupBox2.Text = "Laser power command";
246 | //
247 | // rbUseS
248 | //
249 | this.rbUseS.AutoSize = true;
250 | this.rbUseS.Checked = true;
251 | this.rbUseS.Location = new System.Drawing.Point(21, 16);
252 | this.rbUseS.Name = "rbUseS";
253 | this.rbUseS.Size = new System.Drawing.Size(58, 17);
254 | this.rbUseS.TabIndex = 2;
255 | this.rbUseS.TabStop = true;
256 | this.rbUseS.Text = "Use \'S\'";
257 | this.rbUseS.UseVisualStyleBackColor = true;
258 | //
259 | // rbUseZ
260 | //
261 | this.rbUseZ.AutoSize = true;
262 | this.rbUseZ.Location = new System.Drawing.Point(117, 16);
263 | this.rbUseZ.Name = "rbUseZ";
264 | this.rbUseZ.Size = new System.Drawing.Size(58, 17);
265 | this.rbUseZ.TabIndex = 2;
266 | this.rbUseZ.Text = "Use \'Z\'";
267 | this.rbUseZ.UseVisualStyleBackColor = true;
268 | //
269 | // cbEdgeLines
270 | //
271 | this.cbEdgeLines.AutoSize = true;
272 | this.cbEdgeLines.Checked = true;
273 | this.cbEdgeLines.CheckState = System.Windows.Forms.CheckState.Checked;
274 | this.cbEdgeLines.Location = new System.Drawing.Point(39, 361);
275 | this.cbEdgeLines.Name = "cbEdgeLines";
276 | this.cbEdgeLines.Size = new System.Drawing.Size(112, 17);
277 | this.cbEdgeLines.TabIndex = 5;
278 | this.cbEdgeLines.Text = "Engrave edge line";
279 | this.cbEdgeLines.UseVisualStyleBackColor = true;
280 | //
281 | // label5
282 | //
283 | this.label5.AutoSize = true;
284 | this.label5.Location = new System.Drawing.Point(3, 107);
285 | this.label5.Name = "label5";
286 | this.label5.Size = new System.Drawing.Size(72, 13);
287 | this.label5.TabIndex = 4;
288 | this.label5.Text = "Gcode Footer";
289 | //
290 | // rtbPostGcode
291 | //
292 | this.rtbPostGcode.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
293 | this.rtbPostGcode.Location = new System.Drawing.Point(1, 121);
294 | this.rtbPostGcode.Name = "rtbPostGcode";
295 | this.rtbPostGcode.Size = new System.Drawing.Size(187, 83);
296 | this.rtbPostGcode.TabIndex = 1;
297 | this.rtbPostGcode.Text = "(Footer)\nG0 X0 Y0\n(Footer end)";
298 | this.rtbPostGcode.WordWrap = false;
299 | //
300 | // rtbPreGcode
301 | //
302 | this.rtbPreGcode.Location = new System.Drawing.Point(1, 20);
303 | this.rtbPreGcode.Name = "rtbPreGcode";
304 | this.rtbPreGcode.Size = new System.Drawing.Size(187, 83);
305 | this.rtbPreGcode.TabIndex = 0;
306 | this.rtbPreGcode.Text = "(Header)\nG0 X0 Y0\n(Header end)";
307 | this.rtbPreGcode.WordWrap = false;
308 | //
309 | // label3
310 | //
311 | this.label3.AutoSize = true;
312 | this.label3.Location = new System.Drawing.Point(2, 6);
313 | this.label3.Name = "label3";
314 | this.label3.Size = new System.Drawing.Size(77, 13);
315 | this.label3.TabIndex = 2;
316 | this.label3.Text = "Gcode Header";
317 | //
318 | // btnGenerate
319 | //
320 | this.btnGenerate.Location = new System.Drawing.Point(30, 386);
321 | this.btnGenerate.Name = "btnGenerate";
322 | this.btnGenerate.Size = new System.Drawing.Size(133, 23);
323 | this.btnGenerate.TabIndex = 6;
324 | this.btnGenerate.Text = "Generate file...";
325 | this.btnGenerate.UseVisualStyleBackColor = true;
326 | this.btnGenerate.Click += new System.EventHandler(this.btnGenerate_Click);
327 | //
328 | // tabPage3
329 | //
330 | this.tabPage3.Controls.Add(this.label10);
331 | this.tabPage3.Controls.Add(this.tbLaserMax);
332 | this.tabPage3.Controls.Add(this.tbLaserMin);
333 | this.tabPage3.Controls.Add(this.label7);
334 | this.tabPage3.Controls.Add(this.label6);
335 | this.tabPage3.Location = new System.Drawing.Point(4, 22);
336 | this.tabPage3.Name = "tabPage3";
337 | this.tabPage3.Padding = new System.Windows.Forms.Padding(3);
338 | this.tabPage3.Size = new System.Drawing.Size(191, 422);
339 | this.tabPage3.TabIndex = 2;
340 | this.tabPage3.Text = "Laser profile";
341 | this.tabPage3.UseVisualStyleBackColor = true;
342 | //
343 | // label10
344 | //
345 | this.label10.Location = new System.Drawing.Point(3, 130);
346 | this.label10.Name = "label10";
347 | this.label10.Size = new System.Drawing.Size(184, 66);
348 | this.label10.TabIndex = 30;
349 | this.label10.Text = "GrayScale values (0-255) will be interpolated between Min and Max Power Values.";
350 | //
351 | // tbLaserMax
352 | //
353 | this.tbLaserMax.Location = new System.Drawing.Point(6, 84);
354 | this.tbLaserMax.Name = "tbLaserMax";
355 | this.tbLaserMax.Size = new System.Drawing.Size(37, 20);
356 | this.tbLaserMax.TabIndex = 29;
357 | this.tbLaserMax.Text = "255";
358 | this.tbLaserMax.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.tbLaserMax_KeyPress);
359 | //
360 | // tbLaserMin
361 | //
362 | this.tbLaserMin.Location = new System.Drawing.Point(8, 34);
363 | this.tbLaserMin.Name = "tbLaserMin";
364 | this.tbLaserMin.Size = new System.Drawing.Size(35, 20);
365 | this.tbLaserMin.TabIndex = 28;
366 | this.tbLaserMin.Text = "0";
367 | this.tbLaserMin.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.tbLaserMin_KeyPress);
368 | //
369 | // label7
370 | //
371 | this.label7.AutoSize = true;
372 | this.label7.Location = new System.Drawing.Point(6, 68);
373 | this.label7.Name = "label7";
374 | this.label7.Size = new System.Drawing.Size(60, 13);
375 | this.label7.TabIndex = 16;
376 | this.label7.Text = "Max Power";
377 | //
378 | // label6
379 | //
380 | this.label6.AutoSize = true;
381 | this.label6.Location = new System.Drawing.Point(3, 18);
382 | this.label6.Name = "label6";
383 | this.label6.Size = new System.Drawing.Size(57, 13);
384 | this.label6.TabIndex = 14;
385 | this.label6.Text = "Min Power";
386 | //
387 | // tabPage1
388 | //
389 | this.tabPage1.BackColor = System.Drawing.SystemColors.Window;
390 | this.tabPage1.Controls.Add(this.groupBox6);
391 | this.tabPage1.Controls.Add(this.groupBox5);
392 | this.tabPage1.Controls.Add(this.groupBox4);
393 | this.tabPage1.Controls.Add(this.gbDimensions);
394 | this.tabPage1.Controls.Add(this.btnCheckOrig);
395 | this.tabPage1.Location = new System.Drawing.Point(4, 22);
396 | this.tabPage1.Name = "tabPage1";
397 | this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
398 | this.tabPage1.Size = new System.Drawing.Size(191, 422);
399 | this.tabPage1.TabIndex = 0;
400 | this.tabPage1.Text = "Image";
401 | //
402 | // groupBox6
403 | //
404 | this.groupBox6.Controls.Add(this.cbDirthering);
405 | this.groupBox6.Location = new System.Drawing.Point(1, 368);
406 | this.groupBox6.Name = "groupBox6";
407 | this.groupBox6.Size = new System.Drawing.Size(187, 48);
408 | this.groupBox6.TabIndex = 27;
409 | this.groupBox6.TabStop = false;
410 | this.groupBox6.Text = "Mode";
411 | //
412 | // cbDirthering
413 | //
414 | this.cbDirthering.FormattingEnabled = true;
415 | this.cbDirthering.Items.AddRange(new object[] {
416 | "GrayScale 8 bit",
417 | "Dirthering FS 1 bit"});
418 | this.cbDirthering.Location = new System.Drawing.Point(9, 17);
419 | this.cbDirthering.Name = "cbDirthering";
420 | this.cbDirthering.Size = new System.Drawing.Size(169, 21);
421 | this.cbDirthering.TabIndex = 14;
422 | this.cbDirthering.Text = "GrayScale 8 bit";
423 | this.cbDirthering.SelectedIndexChanged += new System.EventHandler(this.cbDirthering_SelectedIndexChanged);
424 | //
425 | // groupBox5
426 | //
427 | this.groupBox5.Controls.Add(this.lblGamma);
428 | this.groupBox5.Controls.Add(this.tBarGamma);
429 | this.groupBox5.Controls.Add(this.lblBrightness);
430 | this.groupBox5.Controls.Add(this.tBarBrightness);
431 | this.groupBox5.Controls.Add(this.lblContrast);
432 | this.groupBox5.Controls.Add(this.tBarContrast);
433 | this.groupBox5.Controls.Add(this.label4);
434 | this.groupBox5.Controls.Add(this.label2);
435 | this.groupBox5.Controls.Add(this.label1);
436 | this.groupBox5.Location = new System.Drawing.Point(1, 30);
437 | this.groupBox5.Name = "groupBox5";
438 | this.groupBox5.Size = new System.Drawing.Size(187, 218);
439 | this.groupBox5.TabIndex = 3;
440 | this.groupBox5.TabStop = false;
441 | //
442 | // lblGamma
443 | //
444 | this.lblGamma.AutoSize = true;
445 | this.lblGamma.Location = new System.Drawing.Point(86, 150);
446 | this.lblGamma.Name = "lblGamma";
447 | this.lblGamma.Size = new System.Drawing.Size(13, 13);
448 | this.lblGamma.TabIndex = 19;
449 | this.lblGamma.Text = "1";
450 | //
451 | // tBarGamma
452 | //
453 | this.tBarGamma.BackColor = System.Drawing.SystemColors.Window;
454 | this.tBarGamma.Location = new System.Drawing.Point(3, 164);
455 | this.tBarGamma.Maximum = 500;
456 | this.tBarGamma.Minimum = 1;
457 | this.tBarGamma.Name = "tBarGamma";
458 | this.tBarGamma.Size = new System.Drawing.Size(181, 45);
459 | this.tBarGamma.TabIndex = 2;
460 | this.tBarGamma.TickFrequency = 22;
461 | this.tBarGamma.TickStyle = System.Windows.Forms.TickStyle.Both;
462 | this.tBarGamma.Value = 50;
463 | this.tBarGamma.Scroll += new System.EventHandler(this.tBarGamma_Scroll);
464 | //
465 | // lblBrightness
466 | //
467 | this.lblBrightness.AutoSize = true;
468 | this.lblBrightness.Location = new System.Drawing.Point(86, 17);
469 | this.lblBrightness.Name = "lblBrightness";
470 | this.lblBrightness.Size = new System.Drawing.Size(13, 13);
471 | this.lblBrightness.TabIndex = 16;
472 | this.lblBrightness.Text = "0";
473 | //
474 | // tBarBrightness
475 | //
476 | this.tBarBrightness.BackColor = System.Drawing.SystemColors.Window;
477 | this.tBarBrightness.Location = new System.Drawing.Point(3, 31);
478 | this.tBarBrightness.Maximum = 127;
479 | this.tBarBrightness.Minimum = -127;
480 | this.tBarBrightness.Name = "tBarBrightness";
481 | this.tBarBrightness.Size = new System.Drawing.Size(181, 45);
482 | this.tBarBrightness.TabIndex = 0;
483 | this.tBarBrightness.TickFrequency = 10;
484 | this.tBarBrightness.TickStyle = System.Windows.Forms.TickStyle.Both;
485 | this.tBarBrightness.Scroll += new System.EventHandler(this.tBarBrightness_Scroll);
486 | //
487 | // lblContrast
488 | //
489 | this.lblContrast.AutoSize = true;
490 | this.lblContrast.Location = new System.Drawing.Point(86, 83);
491 | this.lblContrast.Name = "lblContrast";
492 | this.lblContrast.Size = new System.Drawing.Size(13, 13);
493 | this.lblContrast.TabIndex = 13;
494 | this.lblContrast.Text = "0";
495 | //
496 | // tBarContrast
497 | //
498 | this.tBarContrast.BackColor = System.Drawing.SystemColors.Window;
499 | this.tBarContrast.Location = new System.Drawing.Point(3, 97);
500 | this.tBarContrast.Maximum = 127;
501 | this.tBarContrast.Minimum = -127;
502 | this.tBarContrast.Name = "tBarContrast";
503 | this.tBarContrast.Size = new System.Drawing.Size(181, 45);
504 | this.tBarContrast.TabIndex = 1;
505 | this.tBarContrast.TickFrequency = 10;
506 | this.tBarContrast.TickStyle = System.Windows.Forms.TickStyle.Both;
507 | this.tBarContrast.Scroll += new System.EventHandler(this.tBarContrast_Scroll);
508 | //
509 | // label4
510 | //
511 | this.label4.AutoSize = true;
512 | this.label4.Location = new System.Drawing.Point(8, 144);
513 | this.label4.Name = "label4";
514 | this.label4.Size = new System.Drawing.Size(43, 13);
515 | this.label4.TabIndex = 20;
516 | this.label4.Text = "Gamma";
517 | //
518 | // label2
519 | //
520 | this.label2.AutoSize = true;
521 | this.label2.Location = new System.Drawing.Point(8, 11);
522 | this.label2.Name = "label2";
523 | this.label2.Size = new System.Drawing.Size(56, 13);
524 | this.label2.TabIndex = 17;
525 | this.label2.Text = "Brightness";
526 | //
527 | // label1
528 | //
529 | this.label1.AutoSize = true;
530 | this.label1.Location = new System.Drawing.Point(8, 77);
531 | this.label1.Name = "label1";
532 | this.label1.Size = new System.Drawing.Size(46, 13);
533 | this.label1.TabIndex = 14;
534 | this.label1.Text = "Contrast";
535 | //
536 | // groupBox4
537 | //
538 | this.groupBox4.Controls.Add(this.btnInvert);
539 | this.groupBox4.Controls.Add(this.btnRotateLeft);
540 | this.groupBox4.Controls.Add(this.btnRotateRight);
541 | this.groupBox4.Controls.Add(this.btnVertMirror);
542 | this.groupBox4.Controls.Add(this.btnHorizMirror);
543 | this.groupBox4.Location = new System.Drawing.Point(1, 244);
544 | this.groupBox4.Name = "groupBox4";
545 | this.groupBox4.Size = new System.Drawing.Size(187, 54);
546 | this.groupBox4.TabIndex = 4;
547 | this.groupBox4.TabStop = false;
548 | //
549 | // btnInvert
550 | //
551 | this.btnInvert.BackgroundImage = global::_3dpBurnerImage2Gcode.Properties.Resources.inv2;
552 | this.btnInvert.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
553 | this.btnInvert.Location = new System.Drawing.Point(151, 16);
554 | this.btnInvert.Name = "btnInvert";
555 | this.btnInvert.Size = new System.Drawing.Size(28, 28);
556 | this.btnInvert.TabIndex = 9;
557 | this.btnInvert.UseVisualStyleBackColor = true;
558 | this.btnInvert.Click += new System.EventHandler(this.btnInvert_Click);
559 | //
560 | // btnRotateLeft
561 | //
562 | this.btnRotateLeft.AccessibleDescription = "";
563 | this.btnRotateLeft.AccessibleRole = System.Windows.Forms.AccessibleRole.None;
564 | this.btnRotateLeft.BackgroundImage = global::_3dpBurnerImage2Gcode.Properties.Resources.left;
565 | this.btnRotateLeft.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
566 | this.btnRotateLeft.Location = new System.Drawing.Point(7, 16);
567 | this.btnRotateLeft.Name = "btnRotateLeft";
568 | this.btnRotateLeft.Size = new System.Drawing.Size(28, 28);
569 | this.btnRotateLeft.TabIndex = 5;
570 | this.btnRotateLeft.UseVisualStyleBackColor = true;
571 | this.btnRotateLeft.Click += new System.EventHandler(this.btnRotateLeft_Click);
572 | //
573 | // btnRotateRight
574 | //
575 | this.btnRotateRight.BackgroundImage = global::_3dpBurnerImage2Gcode.Properties.Resources.right;
576 | this.btnRotateRight.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
577 | this.btnRotateRight.Location = new System.Drawing.Point(43, 16);
578 | this.btnRotateRight.Name = "btnRotateRight";
579 | this.btnRotateRight.Size = new System.Drawing.Size(28, 28);
580 | this.btnRotateRight.TabIndex = 6;
581 | this.btnRotateRight.UseVisualStyleBackColor = true;
582 | this.btnRotateRight.Click += new System.EventHandler(this.btnRotateRight_Click);
583 | //
584 | // btnVertMirror
585 | //
586 | this.btnVertMirror.BackgroundImage = global::_3dpBurnerImage2Gcode.Properties.Resources.flip_vertical;
587 | this.btnVertMirror.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
588 | this.btnVertMirror.Location = new System.Drawing.Point(115, 16);
589 | this.btnVertMirror.Name = "btnVertMirror";
590 | this.btnVertMirror.Size = new System.Drawing.Size(28, 28);
591 | this.btnVertMirror.TabIndex = 8;
592 | this.btnVertMirror.UseVisualStyleBackColor = true;
593 | this.btnVertMirror.Click += new System.EventHandler(this.btnVertMirror_Click);
594 | //
595 | // btnHorizMirror
596 | //
597 | this.btnHorizMirror.BackgroundImage = global::_3dpBurnerImage2Gcode.Properties.Resources.flip_horizontal;
598 | this.btnHorizMirror.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
599 | this.btnHorizMirror.Location = new System.Drawing.Point(79, 16);
600 | this.btnHorizMirror.Name = "btnHorizMirror";
601 | this.btnHorizMirror.Size = new System.Drawing.Size(28, 28);
602 | this.btnHorizMirror.TabIndex = 7;
603 | this.btnHorizMirror.UseVisualStyleBackColor = true;
604 | this.btnHorizMirror.Click += new System.EventHandler(this.btnHorizMirror_Click);
605 | //
606 | // gbDimensions
607 | //
608 | this.gbDimensions.Controls.Add(this.label11);
609 | this.gbDimensions.Controls.Add(this.tbRes);
610 | this.gbDimensions.Controls.Add(this.cbLockRatio);
611 | this.gbDimensions.Controls.Add(this.label9);
612 | this.gbDimensions.Controls.Add(this.tbHeight);
613 | this.gbDimensions.Controls.Add(this.label8);
614 | this.gbDimensions.Controls.Add(this.tbWidth);
615 | this.gbDimensions.Location = new System.Drawing.Point(1, 299);
616 | this.gbDimensions.Name = "gbDimensions";
617 | this.gbDimensions.Size = new System.Drawing.Size(187, 67);
618 | this.gbDimensions.TabIndex = 5;
619 | this.gbDimensions.TabStop = false;
620 | this.gbDimensions.Text = "Output (mm)";
621 | //
622 | // label11
623 | //
624 | this.label11.AutoSize = true;
625 | this.label11.Location = new System.Drawing.Point(100, 43);
626 | this.label11.Name = "label11";
627 | this.label11.Size = new System.Drawing.Size(34, 13);
628 | this.label11.TabIndex = 25;
629 | this.label11.Text = "Resol";
630 | //
631 | // tbRes
632 | //
633 | this.tbRes.Location = new System.Drawing.Point(137, 40);
634 | this.tbRes.Name = "tbRes";
635 | this.tbRes.Size = new System.Drawing.Size(34, 20);
636 | this.tbRes.TabIndex = 12;
637 | this.tbRes.Text = "0.18";
638 | this.tbRes.Enter += new System.EventHandler(this.tbRes_Enter);
639 | this.tbRes.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.tbRes_KeyPress);
640 | this.tbRes.Leave += new System.EventHandler(this.tbRes_Leave);
641 | //
642 | // cbLockRatio
643 | //
644 | this.cbLockRatio.AutoSize = true;
645 | this.cbLockRatio.Checked = true;
646 | this.cbLockRatio.CheckState = System.Windows.Forms.CheckState.Checked;
647 | this.cbLockRatio.Location = new System.Drawing.Point(100, 20);
648 | this.cbLockRatio.Name = "cbLockRatio";
649 | this.cbLockRatio.Size = new System.Drawing.Size(82, 17);
650 | this.cbLockRatio.TabIndex = 13;
651 | this.cbLockRatio.Text = "Aspect ratio";
652 | this.cbLockRatio.UseVisualStyleBackColor = true;
653 | this.cbLockRatio.CheckedChanged += new System.EventHandler(this.cbLockRatio_CheckedChanged);
654 | //
655 | // label9
656 | //
657 | this.label9.AutoSize = true;
658 | this.label9.Location = new System.Drawing.Point(9, 43);
659 | this.label9.Name = "label9";
660 | this.label9.Size = new System.Drawing.Size(38, 13);
661 | this.label9.TabIndex = 22;
662 | this.label9.Text = "Height";
663 | //
664 | // tbHeight
665 | //
666 | this.tbHeight.Location = new System.Drawing.Point(56, 40);
667 | this.tbHeight.Name = "tbHeight";
668 | this.tbHeight.Size = new System.Drawing.Size(36, 20);
669 | this.tbHeight.TabIndex = 11;
670 | this.tbHeight.Text = "100";
671 | this.tbHeight.Enter += new System.EventHandler(this.tbHeight_Enter);
672 | this.tbHeight.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.tbHeight_KeyPress);
673 | this.tbHeight.Leave += new System.EventHandler(this.tbHeight_Leave);
674 | //
675 | // label8
676 | //
677 | this.label8.AutoSize = true;
678 | this.label8.Location = new System.Drawing.Point(10, 22);
679 | this.label8.Name = "label8";
680 | this.label8.Size = new System.Drawing.Size(35, 13);
681 | this.label8.TabIndex = 20;
682 | this.label8.Text = "Width";
683 | //
684 | // tbWidth
685 | //
686 | this.tbWidth.Location = new System.Drawing.Point(56, 19);
687 | this.tbWidth.Name = "tbWidth";
688 | this.tbWidth.Size = new System.Drawing.Size(36, 20);
689 | this.tbWidth.TabIndex = 10;
690 | this.tbWidth.Text = "60";
691 | this.tbWidth.Enter += new System.EventHandler(this.tbWidth_Enter);
692 | this.tbWidth.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.tbWidth_KeyPress);
693 | this.tbWidth.Leave += new System.EventHandler(this.tbWidth_Leave);
694 | //
695 | // btnCheckOrig
696 | //
697 | this.btnCheckOrig.Location = new System.Drawing.Point(51, 6);
698 | this.btnCheckOrig.Name = "btnCheckOrig";
699 | this.btnCheckOrig.Size = new System.Drawing.Size(93, 23);
700 | this.btnCheckOrig.TabIndex = 1;
701 | this.btnCheckOrig.Text = "Check Original";
702 | this.btnCheckOrig.UseVisualStyleBackColor = true;
703 | this.btnCheckOrig.MouseDown += new System.Windows.Forms.MouseEventHandler(this.btnCheckOrig_MouseDown);
704 | this.btnCheckOrig.MouseUp += new System.Windows.Forms.MouseEventHandler(this.btnCheckOrig_MouseUp);
705 | //
706 | // tabControl1
707 | //
708 | this.tabControl1.Controls.Add(this.tabPage1);
709 | this.tabControl1.Controls.Add(this.tabPage3);
710 | this.tabControl1.Controls.Add(this.tabPage2);
711 | this.tabControl1.Location = new System.Drawing.Point(452, 26);
712 | this.tabControl1.Name = "tabControl1";
713 | this.tabControl1.SelectedIndex = 0;
714 | this.tabControl1.Size = new System.Drawing.Size(199, 448);
715 | this.tabControl1.TabIndex = 3;
716 | //
717 | // panel1
718 | //
719 | this.panel1.AutoScroll = true;
720 | this.panel1.BackColor = System.Drawing.SystemColors.GradientInactiveCaption;
721 | this.panel1.Controls.Add(this.pictureBox1);
722 | this.panel1.Location = new System.Drawing.Point(1, 25);
723 | this.panel1.Name = "panel1";
724 | this.panel1.Size = new System.Drawing.Size(450, 450);
725 | this.panel1.TabIndex = 6;
726 | //
727 | // pictureBox1
728 | //
729 | this.pictureBox1.BackColor = System.Drawing.SystemColors.GradientInactiveCaption;
730 | this.pictureBox1.Location = new System.Drawing.Point(1, 1);
731 | this.pictureBox1.Margin = new System.Windows.Forms.Padding(0);
732 | this.pictureBox1.Name = "pictureBox1";
733 | this.pictureBox1.Size = new System.Drawing.Size(450, 450);
734 | this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
735 | this.pictureBox1.TabIndex = 1;
736 | this.pictureBox1.TabStop = false;
737 | //
738 | // menuStrip1
739 | //
740 | this.menuStrip1.BackColor = System.Drawing.SystemColors.GradientActiveCaption;
741 | this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
742 | this.fileToolStripMenuItem,
743 | this.viewToolStripMenuItem,
744 | this.unitsToolStripMenuItem,
745 | this.helpToolStripMenuItem});
746 | this.menuStrip1.Location = new System.Drawing.Point(0, 0);
747 | this.menuStrip1.Name = "menuStrip1";
748 | this.menuStrip1.Size = new System.Drawing.Size(649, 24);
749 | this.menuStrip1.TabIndex = 9;
750 | this.menuStrip1.Text = "menuStrip2";
751 | //
752 | // fileToolStripMenuItem
753 | //
754 | this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
755 | this.openToolStripMenuItem,
756 | this.toolStripMenuItem1,
757 | this.exitToolStripMenuItem});
758 | this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
759 | this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20);
760 | this.fileToolStripMenuItem.Text = "File";
761 | //
762 | // openToolStripMenuItem
763 | //
764 | this.openToolStripMenuItem.Name = "openToolStripMenuItem";
765 | this.openToolStripMenuItem.Size = new System.Drawing.Size(112, 22);
766 | this.openToolStripMenuItem.Text = "Open...";
767 | this.openToolStripMenuItem.Click += new System.EventHandler(this.openToolStripMenuItem_Click);
768 | //
769 | // toolStripMenuItem1
770 | //
771 | this.toolStripMenuItem1.Name = "toolStripMenuItem1";
772 | this.toolStripMenuItem1.Size = new System.Drawing.Size(109, 6);
773 | //
774 | // exitToolStripMenuItem
775 | //
776 | this.exitToolStripMenuItem.Name = "exitToolStripMenuItem";
777 | this.exitToolStripMenuItem.Size = new System.Drawing.Size(112, 22);
778 | this.exitToolStripMenuItem.Text = "Exit";
779 | this.exitToolStripMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem_Click);
780 | //
781 | // viewToolStripMenuItem
782 | //
783 | this.viewToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
784 | this.autoZoomToolStripMenuItem});
785 | this.viewToolStripMenuItem.Name = "viewToolStripMenuItem";
786 | this.viewToolStripMenuItem.Size = new System.Drawing.Size(44, 20);
787 | this.viewToolStripMenuItem.Text = "View";
788 | //
789 | // autoZoomToolStripMenuItem
790 | //
791 | this.autoZoomToolStripMenuItem.CheckOnClick = true;
792 | this.autoZoomToolStripMenuItem.Name = "autoZoomToolStripMenuItem";
793 | this.autoZoomToolStripMenuItem.Size = new System.Drawing.Size(176, 22);
794 | this.autoZoomToolStripMenuItem.Text = "Preview AutoZoom";
795 | this.autoZoomToolStripMenuItem.Click += new System.EventHandler(this.autoZoomToolStripMenuItem_Click);
796 | //
797 | // unitsToolStripMenuItem
798 | //
799 | this.unitsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
800 | this.metricmmToolStripMenuItem,
801 | this.imperialinToolStripMenuItem});
802 | this.unitsToolStripMenuItem.Name = "unitsToolStripMenuItem";
803 | this.unitsToolStripMenuItem.Size = new System.Drawing.Size(46, 20);
804 | this.unitsToolStripMenuItem.Text = "Units";
805 | //
806 | // metricmmToolStripMenuItem
807 | //
808 | this.metricmmToolStripMenuItem.CheckOnClick = true;
809 | this.metricmmToolStripMenuItem.Name = "metricmmToolStripMenuItem";
810 | this.metricmmToolStripMenuItem.Size = new System.Drawing.Size(141, 22);
811 | this.metricmmToolStripMenuItem.Text = "Metric (mm)";
812 | this.metricmmToolStripMenuItem.Click += new System.EventHandler(this.metricmmToolStripMenuItem_Click);
813 | //
814 | // imperialinToolStripMenuItem
815 | //
816 | this.imperialinToolStripMenuItem.CheckOnClick = true;
817 | this.imperialinToolStripMenuItem.Name = "imperialinToolStripMenuItem";
818 | this.imperialinToolStripMenuItem.Size = new System.Drawing.Size(141, 22);
819 | this.imperialinToolStripMenuItem.Text = "Imperial (in)";
820 | this.imperialinToolStripMenuItem.Click += new System.EventHandler(this.imperialinToolStripMenuItem_Click);
821 | //
822 | // helpToolStripMenuItem
823 | //
824 | this.helpToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
825 | this.aboutToolStripMenuItem1});
826 | this.helpToolStripMenuItem.Name = "helpToolStripMenuItem";
827 | this.helpToolStripMenuItem.Size = new System.Drawing.Size(44, 20);
828 | this.helpToolStripMenuItem.Text = "Help";
829 | //
830 | // aboutToolStripMenuItem1
831 | //
832 | this.aboutToolStripMenuItem1.Name = "aboutToolStripMenuItem1";
833 | this.aboutToolStripMenuItem1.Size = new System.Drawing.Size(107, 22);
834 | this.aboutToolStripMenuItem1.Text = "About";
835 | this.aboutToolStripMenuItem1.Click += new System.EventHandler(this.aboutToolStripMenuItem_Click);
836 | //
837 | // Form1
838 | //
839 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
840 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
841 | this.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
842 | this.BackColor = System.Drawing.SystemColors.GradientInactiveCaption;
843 | this.ClientSize = new System.Drawing.Size(649, 496);
844 | this.Controls.Add(this.panel1);
845 | this.Controls.Add(this.tabControl1);
846 | this.Controls.Add(this.statusStrip1);
847 | this.Controls.Add(this.menuStrip1);
848 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
849 | this.MaximizeBox = false;
850 | this.Name = "Form1";
851 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
852 | this.Text = "3dpBurner Image2Gcode";
853 | this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Form1_FormClosing);
854 | this.Load += new System.EventHandler(this.Form1_Load);
855 | this.statusStrip1.ResumeLayout(false);
856 | this.statusStrip1.PerformLayout();
857 | this.tabPage2.ResumeLayout(false);
858 | this.tabPage2.PerformLayout();
859 | this.groupBox3.ResumeLayout(false);
860 | this.groupBox3.PerformLayout();
861 | this.groupBox2.ResumeLayout(false);
862 | this.groupBox2.PerformLayout();
863 | this.tabPage3.ResumeLayout(false);
864 | this.tabPage3.PerformLayout();
865 | this.tabPage1.ResumeLayout(false);
866 | this.groupBox6.ResumeLayout(false);
867 | this.groupBox5.ResumeLayout(false);
868 | this.groupBox5.PerformLayout();
869 | ((System.ComponentModel.ISupportInitialize)(this.tBarGamma)).EndInit();
870 | ((System.ComponentModel.ISupportInitialize)(this.tBarBrightness)).EndInit();
871 | ((System.ComponentModel.ISupportInitialize)(this.tBarContrast)).EndInit();
872 | this.groupBox4.ResumeLayout(false);
873 | this.gbDimensions.ResumeLayout(false);
874 | this.gbDimensions.PerformLayout();
875 | this.tabControl1.ResumeLayout(false);
876 | this.panel1.ResumeLayout(false);
877 | this.panel1.PerformLayout();
878 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
879 | this.menuStrip1.ResumeLayout(false);
880 | this.menuStrip1.PerformLayout();
881 | this.ResumeLayout(false);
882 | this.PerformLayout();
883 |
884 | }
885 |
886 | #endregion
887 |
888 | private System.Windows.Forms.OpenFileDialog openFileDialog1;
889 | private System.Windows.Forms.SaveFileDialog saveFileDialog1;
890 | private System.Windows.Forms.ToolStripStatusLabel lblStatus;
891 | private System.Windows.Forms.StatusStrip statusStrip1;
892 | private System.Windows.Forms.TabPage tabPage2;
893 | private System.Windows.Forms.Label label12;
894 | private System.Windows.Forms.ComboBox cbEngravingPattern;
895 | private System.Windows.Forms.GroupBox groupBox3;
896 | private System.Windows.Forms.Label lblFeedRateUnits;
897 | private System.Windows.Forms.TextBox tbFeedRate;
898 | private System.Windows.Forms.GroupBox groupBox2;
899 | private System.Windows.Forms.RadioButton rbUseS;
900 | private System.Windows.Forms.RadioButton rbUseZ;
901 | private System.Windows.Forms.CheckBox cbEdgeLines;
902 | private System.Windows.Forms.Label label5;
903 | private System.Windows.Forms.RichTextBox rtbPostGcode;
904 | private System.Windows.Forms.RichTextBox rtbPreGcode;
905 | private System.Windows.Forms.Label label3;
906 | private System.Windows.Forms.Button btnGenerate;
907 | private System.Windows.Forms.TabPage tabPage3;
908 | private System.Windows.Forms.Label label7;
909 | private System.Windows.Forms.Label label6;
910 | private System.Windows.Forms.TabPage tabPage1;
911 | private System.Windows.Forms.GroupBox groupBox6;
912 | private System.Windows.Forms.ComboBox cbDirthering;
913 | private System.Windows.Forms.GroupBox groupBox5;
914 | private System.Windows.Forms.Label lblGamma;
915 | private System.Windows.Forms.TrackBar tBarGamma;
916 | private System.Windows.Forms.Label lblBrightness;
917 | private System.Windows.Forms.TrackBar tBarBrightness;
918 | private System.Windows.Forms.Label lblContrast;
919 | private System.Windows.Forms.TrackBar tBarContrast;
920 | private System.Windows.Forms.Label label4;
921 | private System.Windows.Forms.Label label2;
922 | private System.Windows.Forms.Label label1;
923 | private System.Windows.Forms.GroupBox groupBox4;
924 | private System.Windows.Forms.Button btnInvert;
925 | private System.Windows.Forms.Button btnRotateLeft;
926 | private System.Windows.Forms.Button btnRotateRight;
927 | private System.Windows.Forms.Button btnVertMirror;
928 | private System.Windows.Forms.Button btnHorizMirror;
929 | private System.Windows.Forms.GroupBox gbDimensions;
930 | private System.Windows.Forms.Label label11;
931 | private System.Windows.Forms.TextBox tbRes;
932 | private System.Windows.Forms.CheckBox cbLockRatio;
933 | private System.Windows.Forms.Label label9;
934 | private System.Windows.Forms.TextBox tbHeight;
935 | private System.Windows.Forms.Label label8;
936 | private System.Windows.Forms.TextBox tbWidth;
937 | private System.Windows.Forms.Button btnCheckOrig;
938 | private System.Windows.Forms.TabControl tabControl1;
939 | private System.Windows.Forms.Panel panel1;
940 | private System.Windows.Forms.TextBox tbLaserMin;
941 | private System.Windows.Forms.TextBox tbLaserMax;
942 | private System.Windows.Forms.MenuStrip menuStrip1;
943 | private System.Windows.Forms.ToolStripMenuItem unitsToolStripMenuItem;
944 | private System.Windows.Forms.ToolStripMenuItem metricmmToolStripMenuItem;
945 | private System.Windows.Forms.ToolStripMenuItem imperialinToolStripMenuItem;
946 | private System.Windows.Forms.ToolStripMenuItem viewToolStripMenuItem;
947 | private System.Windows.Forms.ToolStripMenuItem autoZoomToolStripMenuItem;
948 | private System.Windows.Forms.PictureBox pictureBox1;
949 | private System.Windows.Forms.ToolStripMenuItem helpToolStripMenuItem;
950 | private System.Windows.Forms.ToolStripMenuItem aboutToolStripMenuItem1;
951 | private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem;
952 | private System.Windows.Forms.ToolStripMenuItem openToolStripMenuItem;
953 | private System.Windows.Forms.ToolStripSeparator toolStripMenuItem1;
954 | private System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem;
955 | private System.Windows.Forms.Label label10;
956 | }
957 | }
958 |
959 |
--------------------------------------------------------------------------------