GetVisualCaretOrder
フォーム、インタラクション、Unicode
説明
双方向ランを解決した後、アクティブな編集のすべてのキャレット位置を物理的な左から右の順で返します
各行は独立して解決され、返される位置はすべて拡張書素クラスタ境界に整合します
混合方向境界では、2つの視覚キャレット位置が物理的に異なるため、同じ論理インデックスが隣接しない複数のスロットに現れることがあります
要求されたインデックス単位は報告される論理インデックスだけを変え、視覚順序は変えません
宣言
function GetVisualCaretOrder(
IndexUnit: TPDFlibFormSelectionUnit;
out CaretIndices: TPDFlibFormCaretIndices): Integer;
パラメータ
| IndexUnit | fsuUTF16CodeUnit、fsuUnicodeCodePointまたはfsuGraphemeCluster |
|---|---|
| CaretIndices | ビジュアルテキストの左端から右端の順に並んだ論理キャレットインデックスを受け取ります |
戻り値
ビジュアルキャレスロットの数を返します。編集がアクティブでないかインデックス単位が無効な場合は0です
パフォーマンス
書記素境界と解決済みビジュアル順は、現在の編集値と方向についてキャッシュされ、ラン境界の対応付けには二分探索が使われます
例
var
Carets: TPDFlibFormCaretIndices;
begin
if Session.GetVisualCaretOrder(fsuGraphemeCluster, Carets) > 0 then
FirstVisualCaret := Carets[0];
end;
関連項目
MoveVisualCaret, SetTextDirection, GetSelectionRange, TPDFlibFormSession