void CContourSliderManager::OnAfterDraw(CDC* pDC)
{
CWin *cWin;
CBody * cBody;
cBody = FindFirstBody();
if ( cBody == NULL )
return;
cWin = cBody->GetWndInfo();
tag_BODYSIZE TrBody;
CBodyMesh *pBody = (CBodyMesh*)FindBody(cBody->GetID());
TrBody = pBody->GetTrBodySize();
glLoadIdentity();
double asp = 1;/*cWin->GetAspectRadio();*/
m_tileSizeX = (TrBody.dXMax-TrBody.dXMin)/asp/m_sizeX;
m_tileSizeY = (TrBody.dYMax - TrBody.dYMin)/m_sizeY;
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glTranslated(cWin->GetXo(), cWin->GetYo(), 1.0);
glScaled(cWin->GetSx(), cWin->GetSy(), cWin->GetSx());
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glColor4f(0,0,255,0.5);
glBegin(GL_QUADS);
glVertex2f(m_xPos*m_tileSizeX+TrBody.dXMin/asp, (m_yPos+m_height)*m_tileSizeY +TrBody.dYMin);
glVertex2f((m_xPos+m_width)*m_tileSizeX+TrBody.dXMin/asp, (m_yPos+m_height)*m_tileSizeY +TrBody.dYMin);
glVertex2f((m_xPos+m_width)*m_tileSizeX+TrBody.dXMin/asp, m_yPos*m_tileSizeY +TrBody.dYMin);
glVertex2f(m_xPos*m_tileSizeX+TrBody.dXMin/asp, m_yPos*m_tileSizeY +TrBody.dYMin);
glEnd();
glColor4f(0,0,0,1.0);
glBegin(GL_LINES);
glVertex2f(m_xPos*m_tileSizeX+TrBody.dXMin/asp, (m_yPos+m_height)*m_tileSizeY +TrBody.dYMin);
glVertex2f((m_xPos+m_width)*m_tileSizeX+TrBody.dXMin/asp, (m_yPos+m_height)*m_tileSizeY +TrBody.dYMin);
glVertex2f((m_xPos+m_width)*m_tileSizeX+TrBody.dXMin/asp, (m_yPos+m_height)*m_tileSizeY +TrBody.dYMin);
glVertex2f((m_xPos+m_width)*m_tileSizeX+TrBody.dXMin/asp, m_yPos*m_tileSizeY +TrBody.dYMin);
glVertex2f((m_xPos+m_width)*m_tileSizeX+TrBody.dXMin/asp, m_yPos*m_tileSizeY +TrBody.dYMin);
glVertex2f(m_xPos*m_tileSizeX+TrBody.dXMin/asp, m_yPos*m_tileSizeY +TrBody.dYMin);
glVertex2f(m_xPos*m_tileSizeX+TrBody.dXMin/asp, m_yPos*m_tileSizeY +TrBody.dYMin);
glVertex2f(m_xPos*m_tileSizeX+TrBody.dXMin/asp, (m_yPos+m_height)*m_tileSizeY +TrBody.dYMin);
glVertex2f((m_xPos+m_width/2)*m_tileSizeX + TrBody.dXMin/asp, (m_yPos + m_height + m_sizeY/10)*m_tileSizeY + TrBody.dYMin);
glVertex2f((m_xPos+m_width/2)*m_tileSizeX + TrBody.dXMin/asp, (m_yPos - m_sizeY/10)*m_tileSizeY + TrBody.dYMin);
glVertex2f((m_xPos-m_sizeX/10)*m_tileSizeX + TrBody.dXMin/asp, (m_yPos + m_height/2)*m_tileSizeY + TrBody.dYMin);
glVertex2f((m_xPos+m_width+m_sizeX/10)*m_tileSizeX + TrBody.dXMin/asp, (m_yPos + m_height/2)*m_tileSizeY + TrBody.dYMin);
glEnd();
// head mark
glColor4f(1.0, 0.0, 0.0, 1.0);
glBegin(GL_TRIANGLES);
glVertex2f(TrBody.dXMin, TrBody.dYMax);
glVertex2f(TrBody.dXMin + 0.12, TrBody.dYMax + 0.12);
glVertex2f(TrBody.dXMin - 0.12, TrBody.dYMax + 0.12);
glEnd();
LOGFONT lfTextFont;
memset(&lfTextFont,0,sizeof(LOGFONT));
lfTextFont.lfHeight = -MulDiv(8, GetDeviceCaps(pDC->GetSafeHdc(), LOGPIXELSY), 72);
lfTextFont.lfWeight = FW_BOLD;
#if defined(AFX_TARG_CSY) || defined(AFX_TARG_PLK)
lfTextFont.lfCharSet = EASTEUROPE_CHARSET;
#endif
#if defined(AFX_TARG_ENU)
lfTextFont.lfCharSet = DEFAULT_CHARSET;
#endif
_tcscpy_s(lfTextFont.lfFaceName,_T("Arial"));
CGLFont* pFont = CreateNewFont(lfTextFont);
CString strHead = _T("Head");
CSize size = pFont->GetTextExtent(strHead);
double dY = 0.0;
dY += TrBody.dYMax;
dY += 0.12; // triangle mark
dY += 0.08; // margin
CPoint pt = GLToPt(*cWin, CDblPoint(TrBody.dXMin, dY));
pt.x += - 2 * size.cx ; // half of text width
pt.y += -size.cy; // text height
ContourSpace::OpenGL::DrawString(*cWin, *pFont, strHead, pt, RGB(0, 0, 0));
/*CDblPoint point = PtToGL(*cWin, CPoint(pt.x, pt.y), FALSE);
pFont->Draw(dX, point.y, strHead);*/
glPopMatrix();
glFinish();
}