mirror of
				https://gitea.com/Lydanne/buildx.git
				synced 2025-10-31 08:03:43 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			138 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			138 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package aec
 | |
| 
 | |
| import "fmt"
 | |
| 
 | |
| // EraseMode is listed in a variable EraseModes.
 | |
| type EraseMode uint
 | |
| 
 | |
| var (
 | |
| 	// EraseModes is a list of EraseMode.
 | |
| 	EraseModes struct {
 | |
| 		// All erase all.
 | |
| 		All EraseMode
 | |
| 
 | |
| 		// Head erase to head.
 | |
| 		Head EraseMode
 | |
| 
 | |
| 		// Tail erase to tail.
 | |
| 		Tail EraseMode
 | |
| 	}
 | |
| 
 | |
| 	// Save saves the cursor position.
 | |
| 	Save ANSI
 | |
| 
 | |
| 	// Restore restores the cursor position.
 | |
| 	Restore ANSI
 | |
| 
 | |
| 	// Hide hides the cursor.
 | |
| 	Hide ANSI
 | |
| 
 | |
| 	// Show shows the cursor.
 | |
| 	Show ANSI
 | |
| 
 | |
| 	// Report reports the cursor position.
 | |
| 	Report ANSI
 | |
| )
 | |
| 
 | |
| // Up moves up the cursor.
 | |
| func Up(n uint) ANSI {
 | |
| 	if n == 0 {
 | |
| 		return empty
 | |
| 	}
 | |
| 	return newAnsi(fmt.Sprintf(esc+"%dA", n))
 | |
| }
 | |
| 
 | |
| // Down moves down the cursor.
 | |
| func Down(n uint) ANSI {
 | |
| 	if n == 0 {
 | |
| 		return empty
 | |
| 	}
 | |
| 	return newAnsi(fmt.Sprintf(esc+"%dB", n))
 | |
| }
 | |
| 
 | |
| // Right moves right the cursor.
 | |
| func Right(n uint) ANSI {
 | |
| 	if n == 0 {
 | |
| 		return empty
 | |
| 	}
 | |
| 	return newAnsi(fmt.Sprintf(esc+"%dC", n))
 | |
| }
 | |
| 
 | |
| // Left moves left the cursor.
 | |
| func Left(n uint) ANSI {
 | |
| 	if n == 0 {
 | |
| 		return empty
 | |
| 	}
 | |
| 	return newAnsi(fmt.Sprintf(esc+"%dD", n))
 | |
| }
 | |
| 
 | |
| // NextLine moves down the cursor to head of a line.
 | |
| func NextLine(n uint) ANSI {
 | |
| 	if n == 0 {
 | |
| 		return empty
 | |
| 	}
 | |
| 	return newAnsi(fmt.Sprintf(esc+"%dE", n))
 | |
| }
 | |
| 
 | |
| // PreviousLine moves up the cursor to head of a line.
 | |
| func PreviousLine(n uint) ANSI {
 | |
| 	if n == 0 {
 | |
| 		return empty
 | |
| 	}
 | |
| 	return newAnsi(fmt.Sprintf(esc+"%dF", n))
 | |
| }
 | |
| 
 | |
| // Column set the cursor position to a given column.
 | |
| func Column(col uint) ANSI {
 | |
| 	return newAnsi(fmt.Sprintf(esc+"%dG", col))
 | |
| }
 | |
| 
 | |
| // Position set the cursor position to a given absolute position.
 | |
| func Position(row, col uint) ANSI {
 | |
| 	return newAnsi(fmt.Sprintf(esc+"%d;%dH", row, col))
 | |
| }
 | |
| 
 | |
| // EraseDisplay erases display by given EraseMode.
 | |
| func EraseDisplay(m EraseMode) ANSI {
 | |
| 	return newAnsi(fmt.Sprintf(esc+"%dJ", m))
 | |
| }
 | |
| 
 | |
| // EraseLine erases lines by given EraseMode.
 | |
| func EraseLine(m EraseMode) ANSI {
 | |
| 	return newAnsi(fmt.Sprintf(esc+"%dK", m))
 | |
| }
 | |
| 
 | |
| // ScrollUp scrolls up the page.
 | |
| func ScrollUp(n int) ANSI {
 | |
| 	if n == 0 {
 | |
| 		return empty
 | |
| 	}
 | |
| 	return newAnsi(fmt.Sprintf(esc+"%dS", n))
 | |
| }
 | |
| 
 | |
| // ScrollDown scrolls down the page.
 | |
| func ScrollDown(n int) ANSI {
 | |
| 	if n == 0 {
 | |
| 		return empty
 | |
| 	}
 | |
| 	return newAnsi(fmt.Sprintf(esc+"%dT", n))
 | |
| }
 | |
| 
 | |
| func init() {
 | |
| 	EraseModes = struct {
 | |
| 		All  EraseMode
 | |
| 		Head EraseMode
 | |
| 		Tail EraseMode
 | |
| 	}{
 | |
| 		Tail: 0,
 | |
| 		Head: 1,
 | |
| 		All:  2,
 | |
| 	}
 | |
| 
 | |
| 	Save = newAnsi(esc + "s")
 | |
| 	Restore = newAnsi(esc + "u")
 | |
| 	Hide = newAnsi(esc + "?25l")
 | |
| 	Show = newAnsi(esc + "?25h")
 | |
| 	Report = newAnsi(esc + "6n")
 | |
| }
 | 
