public void SetOutlineColor()
 {
     if (_outlineColorPickerController == null)
     {
         _outlineColorPickerController = ColorPickerController.Create(outlineColor, OnOutlineColorUpdate);
     }
     else
     {
         _outlineColorPickerController.Close();
     }
 }
 public void SetFillColor()
 {
     if (_fillColorPickerController == null)
     {
         _fillColorPickerController = ColorPickerController.Create(fillColor, OnFillColorUpdate);
     }
     else
     {
         _fillColorPickerController.Close();
     }
 }
    /**
     *  Draw Color Picker
     */
    private void DrawColorPicker()
    {
        Rect    rect     = new Rect(startPos.x, startPos.y, sizeCurr, sizeCurr);
        Event   e        = Event.current;
        Vector2 mousePos = e.mousePosition;

        bool isLeftMBtnClicked  = e.type == EventType.MouseUp;
        bool isLeftMBtnDragging = e.type == EventType.MouseDrag;
        bool isLeftMBtnMoving   = e.type == EventType.MouseMove;

        bool openCondition  = rect.Contains(mousePos) && ((isLeftMBtnClicked || isLeftMBtnDragging || isLeftMBtnMoving) && e.isMouse);
        bool closeCondition = isLeftMBtnClicked || (!rect.Contains(mousePos)) && (e.isMouse && isLeftMBtnMoving || e.type == EventType.MouseDown);

        if (openCondition && (activeColorPicker == null || activeColorPicker.mState == ESTATE.Hidden) && mState == ESTATE.Hidden)
        {
            mState            = ESTATE.Showing;
            activeColorPicker = this;
            delta             = 0;
        }

        if (closeCondition && mState == ESTATE.Showed)
        {
            if (isLeftMBtnClicked)
            {
                ApplyColor();
            }
            else
            {
                SetColor(SelectedColor);
            }
            mState = ESTATE.Hidding;
            delta  = 0;
        }

        if (mState == ESTATE.Showed)
        {
            if (rect.Contains(mousePos))
            {
                float   coeffX        = colorSpace.width / sizeCurr;
                float   coeffY        = colorSpace.height / sizeCurr;
                Vector2 localImagePos = (mousePos - startPos);
                Color   res           = colorSpace.GetPixel((int)(coeffX * localImagePos.x), colorSpace.height - (int)(coeffY * localImagePos.y) - 1);
                SetColor(res);
                if (isLeftMBtnDragging)
                {
                    ApplyColor();
                }
            }
            else
            {
                SetColor(SelectedColor);
            }
        }
    }
 /**
  *  Update dictionnary with color selected for the emotion on the color picker
  */
 private void UpdateEmotionColor(ColorPickerController colorPicker)
 {
     emotionColors[colorPicker.Title] = colorPicker.SelectedColor;
 }