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

OpenGL

开发平台:

Visual C++

  1. // overlay.h
  2. //
  3. // Copyright (C) 2001, 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 _OVERLAY_H_
  10. #define _OVERLAY_H_
  11. #include <string>
  12. #include <iostream>
  13. #include <celtxf/texturefont.h>
  14. class Overlay;
  15. // Custom streambuf class to support C++ operator style output.  The
  16. // output is completely unbuffered so that it can coexist with printf
  17. // style output which the Overlay class also supports.
  18. class OverlayStreamBuf : public std::streambuf
  19. {
  20.  public:
  21.     OverlayStreamBuf();
  22.     void setOverlay(Overlay*);
  23.     int overflow(int c = EOF);
  24.     enum UTF8DecodeState
  25.     {
  26.         UTF8DecodeStart     = 0,
  27.         UTF8DecodeMultibyte = 1,
  28.     };
  29.  private:
  30.     Overlay* overlay;
  31.     UTF8DecodeState decodeState;
  32.     wchar_t decodedChar;
  33.     unsigned int decodeShift;
  34. };
  35. class Overlay : public std::ostream
  36. {
  37.  public:
  38.     Overlay();
  39.     ~Overlay();
  40.     void begin();
  41.     void end();
  42.     void setWindowSize(int, int);
  43.     void setFont(TextureFont*);
  44.     void rect(float x, float y, float w, float h, bool fill = true);
  45.     void beginText();
  46.     void endText();
  47.     void print(wchar_t);
  48.     void print(char);
  49.     void print(const char*);
  50. #ifndef _WIN32
  51.     // Disable GCC format attribute specification requests. Only
  52.     // the format string will be checked:
  53.     void oprintf(const char*, ...) __attribute__ ((__format__ (__printf__, 2, 0)));
  54. #else
  55.     void oprintf(const char*, ...);
  56. #endif
  57.  private:
  58.     int windowWidth;
  59.     int windowHeight;
  60.     TextureFont* font;
  61.     bool useTexture;
  62.     bool fontChanged;
  63.     int textBlock;
  64.     OverlayStreamBuf sbuf;
  65. };
  66. #endif // _OVERLAY_H_