console.h
上传用户:center1979
上传日期:2022-07-26
资源大小:50633k
文件大小:2k
源码类别:

OpenGL

开发平台:

Visual C++

  1. // console.h
  2. //
  3. // Copyright (C) 2003, Chris Laurel <claurel@shatters.net>
  4. //
  5. // This program is free software; you can redistribute it and/or
  6. // modify it under the terms of the GNU General Public License
  7. // as published by the Free Software Foundation; either version 2
  8. // of the License, or (at your option) any later version.
  9. #ifndef _CELENGINE_CONSOLE_H_
  10. #define _CELENGINE_CONSOLE_H_
  11. #include <string>
  12. #include <iostream>
  13. #include <celtxf/texturefont.h>
  14. class Console;
  15. // Custom streambuf class to support C++ operator style output.  The
  16. // output is completely unbuffered.
  17. class ConsoleStreamBuf : public std::streambuf
  18. {
  19.  public:
  20.     ConsoleStreamBuf() : console(NULL) { setbuf(0, 0); };
  21.     void setConsole(Console*);
  22.     int overflow(int c = EOF);
  23.     enum UTF8DecodeState
  24.     {
  25.         UTF8DecodeStart     = 0,
  26.         UTF8DecodeMultibyte = 1,
  27.     };
  28.  private:
  29.     Console* console;
  30.     UTF8DecodeState decodeState;
  31.     wchar_t decodedChar;
  32.     unsigned int decodeShift;
  33. };
  34. class Console : public std::ostream
  35. {
  36.  public:
  37.     Console(int _nRows, int _nColumns);
  38.     ~Console();
  39.     bool setRowCount(int _nRows);
  40.     void begin();
  41.     void end();
  42.     void render(int rowHeight);
  43.     void setScale(int, int);
  44.     void setFont(TextureFont*);
  45.     void print(wchar_t);
  46.     void print(char*);
  47.     void newline();
  48. #if 0
  49.     void printf(const char*, ...);
  50. #endif    
  51.     int getRow() const;
  52.     int getColumn() const;
  53.     int getWindowRow() const;
  54.     void setWindowRow(int);
  55.     void setWindowHeight(int);
  56.     int getHeight() const;
  57.     int getWidth() const;
  58.  private:
  59.     wchar_t* text;
  60.     int nRows;
  61.     int nColumns;
  62.     int row;
  63.     int column;
  64.     int windowRow;
  65.     int windowHeight;
  66.     int xscale;
  67.     int yscale;
  68.     TextureFont* font;
  69.     ConsoleStreamBuf sbuf;
  70.     bool autoScroll;
  71. };
  72. #endif // _CELENGINE_CONSOLE_H_