The text interface is curses-based - so while it may not be rendering graphics pixel by pixel, it's still laying characters out in two dimensions rather than e.g. presenting you with a list of cell values as unformatted text. So it's visual in the same way as Vi(m) is visual.