Condividi tramite


Metodo Colorizer.ColorizeLine

Ottiene le informazioni sugli attributi del tipo di carattere e di colore per ciascun carattere della riga di testo specificata.

Spazio dei nomi:  Microsoft.VisualStudio.Package
Assembly:   Microsoft.VisualStudio.Package.LanguageService.11.0 (in Microsoft.VisualStudio.Package.LanguageService.11.0.dll)
  Microsoft.VisualStudio.Package.LanguageService.10.0 (in Microsoft.VisualStudio.Package.LanguageService.10.0.dll)
  Microsoft.VisualStudio.Package.LanguageService (in Microsoft.VisualStudio.Package.LanguageService.dll)
  Microsoft.VisualStudio.Package.LanguageService.9.0 (in Microsoft.VisualStudio.Package.LanguageService.9.0.dll)

Sintassi

'Dichiarazione
Public Overridable Function ColorizeLine ( _
    line As Integer, _
    length As Integer, _
    ptr As IntPtr, _
    state As Integer, _
    attrs As UInteger() _
) As Integer
public virtual int ColorizeLine(
    int line,
    int length,
    IntPtr ptr,
    int state,
    uint[] attrs
)

Parametri

  • line
    Tipo: System.Int32
    [in] Il numero di riga dalla riga di testo non riuscito.
  • length
    Tipo: System.Int32
    [in] Il numero di caratteri nel testo specificato.
  • ptr
    Tipo: System.IntPtr
    [in] Un puntatore unmarshaled a una riga di testo.
  • state
    Tipo: System.Int32
    [in] Lo stato corrente come gestito dal parser.

Valore restituito

Tipo: System.Int32
restituisce il valore di stato aggiornato.

Implementa

IVsColorizer.ColorizeLine(Int32, Int32, IntPtr, Int32, array<UInt32[])

Note

Questo metodo analizza la riga e fornisce per ogni carattere un indice in GetColorableItemelenco in quanto indicato del servizio di linguaggio tramite di ColorableItem ).In genere, questo metodo chiama i metodi IScanner oggetto per analizzare la riga in token e restituire un indice il colore dell'elemento per ogni token.

questo metodo è un'implementazione di ColorizeLine.

Il metodo di base elabora l'intero token della riga alla volta chiamando lo scanner ScanTokenAndProvideInfoAboutIt il metodo fino alla riga scaduto e riempie attrs matrice per ogni token utilizzando restituito TokenInfo struttura per informazioni sui colori.

Esempi

L'esempio seguente è simile alla versione gestita del framework del pacchetto di Colorizer la classe implementa questo metodo.Si noti il processo di effettuare il marshalling del testo in una stringa.

namespace Microsoft.VisualStudio.Package
{
    public class Colorizer : IVsColorizer
{
        IScanner scanner;

        public virtual int ColorizeLine(int line,
                                        int length,
                                        IntPtr ptr,
                                        int state,
                                        uint[] attrs)
        {
            int linepos = 0;
            if (this.scanner != null) {
                try
                {
                    string text = Marshal.PtrToStringUni(ptr, length);

                    this.scanner.SetSource(text, 0);

                    TokenInfo tokenInfo = new TokenInfo();

                    tokenInfo.EndIndex = -1;

                    while (this.scanner.ScanTokenAndProvideInfoAboutIt(tokenInfo, ref state))
                    {
                        if (attrs != null)
                        {
                            for (; linepos < tokenInfo.StartIndex; linepos++)
                                attrs[linepos] = (uint)TokenColor.Text;

                            for (; linepos <= tokenInfo.EndIndex; linepos++)
                                attrs[linepos] = (uint)tokenInfo.Color;
                        }
                    }
                }
                catch (Exception)
                {
                    // Ignore exceptions
                }
            }
            if (attrs != null)
            {
                // Must initialize the colors in all cases, otherwise you get 
                // random color junk on the screen.
                for (; linepos < length; linepos++)
                    attrs[linepos] = (uint)TokenColor.Text;
            }
            return state;
        }
    }
}

Sicurezza di .NET Framework

Vedere anche

Riferimenti

Colorizer Classe

Spazio dei nomi Microsoft.VisualStudio.Package