kopia lustrzana https://github.com/njcrawford/EmbroideryReader
Cleaned up and fixed rotate and scale code (resolves #4), fixed incorrect image being sent to print preview
rodzic
5d3f5886b8
commit
a5f7f8e14a
|
@ -456,6 +456,7 @@ namespace PesFile
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return DrawArea;
|
return DrawArea;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -53,7 +53,7 @@ namespace embroideryReader
|
||||||
|
|
||||||
private const String SETTING_WINDOW_WIDTH = "window width";
|
private const String SETTING_WINDOW_WIDTH = "window width";
|
||||||
private const String SETTING_WINDOW_HEIGHT = "window height";
|
private const String SETTING_WINDOW_HEIGHT = "window height";
|
||||||
private const String SETTING_DESIGN_SCALE = "design scale";
|
private const String SETTING_AUTOSCALE_DESIGN = "auto scale design";
|
||||||
|
|
||||||
private const String SECTION_TRANSPARENCY_GRID = "transparency grid";
|
private const String SECTION_TRANSPARENCY_GRID = "transparency grid";
|
||||||
private const String SETTING_TRANSPARENCY_GRID_ENABLE = "enabled";
|
private const String SETTING_TRANSPARENCY_GRID_ENABLE = "enabled";
|
||||||
|
@ -307,45 +307,15 @@ namespace embroideryReader
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public ScaleSetting DesignScale
|
public bool AutoScaleDesign
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
string temp = settings.getValue(SETTING_DESIGN_SCALE, "");
|
return settings.getValue(SETTING_AUTOSCALE_DESIGN, false);
|
||||||
|
|
||||||
switch(temp)
|
|
||||||
{
|
|
||||||
case "Scale90":
|
|
||||||
return ScaleSetting.Scale90;
|
|
||||||
case "Scale80":
|
|
||||||
return ScaleSetting.Scale80;
|
|
||||||
case "Scale70":
|
|
||||||
return ScaleSetting.Scale70;
|
|
||||||
case "Scale60":
|
|
||||||
return ScaleSetting.Scale60;
|
|
||||||
case "Scale50":
|
|
||||||
return ScaleSetting.Scale50;
|
|
||||||
case "Scale40":
|
|
||||||
return ScaleSetting.Scale40;
|
|
||||||
case "Scale30":
|
|
||||||
return ScaleSetting.Scale30;
|
|
||||||
case "Scale20":
|
|
||||||
return ScaleSetting.Scale20;
|
|
||||||
case "Scale10":
|
|
||||||
return ScaleSetting.Scale10;
|
|
||||||
case "Scale5":
|
|
||||||
return ScaleSetting.Scale5;
|
|
||||||
|
|
||||||
case "FitToWindow":
|
|
||||||
return ScaleSetting.FitToWindow;
|
|
||||||
|
|
||||||
default:
|
|
||||||
return ScaleSetting.Scale100;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
settings.setValue(SETTING_DESIGN_SCALE, value);
|
settings.setValue(SETTING_AUTOSCALE_DESIGN, value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -77,6 +77,7 @@ namespace embroideryReader
|
||||||
this.printPreviewDialog1 = new System.Windows.Forms.PrintPreviewDialog();
|
this.printPreviewDialog1 = new System.Windows.Forms.PrintPreviewDialog();
|
||||||
this.saveFileDialog1 = new System.Windows.Forms.SaveFileDialog();
|
this.saveFileDialog1 = new System.Windows.Forms.SaveFileDialog();
|
||||||
this.timer1 = new System.Windows.Forms.Timer(this.components);
|
this.timer1 = new System.Windows.Forms.Timer(this.components);
|
||||||
|
this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator();
|
||||||
this.menuStrip1.SuspendLayout();
|
this.menuStrip1.SuspendLayout();
|
||||||
this.panel2.SuspendLayout();
|
this.panel2.SuspendLayout();
|
||||||
this.statusStrip1.SuspendLayout();
|
this.statusStrip1.SuspendLayout();
|
||||||
|
@ -238,6 +239,7 @@ namespace embroideryReader
|
||||||
//
|
//
|
||||||
this.zoomToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
this.zoomToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
this.fitToWindowToolStripMenuItem,
|
this.fitToWindowToolStripMenuItem,
|
||||||
|
this.toolStripSeparator5,
|
||||||
this.scale100ToolStripMenuItem,
|
this.scale100ToolStripMenuItem,
|
||||||
this.scale90ToolStripMenuItem,
|
this.scale90ToolStripMenuItem,
|
||||||
this.scale80ToolStripMenuItem,
|
this.scale80ToolStripMenuItem,
|
||||||
|
@ -257,86 +259,84 @@ namespace embroideryReader
|
||||||
// fitToWindowToolStripMenuItem
|
// fitToWindowToolStripMenuItem
|
||||||
//
|
//
|
||||||
this.fitToWindowToolStripMenuItem.Name = "fitToWindowToolStripMenuItem";
|
this.fitToWindowToolStripMenuItem.Name = "fitToWindowToolStripMenuItem";
|
||||||
this.fitToWindowToolStripMenuItem.Size = new System.Drawing.Size(146, 22);
|
this.fitToWindowToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
|
||||||
this.fitToWindowToolStripMenuItem.Text = "Fit to window";
|
this.fitToWindowToolStripMenuItem.Text = "Fit to window";
|
||||||
this.fitToWindowToolStripMenuItem.Click += new System.EventHandler(this.fitToWindowToolStripMenuItem_Click);
|
this.fitToWindowToolStripMenuItem.Click += new System.EventHandler(this.fitToWindowToolStripMenuItem_Click);
|
||||||
//
|
//
|
||||||
// scale100ToolStripMenuItem
|
// scale100ToolStripMenuItem
|
||||||
//
|
//
|
||||||
this.scale100ToolStripMenuItem.Checked = true;
|
|
||||||
this.scale100ToolStripMenuItem.CheckState = System.Windows.Forms.CheckState.Checked;
|
|
||||||
this.scale100ToolStripMenuItem.Name = "scale100ToolStripMenuItem";
|
this.scale100ToolStripMenuItem.Name = "scale100ToolStripMenuItem";
|
||||||
this.scale100ToolStripMenuItem.Size = new System.Drawing.Size(146, 22);
|
this.scale100ToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
|
||||||
this.scale100ToolStripMenuItem.Text = "100%";
|
this.scale100ToolStripMenuItem.Text = "100%";
|
||||||
this.scale100ToolStripMenuItem.Click += new System.EventHandler(this.scale100ToolStripMenuItem_Click);
|
this.scale100ToolStripMenuItem.Click += new System.EventHandler(this.scale100ToolStripMenuItem_Click);
|
||||||
//
|
//
|
||||||
// scale90ToolStripMenuItem
|
// scale90ToolStripMenuItem
|
||||||
//
|
//
|
||||||
this.scale90ToolStripMenuItem.Name = "scale90ToolStripMenuItem";
|
this.scale90ToolStripMenuItem.Name = "scale90ToolStripMenuItem";
|
||||||
this.scale90ToolStripMenuItem.Size = new System.Drawing.Size(146, 22);
|
this.scale90ToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
|
||||||
this.scale90ToolStripMenuItem.Text = "90%";
|
this.scale90ToolStripMenuItem.Text = "90%";
|
||||||
this.scale90ToolStripMenuItem.Click += new System.EventHandler(this.scale90ToolStripMenuItem_Click);
|
this.scale90ToolStripMenuItem.Click += new System.EventHandler(this.scale90ToolStripMenuItem_Click);
|
||||||
//
|
//
|
||||||
// scale80ToolStripMenuItem
|
// scale80ToolStripMenuItem
|
||||||
//
|
//
|
||||||
this.scale80ToolStripMenuItem.Name = "scale80ToolStripMenuItem";
|
this.scale80ToolStripMenuItem.Name = "scale80ToolStripMenuItem";
|
||||||
this.scale80ToolStripMenuItem.Size = new System.Drawing.Size(146, 22);
|
this.scale80ToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
|
||||||
this.scale80ToolStripMenuItem.Text = "80%";
|
this.scale80ToolStripMenuItem.Text = "80%";
|
||||||
this.scale80ToolStripMenuItem.Click += new System.EventHandler(this.scale80ToolStripMenuItem_Click);
|
this.scale80ToolStripMenuItem.Click += new System.EventHandler(this.scale80ToolStripMenuItem_Click);
|
||||||
//
|
//
|
||||||
// scale70ToolStripMenuItem
|
// scale70ToolStripMenuItem
|
||||||
//
|
//
|
||||||
this.scale70ToolStripMenuItem.Name = "scale70ToolStripMenuItem";
|
this.scale70ToolStripMenuItem.Name = "scale70ToolStripMenuItem";
|
||||||
this.scale70ToolStripMenuItem.Size = new System.Drawing.Size(146, 22);
|
this.scale70ToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
|
||||||
this.scale70ToolStripMenuItem.Text = "70%";
|
this.scale70ToolStripMenuItem.Text = "70%";
|
||||||
this.scale70ToolStripMenuItem.Click += new System.EventHandler(this.scale70ToolStripMenuItem_Click);
|
this.scale70ToolStripMenuItem.Click += new System.EventHandler(this.scale70ToolStripMenuItem_Click);
|
||||||
//
|
//
|
||||||
// scale60ToolStripMenuItem
|
// scale60ToolStripMenuItem
|
||||||
//
|
//
|
||||||
this.scale60ToolStripMenuItem.Name = "scale60ToolStripMenuItem";
|
this.scale60ToolStripMenuItem.Name = "scale60ToolStripMenuItem";
|
||||||
this.scale60ToolStripMenuItem.Size = new System.Drawing.Size(146, 22);
|
this.scale60ToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
|
||||||
this.scale60ToolStripMenuItem.Text = "60%";
|
this.scale60ToolStripMenuItem.Text = "60%";
|
||||||
this.scale60ToolStripMenuItem.Click += new System.EventHandler(this.scale60ToolStripMenuItem_Click);
|
this.scale60ToolStripMenuItem.Click += new System.EventHandler(this.scale60ToolStripMenuItem_Click);
|
||||||
//
|
//
|
||||||
// scale50ToolStripMenuItem
|
// scale50ToolStripMenuItem
|
||||||
//
|
//
|
||||||
this.scale50ToolStripMenuItem.Name = "scale50ToolStripMenuItem";
|
this.scale50ToolStripMenuItem.Name = "scale50ToolStripMenuItem";
|
||||||
this.scale50ToolStripMenuItem.Size = new System.Drawing.Size(146, 22);
|
this.scale50ToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
|
||||||
this.scale50ToolStripMenuItem.Text = "50%";
|
this.scale50ToolStripMenuItem.Text = "50%";
|
||||||
this.scale50ToolStripMenuItem.Click += new System.EventHandler(this.scale50ToolStripMenuItem_Click);
|
this.scale50ToolStripMenuItem.Click += new System.EventHandler(this.scale50ToolStripMenuItem_Click);
|
||||||
//
|
//
|
||||||
// scale40ToolStripMenuItem
|
// scale40ToolStripMenuItem
|
||||||
//
|
//
|
||||||
this.scale40ToolStripMenuItem.Name = "scale40ToolStripMenuItem";
|
this.scale40ToolStripMenuItem.Name = "scale40ToolStripMenuItem";
|
||||||
this.scale40ToolStripMenuItem.Size = new System.Drawing.Size(146, 22);
|
this.scale40ToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
|
||||||
this.scale40ToolStripMenuItem.Text = "40%";
|
this.scale40ToolStripMenuItem.Text = "40%";
|
||||||
this.scale40ToolStripMenuItem.Click += new System.EventHandler(this.scale40ToolStripMenuItem_Click);
|
this.scale40ToolStripMenuItem.Click += new System.EventHandler(this.scale40ToolStripMenuItem_Click);
|
||||||
//
|
//
|
||||||
// scale30ToolStripMenuItem
|
// scale30ToolStripMenuItem
|
||||||
//
|
//
|
||||||
this.scale30ToolStripMenuItem.Name = "scale30ToolStripMenuItem";
|
this.scale30ToolStripMenuItem.Name = "scale30ToolStripMenuItem";
|
||||||
this.scale30ToolStripMenuItem.Size = new System.Drawing.Size(146, 22);
|
this.scale30ToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
|
||||||
this.scale30ToolStripMenuItem.Text = "30%";
|
this.scale30ToolStripMenuItem.Text = "30%";
|
||||||
this.scale30ToolStripMenuItem.Click += new System.EventHandler(this.scale30ToolStripMenuItem_Click);
|
this.scale30ToolStripMenuItem.Click += new System.EventHandler(this.scale30ToolStripMenuItem_Click);
|
||||||
//
|
//
|
||||||
// scale20ToolStripMenuItem
|
// scale20ToolStripMenuItem
|
||||||
//
|
//
|
||||||
this.scale20ToolStripMenuItem.Name = "scale20ToolStripMenuItem";
|
this.scale20ToolStripMenuItem.Name = "scale20ToolStripMenuItem";
|
||||||
this.scale20ToolStripMenuItem.Size = new System.Drawing.Size(146, 22);
|
this.scale20ToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
|
||||||
this.scale20ToolStripMenuItem.Text = "20%";
|
this.scale20ToolStripMenuItem.Text = "20%";
|
||||||
this.scale20ToolStripMenuItem.Click += new System.EventHandler(this.scale20ToolStripMenuItem_Click);
|
this.scale20ToolStripMenuItem.Click += new System.EventHandler(this.scale20ToolStripMenuItem_Click);
|
||||||
//
|
//
|
||||||
// scale10ToolStripMenuItem
|
// scale10ToolStripMenuItem
|
||||||
//
|
//
|
||||||
this.scale10ToolStripMenuItem.Name = "scale10ToolStripMenuItem";
|
this.scale10ToolStripMenuItem.Name = "scale10ToolStripMenuItem";
|
||||||
this.scale10ToolStripMenuItem.Size = new System.Drawing.Size(146, 22);
|
this.scale10ToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
|
||||||
this.scale10ToolStripMenuItem.Text = "10%";
|
this.scale10ToolStripMenuItem.Text = "10%";
|
||||||
this.scale10ToolStripMenuItem.Click += new System.EventHandler(this.scale10ToolStripMenuItem_Click);
|
this.scale10ToolStripMenuItem.Click += new System.EventHandler(this.scale10ToolStripMenuItem_Click);
|
||||||
//
|
//
|
||||||
// scale5ToolStripMenuItem
|
// scale5ToolStripMenuItem
|
||||||
//
|
//
|
||||||
this.scale5ToolStripMenuItem.Name = "scale5ToolStripMenuItem";
|
this.scale5ToolStripMenuItem.Name = "scale5ToolStripMenuItem";
|
||||||
this.scale5ToolStripMenuItem.Size = new System.Drawing.Size(146, 22);
|
this.scale5ToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
|
||||||
this.scale5ToolStripMenuItem.Text = "5%";
|
this.scale5ToolStripMenuItem.Text = "5%";
|
||||||
this.scale5ToolStripMenuItem.Click += new System.EventHandler(this.scale5ToolStripMenuItem_Click);
|
this.scale5ToolStripMenuItem.Click += new System.EventHandler(this.scale5ToolStripMenuItem_Click);
|
||||||
//
|
//
|
||||||
|
@ -444,6 +444,11 @@ namespace embroideryReader
|
||||||
//
|
//
|
||||||
this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
|
this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
|
||||||
//
|
//
|
||||||
|
// toolStripSeparator5
|
||||||
|
//
|
||||||
|
this.toolStripSeparator5.Name = "toolStripSeparator5";
|
||||||
|
this.toolStripSeparator5.Size = new System.Drawing.Size(149, 6);
|
||||||
|
//
|
||||||
// frmMain
|
// frmMain
|
||||||
//
|
//
|
||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||||
|
@ -518,6 +523,7 @@ namespace embroideryReader
|
||||||
private System.Windows.Forms.ToolStripMenuItem scale20ToolStripMenuItem;
|
private System.Windows.Forms.ToolStripMenuItem scale20ToolStripMenuItem;
|
||||||
private System.Windows.Forms.ToolStripMenuItem scale10ToolStripMenuItem;
|
private System.Windows.Forms.ToolStripMenuItem scale10ToolStripMenuItem;
|
||||||
private System.Windows.Forms.ToolStripMenuItem scale5ToolStripMenuItem;
|
private System.Windows.Forms.ToolStripMenuItem scale5ToolStripMenuItem;
|
||||||
|
private System.Windows.Forms.ToolStripSeparator toolStripSeparator5;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -32,26 +32,11 @@ using System.Text;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
|
using System.Drawing.Imaging;
|
||||||
|
using System.Drawing.Drawing2D;
|
||||||
|
|
||||||
namespace embroideryReader
|
namespace embroideryReader
|
||||||
{
|
{
|
||||||
public enum ScaleSetting
|
|
||||||
{
|
|
||||||
Unknown,
|
|
||||||
FitToWindow,
|
|
||||||
Scale100,
|
|
||||||
Scale90,
|
|
||||||
Scale80,
|
|
||||||
Scale70,
|
|
||||||
Scale60,
|
|
||||||
Scale50,
|
|
||||||
Scale40,
|
|
||||||
Scale30,
|
|
||||||
Scale20,
|
|
||||||
Scale10,
|
|
||||||
Scale5,
|
|
||||||
}
|
|
||||||
|
|
||||||
public partial class frmMain : Form
|
public partial class frmMain : Form
|
||||||
{
|
{
|
||||||
private string[] args;
|
private string[] args;
|
||||||
|
@ -64,10 +49,10 @@ namespace embroideryReader
|
||||||
|
|
||||||
private Translation translation;
|
private Translation translation;
|
||||||
|
|
||||||
private float designScale = 1.0F;
|
private float designScale = 1.0f;
|
||||||
private ScaleSetting designScaleSetting = ScaleSetting.Scale100;
|
|
||||||
private Size panel2LastUpdateSize;
|
private Size panel2LastUpdateSize;
|
||||||
private bool maximizeChanged = false;
|
private bool maximizeChanged = false;
|
||||||
|
private int designRotation = 0;
|
||||||
|
|
||||||
public frmMain()
|
public frmMain()
|
||||||
{
|
{
|
||||||
|
@ -87,7 +72,7 @@ namespace embroideryReader
|
||||||
}
|
}
|
||||||
this.Width = settings.windowWidth;
|
this.Width = settings.windowWidth;
|
||||||
this.Height = settings.windowHeight;
|
this.Height = settings.windowHeight;
|
||||||
setDesignScaleSetting(settings.DesignScale, false);
|
setDesignScaleSetting(1.0f, settings.AutoScaleDesign, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Form1_Load(object sender, EventArgs e)
|
private void Form1_Load(object sender, EventArgs e)
|
||||||
|
@ -162,8 +147,72 @@ namespace embroideryReader
|
||||||
|
|
||||||
private void updateDesignImage()
|
private void updateDesignImage()
|
||||||
{
|
{
|
||||||
Bitmap tempImage = design.designToBitmap((float)settings.threadThickness, (settings.filterStiches), settings.filterStitchesThreshold, designScale);
|
Bitmap tempImage = design.designToBitmap((float)settings.threadThickness, (settings.filterStiches), settings.filterStitchesThreshold, 1.0f);
|
||||||
|
|
||||||
|
// Rotate image
|
||||||
|
switch (designRotation)
|
||||||
|
{
|
||||||
|
case 90:
|
||||||
|
tempImage.RotateFlip(RotateFlipType.Rotate90FlipNone);
|
||||||
|
break;
|
||||||
|
case 180:
|
||||||
|
tempImage.RotateFlip(RotateFlipType.Rotate180FlipNone);
|
||||||
|
break;
|
||||||
|
case 270:
|
||||||
|
tempImage.RotateFlip(RotateFlipType.Rotate270FlipNone);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Scale image
|
||||||
|
if (fitToWindowToolStripMenuItem.Checked)
|
||||||
|
{
|
||||||
|
// Calculate size of image based on available drawing area
|
||||||
|
float windowWidth = panel2.Width - 3;
|
||||||
|
float windowHeight = panel2.Height - 3;
|
||||||
|
|
||||||
|
// Figure out which dimension is more constrained
|
||||||
|
float widthScale = windowWidth / tempImage.Width;
|
||||||
|
float heightScale = windowHeight / tempImage.Height;
|
||||||
|
if (widthScale < heightScale)
|
||||||
|
{
|
||||||
|
designScale = widthScale;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
designScale = heightScale;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int width = (int)(tempImage.Width * designScale);
|
||||||
|
int height = (int)(tempImage.Height * designScale);
|
||||||
|
|
||||||
|
if (width != tempImage.Width || height != tempImage.Height)
|
||||||
|
{
|
||||||
|
// Scale image code from http://stackoverflow.com/questions/1922040/resize-an-image-c-sharp
|
||||||
|
Rectangle destRect = new Rectangle(0, 0, width, height);
|
||||||
|
Bitmap destImage = new Bitmap(width, height);
|
||||||
|
|
||||||
|
destImage.SetResolution(tempImage.HorizontalResolution, tempImage.VerticalResolution);
|
||||||
|
|
||||||
|
using (var graphics = Graphics.FromImage(destImage))
|
||||||
|
{
|
||||||
|
graphics.CompositingMode = CompositingMode.SourceCopy;
|
||||||
|
graphics.CompositingQuality = CompositingQuality.HighQuality;
|
||||||
|
graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
|
||||||
|
graphics.SmoothingMode = SmoothingMode.HighQuality;
|
||||||
|
graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;
|
||||||
|
|
||||||
|
using (var wrapMode = new ImageAttributes())
|
||||||
|
{
|
||||||
|
wrapMode.SetWrapMode(WrapMode.TileFlipXY);
|
||||||
|
graphics.DrawImage(tempImage, destRect, 0, 0, tempImage.Width, tempImage.Height, GraphicsUnit.Pixel, wrapMode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Keep the scaled image and toss the intermediate image
|
||||||
|
tempImage = destImage;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add transparency grid
|
||||||
if (settings.transparencyGridEnabled)
|
if (settings.transparencyGridEnabled)
|
||||||
{
|
{
|
||||||
DrawArea = new Bitmap(tempImage.Width, tempImage.Height);
|
DrawArea = new Bitmap(tempImage.Width, tempImage.Height);
|
||||||
|
@ -199,6 +248,9 @@ namespace embroideryReader
|
||||||
panel1.Invalidate();
|
panel1.Invalidate();
|
||||||
|
|
||||||
panel2LastUpdateSize = panel2.Size;
|
panel2LastUpdateSize = panel2.Size;
|
||||||
|
|
||||||
|
// Update window title
|
||||||
|
this.Text = "File (" + (designScale * 100).ToString("0") + "%) " + APP_TITLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void openFile(string filename)
|
private void openFile(string filename)
|
||||||
|
@ -212,10 +264,6 @@ namespace embroideryReader
|
||||||
{
|
{
|
||||||
this.Text = System.IO.Path.GetFileName(filename) + " - " + APP_TITLE;
|
this.Text = System.IO.Path.GetFileName(filename) + " - " + APP_TITLE;
|
||||||
|
|
||||||
if(designScaleSetting == ScaleSetting.FitToWindow)
|
|
||||||
{
|
|
||||||
fitDesignToWindow();
|
|
||||||
}
|
|
||||||
updateDesignImage();
|
updateDesignImage();
|
||||||
|
|
||||||
if (design.getFormatWarning())
|
if (design.getFormatWarning())
|
||||||
|
@ -298,7 +346,6 @@ namespace embroideryReader
|
||||||
if (DrawArea != null)
|
if (DrawArea != null)
|
||||||
{
|
{
|
||||||
e.Graphics.DrawImage(DrawArea, 0, 0);
|
e.Graphics.DrawImage(DrawArea, 0, 0);
|
||||||
//e.Graphics.DrawImage(DrawArea, e.Graphics.ClipBounds, e.Graphics.ClipBounds, GraphicsUnit.Pixel);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -409,8 +456,8 @@ namespace embroideryReader
|
||||||
float dpiY = 100;
|
float dpiY = 100;
|
||||||
double inchesPerMM = 0.03937007874015748031496062992126;
|
double inchesPerMM = 0.03937007874015748031496062992126;
|
||||||
e.Graphics.ScaleTransform((float)(dpiX * inchesPerMM * 0.1), (float)(dpiY * inchesPerMM * 0.1));
|
e.Graphics.ScaleTransform((float)(dpiX * inchesPerMM * 0.1), (float)(dpiY * inchesPerMM * 0.1));
|
||||||
Bitmap tempDrawArea = design.designToBitmap((float)settings.threadThickness, (settings.filterStiches), settings.filterStitchesThreshold, designScale);
|
Bitmap tempDrawArea = design.designToBitmap((float)settings.threadThickness, (settings.filterStiches), settings.filterStitchesThreshold, 1.0f);
|
||||||
e.Graphics.DrawImage(DrawArea, 30, 30);
|
e.Graphics.DrawImage(tempDrawArea, 30, 30);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -436,51 +483,28 @@ namespace embroideryReader
|
||||||
|
|
||||||
private void refreshToolStripMenuItem_Click(object sender, EventArgs e)
|
private void refreshToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
if (design != null && design.getStatus() == PesFile.statusEnum.Ready)
|
designRotation = 0;
|
||||||
{
|
updateDesignImage();
|
||||||
updateDesignImage();
|
|
||||||
|
|
||||||
if (design.getFormatWarning())
|
|
||||||
{
|
|
||||||
toolStripStatusLabel1.Text = translation.GetTranslatedString(Translation.StringID.UNSUPPORTED_FORMAT); // "The format of this file is not completely supported"
|
|
||||||
}
|
|
||||||
else if (design.getColorWarning())
|
|
||||||
{
|
|
||||||
toolStripStatusLabel1.Text = translation.GetTranslatedString(Translation.StringID.COLOR_WARNING); // "Colors shown for this design may be inaccurate"
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
toolStripStatusLabel1.Text = "";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void rotateLeftToolStripMenuItem_Click(object sender, EventArgs e)
|
private void rotateLeftToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Bitmap temp = new Bitmap(DrawArea.Height, DrawArea.Width);
|
designRotation -= 90;
|
||||||
Graphics g = Graphics.FromImage(temp);
|
if(designRotation < 0)
|
||||||
g.RotateTransform(270.0f);
|
{
|
||||||
g.DrawImage(DrawArea, -DrawArea.Width, 0);
|
designRotation += 360;
|
||||||
g.Dispose();
|
}
|
||||||
DrawArea = temp;
|
updateDesignImage();
|
||||||
int temp2 = panel1.Width;
|
|
||||||
panel1.Width = panel1.Height;
|
|
||||||
panel1.Height = temp2;
|
|
||||||
panel1.Invalidate();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void rotateRightToolStripMenuItem_Click(object sender, EventArgs e)
|
private void rotateRightToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Bitmap temp = new Bitmap(DrawArea.Height, DrawArea.Width);
|
designRotation += 90;
|
||||||
Graphics g = Graphics.FromImage(temp);
|
if (designRotation >= 360)
|
||||||
g.RotateTransform(90.0f);
|
{
|
||||||
g.DrawImage(DrawArea, 0, -DrawArea.Height);
|
designRotation -= 360;
|
||||||
g.Dispose();
|
}
|
||||||
DrawArea = temp;
|
updateDesignImage();
|
||||||
int temp2 = panel1.Width;
|
|
||||||
panel1.Width = panel1.Height;
|
|
||||||
panel1.Height = temp2;
|
|
||||||
panel1.Invalidate();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void showDebugInfoToolStripMenuItem_Click(object sender, EventArgs e)
|
private void showDebugInfoToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
@ -592,104 +616,20 @@ namespace embroideryReader
|
||||||
aboutToolStripMenuItem.Text = translation.GetTranslatedString(Translation.StringID.MENU_ABOUT);
|
aboutToolStripMenuItem.Text = translation.GetTranslatedString(Translation.StringID.MENU_ABOUT);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Calculate designScale so that the image fits on the screen
|
private void setDesignScaleSetting(float scale, bool autoSize, bool updateDesign)
|
||||||
private void fitDesignToWindow()
|
|
||||||
{
|
{
|
||||||
int designWidth = design.GetWidth();
|
if(autoSize)
|
||||||
int designHeight = design.GetHeight();
|
|
||||||
float windowWidth = panel2.Width - 10;
|
|
||||||
float windowHeight = panel2.Height - 10;
|
|
||||||
|
|
||||||
// Figure out which dimension is more constrained
|
|
||||||
float widthScale = windowWidth / designWidth;
|
|
||||||
float heightScale = windowHeight / designHeight;
|
|
||||||
if (widthScale < heightScale)
|
|
||||||
{
|
{
|
||||||
designScale = widthScale;
|
fitToWindowToolStripMenuItem.Checked = true;
|
||||||
|
settings.AutoScaleDesign = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
designScale = heightScale;
|
fitToWindowToolStripMenuItem.Checked = false;
|
||||||
|
settings.AutoScaleDesign = false;
|
||||||
|
designScale = scale;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
private void setDesignScaleSetting(ScaleSetting scale, bool updateDesign)
|
|
||||||
{
|
|
||||||
// Clear selected scale menu item
|
|
||||||
fitToWindowToolStripMenuItem.Checked = false;
|
|
||||||
scale100ToolStripMenuItem.Checked = false;
|
|
||||||
scale90ToolStripMenuItem.Checked = false;
|
|
||||||
scale80ToolStripMenuItem.Checked = false;
|
|
||||||
scale70ToolStripMenuItem.Checked = false;
|
|
||||||
scale60ToolStripMenuItem.Checked = false;
|
|
||||||
scale50ToolStripMenuItem.Checked = false;
|
|
||||||
scale40ToolStripMenuItem.Checked = false;
|
|
||||||
scale30ToolStripMenuItem.Checked = false;
|
|
||||||
scale20ToolStripMenuItem.Checked = false;
|
|
||||||
scale10ToolStripMenuItem.Checked = false;
|
|
||||||
scale5ToolStripMenuItem.Checked = false;
|
|
||||||
|
|
||||||
designScaleSetting = scale;
|
|
||||||
if (updateDesign)
|
|
||||||
{
|
|
||||||
settings.DesignScale = scale;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (scale)
|
|
||||||
{
|
|
||||||
case ScaleSetting.FitToWindow:
|
|
||||||
fitToWindowToolStripMenuItem.Checked = true;
|
|
||||||
if (updateDesign)
|
|
||||||
{
|
|
||||||
fitDesignToWindow();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case ScaleSetting.Scale100:
|
|
||||||
scale100ToolStripMenuItem.Checked = true;
|
|
||||||
designScale = 1.0f;
|
|
||||||
break;
|
|
||||||
case ScaleSetting.Scale90:
|
|
||||||
scale90ToolStripMenuItem.Checked = true;
|
|
||||||
designScale = 0.9f;
|
|
||||||
break;
|
|
||||||
case ScaleSetting.Scale80:
|
|
||||||
scale80ToolStripMenuItem.Checked = true;
|
|
||||||
designScale = 0.8f;
|
|
||||||
break;
|
|
||||||
case ScaleSetting.Scale70:
|
|
||||||
scale70ToolStripMenuItem.Checked = true;
|
|
||||||
designScale = 0.7f;
|
|
||||||
break;
|
|
||||||
case ScaleSetting.Scale60:
|
|
||||||
scale60ToolStripMenuItem.Checked = true;
|
|
||||||
designScale = 0.6f;
|
|
||||||
break;
|
|
||||||
case ScaleSetting.Scale50:
|
|
||||||
scale50ToolStripMenuItem.Checked = true;
|
|
||||||
designScale = 0.5f;
|
|
||||||
break;
|
|
||||||
case ScaleSetting.Scale40:
|
|
||||||
scale40ToolStripMenuItem.Checked = true;
|
|
||||||
designScale = 0.4f;
|
|
||||||
break;
|
|
||||||
case ScaleSetting.Scale30:
|
|
||||||
scale30ToolStripMenuItem.Checked = true;
|
|
||||||
designScale = 0.3f;
|
|
||||||
break;
|
|
||||||
case ScaleSetting.Scale20:
|
|
||||||
scale20ToolStripMenuItem.Checked = true;
|
|
||||||
designScale = 0.2f;
|
|
||||||
break;
|
|
||||||
case ScaleSetting.Scale10:
|
|
||||||
scale10ToolStripMenuItem.Checked = true;
|
|
||||||
designScale = 0.1f;
|
|
||||||
break;
|
|
||||||
case ScaleSetting.Scale5:
|
|
||||||
scale5ToolStripMenuItem.Checked = true;
|
|
||||||
designScale = 0.05f;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (updateDesign)
|
if (updateDesign)
|
||||||
{
|
{
|
||||||
updateDesignImage();
|
updateDesignImage();
|
||||||
|
@ -698,62 +638,65 @@ namespace embroideryReader
|
||||||
|
|
||||||
private void scale100ToolStripMenuItem_Click(object sender, EventArgs e)
|
private void scale100ToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
setDesignScaleSetting(ScaleSetting.Scale100, true);
|
setDesignScaleSetting(1.0f, false, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void scale90ToolStripMenuItem_Click(object sender, EventArgs e)
|
private void scale90ToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
setDesignScaleSetting(ScaleSetting.Scale90, true);
|
setDesignScaleSetting(0.9f, false, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void scale80ToolStripMenuItem_Click(object sender, EventArgs e)
|
private void scale80ToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
setDesignScaleSetting(ScaleSetting.Scale80, true);
|
setDesignScaleSetting(0.8f, false, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void scale70ToolStripMenuItem_Click(object sender, EventArgs e)
|
private void scale70ToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
setDesignScaleSetting(ScaleSetting.Scale70, true);
|
setDesignScaleSetting(0.7f, false, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void scale60ToolStripMenuItem_Click(object sender, EventArgs e)
|
private void scale60ToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
setDesignScaleSetting(ScaleSetting.Scale60, true);
|
setDesignScaleSetting(0.6f, false, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void scale50ToolStripMenuItem_Click(object sender, EventArgs e)
|
private void scale50ToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
setDesignScaleSetting(ScaleSetting.Scale50, true);
|
setDesignScaleSetting(0.5f, false, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void scale40ToolStripMenuItem_Click(object sender, EventArgs e)
|
private void scale40ToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
setDesignScaleSetting(ScaleSetting.Scale40, true);
|
setDesignScaleSetting(0.4f, false, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void scale30ToolStripMenuItem_Click(object sender, EventArgs e)
|
private void scale30ToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
setDesignScaleSetting(ScaleSetting.Scale30, true);
|
setDesignScaleSetting(0.3f, false, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void scale20ToolStripMenuItem_Click(object sender, EventArgs e)
|
private void scale20ToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
setDesignScaleSetting(ScaleSetting.Scale20, true);
|
setDesignScaleSetting(0.2f, false, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void scale10ToolStripMenuItem_Click(object sender, EventArgs e)
|
private void scale10ToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
setDesignScaleSetting(ScaleSetting.Scale10, true);
|
setDesignScaleSetting(0.1f, false, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void scale5ToolStripMenuItem_Click(object sender, EventArgs e)
|
private void scale5ToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
setDesignScaleSetting(ScaleSetting.Scale5, true);
|
setDesignScaleSetting(0.05f, false, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void fitToWindowToolStripMenuItem_Click(object sender, EventArgs e)
|
private void fitToWindowToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
setDesignScaleSetting(ScaleSetting.FitToWindow, true);
|
// Toggle checked state
|
||||||
|
fitToWindowToolStripMenuItem.Checked = !fitToWindowToolStripMenuItem.Checked;
|
||||||
|
// Update design
|
||||||
|
setDesignScaleSetting(1.0f, fitToWindowToolStripMenuItem.Checked, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void frmMain_ResizeEnd(object sender, EventArgs e)
|
private void frmMain_ResizeEnd(object sender, EventArgs e)
|
||||||
|
@ -761,9 +704,8 @@ namespace embroideryReader
|
||||||
// Finished resize, update design scale if set to fit-to-window.
|
// Finished resize, update design scale if set to fit-to-window.
|
||||||
// This event also captures window move events, so check if the size
|
// This event also captures window move events, so check if the size
|
||||||
// of panel2 has changed to see if it's really a resize event.
|
// of panel2 has changed to see if it's really a resize event.
|
||||||
if (designScaleSetting == ScaleSetting.FitToWindow && panel2LastUpdateSize != panel2.Size)
|
if (fitToWindowToolStripMenuItem.Checked && panel2LastUpdateSize != panel2.Size)
|
||||||
{
|
{
|
||||||
fitDesignToWindow();
|
|
||||||
updateDesignImage();
|
updateDesignImage();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -778,9 +720,8 @@ namespace embroideryReader
|
||||||
{
|
{
|
||||||
maximizeChanged = false;
|
maximizeChanged = false;
|
||||||
|
|
||||||
if (designScaleSetting == ScaleSetting.FitToWindow)
|
if (fitToWindowToolStripMenuItem.Checked)
|
||||||
{
|
{
|
||||||
fitDesignToWindow();
|
|
||||||
updateDesignImage();
|
updateDesignImage();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -175,7 +175,7 @@ namespace embroideryThumbs
|
||||||
logfile.WriteLine("Called Extract");
|
logfile.WriteLine("Called Extract");
|
||||||
logfile.Close();
|
logfile.Close();
|
||||||
|
|
||||||
System.Drawing.Bitmap designBitmap = designFile.designToBitmap(3, false, 0, 100);
|
System.Drawing.Bitmap designBitmap = designFile.designToBitmap(3, false, 0, 1.0f);
|
||||||
|
|
||||||
IntPtr hBmp = designBitmap.GetHbitmap();
|
IntPtr hBmp = designBitmap.GetHbitmap();
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue