You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
94 lines
3.1 KiB
94 lines
3.1 KiB
using System; |
|
using UnityEngine; |
|
|
|
namespace UnityEditor.Timeline |
|
{ |
|
readonly struct OverlayDrawer |
|
{ |
|
enum OverlayType |
|
{ |
|
BackgroundColor, |
|
BackgroundTexture, |
|
TextBox |
|
} |
|
|
|
readonly OverlayType m_Type; |
|
readonly Rect m_Rect; |
|
readonly string m_Text; |
|
readonly Texture2D m_Texture; |
|
readonly Color m_Color; |
|
readonly GUIStyle m_BackgroundTextStyle; |
|
readonly GUIStyle m_TextStyle; |
|
|
|
OverlayDrawer(Rect rectangle, Color backgroundColor) |
|
{ |
|
m_Type = OverlayType.BackgroundColor; |
|
m_Rect = rectangle; |
|
m_Color = backgroundColor; |
|
m_Text = string.Empty; |
|
m_Texture = null; |
|
m_BackgroundTextStyle = null; |
|
m_TextStyle = null; |
|
} |
|
|
|
OverlayDrawer(Rect rectangle, Texture2D backTexture) |
|
{ |
|
m_Type = OverlayType.BackgroundTexture; |
|
m_Rect = rectangle; |
|
m_Color = Color.clear; |
|
m_Text = string.Empty; |
|
m_Texture = backTexture; |
|
m_BackgroundTextStyle = null; |
|
m_TextStyle = null; |
|
} |
|
|
|
OverlayDrawer(Rect rectangle, string msg, GUIStyle textStyle, Color textColor, Color bgTextColor, GUIStyle bgTextStyle) |
|
{ |
|
m_Type = OverlayType.TextBox; |
|
m_Rect = rectangle; |
|
m_Text = msg; |
|
m_TextStyle = textStyle; |
|
m_TextStyle.normal.textColor = textColor; |
|
m_BackgroundTextStyle = bgTextStyle; |
|
m_BackgroundTextStyle.normal.textColor = bgTextColor; |
|
m_Texture = null; |
|
m_Color = Color.clear; |
|
} |
|
|
|
public static OverlayDrawer CreateColorOverlay(Rect rectangle, Color backgroundColor) |
|
{ |
|
return new OverlayDrawer(rectangle, backgroundColor); |
|
} |
|
|
|
public static OverlayDrawer CreateTextureOverlay(Rect rectangle, Texture2D backTexture) |
|
{ |
|
return new OverlayDrawer(rectangle, backTexture); |
|
} |
|
|
|
public static OverlayDrawer CreateTextBoxOverlay(Rect rectangle, string msg, GUIStyle textStyle, Color textColor, Color bgTextColor, GUIStyle bgTextStyle) |
|
{ |
|
return new OverlayDrawer(rectangle, msg, textStyle, textColor, bgTextColor, bgTextStyle); |
|
} |
|
|
|
public void Draw() |
|
{ |
|
Rect overlayRect = GUIClip.Clip(m_Rect); |
|
switch (m_Type) |
|
{ |
|
case OverlayType.BackgroundColor: |
|
EditorGUI.DrawRect(overlayRect, m_Color); |
|
break; |
|
case OverlayType.BackgroundTexture: |
|
Graphics.DrawTextureRepeated(overlayRect, m_Texture); |
|
break; |
|
case OverlayType.TextBox: |
|
{ |
|
using (new GUIColorOverride(m_BackgroundTextStyle.normal.textColor)) |
|
GUI.Box(overlayRect, GUIContent.none, m_BackgroundTextStyle); |
|
Graphics.ShadowLabel(overlayRect, GUIContent.Temp(m_Text), m_TextStyle, m_TextStyle.normal.textColor, Color.black); |
|
break; |
|
} |
|
} |
|
} |
|
} |
|
}
|
|
|