HitTestTextRange(Int32,Int32,Single,Single) Method
In This Topic
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
'Declaration
Public Overloads Function HitTestTextRange( _
ByVal As System.Integer, _
ByVal As System.Integer, _
ByVal As System.Single, _
ByVal As System.Single _
) As HitTestMetrics()
public HitTestMetrics[] HitTestTextRange(
System.int ,
System.int ,
System.float ,
System.float
)
Parameters
- textPosition
- The first text position of the specified range.
- textLength
- The number of positions of the specified range.
- originX
- The origin pixel location X at the left of the layout box. This offset is added to the hit-test metrics returned.
- originY
- The origin pixel location Y at the top of the layout box. This offset is added to the hit-test metrics returned.
Return Value
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.
See Also