Author: ray
Date: Thu Feb  6 15:16:38 2014
New Revision: 261553
URL: http://svnweb.freebsd.org/changeset/base/261553

Log:
  Add vt_set_border function to help to change border color.
  Use vt_set_border to reset color after font changed (different font size may
  change border sizes)
  
  Sponsored by: The FreeBSD Foundation

Modified:
  head/sys/dev/vt/vt_core.c

Modified: head/sys/dev/vt/vt_core.c
==============================================================================
--- head/sys/dev/vt/vt_core.c   Thu Feb  6 15:12:44 2014        (r261552)
+++ head/sys/dev/vt/vt_core.c   Thu Feb  6 15:16:38 2014        (r261553)
@@ -1045,6 +1045,30 @@ vt_change_font(struct vt_window *vw, str
 }
 
 static int
+vt_set_border(struct vt_window *vw, struct vt_font *vf, term_color_t c)
+{
+       struct vt_device *vd = vw->vw_device;
+       int l, r, t, b, w, h;
+
+       if (vd->vd_driver->vd_drawrect == NULL)
+               return (ENOTSUP);
+
+       w = vd->vd_width - 1;
+       h = vd->vd_height - 1;
+       l = vd->vd_offset.tp_col - 1;
+       r = w - l;
+       t = vd->vd_offset.tp_row - 1;
+       b = h - t;
+
+       vd->vd_driver->vd_drawrect(vd, 0, 0, w, t, 1, c); /* Top bar. */
+       vd->vd_driver->vd_drawrect(vd, 0, t, l, b, 1, c); /* Left bar. */
+       vd->vd_driver->vd_drawrect(vd, r, t, w, b, 1, c); /* Right bar. */
+       vd->vd_driver->vd_drawrect(vd, 0, b, w, h, 1, c); /* Bottom bar. */
+
+       return (0);
+}
+
+static int
 vt_proc_alive(struct vt_window *vw)
 {
        struct proc *p;
@@ -1562,6 +1586,10 @@ skip_thunk:
                        return (error);
 
                error = vt_change_font(vw, vf);
+               if (error == 0) {
+                       /* XXX: replace 0 with current bg color. */
+                       vt_set_border(vw, vf, 0);
+               }
                vtfont_unref(vf);
                return (error);
        }
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to