示例#1
0
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
}
示例#2
0
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
}
示例#3
0
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;
}