private void TestBtn_Click(object sender, EventArgs e) { if (testAlignmentPipeline.Count <= 0) { return; } List <AlignmentPipelineResults.AlignmentMethodResult> alignmentMethodResults = new List <AlignmentPipelineResults.AlignmentMethodResult>(); IOutputArray outputImageArr; outputImage = testImage; CvInvoke.Resize(testImage, outputImage, templateImage.Size); //outputImage = testImage.Resize(templateImage.Width, templateImage.Height, Emgu.CV.CvEnum.Inter.Cubic); for (int i = 0; i < testAlignmentPipeline.Count; i++) { Exception exception = null; AlignmentPipelineResults.AlignmentMethodResult alignmentMethodResult = null; AlignmentMethod alignmentMethod = testAlignmentPipeline[i]; if (alignmentMethod.PipelineIndex == -1 || ommittedAlignmetMethodIndeces.Contains(alignmentMethod.PipelineIndex)) { continue; } if (alignmentMethod.GetAlignmentMethodType == AlignmentMethodType.Anchors) { var aIM = (AnchorAlignmentMethod)alignmentMethod; bool isSuccess = aIM.ApplyMethod(outputImage, out outputImageArr, out RectangleF[] detectedAnchors, out RectangleF[] warpedAnchors, out RectangleF[] scaledMainAnchorRegions, out RectangleF scaledMainTestRegion, out Mat homography, out long alignmentTime, out exception);
private void ConfigureMethod(AlignmentMethod alignmentMethod) { switch (alignmentMethod.GetAlignmentMethodType) { case AlignmentMethodType.Anchors: AnchorAlignmentMethodForm anchorAlignmentMethodTool = new AnchorAlignmentMethodForm((AnchorAlignmentMethod)alignmentMethod, templateImage); anchorAlignmentMethodTool.OnConfigurationFinishedEvent += (AnchorAlignmentMethod anchorAlignmentMethod) => { AlignmentMethods[alignmentMethod.PipelineIndex] = anchorAlignmentMethod; anchorAlignmentMethodTool.Close(); }; anchorAlignmentMethodTool.ShowDialog(); break; case AlignmentMethodType.Registration: RegistrationAlignmentMethodForm registrationAlignmentMethodForm = new RegistrationAlignmentMethodForm((RegistrationAlignmentMethod)alignmentMethod, templateImage); registrationAlignmentMethodForm.OnConfigurationFinishedEvent += (RegistrationAlignmentMethod registrationAlignmentMethod) => { AlignmentMethods[alignmentMethod.PipelineIndex] = registrationAlignmentMethod; registrationAlignmentMethodForm.Close(); }; registrationAlignmentMethodForm.ShowDialog(); break; } }
private void DeleteMethod(AlignmentMethodListItem methodListItem) { if (Messages.ShowQuestion("Are you sure you want to delete this method?", "Hold On", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) == DialogResult.No) { return; } AlignmentMethod method = AlignmentMethods[methodListItem.listIndex]; bool isDeleted = AlignmentMethods.Remove(method); if (isDeleted) { containerFlowPanel.Controls.Remove(methodListItem); if (AlignmentMethods.Count == 0) { if (!containerFlowPanel.Controls.Contains(emptyListLabel)) { containerFlowPanel.Controls.Add(emptyListLabel); } emptyListLabel.Visible = true; } } for (int i = 0; i < AlignmentMethods.Count; i++) { AlignmentMethods[i].PipelineIndex = i; AlignmentMethodListItem alignmentMethodListItem = (AlignmentMethodListItem)containerFlowPanel.Controls[i]; alignmentMethodListItem.listIndex = i; } }
public static AlignmentMethodListItem Create(AlignmentMethod method) { AlignmentMethodListItem alignmentMethodListItem = new AlignmentMethodListItem(); alignmentMethodListItem.MethodName = method.MethodName; alignmentMethodListItem.AlignmentMethodType = method.GetAlignmentMethodType; alignmentMethodListItem.listIndex = method.PipelineIndex; return(alignmentMethodListItem); }
private void AddMethod(AlignmentMethod alignmentMethod) { AlignmentMethodListItem alignmentMethodListItem = AlignmentMethodListItem.Create(alignmentMethod); alignmentMethodListItem.OnControlButtonPressedEvent += OnConfigControlButtonPressed; containerFlowPanel.Controls.Add(alignmentMethodListItem); alignmentMethodListItem.Size = new Size(containerFlowPanel.Size.Width, alignmentMethodListItem.Size.Height); emptyListLabel.Visible = false; AlignmentMethods.Add(alignmentMethod); }
private void Initialize(List <AlignmentMethod> alignmentMethods) { pipelineTestMainTablePanel.Dock = DockStyle.None; pipelineTestControlsPanel.Dock = DockStyle.None; MainLayoutPanel.SetRow(pipelineTestMainTablePanel, 0); MainLayoutPanel.SetRow(pipelineTestControlsPanel, 1); pipelineTestMainTablePanel.Dock = DockStyle.Fill; pipelineTestControlsPanel.Dock = DockStyle.Fill; pipelineTestSettingsTablePanel.RowCount = alignmentMethods.Count == 1 ? alignmentMethods.Count + 1 : alignmentMethods.Count; pipelineTestSettingsTablePanel.RowStyles.Clear(); for (int i = 0; i < pipelineTestSettingsTablePanel.RowCount; i++) { if (i == pipelineTestSettingsTablePanel.RowCount - 1 && alignmentMethods.Count == 1) { pipelineTestSettingsTablePanel.RowStyles.Add(new RowStyle(SizeType.Percent, 100)); } else { pipelineTestSettingsTablePanel.RowStyles.Add(new RowStyle(SizeType.Absolute, 50)); AlignmentMethod alignmentMethod = alignmentMethods[i]; TabPageAdv methodTabPage = CreateAlignmentMethodTabPage(alignmentMethod); alignmentPipelineTabControl.TabPages.Add(methodTabPage); methodTabPage.Dock = DockStyle.Fill; PipelineTestMethodSettingControl pipelineTestMethodSettingControl = new PipelineTestMethodSettingControl(alignmentMethod.MethodName, alignmentMethod.PipelineIndex); pipelineTestMethodSettingControl.OnEnabledChangedEvent += (int pipelineIndex, bool isEnabled) => { if (!isEnabled) { ommittedAlignmetMethodIndeces.Add(pipelineIndex); } else { ommittedAlignmetMethodIndeces.Remove(pipelineIndex); } }; pipelineTestSettingsTablePanel.Controls.Add(pipelineTestMethodSettingControl, 0, i); pipelineTestMethodSettingControl.Dock = DockStyle.Top; } } }
private void MoveMethod(AlignmentMethodListItem methodListItem, bool isUp) { int curIndex = methodListItem.listIndex; AlignmentMethod method = AlignmentMethods[curIndex]; int moveIndex = 0; if (isUp) { moveIndex = curIndex == 0? 0 : curIndex - 1; } else { moveIndex = curIndex == AlignmentMethods.Count - 1? curIndex : curIndex + 1; } containerFlowPanel.Controls.SetChildIndex(methodListItem, moveIndex); AlignmentMethods.RemoveAt(curIndex); AlignmentMethods.Insert(moveIndex, method); method.PipelineIndex = moveIndex; AlignmentMethods[curIndex].PipelineIndex = curIndex; methodListItem.listIndex = moveIndex; }
private void OnConfigControlButtonPressed(object sender, ControlButton controlButton) { AlignmentMethodListItem alignmentMethodListItem = (AlignmentMethodListItem)sender; switch (controlButton) { case ControlButton.Delete: DeleteMethod(alignmentMethodListItem); break; case ControlButton.MoveUp: MoveMethod(alignmentMethodListItem, true); break; case ControlButton.MoveDown: MoveMethod(alignmentMethodListItem, false); break; case ControlButton.Configure: AlignmentMethod alignmentMethod = AlignmentMethods[alignmentMethodListItem.listIndex]; ConfigureMethod(alignmentMethod); break; } }
private string getFormattedString(string text, StringAlignment alignment, int maxLineLength) { AlignmentMethod alignmentMethod = leftAlignString; switch (alignment) { case StringAlignment.Center: alignmentMethod = centerAlignString; break; case StringAlignment.Far: alignmentMethod = rightAlignString; break; case StringAlignment.Near: alignmentMethod = leftAlignString; break; } Font font = new Font("Consolas", 10f); if (text.Length > maxLineLength) { string tempString1 = ""; string tempString2 = ""; string[] stringArray = text.Split(' '); text = ""; for (int i = 0; i < stringArray.Length; i++) { string textIterator = stringArray[i]; tempString1 += ' ' + textIterator; if (textIterator.Length > maxLineLength) { int truncateIndex = maxLineLength - tempString2.Length - 1; string partsOfIterator = textIterator.Substring(0, truncateIndex); if (tempString2 != "") { tempString2 = tempString2.Substring(1, tempString2.Length - 1); } text += alignmentMethod(tempString2 + ' ' + partsOfIterator, maxLineLength) + "\n\r"; for (; truncateIndex < textIterator.Length; truncateIndex += maxLineLength) { if (truncateIndex + maxLineLength <= textIterator.Length) { text += textIterator.Substring(truncateIndex, maxLineLength) + "\n\r"; } else { text += textIterator.Substring(truncateIndex, textIterator.Length - truncateIndex); } } tempString1 = ""; tempString2 = ""; } // Minus 1 is for the extra leading space else if (tempString1.Length - 1 > maxLineLength) { if (tempString2 != "") { tempString2 = tempString2.Substring(1, tempString2.Length - 1); } text += alignmentMethod(tempString2, maxLineLength) + "\n\r"; tempString1 = ' ' + textIterator; tempString2 = tempString1; } else if (i != stringArray.Length - 1) { tempString2 = tempString1; } else { if (tempString1 != "") { text += alignmentMethod(tempString1.Substring(1, tempString1.Length - 1), maxLineLength); } tempString1 = ""; tempString2 = ""; } } if (tempString1 != "") { text += alignmentMethod(tempString1.Substring(1, tempString1.Length - 1), maxLineLength); } } else { text = alignmentMethod(text, maxLineLength); } List <string> padderListString = text.Split('\n', '\r').ToList(); padderListString.RemoveAll(x => x == ""); text = ""; for (int i = 0; i < padderListString.Count; i++) { string tempText = padderListString[i]; int length = maxLineLength - tempText.Length; for (int j = 0; j < length; j++) { tempText += " "; } text += tempText; if (i != padderListString.Count - 1) { text += "\n\r"; } } return(text); }
private string getFormattedString(string text, StringAlignment alignment, int maxLineLength) { AlignmentMethod alignmentMethod = leftAlignString; subStringAdjust = 0; switch (alignment) { case StringAlignment.Center: alignmentMethod = centerAlignString; break; case StringAlignment.Far: alignmentMethod = rightAlignString; break; case StringAlignment.Near: alignmentMethod = leftAlignString; break; } if (textLength(text) > maxLineLength) { string tempString1 = ""; string tempString2 = ""; string[] stringArray = text.Split(' '); text = ""; for (int i = 0; i < stringArray.Length; i++) { string textIterator = stringArray[i]; tempString1 += ' ' + textIterator; if (textLength(textIterator) > maxLineLength) { int truncateIndex = maxLineLength; if (tempString2.Length > 0) { truncateIndex = truncateIndex - textLength(tempString2) - 1; } //string partsOfIterator = textIterator.Substring(0, truncateIndex); string partsOfIterator = subString(textIterator, 0, truncateIndex); if (tempString2 != "") { tempString2 = subString(tempString2, 1, textLength(tempString2) - 1); } if (tempString2.Length > 0) { text += alignmentMethod(tempString2 + ' ' + partsOfIterator, maxLineLength).Trim() + "\n\r"; } else { text += alignmentMethod(partsOfIterator, maxLineLength).Trim() + "\n\r"; } for (; truncateIndex < textLength(textIterator); truncateIndex += maxLineLength) { if (truncateIndex + maxLineLength <= textLength(textIterator)) { //text += textIterator.Substring(truncateIndex, maxLineLength) + "\n\r"; text += alignmentMethod(subString(textIterator, truncateIndex, maxLineLength), maxLineLength).Trim() + "\n\r"; } else { //text += textIterator.Substring(truncateIndex, textIterator.Length - truncateIndex); text += alignmentMethod(subString(textIterator, truncateIndex, textLength(textIterator) - truncateIndex), maxLineLength); } } tempString1 = ""; tempString2 = ""; } // Minus 1 is for the extra leading space else if (textLength(tempString1) - 1 > maxLineLength) { if (tempString2 != "") { //tempString2 = tempString2.Substring(1, tempString2.Length - 1); tempString2 = subString(tempString2, 1, textLength(tempString2) - 1); } text += alignmentMethod(tempString2, maxLineLength) + "\n\r"; tempString1 = ' ' + textIterator; tempString2 = tempString1; } else if (textLength(tempString1) == maxLineLength || textLength(tempString1) - 1 == maxLineLength) { //text += alignmentMethod(tempString1.Substring(1, textLength(tempString1) - 1), maxLineLength) + "\n\r"; text += alignmentMethod(subString(tempString1, 1, textLength(tempString1) - 1), maxLineLength) + "\n\r"; tempString1 = ""; tempString2 = ""; } // Cancelled out Minus 1 to consider trailing space for line && tempString1.Length < maxLineLength else if (i != stringArray.Length - 1) { tempString2 = tempString1; } else { if (tempString1 != "") { //text += alignmentMethod(tempString1.Substring(1, textLength(tempString1) - 1), maxLineLength); text += alignmentMethod(subString(tempString1, 1, textLength(tempString1) - 1), maxLineLength); } tempString1 = ""; tempString2 = ""; } } if (tempString1 != "") { //text += alignmentMethod(tempString1.Substring(1, textLength(tempString1) - 1), maxLineLength); text += alignmentMethod(subString(tempString1, 1, textLength(tempString1) - 1), maxLineLength); } } else { text = alignmentMethod(text, maxLineLength); } List <string> padderListString = text.Split('\n', '\r').ToList(); padderListString.RemoveAll(x => x == ""); text = ""; for (int i = 0; i < padderListString.Count; i++) { string tempText = padderListString[i]; int length = maxLineLength - textLength(tempText); for (int j = 0; j < length; j++) { tempText += " "; } text += tempText; if (i != padderListString.Count - 1) { text += "\n\r"; } } //Check if there is a chinese char on productname for (int index = 0; index < text.Length; index++) { if (char.GetUnicodeCategory(text[index]) == UnicodeCategory.OtherLetter) { globalvariables.PrintChineseCharacters = true; break; } } return(text); }