102 lines
2.8 KiB
Go
102 lines
2.8 KiB
Go
// package term
|
|
|
|
// import (
|
|
// "errors"
|
|
// "io"
|
|
// )
|
|
|
|
// // type controlRow [2]byte
|
|
// // type controlTable [16]controlRow
|
|
|
|
// type rangeLookup map[rune]*byte
|
|
|
|
// type ControlRange struct {
|
|
// table controlTable
|
|
// set rangeLookup
|
|
// colOffset uint8
|
|
// }
|
|
|
|
// func (r *ControlRange) Get(col, row int) (byte, error) {
|
|
// if col < int(r.colOffset) || col >= int(r.colOffset)+2 || row < 0 || row > 15 {
|
|
// return byte(0), errors.New("Coordinates Out Of Bounds")
|
|
// }
|
|
// return glTable[row][col-int(r.colOffset)], nil
|
|
// }
|
|
|
|
// func (r *ControlRange) Lookup(ru rune) *byte {
|
|
// if point, ok := r.set[ru]; ok {
|
|
// return point
|
|
// }
|
|
// return nil
|
|
// }
|
|
|
|
// // type graphicRow [6]byte
|
|
// // type graphicTable [16]graphicRow
|
|
|
|
// type GraphicRange struct {
|
|
// table graphicTable
|
|
// set rangeLookup
|
|
// colOffset uint8
|
|
// lockShifts map[GraphicRegister]ControlSequence
|
|
// singleShifts map[GraphicRegister]ControlSequence
|
|
// }
|
|
|
|
// func (r *GraphicRange) Get(col, row int) (byte, error) {
|
|
// if col < int(r.colOffset) || col >= int(r.colOffset)+6 || row < 0 || row > 15 {
|
|
// return byte(0), errors.New("Coordinates Out Of Bounds")
|
|
// }
|
|
// return r.table[row][col-int(r.colOffset)], nil
|
|
// }
|
|
|
|
// func (r *GraphicRange) Lookup(ru rune) *byte {
|
|
// if point, ok := r.set[ru]; ok {
|
|
// return point
|
|
// }
|
|
// return nil
|
|
// }
|
|
|
|
// func (r *GraphicRange) load(gOverlay *CharacterSet) {
|
|
// if r.set == nil {
|
|
// r.set = rangeLookup{}
|
|
// }
|
|
// for i, row := range gOverlay.table {
|
|
// for j, graph := range row {
|
|
// if graph == nil {
|
|
// continue
|
|
// }
|
|
// r.set[*graph] = &r.table[i][j]
|
|
// }
|
|
// }
|
|
// // fmt.Printf("%+v", r.set)
|
|
// }
|
|
|
|
// func (rg *GraphicRange) lockShift(register GraphicRegister, w io.Writer) error {
|
|
// if rg.lockShifts == nil {
|
|
// return errors.New("Register does not have defined Lock Shifts")
|
|
// }
|
|
// if _, ok := rg.lockShifts[register]; !ok {
|
|
// return errors.New("This register cannot be Lock Shifted into this Range.")
|
|
// }
|
|
// rg.lockShifts[register].Invoke(w)
|
|
// rg.load(register.register.set)
|
|
// return nil
|
|
// }
|
|
|
|
// func (rg *GraphicRange) singleShift(register GraphicRegister) ([]byte, error) {
|
|
// if rg.singleShifts == nil {
|
|
// return nil, errors.New("Register does not have defined Single Shifts")
|
|
// }
|
|
// if _, ok := rg.singleShifts[register]; !ok {
|
|
// return nil, errors.New("This register cannot be Single Shifted into this Range.")
|
|
// }
|
|
// return rg.singleShifts[register].Bytes(), nil
|
|
// }
|
|
|
|
// func (rg *GraphicRange) Load(register GraphicRegister) error {
|
|
// return rg.Load(register)
|
|
// }
|
|
|
|
// // Negative Question Mark.
|
|
// // var UNKNOWN = NewControlSequence(CSI, C03R07, C06R13, C03R15, CSI, C03R00, C06R13).Bytes()
|
|
// var UNKNOWN = append(append(SGR(SGRPs.Negative).Bytes(), C03R15), SGR(SGRPs.Positive).Bytes()...)
|