func (r *LogsDisplay) DrawLogBuffer() { utility.WipeArea(r.MarginPos+1, 3, r.width, r.height-2, r.page.Foreground, r.page.Background) paneStart := 3 paneEnd := r.height - 2 // height in rows of the screen if len(r.lineBuffer) < (paneEnd - paneStart) { // adjust for length of the buffer paneStart = paneEnd - len(r.lineBuffer) } offset := len(r.lineBuffer) - (paneEnd - paneStart) if r.pagingMode { offset = r.pagingOffset } // look at for i := paneEnd; i > paneStart; i-- { line := r.lineBuffer[(i-paneStart)+offset-1] cursor := r.MarginPos + 1 if line.Source != "" { source := fmt.Sprintf("[%s] ", line.Source) utility.WriteString(source, cursor, i-1, utility.ColorBrightGreen, r.page.Background) cursor += len(source) } if line.Indent { utility.WriteString(">> ", cursor, i-1, utility.ColorBrightGreen, r.page.Background) cursor += 3 } utility.WriteString(line.Line, cursor, i-1, r.page.Foreground, r.page.Background) } if r.pagingMode { numberOfPages := math.Ceil(float64(len(r.lineBuffer)) / float64(r.height-5)) currentPage := math.Ceil(float64(r.pagingOffset)/float64(r.height-5) + 1) // offSetIndicator := fmt.Sprintf(" %d / %d ", r.pagingOffset, len(r.lineBuffer)) offSetIndicator := fmt.Sprintf(" %d / %d ", int(currentPage), int(numberOfPages)) x := r.width - len(offSetIndicator) utility.WriteString(offSetIndicator, x, paneStart, r.page.Foreground, termbox.ColorRed) } }
func (r *NullDisplay) Setup(page *pages.Page) { r.page = page line := 5 for y := 0; y < 4; y++ { for x := 0; x < 8; x++ { for z := 0; z < 8; z++ { c1 := termbox.Attribute(256 - y*64 - x*8 - z) c2 := termbox.Attribute(1 + y*64 + z*8 + x) c3 := termbox.Attribute(256 - y*64 - z*8 - x) c4 := termbox.Attribute(1 + y*64 + x*4 + z*4) utility.WriteString(fmt.Sprintf("%d,%d,%d", y, x, z), 0, line, c1, r.page.Background) utility.WriteString(fmt.Sprintf("%d,%d,%d", y, z, x), 10, line, c2, r.page.Background) utility.WriteString(fmt.Sprintf("%d,%d,%d", y, z, x), 20, line, c3, r.page.Background) utility.WriteString(fmt.Sprintf("%d,%d,%d", y, x, z), 30, line, c4, r.page.Background) line++ } } } termbox.Flush() }
func (r *LogsDisplay) Setup(page *pages.Page) { r.page = page r.width, r.height = termbox.Size() utility.WriteString("Filters: ", 2, 3, page.Foreground, page.Background) termbox.SetCell(r.MarginPos, 2, rune(pages.LinesVerticalJoinDown), page.Foreground, page.Background) termbox.SetCell(r.MarginPos, r.height-2, rune(pages.LinesVerticalJoinUp), page.Foreground, page.Background) for i := 3; i < r.height-2; i++ { termbox.SetCell(r.MarginPos, i, rune(pages.LinesVLineStd), page.Foreground, page.Background) } r.DrawOriginList() r.DrawLogBuffer() termbox.Flush() }