Condividi tramite


Proxy dati con analisi input penna

Come indicato in Panoramica dell'analisi dell'input penna, la tecnologia di analisi dell'input penna gestisce internamente un modello di documento basato su albero per contenere i risultati e le relazioni di analisi. Se l'applicazione dispone già di un archivio documenti stabilito diverso, sarà necessario usare le funzionalità di analisi dell'input penna progettate per eseguire il proxy dei dati tra modelli di documento diversi.

Tipi di proxy dati

Le funzionalità proxy dati consentono all'applicazione di:

  • Integrare i dati dei risultati dell'analisi in un modello di documento esistente.
  • Comunicare i risultati precedenti (o lo stato) nel InkAnalyzer.
  • Comunicare lo stato non ink nel InkAnalyzer.
  • Comunicare solo il set minimo di dati (stato precedente e non input penna) necessario per completare l'operazione di analisi.
  • Aggiornare facilmente il modello di documento dell'applicazione interno con i risultati dell'analisi.

Esistono due approcci di base per il proxy dati di analisi dell'input penna. Le differenze si trovano nei dettagli di quando e come si verifica la sincronizzazione tra i modelli di documento. Il primo approccio, aggiornamento sincrono, richiede la modifica del modello di documento di analisi dell'input penna man mano che si verificano modifiche nel documento dell'applicazione. Il secondo approccio, l'aggiornamento su richiesta, richiede che solo i dati interessati dalle modifiche apportate al modello di documento dell'applicazione vengano passati al InkAnalyzer. Ciò significa che solo i dati per le parti del modello di documento analisi input penna presenti nella stessa area delle modifiche apportate al documento dell'applicazione devono essere passati al InkAnalyzer in base alle esigenze.

Aggiornamento sincrono

L'approccio di aggiornamento sincrono richiede la modifica (creazione ed eliminazione) di nodi nel InkAnalyzer insieme di oggetti ContextNode mentre si verificano nel documento dell'applicazione. Ad esempio, ogni volta che viene aggiunta una parola di testo all'applicazione, un TextWord corrispondenteContextNode viene creato nel InkAnalyzer. Se la posizione della parola di testo nella pagina cambia, la posizione del ContextNode corrispondente viene aggiornata contemporaneamente. Questo metodo è meno efficiente in termini di risorse di calcolo rispetto al metodo su richiesta perché ogni modifica del documento comporta un aggiornamento al InkAnalyzer, anche se la modifica non influisce sull'input penna analizzato.

Nell'esempio seguente viene illustrato il funzionamento dell'aggiornamento sincrono. Si immagini un'applicazione con un modello di documento esistente. Quando l'utente finale apporta una modifica al documento, ad esempio l'aggiunta di nuovo testo, la modifica viene elaborata come segue:

  1. L'utente finale crea i nuovi dati.
  2. L'applicazione determina come elaborare i dati, archiviarli ed eseguirne il rendering.
  3. A scopo pratico, i passaggi seguenti si svolgono contemporaneamente.
    1. L'applicazione inserisce i dati nel modello di documento.
    2. L'applicazione crea un InkAnalyzer e lo aggiorna. In questo modo si assicura contemporaneamente che il InkAnalyzer abbia sempre le informazioni più recenti.
    3. L'applicazione chiama BackgroundAnalyze sulInkAnalyzerper iniziare l'analisi.
  4. Viene generata una serie di eventi se la modifica comporta input penna e la InkAnalyzer determina nuovi risultati. Viene generato un evento per ogni modifica apportata all'insieme di oggetti ContextNode nel InkAnalyzer. Questi eventi includono ContextNodeCreated, ContextNodeDeleting, ContextNodeMovingToPosition, ContextNodePropertiesUpdated, ContextNodeLinkAdding, ContextNodeLinkDeletinge ContextNodeReparenting. L'applicazione gestisce questi eventi per eseguire il proxy dei risultati dell'operazione di analisi nel modello di documento in base alle esigenze.
  5. L'applicazione aggiorna il layout del documento, trascinando i nuovi dati dal modello di documento.
  6. Il rendering dei nuovi dati viene eseguito all'utente finale.

Aggiornamento su richiesta

L'approccio su richiesta richiede solo il passaggio dei dati per gli oggetti ContextNode presenti nelle aree analizzate. Gli oggetti ContextNode necessari vengono estratti dal modello di documento dell'applicazione subito dopo la chiamata dell'operazione di analisi e ancora una volta prima di riconciliare i risultati. Sebbene sia più complicato implementare gli aggiornamenti sincroni, questo approccio produce risultati migliori per le prestazioni.

Panoramica dell'analisi dell'input penna

classe InkAnalyzer (C++)

Microsoft.Ink.InkAnalyzer

Microsoft.Ink.ContextNode