void DkPaintViewPort::mousePressEvent(QMouseEvent *event) { // panning -> redirect to viewport if (event->buttons() == Qt::LeftButton && (event->modifiers() == nmc::Settings::param().global().altMod || panning)) { setCursor(Qt::ClosedHandCursor); event->setModifiers(Qt::NoModifier); // we want a 'normal' action in the viewport event->ignore(); return; } if (event->buttons() == Qt::LeftButton && parent()) { nmc::DkBaseViewPort* viewport = dynamic_cast<nmc::DkBaseViewPort*>(parent()); if(viewport) { if(QRectF(QPointF(), viewport->getImage().size()).contains(mapToImage(event->pos()))) { isOutside = false; paths.append(QPainterPath()); paths.last().moveTo(mapToImage(event->pos())); paths.last().lineTo(mapToImage(event->pos())+QPointF(0.1,0)); pathsPen.append(pen); update(); } else isOutside = true; } } // no propagation }
void DkPaintViewPort::mouseMoveEvent(QMouseEvent *event) { //qDebug() << "paint viewport..."; // panning -> redirect to viewport if (event->modifiers() == nmc::Settings::param().global().altMod || panning) { event->setModifiers(Qt::NoModifier); event->ignore(); update(); return; } if (parent()) { nmc::DkBaseViewPort* viewport = dynamic_cast<nmc::DkBaseViewPort*>(parent()); if (viewport) { viewport->unsetCursor(); if (event->buttons() == Qt::LeftButton && parent()) { if (QRectF(QPointF(), viewport->getImage().size()).contains(mapToImage(event->pos()))) { if (isOutside) { paths.append(QPainterPath()); paths.last().moveTo(mapToImage(event->pos())); pathsPen.append(pen); } else { QPointF point = mapToImage(event->pos()); paths.last().lineTo(point); update(); } isOutside = false; } else isOutside = true; } } } //QWidget::mouseMoveEvent(event); // do not propagate mouse event }
RGBAPixel* Sphere::mapToTexture(Point3D& pt){ double unitX = (pt.x-c.x) / r; double unitY = (pt.y-c.y) / r; double unitZ = (pt.z-c.z) / r; double theta = acos(unitY); double phi = atan(unitX/unitZ); double x = phi / (2*Maths::PI); double y = 1-(theta/Maths::PI); double u = (x+1)/2; double v = (y+1)/2; RGBAPixel* pixel = mapToImage(u,v); return pixel; }