本文整理汇总了C++中Note::GetColored方法的典型用法代码示例。如果您正苦于以下问题:C++ Note::GetColored方法的具体用法?C++ Note::GetColored怎么用?C++ Note::GetColored使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Note
的用法示例。
在下文中一共展示了Note::GetColored方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: DrawLigatureNote
void View::DrawLigatureNote(DeviceContext *dc, LayerElement *element, Layer *layer, Staff *staff)
{
assert(dc);
assert(element);
assert(layer);
assert(staff);
LogDebug("DrawLigatureNote");
Note *note = dynamic_cast<Note *>(element);
assert(note);
int xn, x1, x2, y, y1, y2, y3, y4;
// int yy2, y5; // unused
int verticalCenter, up, epaisseur;
epaisseur = std::max(2, m_doc->GetDrawingBeamWidth(staff->m_drawingStaffSize, false) / 2);
xn = element->GetDrawingX();
y = 99;
// LogDebug("DrawLigatureNote: _ligObliqua=%d drawingX=%d y=%d", note->m_ligObliqua, xn, y);
LogDebug("DrawLigatureNote: drawingX=%d y=%d", xn, y);
/*
if ((note->m_lig==LIG_MEDIAL) || (note->m_lig==LIG_TERMINAL))
{
CalculateLigaturePosX(element, layer, staff);
}
else
*/ {
xn = element->GetDrawingX();
}
// Compute the dimensions of the rectangle
x1 = xn - m_doc->GetDrawingBrevisWidth(staff->m_drawingStaffSize);
x2 = xn + m_doc->GetDrawingBrevisWidth(staff->m_drawingStaffSize);
y1 = y + m_doc->GetDrawingUnit(staff->m_drawingStaffSize);
y2 = y - m_doc->GetDrawingUnit(staff->m_drawingStaffSize);
y3 = (int)(y1 + m_doc->GetDrawingUnit(staff->m_drawingStaffSize) / 2); // part of the frame that overflows
y4 = (int)(y2 - m_doc->GetDrawingUnit(staff->m_drawingStaffSize) / 2);
// if (!note->m_ligObliqua && (!View::s_drawingLigObliqua)) // rectangular notes, incl. ligature
{
if (note->GetColored() != BOOLEAN_true) { // double the bases of rectangles
DrawObliquePolygon(dc, x1, y1, x2, y1, -epaisseur);
DrawObliquePolygon(dc, x1, y2, x2, y2, epaisseur);
}
else
DrawFilledRectangle(dc, x1, y1, x2, y2); //
// ENZ correction of x2
DrawVerticalLine(dc, y3, y4, x1, m_doc->GetDrawingStemWidth(staff->m_drawingStaffSize)); // lateral brace
DrawVerticalLine(dc, y3, y4, x2, m_doc->GetDrawingStemWidth(staff->m_drawingStaffSize));
}
/*
else // handle obliques
{
if (!View::s_drawingLigObliqua) // 1st pass: Initial flagStemHeight
{
DrawVerticalLine (dc,y3,y4,x1, m_doc->GetDrawingStemWidth(staff->m_drawingStaffSize));
View::s_drawingLigObliqua = true;
//oblique = false;
// if (val == DUR_1) // left tail up if DUR_1
// queue_lig = true;
}
else // 2nd pass: oblique lines and final flagStemHeighte
{
x1 -= m_doc->m_drawingBrevisWidth[staff->m_drawingStaffSize] * 2; // auto advance
y1 = *View::s_drawingLigY - m_doc->GetDrawingUnit(staff->m_drawingStaffSize); // ligat_y contains original y
yy2 = y2;
y5 = y1+ m_doc->GetDrawingDoubleUnit(staff->m_drawingStaffSize); y2 +=
m_doc->GetDrawingDoubleUnit(staff->m_drawingStaffSize); // go up a
INTERL
if (note->GetColored()==BOOLEAN_true)
DrawObliquePolygon (dc, x1, y1, x2, yy2, m_doc->GetDrawingDoubleUnit(staff->m_drawingStaffSize));
else
{ DrawObliquePolygon (dc, x1, y1, x2, yy2, 5);
DrawObliquePolygon (dc, x1, y5, x2, y2, -5);
}
DrawVerticalLine (dc,y3,y4,x2,m_doc->GetDrawingStemWidth(staff->m_drawingStaffSize)); // enclosure
flagStemHeighte
View::s_drawingLigObliqua = false;
// queue_lig = false; // ??defuses alg.queue DUR_BR??
}
}
if (note->m_lig) // remember positions from one note to another; connect notes by bars
{
*(View::s_drawingLigX+1) = x2; *(View::s_drawingLigY+1) = y; // connect ligature beamed notes by bar
flagStemHeightes
//if (in(x1,(*View::s_drawingLigX)-2,(*View::s_drawingLigX)+2) || (this->fligat && this->lat && !Note1::marq_obl))
// the latest conditions to allow previous ligature flagStemHeighte
// DrawVerticalLine (dc, *ligat_y, y1, (this->fligat && this->lat) ? x2: x1, m_doc->m_parameters.m_stemWidth); //
ax2 - drawing flagStemHeight
lines missing
*View::s_drawingLigX = *(View::s_drawingLigX + 1);
*View::s_drawingLigY = *(View::s_drawingLigY + 1);
}
//.........这里部分代码省略.........
示例2: DrawMaximaToBrevis
void View::DrawMaximaToBrevis(DeviceContext *dc, int y, LayerElement *element, Layer *layer, Staff *staff)
{
assert(dc);
assert(element);
assert(layer);
assert(staff);
Note *note = dynamic_cast<Note *>(element);
assert(note);
int xn, xLeft, xRight, yTop, yBottom, y3, y4;
// int yy2, y5; // unused
int verticalCenter, up, height;
bool mensural_black = (staff->m_drawingNotationType == NOTATIONTYPE_mensural_black);
bool fillNotehead = (mensural_black || note->GetColored()) && !(mensural_black && note->GetColored());
height = m_doc->GetDrawingBeamWidth(staff->m_drawingStaffSize, false) / 2;
xn = element->GetDrawingX();
// Calculate size of the rectangle
xLeft = xn - m_doc->GetDrawingBrevisWidth(staff->m_drawingStaffSize);
xRight = xn + m_doc->GetDrawingBrevisWidth(staff->m_drawingStaffSize);
if (note->GetActualDur() == DUR_MX) {
// Maxima is twice the width of brevis
xLeft -= m_doc->GetDrawingBrevisWidth(staff->m_drawingStaffSize);
xRight += m_doc->GetDrawingBrevisWidth(staff->m_drawingStaffSize);
}
yTop = y + m_doc->GetDrawingUnit(staff->m_drawingStaffSize);
yBottom = y - m_doc->GetDrawingUnit(staff->m_drawingStaffSize);
y3 = yTop;
y4 = yBottom;
if (!mensural_black) {
y3 += (int)m_doc->GetDrawingUnit(staff->m_drawingStaffSize) / 2; // partie d'encadrement qui depasse
y4 -= (int)m_doc->GetDrawingUnit(staff->m_drawingStaffSize) / 2;
}
if (!fillNotehead) {
// double the bases of rectangles
DrawObliquePolygon(dc, xLeft, yTop, xRight, yTop, -height);
DrawObliquePolygon(dc, xLeft, yBottom, xRight, yBottom, height);
}
else {
DrawFilledRectangle(dc, xLeft, yTop, xRight, yBottom);
}
DrawVerticalLine(dc, y3, y4, xLeft, m_doc->GetDrawingStemWidth(staff->m_drawingStaffSize)); // corset lateral
DrawVerticalLine(dc, y3, y4, xRight, m_doc->GetDrawingStemWidth(staff->m_drawingStaffSize));
// stem
if (note->GetActualDur() < DUR_BR) {
verticalCenter = staff->GetDrawingY() - m_doc->GetDrawingDoubleUnit(staff->m_drawingStaffSize) * 2;
up = (y < verticalCenter) ? true : false;
if (note->GetDrawingStemDir() != STEMDIRECTION_NONE) {
if (note->GetDrawingStemDir() == STEMDIRECTION_up) {
up = true;
}
else {
up = false;
}
}
if (!up) {
y3 = yTop - m_doc->GetDrawingUnit(staff->m_drawingStaffSize) * 8;
yBottom = yTop;
}
else {
y3 = yTop + m_doc->GetDrawingUnit(staff->m_drawingStaffSize) * 6;
yBottom = yTop;
}
DrawVerticalLine(dc, yBottom, y3, xRight, m_doc->GetDrawingStemWidth(staff->m_drawingStaffSize));
}
return;
}
示例3: DrawMensuralNote
void View::DrawMensuralNote(DeviceContext *dc, LayerElement *element, Layer *layer, Staff *staff, Measure *measure)
{
assert(dc);
assert(element);
assert(layer);
assert(staff);
assert(measure);
Note *note = dynamic_cast<Note *>(element);
assert(note);
int noteY = element->GetDrawingY();
int xNote, xStem;
int drawingDur;
int staffY = staff->GetDrawingY();
wchar_t charCode;
int verticalCenter = 0;
bool mensural_black = (staff->m_drawingNotationType == NOTATIONTYPE_mensural_black);
xStem = element->GetDrawingX();
drawingDur = note->GetDrawingDur();
int radius = m_doc->GetGlyphWidth(SMUFL_E93C_mensuralNoteheadMinimaWhite, staff->m_drawingStaffSize, false) / 2;
if (drawingDur > DUR_1) {
if (mensural_black) radius *= TEMP_MINIMA_WIDTH_FACTOR;
}
else {
radius += radius / 3;
}
/************** Stem/notehead direction: **************/
data_STEMDIRECTION stemDir = STEMDIRECTION_NONE;
verticalCenter = staffY - m_doc->GetDrawingDoubleUnit(staff->m_drawingStaffSize) * 2;
if (note->HasStemDir()) {
stemDir = note->GetStemDir();
}
else if (layer->GetDrawingStemDir() != STEMDIRECTION_NONE) {
stemDir = layer->GetDrawingStemDir();
}
else {
if (drawingDur < DUR_1)
stemDir = STEMDIRECTION_down;
else
stemDir = (noteY > verticalCenter) ? STEMDIRECTION_down : STEMDIRECTION_up;
}
xNote = xStem - radius;
/************** Noteheads: **************/
// Ligature, maxima,longa, and brevis
if ((note->GetLig() != noteLogMensural_LIG_NONE) && (drawingDur <= DUR_1)) {
DrawLigatureNote(dc, element, layer, staff);
}
else if (drawingDur < DUR_1) {
DrawMaximaToBrevis(dc, noteY, element, layer, staff);
}
// Semibrevis
else if (drawingDur == DUR_1) {
if (mensural_black) {
int sbStaffSize = 0.8 * staff->m_drawingStaffSize;
DrawDiamond(dc, xNote, noteY, 2 * sbStaffSize, (int)(1.2 * sbStaffSize), !note->GetColored(), 20);
}
else {
// Maybe we can add this to Note::GetMensuralSmuflNoteHead?
if (note->GetColored())
charCode = SMUFL_E938_mensuralNoteheadSemibrevisBlack;
else
charCode = SMUFL_E939_mensuralNoteheadSemibrevisVoid;
DrawSmuflCode(dc, xNote, noteY, charCode, staff->m_drawingStaffSize, false);
}
}
// Shorter values
else {
if (mensural_black) {
// SMuFL 1.20 doesn't have a codepoint for the "colored" semibrevis and minima head in black
// mensural notation. But an unfilled (void) narrow diamond is fine, so we draw one.
int sbStaffSize = 0.8 * staff->m_drawingStaffSize;
DrawDiamond(dc, xNote, noteY, 2 * sbStaffSize, (int)(TEMP_MINIMA_WIDTH_FACTOR * 2 * sbStaffSize),
!note->GetColored(), 20);
}
else {
DrawSmuflCode(dc, xNote, noteY, note->GetMensuralSmuflNoteHead(), staff->m_drawingStaffSize, false);
}
DrawMensuralStem(dc, note, staff, stemDir, radius, xStem, noteY);
}
/************ Draw children (verse / syl) ************/
DrawLayerChildren(dc, note, layer, staff, measure);
}
示例4: DrawLigature
void View::DrawLigature ( DeviceContext *dc, int y, LayerElement *element, Layer *layer, Staff *staff )
{
assert( dc );
assert( element );
assert( layer );
assert( staff );
Note *note = dynamic_cast<Note*>(element);
assert( note );
int xn, x1, x2, y1, y2, y3, y4;
// int yy2, y5; // unused
int verticalCenter, up, epaisseur;
epaisseur = std::max (2, m_doc->GetDrawingBeamWidth(staff->m_drawingStaffSize, false) / 2);
xn = element->GetDrawingX();
/*
if ((note->m_lig==LIG_MEDIAL) || (note->m_lig==LIG_TERMINAL))
{
CalculateLigaturePosX ( element, layer, staff );
}
else
*/{
xn = element->GetDrawingX();
}
// calcul des dimensions du rectangle
x1 = xn - m_doc->GetDrawingBrevisWidth(staff->m_drawingStaffSize); x2 = xn + m_doc->GetDrawingBrevisWidth(staff->m_drawingStaffSize);
y1 = y + m_doc->GetDrawingUnit(staff->m_drawingStaffSize);
y2 = y - m_doc->GetDrawingUnit(staff->m_drawingStaffSize);
y3 = (int)(y1 + m_doc->GetDrawingUnit(staff->m_drawingStaffSize)/2); // partie d'encadrement qui depasse
y4 = (int)(y2 - m_doc->GetDrawingUnit(staff->m_drawingStaffSize)/2);
//if (!note->m_ligObliqua && (!View::s_drawingLigObliqua)) // notes rectangulaires, y c. en ligature
{
if (note->GetColored()!=BOOLEAN_true)
{ // double base des carrees
DrawObliquePolygon ( dc, x1, y1, x2, y1, -epaisseur );
DrawObliquePolygon ( dc, x1, y2, x2, y2, epaisseur );
}
else
DrawFullRectangle( dc,x1,y1,x2,y2); // dessine val carree pleine // ENZ correction de x2
DrawVerticalLine ( dc, y3, y4, x1, m_doc->GetDrawingStemWidth(staff->m_drawingStaffSize) ); // corset lateral
DrawVerticalLine ( dc, y3, y4, x2, m_doc->GetDrawingStemWidth(staff->m_drawingStaffSize) );
}
/*
else // traitement des obliques
{
if (!View::s_drawingLigObliqua) // 1e passage: ligne flagStemHeighte initiale
{
DrawVerticalLine (dc,y3,y4,x1, m_doc->GetDrawingStemWidth(staff->m_drawingStaffSize) );
View::s_drawingLigObliqua = true;
//oblique = OFF;
// if (val == DUR_1) // queue gauche haut si DUR_1
// queue_lig = ON;
}
else // 2e passage: lignes obl. et flagStemHeighte finale
{
x1 -= m_doc->m_drawingBrevisWidth[staff->m_drawingStaffSize]*2; // avance auto
y1 = *View::s_drawingLigY - m_doc->GetDrawingUnit(staff->m_drawingStaffSize); // ligat_y contient y original
yy2 = y2;
y5 = y1+ m_doc->GetDrawingDoubleUnit(staff->m_drawingStaffSize); y2 += m_doc->GetDrawingDoubleUnit(staff->m_drawingStaffSize); // on monte d'un INTERL
if (note->GetColored()==BOOLEAN_true)
DrawObliquePolygon ( dc, x1, y1, x2, yy2, m_doc->GetDrawingDoubleUnit(staff->m_drawingStaffSize));
else
{ DrawObliquePolygon ( dc, x1, y1, x2, yy2, 5);
DrawObliquePolygon ( dc, x1, y5, x2, y2, -5);
}
DrawVerticalLine ( dc,y3,y4,x2,m_doc->GetDrawingStemWidth(staff->m_drawingStaffSize)); //cloture flagStemHeighte
View::s_drawingLigObliqua = false;
// queue_lig = OFF; //desamorce alg.queue DUR_BR
}
}
if (note->m_lig) // memoriser positions d'une note a l'autre; relier notes par barres
{
*(View::s_drawingLigX+1) = x2; *(View::s_drawingLigY+1) = y; // relie notes ligaturees par barres flagStemHeightes
//if (in(x1,(*View::s_drawingLigX)-2,(*View::s_drawingLigX)+2) || (this->fligat && this->lat && !Note1::marq_obl))
// les dernieres conditions pour permettre ligature flagStemHeighte ancienne
// DrawVerticalLine (dc, *ligat_y, y1, (this->fligat && this->lat) ? x2: x1, m_doc->m_parameters.m_stemWidth); // ax2 - drawing flagStemHeight lines missing
*View::s_drawingLigX = *(View::s_drawingLigX + 1);
*View::s_drawingLigY = *(View::s_drawingLigY + 1);
}
y3 = y2 - m_doc->GetDrawingUnit(staff->m_drawingStaffSize)*6;
if (note->m_lig)
{
if (note->m_dur == DUR_BR) // && this->queue_lig) // queue gauche bas: DUR_BR initiale descendante // ax2 - no support of queue_lig (see WG corrigeLigature)
{
DrawVerticalLine ( dc, y2, y3, x1, m_doc->GetDrawingStemWidth(staff->m_drawingStaffSize) );
}
//.........这里部分代码省略.........
示例5: DrawMaximaToBrevis
void View::DrawMaximaToBrevis( DeviceContext *dc, int y, LayerElement *element, Layer *layer, Staff *staff )
{
assert( dc );
assert( element );
assert( layer );
assert( staff );
Note *note = dynamic_cast<Note*>(element);
assert( note );
int xn, x1, x2, y1, y2, y3, y4;
// int yy2, y5; // unused
int verticalCenter, up, height;
height = m_doc->GetDrawingBeamWidth(staff->m_drawingStaffSize, false) / 2 ;
xn = element->GetDrawingX();
// calcul des dimensions du rectangle
x1 = xn - m_doc->GetDrawingBrevisWidth( staff->m_drawingStaffSize );
x2 = xn + m_doc->GetDrawingBrevisWidth( staff->m_drawingStaffSize );
if (note->GetActualDur() == DUR_MX) {
x1 -= m_doc->GetDrawingBrevisWidth( staff->m_drawingStaffSize );
x2 += m_doc->GetDrawingBrevisWidth( staff->m_drawingStaffSize );
}
y1 = y + m_doc->GetDrawingUnit(staff->m_drawingStaffSize);
y2 = y - m_doc->GetDrawingUnit(staff->m_drawingStaffSize);
y3 = (int)(y1 + m_doc->GetDrawingUnit(staff->m_drawingStaffSize)/2); // partie d'encadrement qui depasse
y4 = (int)(y2 - m_doc->GetDrawingUnit(staff->m_drawingStaffSize)/2);
if (note->GetColored()!=BOOLEAN_true) {
// double base des carrees
DrawObliquePolygon ( dc, x1, y1, x2, y1, -height );
DrawObliquePolygon ( dc, x1, y2, x2, y2, height );
}
else {
DrawFullRectangle( dc,x1,y1,x2,y2);
}
DrawVerticalLine ( dc, y3, y4, x1, m_doc->GetDrawingStemWidth(staff->m_drawingStaffSize) ); // corset lateral
DrawVerticalLine ( dc, y3, y4, x2, m_doc->GetDrawingStemWidth(staff->m_drawingStaffSize) );
// stem
if (note->GetActualDur() < DUR_BR)
{
verticalCenter = staff->GetDrawingY() - m_doc->GetDrawingDoubleUnit(staff->m_drawingStaffSize)*2;
up = (y < verticalCenter) ? true : false;
if ( note->GetDrawingStemDir() != STEMDIRECTION_NONE ) {
if ( note->GetDrawingStemDir() == STEMDIRECTION_up) {
up = true;
}
else {
up = false;
}
}
if (!up) {
y3 = y1 - m_doc->GetDrawingUnit(staff->m_drawingStaffSize)*8;
y2 = y1;
}
else {
y3 = y1 + m_doc->GetDrawingUnit(staff->m_drawingStaffSize)*6;
y2 = y1;
}
DrawVerticalLine ( dc, y2,y3,x2, m_doc->GetDrawingStemWidth(staff->m_drawingStaffSize) );
}
return;
}
示例6: DrawMensuralNote
void View::DrawMensuralNote ( DeviceContext *dc, LayerElement *element, Layer *layer, Staff *staff, Measure *measure )
{
assert( dc );
assert( element );
assert( layer );
assert( staff );
assert( measure );
Note *note = dynamic_cast<Note*>(element);
assert( note );
int staffSize = staff->m_drawingStaffSize;
int noteY = element->GetDrawingY();
int xLedger, xNote, xStem;
int drawingDur;
bool drawingCueSize;
int staffY = staff->GetDrawingY();
wchar_t fontNo;
int ledge;
int verticalCenter = 0;
xStem = element->GetDrawingX();
xLedger = xStem;
drawingDur = note->GetDrawingDur();
drawingCueSize = note->HasGrace();
int radius = m_doc->GetGlyphWidth(SMUFL_E0A3_noteheadHalf, staffSize, drawingCueSize);
if (drawingDur > DUR_1 || (drawingDur == DUR_1 && staff->notAnc)) { // annuler provisoirement la modif. des lignes addit.
ledge = m_doc->GetDrawingLedgerLineLength(staffSize, drawingCueSize);
}
else {
ledge = m_doc->GetDrawingLedgerLineLength(staffSize, drawingCueSize);
radius += radius/3;
}
/************** Stem/notehead direction: **************/
verticalCenter = staffY - m_doc->GetDrawingDoubleUnit(staffSize)*2;
data_STEMDIRECTION noteStemDir = note->CalcDrawingStemDir();
if ( noteStemDir != STEMDIRECTION_NONE ) {
note->SetDrawingStemDir( noteStemDir );
}
else if ( layer->GetDrawingStemDir() != STEMDIRECTION_NONE) {
note->SetDrawingStemDir( layer->GetDrawingStemDir() );
}
else {
note->SetDrawingStemDir((noteY >= verticalCenter) ? STEMDIRECTION_down : STEMDIRECTION_up);
}
xNote = xStem - radius;
/************** Noteheads: **************/
// Long, breve and ligatures
if ((note->GetLig()!=LIGATURE_NONE) && (drawingDur <= DUR_1)) {
DrawLigature ( dc, noteY, element, layer, staff);
}
else if (drawingDur < DUR_1) {
DrawMaximaToBrevis( dc, noteY, element, layer, staff);
}
else if (drawingDur == DUR_1) {
if (note->GetColored())
fontNo = SMUFL_E938_mensuralNoteheadSemibrevisBlack;
else
fontNo = SMUFL_E939_mensuralNoteheadSemibrevisVoid;
DrawSmuflCode( dc, xNote, noteY, fontNo, staff->m_drawingStaffSize, drawingCueSize );
}
// Other values ??WE WANT MENSURAL NOTEHEADS, NOT CMN!!!!!!!!
else {
if (note->GetColored()) {
if (drawingDur == DUR_2) fontNo = SMUFL_E0A4_noteheadBlack;
else fontNo = SMUFL_E0A3_noteheadHalf;
}
else {
if (drawingDur > DUR_2) fontNo = SMUFL_E0A4_noteheadBlack;
else fontNo = SMUFL_E0A3_noteheadHalf;
}
DrawSmuflCode( dc, xNote, noteY, fontNo, staff->m_drawingStaffSize, drawingCueSize );
DrawStem(dc, note, staff, note->GetDrawingStemDir(), radius, xStem, noteY);
}
/************** Ledger lines: **************/
int staffTop = staffY + m_doc->GetDrawingUnit(staffSize);
int staffBot = staffY - m_doc->GetDrawingStaffSize(staffSize) - m_doc->GetDrawingUnit(staffSize);
//if the note is not in the staff
if (!is_in(noteY,staffTop,staffBot))
{
int distance, highestNewLine, numLines;
bool aboveStaff = (noteY > staffTop);
distance = (aboveStaff ? (noteY - staffY) : staffY - m_doc->GetDrawingStaffSize(staffSize) - noteY);
highestNewLine = ((distance % m_doc->GetDrawingDoubleUnit(staffSize) > 0) ? (distance - m_doc->GetDrawingUnit(staffSize)) : distance);
numLines = highestNewLine / m_doc->GetDrawingDoubleUnit(staffSize);
//.........这里部分代码省略.........