111 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
		
		
			
		
	
	
			111 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
|  | using UnityEngine; | ||
|  | 
 | ||
|  | namespace UnityEditor.Timeline | ||
|  | { | ||
|  |     class Tooltip | ||
|  |     { | ||
|  |         public GUIStyle style { get; set; } | ||
|  | 
 | ||
|  |         public string text { get; set; } | ||
|  | 
 | ||
|  |         GUIStyle m_Font; | ||
|  | 
 | ||
|  |         public GUIStyle font | ||
|  |         { | ||
|  |             get | ||
|  |             { | ||
|  |                 if (m_Font != null) | ||
|  |                     return m_Font; | ||
|  | 
 | ||
|  |                 if (style != null) | ||
|  |                     return style; | ||
|  | 
 | ||
|  |                 // Default Font. | ||
|  |                 m_Font = new GUIStyle(); | ||
|  |                 m_Font.font = EditorStyles.label.font; | ||
|  | 
 | ||
|  |                 return m_Font; | ||
|  |             } | ||
|  |             set { m_Font = value; } | ||
|  |         } | ||
|  | 
 | ||
|  |         float m_Pad = 4.0f; | ||
|  | 
 | ||
|  |         public float pad | ||
|  |         { | ||
|  |             get { return m_Pad; } | ||
|  |             set { m_Pad = value; } | ||
|  |         } | ||
|  | 
 | ||
|  |         GUIContent m_TextContent; | ||
|  | 
 | ||
|  |         GUIContent textContent | ||
|  |         { | ||
|  |             get | ||
|  |             { | ||
|  |                 if (m_TextContent == null) | ||
|  |                     m_TextContent = new GUIContent(); | ||
|  | 
 | ||
|  |                 m_TextContent.text = text; | ||
|  | 
 | ||
|  |                 return m_TextContent; | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  |         Color m_ForeColor = Color.white; | ||
|  | 
 | ||
|  |         public Color foreColor | ||
|  |         { | ||
|  |             get { return m_ForeColor; } | ||
|  |             set { m_ForeColor = value; } | ||
|  |         } | ||
|  | 
 | ||
|  |         Rect m_Bounds; | ||
|  | 
 | ||
|  |         public Rect bounds | ||
|  |         { | ||
|  |             get | ||
|  |             { | ||
|  |                 var size = font.CalcSize(textContent); | ||
|  |                 m_Bounds.width = size.x + (2.0f * pad); | ||
|  |                 m_Bounds.height = size.y + 2.0f; | ||
|  | 
 | ||
|  |                 return m_Bounds; | ||
|  |             } | ||
|  | 
 | ||
|  |             set { m_Bounds = value; } | ||
|  |         } | ||
|  | 
 | ||
|  |         public Tooltip(GUIStyle theStyle, GUIStyle font) | ||
|  |         { | ||
|  |             style = theStyle; | ||
|  |             m_Font = font; | ||
|  |         } | ||
|  | 
 | ||
|  |         public Tooltip() | ||
|  |         { | ||
|  |             style = null; | ||
|  |             m_Font = null; | ||
|  |         } | ||
|  | 
 | ||
|  |         public void Draw() | ||
|  |         { | ||
|  |             if (string.IsNullOrEmpty(text)) | ||
|  |                 return; | ||
|  | 
 | ||
|  |             if (style != null) | ||
|  |             { | ||
|  |                 using (new GUIColorOverride(DirectorStyles.Instance.customSkin.colorTooltipBackground)) | ||
|  |                     GUI.Label(bounds, GUIContent.none, style); | ||
|  |             } | ||
|  | 
 | ||
|  |             var textBounds = bounds; | ||
|  |             textBounds.x += pad; | ||
|  |             textBounds.width -= pad; | ||
|  | 
 | ||
|  |             using (new GUIColorOverride(foreColor)) | ||
|  |                 GUI.Label(textBounds, textContent, font); | ||
|  |         } | ||
|  |     } | ||
|  | } |