From: Stephen T. <st...@us...> - 2005-08-31 03:46:20
|
Update of /cvsroot/rosegarden/gui/guitar In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1985/gui/guitar Modified Files: Tag: guitar_chord_editor barre.cpp barre.h fingering.cpp fingering.h fingers.cpp fingers.h note.cpp note.h symbols.cpp symbols.h Log Message: Second prototype of guitar chord editor complete - fretboard image displayed correctly in editor and resized for sheet music Index: symbols.h =================================================================== RCS file: /cvsroot/rosegarden/gui/guitar/Attic/symbols.h,v retrieving revision 1.1.2.5 retrieving revision 1.1.2.6 diff -C2 -d -r1.1.2.5 -r1.1.2.6 *** symbols.h 4 Aug 2005 14:21:09 -0000 1.1.2.5 --- symbols.h 31 Aug 2005 03:46:07 -0000 1.1.2.6 *************** *** 64,75 **** typedef std::pair<unsigned int, unsigned int> posPair; public: - /* This code borrowed from KGuitar 0.5 */ //! Display a mute symbol in the QPainter object void drawMuteSymbol (QPainter* p, unsigned int position, - unsigned int scale, unsigned int fretDisplayed, unsigned int string_num); --- 64,80 ---- typedef std::pair<unsigned int, unsigned int> posPair; + static float const LEFT_BORDER_PERCENTAGE = 0.1; + static float const RIGHT_BORDER_PERCENTAGE = 0.1; + static float const FRETBOARD_WIDTH_PERCENTAGE = 0.8; + static float const TOP_BORDER_PERCENTAGE = 0.1; + static float const BOTTOM_BORDER_PERCENTAGE = 0.1; + static float const FRETBOARD_HEIGHT_PERCENTAGE = 0.8; + public: //! Display a mute symbol in the QPainter object void drawMuteSymbol (QPainter* p, unsigned int position, unsigned int fretDisplayed, unsigned int string_num); *************** *** 79,83 **** void drawOpenSymbol (QPainter* p, unsigned int position, - unsigned int scale, unsigned int fretDisplayed, unsigned int string_num); --- 84,87 ---- *************** *** 88,92 **** unsigned int position, int fret, - unsigned int scale, unsigned int string_num, unsigned int fretDisplayed); --- 92,95 ---- *************** *** 102,152 **** unsigned int start, unsigned int end, - unsigned int scale, unsigned int string_num, unsigned int fretDisplayed); ! void drawSeperator (QPainter* p, ! unsigned int scale, ! unsigned int string_num); void drawFretHorizontalLines (QPainter* p, - unsigned int scale, unsigned int fretsDisplayed, unsigned int maxStringNum); void drawFretVerticalLines (QPainter* p, - unsigned int scale, unsigned int maxFretsDisplayed, unsigned int string_num); ! unsigned int getTopBorder (unsigned int scale); ! unsigned int getLeftBorder (unsigned int scale); ! unsigned int getRightBorder (void); ! unsigned int getBottomBorder (void); ! unsigned int getFretboardWidth (int imgWidth, unsigned int scale); ! unsigned int getFretboardHeight (int imgHeight, unsigned int scale); unsigned int getStringNumber (int imgWidth, unsigned int x_pos, ! unsigned int string_num, ! unsigned int scale); unsigned int getFretNumber (int imgHeight, unsigned int y_pos, ! unsigned int maxFretNum, ! unsigned int scale); private: posPair ! getX (int imgWidth, unsigned int position, unsigned int string_num, unsigned int scale); posPair ! getY (int imgHeight, unsigned int position, unsigned int fret_num, unsigned int scale); --- 105,150 ---- unsigned int start, unsigned int end, unsigned int string_num, unsigned int fretDisplayed); ! void drawFretNumber (QPainter* p, ! unsigned int fret_num, ! unsigned int fretsDisplayed); void drawFretHorizontalLines (QPainter* p, unsigned int fretsDisplayed, unsigned int maxStringNum); void drawFretVerticalLines (QPainter* p, unsigned int maxFretsDisplayed, unsigned int string_num); ! unsigned int getTopBorder (unsigned int imgHeight); ! unsigned int getBottomBorder (unsigned int imgHeight); ! unsigned int getLeftBorder (unsigned int imgWidth); ! unsigned int getRightBorder (unsigned int imgWidth); ! unsigned int getFretboardWidth (int imgWidth); ! unsigned int getFretboardHeight (int imgHeight); unsigned int getStringNumber (int imgWidth, unsigned int x_pos, ! unsigned int string_num); unsigned int getFretNumber (int imgHeight, unsigned int y_pos, ! unsigned int maxFretNum); private: posPair ! getX (int imgWidth, unsigned int position, unsigned int string_num); posPair ! getY (int imgHeight, unsigned int position, unsigned int fret_num); Index: fingers.cpp =================================================================== RCS file: /cvsroot/rosegarden/gui/guitar/Attic/fingers.cpp,v retrieving revision 1.1.2.7 retrieving revision 1.1.2.8 diff -C2 -d -r1.1.2.7 -r1.1.2.8 *** fingers.cpp 4 Aug 2005 14:21:09 -0000 1.1.2.7 --- fingers.cpp 31 Aug 2005 03:46:07 -0000 1.1.2.8 *************** *** 24,29 **** m_press_fret_num (0) { ! setFixedSize(m_instr->getStringNumber() * SCALE + 2 * BORDER + FRETTEXT + SCROLLER, ! m_frets_displayed * SCALE + SCALE + 2 * BORDER + 2 * SPACER + NOTES); setFrameStyle(Panel | Sunken); setBackgroundMode(PaletteBase); --- 24,28 ---- m_press_fret_num (0) { ! setFixedSize( IMG_WIDTH, IMG_HEIGHT ); setFrameStyle(Panel | Sunken); setBackgroundMode(PaletteBase); *************** *** 31,35 **** m_fret_scroll = new QScrollBar(1, m_instr->getFretNumber() - m_frets_displayed + 1, 1, 5, 1, QScrollBar::Vertical, this); ! m_fret_scroll->setGeometry(width() - SCROLLER, 0, SCROLLER, height()); connect(m_fret_scroll, SIGNAL(valueChanged(int)), SLOT(setFirstFret(int))); --- 30,34 ---- m_fret_scroll = new QScrollBar(1, m_instr->getFretNumber() - m_frets_displayed + 1, 1, 5, 1, QScrollBar::Vertical, this); ! m_fret_scroll->setGeometry(width() - SCROLL, 0, SCROLL, height()); connect(m_fret_scroll, SIGNAL(valueChanged(int)), SLOT(setFirstFret(int))); *************** *** 82,98 **** (ns.getStringNumber (maximumHeight(), pos.x(), ! m_instr->getStringNumber(), ! SCALE)); m_press_fret_num = 0; unsigned int y_pos = pos.y(); ! if (y_pos > ns.getTopBorder(SCALE)) { m_press_fret_num = ns.getFretNumber (maximumWidth(), y_pos, ! m_frets_displayed, ! SCALE) + m_fret_scroll->value(); } --- 81,95 ---- (ns.getStringNumber (maximumHeight(), pos.x(), ! m_instr->getStringNumber())); m_press_fret_num = 0; unsigned int y_pos = pos.y(); ! if (y_pos > ns.getTopBorder(maximumHeight())) { m_press_fret_num = ns.getFretNumber (maximumWidth(), y_pos, ! m_frets_displayed) + m_fret_scroll->value(); } *************** *** 120,136 **** ns.getStringNumber (this->maximumHeight(), rpos.x(), ! m_instr->getStringNumber(), ! SCALE); unsigned int release_fret_num = 0; unsigned int y_rpos = rpos.y(); ! if (y_rpos > ns.getTopBorder(SCALE)) { release_fret_num = ns.getFretNumber (maximumWidth(), y_rpos, ! m_frets_displayed, ! SCALE) + m_fret_scroll->value(); } --- 117,131 ---- ns.getStringNumber (this->maximumHeight(), rpos.x(), ! m_instr->getStringNumber()); unsigned int release_fret_num = 0; unsigned int y_rpos = rpos.y(); ! if (y_rpos > ns.getTopBorder(maximumHeight())) { release_fret_num = ns.getFretNumber (maximumWidth(), y_rpos, ! m_frets_displayed) + m_fret_scroll->value(); } *************** *** 216,219 **** --- 211,215 ---- void FingeringConstructor::drawContents(QPainter *p) { + /* // Horizontal separator line NoteSymbols ns; *************** *** 221,235 **** ns.drawFretHorizontalLines (p, SCALE, m_frets_displayed, m_instr->getStringNumber()); ns.drawFretVerticalLines (p, SCALE, m_frets_displayed, m_instr->getStringNumber()); // Set beginning fret number and scroll bar - QString tmp; - tmp.setNum(m_chord_arrangement->getFirstFret()); m_fret_scroll->setValue (m_chord_arrangement->getFirstFret()); - /* This code borrowed from KGuitar 0.5 */ - p->drawText(BORDER - SPACER, BORDER + SCALE + 2 * SPACER, 50, 50, AlignLeft | AlignTop, tmp); - // Draw Fingering ! m_chord_arrangement->drawContents (p, SCALE, m_frets_displayed); } --- 217,227 ---- ns.drawFretHorizontalLines (p, SCALE, m_frets_displayed, m_instr->getStringNumber()); ns.drawFretVerticalLines (p, SCALE, m_frets_displayed, m_instr->getStringNumber()); + */ // Set beginning fret number and scroll bar m_fret_scroll->setValue (m_chord_arrangement->getFirstFret()); // Draw Fingering ! m_chord_arrangement->drawContents (p, m_frets_displayed); } Index: fingering.cpp =================================================================== RCS file: /cvsroot/rosegarden/gui/guitar/Attic/fingering.cpp,v retrieving revision 1.1.2.13 retrieving revision 1.1.2.14 diff -C2 -d -r1.1.2.13 -r1.1.2.14 *** fingering.cpp 4 Aug 2005 14:21:09 -0000 1.1.2.13 --- fingering.cpp 31 Aug 2005 03:46:07 -0000 1.1.2.14 *************** *** 28,33 **** unsigned int max_frets; ! e_ref.get<UInt>(PropertyName("GUITAR_MAXFRETS"), max_strings); ! e_ref.get<UInt>(PropertyName("GUITAR_MAXSTRINGS"), max_frets); m_guitar = new Guitar(max_strings, max_frets); --- 28,33 ---- unsigned int max_frets; ! e_ref.get<UInt>(PropertyName("GUITAR_MAXFRETS"), max_frets); ! e_ref.get<UInt>(PropertyName("GUITAR_MAXSTRINGS"), max_strings); m_guitar = new Guitar(max_strings, max_frets); *************** *** 181,185 **** } ! void Fingering::drawContents (QPainter* p, unsigned int scale, unsigned int frets_displayed) const { // CHANGE: New system using the GuitarStrings to denote status --- 181,185 ---- } ! void Fingering::drawContents (QPainter* p, unsigned int frets_displayed) const { // CHANGE: New system using the GuitarStrings to denote status *************** *** 190,193 **** --- 190,199 ---- // For all bars // display bar + // Horizontal separator line + NoteSymbols ns; + + ns.drawFretNumber (p, m_startFret, frets_displayed); + ns.drawFretHorizontalLines (p, frets_displayed, m_guitar->getStringNumber()); + ns.drawFretVerticalLines (p, frets_displayed, m_guitar->getStringNumber()); for (Guitar::GuitarStringMap::const_iterator pos = m_guitar->begin(); *************** *** 208,212 **** m_startFret, m_guitar->getStringNumber(), - scale, frets_displayed); } --- 214,217 ---- *************** *** 219,223 **** ns.drawOpenSymbol(p, m_guitar->getStringNumber() - pos.key(), - scale, frets_displayed, m_guitar->getStringNumber()); --- 224,227 ---- *************** *** 231,235 **** ns.drawMuteSymbol(p, m_guitar->getStringNumber() - pos.key(), - scale, frets_displayed, m_guitar->getStringNumber()); --- 235,238 ---- *************** *** 246,250 **** BarreMapPair bPair = (*pos); Barre* bPtr = bPair.second; ! bPtr->drawContents (p, m_startFret, m_guitar->getStringNumber(), scale, frets_displayed); } } --- 249,253 ---- BarreMapPair bPair = (*pos); Barre* bPtr = bPair.second; ! bPtr->drawContents (p, m_startFret, m_guitar->getStringNumber(), frets_displayed); } } *************** *** 648,651 **** --- 651,664 ---- Fingering::operator== (Fingering const& rhs) const { + std::list<unsigned int> pressedStringList; + + // Comparison - Match string numbers in guitar + if (m_guitar->getStringNumber() != rhs.m_guitar->getStringNumber()) + { + return false; + } + + // Comparison - Match starting fret + // Worse case: O(1) if (m_startFret != rhs.m_startFret) { *************** *** 653,656 **** --- 666,690 ---- } + // Comparison - Match present string action + // - If matched strings are pressed then we have a notes and barres + // to compare + // Worse case: O(N) + for (unsigned int i = 1; i <= m_guitar->getStringNumber(); ++i) + { + if (m_guitar->getStringStatus(i) == rhs.m_guitar->getStringStatus(i)) + { + if (m_guitar->getStringStatus(i) == GuitarString::PRESSED) + { + pressedStringList.push_back(i); + } + } + else + { + return false; + } + } + + // Comparison - Match lhs and rhs notes + // Worse case: O(NxM) for (NoteMap::const_iterator lhsPos = m_notes.begin(); lhsPos != m_notes.end(); *************** *** 670,673 **** --- 704,709 ---- } + // Comparison #4 - Match lhs and rhs barres + // Worse case: O(NxM) for (BarreMap::const_iterator lhsPos = m_barreFretMap.begin(); lhsPos != m_barreFretMap.end(); *************** *** 687,690 **** --- 723,733 ---- } + // Comparison - Match lhs notes and rhs barres + // Comparison - Match rhs notes and lhs barres + // - If we keep an additional map for the notes + // map<unsigned int fret, Note*> + // We can find a row in the map, and compare all notes in row against the barre + // If any discrepancy, return false + return true; } Index: fingering.h =================================================================== RCS file: /cvsroot/rosegarden/gui/guitar/Attic/fingering.h,v retrieving revision 1.1.2.11 retrieving revision 1.1.2.12 diff -C2 -d -r1.1.2.11 -r1.1.2.12 *** fingering.h 4 Aug 2005 14:21:09 -0000 1.1.2.11 --- fingering.h 31 Aug 2005 03:46:07 -0000 1.1.2.12 *************** *** 82,90 **** //! Display Fingering object using QPainter object - // scale: The adjustment to the size of the Notes and Barres to be displayed // frets_displayed: The maximum number of frets to be displayed // p: The QPainter object where the Notes and Barres are displayed void drawContents (QPainter* p, - unsigned int scale, unsigned int frets_displayed) const; --- 82,88 ---- Index: barre.cpp =================================================================== RCS file: /cvsroot/rosegarden/gui/guitar/Attic/barre.cpp,v retrieving revision 1.1.2.6 retrieving revision 1.1.2.7 diff -C2 -d -r1.1.2.6 -r1.1.2.7 *** barre.cpp 4 Aug 2005 14:21:08 -0000 1.1.2.6 --- barre.cpp 31 Aug 2005 03:46:07 -0000 1.1.2.7 *************** *** 116,120 **** unsigned int startFret, unsigned int stringCount, - unsigned int scale, unsigned int fretDisplayed) { --- 116,119 ---- *************** *** 135,139 **** (stringCount - start), (stringCount - end), - scale, stringCount, fretDisplayed); --- 134,137 ---- Index: fingers.h =================================================================== RCS file: /cvsroot/rosegarden/gui/guitar/Attic/fingers.h,v retrieving revision 1.1.2.4 retrieving revision 1.1.2.5 diff -C2 -d -r1.1.2.4 -r1.1.2.5 *** fingers.h 4 Aug 2005 14:21:09 -0000 1.1.2.4 --- fingers.h 31 Aug 2005 03:46:07 -0000 1.1.2.5 *************** *** 21,77 **** public: ! static const unsigned int MAX_FRET_DISPLAYED = 5; ! //! Constructor FingeringConstructor (Guitar *instr, QWidget *parent = 0, const char *name = 0); ! //! Constant values obtained from KGuitar project ! enum { SCALE=20, ! CIRCLE=16, ! CIRCBORD=2, ! BORDER=5, ! SPACER=3, ! FRETTEXT=10, ! SCROLLER=15, ! NOTES=20 }; public slots: ! //! Clear the chord display of Bar and Note objects void clear(); ! //! Display given fingering object void setFingering(guitar::Fingering*); ! //! Set the base fret for fingering void setFirstFret(int); signals: ! //! Alert this object that a chordChange has occurred void chordChange(); protected: ! //! Overriding method to draw fingering to QPainter object virtual void drawContents (QPainter *); ! //! Capture mouse press event virtual void mousePressEvent (QMouseEvent *); ! //! Capture mouse release event virtual void mouseReleaseEvent (QMouseEvent *); private: ! //! Scroll Bar to manage setting the base fret for fingering (KGuitar) QScrollBar *m_fret_scroll; ! //! Handle to the guitar associated with present fingering Guitar *m_instr; ! //! Handle to the present fingering Fingering* m_chord_arrangement; ! //! Maximum number of frets displayed by FingeringConstructor unsigned int m_frets_displayed; --- 21,72 ---- public: ! static const unsigned int MAX_FRET_DISPLAYED = 5; ! //! Constructor FingeringConstructor (Guitar *instr, QWidget *parent = 0, const char *name = 0); ! //! Constant values obtained from KGuitar project ! enum { IMG_WIDTH = 200, ! IMG_HEIGHT = 200, ! SCROLL = 15, }; public slots: ! //! Clear the chord display of Bar and Note objects void clear(); ! //! Display given fingering object void setFingering(guitar::Fingering*); ! //! Set the base fret for fingering void setFirstFret(int); signals: ! //! Alert this object that a chordChange has occurred void chordChange(); protected: ! //! Overriding method to draw fingering to QPainter object virtual void drawContents (QPainter *); ! //! Capture mouse press event virtual void mousePressEvent (QMouseEvent *); ! //! Capture mouse release event virtual void mouseReleaseEvent (QMouseEvent *); private: ! //! Scroll Bar to manage setting the base fret for fingering (KGuitar) QScrollBar *m_fret_scroll; ! //! Handle to the guitar associated with present fingering Guitar *m_instr; ! //! Handle to the present fingering Fingering* m_chord_arrangement; ! //! Maximum number of frets displayed by FingeringConstructor unsigned int m_frets_displayed; *************** *** 79,86 **** unsigned int m_press_string_num; ! //! Fret number where a mouse press event was located unsigned int m_press_fret_num; ! //! Handle to mouse press event QMouseEvent* m_release_pos; }; --- 74,81 ---- unsigned int m_press_string_num; ! //! Fret number where a mouse press event was located unsigned int m_press_fret_num; ! //! Handle to mouse press event QMouseEvent* m_release_pos; }; Index: note.cpp =================================================================== RCS file: /cvsroot/rosegarden/gui/guitar/Attic/note.cpp,v retrieving revision 1.1.2.7 retrieving revision 1.1.2.8 diff -C2 -d -r1.1.2.7 -r1.1.2.8 *** note.cpp 4 Aug 2005 14:21:09 -0000 1.1.2.7 --- note.cpp 31 Aug 2005 03:46:07 -0000 1.1.2.8 *************** *** 121,125 **** unsigned int start_fret, unsigned int string_count, - unsigned int scale, unsigned int frets_displayed) { --- 121,124 ---- *************** *** 135,139 **** NoteSymbols ns; ! ns.drawNoteSymbol(p, string_position, fret_position, scale, string_count, frets_displayed); } --- 134,138 ---- NoteSymbols ns; ! ns.drawNoteSymbol(p, string_position, fret_position, string_count, frets_displayed); } Index: note.h =================================================================== RCS file: /cvsroot/rosegarden/gui/guitar/Attic/note.h,v retrieving revision 1.1.2.7 retrieving revision 1.1.2.8 diff -C2 -d -r1.1.2.7 -r1.1.2.8 *** note.h 4 Aug 2005 14:21:09 -0000 1.1.2.7 --- note.h 31 Aug 2005 03:46:07 -0000 1.1.2.8 *************** *** 69,73 **** unsigned int start_fret, unsigned int string_count, - unsigned int scale, unsigned int frets_displayed); --- 69,72 ---- Index: symbols.cpp =================================================================== RCS file: /cvsroot/rosegarden/gui/guitar/Attic/symbols.cpp,v retrieving revision 1.1.2.1 retrieving revision 1.1.2.2 diff -C2 -d -r1.1.2.1 -r1.1.2.2 *** symbols.cpp 6 Aug 2005 19:34:45 -0000 1.1.2.1 --- symbols.cpp 31 Aug 2005 03:46:07 -0000 1.1.2.2 *************** *** 4,17 **** { NoteSymbols::posPair ! NoteSymbols::getX (int imgWidth, unsigned int position, unsigned int string_num, unsigned int scale) { ! /* ! std::cout << "NoteSymbols::getX - input values" << std::endl ! << " position: " << position << std::endl ! << " string #: " << string_num << std::endl ! << " scale: " << scale << std::endl; ! */ ! unsigned int lBorder = getLeftBorder(scale); ! unsigned int fretboard = getFretboardWidth(imgWidth, scale); unsigned int columnWidth = fretboard / string_num; return std::make_pair( (position * columnWidth + lBorder), columnWidth); --- 4,17 ---- { NoteSymbols::posPair ! NoteSymbols::getX (int imgWidth, unsigned int position, unsigned int string_num) { ! /* ! std::cout << "NoteSymbols::getX - input values" << std::endl ! << " position: " << position << std::endl ! << " string #: " << string_num << std::endl ! << " scale: " << scale << std::endl; ! */ ! unsigned int lBorder = getLeftBorder(imgWidth); ! unsigned int fretboard = getFretboardWidth(imgWidth); unsigned int columnWidth = fretboard / string_num; return std::make_pair( (position * columnWidth + lBorder), columnWidth); *************** *** 19,32 **** NoteSymbols::posPair ! NoteSymbols::getY (int imgHeight, unsigned int fret_pos, unsigned int maxFretNum, unsigned int scale) { ! /* ! std::cout << "NoteSymbols::getY - input values" << std::endl ! << " position: " << fret_pos << std::endl ! << " max frets: " << maxFretNum << std::endl ! << " scale: " << scale << std::endl; ! */ ! unsigned int tBorder = getTopBorder(scale); ! unsigned int yFretboard = getFretboardHeight(imgHeight, scale); unsigned int rowHeight = yFretboard / maxFretNum; return std::make_pair(((fret_pos * rowHeight) + tBorder), rowHeight); --- 19,32 ---- NoteSymbols::posPair ! NoteSymbols::getY (int imgHeight, unsigned int fret_pos, unsigned int maxFretNum) { ! /* ! std::cout << "NoteSymbols::getY - input values" << std::endl ! << " position: " << fret_pos << std::endl ! << " max frets: " << maxFretNum << std::endl ! << " scale: " << scale << std::endl; ! */ ! unsigned int tBorder = getTopBorder(imgHeight); ! unsigned int yFretboard = getFretboardHeight(imgHeight); unsigned int rowHeight = yFretboard / maxFretNum; return std::make_pair(((fret_pos * rowHeight) + tBorder), rowHeight); *************** *** 36,60 **** NoteSymbols::drawMuteSymbol (QPainter* p, unsigned int position, - unsigned int scale, unsigned int fretDisplayed, unsigned int string_num) { QRect v = p->viewport(); - posPair x_pos = getX (v.width(), position, string_num, scale); - unsigned int y_pos = FC::BORDER + FC::CIRCBORD + scale/4; ! unsigned int xDelta = (x_pos.first + x_pos.second/4) - (x_pos.first - x_pos.second/4); //std::cout << "NoteSymbols::drawMuteSymbol - drawing Mute symbol at string #" << position ! //<< std::endl; ! p->drawLine( (x_pos.first - (x_pos.second/4)), ! y_pos, ! (x_pos.first + (x_pos.second/4)), ! y_pos + xDelta); ! p->drawLine(x_pos.first + (x_pos.second/4), ! y_pos, ! (x_pos.first - (x_pos.second/4)), ! y_pos + xDelta); } --- 36,62 ---- NoteSymbols::drawMuteSymbol (QPainter* p, unsigned int position, unsigned int fretDisplayed, unsigned int string_num) { QRect v = p->viewport(); ! posPair x_pos = getX (v.width(), position, string_num); ! unsigned int y_pos = getTopBorder( v.height() ) / 2; ! double columnWidth = x_pos.second; ! unsigned int width = static_cast<unsigned int>(columnWidth * 0.7); ! unsigned int height = static_cast<unsigned int>(columnWidth * 0.7); //std::cout << "NoteSymbols::drawMuteSymbol - drawing Mute symbol at string #" << position ! //<< std::endl; ! p->drawLine ( x_pos.first - ( width / 2 ), ! y_pos - ( height / 2 ), ! (x_pos.first + ( width / 2 ) ), ! y_pos + ( height / 2 ) ); ! ! p->drawLine(x_pos.first + ( width / 2 ), ! y_pos - ( height / 2), ! (x_pos.first - ( width / 2 ) ), ! y_pos + ( height / 2) ); } *************** *** 62,82 **** NoteSymbols::drawOpenSymbol (QPainter* p, unsigned int position, - unsigned int scale, unsigned int fretDisplayed, unsigned int string_num) { QRect v = p->viewport(); ! posPair x_pos = getX (v.width(), position, string_num, scale); ! unsigned int y_pos = FC::BORDER + FC::CIRCBORD + scale/4; ! unsigned int xDelta = (x_pos.first + x_pos.second/4) - (x_pos.first - x_pos.second/4); //std::cout << "NoteSymbols::drawOpenSymbol - drawing Open symbol at string #" << position ! //<< std::endl; ! p->setBrush(Qt::NoBrush); ! p->drawEllipse(x_pos.first - (x_pos.second/4), ! y_pos, ! xDelta, ! xDelta); } --- 64,84 ---- NoteSymbols::drawOpenSymbol (QPainter* p, unsigned int position, unsigned int fretDisplayed, unsigned int string_num) { QRect v = p->viewport(); ! posPair x_pos = getX (v.width(), position, string_num); ! unsigned int y_pos = getTopBorder( v.height() ) / 2; ! double columnWidth = x_pos.second; ! unsigned int radius = static_cast<unsigned int>( columnWidth * 0.7 ); //std::cout << "NoteSymbols::drawOpenSymbol - drawing Open symbol at string #" << position ! //<< std::endl; ! p->setBrush( Qt::NoBrush ); ! p->drawEllipse( x_pos.first - ( radius / 2 ), ! y_pos - (radius / 2), ! radius, ! radius ); } *************** *** 85,105 **** unsigned int position, int fret, - unsigned int scale, unsigned int string_num, unsigned int fretDisplayed) { //std::cout << "NoteSymbols::drawNoteSymbol - string: " << position << ", fret:" << fret ! //<< std::endl; QRect v = p->viewport(); ! posPair x_pos = getX (v.width(), position, string_num, scale); ! posPair y_pos = getY (v.height(), fret, fretDisplayed, scale); ! unsigned int xDelta = (x_pos.first + x_pos.second/4) - (x_pos.first - x_pos.second/4); p->setBrush(Qt::SolidPattern); ! p->drawEllipse(x_pos.first - xDelta/2, ! y_pos.first + y_pos.second/3, ! xDelta, ! xDelta); } --- 87,107 ---- unsigned int position, int fret, unsigned int string_num, unsigned int fretDisplayed) { //std::cout << "NoteSymbols::drawNoteSymbol - string: " << position << ", fret:" << fret ! //<< std::endl; QRect v = p->viewport(); ! posPair x_pos = getX (v.width(), position, string_num); ! posPair y_pos = getY (v.height(), fret, fretDisplayed); ! double columnWidth = x_pos.second; ! unsigned int radius = static_cast<unsigned int>( columnWidth * 0.7 ); p->setBrush(Qt::SolidPattern); ! p->drawEllipse(x_pos.first - ( radius / 2 ), ! y_pos.first + ( y_pos.second / 4 ), ! radius, ! radius); } *************** *** 109,113 **** unsigned int start, unsigned int end, - unsigned int scale, unsigned int string_num, unsigned int fretDisplayed) --- 111,114 ---- *************** *** 116,173 **** //std::cout << "NoteSymbols::drawBarreSymbol - start: " << start << ", end:" << end << std::endl; ! drawNoteSymbol (p, start, fret, scale, string_num, fretDisplayed); if ((end - start) >= 1) { QRect v = p->viewport(); ! posPair x_pos = getX (v.width(), start, string_num, scale); ! posPair y_pos = getY (v.height(), fret, fretDisplayed, scale); ! unsigned int xDelta = (x_pos.first + x_pos.second/4) - (x_pos.first - x_pos.second/4); ! p->drawRect(x_pos.first, ! y_pos.first + y_pos.second/3, ! (end - start) * scale, ! xDelta); } ! drawNoteSymbol (p, end, fret, scale, string_num, fretDisplayed); } void ! NoteSymbols::drawSeperator (QPainter* p, ! unsigned int scale, ! unsigned int string_num) { ! p->drawLine(FC::BORDER + FC::FRETTEXT, ! FC::BORDER + scale + FC::SPACER, ! FC::BORDER + FC::FRETTEXT + string_num * scale, ! FC::BORDER + scale + FC::SPACER); } void NoteSymbols::drawFretHorizontalLines (QPainter* p, - unsigned int scale, unsigned int fretsDisplayed, unsigned int maxStringNum) { ! /* ! std::cout << "NoteSymbols::drawFretHorizontalLines" << std::endl ! << " scale: " << scale << std::endl ! << " frets: " << fretsDisplayed << std::endl ! << " max string: " << maxStringNum << std::endl; ! */ QRect v = p->viewport(); ! int imgWidth = v.width(); // Horizontal lines ! for (unsigned int i = 0; i < fretsDisplayed; ++i) { ! posPair y_pos = getY (imgWidth, i, fretsDisplayed, scale); /* This code borrowed from KGuitar 0.5 */ ! p->drawLine(getLeftBorder(scale), y_pos.first, ! FC::BORDER + scale / 2 + FC::FRETTEXT + maxStringNum * scale - scale, y_pos.first); } --- 117,189 ---- //std::cout << "NoteSymbols::drawBarreSymbol - start: " << start << ", end:" << end << std::endl; ! drawNoteSymbol (p, start, fret, string_num, fretDisplayed); if ((end - start) >= 1) { QRect v = p->viewport(); ! posPair startXPos = getX (v.width(), start, string_num); ! posPair endXPos = getX (v.width(), end, string_num); ! posPair y_pos = getY (v.height(), fret, fretDisplayed); ! double columnWidth = startXPos.second; ! unsigned int thickness = static_cast<unsigned int>( columnWidth * 0.7 ); ! p->drawRect(startXPos.first, ! y_pos.first + ( y_pos.second / 4 ), ! endXPos.first - startXPos.first, ! thickness); } ! drawNoteSymbol (p, end, fret, string_num, fretDisplayed); } void ! NoteSymbols::drawFretNumber (QPainter* p, ! unsigned int fret_num, ! unsigned int fretsDisplayed) { ! if (fret_num > 1) ! { ! QRect v = p->viewport(); ! unsigned int imgWidth = v.width(); ! unsigned int imgHeight = v.height(); ! ! QString tmp; ! tmp.setNum( fret_num ); ! ! // Use NoteSymbols to grab X and Y for first fret ! posPair y_pos = getY( imgHeight, 0, fretsDisplayed); ! ! p->drawText( getLeftBorder( imgWidth) / 4, ! y_pos.first + ( y_pos.second / 2 ), ! tmp ); ! } } void NoteSymbols::drawFretHorizontalLines (QPainter* p, unsigned int fretsDisplayed, unsigned int maxStringNum) { ! /* ! std::cout << "NoteSymbols::drawFretHorizontalLines" << std::endl ! << " scale: " << scale << std::endl ! << " frets: " << fretsDisplayed << std::endl ! << " max string: " << maxStringNum << std::endl; ! */ QRect v = p->viewport(); ! unsigned int imgWidth = v.width(); ! //unsigned int endXPos = getFretboardWidth(imgWidth) + getLeftBorder(imgWidth); ! posPair endXPos = getX (imgWidth, maxStringNum - 1, maxStringNum); // Horizontal lines ! for (unsigned int i = 0; i <= fretsDisplayed; ++i) { ! posPair y_pos = getY (imgWidth, i, fretsDisplayed); /* This code borrowed from KGuitar 0.5 */ ! p->drawLine(getLeftBorder(imgWidth), y_pos.first, ! endXPos.first, y_pos.first); } *************** *** 176,180 **** void NoteSymbols::drawFretVerticalLines (QPainter* p, - unsigned int scale, unsigned int fretsDisplayed, unsigned int maxStringNum) --- 192,195 ---- *************** *** 184,197 **** int imgHeight = v.height(); int imgWidth = v.width(); ! posPair startPos = getY (imgHeight, 0, fretsDisplayed, scale); ! posPair endPos = getY (imgHeight, fretsDisplayed, fretsDisplayed, scale); for (unsigned int i = 0; i < maxStringNum; ++i) { ! posPair x_pos = getX (imgWidth, i, maxStringNum, scale); /* This code borrowed from KGuitar 0.5 */ p->drawLine( x_pos.first, ! startPos.first, x_pos.first, endPos.first); --- 199,213 ---- int imgHeight = v.height(); int imgWidth = v.width(); ! ! unsigned int startPos = getTopBorder( imgHeight ); ! posPair endPos = getY (imgHeight, fretsDisplayed, fretsDisplayed); for (unsigned int i = 0; i < maxStringNum; ++i) { ! posPair x_pos = getX (imgWidth, i, maxStringNum); /* This code borrowed from KGuitar 0.5 */ p->drawLine( x_pos.first, ! startPos, x_pos.first, endPos.first); *************** *** 200,236 **** unsigned int ! NoteSymbols::getTopBorder (unsigned int scale) { ! return FC::BORDER + FC::CIRCBORD + scale + 2 * FC::SPACER; } unsigned int ! NoteSymbols::getLeftBorder (unsigned int scale) { ! return FC::BORDER + scale/2 + FC::FRETTEXT; } unsigned int ! NoteSymbols::getRightBorder (void) { ! return FC::BORDER; } unsigned int ! NoteSymbols::getBottomBorder (void) { ! return FC::BORDER; } unsigned int ! NoteSymbols::getFretboardWidth (int imgWidth, unsigned int scale) { ! return imgWidth - getLeftBorder(scale) - getRightBorder(); } unsigned int ! NoteSymbols::getFretboardHeight (int imgHeight, unsigned int scale) { ! return imgHeight - getTopBorder(scale) - getBottomBorder(); } --- 216,258 ---- unsigned int ! NoteSymbols::getTopBorder (unsigned int imgHeight) { ! return static_cast<unsigned int>( TOP_BORDER_PERCENTAGE * imgHeight ); } unsigned int ! NoteSymbols::getBottomBorder (unsigned int imgHeight) { ! return static_cast<unsigned int>(imgHeight * BOTTOM_BORDER_PERCENTAGE ); } unsigned int ! NoteSymbols::getLeftBorder (unsigned int imgWidth) { ! unsigned int left = static_cast<unsigned int>( imgWidth * LEFT_BORDER_PERCENTAGE ); ! if ( left < 15 ) ! { ! left = 15; ! } ! std::cout << "Left border: " << left << std::endl; ! return left; } unsigned int ! NoteSymbols::getRightBorder (unsigned int imgWidth) { ! return static_cast<unsigned int>( imgWidth * RIGHT_BORDER_PERCENTAGE ); } unsigned int ! NoteSymbols::getFretboardWidth (int imgWidth) { ! return static_cast<unsigned int>( imgWidth * FRETBOARD_WIDTH_PERCENTAGE ); } unsigned int ! NoteSymbols::getFretboardHeight (int imgHeight) { ! return static_cast<unsigned int>( imgHeight * FRETBOARD_HEIGHT_PERCENTAGE ); } *************** *** 238,250 **** NoteSymbols::getStringNumber (int imgWidth, unsigned int x_pos, ! unsigned int maxStringNum, ! unsigned int scale) { ! /* ! std::cout << "NoteSymbols::getStringNumber - input values" << std::endl ! << " X position: " << x_pos << std::endl ! << " string #: " << maxStringNum << std::endl ! << " scale: " << scale << std::endl; ! */ posPair xPairPos; unsigned int min = 0; --- 260,271 ---- NoteSymbols::getStringNumber (int imgWidth, unsigned int x_pos, ! unsigned int maxStringNum) { ! /* ! std::cout << "NoteSymbols::getStringNumber - input values" << std::endl ! << " X position: " << x_pos << std::endl ! << " string #: " << maxStringNum << std::endl ! << " scale: " << scale << std::endl; ! */ posPair xPairPos; unsigned int min = 0; *************** *** 254,258 **** for (unsigned int i = 0; i < maxStringNum; ++i) { ! xPairPos = getX (imgWidth, i, maxStringNum, scale); if (i == 0) { --- 275,279 ---- for (unsigned int i = 0; i < maxStringNum; ++i) { ! xPairPos = getX (imgWidth, i, maxStringNum); if (i == 0) { *************** *** 281,285 **** } ! // std::cout << " string: #" << result << std::endl; return result; } --- 302,306 ---- } ! // std::cout << " string: #" << result << std::endl; return result; } *************** *** 288,307 **** NoteSymbols::getFretNumber (int imgHeight, unsigned int y_pos, ! unsigned int maxFretNum, ! unsigned int scale) { ! /* ! std::cout << "NoteSymbols::getFretNumber - input values" << std::endl ! << " Y position: " << y_pos << std::endl ! << " max frets: " << maxFretNum << std::endl ! << " scale: " << scale << std::endl; ! */ ! unsigned int tBorder = getTopBorder(scale); unsigned int result = 0; if (y_pos < tBorder) { ! std::cout << " tBorder: " << tBorder << std::endl; std::cout << " fret #: " << result << std::endl; return result; --- 309,327 ---- NoteSymbols::getFretNumber (int imgHeight, unsigned int y_pos, ! unsigned int maxFretNum) { ! /* ! std::cout << "NoteSymbols::getFretNumber - input values" << std::endl ! << " Y position: " << y_pos << std::endl ! << " max frets: " << maxFretNum << std::endl ! << " scale: " << scale << std::endl; ! */ ! unsigned int tBorder = getTopBorder(imgHeight); unsigned int result = 0; if (y_pos < tBorder) { ! std::cout << " tBorder: " << tBorder << std::endl; std::cout << " fret #: " << result << std::endl; return result; *************** *** 315,320 **** for (unsigned int i = 0; i < maxFretNum; ++i) { ! min_pos = getY (imgHeight, i, maxFretNum, scale); ! max_pos = getY (imgHeight, i+1, maxFretNum, scale); if ((y_pos >= min_pos.first) && y_pos <= max_pos.first - 1) --- 335,340 ---- 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) *************** *** 325,329 **** } ! // std::cout << " fret #: " << result << std::endl; return result; } --- 345,349 ---- } ! // std::cout << " fret #: " << result << std::endl; return result; } Index: barre.h =================================================================== RCS file: /cvsroot/rosegarden/gui/guitar/Attic/barre.h,v retrieving revision 1.1.2.6 retrieving revision 1.1.2.7 diff -C2 -d -r1.1.2.6 -r1.1.2.7 *** barre.h 4 Aug 2005 14:21:08 -0000 1.1.2.6 --- barre.h 31 Aug 2005 03:46:07 -0000 1.1.2.7 *************** *** 66,70 **** unsigned int startFret, unsigned int stringCount, - unsigned int scale, unsigned int fretDisplayed); --- 66,69 ---- |