// In which decorative object are we? // On return, the position is the location of the cursor's hot spot // Returns false if we aren't in any zone bool PlayGround::zone(QPoint &position) { // Scan all available decorative objects on right side because we may be adding one int draggedNumber; for (draggedNumber = 0; draggedNumber < decorations; draggedNumber++) if (objectsLayout[draggedNumber].contains(position)) { position.setX(position.x() - objectsLayout[draggedNumber].x()); position.setY(position.y() - objectsLayout[draggedNumber].y()); draggedObject.setNumber(draggedNumber); draggedZOrder = -1; return true; } // Scan all decorative objects already layed down on editable are because we may be moving or removing one const ToDraw *currentObject; for (draggedZOrder = toDraw.count()-1; draggedZOrder >= 0; draggedZOrder--) { currentObject = toDraw.at(draggedZOrder); if (!currentObject->getPosition().contains(position)) continue; QRect toUpdate(currentObject->getPosition()); draggedObject = *currentObject; draggedNumber = draggedObject.getNumber(); QBitmap shape(objectsLayout[draggedNumber].size()); QPoint relative(position.x() - toUpdate.x(), position.y() - toUpdate.y()); bitBlt(&shape, QPoint(0, 0), &masks, objectsLayout[draggedNumber], Qt::CopyROP); if (!shape.convertToImage().pixelIndex(relative.x(), relative.y())) continue; toDraw.remove(draggedZOrder); toUpdate.moveBy(XMARGIN, YMARGIN); repaint(toUpdate, false); position = relative; return true; } // If we are on the gameboard itself, then play "tuberling" sound if (editableArea.contains(position)) topLevel->playSound(editableSound); return false; }
InterpolationDialog::InterpolationDialog(Workspace* workspace, WorkspaceObject* object, int mode): QDialog(workspace) { setupUi(this); this->workspace = workspace; this->mode = mode; this->object = object; setWindowTitle(); fromBox->setMaximum(object->getStop()); fromBox->setMinimum(object->getStart()); toBox->setMaximum(object->getStop()); toBox->setMinimum(object->getStart()+2); toBox->setValue(toBox->maximum()); connect(curFromButton, SIGNAL(clicked()), this, SLOT(fromUpdate())); connect(curToButton, SIGNAL(clicked()), this, SLOT(toUpdate())); connect(posButton, SIGNAL(clicked()), this, SLOT(interpolate())); connect(negButton, SIGNAL(clicked()), this, SLOT(close())); }