protected bool TypeGUI()
        {
            EditorGUI.BeginChangeCheck();
            EditorGUILayout.PropertyField(m_Type, new GUIContent("Image Type"));

            ++EditorGUI.indentLevel;
            {
                SVGImage.Type typeEnum = (SVGImage.Type)m_Type.enumValueIndex;

                bool showSlicedOrTiled = (!m_Type.hasMultipleDifferentValues && (typeEnum == SVGImage.Type.Sliced));
                if (showSlicedOrTiled && targets.Length > 1)
                {
                    showSlicedOrTiled = targets.Select(obj => obj as SVGImage).All(img => img.hasBorder);
                }

                SVGImage image = target as SVGImage;
                if (EditorGUILayout.BeginFadeGroup(m_ShowSliced.faded))
                {
                    if (image.vectorGraphics != null && !image.hasBorder)
                    {
                        EditorGUILayout.HelpBox("This Image doesn't have a border.", MessageType.Warning);
                    }
                }
                EditorGUILayout.EndFadeGroup();
            }
            --EditorGUI.indentLevel;

            return(EditorGUI.EndChangeCheck());
        }
        void SetShowNativeSize(bool instant)
        {
            SVGImage.Type type           = (SVGImage.Type)m_Type.enumValueIndex;
            bool          showNativeSize = (type == SVGImage.Type.Simple);

            SetShowNativeSize(showNativeSize, instant);
        }
        protected bool VectorGUI()
        {
            bool changed = false;

            EditorGUI.BeginChangeCheck();
            EditorGUILayout.PropertyField(m_VectorGraphics, m_VectorContent);
            if (EditorGUI.EndChangeCheck())
            {
                MethodInfo Refresh = typeof(SVGImage).GetMethod("Refresh", BindingFlags.NonPublic | BindingFlags.Instance);
                Refresh.Invoke(target, null);
                changed = true;

                SVGImage.Type oldType        = (SVGImage.Type)m_Type.enumValueIndex;
                SVGAsset      vectorGraphics = m_VectorGraphics.objectReferenceValue as SVGAsset;
                if (vectorGraphics != null)
                {
                    if (vectorGraphics.border.SqrMagnitude() > 0)
                    {
                        m_Type.enumValueIndex = (int)SVGImage.Type.Sliced;
                    }
                    else if (oldType == SVGImage.Type.Sliced)
                    {
                        m_Type.enumValueIndex = (int)SVGImage.Type.Simple;
                    }
                }
            }

            #if DEBUG_MATERIALS
            EditorGUILayout.ObjectField("Default Material", image.defaultMaterialTest, typeof(Material), true);
            EditorGUILayout.ObjectField("Mask Material", image.maskMaterialTest, typeof(Material), true);
            EditorGUILayout.ObjectField("Current Material", image.currenttMaterialTest, typeof(Material), true);
            EditorGUILayout.ObjectField("Render Material", image.renderMaterialTest, typeof(Material), true);
            EditorGUILayout.ObjectField("Canvas Render Material", image.canvasRenderer.GetMaterial(), typeof(Material), true);
            #endif

            SVGAsset newVectorGraphics = m_VectorGraphics.objectReferenceValue as SVGAsset;
            if (newVectorGraphics)
            {
                if (newVectorGraphics.format != SVGAssetFormat.uGUI)
                {
                    EditorGUILayout.BeginHorizontal();
                    EditorGUILayout.HelpBox("Vector Graphics Asset must be set to uGUI format", MessageType.Error);
                    if (GUILayout.Button("Apply"))
                    {
                        FieldInfo _editor_format = typeof(SVGAsset).GetField("_format", BindingFlags.NonPublic | BindingFlags.Instance);
                        _editor_format.SetValue(newVectorGraphics, (int)SVGAssetFormat.uGUI);

                        MethodInfo _editor_ApplyChanges = typeof(SVGAsset).GetMethod("_editor_ApplyChanges", BindingFlags.NonPublic | BindingFlags.Instance);
                        _editor_ApplyChanges.Invoke(newVectorGraphics, new object[] { false });

                        SVGAssetEditor.UpdateInstances(new SVGAsset[] { newVectorGraphics });
                        changed = true;
                    }
                    EditorGUILayout.EndHorizontal();
                }
                else
                {
                    #if UNITY_4_6 || UNITY_4_7 || UNITY_4_8 || UNITY_4_9 || UNITY_4_6 || UNITY_5_0 || UNITY_5_1
                    int vertexCount = newVectorGraphics.uiVertexCount;
                    int percent     = Mathf.RoundToInt(((float)vertexCount / 65534f) * 100f);
                    if (vertexCount > 128)
                    {
                        GUIContent infoContent = new GUIContent("Asset takes " + percent + "% of this Canvas, " + vertexCount + " vertices" +
                                                                "\nUI Canvas has limit of 65,534 vertices in total.");

                        EditorStyles s_Current    = (EditorStyles)typeof(EditorStyles).GetField("s_Current", BindingFlags.NonPublic | BindingFlags.Static).GetValue(null);
                        GUIStyle     helpBoxStyle = (GUIStyle)typeof(EditorStyles).GetField("m_HelpBox", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(s_Current);
                        Rect         helpRect     = GUILayoutUtility.GetRect(infoContent, helpBoxStyle);
                        EditorGUI.ProgressBar(helpRect, percent * 0.01f, "");
                        EditorGUI.HelpBox(helpRect, infoContent.text, MessageType.Warning);
                    }
                                        #endif
                }
            }

            return(changed);
        }