FONT.CPP
Upload User: nthssl
Upload Date: 2022-04-05
Package Size: 25357k
Code Size: 2k
Category:

OpenCV

Development Platform:

Visual C++

  1. #define WIN32_MEAN_AND_LEAN
  2. #define WIN32_EXTRA_LEAN
  3. #include "font.h"
  4. #include <windows.h>
  5. #include <stdio.h>
  6. #include <stdarg.h>
  7. #include <gl/gl.h>
  8. CFont::CFont()
  9. {
  10. screenX = 0;
  11. screenY = 0;
  12. xpos = 0.0;
  13. ypos = 0.0;
  14. zpos = 0.0;
  15. }
  16. CFont::CFont(char *name, int size)
  17. {
  18. screenX = 0;
  19. screenY = 0;
  20. xpos = 0.0;
  21. ypos = 0.0;
  22. zpos = 0.0;
  23. Build(name, size);
  24. }
  25. CFont::~CFont()
  26. {
  27. glDeleteLists(callList, 96);
  28. }
  29. void CFont::Build(char *name, int size)
  30. {
  31. HFONT hFont; // 字体的ID
  32. HDC hDC; // 设备描述表
  33. hDC = wglGetCurrentDC();
  34. callList = glGenLists(96);
  35. if (stricmp(name, "symbol") == 0)
  36. {
  37. hFont = CreateFont(-size, 0,0,0,FW_BOLD, FALSE, FALSE, FALSE, SYMBOL_CHARSET,
  38. OUT_TT_PRECIS, CLIP_DEFAULT_PRECIS, ANTIALIASED_QUALITY,
  39. FF_DONTCARE | DEFAULT_PITCH, name);
  40. }
  41. else
  42. {
  43. hFont = CreateFont(-size, 0,0,0,FW_BOLD, FALSE, FALSE, FALSE, ANSI_CHARSET,
  44. OUT_TT_PRECIS, CLIP_DEFAULT_PRECIS, ANTIALIASED_QUALITY, 
  45. FF_DONTCARE | DEFAULT_PITCH, name);
  46. }
  47. SelectObject(hDC, hFont);
  48. wglUseFontBitmaps(hDC, 32, 96, callList);
  49. }
  50. void CFont::Print(const char *str, ...)
  51. {
  52. char text[256];
  53. va_list args;
  54. if (str == NULL)
  55. return;
  56. va_start(args, str);
  57. vsprintf(text, str, args);
  58. va_end(args);
  59. glPushMatrix();
  60. glColor4f(r, g, b, a);
  61. glLoadIdentity();
  62. glTranslatef(0.0f, 0.0f, -1.0f);
  63. if (xpos == 0.0 && ypos == 0.0 && zpos == 0.0)
  64. glRasterPos2i(screenX, screenY);
  65. else
  66. glRasterPos3f(xpos, ypos, zpos);
  67. glPushAttrib(GL_LIST_BIT);
  68. glListBase(callList - 32);
  69. glCallLists(strlen(str), GL_UNSIGNED_BYTE, str);
  70. glPopAttrib();
  71. glPopMatrix();
  72. }
  73. void CFont::ClearFont()
  74. {
  75. glDeleteLists(callList, 96);
  76. }