Skip to content

Commit 518caf4

Browse files
author
KhalilSelyan
committed
correction of sizing/positionning of items in overlay + use color values from main widget
Signed-off-by: KhalilSelyan <khalil@leodrive.ai>
1 parent 8f9c9c9 commit 518caf4

File tree

7 files changed

+34
-31
lines changed

7 files changed

+34
-31
lines changed

common/autoware_overlay_rviz_plugin/autoware_overlay_rviz_plugin/include/gear_display.hpp

+3-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,9 @@ class GearDisplay
3636
{
3737
public:
3838
GearDisplay();
39-
void drawGearIndicator(QPainter & painter, const QRectF & backgroundRect);
39+
void drawGearIndicator(
40+
QPainter & painter, const QRectF & backgroundRect, const QColor & color,
41+
const QColor & bg_color);
4042
void updateGearData(const autoware_auto_vehicle_msgs::msg::GearReport::ConstSharedPtr & msg);
4143

4244
private:

common/autoware_overlay_rviz_plugin/autoware_overlay_rviz_plugin/include/speed_display.hpp

+1-2
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,11 @@ class SpeedDisplay
3636
{
3737
public:
3838
SpeedDisplay();
39-
void drawSpeedDisplay(QPainter & painter, const QRectF & backgroundRect);
39+
void drawSpeedDisplay(QPainter & painter, const QRectF & backgroundRect, const QColor & color);
4040
void updateSpeedData(const autoware_auto_vehicle_msgs::msg::VelocityReport::ConstSharedPtr & msg);
4141

4242
private:
4343
float current_speed_; // Internal variable to store current speed
44-
QColor gray = QColor(194, 194, 194);
4544
};
4645

4746
} // namespace autoware_overlay_rviz_plugin

common/autoware_overlay_rviz_plugin/autoware_overlay_rviz_plugin/include/speed_limit_display.hpp

+4-2
Original file line numberDiff line numberDiff line change
@@ -37,14 +37,16 @@ class SpeedLimitDisplay
3737
{
3838
public:
3939
SpeedLimitDisplay();
40-
void drawSpeedLimitIndicator(QPainter & painter, const QRectF & backgroundRect);
40+
void drawSpeedLimitIndicator(
41+
QPainter & painter, const QRectF & backgroundRect, const QColor & color,
42+
const QColor & light_color, const QColor & dark_color, const QColor & bg_color,
43+
const float bg_alpha);
4144
void updateSpeedLimitData(const tier4_planning_msgs::msg::VelocityLimit::ConstSharedPtr msg);
4245
void updateSpeedData(const autoware_auto_vehicle_msgs::msg::VelocityReport::ConstSharedPtr & msg);
4346

4447
private:
4548
float current_limit; // Internal variable to store current gear
4649
float current_speed_; // Internal variable to store current speed
47-
QColor gray = QColor(194, 194, 194);
4850
};
4951

5052
} // namespace autoware_overlay_rviz_plugin

common/autoware_overlay_rviz_plugin/autoware_overlay_rviz_plugin/src/gear_display.cpp

+4-3
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,8 @@ void GearDisplay::updateGearData(
5555
current_gear_ = msg->report; // Assuming msg->report contains the gear information
5656
}
5757

58-
void GearDisplay::drawGearIndicator(QPainter & painter, const QRectF & backgroundRect)
58+
void GearDisplay::drawGearIndicator(
59+
QPainter & painter, const QRectF & backgroundRect, const QColor & color, const QColor & bg_color)
5960
{
6061
// we deal with the different gears here
6162
std::string gearString;
@@ -91,9 +92,9 @@ void GearDisplay::drawGearIndicator(QPainter & painter, const QRectF & backgroun
9192
double gearX = backgroundRect.left() + 54;
9293
double gearY = backgroundRect.height() / 2 - gearBoxSize / 2;
9394
QRect gearRect(gearX, gearY, gearBoxSize, gearBoxSize);
94-
painter.setBrush(gray);
95+
painter.setBrush(color);
9596
painter.drawRoundedRect(gearRect, 10, 10);
96-
painter.setPen(Qt::black);
97+
painter.setPen(bg_color);
9798
painter.drawText(gearRect, Qt::AlignCenter, QString::fromStdString(gearString));
9899
}
99100

common/autoware_overlay_rviz_plugin/autoware_overlay_rviz_plugin/src/speed_display.cpp

+3-2
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,8 @@ void SpeedDisplay::updateSpeedData(
7676
// }
7777
// }
7878

79-
void SpeedDisplay::drawSpeedDisplay(QPainter & painter, const QRectF & backgroundRect)
79+
void SpeedDisplay::drawSpeedDisplay(
80+
QPainter & painter, const QRectF & backgroundRect, const QColor & color)
8081
{
8182
QFont referenceFont("Quicksand", 80, QFont::Bold);
8283
painter.setFont(referenceFont);
@@ -96,7 +97,7 @@ void SpeedDisplay::drawSpeedDisplay(QPainter & painter, const QRectF & backgroun
9697
QPointF speedPos(
9798
backgroundRect.center().x() - speedNumberRect.width() / 2,
9899
backgroundRect.center().y() + speedNumberRect.bottom());
99-
painter.setPen(gray);
100+
painter.setPen(color);
100101
painter.drawText(speedPos, speedNumber);
101102

102103
QFont unitFont("Quicksand", 8, QFont::DemiBold);

common/autoware_overlay_rviz_plugin/autoware_overlay_rviz_plugin/src/speed_limit_display.cpp

+18-20
Original file line numberDiff line numberDiff line change
@@ -68,41 +68,40 @@ void SpeedLimitDisplay::updateSpeedData(
6868
}
6969
}
7070

71-
void SpeedLimitDisplay::drawSpeedLimitIndicator(QPainter & painter, const QRectF & backgroundRect)
71+
void SpeedLimitDisplay::drawSpeedLimitIndicator(
72+
QPainter & painter, const QRectF & backgroundRect, const QColor & color,
73+
const QColor & light_color, const QColor & dark_color, const QColor & bg_color,
74+
const float bg_alpha)
7275
{
7376
// Enable Antialiasing for smoother drawing
7477
painter.setRenderHint(QPainter::Antialiasing, true);
7578
painter.setRenderHint(QPainter::SmoothPixmapTransform, true);
7679

77-
const double color_s_min = 0.4;
78-
const double color_s_max = 0.8;
79-
QColor colorMin;
80-
colorMin.setHsvF(0.0, color_s_min, 1.0);
81-
QColor colorMax;
82-
colorMax.setHsvF(0.0, color_s_max, 1.0);
83-
84-
QColor borderColor = colorMin;
80+
QColor borderColor = light_color;
8581
if (current_limit > 0.0) {
8682
double speed_to_limit_ratio = current_speed_ / current_limit;
8783
const double speed_to_limit_ratio_min = 0.6;
8884
const double speed_to_limit_ratio_max = 0.9;
8985

9086
if (speed_to_limit_ratio >= speed_to_limit_ratio_max) {
91-
borderColor = colorMax;
87+
borderColor = dark_color;
9288
} else if (speed_to_limit_ratio > speed_to_limit_ratio_min) {
9389
double interpolation_factor = (speed_to_limit_ratio - speed_to_limit_ratio_min) /
9490
(speed_to_limit_ratio_max - speed_to_limit_ratio_min);
95-
// Interpolate between colorMin and colorMax
96-
double saturation = color_s_min + (color_s_max - color_s_min) * interpolation_factor;
97-
98-
borderColor.setHsvF(0.0, saturation, 1.0);
91+
// Interpolate between light_color and dark_color
92+
int red = light_color.red() + (dark_color.red() - light_color.red()) * interpolation_factor;
93+
int green =
94+
light_color.green() + (dark_color.green() - light_color.green()) * interpolation_factor;
95+
int blue =
96+
light_color.blue() + (dark_color.blue() - light_color.blue()) * interpolation_factor;
97+
borderColor = QColor(red, green, blue);
9998
}
10099
}
101100

102101
// Define the area for the outer circle
103102
QRectF outerCircleRect = QRectF(45, 45, 45, 45);
104-
outerCircleRect.moveTopRight(
105-
QPointF(backgroundRect.right() - 44, backgroundRect.top() + outerCircleRect.height() / 2 + 5));
103+
outerCircleRect.moveTopRight(QPointF(
104+
backgroundRect.right() - 44, backgroundRect.height() / 2 - outerCircleRect.height() / 2));
106105

107106
// Now use borderColor for drawing
108107
painter.setPen(QPen(borderColor, 2, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
@@ -120,8 +119,8 @@ void SpeedLimitDisplay::drawSpeedLimitIndicator(QPainter & painter, const QRectF
120119

121120
painter.setRenderHint(QPainter::Antialiasing, true);
122121
QColor colorFromHSV;
123-
colorFromHSV.setHsv(0, 0, 29); // Hue, Saturation, Value
124-
colorFromHSV.setAlphaF(0.60); // Transparency
122+
colorFromHSV.setHsv(bg_color.hue(), bg_color.saturation(), bg_color.value());
123+
colorFromHSV.setAlphaF(bg_alpha);
125124
painter.setBrush(colorFromHSV);
126125
painter.drawEllipse(innerCircleRect);
127126

@@ -138,8 +137,7 @@ void SpeedLimitDisplay::drawSpeedLimitIndicator(QPainter & painter, const QRectF
138137
QFont font = QFont("Quicksand", 16, QFont::Bold);
139138

140139
painter.setFont(font);
141-
// #C2C2C2
142-
painter.setPen(QPen(gray, 2, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
140+
painter.setPen(QPen(color, 2, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
143141

144142
// Draw the text in the center of the circle
145143
painter.drawText(innerCircleRect, Qt::AlignCenter, text);

common/autoware_overlay_rviz_plugin/autoware_overlay_rviz_plugin/src/traffic_display.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ void TrafficDisplay::drawTrafficLightIndicator(QPainter & painter, const QRectF
6565
QRectF circleRect = QRectF(50, 50, 50, 50);
6666
circleRect.moveTopRight(QPointF(
6767
backgroundRect.right() - circleRect.width() - 75,
68-
backgroundRect.top() + circleRect.height() / 2));
68+
backgroundRect.height() / 2 - circleRect.height() / 2));
6969
painter.drawEllipse(circleRect);
7070

7171
if (!current_traffic_.elements.empty()) {

0 commit comments

Comments
 (0)