Use bitwise operators in LegacyWindowsTerm, fix formatting

This commit is contained in:
Darren Burns 2022-03-03 14:23:55 +00:00
parent 1122501d62
commit d87498bf36
2 changed files with 5 additions and 11 deletions

View file

@ -253,8 +253,7 @@ class LegacyWindowsTerm:
15, # bright white 15, # bright white
] ]
def __init__(self, file: IO[str] = sys.stdout): def __init__(self) -> None:
self.file = file
handle = GetStdHandle(STDOUT) handle = GetStdHandle(STDOUT)
self._handle = handle self._handle = handle
default_text = GetConsoleScreenBufferInfo(handle).wAttributes default_text = GetConsoleScreenBufferInfo(handle).wAttributes
@ -262,10 +261,7 @@ class LegacyWindowsTerm:
self._default_fore = default_text & 7 self._default_fore = default_text & 7
self._default_back = (default_text >> 4) & 7 self._default_back = (default_text >> 4) & 7
self._default_attrs = self._default_fore + self._default_back * 16 self._default_attrs = self._default_fore | (self._default_back << 4)
self.write = file.write
self.flush = file.flush
@property @property
def cursor_position(self) -> WindowsCoordinates: def cursor_position(self) -> WindowsCoordinates:
@ -322,7 +318,7 @@ class LegacyWindowsTerm:
assert back is not None assert back is not None
SetConsoleTextAttribute( SetConsoleTextAttribute(
self._handle, attributes=ctypes.c_ushort(fore + back * 16) self._handle, attributes=ctypes.c_ushort(fore | (back << 4))
) )
self.write_text(text) self.write_text(text)
SetConsoleTextAttribute(self._handle, attributes=self._default_text) SetConsoleTextAttribute(self._handle, attributes=self._default_text)
@ -462,7 +458,7 @@ if __name__ == "__main__":
console = Console() console = Console()
term = LegacyWindowsTerm(console.file) term = LegacyWindowsTerm()
term.set_title("Win32 Console Examples") term.set_title("Win32 Console Examples")
style = Style(color="black", bgcolor="red") style = Style(color="black", bgcolor="red")

View file

@ -1921,9 +1921,7 @@ class Console:
from rich._win32_console import LegacyWindowsTerm from rich._win32_console import LegacyWindowsTerm
from rich._windows_renderer import legacy_windows_render from rich._windows_renderer import legacy_windows_render
legacy_windows_render( legacy_windows_render(self._buffer[:], LegacyWindowsTerm())
self._buffer[:], LegacyWindowsTerm(self.file)
)
output_capture_enabled = bool(self._buffer_index) output_capture_enabled = bool(self._buffer_index)
if not legacy_windows_stdout or output_capture_enabled: if not legacy_windows_stdout or output_capture_enabled: