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.
- attrs
Type : array<System.UInt32[]
[in, out] une matrice qui est terminée avec des index dans la liste d'GetColorableItem comme maintenu par la classe d'LanguageService.
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
- Confiance totale accordée à l'appelant immédiat. Ce membre ne peut pas être utilisé par du code d'un niveau de confiance partiel. Pour plus d'informations, consultez Utilisation de bibliothèques à partir de code d'un niveau de confiance partiel.