Skip to content

Commit

Permalink
Updated GNEContour. Refs #13894
Browse files Browse the repository at this point in the history
  • Loading branch information
palvarezlopez committed Dec 19, 2023
1 parent 1ef143e commit 07386a2
Show file tree
Hide file tree
Showing 46 changed files with 351 additions and 319 deletions.
45 changes: 23 additions & 22 deletions src/netedit/elements/GNEContour.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -75,84 +75,84 @@ GNEContour::reset() const {


void
GNEContour::drawDottedContourClosed(const GUIVisualizationSettings& s, const PositionVector& shape,
const double scale, const bool addOffset, const double lineWidth) const {
GNEContour::drawDottedContourClosed(const GUIVisualizationSettings& s, GUIVisualizationSettings::DetailLevel d,
const PositionVector& shape, const double scale, const bool addOffset, const double lineWidth) const {
// first build dotted contour
buildDottedContourClosed(s, shape, scale);
// check if mouse is within geometry (only in rectangle selection mode)
if (s.drawForObjectUnderCursor) {
gPostDrawing.positionWithinShape(myAC->getGUIGlObject(), myAC->getNet()->getViewNet()->getPositionInformation(), myCachedShapes->at(0));
} else {
drawDottedContours(s, s.drawDottedContour(scale), addOffset, lineWidth);
drawDottedContours(s, d, scale, addOffset, lineWidth);
}
}


void
GNEContour::drawDottedContourExtruded(const GUIVisualizationSettings& s, const PositionVector& shape,
const double extrusionWidth, const double scale, const bool drawFirstExtrem,
const bool drawLastExtrem, const double lineWidth) const {
GNEContour::drawDottedContourExtruded(const GUIVisualizationSettings& s, GUIVisualizationSettings::DetailLevel d,
const PositionVector& shape, const double extrusionWidth, const double scale, const bool drawFirstExtrem,
const bool drawLastExtrem, const double lineWidth) const {
// first build dotted contour
buildDottedContourExtruded(s, shape, extrusionWidth, scale, drawFirstExtrem, drawLastExtrem);
// check if mouse is within two lines (only in rectangle selection mode)
if (s.drawForObjectUnderCursor) {
gPostDrawing.positionWithinShape(myAC->getGUIGlObject(), myAC->getNet()->getViewNet()->getPositionInformation(), myCachedShapes->at(1));
} else {
drawDottedContours(s, scale, true, lineWidth);
drawDottedContours(s, d, scale, true, lineWidth);
}
}


void
GNEContour::drawDottedContourRectangle(const GUIVisualizationSettings& s, const Position& pos, const double width,
const double height, const double offsetX, const double offsetY, const double rot,
const double scale, const double lineWidth) const {
GNEContour::drawDottedContourRectangle(const GUIVisualizationSettings& s, GUIVisualizationSettings::DetailLevel d,
const Position& pos, const double width, const double height, const double offsetX, const double offsetY,
const double rot, const double scale, const double lineWidth) const {
// first build dotted contour
buildDottedContourRectangle(s, pos, width, height, offsetX, offsetY, rot, scale);
// check if mouse is within geometry (only in rectangle selection mode)
if (s.drawForObjectUnderCursor) {
gPostDrawing.positionWithinShape(myAC->getGUIGlObject(), myAC->getNet()->getViewNet()->getPositionInformation(), myCachedShapes->at(0));
} else {
drawDottedContours(s, scale, true, lineWidth);
drawDottedContours(s, d, scale, true, lineWidth);
}
}


void
GNEContour::drawDottedContourCircle(const GUIVisualizationSettings& s, const Position& pos, double radius,
const double scale, const double lineWidth) const {
GNEContour::drawDottedContourCircle(const GUIVisualizationSettings& s, GUIVisualizationSettings::DetailLevel d,
const Position& pos, double radius, const double scale, const double lineWidth) const {
// first build dotted contour
buildDottedContourCircle(s, pos, radius, scale);
// check if mouse is within geometry (only in rectangle selection mode)
if (s.drawForObjectUnderCursor) {
gPostDrawing.positionWithinCircle(myAC->getGUIGlObject(), myAC->getNet()->getViewNet()->getPositionInformation(), pos, (radius * scale));
} else {
drawDottedContours(s, scale, true, lineWidth);
drawDottedContours(s, d, scale, true, lineWidth);
}
}


void
GNEContour::drawDottedContourEdge(const GUIVisualizationSettings& s, const GNEEdge* edge, const bool drawFirstExtrem,
const bool drawLastExtrem, const double lineWidth) const {
GNEContour::drawDottedContourEdge(const GUIVisualizationSettings& s, GUIVisualizationSettings::DetailLevel d,
const GNEEdge* edge, const bool drawFirstExtrem, const bool drawLastExtrem, const double lineWidth) const {
// first build dotted contour
buildDottedContourEdge(s, edge, drawFirstExtrem, drawLastExtrem);
// check if mouse is within two lines (only in rectangle selection mode)
if (s.drawForObjectUnderCursor) {
gPostDrawing.positionWithinShape(myAC->getGUIGlObject(), myAC->getNet()->getViewNet()->getPositionInformation(), myCachedShapes->at(2));
} else {
drawDottedContours(s, 1, true, lineWidth);
drawDottedContours(s, d, 1, true, lineWidth);
}
}


void
GNEContour::drawDottedContourEdges(const GUIVisualizationSettings& s, const GNEEdge* fromEdge, const GNEEdge* toEdge,
const double lineWidth) const {
GNEContour::drawDottedContourEdges(const GUIVisualizationSettings& s, GUIVisualizationSettings::DetailLevel d,
const GNEEdge* fromEdge, const GNEEdge* toEdge, const double lineWidth) const {
// first build dotted contour (only in rectangle selection mode)
buildDottedContourEdges(s, fromEdge, toEdge);
// draw dotted contours
drawDottedContours(s, 1, true, lineWidth);
drawDottedContours(s, d, 1, true, lineWidth);
}


Expand Down Expand Up @@ -393,9 +393,10 @@ GNEContour::buildDottedContourEdges(const GUIVisualizationSettings& /*s*/,const


void
GNEContour::drawDottedContours(const GUIVisualizationSettings& s, const double scale, const bool addOffset, const double lineWidth) const {
GNEContour::drawDottedContours(const GUIVisualizationSettings& s, GUIVisualizationSettings::DetailLevel d,
const double scale, const bool addOffset, const double lineWidth) const {
// first check if draw dotted contour
if (s.drawDottedContour(scale)) {
if (!s.disableDottedContours && (d <= GUIVisualizationSettings::DetailLevel::Level2)) {
// basic contours
if (myAC->checkDrawFromContour()) {
drawDottedContour(s, GUIDottedGeometry::DottedContourType::FROM, addOffset, lineWidth);
Expand Down
33 changes: 18 additions & 15 deletions src/netedit/elements/GNEContour.h
Original file line number Diff line number Diff line change
Expand Up @@ -53,30 +53,32 @@ class GNEContour {
/// @{

/// @brief draw dotted contour (for closed shapes)
void drawDottedContourClosed(const GUIVisualizationSettings& s, const PositionVector& shape,
const double scale, const bool addOffset, const double lineWidth) const;
void drawDottedContourClosed(const GUIVisualizationSettings& s, GUIVisualizationSettings::DetailLevel d,
const PositionVector& shape, const double scale, const bool addOffset,
const double lineWidth) const;

/// @brief draw dotted contour extruded (used in elements formed by a central shape)
void drawDottedContourExtruded(const GUIVisualizationSettings& s, const PositionVector& shape,
const double extrusionWidth, const double scale, const bool drawFirstExtrem,
const bool drawLastExtrem, const double lineWidth) const;
void drawDottedContourExtruded(const GUIVisualizationSettings& s, GUIVisualizationSettings::DetailLevel d,
const PositionVector& shape, const double extrusionWidth, const double scale,
const bool drawFirstExtrem, const bool drawLastExtrem, const double lineWidth) const;

/// @brief draw dotted contour (for rectangled elements)
void drawDottedContourRectangle(const GUIVisualizationSettings& s, const Position& pos, const double width,
const double height, const double offsetX, const double offsetY, const double rot,
const double scale, const double lineWidth) const;
void drawDottedContourRectangle(const GUIVisualizationSettings& s, GUIVisualizationSettings::DetailLevel d,
const Position& pos, const double width, const double height, const double offsetX,
const double offsetY, const double rot, const double scale, const double lineWidth) const;

/// @brief draw dotted contour (circle)
void drawDottedContourCircle(const GUIVisualizationSettings& s, const Position& pos, double radius,
const double scale, const double lineWidth) const;
void drawDottedContourCircle(const GUIVisualizationSettings& s, GUIVisualizationSettings::DetailLevel d,
const Position& pos, double radius, const double scale, const double lineWidth) const;

/// @brief draw dotted contour edge
void drawDottedContourEdge(const GUIVisualizationSettings& s, const GNEEdge* edge, const bool drawFirstExtrem,
const bool drawLastExtrem, const double lineWidth) const;
void drawDottedContourEdge(const GUIVisualizationSettings& s, GUIVisualizationSettings::DetailLevel d,
const GNEEdge* edge, const bool drawFirstExtrem, const bool drawLastExtrem,
const double lineWidth) const;

/// @brief draw dotted contour between two edges
void drawDottedContourEdges(const GUIVisualizationSettings& s, const GNEEdge* fromEdge, const GNEEdge* toEdge,
const double lineWidth) const;
void drawDottedContourEdges(const GUIVisualizationSettings& s, GUIVisualizationSettings::DetailLevel d,
const GNEEdge* fromEdge, const GNEEdge* toEdge, const double lineWidth) const;

/// @}

Expand Down Expand Up @@ -128,7 +130,8 @@ class GNEContour {
void buildDottedContourEdges(const GUIVisualizationSettings& s, const GNEEdge* fromEdge, const GNEEdge* toEdge) const;

/// @brief draw dotted contours
void drawDottedContours(const GUIVisualizationSettings& s, const double scale, const bool addOffset, const double lineWidth) const;
void drawDottedContours(const GUIVisualizationSettings& s, GUIVisualizationSettings::DetailLevel d,
const double scale, const bool addOffset, const double lineWidth) const;

/// @brief draw dotted contour
void drawDottedContour(const GUIVisualizationSettings& s, GUIDottedGeometry::DottedContourType type, const bool addOffset, const double lineWidth) const;
Expand Down
4 changes: 3 additions & 1 deletion src/netedit/elements/additional/GNEAccess.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -208,6 +208,8 @@ GNEAccess::drawGL(const GUIVisualizationSettings& s) const {
const double distanceSquared = getPositionInView().distanceSquaredTo2D(myNet->getViewNet()->getPositionInformation());
// declare radius
const double radius = (distanceSquared <= 1) ? 1 : 0.5;
// get detail level
const auto d = s.getDetailLevel(1);
// draw geometry only if we'rent in drawForObjectUnderCursor mode
if (!s.drawForObjectUnderCursor) {
// get color
Expand Down Expand Up @@ -245,7 +247,7 @@ GNEAccess::drawGL(const GUIVisualizationSettings& s) const {
GNEViewNetHelper::LockIcon::drawLockIcon(this, getType(), myAdditionalGeometry.getShape().front(), accessExaggeration, 0.3);
}
// draw dotted contour
myContour.drawDottedContourCircle(s, myAdditionalGeometry.getShape().front(), radius, accessExaggeration,
myContour.drawDottedContourCircle(s, d, myAdditionalGeometry.getShape().front(), radius, accessExaggeration,
s.dottedContourSettings.segmentWidthSmall);
}
}
Expand Down
16 changes: 10 additions & 6 deletions src/netedit/elements/additional/GNEAdditional.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -681,12 +681,14 @@ GNEAdditional::calculatePerpendicularLine(const double endLaneposition) {

void
GNEAdditional::drawSquaredAdditional(const GUIVisualizationSettings& s, const Position& pos, const double size, GUITexture texture, GUITexture selectedTexture) const {
// draw boundaries
GLHelper::drawBoundary(s, getCenteringBoundary());
// Obtain drawing exaggeration
const double exaggeration = getExaggeration(s);
// first check if additional has to be drawn
if (myNet->getViewNet()->getDataViewOptions().showAdditionals()) {
// draw boundaries
GLHelper::drawBoundary(s, getCenteringBoundary());
// Obtain drawing exaggeration
const double exaggeration = getExaggeration(s);
// get detail level
const auto d = s.getDetailLevel(exaggeration);
// draw geometry only if we'rent in drawForObjectUnderCursor mode
if (!s.drawForObjectUnderCursor) {
// Start drawing adding an gl identificator
Expand Down Expand Up @@ -721,7 +723,7 @@ GNEAdditional::drawSquaredAdditional(const GUIVisualizationSettings& s, const Po
drawAdditionalName(s);
}
// draw squared shape
myContour.drawDottedContourRectangle(s, pos, size, size, 0, 0, 0, exaggeration,
myContour.drawDottedContourRectangle(s, d, pos, size, size, 0, 0, 0, exaggeration,
s.dottedContourSettings.segmentWidth);
}
}
Expand All @@ -734,6 +736,8 @@ GNEAdditional::drawListedAdditional(const GUIVisualizationSettings& s, const Pos
GLHelper::drawBoundary(s, getCenteringBoundary());
// first check if additional has to be drawn
if (myNet->getViewNet()->getDataViewOptions().showAdditionals()) {
// get detail level
const auto d = s.getDetailLevel(1);
// declare offsets
const double lineOffset = 0.1875;
const double baseOffsetX = 6.25;
Expand Down Expand Up @@ -824,7 +828,7 @@ GNEAdditional::drawListedAdditional(const GUIVisualizationSettings& s, const Pos
}
}
// draw squared shape
myContour.drawDottedContourRectangle(s, signPosition, 0.56, 2.75, 0, -2.3, 0, 1,
myContour.drawDottedContourRectangle(s, d, signPosition, 0.56, 2.75, 0, -2.3, 0, 1,
s.dottedContourSettings.segmentWidth);
}
}
Expand Down
14 changes: 7 additions & 7 deletions src/netedit/elements/additional/GNEBusStop.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -126,10 +126,10 @@ GNEBusStop::drawGL(const GUIVisualizationSettings& s) const {
if (myNet->getViewNet()->getDataViewOptions().showAdditionals()) {
// get width
const double stopWidth = (myTagProperty.getTag() == SUMO_TAG_BUS_STOP) ? s.stoppingPlaceSettings.busStopWidth : s.stoppingPlaceSettings.trainStopWidth;
// get detail level
const auto d = s.getDetailLevel(busStopExaggeration);
// draw geometry only if we'rent in drawForObjectUnderCursor mode
if (!s.drawForObjectUnderCursor) {
// get detail level
const auto detailLevel = s.getDetailLevel(busStopExaggeration);
// declare colors
RGBColor baseColor, signColor;
// set colors
Expand Down Expand Up @@ -162,15 +162,15 @@ GNEBusStop::drawGL(const GUIVisualizationSettings& s) const {
// Draw the area using shape, shapeRotations, shapeLengths and value of exaggeration
GUIGeometry::drawGeometry(s, myNet->getViewNet()->getPositionInformation(), myAdditionalGeometry, stopWidth * MIN2(1.0, busStopExaggeration));
// draw lines
drawLines(s, detailLevel, myLines, baseColor);
drawLines(s, d, myLines, baseColor);
// draw sign
drawSign(s, detailLevel, busStopExaggeration, baseColor, signColor, (myTagProperty.getTag() == SUMO_TAG_BUS_STOP) ? "H" : "T");
drawSign(s, d, busStopExaggeration, baseColor, signColor, (myTagProperty.getTag() == SUMO_TAG_BUS_STOP) ? "H" : "T");
// draw geometry points
if (myStartPosition != INVALID_DOUBLE) {
drawLeftGeometryPoint(s, detailLevel, myAdditionalGeometry.getShape().front(), myAdditionalGeometry.getShapeRotations().front(), baseColor);
drawLeftGeometryPoint(s, d, myAdditionalGeometry.getShape().front(), myAdditionalGeometry.getShapeRotations().front(), baseColor);
}
if (myEndPosition != INVALID_DOUBLE) {
drawRightGeometryPoint(s, detailLevel, myAdditionalGeometry.getShape().back(), myAdditionalGeometry.getShapeRotations().back(), baseColor);
drawRightGeometryPoint(s, d, myAdditionalGeometry.getShape().back(), myAdditionalGeometry.getShapeRotations().back(), baseColor);
}
// pop layer matrix
GLHelper::popMatrix();
Expand All @@ -186,7 +186,7 @@ GNEBusStop::drawGL(const GUIVisualizationSettings& s) const {
// draw stoppingPlace children
drawStoppingPlaceChildren(s);
// draw dotted geometry (don't exaggerate contour)
myContour.drawDottedContourExtruded(s, myAdditionalGeometry.getShape(), stopWidth, 1, true, true,
myContour.drawDottedContourExtruded(s, d, myAdditionalGeometry.getShape(), stopWidth, 1, true, true,
s.dottedContourSettings.segmentWidth);
}
}
Expand Down
8 changes: 4 additions & 4 deletions src/netedit/elements/additional/GNECalibrator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -244,12 +244,12 @@ GNECalibrator::drawGL(const GUIVisualizationSettings& s) const {
// first check if additional has to be drawn
if (myNet->getViewNet()->getDataViewOptions().showAdditionals()) {
// get detail level
const auto detailLevel = s.getDetailLevel(exaggeration);
const auto d = s.getDetailLevel(exaggeration);
// draw first symbol
drawCalibratorSymbol(s, detailLevel, exaggeration, myAdditionalGeometry.getShape().front(), myAdditionalGeometry.getShapeRotations().front() + 90);
drawCalibratorSymbol(s, d, exaggeration, myAdditionalGeometry.getShape().front(), myAdditionalGeometry.getShapeRotations().front() + 90);
// continue with the other symbols
for (const auto& edgeCalibratorGeometry : myEdgeCalibratorGeometries) {
drawCalibratorSymbol(s, detailLevel, exaggeration, edgeCalibratorGeometry.getShape().front(), edgeCalibratorGeometry.getShapeRotations().front() + 90);
drawCalibratorSymbol(s, d, exaggeration, edgeCalibratorGeometry.getShape().front(), edgeCalibratorGeometry.getShapeRotations().front() + 90);
}
// draw additional ID
drawAdditionalID(s);
Expand Down Expand Up @@ -483,7 +483,7 @@ GNECalibrator::drawCalibratorSymbol(const GUIVisualizationSettings& s, GUIVisual
GLHelper::popName();
}
// draw dotted contour
myContour.drawDottedContourRectangle(s, pos, s.additionalSettings.calibratorWidth, s.additionalSettings.calibratorHeight * 0.5, 0,
myContour.drawDottedContourRectangle(s, d, pos, s.additionalSettings.calibratorWidth, s.additionalSettings.calibratorHeight * 0.5, 0,
s.additionalSettings.calibratorHeight * 0.5, rot, exaggeration, s.dottedContourSettings.segmentWidth);
}

Expand Down

0 comments on commit 07386a2

Please sign in to comment.