Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Conforme mencionado no visão geral da Análise de Tinta, a tecnologia de análise de tinta mantém internamente um modelo de documento baseado em árvore para conter resultados e relações de análise. Se o aplicativo já tiver um repositório de documentos estabelecido que seja diferente, você precisará usar os recursos de análise de tinta projetados para proxy de dados entre modelos de documento diferentes.
Tipos de Proxy de Dados
Os recursos de proxy de dados permitem que seu aplicativo:
- Integre os dados de resultados da análise de volta a um modelo de documento existente.
- Comunique os resultados anteriores (ou o estado) novamente noInkAnalyzer.
- Comunique o estado de não tinta no InkAnalyzer.
- Comunique apenas o conjunto mínimo de dados (estado anterior e não à tinta) necessário para concluir a operação de análise.
- Atualize facilmente o modelo de documento do aplicativo interno com resultados de análise.
Há duas abordagens básicas para o proxy de dados de análise de tinta. As diferenças estão nos detalhes de quando e como ocorre a sincronização entre os modelos de documento. A primeira abordagem, atualização síncrona, requer a modificação do modelo de documento de análise de tinta à medida que ocorrem alterações no documento do aplicativo. A segunda abordagem, a atualização sob demanda, requer que apenas os dados afetados pelas alterações no modelo de documento do aplicativo sejam passados para o InkAnalyzer. Ou seja, somente os dados das partes do modelo de documento de Análise de Tinta que estão na mesma área que as modificações no documento do aplicativo precisam ser passados para o InkAnalyzer conforme necessário.
Atualização síncrona
A abordagem de atualização síncrona requer a modificação (criação e exclusão) de nós no inkAnalyzer coleção de objetos ContextNode conforme eles ocorrem no documento do aplicativo. Por exemplo, sempre que uma palavra de texto é adicionada ao aplicativo, um TextWord correspondente estilo ContextNode é criado no InkAnalyzer. Se o local da palavra de texto na página for alterado, o local do ContextNode correspondente será atualizado ao mesmo tempo. Esse método é menos eficiente em termos de recursos de computação do que o método sob demanda, pois cada alteração de documento envolve uma atualização para o InkAnalyzer, mesmo que a alteração não afete a tinta que está sendo analisada.
O exemplo a seguir destina-se a mostrar como a atualização síncrona funciona. Imagine um aplicativo que tenha um modelo de documento existente. Quando o usuário final faz uma alteração no documento, como adicionar um novo texto, a alteração é processada da seguinte maneira:
- O usuário final cria os novos dados.
- O aplicativo determina como processar os dados, armazená-los e renderizá-los.
- Para fins práticos, as etapas a seguir ocorrem simultaneamente.
- Uma série de eventos será disparada se a alteração envolver tinta e o InkAnalyzer determinar novos resultados. Um evento é acionado para cada alteração feita na coleção de objetos ContextNode no InkAnalyzer. Esses eventos incluem ContextNodeCreated, ContextNodeDeleting, ContextNodeMovingToPosition, ContextNodePropertContextNodeLinkAdding, ContextNodeLinkDeletinge ContextNodeReparenting. O aplicativo manipula esses eventos para fazer proxy dos resultados da operação de análise de volta ao modelo de documento conforme apropriado.
- O aplicativo atualiza o layout do documento, extraindo os novos dados do modelo de documento.
- Os novos dados são renderizados de volta para o usuário final.
Atualização sob demanda
A abordagem sob demanda exige apenas que os dados sejam passados para esses objetos ContextNode que estão nas áreas que estão sendo analisadas. Os objetos ContextNode necessários são extraídos do modelo de documento do aplicativo logo após a invocação da operação de análise e novamente pouco antes de reconciliar os resultados. Embora mais complicada de implementar do que atualizações síncronas, essa abordagem gera melhores resultados de desempenho.
Tópicos relacionados
-
da classeInkAnalyzer (C++)