Skip to content

Commit

Permalink
Removed post-drawing. Refs #13894
Browse files Browse the repository at this point in the history
  • Loading branch information
palvarezlopez committed Dec 19, 2023
1 parent 07386a2 commit 7af18ae
Show file tree
Hide file tree
Showing 17 changed files with 45 additions and 214 deletions.
151 changes: 13 additions & 138 deletions src/netedit/GNEViewNet.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1347,8 +1347,6 @@ GNEViewNet::doPaintGL(int mode, const Boundary& bound) {
myNet->getPathManager()->getPathDraw()->clearPathDraw();
// draw all GL elements
int hits = drawGLElements(bound);
// begin post drawing
myVisualizationSettings->postDrawing = true;
// force draw inspected and front elements (due parent/child lines)
if (!myVisualizationSettings->drawForRectangleSelection) {
// iterate over all inspected ACs
Expand All @@ -1375,10 +1373,6 @@ GNEViewNet::doPaintGL(int mode, const Boundary& bound) {
drawTemporalE1TLSLines();
// draw temporal lines between junctions in TLS Mode
drawTemporalJunctionTLSLines();
// draw dotted contours
drawOverDottedContour();
drawDeleteDottedContour();
drawSelectDottedContour();
// draw netedit attributes references
drawNeteditAttributesReferences();
// draw test circle
Expand All @@ -1395,8 +1389,6 @@ GNEViewNet::doPaintGL(int mode, const Boundary& bound) {
*/
// execute post drawing tasks
gPostDrawing.executePostDrawingTasks();
// end post drawing
myVisualizationSettings->postDrawing = false;
return hits;
}

Expand Down Expand Up @@ -1950,72 +1942,26 @@ GNEViewNet::drawTranslateFrontAttributeCarrier(const GNEAttributeCarrier* AC, do


bool
GNEViewNet::checkDrawOverContour(const GUIGlObject* GLObject) const {
// avoid draw in rectangle selection
if (myVisualizationSettings->drawForRectangleSelection) {
return false;
}
// check if element is under cursor
if (!gPostDrawing.isElementUnderCursor(GLObject)) {
return false;
}
// check if we're in post drawing
if (myVisualizationSettings->postDrawing) {
// in post-drawing, draw always
return true;
} else {
// check if set as markedElementDeleteContour
if ((gPostDrawing.markedElementOverContour == nullptr) ||
(GLObject->getType() > gPostDrawing.markedElementOverContour->getType())) {
gPostDrawing.markedElementOverContour = GLObject;
}
// we wan't to draw select contour in this moment
return false;
}
}


bool
GNEViewNet::checkDrawDeleteContour(const GUIGlObject* GLObject, const bool isSelected) const {
// check if elemet is blocked
if (myLockManager.isObjectLocked(GLObject->getType(), isSelected)) {
return false;
}
// check if element is under cursor
if (!gPostDrawing.isElementUnderCursor(GLObject)) {
return false;
}
return true;
}


bool
GNEViewNet::checkDrawSelectContour(const GUIGlObject* GLObject, const bool isSelected) const {
// avoid draw in position/rectangle selection
if (myVisualizationSettings->drawForRectangleSelection) {
return false;
}
GNEViewNet::checkOverLockedElement(const GUIGlObject* GLObject, const bool isSelected) const {
// check if elemet is blocked
if (myLockManager.isObjectLocked(GLObject->getType(), isSelected)) {
return false;
}
// get front GLObject
const auto glObjectFront = myObjectsUnderCursor.getGUIGlObjectFront();
// check if element is under cursor
if (!gPostDrawing.isElementUnderCursor(GLObject)) {
return false;
}
// check if we're in post drawing
if (myVisualizationSettings->postDrawing) {
// in post-drawing, draw always
return true;
} else {
// check if set as markedElementSelectContour
if ((gPostDrawing.markedElementSelectContour == nullptr) ||
(GLObject->getType() > gPostDrawing.markedElementSelectContour->getType())) {
gPostDrawing.markedElementSelectContour = GLObject;
if (glObjectFront) {
if (glObjectFront == GLObject) {
return true;
} else if (glObjectFront->getType() == GLObject->getType()) {
for (const auto &glObjectUnderCursor : myObjectsUnderCursor.getClickedGLObjects()) {
if (glObjectUnderCursor == GLObject){
return true;
}
}
}
// we wan't to draw select contour in this moment
return false;
}
return false;
}


Expand Down Expand Up @@ -5529,77 +5475,6 @@ GNEViewNet::drawTemporalJunctionTLSLines() const {
}


void
GNEViewNet::drawOverDottedContour() {
// first check if there is a markedElementOverContour
if (gPostDrawing.markedElementOverContour) {
// check if is a basic GLObject or a path element
auto pathElement = myNet->getPathManager()->getPathElement(gPostDrawing.markedElementOverContour);
if (pathElement != nullptr) {
myNet->getPathManager()->forceDrawPath(*myVisualizationSettings, pathElement);
} else {
gPostDrawing.markedElementOverContour->drawGL(*myVisualizationSettings);
}
}
}


void
GNEViewNet::drawDeleteDottedContour() {
// first check if there is a markedElementDeleteContour
if (gPostDrawing.markedElementDeleteContour) {
// check if is a basic GLObject or a path element
auto pathElement = myNet->getPathManager()->getPathElement(gPostDrawing.markedElementDeleteContour);
if (pathElement != nullptr) {
myNet->getPathManager()->forceDrawPath(*myVisualizationSettings, pathElement);
} else {
gPostDrawing.markedElementDeleteContour->drawGL(*myVisualizationSettings);
}
// iterate over all objects under cursor
for (const auto& objectUnderCursor : gPostDrawing.getElementsUnderCursor()) {
// compare objectUnderCursor and markedElementsDeleteContour types
if (objectUnderCursor->getType() == gPostDrawing.markedElementDeleteContour->getType()) {
// check if is a normalGLObject or a path element
pathElement = myNet->getPathManager()->getPathElement(objectUnderCursor);
if (pathElement != nullptr) {
myNet->getPathManager()->forceDrawPath(*myVisualizationSettings, pathElement);
} else {
objectUnderCursor->drawGL(*myVisualizationSettings);
}
}
}
}
}


void
GNEViewNet::drawSelectDottedContour() {
// first check if there is a markedElementSelectContour
if (gPostDrawing.markedElementSelectContour) {
// check if is a basic GLObject or a path element
auto pathElement = myNet->getPathManager()->getPathElement(gPostDrawing.markedElementSelectContour);
if (pathElement != nullptr) {
myNet->getPathManager()->forceDrawPath(*myVisualizationSettings, pathElement);
} else {
gPostDrawing.markedElementSelectContour->drawGL(*myVisualizationSettings);
}
// iterate over all objects under cursor
for (const auto& objectUnderCursor : gPostDrawing.getElementsUnderCursor()) {
// compare objectUnderCursor and markedElementsSelectContour types
if (objectUnderCursor->getType() == gPostDrawing.markedElementSelectContour->getType()) {
// check if is a normalGLObject or a path element
pathElement = myNet->getPathManager()->getPathElement(objectUnderCursor);
if (pathElement != nullptr) {
myNet->getPathManager()->forceDrawPath(*myVisualizationSettings, pathElement);
} else {
objectUnderCursor->drawGL(*myVisualizationSettings);
}
}
}
}
}


void
GNEViewNet::drawNeteditAttributesReferences() {
if (myEditModes.isCurrentSupermodeNetwork() && (myEditModes.networkEditMode == NetworkEditMode::NETWORK_ADDITIONAL)) {
Expand Down
19 changes: 2 additions & 17 deletions src/netedit/GNEViewNet.h
Original file line number Diff line number Diff line change
Expand Up @@ -525,14 +525,8 @@ class GNEViewNet : public GUISUMOAbstractView {
/// @brief draw front attributeCarrier
void drawTranslateFrontAttributeCarrier(const GNEAttributeCarrier* AC, double typeOrLayer, const double extraOffset = 0);

/// @brief check if draw over contour
bool checkDrawOverContour(const GUIGlObject* GLObject) const;

/// @brief check if draw delete contour
bool checkDrawDeleteContour(const GUIGlObject* GLObject, const bool isSelected) const;

/// @brief check if draw select contour
bool checkDrawSelectContour(const GUIGlObject* GLObject, const bool isSelected) const;
/// @brief check if given element is locked (used for drawing select and delete contour)
bool checkOverLockedElement(const GUIGlObject* GLObject, const bool isSelected) const;

/// @brief get last created route
GNEDemandElement* getLastCreatedRoute() const;
Expand Down Expand Up @@ -808,15 +802,6 @@ class GNEViewNet : public GUISUMOAbstractView {
/// @brief draw temporal Junction TLS Lines
void drawTemporalJunctionTLSLines() const;

/// @brief draw over dotted contours
void drawOverDottedContour();

/// @brief draw delete dotted contours
void drawDeleteDottedContour();

/// @brief draw select dotted contours
void drawSelectDottedContour();

/// @brief draw circle in testing mode (needed for grid)
void drawNeteditAttributesReferences();

Expand Down
14 changes: 7 additions & 7 deletions src/netedit/elements/additional/GNEAdditional.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -291,32 +291,32 @@ GNEAdditional::checkDrawOverContour() const {
const auto& vehicleTemplate = vehicleFrame->getVehicleTagSelector()->getCurrentTemplateAC();
// check if vehicle can be placed over from-to TAZs
if (vehicleTemplate && vehicleTemplate->getTagProperty().vehicleTAZs()) {
return myNet->getViewNet()->checkDrawOverContour(this);
return myNet->getViewNet()->getObjectsUnderCursor().getGUIGlObjectFront() == this;
}
} else if (modes.isCurrentSupermodeDemand()) {
// check if we're in person or personPlan modes
if (((modes.demandEditMode == DemandEditMode::DEMAND_PERSON) && personFramePlanSelector->markTAZs()) ||
((modes.demandEditMode == DemandEditMode::DEMAND_PERSONPLAN) && personPlanFramePlanSelector->markTAZs())) {
return myNet->getViewNet()->checkDrawOverContour(this);
return myNet->getViewNet()->getObjectsUnderCursor().getGUIGlObjectFront() == this;
}
}
} else if ((myTagProperty.getTag() == SUMO_TAG_BUS_STOP) && modes.isCurrentSupermodeDemand()) {
// check if we're in person or personPlan modes
if (((modes.demandEditMode == DemandEditMode::DEMAND_PERSON) && personFramePlanSelector->markBusStops()) ||
((modes.demandEditMode == DemandEditMode::DEMAND_PERSONPLAN) && personPlanFramePlanSelector->markBusStops())) {
return myNet->getViewNet()->checkDrawOverContour(this);
return myNet->getViewNet()->getObjectsUnderCursor().getGUIGlObjectFront() == this;
}
} else if ((myTagProperty.getTag() == SUMO_TAG_TRAIN_STOP) && modes.isCurrentSupermodeDemand()) {
// check if we're in person or personPlan modes
if (((modes.demandEditMode == DemandEditMode::DEMAND_PERSON) && personFramePlanSelector->markTrainStops()) ||
((modes.demandEditMode == DemandEditMode::DEMAND_PERSONPLAN) && personPlanFramePlanSelector->markTrainStops())) {
return myNet->getViewNet()->checkDrawOverContour(this);
return myNet->getViewNet()->getObjectsUnderCursor().getGUIGlObjectFront() == this;
}
} else if ((myTagProperty.getTag() == SUMO_TAG_CONTAINER_STOP) && modes.isCurrentSupermodeDemand()) {
// check if we're in container or containerPlan modes
if (((modes.demandEditMode == DemandEditMode::DEMAND_CONTAINER) && containerFramePlanSelector->markContainerStops()) ||
((modes.demandEditMode == DemandEditMode::DEMAND_CONTAINERPLAN) && containerPlanFramePlanSelector->markContainerStops())) {
return myNet->getViewNet()->checkDrawOverContour(this);
return myNet->getViewNet()->getObjectsUnderCursor().getGUIGlObjectFront() == this;
}
}
return false;
Expand All @@ -329,7 +329,7 @@ GNEAdditional::checkDrawDeleteContour() const {
const auto& editModes = myNet->getViewNet()->getEditModes();
// check if we're in delete mode
if (editModes.isCurrentSupermodeNetwork() && (editModes.networkEditMode == NetworkEditMode::NETWORK_DELETE)) {
return myNet->getViewNet()->checkDrawDeleteContour(this, mySelected);
return myNet->getViewNet()->checkOverLockedElement(this, mySelected);
} else {
return false;
}
Expand All @@ -342,7 +342,7 @@ GNEAdditional::checkDrawSelectContour() const {
const auto& editModes = myNet->getViewNet()->getEditModes();
// check if we're in select mode
if (editModes.isCurrentSupermodeNetwork() && (editModes.networkEditMode == NetworkEditMode::NETWORK_SELECT)) {
return myNet->getViewNet()->checkDrawSelectContour(this, mySelected);
return myNet->getViewNet()->checkOverLockedElement(this, mySelected);
} else {
return false;
}
Expand Down
4 changes: 2 additions & 2 deletions src/netedit/elements/data/GNEGenericData.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ GNEGenericData::checkDrawDeleteContour() const {
const auto& editModes = myNet->getViewNet()->getEditModes();
// check if we're in delete mode
if (editModes.isCurrentSupermodeData() && (editModes.dataEditMode == DataEditMode::DATA_DELETE)) {
return myNet->getViewNet()->checkDrawDeleteContour(this, mySelected);
return myNet->getViewNet()->checkOverLockedElement(this, mySelected);
} else {
return false;
}
Expand All @@ -141,7 +141,7 @@ GNEGenericData::checkDrawSelectContour() const {
const auto& editModes = myNet->getViewNet()->getEditModes();
// check if we're in select mode
if (editModes.isCurrentSupermodeData() && (editModes.dataEditMode == DataEditMode::DATA_SELECT)) {
return myNet->getViewNet()->checkDrawSelectContour(this, mySelected);
return myNet->getViewNet()->checkOverLockedElement(this, mySelected);
} else {
return false;
}
Expand Down
1 change: 0 additions & 1 deletion src/netedit/elements/data/GNETAZRelData.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -275,7 +275,6 @@ GNETAZRelData::drawGL(const GUIVisualizationSettings& s) const {
const double width = onlyDrawContour ? 0.1 : 0.5 * s.tazRelWidthExaggeration;
if (width != myLastWidth) {
myLastWidth = width;
gPostDrawing.markGLObjectToUpdate(const_cast<GNETAZRelData*>(this));
}
// draw geometry
if (onlyDrawContour) {
Expand Down
8 changes: 4 additions & 4 deletions src/netedit/elements/demand/GNEDemandElement.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -188,15 +188,15 @@ GNEDemandElement::checkDrawOverContour() const {
const auto& vehicleTemplate = vehicleFrame->getVehicleTagSelector()->getCurrentTemplateAC();
// check if vehicle can be placed over route
if (vehicleTemplate && vehicleTemplate->getTagProperty().vehicleRoute()) {
return myNet->getViewNet()->checkDrawOverContour(this);
return myNet->getViewNet()->getObjectsUnderCursor().getGUIGlObjectFront() == this;
}
} else if (modes.isCurrentSupermodeDemand()) {
// check if we're in person or personPlan modes
if (((modes.demandEditMode == DemandEditMode::DEMAND_PERSON) && personFramePlanSelector->markRoutes()) ||
((modes.demandEditMode == DemandEditMode::DEMAND_PERSONPLAN) && personPlanFramePlanSelector->markRoutes()) ||
((modes.demandEditMode == DemandEditMode::DEMAND_CONTAINER) && containerFramePlanSelector->markRoutes()) ||
((modes.demandEditMode == DemandEditMode::DEMAND_CONTAINERPLAN) && containerPlanFramePlanSelector->markRoutes())) {
return myNet->getViewNet()->checkDrawOverContour(this);
return myNet->getViewNet()->getObjectsUnderCursor().getGUIGlObjectFront() == this;
}
}
}
Expand All @@ -210,7 +210,7 @@ GNEDemandElement::checkDrawDeleteContour() const {
const auto& editModes = myNet->getViewNet()->getEditModes();
// check if we're in delete mode
if (editModes.isCurrentSupermodeDemand() && (editModes.demandEditMode == DemandEditMode::DEMAND_DELETE)) {
return myNet->getViewNet()->checkDrawDeleteContour(this, mySelected);
return myNet->getViewNet()->checkOverLockedElement(this, mySelected);
} else {
return false;
}
Expand All @@ -223,7 +223,7 @@ GNEDemandElement::checkDrawSelectContour() const {
const auto& editModes = myNet->getViewNet()->getEditModes();
// check if we're in select mode
if (editModes.isCurrentSupermodeDemand() && (editModes.demandEditMode == DemandEditMode::DEMAND_SELECT)) {
return myNet->getViewNet()->checkDrawSelectContour(this, mySelected);
return myNet->getViewNet()->checkOverLockedElement(this, mySelected);
} else {
return false;
}
Expand Down
4 changes: 2 additions & 2 deletions src/netedit/elements/network/GNEConnection.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -179,7 +179,7 @@ GNEConnection::checkDrawDeleteContour() const {
const auto& editModes = myNet->getViewNet()->getEditModes();
// check if we're in delete mode
if (editModes.isCurrentSupermodeNetwork() && (editModes.networkEditMode == NetworkEditMode::NETWORK_DELETE)) {
return myNet->getViewNet()->checkDrawDeleteContour(this, mySelected);
return myNet->getViewNet()->checkOverLockedElement(this, mySelected);
} else {
return false;
}
Expand All @@ -192,7 +192,7 @@ GNEConnection::checkDrawSelectContour() const {
const auto& editModes = myNet->getViewNet()->getEditModes();
// check if we're in select mode
if (editModes.isCurrentSupermodeNetwork() && (editModes.networkEditMode == NetworkEditMode::NETWORK_SELECT)) {
return myNet->getViewNet()->checkDrawSelectContour(this, mySelected);
return myNet->getViewNet()->checkOverLockedElement(this, mySelected);
} else {
return false;
}
Expand Down
4 changes: 2 additions & 2 deletions src/netedit/elements/network/GNECrossing.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ GNECrossing::checkDrawDeleteContour() const {
const auto& editModes = myNet->getViewNet()->getEditModes();
// check if we're in select mode
if (editModes.isCurrentSupermodeNetwork() && (editModes.networkEditMode == NetworkEditMode::NETWORK_SELECT)) {
return myNet->getViewNet()->checkDrawDeleteContour(this, mySelected);
return myNet->getViewNet()->checkOverLockedElement(this, mySelected);
} else {
return false;
}
Expand All @@ -140,7 +140,7 @@ GNECrossing::checkDrawSelectContour() const {
const auto& editModes = myNet->getViewNet()->getEditModes();
// check if we're in select mode
if (editModes.isCurrentSupermodeNetwork() && (editModes.networkEditMode == NetworkEditMode::NETWORK_SELECT)) {
return myNet->getViewNet()->checkDrawSelectContour(this, mySelected);
return myNet->getViewNet()->checkOverLockedElement(this, mySelected);
} else {
return false;
}
Expand Down

0 comments on commit 7af18ae

Please sign in to comment.