예제 #1
0
    public void CompareTexturesToColor()
    {
        // get chosen color to to compare
        globalColorToCompare = colorDisk.pointer.GetComponentInChildren <Image>().color;

        // methods library
        ColorLibrary library = new ColorLibrary();

        // array of difference
        float[] differenceIntensity = new float[allImages.image.Length];

        // compare all images according to HSV method
        for (int i = 0; i < allImages.image.Length; i++)
        {
            float     totalDifference    = 0;
            Color32[] histogramOfTexture = histogramGenerator.CreateHistogram(allImages.image[i]);

            for (int c = 0; c < histogramOfTexture.Length; c++)
            {
                totalDifference += (histogramOfTexture.Length - c) *
                                   library.DifferenceValueLAB(globalColorToCompare, histogramOfTexture[c]);
            }

            totalDifference       /= histogramOfTexture.Length * (histogramOfTexture.Length + 1) / 2;
            differenceIntensity[i] = totalDifference;
        }

        Array.Sort(differenceIntensity, allImages.image);
    }
예제 #2
0
 // Use this for initialization
 void Awake()
 {
     if (colorLib == null)
     {
         colorLib = this;
     }
     else if (colorLib != this)
     {
         Destroy(gameObject);
     }
 }
예제 #3
0
        /// <summary>
        /// Description : Get type from string
        /// </summary>
        /// <param name="pColorLibrary"></param>
        /// <returns></returns>
        public Type GetEnum(ColorLibrary pColorLibrary)
        {
            if (false == IsExist(pColorLibrary))
            {
                return(null);
            }

            ColorModel lColorModel = GetColorModel(pColorLibrary);

            Type lResult = GetEnumType(lColorModel.GetEnum());

            return(lResult);
        }
예제 #4
0
        /// <summary>
        /// Description : The library exist in the enum list
        /// </summary>
        /// <param name="pColorLibrary"></param>
        /// <returns></returns>
        public bool IsExist(ColorLibrary pColorLibrary)
        {
            bool lResult = false;

            foreach (ColorModel lColorModel in GetColorModels())
            {
                if (lColorModel.GetColorLibrary() == pColorLibrary)
                {
                    lResult = true;
                }
            }

            return(lResult);
        }
예제 #5
0
        /// <summary>
        /// Description : return a image model from a color library
        /// </summary>
        /// <param name="pColorLibrary"></param>
        /// <returns></returns>
        private ColorModel GetColorModel(ColorLibrary pColorLibrary)
        {
            ColorModel lResult = null;

            foreach (ColorModel lColorModel in GetColorModels())
            {
                if (lColorModel.GetColorLibrary() == pColorLibrary)
                {
                    lResult = lColorModel;
                }
            }

            return(lResult);
        }
예제 #6
0
        public override void OnInspectorGUI()
        {
            serializedObject.Update();

            EditorGUILayout.LabelField("COLOR EXTENSION");
            EditorGUILayout.LabelField("This extension can allow to get a color from an Color Library");

            _enumLibrary  = serializedObject.FindProperty("_enumLibrary");
            _colorLibrary = serializedObject.FindProperty("_colorLibrary");
            _keyType      = serializedObject.FindProperty("_keyType");
            _enumIndex    = serializedObject.FindProperty("_enumIndex");
            _enumChoice   = serializedObject.FindProperty("_enumChoice");

            EditorGUILayout.Space(10);

            DisplaySpriteData();

            // Sprite Data is set
            if (true == IsConditionsOK())
            {
                EnumLibrary  lEnumLibrary  = (EnumLibrary)_enumLibrary.objectReferenceValue;
                ColorLibrary lColorLibrary = (ColorLibrary)_colorLibrary.objectReferenceValue;

                if (true == lEnumLibrary.IsExist(lColorLibrary))
                {
                    EditorGUILayout.BeginHorizontal();

                    DisplayEnum();

                    EditorGUILayout.EndHorizontal();
                }
                else
                {
                    EditorGUILayout.BeginHorizontal();
                    EditorGUILayout.LabelField("This library is not in the enum library, please verify your data", _warningInfos);
                    EditorGUILayout.EndHorizontal();
                }
            }

            EditorGUILayout.Space(10);

            // Apply modifications
            serializedObject.ApplyModifiedProperties();
        }
예제 #7
0
    public static List <LEDStructure> GetLED(int chain, int x, int y, string text)
    {
        List <LEDStructure> a = new List <LEDStructure>();

        string[] il = MainProjectLoader.SplitByLine(text);
        for (int i = 0; i < il.Length; i++)
        {
            string[] sp = il[i].Split(' ');

            if (string.IsNullOrWhiteSpace(il[i]) == true)
            {
                continue;
            }

            switch (sp[0])
            {
            case "o":
            case "on":

                int   x_       = 0;
                int   y_       = int.Parse(sp[2]);
                int   velocity = 0;
                Color color    = Color.gray;

                if (sp[1] == "mc")
                {
                    x_ = -1;
                }
                else
                {
                    x_ = int.Parse(sp[1]);
                }
                if ((sp[3] == "a" || sp[3] == "auto") && int.TryParse(sp[4], out velocity) == true)
                {
                    ColorUtility.TryParseHtmlString("#" + ColorLibrary.Velo2HTML(velocity), out color);
                }

                a.Add(new LEDStructure(x_, y_, color, velocity, false, chain, x, y));
                break;

            case "f":
            case "off":

                x_ = 0;
                y_ = int.Parse(sp[2]);

                if (sp[1] == "mc")
                {
                    x_ = -1;
                }
                else
                {
                    x_ = int.Parse(sp[1]);
                }

                a.Add(new LEDStructure(x_, y_, chain, x, y));
                break;

            case "d":
            case "delay":

                int delay = int.Parse(sp[1]);

                a.Add(new LEDStructure(delay, chain, x, y));
                break;
            }
        }

        return(a);
    }
예제 #8
0
        /// <summary>
        /// Description : Displau Color Models
        /// </summary>
        private void DisplayColorModels()
        {
            // Color MODEL
            EditorGUILayout.LabelField("COLOR MODEL", EditorStyles.boldLabel);

            _listCount = _colorsModels.arraySize;
            for (int i = 0; i < _listCount; i++)
            {
                SerializedProperty lColorModel   = _colorsModels.GetArrayElementAtIndex(i);
                SerializedProperty lColorLibrary = lColorModel.FindPropertyRelative("_colorLibrary");

                SerializedProperty lEnumIndex = lColorModel.FindPropertyRelative("_index");

                lColorModel.isExpanded = EditorGUILayout.Foldout(lColorModel.isExpanded, new GUIContent("Color Model " + i));
                if (lColorModel.isExpanded)
                {
                    EditorGUILayout.BeginHorizontal();
                    lColorLibrary.objectReferenceValue = (ColorLibrary)EditorGUILayout.ObjectField(lColorLibrary.objectReferenceValue, typeof(ColorLibrary), false);
                    EditorGUILayout.EndHorizontal();
                    if (lColorLibrary.objectReferenceValue != null)
                    {
                        ColorLibrary lColor = (ColorLibrary)lColorLibrary.objectReferenceValue;

                        if (lColor.GetKeyType() == 1)
                        {
                            EditorGUILayout.BeginHorizontal();
                            EditorGUILayout.LabelField("Enum Path");

                            string[] lEnumList = _manager.GetAllEnums().ToArray();

                            lEnumIndex.intValue = EditorGUILayout.Popup(lEnumIndex.intValue, lEnumList);

                            string lEnumName = _manager.GetEnumName(lEnumIndex.intValue);

                            _manager.GetColorModels()[i].SetEnum(lEnumName);

                            EditorGUILayout.EndHorizontal();

                            if (false == lColor.IsEnumEqual(_manager.GetEnumType(lEnumName)))
                            {
                                EditorGUILayout.BeginHorizontal();
                                EditorGUILayout.LabelField("THE ENUM IS NOT THE RIGHT ONE, Are you sure to use this one ?", _warningInfos);
                                EditorGUILayout.EndHorizontal();
                            }
                        }
                    }
                    EditorGUILayout.BeginHorizontal();

                    if (GUILayout.Button("Delete"))
                    {
                        if (EditorUtility.DisplayDialog("Warning", "Are you sure to delete this enum?", "Yes", "No"))
                        {
                            lColorModel.isExpanded = false;
                            _colorsModels.DeleteArrayElementAtIndex(i);
                            break;
                        }
                    }

                    EditorGUILayout.EndHorizontal();
                    EditorGUILayout.Space(5);
                }
            }
        }
예제 #9
0
 /// <summary>
 /// Description : set the color library of the model
 /// </summary>
 /// <returns></returns>
 public void SetColorLibrary(ColorLibrary pColoribrary)
 {
     _colorLibrary = pColoribrary;
 }
예제 #10
0
 public ColorModel(string pEnum, ColorLibrary pColorLibrary, int pIndex)
 {
     SetEnum(pEnum);
     SetColorLibrary(pColorLibrary);
     SetIndex(pIndex);
 }