IWpfTextViewで表示されている線を取得して、表示されている線に基づいてビューポートやテキスト装飾を配置する方法を理解しようとしています。
これらの4つは、少なくともスパンに何らかの形で関与しているようです。そして、私が理解していることを確認するために、スパンはTextViewの一連の文字ですよね?
IWpfTextViewで表示されている線を取得して、表示されている線に基づいてビューポートやテキスト装飾を配置する方法を理解しようとしています。
これらの4つは、少なくともスパンに何らかの形で関与しているようです。そして、私が理解していることを確認するために、スパンはTextViewの一連の文字ですよね?
IWpfTextView.TextViewLines
目に見える線のコレクションです。場合によっては、最初と最後の行が非表示または部分的に表示されることがあります(ただし、2番目と最後から2番目の行は常に完全に表示される必要があります)。完全に表示される線のコレクションを取得するには、IWpfTextView.TextViewLines.FirstVisibleLine
とを使用するIWpfTextView.TextViewLines.LastVisibleLine
か、コレクションをでフィルタリングしITextViewLine.VisibilityState == VisibilityState.FullyVisible
ます。
ASpan
は開始位置と長さをラップする構造体ですが、実際のテキストは保持しません。VS Editorには、さまざまな目的のためにさまざまな種類のスパンがあります。たとえば、aは、開始位置、長さ、およびそれが属するスナップショットを格納するSnapshotSpan
のスパンです。ITextSnapshot
編集:
申し訳ありませんが、タイトルの質問を見逃しました。
APoint
は位置を示し、aSpan
は範囲を示します。一方をパラメーターとして受け取るほとんどのVSエディターAPIには、もう一方のオーバーロードがあります。
ITrackingPoint
とITrackingSpan
オフですITextBuffer
。「追跡」とは、テキストバッファの変更に応じてオフセット/拡大/縮小することを意味します。それらはスナップショットに依存しません。
SnapshotPoint
とSnapshotSpan
オフですITextSnapshot
。それらはにバインドされてITextSnapshot
おり、不変です。
ITextViewLine
表示用にフォーマットされた行です。通常、変更する必要はありません。Height
またはのように視覚的な情報を取得するだけVisibilityState
です。