GetVisualCaretOrder

Formulários, interação, Unicode

Descrição

Retorna cada posição do cursor para a edição ativa em ordem física da esquerda para a direita, depois de resolver os trechos bidirecionais

Cada linha é resolvida de forma independente e toda posição devolvida está alinhada a uma fronteira de cluster de grafemo estendido

O mesmo índice lógico pode aparecer em mais de um slot não adjacente em uma fronteira de direção mista, porque as duas posições visuais do cursor são fisicamente distintas

A unidade de índice solicitada muda apenas os índices lógicos relatados e não muda a ordenação visual

Declaração

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

Parâmetros

IndexUnitfsuUTF16CodeUnit, fsuUnicodeCodePoint ou fsuGraphemeCluster
CaretIndicesRecebe os índices lógicos de cursor ordenados da borda esquerda do texto visual à borda direita

Valor retornado

Retorna o número de slots visuais de cursor, ou zero quando nenhuma edição está ativa ou a unidade de índice é inválida

Desempenho

Limites de grafemas e ordem visual resolvida ficam em cache para o valor de edição e a direção atuais, com buscas binárias usadas para mapear limites de trechos

Exemplo

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

Veja também

MoveVisualCaret, SetTextDirection, GetSelectionRange, TPDFlibFormSession