GetVisualCaretOrder
Формы, взаимодействие, Unicode
Описание
Возвращает каждую позицию каретки для активной правки в физическом порядке слева направо после разрешения двунаправленных прогонов
Каждая строка разрешается независимо, и каждая возвращенная позиция выровнена по границе расширенного кластера графем
Один и тот же логический индекс может появиться более чем в одной несмежной позиции на границе смешанного направления, поскольку две визуальные позиции каретки физически различны
Запрошенная единица индекса меняет только сообщаемые логические индексы и не меняет визуальный порядок
Объявление
function GetVisualCaretOrder(
IndexUnit: TPDFlibFormSelectionUnit;
out CaretIndices: TPDFlibFormCaretIndices): Integer;
Параметры
| IndexUnit | fsuUTF16CodeUnit, fsuUnicodeCodePoint или fsuGraphemeCluster |
|---|---|
| CaretIndices | Получает логические индексы курсора, упорядоченные от левого края визуального текста к правому |
Возвращаемое значение
Возвращает число визуальных слотов курсора или ноль, когда правка не активна или единица индексов недопустима
Производительность
Границы графем и разрешенный визуальный порядок кэшируются для текущего значения правки и направления, а для отображения границ прогонов используются двоичные поиски
Пример
var
Carets: TPDFlibFormCaretIndices;
begin
if Session.GetVisualCaretOrder(fsuGraphemeCluster, Carets) > 0 then
FirstVisualCaret := Carets[0];
end;
См. также
MoveVisualCaret, SetTextDirection, GetSelectionRange, TPDFlibFormSession