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