summaryrefslogtreecommitdiff
path: root/Assets/uGUI-2017.1/Editor/UI/RawImageEditor.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Assets/uGUI-2017.1/Editor/UI/RawImageEditor.cs')
-rw-r--r--Assets/uGUI-2017.1/Editor/UI/RawImageEditor.cs107
1 files changed, 107 insertions, 0 deletions
diff --git a/Assets/uGUI-2017.1/Editor/UI/RawImageEditor.cs b/Assets/uGUI-2017.1/Editor/UI/RawImageEditor.cs
new file mode 100644
index 0000000..36e43b1
--- /dev/null
+++ b/Assets/uGUI-2017.1/Editor/UI/RawImageEditor.cs
@@ -0,0 +1,107 @@
+using UnityEngine;
+using UnityEngine.UI;
+
+namespace UnityEditor.UI
+{
+ /// <summary>
+ /// Editor class used to edit UI Images.
+ /// </summary>
+ [CustomEditor(typeof(RawImage), true)]
+ [CanEditMultipleObjects]
+ public class RawImageEditor : GraphicEditor
+ {
+ SerializedProperty m_Texture;
+ SerializedProperty m_UVRect;
+ GUIContent m_UVRectContent;
+
+ protected override void OnEnable()
+ {
+ base.OnEnable();
+
+ // Note we have precedence for calling rectangle for just rect, even in the Inspector.
+ // For example in the Camera component's Viewport Rect.
+ // Hence sticking with Rect here to be consistent with corresponding property in the API.
+ m_UVRectContent = new GUIContent("UV Rect");
+
+ m_Texture = serializedObject.FindProperty("m_Texture");
+ m_UVRect = serializedObject.FindProperty("m_UVRect");
+
+ SetShowNativeSize(true);
+ }
+
+ public override void OnInspectorGUI()
+ {
+ serializedObject.Update();
+
+ EditorGUILayout.PropertyField(m_Texture);
+ AppearanceControlsGUI();
+ RaycastControlsGUI();
+ EditorGUILayout.PropertyField(m_UVRect, m_UVRectContent);
+ SetShowNativeSize(false);
+ NativeSizeButtonGUI();
+
+ serializedObject.ApplyModifiedProperties();
+ }
+
+ void SetShowNativeSize(bool instant)
+ {
+ base.SetShowNativeSize(m_Texture.objectReferenceValue != null, instant);
+ }
+
+ private static Rect Outer(RawImage rawImage)
+ {
+ Rect outer = rawImage.uvRect;
+ outer.xMin *= rawImage.rectTransform.rect.width;
+ outer.xMax *= rawImage.rectTransform.rect.width;
+ outer.yMin *= rawImage.rectTransform.rect.height;
+ outer.yMax *= rawImage.rectTransform.rect.height;
+ return outer;
+ }
+
+ /// <summary>
+ /// Allow the texture to be previewed.
+ /// </summary>
+
+ public override bool HasPreviewGUI()
+ {
+ RawImage rawImage = target as RawImage;
+ if (rawImage == null)
+ return false;
+
+ var outer = Outer(rawImage);
+ return outer.width > 0 && outer.height > 0;
+ }
+
+ /// <summary>
+ /// Draw the Image preview.
+ /// </summary>
+
+ public override void OnPreviewGUI(Rect rect, GUIStyle background)
+ {
+ RawImage rawImage = target as RawImage;
+ Texture tex = rawImage.mainTexture;
+
+ if (tex == null)
+ return;
+
+ var outer = Outer(rawImage);
+ SpriteDrawUtility.DrawSprite(tex, rect, outer, rawImage.uvRect, rawImage.canvasRenderer.GetColor());
+ }
+
+ /// <summary>
+ /// Info String drawn at the bottom of the Preview
+ /// </summary>
+
+ public override string GetInfoString()
+ {
+ RawImage rawImage = target as RawImage;
+
+ // Image size Text
+ string text = string.Format("RawImage Size: {0}x{1}",
+ Mathf.RoundToInt(Mathf.Abs(rawImage.rectTransform.rect.width)),
+ Mathf.RoundToInt(Mathf.Abs(rawImage.rectTransform.rect.height)));
+
+ return text;
+ }
+ }
+}