void RS_ActionSelectWindow::mouseMoveEvent(QMouseEvent* e) { snapFree(e); drawSnapper(); if (getStatus()==SetCorner2 && v1.valid) { v2 = snapFree(e); deletePreview(); RS_Pen pen_f(RS_Color(50,50,255,40), RS2::Width00, RS2::SolidLine); RS_OverlayBox* ob=new RS_OverlayBox(preview, RS_OverlayBoxData(v1, v2)); ob->setPen(pen_f); preview->addEntity(ob); //RLZ: not needed overlay have contour /* RS_Pen pen(RS_Color(218,105,24), RS2::Width00, RS2::SolidLine); // TODO change to a rs_box sort of entity RS_Line* e=new RS_Line(preview, RS_LineData(RS_Vector(v1.x, v1.y), RS_Vector(v2.x, v1.y))); e->setPen(pen); preview->addEntity(e); e=new RS_Line(preview, RS_LineData(RS_Vector(v2.x, v1.y), RS_Vector(v2.x, v2.y))); e->setPen(pen); preview->addEntity(e); e=new RS_Line(preview, RS_LineData(RS_Vector(v2.x, v2.y), RS_Vector(v1.x, v2.y))); e->setPen(pen); preview->addEntity(e); e=new RS_Line(preview, RS_LineData(RS_Vector(v1.x, v2.y), RS_Vector(v1.x, v1.y))); e->setPen(pen); preview->addEntity(e);*/ drawPreview(); } }
void RS_ActionOrder::mouseMoveEvent(QMouseEvent* e) { RS_DEBUG->print("RS_ActionOrder::mouseMoveEvent begin"); switch (getStatus()) { case ChooseEntity: snapFree(e); break; default: break; } RS_DEBUG->print("RS_ActionOrder::mouseMoveEvent end"); }
void RS_ActionSelectWindow::mouseReleaseEvent(QMouseEvent* e) { RS_DEBUG->print("RS_ActionSelectWindow::mouseReleaseEvent()"); if (e->button()==Qt::LeftButton) { if (getStatus()==SetCorner2) { v2 = snapFree(e); trigger(); } } else if (e->button()==Qt::RightButton) { if (getStatus()==SetCorner2) { deletePreview(); } init(getStatus()-1); } }
void RS_ActionPolylineEquidistant::mouseReleaseEvent(QMouseEvent* e) { if (e->button()==Qt::LeftButton) { switch (getStatus()) { case ChooseEntity: originalEntity = catchEntity(e); if (originalEntity==NULL) { RS_DIALOGFACTORY->commandMessage(tr("No Entity found.")); } else if (originalEntity->rtti()!=RS2::EntityPolyline) { RS_DIALOGFACTORY->commandMessage( tr("Entity must be a polyline.")); } else { targetPoint = snapFree(e); originalEntity->setHighlighted(true); graphicView->drawEntity(originalEntity); double d = graphicView->toGraphDX(snapRange)*0.9; RS_Entity* Segment = ((RS_Polyline*)originalEntity)->getNearestEntity( targetPoint, &d, RS2::ResolveNone); if (Segment->rtti() == RS2::EntityLine) { double ang = ((RS_Line*)Segment)->getAngle1(); double ang1 = ((RS_Line*)Segment)->getStartpoint().angleTo(RS_Vector(targetPoint)); if( ang > ang1 || ang + M_PI < ang1 ) bRightSide = true; } else { RS_Vector cen = ((RS_Arc*)Segment)->getCenter(); if (cen.distanceTo(targetPoint) > ((RS_Arc*)Segment)->getRadius() && ((RS_Arc*)Segment)->getBulge() > 0 ) bRightSide = true; } ////////////////////////////////////////2006/06/15 graphicView->redraw(); //////////////////////////////////////// trigger(); } break; default: break; } } else if (e->button()==Qt::RightButton) { deleteSnapper(); if (originalEntity!=NULL) { originalEntity->setHighlighted(false); graphicView->drawEntity(originalEntity); ////////////////////////////////////////2006/06/15 graphicView->redraw(); //////////////////////////////////////// } init(getStatus()-1); } }
void RS_ActionSelectWindow::mousePressEvent(QMouseEvent* e) { if (e->button()==Qt::LeftButton) { switch (getStatus()) { case SetCorner1: v1 = snapFree(e); setStatus(SetCorner2); break; default: break; } } RS_DEBUG->print("RS_ActionSelectWindow::mousePressEvent(): %f %f", v1.x, v1.y); }
/** * Snap to a coordinate in the drawing using the current snap mode. * * @param e A mouse event. * @return The coordinates of the point or an invalid vector. */ RS_Vector RS_Snapper::snapPoint(RS_MouseEvent* e) { RS_DEBUG->print("RS_Snapper::snapPoint"); deleteSnapper(); snapSpot = RS_Vector(false); if (e==NULL) { RS_DEBUG->print(RS_Debug::D_WARNING, "RS_Snapper::snapPoint: event is NULL"); return snapSpot; } RS_Vector mouseCoord = graphicView->toGraph(e->x(), e->y()); switch (snapMode) { case RS2::SnapFree: snapSpot = snapFree(mouseCoord); break; case RS2::SnapEndpoint: snapSpot = snapEndpoint(mouseCoord); break; case RS2::SnapGrid: snapSpot = snapGrid(mouseCoord); break; case RS2::SnapOnEntity: snapSpot = snapOnEntity(mouseCoord); break; case RS2::SnapCenter: snapSpot = snapCenter(mouseCoord); break; case RS2::SnapMiddle: snapSpot = snapMiddle(mouseCoord); break; case RS2::SnapDist: snapSpot = snapDist(mouseCoord); break; case RS2::SnapIntersection: snapSpot = snapIntersection(mouseCoord); break; default: break; } // handle snap restrictions that can be activated in addition // to the ones above: switch (snapRes) { case RS2::RestrictOrthogonal: snapCoord = restrictOrthogonal(snapSpot); break; case RS2::RestrictHorizontal: snapCoord = restrictHorizontal(snapSpot); break; case RS2::RestrictVertical: snapCoord = restrictVertical(snapSpot); break; default: case RS2::RestrictNothing: snapCoord = snapSpot; break; } drawSnapper(); if (RS_DIALOGFACTORY!=NULL) { RS_DIALOGFACTORY->updateCoordinateWidget(snapCoord, snapCoord - graphicView->getRelativeZero()); } RS_DEBUG->print("RS_Snapper::snapPoint: OK"); return snapCoord; }