summaryrefslogtreecommitdiffstats
path: root/sys/dev/syscons
diff options
context:
space:
mode:
authorjake <jake@FreeBSD.org>2003-08-24 04:04:44 +0000
committerjake <jake@FreeBSD.org>2003-08-24 04:04:44 +0000
commitcdf6135faf5691df98905addfa24f8631d437d87 (patch)
tree7dc797dd51d061d7bcd66e5b9e06e69a5d5a7ee0 /sys/dev/syscons
parentfd03c93639090053d125e3214ed386717425c7bb (diff)
downloadFreeBSD-src-cdf6135faf5691df98905addfa24f8631d437d87.zip
FreeBSD-src-cdf6135faf5691df98905addfa24f8631d437d87.tar.gz
- Add a font width field to struct scr_stat. Use this instead of '8'.
- Use the values in the video info for the font size and width instead of second guessing.
Diffstat (limited to 'sys/dev/syscons')
-rw-r--r--sys/dev/syscons/scmouse.c16
-rw-r--r--sys/dev/syscons/syscons.c5
-rw-r--r--sys/dev/syscons/syscons.h1
3 files changed, 12 insertions, 10 deletions
diff --git a/sys/dev/syscons/scmouse.c b/sys/dev/syscons/scmouse.c
index ea9a4f6..d4fc702 100644
--- a/sys/dev/syscons/scmouse.c
+++ b/sys/dev/syscons/scmouse.c
@@ -129,7 +129,8 @@ sc_mouse_move(scr_stat *scp, int x, int y)
scp->mouse_pos = scp->mouse_oldpos = 0;
else
scp->mouse_pos = scp->mouse_oldpos =
- (y/scp->font_size - scp->yoff)*scp->xsize + x/8 - scp->xoff;
+ (y/scp->font_size - scp->yoff)*scp->xsize + x/scp->font_width -
+ scp->xoff;
scp->status |= MOUSE_MOVED;
splx(s);
}
@@ -138,8 +139,8 @@ sc_mouse_move(scr_stat *scp, int x, int y)
static void
set_mouse_pos(scr_stat *scp)
{
- if (scp->mouse_xpos < scp->xoff*8)
- scp->mouse_xpos = scp->xoff*8;
+ if (scp->mouse_xpos < scp->xoff*scp->font_width)
+ scp->mouse_xpos = scp->xoff*scp->font_width;
if (scp->mouse_ypos < scp->yoff*scp->font_size)
scp->mouse_ypos = scp->yoff*scp->font_size;
if (ISGRAPHSC(scp)) {
@@ -149,8 +150,8 @@ set_mouse_pos(scr_stat *scp)
scp->mouse_ypos = scp->ypixel-1;
return;
} else {
- if (scp->mouse_xpos > (scp->xsize + scp->xoff)*8 - 1)
- scp->mouse_xpos = (scp->xsize + scp->xoff)*8 - 1;
+ if (scp->mouse_xpos > (scp->xsize + scp->xoff)*scp->font_width - 1)
+ scp->mouse_xpos = (scp->xsize + scp->xoff)*scp->font_width - 1;
if (scp->mouse_ypos > (scp->ysize + scp->yoff)*scp->font_size - 1)
scp->mouse_ypos = (scp->ysize + scp->yoff)*scp->font_size - 1;
}
@@ -159,7 +160,7 @@ set_mouse_pos(scr_stat *scp)
scp->status |= MOUSE_MOVED;
scp->mouse_pos =
(scp->mouse_ypos/scp->font_size - scp->yoff)*scp->xsize
- + scp->mouse_xpos/8 - scp->xoff;
+ + scp->mouse_xpos/scp->font_width - scp->xoff;
#ifndef SC_NO_CUTPASTE
if ((scp->status & MOUSE_VISIBLE) && (scp->status & MOUSE_CUTTING))
mouse_cut(scp);
@@ -195,7 +196,8 @@ sc_remove_mouse_image(scr_stat *scp)
++scp->sc->videoio_in_progress;
(*scp->rndr->draw_mouse)(scp,
- (scp->mouse_oldpos%scp->xsize + scp->xoff)*8,
+ (scp->mouse_oldpos%scp->xsize + scp->xoff)
+ * scp->font_width,
(scp->mouse_oldpos/scp->xsize + scp->yoff)
* scp->font_size,
FALSE);
diff --git a/sys/dev/syscons/syscons.c b/sys/dev/syscons/syscons.c
index d940cac..41ae937 100644
--- a/sys/dev/syscons/syscons.c
+++ b/sys/dev/syscons/syscons.c
@@ -2989,22 +2989,21 @@ init_scp(sc_softc_t *sc, int vty, scr_stat *scp)
scp->ysize = info.vi_height;
scp->xpixel = scp->xsize*info.vi_cwidth;
scp->ypixel = scp->ysize*info.vi_cheight;
+ scp->font_size = info.vi_cheight;
+ scp->font_width = info.vi_cwidth;
if (info.vi_cheight < 14) {
- scp->font_size = 8;
#ifndef SC_NO_FONT_LOADING
scp->font = sc->font_8;
#else
scp->font = NULL;
#endif
} else if (info.vi_cheight >= 16) {
- scp->font_size = 16;
#ifndef SC_NO_FONT_LOADING
scp->font = sc->font_16;
#else
scp->font = NULL;
#endif
} else {
- scp->font_size = 14;
#ifndef SC_NO_FONT_LOADING
scp->font = sc->font_14;
#else
diff --git a/sys/dev/syscons/syscons.h b/sys/dev/syscons/syscons.h
index 8bb73c4..217e50c 100644
--- a/sys/dev/syscons/syscons.h
+++ b/sys/dev/syscons/syscons.h
@@ -272,6 +272,7 @@ typedef struct scr_stat {
u_char *font; /* current font */
int font_size; /* fontsize in Y direction */
+ int font_width; /* fontsize in X direction */
int start; /* modified area start */
int end; /* modified area end */
OpenPOWER on IntegriCloud