]> git.cworth.org Git - apitrace/blobdiff - formatter.hpp
Use the glGetVertexAttrib*ARB as well.
[apitrace] / formatter.hpp
index c1568a62bb8f2ed9c4c25a13dc4db1f9b9d396f3..040d06d49084feafa191c8232ad708dea3d1e3bb 100644 (file)
  *
  **************************************************************************/
 
+/*
+ * Helpers for coloring output.
+ */
+
 #ifndef _FORMATTER_HPP_
 #define _FORMATTER_HPP_
 
@@ -38,38 +42,38 @@ namespace Formatter {
 
 class Attribute {
 public:
-   virtual ~Attribute() {}
+    virtual ~Attribute() {}
 
-   virtual std::ostream& apply(std::ostream& os) const { return os; }
+    virtual void apply(std::ostream &) const {}
 };
 
 
 enum Color {
-   RED,
-   GREEN,
-   BLUE,
+    RED,
+    GREEN,
+    BLUE,
 };
 
 
 class Formatter {
 public:
-   virtual ~Formatter() {}
+    virtual ~Formatter() {}
 
-   virtual Attribute *normal(void) const { return new Attribute; }
-   virtual Attribute *bold(void) const { return new Attribute; }
-   virtual Attribute *italic(void) const { return new Attribute; }
-   virtual Attribute *color(Color color) const { return new Attribute; }
+    virtual Attribute *normal(void) const { return new Attribute; }
+    virtual Attribute *bold(void) const { return new Attribute; }
+    virtual Attribute *italic(void) const { return new Attribute; }
+    virtual Attribute *color(Color) const { return new Attribute; }
 };
+
 
 class AnsiAttribute : public Attribute {
 protected:
-   const char *escape;
+    const char *escape;
 public:
-   AnsiAttribute(const char *_escape) : escape(_escape) {}
-   std::ostream & apply(std::ostream& os) const {
-      return os << "\33[" << escape;
-   }
+    AnsiAttribute(const char *_escape) : escape(_escape) {}
+    void apply(std::ostream& os) const {
+        os << "\33[" << escape;
+    }
 };
 
 
@@ -81,47 +85,51 @@ public:
 class AnsiFormatter : public Formatter {
 protected:
 public:
-   virtual Attribute *normal(void) const { return new AnsiAttribute("0m"); }
-   virtual Attribute *bold(void) const { return new AnsiAttribute("1m"); }
-   virtual Attribute *italic(void) const { return new AnsiAttribute("3m"); }
-   virtual Attribute *color(Color c) const { 
-      static const char *color_escapes[] = {
-         "31m", /* red */
-         "32m", /* green */
-         "34m", /* blue */
-      };
-      return new AnsiAttribute(color_escapes[c]); 
-   }
+    virtual Attribute *normal(void) const { return new AnsiAttribute("0m"); }
+    virtual Attribute *bold(void) const { return new AnsiAttribute("1m"); }
+    virtual Attribute *italic(void) const { return new AnsiAttribute("3m"); }
+    virtual Attribute *color(Color c) const { 
+        static const char *color_escapes[] = {
+            "31m", /* red */
+            "32m", /* green */
+            "34m", /* blue */
+        };
+        return new AnsiAttribute(color_escapes[c]); 
+    }
 };
 
 
 inline std::ostream& operator<<(std::ostream& os, const Attribute *attr) {
-   return attr->apply(os);
+    attr->apply(os);
+    return os;
 }
 
 
-#ifdef WIN32
+#ifdef _WIN32
 
 #include <windows.h>
 
 class WindowsAttribute : public Attribute {
 protected:
-   WORD wAttributes;
+    WORD wAttributes;
 public:
-   WindowsAttribute(WORD _wAttributes) : wAttributes(_wAttributes) {}
-   std::ostream & apply(std::ostream& os) const {
-      DWORD nStdHandleOutput;
-      if (os == std::cout) {
-         nStdHandleOutput = STD_OUTPUT_HANDLE;
-      } else if (os == std::cerr) {
-         nStdHandleOutput = STD_ERROR_HANDLE;
-      } else {
-         return os;
-      }
-
-      HANDLE hConsoleOutput = GetStdHandle(nStdHandleOutput);
-      SetConsoleTextAttribute(hConsoleOutput, wAttributes);
-   }
+    WindowsAttribute(WORD _wAttributes) : wAttributes(_wAttributes) {}
+    void apply(std::ostream& os) const {
+        DWORD nStdHandleOutput;
+        if (os == std::cout) {
+            nStdHandleOutput = STD_OUTPUT_HANDLE;
+        } else if (os == std::cerr) {
+            nStdHandleOutput = STD_ERROR_HANDLE;
+        } else {
+            return;
+        }
+        HANDLE hConsoleOutput = GetStdHandle(nStdHandleOutput);
+        if (hConsoleOutput == INVALID_HANDLE_VALUE) {
+            return;
+        }
+
+        SetConsoleTextAttribute(hConsoleOutput, wAttributes);
+    }
 };
 
 
@@ -131,27 +139,27 @@ public:
 class WindowsFormatter : public Formatter {
 protected:
 public:
-   virtual Attribute *normal(void) const { return new WindowsAttribute(FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED); }
-   virtual Attribute *bold(void) const { return new WindowsAttribute(FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_INTENSITY); }
-   virtual Attribute *italic(void) const { return new WindowsAttribute(FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED); }
-   virtual Attribute *color(Color c) const { 
-      static const WORD color_escapes[] = {
-         FOREGROUND_RED | FOREGROUND_INTENSITY,
-         FOREGROUND_GREEN | FOREGROUND_INTENSITY,
-         FOREGROUND_BLUE | FOREGROUND_INTENSITY, 
-      };
-      return new WindowsAttribute(color_escapes[c]); 
-   }
+    virtual Attribute *normal(void) const { return new WindowsAttribute(FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED); }
+    virtual Attribute *bold(void) const { return new WindowsAttribute(FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_INTENSITY); }
+    virtual Attribute *italic(void) const { return new WindowsAttribute(FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED); }
+    virtual Attribute *color(Color c) const { 
+        static const WORD color_escapes[] = {
+            FOREGROUND_RED | FOREGROUND_INTENSITY,
+            FOREGROUND_GREEN | FOREGROUND_INTENSITY,
+            FOREGROUND_BLUE | FOREGROUND_INTENSITY, 
+        };
+        return new WindowsAttribute(color_escapes[c]); 
+    }
 };
 
 #endif
 
 
 inline Formatter *defaultFormatter(void) {
-#ifdef WIN32
-   return new WindowsFormatter;
+#ifdef _WIN32
+    return new WindowsFormatter;
 #else
-   return new AnsiFormatter;
+    return new AnsiFormatter;
 #endif
 }