IDWriteTextLayout::HitTestTextRange method (dwrite.h)
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).
Syntax
HRESULT HitTestTextRange(
UINT32 textPosition,
UINT32 textLength,
FLOAT originX,
FLOAT originY,
[out, optional] DWRITE_HIT_TEST_METRICS *hitTestMetrics,
UINT32 maxHitTestMetricsCount,
[out] UINT32 *actualHitTestMetricsCount
);
Parameters
textPosition
Type: UINT32
The first text position of the specified range.
textLength
Type: UINT32
The number of positions of the specified range.
originX
Type: FLOAT
The origin pixel location X at the left of the layout box. This offset is added to the hit-test metrics returned.
originY
Type: FLOAT
The origin pixel location Y at the top of the layout box. This offset is added to the hit-test metrics returned.
[out, optional] hitTestMetrics
Type: DWRITE_HIT_TEST_METRICS*
When this method returns, contains a pointer to a buffer of the output geometry fully enclosing the specified position range. The buffer must be at least as large as maxHitTestMetricsCount.
maxHitTestMetricsCount
Type: UINT32
Maximum number of boxes hitTestMetrics could hold in its buffer memory.
[out] actualHitTestMetricsCount
Type: UINT32*
Actual number of geometries hitTestMetrics holds in its buffer memory.
Return value
Type: HRESULT
If this method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.
Requirements
Requirement | Value |
---|---|
Minimum supported client | Windows 7, Windows Vista with SP2 and Platform Update for Windows Vista [desktop apps | UWP apps] |
Minimum supported server | Windows Server 2008 R2, Windows Server 2008 with SP2 and Platform Update for Windows Server 2008 [desktop apps | UWP apps] |
Target Platform | Windows |
Header | dwrite.h |
Library | Dwrite.lib |
DLL | Dwrite.dll |