9
9
# Copyright (c) 2021 dmh23
10
10
#
11
11
from PyQt6 .QtCore import Qt
12
+ from PyQt6 .QtGui import QColor
12
13
13
14
import src .utils .geometry as geometry
14
- from graphics .track_analysis_canvas import TrackAnalysisCanvas , TrackArea , Line , FilledCircle
15
+ from graphics .track_analysis_canvas import TrackAnalysisCanvas , TrackArea , Line , FilledCircle , Text
15
16
from src .analyze .util .heatmap import HeatMap
16
17
from src .analyze .util .visitor import VisitorMap
17
18
from src .configuration .real_world import VEHICLE_LENGTH , VEHICLE_WIDTH , BOX_OBSTACLE_WIDTH , BOX_OBSTACLE_LENGTH
@@ -116,7 +117,7 @@ def configure_track_canvas(self, canvas: TrackAnalysisCanvas):
116
117
self ._max_x + DISPLAY_BORDER , self ._max_y + DISPLAY_BORDER )
117
118
canvas .set_track_area (area )
118
119
119
- def draw_track_edges (self , track_canvas : TrackAnalysisCanvas , colour : Qt . GlobalColor ):
120
+ def draw_track_edges (self , track_canvas : TrackAnalysisCanvas , colour : QColor ):
120
121
previous_left = self ._drawing_points [- 1 ].left
121
122
previous_right = self ._drawing_points [- 1 ].right
122
123
@@ -126,7 +127,7 @@ def draw_track_edges(self, track_canvas: TrackAnalysisCanvas, colour: Qt.GlobalC
126
127
track_canvas .add_fixed_shape (Line (previous_right , p .right , 2 , colour ))
127
128
previous_right = p .right
128
129
129
- def draw_section_highlight (self , track_canvas : TrackAnalysisCanvas , colour : Qt . GlobalColor , start : int , finish : int ):
130
+ def draw_section_highlight (self , track_canvas : TrackAnalysisCanvas , colour : QColor , start : int , finish : int ):
130
131
previous_left = self ._drawing_points [start ].left_outer
131
132
previous_right = self ._drawing_points [start ].right_outer
132
133
@@ -136,42 +137,51 @@ def draw_section_highlight(self, track_canvas: TrackAnalysisCanvas, colour: Qt.G
136
137
highlight_points = self ._drawing_points [start :] + self ._drawing_points [:finish + 1 ]
137
138
138
139
for p in highlight_points :
139
- track_canvas .add_fixed_shape (Line (previous_left , p .left_outer , 3 , colour ))
140
+ track_canvas .add_fixed_shape (Line (previous_left , p .left_outer , 4 , colour ))
140
141
previous_left = p .left_outer
141
- track_canvas .add_fixed_shape (Line (previous_right , p .right_outer , 3 , colour ))
142
+ track_canvas .add_fixed_shape (Line (previous_right , p .right_outer , 4 , colour ))
142
143
previous_right = p .right_outer
143
144
144
- def draw_starting_line (self , track_graphics : TrackGraphics , colour : str ):
145
- track_graphics . plot_line ( self ._drawing_points [0 ].left , self ._drawing_points [0 ].right , 3 , colour )
145
+ def draw_starting_line (self , track_canvas : TrackAnalysisCanvas , colour : QColor ):
146
+ track_canvas . add_fixed_shape ( Line ( self ._drawing_points [0 ].left , self ._drawing_points [0 ].right , 3 , colour ) )
146
147
147
- def draw_sector_dividers (self , track_graphics : TrackGraphics , colour : str ):
148
+ def draw_sector_dividers (self , track_canvas : TrackAnalysisCanvas , colour : QColor ):
148
149
for p in self ._drawing_points :
149
150
if p .is_divider :
150
- track_graphics . plot_line ( p .left , p .right , 3 , colour , (4 , 2 ))
151
+ track_canvas . add_fixed_shape ( Line ( p .left , p .right , 2 , colour , (2 , 3 ) ))
151
152
152
- def draw_waypoints (self , track_canvas : TrackAnalysisCanvas , colour : Qt . GlobalColor , minor_size : int , major_size : int ):
153
+ def draw_waypoints (self , track_canvas : TrackAnalysisCanvas , colour : QColor , minor_size : int , major_size : int ):
153
154
assert major_size >= minor_size
154
155
for (i , p ) in enumerate (self ._drawing_points ):
155
156
if i % 10 == 0 :
156
157
track_canvas .add_fixed_shape (FilledCircle (p .middle , major_size , colour ))
157
158
else :
158
159
track_canvas .add_fixed_shape (FilledCircle (p .middle , minor_size , colour ))
159
160
160
- def draw_waypoint_labels (self , track_graphics : TrackGraphics , colour : str , font_size : int ):
161
+ def draw_waypoint_labels (self , track_canvas : TrackAnalysisCanvas , colour : QColor , font_size : int ):
161
162
last_label_position = None
162
- for (i , p ) in enumerate (self ._drawing_points [:- 2 ]):
163
+ for (i , p ) in enumerate (self ._drawing_points [1 :- 2 ]):
163
164
if self ._is_vertical_at_waypoint (i ):
164
- label = track_graphics .plot_text (p .middle , str (i ), font_size , colour , - 1.5 * font_size , 0.0 )
165
- else :
166
- label = track_graphics .plot_text (p .middle , str (i ), font_size , colour , 0.0 , 1.5 * font_size )
167
-
168
- label_position = track_graphics .get_widget_position (label )
169
- if last_label_position is None :
170
- last_label_position = label_position
171
- elif geometry .get_distance_between_points (last_label_position , label_position ) < 2.5 * font_size :
172
- track_graphics .delete_widget (label )
165
+ y_offset = 0
166
+ if i >= 99 :
167
+ x_offset = - round (1.5 * font_size )
168
+ else :
169
+ x_offset = - font_size
173
170
else :
174
- last_label_position = label_position
171
+ x_offset = 0
172
+ y_offset = font_size + 2
173
+
174
+ track_canvas .add_fixed_shape (Text (p .middle , str (i + 1 ), font_size , colour , x_offset , y_offset ))
175
+ # track_canvas.add_fixed_shape(Text(p.middle, str(i+1), font_size, colour))
176
+
177
+ # TODO Clever stuff to skip labels which would be too close together!
178
+ # label_position = track_canvas.get_widget_position(label)
179
+ # if last_label_position is None:
180
+ # last_label_position = label_position
181
+ # elif geometry.get_distance_between_points(last_label_position, label_position) < 2.5 * font_size:
182
+ # track_graphics.delete_widget(label)
183
+ # else:
184
+ # last_label_position = label_position
175
185
176
186
def draw_annotations (self , track_graphics : TrackGraphics ):
177
187
for a in self ._annotations :
0 commit comments