Z Issues Tracker cleanup

This commit is contained in:
Tiago Conceição
2020-09-05 19:37:45 +01:00
parent 7a8b786f44
commit 4bbef72acb
5 changed files with 58 additions and 68 deletions
@@ -14,33 +14,22 @@ using UVtools.Core.Extensions;
namespace UVtools.GUI.Controls
{
public class TrackBarHighlight : TrackBar
public class TrackBarEx : TrackBar
{
private uint[] _highlightValues = null;
[DllImport("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, uint msg, int wParam, int lParam);
private const int TBM_GETNUMTICS = 0x0410;
private const int TBM_GETTICPOS = 0x40F;
private const byte TrackerMargin = 12;
//private const byte TrackerMargin = 12;
//public event PaintEventHandler PaintOver;
public Pen HighlightPen { get; set; } = new Pen(Color.FromArgb(50, Color.Red), 2);
public byte LineLength { get; set; } = 10;
public uint[] HighlightValues
/*public TrackBarEx()
{
get => _highlightValues;
set { _highlightValues = value; Invalidate(); }
}
public TrackBarHighlight()
{
//SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.DoubleBuffer | ControlStyles.ResizeRedraw, true);
}
SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.DoubleBuffer | ControlStyles.ResizeRedraw, true);
}*/
/*protected override void OnInvalidated(InvalidateEventArgs e)
{
@@ -59,19 +48,19 @@ namespace UVtools.GUI.Controls
using (Graphics lgGraphics = Graphics.FromHwndInternal(m.HWnd))
OnPaintOver(new PaintEventArgs(lgGraphics, ClientRectangle));
}
}*/
}
protected virtual void OnPaintOver(PaintEventArgs e)
{
//PaintOver?.Invoke(this, e);
//Debug.WriteLine("Paint");
DrawHighlights(e.Graphics);
}
}*/
public int GetTickPos(int index) => SendMessage(Handle, TBM_GETTICPOS, index, 0);
public int NumTicks => SendMessage(Handle, TBM_GETNUMTICS, 0, 0);
public void DrawHighlights(Graphics gfx = null)
/*public void DrawHighlights(Graphics gfx = null)
{
if (HighlightValues is null) return;
if (gfx is null) gfx = CreateGraphics();
@@ -88,6 +77,6 @@ namespace UVtools.GUI.Controls
int y = (Height - tickPos).Clamp(1, Height);
gfx.DrawLine(HighlightPen, startX, y, endX, y);
}
}
}*/
}
}
+2 -4
View File
@@ -264,7 +264,7 @@ namespace UVtools.GUI
this.toolTipInformation = new System.Windows.Forms.ToolTip(this.components);
this.layerScrollTimer = new System.Windows.Forms.Timer(this.components);
this.mouseHoldTimer = new System.Windows.Forms.Timer(this.components);
this.tbLayer = new UVtools.GUI.Controls.TrackBarHighlight();
this.tbLayer = new UVtools.GUI.Controls.TrackBarEx();
this.menu.SuspendLayout();
this.mainTable.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.scCenter)).BeginInit();
@@ -2909,8 +2909,6 @@ namespace UVtools.GUI
// tbLayer
//
this.tbLayer.Dock = System.Windows.Forms.DockStyle.Right;
this.tbLayer.HighlightValues = null;
this.tbLayer.LineLength = ((byte)(20));
this.tbLayer.Location = new System.Drawing.Point(93, 0);
this.tbLayer.Margin = new System.Windows.Forms.Padding(0);
this.tbLayer.Name = "tbLayer";
@@ -3103,7 +3101,7 @@ namespace UVtools.GUI
private System.Windows.Forms.ToolStripButton btnLayerImageHighlightIssues;
private System.Windows.Forms.ToolStripButton btnLayerImageShowCrosshairs;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator25;
private TrackBarHighlight tbLayer;
private TrackBarEx tbLayer;
private System.Windows.Forms.TableLayoutPanel tlRight;
private System.Windows.Forms.Label lbMaxLayer;
private System.Windows.Forms.Label lbInitialLayer;
+45 -42
View File
@@ -2064,51 +2064,9 @@ namespace UVtools.GUI
private void flvIssues_ItemsChanged(object sender, ItemsChangedEventArgs e)
{
if (e.NewObjectCount == 0 || Issues is null)
{
tbLayer.HighlightValues = null;
UpdateLayerTrackerHighlightIssues();
return;
}
List<uint> layerIndexes = new List<uint>();
foreach (var issue in Issues)
{
if (layerIndexes.Contains(issue.LayerIndex)) continue;
layerIndexes.Add(issue.LayerIndex);
}
tbLayer.HighlightValues = layerIndexes.ToArray();
UpdateLayerTrackerHighlightIssues();
}
void UpdateLayerTrackerHighlightIssues()
{
var highlightValues = tbLayer.HighlightValues;
if (highlightValues is null)
{
pbTrackerIssues.Image = null;
return;
}
using (Mat mat = new Mat(pbTrackerIssues.Height, pbTrackerIssues.Width, DepthType.Cv8U, 3))
{
mat.SetTo(new MCvScalar(255, 255, 255));
var color = new MCvScalar(0, 0, 255);
foreach (var value in highlightValues)
{
var tickPos = tbLayer.GetTickPos((int) value);
if (tickPos == -1) continue;
//int y = (int)(Height - TrackerStartMargin - (Height / Maximum * value));
int y = (pbTrackerIssues.Height - tickPos).Clamp(0, pbTrackerIssues.Height);
CvInvoke.Line(mat, new Point(0, y), new Point(mat.Width, y), color);
}
pbTrackerIssues.Image = mat.ToBitmap();
}
}
#endregion
#region Methods
@@ -4450,5 +4408,50 @@ namespace UVtools.GUI
UpdateIssuesInfo();
ShowLayer();
}
public Dictionary<uint, uint> GetIssuesCountPerLayer()
{
if (Issues is null) return null;
Dictionary<uint, uint> layerIndexIssueCount = new Dictionary<uint, uint>();
foreach (var issue in Issues)
{
if (!layerIndexIssueCount.ContainsKey(issue.LayerIndex))
{
layerIndexIssueCount.Add(issue.LayerIndex, 1);
}
else
{
layerIndexIssueCount[issue.LayerIndex]++;
}
}
return layerIndexIssueCount;
}
void UpdateLayerTrackerHighlightIssues()
{
var issuesCountPerLayer = GetIssuesCountPerLayer();
if (issuesCountPerLayer is null)
{
pbTrackerIssues.Image = null;
return;
}
using (Mat mat = new Mat(pbTrackerIssues.Height, pbTrackerIssues.Width, DepthType.Cv8U, 3))
{
mat.SetTo(new MCvScalar(255, 255, 255));
var color = new MCvScalar(0, 0, 255);
foreach (var value in issuesCountPerLayer)
{
var tickPos = tbLayer.GetTickPos((int)value.Key);
if (tickPos == -1) continue;
int y = (pbTrackerIssues.Height - tickPos).Clamp(0, pbTrackerIssues.Height);
CvInvoke.Line(mat, new Point(0, y), new Point(mat.Width, y), color);
}
pbTrackerIssues.Image = mat.ToBitmap();
}
}
}
}
+1 -1
View File
@@ -158,7 +158,7 @@
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABk
FAAAAk1TRnQBSQFMAgEBBgEAASgBCgEoAQoBEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA
FAAAAk1TRnQBSQFMAgEBBgEAATgBCgE4AQoBEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA
AwABIAMAAQEBAAEgBgABIC4AAxgBIgMwAUsDMAFMAzIBUDMAAQEDJAE2AysBQqwAAyIBMQNWAbkDXQHi
AwAB/wMAAf8BKgEtASgB/gNTAawDTQGVAwABARgAAwkBDAMzAVIDUAGdA1cB6AMAAf4DKwH8Ay8BSqQA
AyEBMANZAewBKwEuASkB+gNRAfcDUgH0A1MB8QNIAfYDQQH5AwAB/wNPAZsDAAEBCAADFQEdAz8BbgNV
+1 -1
View File
@@ -163,7 +163,7 @@
<Compile Include="Controls\SplitButton.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Controls\TrackBarHighlight.cs">
<Compile Include="Controls\TrackBarEx.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Extensions\BitmapExtension.cs" />