OnAfterDraw


SUBMITTED BY: Guest

DATE: June 27, 2014, 12:55 p.m.

FORMAT: C++

SIZE: 4.0 kB

HITS: 1114

  1. void CContourSliderManager::OnAfterDraw(CDC* pDC)
  2. {
  3. CWin *cWin;
  4. CBody * cBody;
  5. cBody = FindFirstBody();
  6. if ( cBody == NULL )
  7. return;
  8. cWin = cBody->GetWndInfo();
  9. tag_BODYSIZE TrBody;
  10. CBodyMesh *pBody = (CBodyMesh*)FindBody(cBody->GetID());
  11. TrBody = pBody->GetTrBodySize();
  12. glLoadIdentity();
  13. double asp = 1;/*cWin->GetAspectRadio();*/
  14. m_tileSizeX = (TrBody.dXMax-TrBody.dXMin)/asp/m_sizeX;
  15. m_tileSizeY = (TrBody.dYMax - TrBody.dYMin)/m_sizeY;
  16. glMatrixMode(GL_MODELVIEW);
  17. glPushMatrix();
  18. glTranslated(cWin->GetXo(), cWin->GetYo(), 1.0);
  19. glScaled(cWin->GetSx(), cWin->GetSy(), cWin->GetSx());
  20. glEnable(GL_BLEND);
  21. glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
  22. glColor4f(0,0,255,0.5);
  23. glBegin(GL_QUADS);
  24. glVertex2f(m_xPos*m_tileSizeX+TrBody.dXMin/asp, (m_yPos+m_height)*m_tileSizeY +TrBody.dYMin);
  25. glVertex2f((m_xPos+m_width)*m_tileSizeX+TrBody.dXMin/asp, (m_yPos+m_height)*m_tileSizeY +TrBody.dYMin);
  26. glVertex2f((m_xPos+m_width)*m_tileSizeX+TrBody.dXMin/asp, m_yPos*m_tileSizeY +TrBody.dYMin);
  27. glVertex2f(m_xPos*m_tileSizeX+TrBody.dXMin/asp, m_yPos*m_tileSizeY +TrBody.dYMin);
  28. glEnd();
  29. glColor4f(0,0,0,1.0);
  30. glBegin(GL_LINES);
  31. glVertex2f(m_xPos*m_tileSizeX+TrBody.dXMin/asp, (m_yPos+m_height)*m_tileSizeY +TrBody.dYMin);
  32. glVertex2f((m_xPos+m_width)*m_tileSizeX+TrBody.dXMin/asp, (m_yPos+m_height)*m_tileSizeY +TrBody.dYMin);
  33. glVertex2f((m_xPos+m_width)*m_tileSizeX+TrBody.dXMin/asp, (m_yPos+m_height)*m_tileSizeY +TrBody.dYMin);
  34. glVertex2f((m_xPos+m_width)*m_tileSizeX+TrBody.dXMin/asp, m_yPos*m_tileSizeY +TrBody.dYMin);
  35. glVertex2f((m_xPos+m_width)*m_tileSizeX+TrBody.dXMin/asp, m_yPos*m_tileSizeY +TrBody.dYMin);
  36. glVertex2f(m_xPos*m_tileSizeX+TrBody.dXMin/asp, m_yPos*m_tileSizeY +TrBody.dYMin);
  37. glVertex2f(m_xPos*m_tileSizeX+TrBody.dXMin/asp, m_yPos*m_tileSizeY +TrBody.dYMin);
  38. glVertex2f(m_xPos*m_tileSizeX+TrBody.dXMin/asp, (m_yPos+m_height)*m_tileSizeY +TrBody.dYMin);
  39. glVertex2f((m_xPos+m_width/2)*m_tileSizeX + TrBody.dXMin/asp, (m_yPos + m_height + m_sizeY/10)*m_tileSizeY + TrBody.dYMin);
  40. glVertex2f((m_xPos+m_width/2)*m_tileSizeX + TrBody.dXMin/asp, (m_yPos - m_sizeY/10)*m_tileSizeY + TrBody.dYMin);
  41. glVertex2f((m_xPos-m_sizeX/10)*m_tileSizeX + TrBody.dXMin/asp, (m_yPos + m_height/2)*m_tileSizeY + TrBody.dYMin);
  42. glVertex2f((m_xPos+m_width+m_sizeX/10)*m_tileSizeX + TrBody.dXMin/asp, (m_yPos + m_height/2)*m_tileSizeY + TrBody.dYMin);
  43. glEnd();
  44. // head mark
  45. glColor4f(1.0, 0.0, 0.0, 1.0);
  46. glBegin(GL_TRIANGLES);
  47. glVertex2f(TrBody.dXMin, TrBody.dYMax);
  48. glVertex2f(TrBody.dXMin + 0.12, TrBody.dYMax + 0.12);
  49. glVertex2f(TrBody.dXMin - 0.12, TrBody.dYMax + 0.12);
  50. glEnd();
  51. LOGFONT lfTextFont;
  52. memset(&lfTextFont,0,sizeof(LOGFONT));
  53. lfTextFont.lfHeight = -MulDiv(8, GetDeviceCaps(pDC->GetSafeHdc(), LOGPIXELSY), 72);
  54. lfTextFont.lfWeight = FW_BOLD;
  55. #if defined(AFX_TARG_CSY) || defined(AFX_TARG_PLK)
  56. lfTextFont.lfCharSet = EASTEUROPE_CHARSET;
  57. #endif
  58. #if defined(AFX_TARG_ENU)
  59. lfTextFont.lfCharSet = DEFAULT_CHARSET;
  60. #endif
  61. _tcscpy_s(lfTextFont.lfFaceName,_T("Arial"));
  62. CGLFont* pFont = CreateNewFont(lfTextFont);
  63. CString strHead = _T("Head");
  64. CSize size = pFont->GetTextExtent(strHead);
  65. double dY = 0.0;
  66. dY += TrBody.dYMax;
  67. dY += 0.12; // triangle mark
  68. dY += 0.08; // margin
  69. CPoint pt = GLToPt(*cWin, CDblPoint(TrBody.dXMin, dY));
  70. pt.x += - 2 * size.cx ; // half of text width
  71. pt.y += -size.cy; // text height
  72. ContourSpace::OpenGL::DrawString(*cWin, *pFont, strHead, pt, RGB(0, 0, 0));
  73. /*CDblPoint point = PtToGL(*cWin, CPoint(pt.x, pt.y), FALSE);
  74. pFont->Draw(dX, point.y, strHead);*/
  75. glPopMatrix();
  76. glFinish();
  77. }

comments powered by Disqus