private void btnVisualize_Click(object sender, EventArgs e) { //int R = int.Parse(txtR.Text.Trim()); //int G = int.Parse(txtG.Text.Trim()); //int B = int.Parse(txtB.Text.Trim()); //Color c = Color.FromArgb(255, R, G, B); //List<Color> colorVisualWord = ColorHelper.GenerateColorVisualWord(); //DrawDot(pnVisualizse.CreateGraphics(), new Dot(new Point(50, 50), 20, c)); //int index = DistanceHelper.ColorKNN(c, colorVisualWord); //Color result = VisualWord[index].Color; //Console.WriteLine("Index: " + index + ", " + "Color: " + result.ToString()); //Color resultColor = colorVisualWord[index]; //DrawDot(pnVisualizse.CreateGraphics(), new Dot(new Point(100, 50), 20, resultColor)); currentDrawing = DRAWING.LIST_VW_COLORS_RGB_SORTED; pnListColor.Refresh(); }
void btnCIE76_Lab_Click(object sender, EventArgs e) { currentDrawing = DRAWING.LIST_VW_COLORS_LAB_SORTED; currentDeltaE = DELTA_E.CIE76; pnListColor.Refresh(); }
private void btnVisualizeListColor_Click(object sender, EventArgs e) { currentDrawing = DRAWING.LIST_VW_COLORS; pnListColor.Refresh(); }
protected override void DerivedInspector(MotionEditor editor) { Frame frame = editor.GetCurrentFrame(); Mode = (DRAWING)EditorGUILayout.EnumPopup("Drawing Mode", Mode); if (Utility.GUIButton("Key", IsKey(frame) ? UltiDraw.Cyan : UltiDraw.DarkGrey, IsKey(frame) ? UltiDraw.Black : UltiDraw.White)) { ToggleKey(frame); } EditorGUI.BeginDisabledGroup(!IsKey(frame)); Color[] colors = UltiDraw.GetRainbowColors(Functions.Length); for (int i = 0; i < Functions.Length; i++) { float height = 25f; EditorGUILayout.BeginHorizontal(); if (Utility.GUIButton(Functions[i].Name, colors[i].Opacity(Functions[i].GetValue(frame).Normalize(0f, 1f, 0.25f, 1f)), UltiDraw.White, 150f, height)) { Functions[i].Toggle(frame); } //EditorGUILayout.Toggle(Functions[i].GetFlag(frame) == 1f ? true : false); //EditorGUILayout.Toggle(Functions[i].GetInverseFlag(frame) == 1f ? true : false); Rect c = EditorGUILayout.GetControlRect(); Rect r = new Rect(c.x, c.y, Functions[i].GetValue(frame) * c.width, height); EditorGUI.DrawRect(r, colors[i].Opacity(0.75f)); Functions[i].SetValue(frame, EditorGUILayout.FloatField(Functions[i].GetValue(frame), GUILayout.Width(50f))); Functions[i].Name = EditorGUILayout.TextField(Functions[i].Name); // if(Utility.GUIButton("Smooth", UltiDraw.DarkGrey, UltiDraw.White, 80f, 20f)) { // Functions[i].Smooth(frame); // } if (Utility.GUIButton("X", UltiDraw.DarkRed, UltiDraw.White, 20f, 20f)) { RemoveStyle(Functions[i].Name); } EditorGUILayout.EndHorizontal(); } EditorGUI.EndDisabledGroup(); if (Utility.GUIButton("Add Style", UltiDraw.DarkGrey, UltiDraw.White)) { AddStyle("Style " + (Functions.Length + 1)); EditorGUIUtility.ExitGUI(); } EditorGUILayout.BeginHorizontal(); if (Utility.GUIButton("<", UltiDraw.DarkGrey, UltiDraw.White, 25f, 50f)) { editor.LoadFrame(GetPreviousKey(frame)); } EditorGUILayout.BeginVertical(GUILayout.Height(50f)); Rect ctrl = EditorGUILayout.GetControlRect(); Rect rect = new Rect(ctrl.x, ctrl.y, ctrl.width, 50f); EditorGUI.DrawRect(rect, UltiDraw.Black); UltiDraw.Begin(); float startTime = frame.Timestamp - editor.GetWindow() / 2f; float endTime = frame.Timestamp + editor.GetWindow() / 2f; if (startTime < 0f) { endTime -= startTime; startTime = 0f; } if (endTime > Data.GetTotalTime()) { startTime -= endTime - Data.GetTotalTime(); endTime = Data.GetTotalTime(); } startTime = Mathf.Max(0f, startTime); endTime = Mathf.Min(Data.GetTotalTime(), endTime); int start = Data.GetFrame(startTime).Index; int end = Data.GetFrame(endTime).Index; int elements = end - start; if (Mode == DRAWING.Keys) { //Styles for (int i = 0; i < Functions.Length; i++) { Frame current = Data.Frames.First(); while (current != Data.Frames.Last()) { Frame next = GetNextKey(current); float _start = (float)(Mathf.Clamp(current.Index, start, end) - start) / (float)elements; float _end = (float)(Mathf.Clamp(next.Index, start, end) - start) / (float)elements; float xStart = rect.x + _start * rect.width; float xEnd = rect.x + _end * rect.width; float yStart = rect.y + (1f - Functions[i].Values[Mathf.Clamp(current.Index, start, end) - 1]) * rect.height; float yEnd = rect.y + (1f - Functions[i].Values[Mathf.Clamp(next.Index, start, end) - 1]) * rect.height; UltiDraw.DrawLine(new Vector3(xStart, yStart, 0f), new Vector3(xEnd, yEnd, 0f), colors[i]); current = next; } } } if (Mode == DRAWING.Frames) { //Styles for (int i = 0; i < Functions.Length; i++) { for (int j = start; j < end; j++) { Frame prev = Data.GetFrame(j); Frame next = Data.GetFrame(j + 1); float _start = (float)(Mathf.Clamp(prev.Index, start, end) - start) / (float)elements; float _end = (float)(Mathf.Clamp(next.Index, start, end) - start) / (float)elements; float xStart = rect.x + _start * rect.width; float xEnd = rect.x + _end * rect.width; float yStart = rect.y + (1f - Functions[i].Values[Mathf.Clamp(prev.Index, start, end) - 1]) * rect.height; float yEnd = rect.y + (1f - Functions[i].Values[Mathf.Clamp(next.Index, start, end) - 1]) * rect.height; UltiDraw.DrawLine(new Vector3(xStart, yStart, 0f), new Vector3(xEnd, yEnd, 0f), colors[i]); } } } //Keys Vector3 bottom = new Vector3(0f, rect.yMax, 0f); Vector3 top = new Vector3(0f, rect.yMax - rect.height, 0f); for (int i = 0; i < Keys.Length; i++) { if (Keys[i]) { top.x = rect.xMin + (float)(i + 1 - start) / elements * rect.width; bottom.x = rect.xMin + (float)(i + 1 - start) / elements * rect.width; UltiDraw.DrawLine(top, bottom, UltiDraw.White); } } //Current Pivot float pStart = (float)(Data.GetFrame(Mathf.Clamp(frame.Timestamp - 1f, 0f, Data.GetTotalTime())).Index - start) / (float)elements; float pEnd = (float)(Data.GetFrame(Mathf.Clamp(frame.Timestamp + 1f, 0f, Data.GetTotalTime())).Index - start) / (float)elements; float pLeft = rect.x + pStart * rect.width; float pRight = rect.x + pEnd * rect.width; Vector3 pA = new Vector3(pLeft, rect.y, 0f); Vector3 pB = new Vector3(pRight, rect.y, 0f); Vector3 pC = new Vector3(pLeft, rect.y + rect.height, 0f); Vector3 pD = new Vector3(pRight, rect.y + rect.height, 0f); UltiDraw.DrawTriangle(pA, pC, pB, UltiDraw.White.Opacity(0.1f)); UltiDraw.DrawTriangle(pB, pC, pD, UltiDraw.White.Opacity(0.1f)); top.x = rect.xMin + (float)(frame.Index - start) / elements * rect.width; bottom.x = rect.xMin + (float)(frame.Index - start) / elements * rect.width; UltiDraw.DrawLine(top, bottom, UltiDraw.Yellow); UltiDraw.End(); EditorGUILayout.EndVertical(); if (Utility.GUIButton(">", UltiDraw.DarkGrey, UltiDraw.White, 25f, 50f)) { editor.LoadFrame(GetNextKey(frame)); } EditorGUILayout.EndHorizontal(); }