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.
69 lines
2.7 KiB
69 lines
2.7 KiB
//=========== Copyright Valve Corporation, All rights reserved. ===============// |
|
// |
|
// Purpose: |
|
//=============================================================================// |
|
|
|
#ifndef IUITEXTLAYOUT_H |
|
#define IUITEXTLAYOUT_H |
|
|
|
#ifdef _WIN32 |
|
#pragma once |
|
#endif |
|
|
|
#include "mathlib/mathlib.h" |
|
#include "mathlib/vector2d.h" |
|
#include "tier1/utlvector.h" |
|
#include "panorama/panoramatypes.h" |
|
|
|
namespace panorama |
|
{ |
|
|
|
// |
|
// Interface that needs to be implemented for text layout on all platforms |
|
// |
|
class IUITextLayout |
|
{ |
|
public: |
|
virtual ~IUITextLayout() {} |
|
|
|
// Set formatting for character ranges |
|
virtual void SetFontName( uint32 unCharStartIndex, uint32 unCharEndIndex, const char *pchFontName ) = 0; |
|
virtual void SetFontSize( uint32 unCharStartIndex, uint32 unCharEndIndex, float flFontSize ) = 0; |
|
virtual void SetFontStyle( uint32 unCharStartIndex, uint32 unCharEndIndex, EFontStyle eFontStyle ) = 0; |
|
virtual void SetFontWeight( uint32 unCharStartIndex, uint32 unCharEndIndex, EFontWeight eFontWeight ) = 0; |
|
virtual void SetUnderline( uint32 unCharStartIndex, uint32 unCharEndIndex, bool bUnderline ) = 0; |
|
virtual void SetStrikethrough( uint32 unCharStartIndex, uint32 unCharEndIndex, bool bStrikethrough ) = 0; |
|
virtual void SetInlineObject( uint32 unCharIndex, float flWidth, float flHeight ) = 0; |
|
virtual void MarkColorRangeForMeasurement( uint32 unCharStartIndex, uint32 unCharEndIndex ) = 0; |
|
|
|
// Gets the size required to fully draw the text layout |
|
virtual void GetRequiredSize( float &flWidth, float &flHeight ) = 0; |
|
|
|
// Hit tests a point against the text layout. |
|
// unHitRunLength returns the character index hit |
|
// bIsTrailingHit indicates whether the hit is on the leading or trailing side of the char |
|
// bInside is true if the hit is within the text region, when false the position closest the point is returned as |
|
// the character hit offset |
|
virtual void HitTestPoint( Vector2D point, uint32 &unFirstHitOffset, bool &bIsTrailingHit, bool &bIsInsideString ) = 0; |
|
|
|
// Struct used in some calls below |
|
struct HitTestRegionRect_t |
|
{ |
|
Vector2D topLeft; |
|
Vector2D bottomRight; |
|
uint32 unCharStart; |
|
uint32 unCharEnd; |
|
bool bIsText; |
|
bool bIsTrimmed; |
|
}; |
|
|
|
// Determines the layout coordinates for a given character offset, coordinates are relative to top left of text layout |
|
virtual void GetCharacterCoordinates( uint32 unCharIndex, HitTestRegionRect_t &charRegionRect ) = 0; |
|
|
|
// Determines a vector of rects enclosing a range of text, normally used for getting selection highlight regions |
|
virtual void GetCharacterRangeCoordinates( uint32 unCharStartIndex, uint32 unCharEndIndex, CUtlVector<HitTestRegionRect_t> &vecRangeRegionRects ) = 0; |
|
}; |
|
|
|
} // namespace panorama |
|
|
|
#endif // IUITEXTLAYOUT_H
|