void UBGraphicsTriangle::mousePressEvent(QGraphicsSceneMouseEvent *event) { lastRect = rect().toRect(); lastPos = sceneTransform().inverted().map(event->screenPos()); if (resize1Polygon().containsPoint(event->pos().toPoint(), Qt::OddEvenFill)) { mResizing1 = true; event->accept(); } else if (resize2Polygon().containsPoint(event->pos().toPoint(), Qt::OddEvenFill)) { mResizing2 = true; event->accept(); } else if(rotateRect().contains(event->pos())) { mRotating = true; event->accept(); } else { QGraphicsItem::mousePressEvent(event); } mShowButtons = false; mCloseSvgItem->setVisible(false); mHFlipSvgItem->setVisible(false); mVFlipSvgItem->setVisible(false); mRotateSvgItem->setVisible(mRotating); update(); }
qreal UBGraphicsCompass::angleInDegrees() const { QRectF itemRect = boundingRect(); QTransform itemTransform = sceneTransform(); QPointF topLeft = itemTransform.map(itemRect.topLeft()); QPointF topRight = itemTransform.map(itemRect.topRight()); QLineF topLine(topLeft, topRight); return topLine.angle(); }
void BlurItem::reload(const QPixmap &pixmap) { const QRectF r = rect(); if (r.isNull() && !r.isValid()) return; QTransform t = sceneTransform(); t.translate(qAbs(scene()->sceneRect().left()), qAbs(scene()->sceneRect().top())); m_item->setPixmap(pixmap.copy(t.mapRect(r).toRect())); }
void GraphicsItemRenderer::drawFrame() { DPTR_D(GraphicsItemRenderer); if (!d.painter) return; if (d.checkGL()) { d.glv.render(boundingRect(), realROI(), d.matrix*sceneTransform()); return; } QPainterRenderer::drawFrame(); }
QRectF ScenePixmapItem::sceneBoundingRect() { if( !parentItem() ){ // if (d_ptr->parent || d_ptr->hasTransform) // qDebug() << "ScenePixmapItem::has parent"; return sceneTransform().mapRect(boundingRect()); } else { // qDebug() << "ScenePixmapItem::has not parent"; // totally random choice for scenePos() :S return boundingRect().translated(scenePos()); } }
//! \brief Saves data as xml. void GraphicLine::saveData(Caneda::XmlWriter *writer) const { writer->writeStartElement("painting"); writer->writeAttribute("name", "line"); writer->writeLineAttribute(line()); writer->writePointAttribute(pos(), "pos"); writer->writeTransformAttribute(sceneTransform()); writer->writePen(pen()); writer->writeEndElement(); // </painting> }
void UBGraphicsRuler::updateResizeCursor() { QPixmap pix(":/images/cursors/resize.png"); QTransform itemTransform = sceneTransform(); QRectF itemRect = boundingRect(); QPointF topLeft = itemTransform.map(itemRect.topLeft()); QPointF topRight = itemTransform.map(itemRect.topRight()); QLineF topLine(topLeft, topRight); qreal angle = topLine.angle(); QTransform tr; tr.rotate(- angle); QCursor resizeCursor = QCursor(pix.transformed(tr, Qt::SmoothTransformation), pix.width() / 2, pix.height() / 2); mResizeCursor = resizeCursor; }
void UBGraphicsTriangle::updateResizeCursor() { QPixmap pix(":/images/cursors/resize.png"); QTransform itemTransform = sceneTransform(); QRectF itemRect = boundingRect(); QPointF topLeft = itemTransform.map(itemRect.topLeft()); QPointF topRight = itemTransform.map(itemRect.topRight()); QPointF bottomLeft = itemTransform.map(itemRect.bottomLeft()); QLineF topLine(topLeft, topRight); QLineF leftLine(topLeft, bottomLeft); qreal angle = topLine.angle(); QTransform tr1; tr1.rotate(- angle); mResizeCursor1 = QCursor(pix.transformed(tr1, Qt::SmoothTransformation), pix.width() / 2, pix.height() / 2); angle = leftLine.angle(); QTransform tr2; tr2.rotate(- angle); mResizeCursor2 = QCursor(pix.transformed(tr2, Qt::SmoothTransformation), pix.width() / 2, pix.height() / 2); }
void GraphicsItemRenderer::drawFrame() { DPTR_D(GraphicsItemRenderer); if (!d.painter) return; if (d.checkGL()) { d.glv.render(boundingRect(), realROI(), d.matrix*sceneTransform()); return; } //fill background color only when the displayed frame rect not equas to renderer's if (d.image.isNull()) { //TODO: when setInSize()? d.image = QImage(rendererSize(), QImage::Format_RGB32); d.image.fill(Qt::black); //maemo 4.7.0: QImage.fill(uint) } const QRect roi = realROI(); //assume that the image data is already scaled to out_size(NOT renderer size!) if (roi.size() == d.out_rect.size()) { d.painter->drawImage(d.out_rect.topLeft(), d.image, roi); } else { d.painter->drawImage(d.out_rect, d.image, roi); } }
void UBGraphicsTriangle::mouseMoveEvent(QGraphicsSceneMouseEvent *event) { if (!mResizing1 && !mResizing2 && !mRotating) { QGraphicsItem::mouseMoveEvent(event); } else { QPoint currPos = sceneTransform().inverted().map(event->screenPos()); if (mResizing1) { if (mOrientation == TopLeft || mOrientation == BottomLeft) { int deltaX = currPos.x() - lastPos.x(); if (lastRect.width() + deltaX < sMinWidth) deltaX = sMinWidth - lastRect.width(); setRect(QRectF(lastRect.left(), lastRect.top(), lastRect.width() + deltaX, lastRect.height()), mOrientation); } else { int deltaX = lastPos.x() - currPos.x(); if (lastRect.width() + deltaX < sMinWidth) deltaX = sMinWidth - lastRect.width(); setRect(QRectF(lastRect.left() - deltaX, lastRect.top(), lastRect.width() + deltaX, lastRect.height()), mOrientation); } } //-----------------------------------------------// if (mResizing2) { if (mOrientation == BottomRight || mOrientation == BottomLeft) { int deltaY = lastPos.y() - currPos.y(); if (lastRect.height() + deltaY < sMinHeight) deltaY = sMinHeight - lastRect.height(); setRect(QRectF(lastRect.left(), lastRect.top() - deltaY, lastRect.width(), lastRect.height() + deltaY), mOrientation); } else { int deltaY = currPos.y() - lastPos.y(); if (lastRect.height() + deltaY < sMinHeight) deltaY = sMinHeight - lastRect.height(); setRect(QRectF(lastRect.left(), lastRect.top(), lastRect.width(), lastRect.height() + deltaY), mOrientation); } } //-----------------------------------------------// if (mRotating) { QLineF currentLine(rotationCenter(), event->pos()); QLineF lastLine(rotationCenter(), event->lastPos()); rotateAroundCenter(currentLine.angleTo(lastLine)); } //-----------------------------------------------// event->accept(); } }