cling/lib/UserInterface/textinput/TerminalDisplayUnix.h

56 lines
1.6 KiB
C++

//===--- TerminalDisplayUnix.h - Output To UNIX Terminal --------*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
// This file defines the interface for writing to a UNIX terminal. It tries to
// support all "common" terminal types.
//
// Axel Naumann <axel@cern.ch>, 2011-05-12
//===----------------------------------------------------------------------===//
#ifndef TEXTINPUT_TERMINALDISPLAYUNIX_H
#define TEXTINPUT_TERMINALDISPLAYUNIX_H
#include <cstddef>
#include "textinput/TerminalDisplay.h"
namespace textinput {
class Color;
// Output to tty / pipe / file.
class TerminalDisplayUnix: public TerminalDisplay {
public:
TerminalDisplayUnix();
~TerminalDisplayUnix();
void HandleResizeSignal();
void Attach();
void Detach();
protected:
void MoveUp(size_t nLines = 1);
void MoveDown(size_t nLines = 1);
void MoveLeft(size_t nCols = 1);
void MoveRight(size_t nCols = 1);
void MoveInternal(char What, size_t n);
void MoveFront();
void SetColor(char CIdx, const Color& C);
void WriteRawString(const char* text, size_t len);
void ActOnEOL();
void EraseToRight();
int GetClosestColorIdx256(const Color& C);
int GetClosestColorIdx16(const Color& C);
private:
bool fIsAttached; // whether tty is configured
size_t fNColors; // number of colors supported by output
};
}
#endif // TEXTINPUT_TERMINALDISPLAYUNIX_H