view

package
v0.3.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 7, 2025 License: MIT Imports: 4 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CompositeMoveDown

func CompositeMoveDown(ctx Context, textLayout *TextLayout, viewLocalPos int) int

func CompositeMoveLeft

func CompositeMoveLeft(ctx Context, textLayout *TextLayout, viewLocalPos int) int

func CompositeMoveRight

func CompositeMoveRight(ctx Context, textLayout *TextLayout, viewLocalPos int) int

func CompositeMoveUp

func CompositeMoveUp(ctx Context, textLayout *TextLayout, viewLocalPos int) int

func CompositeViewIndex

func CompositeViewIndex(table []int, viewLocalPos int) (Row int, Column int)

func CompositeViewLengthTable

func CompositeViewLengthTable(ctx Context, textLayout *TextLayout) ([]int, int)

Types

type CharacterReference

type CharacterReference struct {
	StartPosition model.Position
	Bytes         int
	LineWrap      bool
}

type Context

type Context struct {
	Resolver    TextViewResolver
	Document    model.Document
	FoldManager FoldManager
}

func (Context) GetSegment

func (ctx Context) GetSegment(e model.Element, rangeIndex int) model.Segment

func (Context) GetText

func (ctx Context) GetText(e model.Element) string

type FoldBlockView

type FoldBlockView struct {
}

func (*FoldBlockView) ConvertModel

func (fv *FoldBlockView) ConvertModel(ctx Context, textLayout *TextLayout, viewLocalPos int) CharacterReference

func (*FoldBlockView) ConvertPos

func (fv *FoldBlockView) ConvertPos(ctx Context, textLayout *TextLayout, viewLocalPos int) (ViewLocalX int, ViewLocalY int)

func (*FoldBlockView) ConvertViewLocalPos

func (fv *FoldBlockView) ConvertViewLocalPos(ctx Context, textLayout *TextLayout, bytePos model.Position) int

func (*FoldBlockView) Draw

func (fv *FoldBlockView) Draw(ctx Context, textLayout *TextLayout, renderer Renderer)

func (*FoldBlockView) Layout

func (fv *FoldBlockView) Layout(ctx Context, textLayout *TextLayout, x, y, w, h int)

func (*FoldBlockView) MinimumSize

func (fv *FoldBlockView) MinimumSize(ctx Context, e model.Element, width int, height int) *TextLayout

func (*FoldBlockView) MoveDown

func (fv *FoldBlockView) MoveDown(ctx Context, textLayout *TextLayout, viewLocalPos int) int

func (*FoldBlockView) MoveLeft

func (fv *FoldBlockView) MoveLeft(ctx Context, textLayout *TextLayout, viewLocalPos int) int

func (*FoldBlockView) MoveLength

func (fv *FoldBlockView) MoveLength(ctx Context, textLayout *TextLayout) int

func (*FoldBlockView) MoveRight

func (fv *FoldBlockView) MoveRight(ctx Context, textLayout *TextLayout, viewLocalPos int) int

func (*FoldBlockView) MoveUp

func (fv *FoldBlockView) MoveUp(ctx Context, textLayout *TextLayout, viewLocalPos int) int

func (*FoldBlockView) ShouldBeforeInsertionNewLineOnLineBegin

func (fv *FoldBlockView) ShouldBeforeInsertionNewLineOnLineBegin(ctx Context, textLayout *TextLayout, viewLocalPos int) bool

func (*FoldBlockView) ShouldRemoveLastCharacter

func (fv *FoldBlockView) ShouldRemoveLastCharacter(ctx Context, textLayout *TextLayout) bool

func (*FoldBlockView) ShouldRemoveWithLine

func (fv *FoldBlockView) ShouldRemoveWithLine(ctx Context, textLayout *TextLayout, viewLocalPos int) bool

func (*FoldBlockView) ShouldRemoveWithSpecifiedColumnAfter

func (fv *FoldBlockView) ShouldRemoveWithSpecifiedColumnAfter(ctx Context, textLayout *TextLayout, viewLocalPos int) (model.Position, bool)

func (*FoldBlockView) ShouldRemoveWithSpecifiedRangeColumns

func (fv *FoldBlockView) ShouldRemoveWithSpecifiedRangeColumns(ctx Context, textLayout *TextLayout, viewLocalPos int) (model.Range, bool)

func (*FoldBlockView) ShouldRemoveWithSpecifiedRangeLines

func (fv *FoldBlockView) ShouldRemoveWithSpecifiedRangeLines(ctx Context, textLayout *TextLayout, viewLocalPos int) (model.Range, bool)

type FoldManager

type FoldManager interface {
	IsFolded(doc model.Document, e model.Element) bool
}

type GhostView

type GhostView struct {
}

func (*GhostView) ConvertModel

func (g *GhostView) ConvertModel(ctx Context, textLayout *TextLayout, viewLocalPos int) CharacterReference

func (*GhostView) ConvertPos

func (g *GhostView) ConvertPos(ctx Context, textLayout *TextLayout, viewLocalPos int) (ViewLocalX int, ViewLocalY int)

func (*GhostView) ConvertViewLocalPos

func (g *GhostView) ConvertViewLocalPos(ctx Context, textLayout *TextLayout, bytePos model.Position) int

func (*GhostView) Draw

func (g *GhostView) Draw(ctx Context, textLayout *TextLayout, renderer Renderer)

func (*GhostView) Layout

func (g *GhostView) Layout(ctx Context, textLayout *TextLayout, x, y, w, h int)

func (*GhostView) MinimumSize

func (g *GhostView) MinimumSize(ctx Context, e model.Element, width int, height int) *TextLayout

func (*GhostView) MoveDown

func (g *GhostView) MoveDown(ctx Context, textLayout *TextLayout, viewLocalPos int) int

func (*GhostView) MoveLeft

func (g *GhostView) MoveLeft(ctx Context, textLayout *TextLayout, viewLocalPos int) int

func (*GhostView) MoveLength

func (g *GhostView) MoveLength(ctx Context, textLayout *TextLayout) int

func (*GhostView) MoveRight

func (g *GhostView) MoveRight(ctx Context, textLayout *TextLayout, viewLocalPos int) int

func (*GhostView) MoveUp

func (g *GhostView) MoveUp(ctx Context, textLayout *TextLayout, viewLocalPos int) int

func (*GhostView) ShouldBeforeInsertionNewLineOnLineBegin

func (g *GhostView) ShouldBeforeInsertionNewLineOnLineBegin(ctx Context, textLayout *TextLayout, viewLocalPos int) bool

func (*GhostView) ShouldRemoveLastCharacter

func (g *GhostView) ShouldRemoveLastCharacter(ctx Context, textLayout *TextLayout) bool

func (*GhostView) ShouldRemoveWithLine

func (g *GhostView) ShouldRemoveWithLine(ctx Context, textLayout *TextLayout, viewLocalPos int) bool

func (*GhostView) ShouldRemoveWithSpecifiedColumnAfter

func (g *GhostView) ShouldRemoveWithSpecifiedColumnAfter(ctx Context, textLayout *TextLayout, viewLocalPos int) (model.Position, bool)

func (*GhostView) ShouldRemoveWithSpecifiedRangeColumns

func (g *GhostView) ShouldRemoveWithSpecifiedRangeColumns(ctx Context, textLayout *TextLayout, viewLocalPos int) (model.Range, bool)

func (*GhostView) ShouldRemoveWithSpecifiedRangeLines

func (g *GhostView) ShouldRemoveWithSpecifiedRangeLines(ctx Context, textLayout *TextLayout, viewLocalPos int) (model.Range, bool)

type LinebaseTextView

type LinebaseTextView interface {
	TextView

	ConvertRelativeX(ctx Context, textLayout *TextLayout, viewLocalPos int) int

	MoveFirstLine(ctx Context, textLayout *TextLayout, relX int) int

	MoveLastLine(ctx Context, textLayout *TextLayout, relX int) int
}

type PlainTextView

type PlainTextView struct {
}

func (*PlainTextView) ConvertModel

func (p *PlainTextView) ConvertModel(ctx Context, textLayout *TextLayout, viewLocalPos int) CharacterReference

func (*PlainTextView) ConvertPos

func (p *PlainTextView) ConvertPos(ctx Context, textLayout *TextLayout, viewLocalPos int) (ViewLocalX int, ViewLocalY int)

func (*PlainTextView) ConvertRelativeX

func (p *PlainTextView) ConvertRelativeX(ctx Context, textLayout *TextLayout, viewLocalPos int) int

func (*PlainTextView) ConvertViewLocalPos

func (p *PlainTextView) ConvertViewLocalPos(ctx Context, textLayout *TextLayout, bytePos model.Position) int

func (*PlainTextView) Draw

func (p *PlainTextView) Draw(ctx Context, textLayout *TextLayout, renderer Renderer)

func (*PlainTextView) Layout

func (p *PlainTextView) Layout(ctx Context, textLayout *TextLayout, x, y, w, h int)

func (*PlainTextView) MinimumSize

func (p *PlainTextView) MinimumSize(ctx Context, e model.Element, width int, height int) *TextLayout

func (*PlainTextView) MoveDown

func (p *PlainTextView) MoveDown(ctx Context, textLayout *TextLayout, viewLocalPos int) int

func (*PlainTextView) MoveFirstLine

func (p *PlainTextView) MoveFirstLine(ctx Context, textLayout *TextLayout, relX int) int

func (*PlainTextView) MoveLastLine

func (p *PlainTextView) MoveLastLine(ctx Context, textLayout *TextLayout, relX int) int

func (*PlainTextView) MoveLeft

func (p *PlainTextView) MoveLeft(ctx Context, textLayout *TextLayout, viewLocalPos int) int

func (*PlainTextView) MoveLength

func (p *PlainTextView) MoveLength(ctx Context, textLayout *TextLayout) int

func (*PlainTextView) MoveRight

func (p *PlainTextView) MoveRight(ctx Context, textLayout *TextLayout, viewLocalPos int) int

func (*PlainTextView) MoveUp

func (p *PlainTextView) MoveUp(ctx Context, textLayout *TextLayout, viewLocalPos int) int

func (*PlainTextView) ShouldBeforeInsertionNewLineOnLineBegin

func (p *PlainTextView) ShouldBeforeInsertionNewLineOnLineBegin(ctx Context, textLayout *TextLayout, viewLocalPos int) bool

func (*PlainTextView) ShouldRemoveLastCharacter

func (p *PlainTextView) ShouldRemoveLastCharacter(ctx Context, textLayout *TextLayout) bool

func (*PlainTextView) ShouldRemoveWithLine

func (p *PlainTextView) ShouldRemoveWithLine(ctx Context, textLayout *TextLayout, viewLocalPos int) bool

func (*PlainTextView) ShouldRemoveWithSpecifiedColumnAfter

func (p *PlainTextView) ShouldRemoveWithSpecifiedColumnAfter(ctx Context, textLayout *TextLayout, viewLocalPos int) (model.Position, bool)

func (*PlainTextView) ShouldRemoveWithSpecifiedRangeColumns

func (p *PlainTextView) ShouldRemoveWithSpecifiedRangeColumns(ctx Context, textLayout *TextLayout, viewLocalPos int) (model.Range, bool)

func (*PlainTextView) ShouldRemoveWithSpecifiedRangeLines

func (p *PlainTextView) ShouldRemoveWithSpecifiedRangeLines(ctx Context, textLayout *TextLayout, viewLocalPos int) (model.Range, bool)

type Renderer

type Renderer interface {
	SetContent(x int, y int, primary rune, combining []rune, style tcell.Style)

	Translate(offsetX int, offsetY int) Renderer
}

type TabStopTextView

type TabStopTextView interface {
	WidthWithTabStop(ctx Context, e model.Element, column int) int
}

type TextLayout

type TextLayout struct {
	Element  model.Element
	Children []*TextLayout

	// この要素を描画するとき、親はこのオフセット分TranslateしたRendererを子に渡して描画を移譲する
	RelativeX int
	RelativeY int

	Width         int
	Height        int
	MinimumWidth  int
	MinimumHeight int
	WidthTable    []int
}

type TextView

type TextView interface {
	// x,y はこのビューを置くべき左上の座標
	// w,h はこのビューに与えられたサイズ
	Layout(ctx Context, textLayout *TextLayout, x, y, w, h int)

	// rendererは0,0をビューの左上として描画を開始する
	Draw(ctx Context, textLayout *TextLayout, renderer Renderer)

	// width,height はこのビューに与えられたサイズ
	MinimumSize(ctx Context, e model.Element, width int, height int) *TextLayout

	MoveLength(ctx Context, textLayout *TextLayout) int
	MoveUp(ctx Context, textLayout *TextLayout, viewLocalPos int) int
	MoveDown(ctx Context, textLayout *TextLayout, viewLocalPos int) int
	MoveLeft(ctx Context, textLayout *TextLayout, viewLocalPos int) int
	MoveRight(ctx Context, textLayout *TextLayout, viewLocalPos int) int
	ConvertPos(ctx Context, textLayout *TextLayout, viewLocalPos int) (ViewLocalX int, ViewLocalY int)
	ConvertModel(ctx Context, textLayout *TextLayout, viewLocalPos int) CharacterReference

	// バイト座標をローカルビュー座標に変換する
	// 飾りと重なるときは内側に寄せる
	ConvertViewLocalPos(ctx Context, textLayout *TextLayout, bytePos model.Position) int

	// 指定のローカルビュー位置における改行を行の前に移動するなら true を返す
	ShouldBeforeInsertionNewLineOnLineBegin(ctx Context, textLayout *TextLayout, viewLocalPos int) bool

	// 指定のローカルビュー位置における削除で行全体を削除するべきなら true を返す
	ShouldRemoveWithLine(ctx Context, textLayout *TextLayout, viewLocalPos int) bool

	// 指定のローカルビュー位置における削除で指定位置以降の列をすべて削除するべきなら true を返す
	ShouldRemoveWithSpecifiedColumnAfter(ctx Context, textLayout *TextLayout, viewLocalPos int) (model.Position, bool)

	// 指定のローカルビュー位置における削除で指定範囲をすべて削除するべきなら true を返す
	ShouldRemoveWithSpecifiedRangeLines(ctx Context, textLayout *TextLayout, viewLocalPos int) (model.Range, bool)

	// 指定のローカルビュー位置における削除で指定範囲をすべて削除するべきなら true を返す
	ShouldRemoveWithSpecifiedRangeColumns(ctx Context, textLayout *TextLayout, viewLocalPos int) (model.Range, bool)

	// このビューの直後の削除が直前のこのビューに食い込むなら true を返す
	ShouldRemoveLastCharacter(ctx Context, textLayout *TextLayout) bool
}

type TextViewResolver

type TextViewResolver interface {
	Resolve(e model.Element) TextView
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL