⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 notesymbols.cpp

📁 LINUX下的混音软件
💻 CPP
📖 第 1 页 / 共 2 页
字号:
       y_pos += rowHeight;    }    p->restore();}voidNoteSymbols::drawStrings ( QPainter* p ) const{    // Vertical lines    QRect v = p->viewport();    int imgHeight = v.height();    int imgWidth = v.width();    unsigned int startPos = getTopBorder( imgHeight ) + TOP_GUITAR_CHORD_MARGIN;    unsigned int endPos = (getY ( imgHeight, m_nbOfFrets, m_nbOfFrets )).first + TOP_GUITAR_CHORD_MARGIN;    unsigned int guitarChordWidth = getGuitarChordWidth( imgWidth );    unsigned int columnWidth = guitarChordWidth / m_nbOfStrings;    unsigned int x_pos = (getX ( imgWidth, 0, m_nbOfStrings )).first;    QPen pen(p->pen());    pen.setWidth(imgWidth >= 100 ? STRING_PEN_WIDTH : STRING_PEN_WIDTH / 2);      p->save();    p->setPen(pen);    for ( unsigned int i = 0; i < m_nbOfStrings; ++i ) {        /* This code borrowed from KGuitar 0.5 */        p->drawLine( x_pos,                     startPos,                     x_pos,                     endPos );                            x_pos += columnWidth;    }    p->restore();    }QRect NoteSymbols::getTransientNoteSymbolRect(QSize guitarChordSize,                                              unsigned int stringNb,                                              int fretNb) const{    posPair x_pos = getX ( guitarChordSize.width(), stringNb, m_nbOfStrings );    posPair y_pos = getY ( guitarChordSize.height(), fretNb, m_nbOfFrets );    double columnWidth = x_pos.second;    unsigned int radius =  static_cast<unsigned int>( columnWidth /* * 0.9 */ );    int x = x_pos.first - ( radius / 2 ),        y = y_pos.first + ( (y_pos.second - radius) / 2) - y_pos.second + TOP_GUITAR_CHORD_MARGIN;     return QRect(x, y, radius, radius);}unsigned intNoteSymbols::getTopBorder ( unsigned int imgHeight ) const{    return static_cast<unsigned int>( TOP_BORDER_PERCENTAGE * imgHeight );}unsigned intNoteSymbols::getBottomBorder ( unsigned int imgHeight ) const{    return static_cast<unsigned int>( imgHeight * BOTTOM_BORDER_PERCENTAGE );}unsigned intNoteSymbols::getLeftBorder ( unsigned int imgWidth ) const{    unsigned int left = static_cast<unsigned int>( imgWidth * LEFT_BORDER_PERCENTAGE );    if ( left < 15 ) {        left = 15;    }    return left;}unsigned intNoteSymbols::getRightBorder ( unsigned int imgWidth ) const{    return static_cast<unsigned int>( imgWidth * RIGHT_BORDER_PERCENTAGE );}unsigned intNoteSymbols::getGuitarChordWidth ( int imgWidth ) const{    return static_cast<unsigned int>( imgWidth * GUITAR_CHORD_WIDTH_PERCENTAGE );}unsigned intNoteSymbols::getGuitarChordHeight ( int imgHeight ) const{    return static_cast<unsigned int>( imgHeight * GUITAR_CHORD_HEIGHT_PERCENTAGE );}unsigned intNoteSymbols::getFontPixelSize ( int imgWidth, int imgHeight ) const{    return std::max(8, imgHeight / 10);}std::pair<bool, unsigned int>NoteSymbols::getStringNumber ( int imgWidth,                               unsigned int x_pos,                               unsigned int maxStringNum ) const{    /*        std::cout << "NoteSymbols::getNumberOfStrings - input values" << std::endl        << "  X position: " << x_pos << std::endl        << "  string #: " << maxStringNum << std::endl        << "  image width:    " << imgWidth << std::endl;    */    bool valueOk = false;    posPair xPairPos;    unsigned int min = 0;    unsigned int max = 0;    unsigned int result = 0;    for ( unsigned int i = 0; i < maxStringNum; ++i ) {        xPairPos = getX ( imgWidth, i, maxStringNum );        // If the counter equals zero then we are at the first        // string to the left        if ( i == 0 ) {            // Add 10 pixel buffer to range comparison            min = xPairPos.first - 10;        } else {            min = xPairPos.first - xPairPos.second / 2;        }        // If the counter equals the maxString number -1 then we are at the last        // string to the right        if ( i == ( maxStringNum - 1 ) ) {            // Add 10 pixel buffer to range comparison            max = xPairPos.first + 10;        } else {            max = xPairPos.first + xPairPos.second / 2;        }        if ( ( x_pos >= min ) && ( x_pos <= max ) ) {            result = i;            valueOk = true;            break;        }    }    //std::cout << "NoteSymbols::getNumberOfStrings - string: #" << result << std::endl;    return std::make_pair( valueOk, result );}std::pair<bool, unsigned int>NoteSymbols::getFretNumber ( int imgHeight,                             unsigned int y_pos,                             unsigned int maxFretNum ) const{    /*        std::cout << "NoteSymbols::getNumberOfFrets - input values" << std::endl        << "  Y position: " << y_pos << std::endl        << "  max frets:   " << maxFretNum << std::endl        << "  image height:    " << imgHeight << std::endl;    */    bool valueOk = false;    unsigned int tBorder = getTopBorder( imgHeight );    unsigned int result = 0;    if ( y_pos < tBorder ) {        // User pressing above the guitar chord to mark line muted or opened        valueOk = true;    } else {        typedef std::pair<unsigned int, unsigned int> RangePair;        posPair min_pos;        posPair max_pos;        for ( unsigned int i = 0; i < maxFretNum; ++i ) {            min_pos = getY ( imgHeight, i, maxFretNum );            max_pos = getY ( imgHeight, i + 1, maxFretNum );            if ( ( y_pos >= min_pos.first ) && y_pos <= max_pos.first - 1 ) {                result = i + 1;                valueOk = true;                break;            }        }    }    //    std::cout << "  fret #: " << result << std::endl;    return std::make_pair( valueOk, result );}voidNoteSymbols::drawFingeringPixmap(const Guitar::Fingering& fingering, const Guitar::NoteSymbols& noteSymbols, QPainter *p){    unsigned int startFret = fingering.getStartFret();        noteSymbols.drawFretNumber(p, startFret);    noteSymbols.drawFrets(p);    noteSymbols.drawStrings(p);    unsigned int stringNb = 0;        for (Fingering::const_iterator pos = fingering.begin();         pos != fingering.end();         ++pos, ++stringNb) {                        switch (*pos) {        case Fingering::OPEN:                noteSymbols.drawOpenSymbol(p, stringNb);                break;        case Fingering::MUTED:                noteSymbols.drawMuteSymbol(p, stringNb);                break;        default:                noteSymbols.drawNoteSymbol(p, stringNb, *pos - (startFret - 1), false);                break;        }    }    }float const NoteSymbols::LEFT_BORDER_PERCENTAGE = 0.2;float const NoteSymbols::RIGHT_BORDER_PERCENTAGE = 0.1;float const NoteSymbols::GUITAR_CHORD_WIDTH_PERCENTAGE = 0.8;float const NoteSymbols::TOP_BORDER_PERCENTAGE = 0.1;float const NoteSymbols::BOTTOM_BORDER_PERCENTAGE = 0.1;float const NoteSymbols::GUITAR_CHORD_HEIGHT_PERCENTAGE = 0.8;int   const NoteSymbols::TOP_GUITAR_CHORD_MARGIN = 5;int   const NoteSymbols::FRET_PEN_WIDTH = 2;int   const NoteSymbols::STRING_PEN_WIDTH = 2;} /* namespace Guitar */}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -