Changes to aos/vision/debug in preparation for the competition.
- blob_log-source: Support multiple key-commands for seeking to a target
also added JustCheckForTarget which can be implemented to run faster
for slow computer (will implement in followup).
- camera-source + debug_framework: Takes in camera parameters from the
caller.
- debug_window -> Scale text up on smaller monitors.
- overlay.h: Ben changed width to measure point to point on the cross.
And added circles to the pixel-lines overlay.
- tcp-source: Drop packects when the computer can't keep up.
- debug_framework -> detect smaller monitors and scale down the viewport.
Change-Id: Iae65a0799231d006b38694a8a9cb3894e252033c
diff --git a/aos/vision/debug/debug_window.cc b/aos/vision/debug/debug_window.cc
index acbaf8e..4729939 100644
--- a/aos/vision/debug/debug_window.cc
+++ b/aos/vision/debug/debug_window.cc
@@ -48,13 +48,19 @@
if (overlays) {
for (const auto &ov : *overlays) {
cairo_save(cr);
- CairoRender render(cr);
- // move the drawing to match the window size
+ CairoRender render(cr, 1.0 / scale_factor);
ov->Draw(&render, w, h);
cairo_restore(cr);
}
}
+ for (const auto &ov : overlays_internal_) {
+ cairo_save(cr);
+ CairoRender render(cr, 1.0 / scale_factor);
+ ov->Draw(&render, w, h);
+ cairo_restore(cr);
+ }
+
return FALSE;
}
@@ -64,6 +70,7 @@
bool needs_draw = true;
GtkWidget *window;
std::vector<OverlayBase *> *overlays = nullptr;
+ std::vector<OverlayBase *> overlays_internal_;
double scale_factor;
// flip the image rows on drawing
@@ -77,6 +84,10 @@
self->overlays = overlays;
}
+void DebugWindow::AddOverlay(OverlayBase *overlay) {
+ self->overlays_internal_.push_back(overlay);
+}
+
void DebugWindow::Redraw() {
if (!self->needs_draw) {
gtk_widget_queue_draw(self->drawing_area);
@@ -158,11 +169,15 @@
void CairoRender::Text(int x, int y, int /*text_x*/, int /*text_y*/,
const std::string &text) {
- auto *pango_lay = pango_cairo_create_layout(cr_);
+ cairo_save(cr_);
cairo_move_to(cr_, x, y);
+ cairo_scale(cr_, text_scale_, text_scale_);
+
+ auto *pango_lay = pango_cairo_create_layout(cr_);
pango_layout_set_text(pango_lay, text.data(), text.size());
pango_cairo_show_layout(cr_, pango_lay);
g_object_unref(pango_lay);
+ cairo_restore(cr_);
}
} // namespace vision