Пример #1
0
        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();
        }
Пример #2
0
 void btnCIE76_Lab_Click(object sender, EventArgs e)
 {
     currentDrawing = DRAWING.LIST_VW_COLORS_LAB_SORTED;
     currentDeltaE  = DELTA_E.CIE76;
     pnListColor.Refresh();
 }
Пример #3
0
 private void btnVisualizeListColor_Click(object sender, EventArgs e)
 {
     currentDrawing = DRAWING.LIST_VW_COLORS;
     pnListColor.Refresh();
 }
Пример #4
0
    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();
    }