Browse Source

Added alpha slider to ColorPicker

Marko Pintera 10 years ago
parent
commit
271033bf48
1 changed files with 36 additions and 2 deletions
  1. 36 2
      MBansheeEditor/ColorPicker.cs

+ 36 - 2
MBansheeEditor/ColorPicker.cs

@@ -18,7 +18,7 @@ namespace BansheeEditor
         private float colHue, colSaturation, colValue;
         private float colHue, colSaturation, colValue;
         private float colAlpha = 1.0f;
         private float colAlpha = 1.0f;
 
 
-        private ColorSlider1DHorz sliderR, sliderG, sliderB;
+        private ColorSlider1DHorz sliderR, sliderG, sliderB, sliderA;
         private ColorSlider2D colorBox;
         private ColorSlider2D colorBox;
         private ColorSlider1DVert sideSlider;
         private ColorSlider1DVert sideSlider;
 
 
@@ -31,6 +31,7 @@ namespace BansheeEditor
         private GUITexture guiSliderRHorzTex;
         private GUITexture guiSliderRHorzTex;
         private GUITexture guiSliderGHorzTex;
         private GUITexture guiSliderGHorzTex;
         private GUITexture guiSliderBHorzTex;
         private GUITexture guiSliderBHorzTex;
+        private GUITexture guiSliderAHorzTex;
 
 
         private GUIButton guiColorBoxBtn;
         private GUIButton guiColorBoxBtn;
         private GUIButton guiColorModeBtn;
         private GUIButton guiColorModeBtn;
@@ -39,15 +40,18 @@ namespace BansheeEditor
         private GUISliderH guiSliderRHorz;
         private GUISliderH guiSliderRHorz;
         private GUISliderH guiSliderGHorz;
         private GUISliderH guiSliderGHorz;
         private GUISliderH guiSliderBHorz;
         private GUISliderH guiSliderBHorz;
+        private GUISliderH guiSliderAHorz;
         private GUITexture guiSlider2DHandle;
         private GUITexture guiSlider2DHandle;
 
 
         private GUILabel guiLabelR;
         private GUILabel guiLabelR;
         private GUILabel guiLabelG;
         private GUILabel guiLabelG;
         private GUILabel guiLabelB;
         private GUILabel guiLabelB;
+        private GUILabel guiLabelA;
 
 
         private GUIIntField guiInputR;
         private GUIIntField guiInputR;
         private GUIIntField guiInputG;
         private GUIIntField guiInputG;
         private GUIIntField guiInputB;
         private GUIIntField guiInputB;
+        private GUIIntField guiInputA;
 
 
         public enum ColorBoxMode
         public enum ColorBoxMode
         {
         {
@@ -107,10 +111,12 @@ namespace BansheeEditor
             guiLabelR = new GUILabel("R");
             guiLabelR = new GUILabel("R");
             guiLabelG = new GUILabel("G");
             guiLabelG = new GUILabel("G");
             guiLabelB = new GUILabel("B");
             guiLabelB = new GUILabel("B");
+            guiLabelA = new GUILabel("A");
 
 
             guiInputR = new GUIIntField();
             guiInputR = new GUIIntField();
             guiInputG = new GUIIntField();
             guiInputG = new GUIIntField();
             guiInputB = new GUIIntField();
             guiInputB = new GUIIntField();
+            guiInputA = new GUIIntField();
 
 
             guiColorBoxBtn.OnClick += OnColorBoxModeChanged;
             guiColorBoxBtn.OnClick += OnColorBoxModeChanged;
             guiColorModeBtn.OnClick += OnSliderModeChanged;
             guiColorModeBtn.OnClick += OnSliderModeChanged;
@@ -119,10 +125,12 @@ namespace BansheeEditor
             guiSliderRHorz.OnChanged += OnSliderRHorzChanged;
             guiSliderRHorz.OnChanged += OnSliderRHorzChanged;
             guiSliderGHorz.OnChanged += OnSliderGHorzChanged;
             guiSliderGHorz.OnChanged += OnSliderGHorzChanged;
             guiSliderBHorz.OnChanged += OnSliderBHorzChanged;
             guiSliderBHorz.OnChanged += OnSliderBHorzChanged;
+            guiSliderAHorz.OnChanged += OnSliderAHorzChanged;
 
 
             guiInputR.OnChanged += OnInputRChanged;
             guiInputR.OnChanged += OnInputRChanged;
             guiInputG.OnChanged += OnInputGChanged;
             guiInputG.OnChanged += OnInputGChanged;
             guiInputB.OnChanged += OnInputBChanged;
             guiInputB.OnChanged += OnInputBChanged;
+            guiInputA.OnChanged += OnInputAChanged;
 
 
             GUILayout v0 = GUI.layout.AddLayoutY();
             GUILayout v0 = GUI.layout.AddLayoutY();
 
 
@@ -176,10 +184,20 @@ namespace BansheeEditor
             sliderR = new ColorSlider1DHorz(guiSliderRHorzTex, guiSliderRHorz, SliderIndividualWidth, SliderIndividualHeight);
             sliderR = new ColorSlider1DHorz(guiSliderRHorzTex, guiSliderRHorz, SliderIndividualWidth, SliderIndividualHeight);
             sliderG = new ColorSlider1DHorz(guiSliderGHorzTex, guiSliderGHorz, SliderIndividualWidth, SliderIndividualHeight);
             sliderG = new ColorSlider1DHorz(guiSliderGHorzTex, guiSliderGHorz, SliderIndividualWidth, SliderIndividualHeight);
             sliderB = new ColorSlider1DHorz(guiSliderBHorzTex, guiSliderBHorz, SliderIndividualWidth, SliderIndividualHeight);
             sliderB = new ColorSlider1DHorz(guiSliderBHorzTex, guiSliderBHorz, SliderIndividualWidth, SliderIndividualHeight);
+            sliderA = new ColorSlider1DHorz(guiSliderAHorzTex, guiSliderAHorz, SliderIndividualWidth, SliderIndividualHeight);
 
 
             colorBox.OnValueChanged += OnColorBoxValueChanged;
             colorBox.OnValueChanged += OnColorBoxValueChanged;
 
 
-            // TODO - Add alpha slider
+            guiColor.Value = SelectedColor;
+            UpdateInputBoxValues();
+            Update2DSliderTextures();
+            Update2DSliderValues();
+            Update1DSliderTextures();
+            Update1DSliderValues();
+
+            Color startA = new Color(0, 0, 0, 1);
+            Color stepA = new Color(1, 1, 1, 0);
+            sliderA.UpdateTexture(startA, stepA, false);
         }
         }
 
 
         private void EditorUpdate()
         private void EditorUpdate()
@@ -413,6 +431,14 @@ namespace BansheeEditor
             Update2DSliderValues();
             Update2DSliderValues();
         }
         }
 
 
+        void OnSliderAHorzChanged(float percent)
+        {
+            colAlpha = percent;
+
+            guiColor.Value = SelectedColor;
+            guiInputA.Value = MathEx.RoundToInt(colValue * 255.0f);
+        }
+
         void OnInputRChanged(int value)
         void OnInputRChanged(int value)
         {
         {
             bool isHSV = sliderMode == SliderMode.HSV;
             bool isHSV = sliderMode == SliderMode.HSV;
@@ -473,6 +499,14 @@ namespace BansheeEditor
             Update2DSliderValues();
             Update2DSliderValues();
         }
         }
 
 
+        void OnInputAChanged(int value)
+        {
+            colAlpha = value/255.0f;
+
+            guiColor.Value = SelectedColor;
+            guiSliderAHorz.Percent = colAlpha;
+        }
+
         void UpdateInputBoxValues()
         void UpdateInputBoxValues()
         {
         {
             bool isHSV = sliderMode == SliderMode.HSV;
             bool isHSV = sliderMode == SliderMode.HSV;