GetVisualCaretOrder

フォーム、インタラクション、Unicode

説明

双方向ランを解決した後、アクティブな編集のすべてのキャレット位置を物理的な左から右の順で返します

各行は独立して解決され、返される位置はすべて拡張書素クラスタ境界に整合します

混合方向境界では、2つの視覚キャレット位置が物理的に異なるため、同じ論理インデックスが隣接しない複数のスロットに現れることがあります

要求されたインデックス単位は報告される論理インデックスだけを変え、視覚順序は変えません

宣言

function GetVisualCaretOrder(
  IndexUnit: TPDFlibFormSelectionUnit;
  out CaretIndices: TPDFlibFormCaretIndices): Integer;

パラメータ

IndexUnitfsuUTF16CodeUnit、fsuUnicodeCodePointまたはfsuGraphemeCluster
CaretIndicesビジュアルテキストの左端から右端の順に並んだ論理キャレットインデックスを受け取ります

戻り値

ビジュアルキャレスロットの数を返します。編集がアクティブでないかインデックス単位が無効な場合は0です

パフォーマンス

書記素境界と解決済みビジュアル順は、現在の編集値と方向についてキャッシュされ、ラン境界の対応付けには二分探索が使われます

例

var
  Carets: TPDFlibFormCaretIndices;
begin
  if Session.GetVisualCaretOrder(fsuGraphemeCluster, Carets) > 0 then
    FirstVisualCaret := Carets[0];
end;

関連項目

MoveVisualCaret, SetTextDirection, GetSelectionRange, TPDFlibFormSession