void Note::NoteHead() { glTranslatef(centerPosition.x, centerPosition.y, centerPosition.z); glTranslatef(0.0, rel_space * (radius/8.0), 0.0); glColor4f(0.0f, 0.0f, 0.0f, 1.0); //glBegin(GL_TRIANGLE_FAN); //glVertex3f(0.0, 0.0, 0.0); DrawCircle(STPoint3(0.0,0.0,0.0), radius*0.1, 40, 1); //glEnd(); glLineWidth(.3*width_max); //glBegin(GL_LINE_STRIP); DrawCircle(STPoint3(0.0,0.0,0.), radius*0.1, 40, 0); //glEnd(); if (accidental == 1) { DrawSharp(); } else if (accidental == -1) { DrawFlat(); } }
// 拍子記号・調性記号の描画 void CMusicalScoreTrackScaleView::DrawTimeAndKeySignature (CDC* pDC, long lTrackIndex, long lTime) { CMusicalScoreFrame* pMusicalScoreFrame = (CMusicalScoreFrame*)GetParent (); CSekaijuDoc* pSekaijuDoc = GetDocument (); MIDIData* pMIDIData = pSekaijuDoc->m_pMIDIData; MusicalScoreTrackInfo* pTrackInfo = NULL; VERIFY (pTrackInfo = pMusicalScoreFrame->GetTrackInfo (lTrackIndex)); long lTrackFlags = pTrackInfo->m_lFlags; long x = 40; long y = 0; long rx = 4; long ry = 4; long lGCrefSharpLineNo[7] = {45, 42, 46, 43, 40, 44, 41}; long lFCrefSharpLineNo[7] = {31, 28, 32, 29, 33, 30, 34}; long lGCrefFlatLineNo[7] = {41, 44, 40, 43, 39, 42, 38}; long lFCrefFlatLineNo[7] = {27, 30, 26, 29, 25, 28, 24}; long lsf, lmi; MIDIData_FindKeySignature (pMIDIData, lTime, &lsf, &lmi); long lnn, ldd, lcc, lbb; MIDIData_FindTimeSignature (pMIDIData, lTime, &lnn, &ldd, &lcc, &lbb); CString strText1; CString strText2; strText1.Format (_T("%d"), lnn); strText2.Format (_T("%d"), (1 << ldd)); CRect rcText1 (x + rx * 10 + rx * 2 * abs(lsf), 0, x + rx * 10 + rx * 2 * abs(lsf) + 24, 0); CRect rcText2 (x + rx * 10 + rx * 2 * abs(lsf), 0, x + rx * 10 + rx * 2 * abs(lsf) + 24, 0); long j; switch (lTrackFlags & 0x0000000F) { case 1: // ト音記号 y = pMusicalScoreFrame->TrackIndexLineNotoY (lTrackIndex, 39); DrawGClef (pDC, x + rx * 4, y, rx, ry); if (lsf > 0) { for (j = 1; j <= lsf; j++) { y = pMusicalScoreFrame->TrackIndexLineNotoY (lTrackIndex, lGCrefSharpLineNo[j - 1]); DrawSharp (pDC, x + rx * 8 + rx * 2 * j, y, rx, ry); } } else if (lsf < 0) { for (j = 1; j <= -lsf; j++) { y = pMusicalScoreFrame->TrackIndexLineNotoY (lTrackIndex, lGCrefFlatLineNo[j - 1]); DrawFlat (pDC, x + rx * 8 + rx * 2 * j, y, rx, ry); } } y = pMusicalScoreFrame->TrackIndexLineNotoY (lTrackIndex, 41); rcText1.top = y - ry * 4; rcText1.bottom = y; pDC->DrawText (strText1, &rcText1, DT_SINGLELINE | DT_CENTER | DT_VCENTER); rcText2.top = y; rcText2.bottom = y + ry * 4; pDC->DrawText (strText2, &rcText2, DT_SINGLELINE | DT_CENTER | DT_VCENTER); break; case 2: // ヘ音記号 y = pMusicalScoreFrame->TrackIndexLineNotoY (lTrackIndex, 31); DrawFClef (pDC, x + rx * 4, y, rx, ry); if (lsf > 0) { for (j = 1; j <= lsf; j++) { y = pMusicalScoreFrame->TrackIndexLineNotoY (lTrackIndex, lFCrefSharpLineNo[j - 1]); DrawSharp (pDC, x + rx * 8 + rx * 2 * j, y, rx, ry); } } else if (lsf < 0) { for (j = 1; j <= -lsf; j++) { y = pMusicalScoreFrame->TrackIndexLineNotoY (lTrackIndex, lFCrefFlatLineNo[j - 1]); DrawFlat (pDC, x + rx * 8 + rx * 2 * j, y, rx, ry); } } y = pMusicalScoreFrame->TrackIndexLineNotoY (lTrackIndex, 29); rcText1.top = y - ry * 4; rcText1.bottom = y; pDC->DrawText (strText1, &rcText1, DT_SINGLELINE | DT_CENTER | DT_VCENTER); rcText2.top = y; rcText2.bottom = y + ry * 4; pDC->DrawText (strText2, &rcText2, DT_SINGLELINE | DT_CENTER | DT_VCENTER); break; case 3: // 大譜表 y = pMusicalScoreFrame->TrackIndexLineNotoY (lTrackIndex, 39); DrawGClef (pDC, x + rx * 4, y, rx, ry); if (lsf > 0) { for (j = 1; j <= lsf; j++) { y = pMusicalScoreFrame->TrackIndexLineNotoY (lTrackIndex, lGCrefSharpLineNo[j - 1]); DrawSharp (pDC, x + rx * 8 + rx * 2 * j, y, rx, ry); } } else if (lsf < 0) { for (j = 1; j <= -lsf; j++) { y = pMusicalScoreFrame->TrackIndexLineNotoY (lTrackIndex, lGCrefFlatLineNo[j - 1]); DrawFlat (pDC, x + rx * 8 + rx * 2 * j, y, rx, ry); } } y = pMusicalScoreFrame->TrackIndexLineNotoY (lTrackIndex, 41); rcText1.top = y - ry * 4; rcText1.bottom = y; pDC->DrawText (strText1, &rcText1, DT_SINGLELINE | DT_CENTER | DT_VCENTER); rcText2.top = y; rcText2.bottom = y + ry * 4; pDC->DrawText (strText2, &rcText2, DT_SINGLELINE | DT_CENTER | DT_VCENTER); y = pMusicalScoreFrame->TrackIndexLineNotoY (lTrackIndex, 31); DrawFClef (pDC, x + rx * 4, y, rx, ry); if (lsf > 0) { for (j = 1; j <= lsf; j++) { y = pMusicalScoreFrame->TrackIndexLineNotoY (lTrackIndex, lFCrefSharpLineNo[j - 1]); DrawSharp (pDC, x + rx * 8 + rx * 2 * j, y, rx, ry); } } else if (lsf < 0) { for (j = 1; j <= -lsf; j++) { y = pMusicalScoreFrame->TrackIndexLineNotoY (lTrackIndex, lFCrefFlatLineNo[j - 1]); DrawFlat (pDC, x + rx * 8 + rx * 2 * j, y, rx, ry); } } y = pMusicalScoreFrame->TrackIndexLineNotoY (lTrackIndex, 29); rcText1.top = y - ry * 4; rcText1.bottom = y; pDC->DrawText (strText1, &rcText1, DT_SINGLELINE | DT_CENTER | DT_VCENTER); rcText2.top = y; rcText2.bottom = y + ry * 4; pDC->DrawText (strText2, &rcText2, DT_SINGLELINE | DT_CENTER | DT_VCENTER); break; } }