[]
        
(Showing Draft Content)

C1.Util.DX.DirectWrite.TextLayout.HitTestTextRange

HitTestTextRange Method

HitTestTextRange(int, int, float, float)

The application calls this function to get a set of hit-test metrics corresponding to a range of text positions. One of the main usages is to implement highlight selection of the text string. The function returns E_NOT_SUFFICIENT_BUFFER, which is equivalent to HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER), when the buffer size of hitTestMetrics is too small to hold all the regions calculated by the function. In this situation, the function sets the output value *actualHitTestMetricsCount to the number of geometries calculated. The application is responsible for allocating a new buffer of greater size and calling the function again. A good value to use as an initial value for maxHitTestMetricsCount may be calculated from the following equation: maxHitTestMetricsCount = lineCount * maxBidiReorderingDepth where lineCount is obtained from the value of the output argument *actualLineCount (from the function IDWriteTextLayout::GetLineLengths), and the maxBidiReorderingDepth value from the DWRITE_TEXT_METRICS structure of the output argument *textMetrics (from the function IDWriteFactory::CreateTextLayout).

Declaration
public HitTestMetrics[] HitTestTextRange(int textPosition, int textLength, float originX, float originY)
Parameters
Type Name Description
int textPosition

The first text position of the specified range.

int textLength

The number of positions of the specified range.

float originX

The origin pixel location X at the left of the layout box. This offset is added to the hit-test metrics returned.

float originY

The origin pixel location Y at the top of the layout box. This offset is added to the hit-test metrics returned.

Returns
Type Description
HitTestMetrics[]

a reference to a buffer of the output geometry fully enclosing the specified position range. The buffer must be at least as large as maxHitTestMetricsCount.

HitTestTextRange(int, int, float, float, HitTestMetrics[], int, out int)

HRESULT IDWriteTextLayout::HitTestTextRange([In] unsigned int textPosition,[In] unsigned int textLength,[In] float originX,[In] float originY,[Out, Buffer, Optional] DWRITE_HIT_TEST_METRICS* hitTestMetrics,[In] unsigned int maxHitTestMetricsCount,[Out] unsigned int* actualHitTestMetricsCount)

Declaration
public HResult HitTestTextRange(int textPosition, int textLength, float originX, float originY, HitTestMetrics[] hitTestMetrics, int maxHitTestMetricsCount, out int actualHitTestMetricsCount)
Parameters
Type Name Description
int textPosition
int textLength
float originX
float originY
HitTestMetrics[] hitTestMetrics
int maxHitTestMetricsCount
int actualHitTestMetricsCount
Returns
Type Description
HResult