Skip to content

Commit

Permalink
Updated additional elements. Refs #13894
Browse files Browse the repository at this point in the history
  • Loading branch information
palvarezlopez committed Dec 19, 2023
1 parent a2eaa1d commit 16f72cf
Show file tree
Hide file tree
Showing 24 changed files with 361 additions and 321 deletions.
71 changes: 35 additions & 36 deletions src/netedit/elements/additional/GNEAdditional.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1043,28 +1043,28 @@ GNEAdditional::drawParentChildLines(const GUIVisualizationSettings& s, const RGB


void
GNEAdditional::drawUpGeometryPoint(const GUIVisualizationSettings& s, const Position& pos, const double rot,
const RGBColor& baseColor, const bool ignoreShift) const {
drawSemiCircleGeometryPoint(s, pos, rot, baseColor, -90, 90, ignoreShift);
GNEAdditional::drawUpGeometryPoint(const GUIVisualizationSettings& s, GUIVisualizationSettings::DetailLevel d, const Position& pos,
const double rot, const RGBColor& baseColor, const bool ignoreShift) const {
drawSemiCircleGeometryPoint(s, d, pos, rot, baseColor, -90, 90, ignoreShift);
}

void
GNEAdditional::drawDownGeometryPoint(const GUIVisualizationSettings& s, const Position& pos, const double rot,
const RGBColor& baseColor, const bool ignoreShift) const {
drawSemiCircleGeometryPoint(s, pos, rot, baseColor, 90, 270, ignoreShift);
GNEAdditional::drawDownGeometryPoint(const GUIVisualizationSettings& s, GUIVisualizationSettings::DetailLevel d, const Position& pos,
const double rot, const RGBColor& baseColor, const bool ignoreShift) const {
drawSemiCircleGeometryPoint(s, d, pos, rot, baseColor, 90, 270, ignoreShift);
}

void
GNEAdditional::drawLeftGeometryPoint(const GUIVisualizationSettings& s, const Position& pos, const double rot,
const RGBColor& baseColor, const bool ignoreShift) const {
drawSemiCircleGeometryPoint(s, pos, rot, baseColor, -90, 90, ignoreShift);
GNEAdditional::drawLeftGeometryPoint(const GUIVisualizationSettings& s, GUIVisualizationSettings::DetailLevel d, const Position& pos,
const double rot, const RGBColor& baseColor, const bool ignoreShift) const {
drawSemiCircleGeometryPoint(s, d, pos, rot, baseColor, -90, 90, ignoreShift);
}


void
GNEAdditional::drawRightGeometryPoint(const GUIVisualizationSettings& s, const Position& pos, const double rot,
const RGBColor& baseColor, const bool ignoreShift) const {
drawSemiCircleGeometryPoint(s, pos, rot, baseColor, 270, 90, ignoreShift);
GNEAdditional::drawRightGeometryPoint(const GUIVisualizationSettings& s, GUIVisualizationSettings::DetailLevel d, const Position& pos,
const double rot, const RGBColor& baseColor, const bool ignoreShift) const {
drawSemiCircleGeometryPoint(s, d, pos, rot, baseColor, 270, 90, ignoreShift);
}


Expand Down Expand Up @@ -1161,35 +1161,34 @@ GNEAdditional::checkChildAdditionalRestriction() const {


void
GNEAdditional::drawSemiCircleGeometryPoint(const GUIVisualizationSettings& s, const Position& pos, const double rot, const RGBColor& baseColor,
const double fromAngle, const double toAngle, const bool ignoreShift) const {
GNEAdditional::drawSemiCircleGeometryPoint(const GUIVisualizationSettings& s, GUIVisualizationSettings::DetailLevel d,
const Position& pos, const double rot, const RGBColor& baseColor, const double fromAngle, const double toAngle,
const bool ignoreShift) const {
// first check that we're in move mode and shift key is pressed
if (myNet->getViewNet()->getEditModes().isCurrentSupermodeNetwork() &&
(myNet->getViewNet()->getEditModes().networkEditMode == NetworkEditMode::NETWORK_MOVE) &&
(myNet->getViewNet()->getMouseButtonKeyPressed().shiftKeyPressed() || ignoreShift)) {
// push matrix
GLHelper::pushMatrix();
// translated to front
glTranslated(0, 0, 0.1);
// set color depending if check if mouse is over element
if (gPostDrawing.positionWithinCircle(this, myNet->getViewNet()->getPositionInformation(), pos,
s.neteditSizeSettings.additionalGeometryPointRadius)) {
GLHelper::setColor(RGBColor::ORANGE);
} else {
GLHelper::setColor(baseColor.changedBrightness(-50));
// check if mouse is over position
const bool mouseOverPos = gPostDrawing.positionWithinCircle(this, myNet->getViewNet()->getPositionInformation(), pos,
s.neteditSizeSettings.additionalGeometryPointRadius);
// check if draw geometry point
if (!s.drawForObjectUnderCursor && (d <= GUIVisualizationSettings::DetailLevel::Level3)) {
// push matrix
GLHelper::pushMatrix();
// translated to front
glTranslated(0, 0, 0.1);
// set color depending if check if mouse is over element
GLHelper::setColor(mouseOverPos? RGBColor::ORANGE : baseColor.changedBrightness(-50));
// push geometry point matrix
GLHelper::pushMatrix();
// translate and rotate
glTranslated(pos.x(), pos.y(), 0.1);
glRotated(rot, 0, 0, 1);
// draw geometry point
GLHelper::drawFilledCircleDetailled(d, s.neteditSizeSettings.additionalGeometryPointRadius, fromAngle, toAngle);
// pop geometry point matrix
GLHelper::popMatrix();
}
// push geometry point matrix
GLHelper::pushMatrix();
// translate and rotate
glTranslated(pos.x(), pos.y(), 0.1);
glRotated(rot, 0, 0, 1);
// draw geometry point
GLHelper::drawFilledCircle(s.neteditSizeSettings.additionalGeometryPointRadius,
s.getCircleResolution(), fromAngle, toAngle);
// pop geometry point matrix
GLHelper::popMatrix();
// pop draw matrix
GLHelper::popMatrix();
}
}

Expand Down
22 changes: 11 additions & 11 deletions src/netedit/elements/additional/GNEAdditional.h
Original file line number Diff line number Diff line change
Expand Up @@ -313,20 +313,20 @@ class GNEAdditional : public GNEPathManager::PathElement, public GNEHierarchical
void drawParentChildLines(const GUIVisualizationSettings& s, const RGBColor& color, const bool onlySymbols = false) const;

/// @brief draw up geometry point
void drawUpGeometryPoint(const GUIVisualizationSettings& s, const Position& pos, const double rot,
const RGBColor& baseColor, const bool ignoreShift = false) const;
void drawUpGeometryPoint(const GUIVisualizationSettings& s, GUIVisualizationSettings::DetailLevel d, const Position& pos,
const double rot, const RGBColor& baseColor, const bool ignoreShift = false) const;

/// @brief draw down geometry point
void drawDownGeometryPoint(const GUIVisualizationSettings& s, const Position& pos, const double rot,
const RGBColor& baseColor, const bool ignoreShift = false) const;
void drawDownGeometryPoint(const GUIVisualizationSettings& s, GUIVisualizationSettings::DetailLevel d, const Position& pos,
const double rot, const RGBColor& baseColor, const bool ignoreShift = false) const;

/// @brief draw left geometry point
void drawLeftGeometryPoint(const GUIVisualizationSettings& s, const Position& pos, const double rot,
const RGBColor& baseColor, const bool ignoreShift = false) const;
void drawLeftGeometryPoint(const GUIVisualizationSettings& s, GUIVisualizationSettings::DetailLevel d, const Position& pos,
const double rot, const RGBColor& baseColor, const bool ignoreShift = false) const;

/// @brief draw right geometry point
void drawRightGeometryPoint(const GUIVisualizationSettings& s, const Position& pos, const double rot,
const RGBColor& baseColor, const bool ignoreShift = false) const;
void drawRightGeometryPoint(const GUIVisualizationSettings& s, GUIVisualizationSettings::DetailLevel d, const Position& pos,
const double rot, const RGBColor& baseColor, const bool ignoreShift = false) const;

/// @brief get draw position index (used in rerouters and VSS)
int getDrawPositionIndex() const;
Expand Down Expand Up @@ -453,9 +453,9 @@ class GNEAdditional : public GNEPathManager::PathElement, public GNEHierarchical
virtual void commitMoveShape(const GNEMoveResult& moveResult, GNEUndoList* undoList) = 0;

/// @brief draw geometry point
void drawSemiCircleGeometryPoint(const GUIVisualizationSettings& s, const Position& pos, const double rot,
const RGBColor& baseColor,const double fromAngle, const double toAngle,
const bool ignoreShift) const;
void drawSemiCircleGeometryPoint(const GUIVisualizationSettings& s, GUIVisualizationSettings::DetailLevel d,
const Position& pos, const double rot, const RGBColor& baseColor,
const double fromAngle, const double toAngle, const bool ignoreShift) const;

/// @brief adjust listed additional text
std::string adjustListedAdditionalText(const std::string& text) const;
Expand Down
17 changes: 8 additions & 9 deletions src/netedit/elements/additional/GNEBusStop.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,8 @@ GNEBusStop::drawGL(const GUIVisualizationSettings& s) const {
const double stopWidth = (myTagProperty.getTag() == SUMO_TAG_BUS_STOP) ? s.stoppingPlaceSettings.busStopWidth : s.stoppingPlaceSettings.trainStopWidth;
// 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 @@ -161,19 +163,16 @@ GNEBusStop::drawGL(const GUIVisualizationSettings& s) const {
GLHelper::setColor(baseColor);
// Draw the area using shape, shapeRotations, shapeLengths and value of exaggeration
GUIGeometry::drawGeometry(s, myNet->getViewNet()->getPositionInformation(), myAdditionalGeometry, stopWidth * MIN2(1.0, busStopExaggeration));
// draw detail
if (s.drawDetail(s.detailSettings.stoppingPlaceDetails, busStopExaggeration)) {
// draw lines
drawLines(s, myLines, baseColor);
// draw sign
drawSign(s, busStopExaggeration, baseColor, signColor, (myTagProperty.getTag() == SUMO_TAG_BUS_STOP) ? "H" : "T");
}
// draw lines
drawLines(s, detailLevel, myLines, baseColor);
// draw sign
drawSign(s, detailLevel, busStopExaggeration, baseColor, signColor, (myTagProperty.getTag() == SUMO_TAG_BUS_STOP) ? "H" : "T");
// draw geometry points
if (myStartPosition != INVALID_DOUBLE) {
drawLeftGeometryPoint(s, myAdditionalGeometry.getShape().front(), myAdditionalGeometry.getShapeRotations().front(), baseColor);
drawLeftGeometryPoint(s, detailLevel, myAdditionalGeometry.getShape().front(), myAdditionalGeometry.getShapeRotations().front(), baseColor);
}
if (myEndPosition != INVALID_DOUBLE) {
drawRightGeometryPoint(s, myAdditionalGeometry.getShape().back(), myAdditionalGeometry.getShapeRotations().back(), baseColor);
drawRightGeometryPoint(s, detailLevel, myAdditionalGeometry.getShape().back(), myAdditionalGeometry.getShapeRotations().back(), baseColor);
}
// pop layer matrix
GLHelper::popMatrix();
Expand Down
11 changes: 7 additions & 4 deletions src/netedit/elements/additional/GNECalibrator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -248,11 +248,13 @@ GNECalibrator::drawGL(const GUIVisualizationSettings& s) const {
// first check if additional has to be drawn
if (myNet->getViewNet()->getDataViewOptions().showAdditionals()) {
if (s.drawAdditionals(exaggeration)) {
// get detail level
const auto detailLevel = s.getDetailLevel(exaggeration);
// draw first symbol
drawCalibratorSymbol(s, exaggeration, myAdditionalGeometry.getShape().front(), myAdditionalGeometry.getShapeRotations().front() + 90);
drawCalibratorSymbol(s, detailLevel, exaggeration, myAdditionalGeometry.getShape().front(), myAdditionalGeometry.getShapeRotations().front() + 90);
// continue with the other symbols
for (const auto& edgeCalibratorGeometry : myEdgeCalibratorGeometries) {
drawCalibratorSymbol(s, exaggeration, edgeCalibratorGeometry.getShape().front(), edgeCalibratorGeometry.getShapeRotations().front() + 90);
drawCalibratorSymbol(s, detailLevel, exaggeration, edgeCalibratorGeometry.getShape().front(), edgeCalibratorGeometry.getShapeRotations().front() + 90);
}
// draw additional ID
drawAdditionalID(s);
Expand Down Expand Up @@ -437,7 +439,8 @@ GNECalibrator::getHierarchyName() const {
// ===========================================================================

void
GNECalibrator::drawCalibratorSymbol(const GUIVisualizationSettings& s, const double exaggeration, const Position& pos, const double rot) const {
GNECalibrator::drawCalibratorSymbol(const GUIVisualizationSettings& s, GUIVisualizationSettings::DetailLevel d, const double exaggeration,
const Position& pos, const double rot) const {
// draw geometry only if we'rent in drawForObjectUnderCursor mode
if (!s.drawForObjectUnderCursor) {
// begin push name
Expand Down Expand Up @@ -466,7 +469,7 @@ GNECalibrator::drawCalibratorSymbol(const GUIVisualizationSettings& s, const dou
glVertex2d(0 + s.additionalSettings.calibratorWidth, s.additionalSettings.calibratorHeight);
glEnd();
// draw text if isn't being drawn for selecting
if (!s.drawForRectangleSelection && s.drawDetail(s.detailSettings.calibratorText, exaggeration)) {
if (d <= GUIVisualizationSettings::DetailLevel::Level2) {
// set color depending of selection status
RGBColor textColor = drawUsingSelectColor() ? s.colorSettings.selectionColor : RGBColor::BLACK;
// draw "C"
Expand Down
2 changes: 1 addition & 1 deletion src/netedit/elements/additional/GNECalibrator.h
Original file line number Diff line number Diff line change
Expand Up @@ -228,7 +228,7 @@ class GNECalibrator : public GNEAdditional, public Parameterised {

private:
/// @brief draw calibrator symbol
void drawCalibratorSymbol(const GUIVisualizationSettings& s, const double exaggeration, const Position& pos, const double rot) const;
void drawCalibratorSymbol(const GUIVisualizationSettings& s, GUIVisualizationSettings::DetailLevel d, const double exaggeration, const Position& pos, const double rot) const;

/// @brief set attribute after validation
void setAttribute(SumoXMLAttr key, const std::string& value);
Expand Down
17 changes: 8 additions & 9 deletions src/netedit/elements/additional/GNEChargingStation.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,8 @@ GNEChargingStation::drawGL(const GUIVisualizationSettings& s) const {
if (myNet->getViewNet()->getDataViewOptions().showAdditionals() && s.drawAdditionals(chargingStationExaggeration)) {
// draw geometry only if we'rent in drawForObjectUnderCursor mode
if (!s.drawForObjectUnderCursor) {
// get detail level
const auto detailLevel = s.getDetailLevel(chargingStationExaggeration);
// declare colors
RGBColor baseColor, signColor;
// set colors
Expand All @@ -155,19 +157,16 @@ GNEChargingStation::drawGL(const GUIVisualizationSettings& s) const {
GLHelper::setColor(baseColor);
// Draw the area using shape, shapeRotations, shapeLengths and value of exaggeration
GUIGeometry::drawGeometry(s, myNet->getViewNet()->getPositionInformation(), myAdditionalGeometry, s.stoppingPlaceSettings.chargingStationWidth * MIN2(1.0, chargingStationExaggeration));
// draw detail
if (s.drawDetail(s.detailSettings.stoppingPlaceDetails, chargingStationExaggeration)) {
// draw charging power and efficiency
drawLines(s, {toString(myChargingPower)}, baseColor);
// draw sign
drawSign(s, chargingStationExaggeration, baseColor, signColor, "C");
}
// draw charging power and efficiency
drawLines(s, detailLevel, {toString(myChargingPower)}, baseColor);
// draw sign
drawSign(s, detailLevel, chargingStationExaggeration, baseColor, signColor, "C");
// draw geometry points
if (myStartPosition != INVALID_DOUBLE) {
drawLeftGeometryPoint(s, myAdditionalGeometry.getShape().front(), myAdditionalGeometry.getShapeRotations().front(), baseColor);
drawLeftGeometryPoint(s, detailLevel, myAdditionalGeometry.getShape().front(), myAdditionalGeometry.getShapeRotations().front(), baseColor);
}
if (myEndPosition != INVALID_DOUBLE) {
drawRightGeometryPoint(s, myAdditionalGeometry.getShape().back(), myAdditionalGeometry.getShapeRotations().back(), baseColor);
drawRightGeometryPoint(s, detailLevel, myAdditionalGeometry.getShape().back(), myAdditionalGeometry.getShapeRotations().back(), baseColor);
}
// pop layer matrix
GLHelper::popMatrix();
Expand Down
17 changes: 8 additions & 9 deletions src/netedit/elements/additional/GNEContainerStop.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,8 @@ GNEContainerStop::drawGL(const GUIVisualizationSettings& s) const {
if (myNet->getViewNet()->getDataViewOptions().showAdditionals() && s.drawAdditionals(containerStopExaggeration)) {
// draw geometry only if we'rent in drawForObjectUnderCursor mode
if (!s.drawForObjectUnderCursor) {
// get detail level
const auto detailLevel = s.getDetailLevel(containerStopExaggeration);
// declare colors
RGBColor baseColor, signColor;
// set colors
Expand Down Expand Up @@ -152,19 +154,16 @@ GNEContainerStop::drawGL(const GUIVisualizationSettings& s) const {
GLHelper::setColor(baseColor);
// Draw the area using shape, shapeRotations, shapeLengths and value of exaggeration
GUIGeometry::drawGeometry(s, myNet->getViewNet()->getPositionInformation(), myAdditionalGeometry, s.stoppingPlaceSettings.containerStopWidth * MIN2(1.0, containerStopExaggeration));
// draw detail
if (s.drawDetail(s.detailSettings.stoppingPlaceDetails, containerStopExaggeration)) {
// draw lines
drawLines(s, myLines, baseColor);
// draw sign
drawSign(s, containerStopExaggeration, baseColor, signColor, "C");
}
// draw lines
drawLines(s, detailLevel, myLines, baseColor);
// draw sign
drawSign(s, detailLevel, containerStopExaggeration, baseColor, signColor, "C");
// draw geometry points
if (myStartPosition != INVALID_DOUBLE) {
drawLeftGeometryPoint(s, myAdditionalGeometry.getShape().front(), myAdditionalGeometry.getShapeRotations().front(), baseColor);
drawLeftGeometryPoint(s, detailLevel, myAdditionalGeometry.getShape().front(), myAdditionalGeometry.getShapeRotations().front(), baseColor);
}
if (myEndPosition != INVALID_DOUBLE) {
drawRightGeometryPoint(s, myAdditionalGeometry.getShape().back(), myAdditionalGeometry.getShapeRotations().back(), baseColor);
drawRightGeometryPoint(s, detailLevel, myAdditionalGeometry.getShape().back(), myAdditionalGeometry.getShapeRotations().back(), baseColor);
}
// pop layer matrix
GLHelper::popMatrix();
Expand Down

0 comments on commit 16f72cf

Please sign in to comment.