c++
virtual void SetCursor(CTextCursor *pCursor, float x, float y, int Flags = 0) = 0;
inline void SetCursor(CTextCursor *pCursor, int Flags = 0) { SetCursor(pCursor, 0, 0, Flags); }
// virtual void MoveCursor(CTextCursor *pCursor, float x, float y) = 0;
virtual void TextDeferred(CTextCursor *pCursor, const char *pText, int Length) = 0;
virtual void TextOutlined(CTextCursor *pCursor, const char *pText, int Length) = 0;
virtual void TextShadowed(CTextCursor *pCursor, const char *pText, int Length, vec2 ShadowOffset) = 0;
inline void TextColor(const vec4 &Color) { TextColor(Color.r, Color.g, Color.b, Color.a); }
inline void TextSecondaryColor(const vec4 &Color) { TextSecondaryColor(Color.r, Color.g, Color.b, Color.a); }
// These should be only called after TextDeferred, TextOutlined or TextShadowed
// TODO: need better names
virtual void RedrawTextOutlined(CTextCursor *pCursor) = 0;
virtual void RedrawTextShadowed(CTextCursor *pCursor, vec2 ShadowOffset) = 0;
(edited)