summaryrefslogtreecommitdiff
path: root/src/WinConsoleFile.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/WinConsoleFile.h')
-rw-r--r--src/WinConsoleFile.h52
1 files changed, 37 insertions, 15 deletions
diff --git a/src/WinConsoleFile.h b/src/WinConsoleFile.h
index ec6f8e26..67312f90 100644
--- a/src/WinConsoleFile.h
+++ b/src/WinConsoleFile.h
@@ -32,28 +32,50 @@
* files in the program, then also delete it here.
*/
/* copyright --> */
+
#ifndef D_WIN_CONSOLE_FILE_H
#define D_WIN_CONSOLE_FILE_H
+#include <string>
+
#include "OutputFile.h"
namespace aria2 {
-// This is a wrapper class for WriteConsoleW
-class WinConsoleFile:public OutputFile {
-public:
- WinConsoleFile(DWORD stdHandle);
- virtual ~WinConsoleFile();
- virtual size_t write(const char* str) CXX11_OVERRIDE;
- virtual int vprintf(const char* format, va_list va) CXX11_OVERRIDE;
- virtual int flush() CXX11_OVERRIDE;
- virtual bool supportsColor() CXX11_OVERRIDE;
-private:
- DWORD stdHandle_;
- // Don't allow copying
- WinConsoleFile(const WinConsoleFile&);
- WinConsoleFile& operator=(const WinConsoleFile&);
-};
+ // This is a wrapper class for WriteConsoleW
+ class WinConsoleFile: public OutputFile
+ {
+ public:
+ WinConsoleFile(DWORD stdHandle);
+ virtual ~WinConsoleFile() {}
+
+ virtual size_t write(const char* str) CXX11_OVERRIDE;
+ virtual int vprintf(const char* format, va_list va) CXX11_OVERRIDE;
+ virtual bool supportsColor() CXX11_OVERRIDE;
+ virtual int flush() CXX11_OVERRIDE
+ {
+ return 0;
+ }
+
+ private:
+ DWORD stdHandle_;
+ bool bold_;
+ bool underline_;
+ bool reverse_;
+ WORD fg_, deffg_;
+ WORD bg_, defbg_;
+
+ size_t writeColorful(const std::wstring& str);
+ inline HANDLE handle() const
+ {
+ return ::GetStdHandle(stdHandle_);
+ }
+
+ private:
+ // Don't allow copying
+ WinConsoleFile(const WinConsoleFile&) = delete;
+ WinConsoleFile& operator=(const WinConsoleFile&) = delete;
+ };
} // namespace aria2