├── 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 | --------------------------------------------------------------------------------