Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(456)

Unified Diff: third_party/colorama/win32.py

Issue 54603003: Update colorama from upstream to 5a3100113a3a. (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/depot_tools.git@master
Patch Set: Created 7 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/colorama/initialise.py ('k') | third_party/colorama/winterm.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/colorama/win32.py
diff --git a/third_party/colorama/win32.py b/third_party/colorama/win32.py
index 591176131f56c4d29c179d830b9b017f099d3c06..f4024f95ee04b15163f151170d84e41a96ccdfbd 100644
--- a/third_party/colorama/win32.py
+++ b/third_party/colorama/win32.py
@@ -1,3 +1,4 @@
+# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file.
# from winbase.h
STDOUT = -11
@@ -5,48 +6,23 @@ STDERR = -12
try:
from ctypes import windll
+ from ctypes import wintypes
except ImportError:
windll = None
SetConsoleTextAttribute = lambda *_: None
else:
from ctypes import (
- byref, Structure, c_char, c_short, c_uint32, c_ushort
+ byref, Structure, c_char, c_short, c_uint32, c_ushort, POINTER
)
- handles = {
- STDOUT: windll.kernel32.GetStdHandle(STDOUT),
- STDERR: windll.kernel32.GetStdHandle(STDERR),
- }
-
- SHORT = c_short
- WORD = c_ushort
- DWORD = c_uint32
- TCHAR = c_char
-
- class COORD(Structure):
- """struct in wincon.h"""
- _fields_ = [
- ('X', SHORT),
- ('Y', SHORT),
- ]
-
- class SMALL_RECT(Structure):
- """struct in wincon.h."""
- _fields_ = [
- ("Left", SHORT),
- ("Top", SHORT),
- ("Right", SHORT),
- ("Bottom", SHORT),
- ]
-
class CONSOLE_SCREEN_BUFFER_INFO(Structure):
"""struct in wincon.h."""
_fields_ = [
- ("dwSize", COORD),
- ("dwCursorPosition", COORD),
- ("wAttributes", WORD),
- ("srWindow", SMALL_RECT),
- ("dwMaximumWindowSize", COORD),
+ ("dwSize", wintypes._COORD),
+ ("dwCursorPosition", wintypes._COORD),
+ ("wAttributes", wintypes.WORD),
+ ("srWindow", wintypes.SMALL_RECT),
+ ("dwMaximumWindowSize", wintypes._COORD),
]
def __str__(self):
return '(%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d)' % (
@@ -57,53 +33,102 @@ else:
, self.dwMaximumWindowSize.Y, self.dwMaximumWindowSize.X
)
+ _GetStdHandle = windll.kernel32.GetStdHandle
+ _GetStdHandle.argtypes = [
+ wintypes.DWORD,
+ ]
+ _GetStdHandle.restype = wintypes.HANDLE
+
+ _GetConsoleScreenBufferInfo = windll.kernel32.GetConsoleScreenBufferInfo
+ _GetConsoleScreenBufferInfo.argtypes = [
+ wintypes.HANDLE,
+ POINTER(CONSOLE_SCREEN_BUFFER_INFO),
+ ]
+ _GetConsoleScreenBufferInfo.restype = wintypes.BOOL
+
+ _SetConsoleTextAttribute = windll.kernel32.SetConsoleTextAttribute
+ _SetConsoleTextAttribute.argtypes = [
+ wintypes.HANDLE,
+ wintypes.WORD,
+ ]
+ _SetConsoleTextAttribute.restype = wintypes.BOOL
+
+ _SetConsoleCursorPosition = windll.kernel32.SetConsoleCursorPosition
+ _SetConsoleCursorPosition.argtypes = [
+ wintypes.HANDLE,
+ wintypes._COORD,
+ ]
+ _SetConsoleCursorPosition.restype = wintypes.BOOL
+
+ _FillConsoleOutputCharacterA = windll.kernel32.FillConsoleOutputCharacterA
+ _FillConsoleOutputCharacterA.argtypes = [
+ wintypes.HANDLE,
+ c_char,
+ wintypes.DWORD,
+ wintypes._COORD,
+ POINTER(wintypes.DWORD),
+ ]
+ _FillConsoleOutputCharacterA.restype = wintypes.BOOL
+
+ _FillConsoleOutputAttribute = windll.kernel32.FillConsoleOutputAttribute
+ _FillConsoleOutputAttribute.argtypes = [
+ wintypes.HANDLE,
+ wintypes.WORD,
+ wintypes.DWORD,
+ wintypes._COORD,
+ POINTER(wintypes.DWORD),
+ ]
+ _FillConsoleOutputAttribute.restype = wintypes.BOOL
+
+ handles = {
+ STDOUT: _GetStdHandle(STDOUT),
+ STDERR: _GetStdHandle(STDERR),
+ }
+
def GetConsoleScreenBufferInfo(stream_id=STDOUT):
handle = handles[stream_id]
csbi = CONSOLE_SCREEN_BUFFER_INFO()
- success = windll.kernel32.GetConsoleScreenBufferInfo(
+ success = _GetConsoleScreenBufferInfo(
handle, byref(csbi))
return csbi
-
def SetConsoleTextAttribute(stream_id, attrs):
handle = handles[stream_id]
- return windll.kernel32.SetConsoleTextAttribute(handle, attrs)
-
+ return _SetConsoleTextAttribute(handle, attrs)
def SetConsoleCursorPosition(stream_id, position):
- position = COORD(*position)
+ position = wintypes._COORD(*position)
# If the position is out of range, do nothing.
if position.Y <= 0 or position.X <= 0:
return
# Adjust for Windows' SetConsoleCursorPosition:
# 1. being 0-based, while ANSI is 1-based.
# 2. expecting (x,y), while ANSI uses (y,x).
- adjusted_position = COORD(position.Y - 1, position.X - 1)
+ adjusted_position = wintypes._COORD(position.Y - 1, position.X - 1)
# Adjust for viewport's scroll position
sr = GetConsoleScreenBufferInfo(STDOUT).srWindow
adjusted_position.Y += sr.Top
adjusted_position.X += sr.Left
# Resume normal processing
handle = handles[stream_id]
- return windll.kernel32.SetConsoleCursorPosition(handle, adjusted_position)
+ return _SetConsoleCursorPosition(handle, adjusted_position)
def FillConsoleOutputCharacter(stream_id, char, length, start):
handle = handles[stream_id]
- char = TCHAR(char)
- length = DWORD(length)
- num_written = DWORD(0)
+ char = c_char(char)
+ length = wintypes.DWORD(length)
+ num_written = wintypes.DWORD(0)
# Note that this is hard-coded for ANSI (vs wide) bytes.
- success = windll.kernel32.FillConsoleOutputCharacterA(
+ success = _FillConsoleOutputCharacterA(
handle, char, length, start, byref(num_written))
return num_written.value
def FillConsoleOutputAttribute(stream_id, attr, length, start):
''' FillConsoleOutputAttribute( hConsole, csbi.wAttributes, dwConSize, coordScreen, &cCharsWritten )'''
handle = handles[stream_id]
- attribute = WORD(attr)
- length = DWORD(length)
- num_written = DWORD(0)
+ attribute = wintypes.WORD(attr)
+ length = wintypes.DWORD(length)
+ num_written = wintypes.DWORD(0)
# Note that this is hard-coded for ANSI (vs wide) bytes.
- return windll.kernel32.FillConsoleOutputAttribute(
+ return _FillConsoleOutputAttribute(
handle, attribute, length, start, byref(num_written))
-
« no previous file with comments | « third_party/colorama/initialise.py ('k') | third_party/colorama/winterm.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698