Partager via


Colorizer.ColorizeLine, méthode

Obtient les informations de couleur et d'attribut de police pour chaque personnage dans la ligne de texte spécifiée.

Espace de noms :  Microsoft.VisualStudio.Package
Assemblys :   Microsoft.VisualStudio.Package.LanguageService.11.0 (dans Microsoft.VisualStudio.Package.LanguageService.11.0.dll)
  Microsoft.VisualStudio.Package.LanguageService.10.0 (dans Microsoft.VisualStudio.Package.LanguageService.10.0.dll)
  Microsoft.VisualStudio.Package.LanguageService (dans Microsoft.VisualStudio.Package.LanguageService.dll)
  Microsoft.VisualStudio.Package.LanguageService.9.0 (dans Microsoft.VisualStudio.Package.LanguageService.9.0.dll)

Syntaxe

'Déclaration
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
)

Paramètres

  • line
    Type : System.Int32
    [in] le numéro de ligne dont la ligne de texte où provient.
  • length
    Type : System.Int32
    [in] nombre de personnages dans le texte donné.
  • ptr
    Type : System.IntPtr
    [in] un pointeur démarshalé à une ligne de texte.
  • state
    Type : System.Int32
    [in] l'état actuel comme maintenu par l'analyseur.

Valeur de retour

Type : System.Int32
Retourne la valeur mise à jour d'état.

Implémentations

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

Remarques

Cette méthode analyse la ligne et fournit pour chaque personnage un index dans la liste d'ColorableItem de la manière attendue par le service de langage (via l'GetColorableItem).En général, les appels de méthode l'objet d'IScanner pour analyser la ligne dans des jetons et retourner un index coloriable d'élément pour chaque jeton.

Cette méthode est une implémentation de ColorizeLine.

La méthode de base traite le jeton entier de la ligne une à la fois en appelant la méthode de l'ScanTokenAndProvideInfoAboutIt du scanneur jusqu'à ce que la ligne soit atteinte complète et la matrice d'attrs pour chaque jeton à l'aide de la structure retournée d'TokenInfo pour les informations sur la couleur.

Exemples

Voici comment la version managée d'infrastructure de package de la classe d'Colorizer applique cette méthode.Notez le processus de marshaler le texte à une chaîne.

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;
        }
    }
}

Sécurité .NET Framework

Voir aussi

Référence

Colorizer Classe

Microsoft.VisualStudio.Package, espace de noms