Example #1
0
void Chord::setText(const QString &chordText)
{
    this->chordText = chordText.trimmed();
    int indexOfInversionBar = this->chordText.indexOf("/");
    if (indexOfInversionBar > 0)
        bassInversion = this->chordText.right(this->chordText.size() - 1 - indexOfInversionBar);
    hasLettersAfterChordRoot = false;// min, maj, m, dim, add letters after chord root?
    int lettersBegin = (isFlat() || isSharp()) ? 2 : 1;
    int limit = hasBassInversion() ? indexOfInversionBar : this->chordText.length();
    int endOfLetters = lettersBegin;
    bool diminishedSymbol = chordText.size() > endOfLetters && chordText.at(endOfLetters) == QChar(
        0xc2b0);
    while (endOfLetters < limit
           && !(chordText.at(endOfLetters).isDigit() || diminishedSymbol
                || chordText.at(endOfLetters) == '(')) {
        endOfLetters++;
        hasLettersAfterChordRoot = true;
    }

    if (hasLettersAfterChordRoot)
        lettersAfterRoot = this->chordText.mid(lettersBegin, endOfLetters - lettersBegin);

    if (endOfLetters < limit) {
        int finalIndex = hasBassInversion() ? indexOfInversionBar : this->chordText.length();
        lastPart = this->chordText.mid(endOfLetters, finalIndex - endOfLetters);
    }
}
static char isPragma(char *p)
{
  p = skipBlank(p);
  if( !isSharp(*p++) ) return 0;
  p = skipBlank(p);
  if( !startsWithWord(p, "pragma") ) return 0;
  return 1;
}
static int isInclude(char *p)
{
  p = skipBlank(p);
  if( !isSharp(*p++) ) return 0;
  p = skipBlank(p);
  if( strncmp(p, "include", 7) != 0 ) return 0;
  p += 7;
  p = skipBlank(p);
  
  if( *p != '"' &&  *p != '<') return 0;
  int isSystemInclude = (*p == '<');
  char terminator = (isSystemInclude)? '>' : '"';
  char *lastTerminatorP = NULL; //last terminator's pointer
  //find last terminator
  while( *++p != '\0' ){
    if( *p == terminator ) lastTerminatorP = p;
  }
  if(lastTerminatorP == NULL) return 0;
  p = lastTerminatorP;
  while(*++p != '\0'){
    if( !isBlank(*p) ) return 0;
  }
  return (isSystemInclude)? SYSTEM_INCLUDE : USER_INCLUDE;
}
Example #4
0
QString Chord::getRootKey() const
{
    int lenght = (isFlat() || isSharp()) ? 2 : 1;
    return chordText.left(lenght);
}