示例#1
0
/** Remove a color from the menu of a group and update all related data
 *  structures.
 *  @param grp is a group number
 *  @param c is a color to be added to grp's menu
 *  @return the deficit of grp after c has been added
 */
int egcolor_menu::shrinkMenu(int grp, int c) {
	removeColor(c,grp);
	vertex u = gp->input(gp->firstEdgeInGroup(grp));
	free(c, u);

	int cnt = 0;
	for (edge e = gp->firstEdgeInGroup(grp); e != 0;
		  e = gp->nextEdgeInGroup(grp,e)) {
		// iterate through each mgraf in grp's mset
		vertex v = gp->output(e); int dv = gp->degree(v);
		Graph &mg = *mgraf[v]; dmatch& dm = *dymatch[v];
		// find edge (gx,c+dv) in mg and remove from mg and
		// possibly from dm
		for (edge ee = mg.firstAt(gx[e]); ee != 0;
			  ee = mg.nextAt(gx[e],ee)) {
			if (mg.right(ee) == c+dv) {
				if (dm.matchEdge(c+dv) == ee) {
					dm.unmatch(ee); free(c, v);
				}
				mg.remove(ee);
				break;
			}
		}
		dm.maxMatch();
		if (dm.matchEdge(gx[e]) == 0) cnt++;
	}
	return cnt;
}
示例#2
0
void CustomColorsWidget::CreateButtons()
{
	int titleRow = 1 ? includeTitleRow : 0;
	for (int row=0; row<buttonsHigh; ++row)
	{
		for (int col=0; col<buttonsWide; ++col)
		{
			ColorButton *newButton = new ColorButton();
			newButton->setEnabled(false);
			newButton->SetRow(row);
			newButton->SetColumn(col);
			newButton->setCheckable(true);
			connect(newButton, SIGNAL(clicked(QColor)), this, SIGNAL(colorClicked(QColor)));
			connect(newButton, SIGNAL(clicked(QColor,int,int)), this, SLOT(setCurrentColor(QColor,int,int)));
			newButton->SetBackgroundColor(QColor::fromRgb(255, 255, 255));
			gridLayout->addWidget(newButton, row+titleRow, col);
			buttons.push_back(newButton);
			buttonGroup->addButton(newButton);
		}
	}

	if (includeTitleRow)
	{
		QLabel *titleLabel = new QLabel("Custom Colors:");
		titleLabel->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum);
		gridLayout->addWidget(titleLabel, 0, 0, 1, gridLayout->columnCount());
	}

	QPushButton *removeColorButton = new QPushButton();
	removeColorButton->setText("Remove From Custom Colors");
	removeColorButton->setFixedHeight(27);
	connect(removeColorButton, SIGNAL(clicked()), this, SLOT(removeColor()));
	gridLayout->addWidget(removeColorButton, gridLayout->rowCount(), 0, 1, gridLayout->columnCount());
}
示例#3
0
void ColorDropDown::updateColor(const MapColor* color)
{
	if (!spot_colors_only || color->getSpotColorMethod() == MapColor::SpotColor)
	{
		int pos = 0;
		for (; pos < count(); ++pos)
		{
			if (itemData(pos).value<const MapColor*>() == color)
				break;
		}
		
		if (pos < count())
		{
			int icon_size = style()->pixelMetric(QStyle::PM_SmallIconSize);
			QPixmap pixmap(icon_size, icon_size);
			pixmap.fill(*color);
			setItemText(pos, color->getName());
			setItemData(pos, pixmap, Qt::DecorationRole);
		}
		else
		{
			addColor(color);
		}
	}
	else
	{
		removeColor(color);
	}
}
示例#4
0
dockListUpdate mutableSquareImageContainer::replaceRareColors() {

  QHash<QRgb, int> countHash;
  ::colorCounts(image_, originalDimension_, &countHash);

  rareColorsDialog countDialog(countHash);
  const int dialogReturnCode = countDialog.exec();
  QList<QRgbPair> pairs = countDialog.colorsToChange();
  if (dialogReturnCode == QDialog::Accepted && pairs.size() > 0) {
    QList<colorChange> changeHistories;
    QSet<flossColor> oldFloss;
    QVector<triC> oldColors;
    for (int i = 0, size = pairs.size(); i < size; ++i) {
      const QRgb oldColor = pairs[i].first;
      const triC oldTriColor(oldColor);
      oldColors.push_back(oldTriColor);
      oldFloss.insert(getFlossColorFromColor(oldTriColor));
      const QRgb newColor = pairs[i].second;
      const QVector<pairOfInts> changedSquares =
        ::changeColor(&image_, oldColor, newColor, originalDimension_);
      if (!changedSquares.empty()) {
        removeColor(oldColor);
        changeHistories.push_back(colorChange(oldColor, newColor,
                                              changedSquares));
      }
    }
    addToHistory(historyItemPtr(new rareColorsHistoryItem(changeHistories,
                                                          oldFloss)));
    return dockListUpdate(oldColors, true);
  }
  else {
    return dockListUpdate();
  }
}
示例#5
0
/** Clear all menus.  */
void egcolor_menu::clearMenus() {
	for (vertex u = 1; u <= gp->n(); u++) {
		for (int grp = gp->firstGroup(u); grp != 0;
			 grp = gp->nextGroup(u,grp)) {
			while (fc[grp] != 0) removeColor(fc[grp],grp);
		}
	}
}
示例#6
0
/** Remove all colors from the menu of a group and update related
 *  data structures.
 *  @param grp is a group number
 */
void egcolor_menu::resetMenu(int grp) {
	vertex u = gp->input(gp->firstEdgeInGroup(grp));
	int c = firstColor(grp);
	while (c != 0) {
		removeColor(c,grp); free(c, u); c = firstColor(grp);
	}
	for (edge e = gp->firstEdgeInGroup(grp); e != 0;
		  e = gp->nextEdgeInGroup(grp,e)) {
		vertex v = gp->output(e); int dv = gp->degree(v);
		Graph &mg = *mgraf[v]; dmatch& dm = *dymatch[v];
		edge ee = dm.matchEdge(gx[e]);
		if (ee != 0) {
			int c = mg.right(ee) - dv;
			dm.unmatch(ee); free(c, v);
		}
		for (edge ee = mg.firstAt(gx[e]); ee != 0;
			  ee = mg.firstAt(gx[e]))
			mg.remove(ee);
	}
}
示例#7
0
dockListUpdate
mutableSquareImageContainer::changeColor(QRgb oldColor,
                                         flossColor newFlossColor) {

  const QRgb newColor = newFlossColor.color().qrgb();
  if (oldColor == newColor) {
    return dockListUpdate();
  }
  const QVector<pairOfInts> changedSquares =
    ::changeColor(&image_, oldColor, newColor, originalDimension_);
  if (!changedSquares.empty()) {
    const bool colorAdded = addColor(newFlossColor);
    const flossColor oldFlossColor = removeColor(oldColor);
    addToHistory(historyItemPtr(new changeAllHistoryItem(oldFlossColor,
                                                         newFlossColor,
                                                         colorAdded,
                                                         changedSquares)));
    return dockListUpdate(newColor, colorAdded, oldColor);
  }
  else {
    return dockListUpdate();
  }
}
void ColorTableCreator::removeHandColor(ColorClasses::Color color)
{
  removeColor(handMadeClassification, color);
}
示例#9
0
void chaosDeMove(action2 a){
	currentState->board[a.x][a.y]=-1;
	removeColor(a.color);
	currentState->depth--;

}
示例#10
0
void ColorDropDown::onColorDeleted(int, const MapColor* color)
{
	removeColor(color);
}
示例#11
0
void mutableSquareImageContainer::removeColors(const QVector<triC>& colors) {

  for (int i = 0, size = colors.size(); i < size; ++i) {
    removeColor(colors[i]);
  }
}