summaryrefslogtreecommitdiff
path: root/Library/PackageCache/com.unity.textmeshpro@2.0.1/Scripts/Editor/TMP_TextAlignmentDrawer.cs
diff options
context:
space:
mode:
authorAndrew Lee <alee14498@protonmail.com>2020-04-19 17:19:32 -0400
committerAndrew Lee <alee14498@protonmail.com>2020-04-19 17:19:32 -0400
commitc55fba8ab2a1c9d3df65eda4a5a1e957f4aa1f78 (patch)
treeee4d51c7c1d633e11f46453ef1edd3c77c4ef9f7 /Library/PackageCache/com.unity.textmeshpro@2.0.1/Scripts/Editor/TMP_TextAlignmentDrawer.cs
downloadProject-Sandbox-c55fba8ab2a1c9d3df65eda4a5a1e957f4aa1f78.tar.gz
Project-Sandbox-c55fba8ab2a1c9d3df65eda4a5a1e957f4aa1f78.tar.bz2
Project-Sandbox-c55fba8ab2a1c9d3df65eda4a5a1e957f4aa1f78.zip
Inital commit
Diffstat (limited to 'Library/PackageCache/com.unity.textmeshpro@2.0.1/Scripts/Editor/TMP_TextAlignmentDrawer.cs')
-rw-r--r--Library/PackageCache/com.unity.textmeshpro@2.0.1/Scripts/Editor/TMP_TextAlignmentDrawer.cs119
1 files changed, 119 insertions, 0 deletions
diff --git a/Library/PackageCache/com.unity.textmeshpro@2.0.1/Scripts/Editor/TMP_TextAlignmentDrawer.cs b/Library/PackageCache/com.unity.textmeshpro@2.0.1/Scripts/Editor/TMP_TextAlignmentDrawer.cs
new file mode 100644
index 0000000..cd96573
--- /dev/null
+++ b/Library/PackageCache/com.unity.textmeshpro@2.0.1/Scripts/Editor/TMP_TextAlignmentDrawer.cs
@@ -0,0 +1,119 @@
+using UnityEngine;
+using UnityEditor;
+
+namespace TMPro.EditorUtilities
+{
+
+ [CustomPropertyDrawer(typeof(TextAlignmentOptions))]
+ public class TMP_TextAlignmentDrawer : PropertyDrawer
+ {
+ const int k_AlignmentButtonWidth = 24;
+ const int k_AlignmentButtonHeight = 20;
+ const int k_WideViewWidth = 504;
+ const int k_ControlsSpacing = 6;
+ const int k_GroupWidth = k_AlignmentButtonWidth * 6;
+ static readonly int k_TextAlignmentHash = "DoTextAligmentControl".GetHashCode();
+
+ public override float GetPropertyHeight(SerializedProperty property, GUIContent label)
+ {
+ return EditorGUIUtility.currentViewWidth > k_WideViewWidth ? k_AlignmentButtonHeight : k_AlignmentButtonHeight * 2 + 3;
+ }
+
+ public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
+ {
+ var id = GUIUtility.GetControlID(k_TextAlignmentHash, FocusType.Keyboard, position);
+
+ EditorGUI.BeginProperty(position, label, property);
+ {
+ var controlArea = EditorGUI.PrefixLabel(position, id, label);
+
+ var horizontalAligment = new Rect(controlArea.x, controlArea.y, k_GroupWidth, k_AlignmentButtonHeight);
+ var verticalAligment = new Rect(!(EditorGUIUtility.currentViewWidth > k_WideViewWidth) ? controlArea.x : horizontalAligment.xMax + k_ControlsSpacing, !(EditorGUIUtility.currentViewWidth > k_WideViewWidth) ? controlArea.y + k_AlignmentButtonHeight + 3 : controlArea.y, k_GroupWidth, k_AlignmentButtonHeight);
+
+ EditorGUI.BeginChangeCheck();
+
+ var selectedHorizontal = DoHorizontalAligmentControl(horizontalAligment, property);
+ var selectedVertical = DoVerticalAligmentControl(verticalAligment, property);
+
+ if (EditorGUI.EndChangeCheck())
+ {
+ var value = (0x1 << selectedHorizontal) | (0x100 << selectedVertical);
+ property.intValue = value;
+ }
+ }
+ EditorGUI.EndProperty();
+ }
+
+ static int DoHorizontalAligmentControl(Rect position, SerializedProperty alignment)
+ {
+ var selected = TMP_EditorUtility.GetHorizontalAlignmentGridValue(alignment.intValue);
+
+ var values = new bool[6];
+
+ values[selected] = true;
+
+ if (alignment.hasMultipleDifferentValues)
+ {
+ foreach (var obj in alignment.serializedObject.targetObjects)
+ {
+ var text = obj as TMP_Text;
+ if (text != null)
+ {
+ values[TMP_EditorUtility.GetHorizontalAlignmentGridValue((int)text.alignment)] = true;
+ }
+ }
+ }
+
+ position.width = k_AlignmentButtonWidth;
+
+ for (var i = 0; i < values.Length; i++)
+ {
+ var oldValue = values[i];
+ var newValue = TMP_EditorUtility.EditorToggle(position, oldValue, TMP_UIStyleManager.alignContentA[i], i == 0 ? TMP_UIStyleManager.alignmentButtonLeft : (i == 5 ? TMP_UIStyleManager.alignmentButtonRight : TMP_UIStyleManager.alignmentButtonMid));
+ if (newValue != oldValue)
+ {
+ selected = i;
+ }
+ position.x += position.width;
+ }
+
+ return selected;
+ }
+
+ static int DoVerticalAligmentControl(Rect position, SerializedProperty alignment)
+ {
+ var selected = TMP_EditorUtility.GetVerticalAlignmentGridValue(alignment.intValue);
+
+ var values = new bool[6];
+
+ values[selected] = true;
+
+ if (alignment.hasMultipleDifferentValues)
+ {
+ foreach (var obj in alignment.serializedObject.targetObjects)
+ {
+ var text = obj as TMP_Text;
+ if (text != null)
+ {
+ values[TMP_EditorUtility.GetVerticalAlignmentGridValue((int)text.alignment)] = true;
+ }
+ }
+ }
+
+ position.width = k_AlignmentButtonWidth;
+
+ for (var i = 0; i < values.Length; i++)
+ {
+ var oldValue = values[i];
+ var newValue = TMP_EditorUtility.EditorToggle(position, oldValue, TMP_UIStyleManager.alignContentB[i], i == 0 ? TMP_UIStyleManager.alignmentButtonLeft : (i == 5 ? TMP_UIStyleManager.alignmentButtonRight : TMP_UIStyleManager.alignmentButtonMid));
+ if (newValue != oldValue)
+ {
+ selected = i;
+ }
+ position.x += position.width;
+ }
+
+ return selected;
+ }
+ }
+}