Esempio n. 1
0
bool HandleCoincidence(SkTArray<SkOpContour*, true>* contourList, int total) {
#if DEBUG_SHOW_WINDING
    SkOpContour::debugShowWindingValues(contourList);
#endif
    CoincidenceCheck(contourList, total);
#if DEBUG_SHOW_WINDING
    SkOpContour::debugShowWindingValues(contourList);
#endif
    fixOtherTIndex(contourList);
    checkEnds(contourList);  // check if connecting curve intersected at the same end
    bool hasM = checkMultiples(contourList);  // check if intersections agree on t and point values
    SkTDArray<SkOpSegment::AlignedSpan> aligned;
    if (hasM) {
        alignMultiples(contourList, &aligned);  // align pairs of identical points
        alignCoincidence(contourList, aligned);
    }
    checkDuplicates(contourList);  // check if spans have the same number on the other end
    checkTiny(contourList);  // if pair have the same end points, mark them as parallel
    checkSmall(contourList);  // a pair of curves with a small span may turn into coincident lines
    joinCoincidence(contourList);  // join curves that connect to a coincident pair
    sortSegments(contourList);
    if (!calcAngles(contourList)) {
        return false;
    }
    sortAngles(contourList);
#if DEBUG_ACTIVE_SPANS || DEBUG_ACTIVE_SPANS_FIRST_ONLY
    DebugShowActiveSpans(*contourList);
#endif
    return true;
}
 int findMinDifference(vector<string>& timePoints) {
     unordered_map<int, int> mp;
     if (checkDuplicates(timePoints, mp)) return 0;
     
     set<int> buckets;
     constructBuckets(timePoints, buckets);
     return calculateMinDiff(buckets);
 }
void RKVarEditModel::addObject (int index, RKVariable* object) {
	RK_TRACE (EDITOR);
	RK_ASSERT (object);

	if ((index < 0) || (index >= objects.size ())) index = objects.size ();

	beginInsertColumns (QModelIndex (), index, index);
	if (meta_model) meta_model->beginAddDataObject (index);
	if (object->isPending () && (!object->getLength ())) object->setLength (trueRows ());	// probably we just created it ourselves
	listenForObject (object);
	objects.insert (index, object);
	if (meta_model) meta_model->endAddDataObject ();
	endInsertColumns ();

	checkDuplicates ();
}
Esempio n. 4
0
void TeamMembersDlg::slotAddMember()
{
   KDialogBase addDlg(this, "add_member", true, i18n("New Member"), KDialogBase::Ok | KDialogBase::Cancel);
   MemberEditDlg memberDlg(&addDlg);
   addDlg.setMainWidget(&memberDlg);
   bool result;
   do {
     result = addDlg.exec();
     if (result)
     {
        QString name = memberDlg.nameCombo->currentText();
        QString role = memberDlg.roleCombo->currentText();
        QString task = memberDlg.taskEdit->text();
        QString subProject = memberDlg.subprojectCombo->currentText();
        QString nickName = memberDlg.nicknameEdit->text();
        QString email = memberDlg.emailEdit->text();
        if (name.isEmpty())
        {
           KMessageBox::error(this, i18n("The member name cannot be empty."));
           addDlg.show();
        } else
        if (nickName.isEmpty())
        {
           KMessageBox::error(this, i18n("The nickname cannot be empty as it is used as a unique identifier."));
           addDlg.show();
        } else
        if (!checkDuplicates(0L, name, nickName, email, role, task, subProject))
        {
          addDlg.show();
        } else
        {
          QListViewItem *item = new QListViewItem(membersListView, name, nickName, email, role, task);
          if (memberDlg.subprojectCombo->isEnabled())
            item->setText(SUBPROJECT_COL, subProject);
          result = false;
        }
     }
   } while (result);
}
Esempio n. 5
0
void Menu::bindKey()
{
    bindText.setString(bindMessage);
    bindText.setOrigin(bindText.getGlobalBounds().width / 2, bindText.getGlobalBounds().height / 2);
    for (int i = 0; i < sf::Keyboard::KeyCount; ++i)
    {
        if (sf::Keyboard::isKeyPressed((sf::Keyboard::Key)i))
        {
            if (i == sf::Keyboard::Escape)
            {
                //exit
                isBinding = false;
            }
            else
            {
                sf::Keyboard::Key * tempKey;
                int saved;
                switch(currentKey)  //was not planning ahead
                {
                    case 7:
                        tempKey = &settings.leftPlayer.up;
                        break;
                    case 8:
                        tempKey = &settings.leftPlayer.down;
                        break;
                    case 9:
                        tempKey = &settings.leftPlayer.left;
                        break;
                    case 10:
                        tempKey = &settings.leftPlayer.right;
                        break;
                    case 11:
                        tempKey = &settings.leftPlayer.select;
                        break;
                    case 12:
                        tempKey = &settings.leftPlayer.back;
                        break;
                    case 13:
                        tempKey = &settings.leftPlayer.speed;
                        break;
                    case 14:
                        tempKey = &settings.leftPlayer.hotkey1;
                        break;
                    case 15:
                        tempKey = &settings.leftPlayer.hotkey2;
                        break;
                    case 16:
                        tempKey = &settings.leftPlayer.hotkey3;
                        break;
                    case 17:
                        tempKey = &settings.leftPlayer.hotkey4;
                        break;
                    case 18:
                        tempKey = &settings.rightPlayer.up;
                        break;
                    case 19:
                        tempKey = &settings.rightPlayer.down;
                        break;
                    case 20:
                        tempKey = &settings.rightPlayer.left;
                        break;
                    case 21:
                        tempKey = &settings.rightPlayer.right;
                        break;
                    case 22:
                        tempKey = &settings.rightPlayer.select;
                        break;
                    case 23:
                        tempKey = &settings.rightPlayer.back;
                        break;
                    case 24:
                        tempKey = &settings.rightPlayer.speed;
                        break;
                    case 25:
                        tempKey = &settings.rightPlayer.hotkey1;
                        break;
                    case 26:
                        tempKey = &settings.rightPlayer.hotkey2;
                        break;
                    case 27:
                        tempKey = &settings.rightPlayer.hotkey3;
                        break;
                    case 28:
                        tempKey = &settings.rightPlayer.hotkey4;
                        break;
                }
                saved = *tempKey;
                *tempKey = (sf::Keyboard::Key)i;

                if (checkDuplicates() == false) //valid
                {
                    isBinding = false;
                    updateSettings();
                }
                else
                {
                    *tempKey = (sf::Keyboard::Key)saved;
                    sprintf(bindMessage, "Press the escape key to exit.\n\nPress the new key for %s\n\nThe %s key is already being used!", hotkeyNames[currentKey - 7], keyNames[i]);
                }
            }
        }
    }
}
Esempio n. 6
0
void TeamMembersDlg::slotEditMember()
{
   QListViewItem *item =membersListView->currentItem();
   if (!item) return;
   KDialogBase editDlg(this, "edit_member", true, i18n("Edit Member"), KDialogBase::Ok | KDialogBase::Cancel);
   MemberEditDlg memberDlg(&editDlg);
   memberDlg.selectMember(item->text(NAME_COL));
   memberDlg.nicknameEdit->setText(item->text(NICKNAME_COL));
   memberDlg.emailEdit->setText(item->text(EMAIL_COL));
   QString role = item->text(ROLE_COL);
   for (int i = 0; i < memberDlg.roleCombo->count(); i++)
   {
      if (memberDlg.roleCombo->text(i) == role)
      {
         memberDlg.roleCombo->setCurrentItem(i);
         memberDlg.slotRoleSelected(role);
         break;
      }
   }
   memberDlg.taskEdit->setText(item->text(TASK_COL));
   int idx = 0;
   int subprojectIdx = 0;
   QValueList<SubProject> *subprojects = Project::ref()->subprojects();
   for (QValueList<SubProject>::ConstIterator it = subprojects->constBegin(); it != subprojects->constEnd(); ++it)
   {
      if (item->text(SUBPROJECT_COL) == (*it).name)
      {
        subprojectIdx = idx;
        break;
      }
      idx++;
   }
   memberDlg.subprojectCombo->setCurrentItem(subprojectIdx);

   editDlg.setMainWidget(&memberDlg);
   bool result;
   do {
     result = editDlg.exec();
     if (result)
     {
        QString name = memberDlg.nameCombo->currentText();
        QString nickName = memberDlg.nicknameEdit->text();
        QString email = memberDlg.emailEdit->text();
        QString role = memberDlg.roleCombo->currentText();
        QString task = memberDlg.taskEdit->text();
        QString subProject = memberDlg.subprojectCombo->currentText();
        if (name.isEmpty())
        {
           KMessageBox::error(this, i18n("The member name cannot be empty."));
           editDlg.show();
        } else
         if (nickName.isEmpty())
        {
           KMessageBox::error(this, i18n("The nickname cannot be empty as it is used as a unique identifier."));
           editDlg.show();
        } else
       if (!checkDuplicates(item, name, nickName, email, role, task, subProject))
        {
          editDlg.show();
        } else
        {
          item->setText(NAME_COL, name);
          item->setText(NICKNAME_COL, nickName);
          item->setText(EMAIL_COL, email);
          item->setText(ROLE_COL, role);
          item->setText(TASK_COL, task);
          if (memberDlg.subprojectCombo->isEnabled())
            item->setText(SUBPROJECT_COL, subProject);
          result = false;
        }
     }
   } while (result);
}