syscall_windows.go raw

   1  package ansi
   2  
   3  import (
   4  	"syscall"
   5  )
   6  
   7  var (
   8  	kernel32                       = syscall.NewLazyDLL("kernel32.dll")
   9  	procGetConsoleScreenBufferInfo = kernel32.NewProc("GetConsoleScreenBufferInfo")
  10  	procSetConsoleTextAttribute    = kernel32.NewProc("SetConsoleTextAttribute")
  11  	procSetConsoleCursorPosition   = kernel32.NewProc("SetConsoleCursorPosition")
  12  	procFillConsoleOutputCharacter = kernel32.NewProc("FillConsoleOutputCharacterW")
  13  	procGetConsoleCursorInfo       = kernel32.NewProc("GetConsoleCursorInfo")
  14  	procSetConsoleCursorInfo       = kernel32.NewProc("SetConsoleCursorInfo")
  15  )
  16  
  17  type wchar uint16
  18  type short int16
  19  type dword uint32
  20  type word uint16
  21  
  22  type coord struct {
  23  	x short
  24  	y short
  25  }
  26  
  27  type smallRect struct {
  28  	left   short
  29  	top    short
  30  	right  short
  31  	bottom short
  32  }
  33  
  34  type consoleScreenBufferInfo struct {
  35  	size              coord
  36  	cursorPosition    coord
  37  	attributes        word
  38  	window            smallRect
  39  	maximumWindowSize coord
  40  }
  41  
  42  type consoleCursorInfo struct {
  43  	size    dword
  44  	visible int32
  45  }
  46