* [Patch 4] Console Rotation
@ 2002-09-09 14:23 Antonino Daplas
0 siblings, 0 replies; only message in thread
From: Antonino Daplas @ 2002-09-09 14:23 UTC (permalink / raw)
To: fbdev
The patch (fbset_rotate.diff), which is against fbset-2.1, adds 3 new
options to set the rotation:
fbset -{cw|ccw|ud} {true|false}
Try this with the modified vesafb.
Tony
<<------------------------------------------------------------------>>
diff -Naur fbset-orig/fb.h fbset-2.1/fb.h
--- fbset-orig/fb.h Wed Jun 23 22:09:48 1999
+++ fbset-2.1/fb.h Sat Sep 7 11:28:41 2002
@@ -137,6 +137,11 @@
#define FB_VMODE_DOUBLE 2 /* double scan */
#define FB_VMODE_MASK 255
+#define FB_VMODE_ROTATE_CW 0x010000
+#define FB_VMODE_ROTATE_CCW 0x020000
+#define FB_VMODE_ROTATE_UD 0x040000
+#define FB_ROTATE_MASK 0xFF0000
+
#define FB_VMODE_YWRAP 256 /* ywrap instead of panning */
#define FB_VMODE_SMOOTH_XPAN 512 /* smooth xpan possible (internally used) */
#define FB_VMODE_CONUPDATE 512 /* don't update x/yoffset */
diff -Naur fbset-orig/fbset.c fbset-2.1/fbset.c
--- fbset-orig/fbset.c Wed Jun 23 22:11:46 1999
+++ fbset-2.1/fbset.c Sun Sep 8 09:44:19 2002
@@ -89,6 +89,9 @@
static const char *Opt_bcast = NULL;
static const char *Opt_laced = NULL;
static const char *Opt_double = NULL;
+static const char *Opt_cw = NULL;
+static const char *Opt_ccw = NULL;
+static const char *Opt_ud = NULL;
static const char *Opt_move = NULL;
static const char *Opt_step = NULL;
static const char *Opt_modename = NULL;
@@ -126,6 +129,9 @@
{ "-bcast", &Opt_bcast, 1 },
{ "-laced", &Opt_laced, 1 },
{ "-double", &Opt_double, 1 },
+ { "-cw", &Opt_cw, 1 },
+ { "-ccw", &Opt_ccw, 1 },
+ { "-ud", &Opt_ud, 1 },
{ "-move", &Opt_move, 1 },
{ "-step", &Opt_step, 1 },
{ "-rgba", &Opt_rgba, 1 },
@@ -354,6 +360,15 @@
var->vmode = FB_VMODE_DOUBLE;
else
var->vmode = FB_VMODE_NONINTERLACED;
+
+ var->vmode &= ~FB_ROTATE_MASK;
+ if (vmode->cw == TRUE)
+ var->vmode |= FB_VMODE_ROTATE_CW;
+ else if (vmode->ccw == TRUE)
+ var->vmode |= FB_VMODE_ROTATE_CCW;
+ else if (vmode->ud == TRUE)
+ var->vmode |= FB_VMODE_ROTATE_UD;
+
var->vmode |= FB_VMODE_CONUPDATE;
var->red.length = vmode->red.length;
var->red.offset = vmode->red.offset;
@@ -402,6 +417,21 @@
vmode->dblscan = TRUE;
break;
}
+
+ vmode->cw = FALSE;
+ vmode->ccw = FALSE;
+ vmode->ud = FALSE;
+ switch (var->vmode & FB_ROTATE_MASK) {
+ case FB_VMODE_ROTATE_CW:
+ vmode->cw = TRUE;
+ break;
+ case FB_VMODE_ROTATE_CCW:
+ vmode->ccw = TRUE;
+ break;
+ case FB_VMODE_ROTATE_UD:
+ vmode->ud = TRUE;
+ break;
+ }
vmode->red.length = var->red.length;
vmode->red.offset = var->red.offset;
vmode->green.length = var->green.length;
@@ -567,6 +597,12 @@
vmode->laced = atoboolean(Opt_laced);
if (Opt_double)
vmode->dblscan = atoboolean(Opt_double);
+ if (Opt_cw)
+ vmode->cw = atoboolean(Opt_cw);
+ if (Opt_ccw)
+ vmode->ccw = atoboolean(Opt_ccw);
+ if (Opt_ud)
+ vmode->ud = atoboolean(Opt_ud);
if (Opt_grayscale)
vmode->grayscale = atoboolean(Opt_grayscale);
if (Opt_step)
@@ -643,6 +679,12 @@
puts(" laced true");
if (vmode->dblscan)
puts(" double true");
+ if (vmode->cw)
+ puts(" cw true");
+ if (vmode->ccw)
+ puts(" ccw true");
+ if (vmode->ud)
+ puts(" ud true");
if (vmode->nonstd)
printf(" nonstd %u\n", vmode->nonstd);
if (vmode->accel_flags)
@@ -677,6 +719,12 @@
printf(" \"Interlace\"");
if (vmode->dblscan)
printf(" \"DoubleScan\"");
+ if (vmode->cw)
+ printf(" \"Clockwise Rotation\"");
+ if (vmode->ccw)
+ printf(" \"CounterClockwise Rotation\"");
+ if (vmode->ud)
+ printf(" \"180 degree Rotation\"");
if (vmode->hsync)
printf(" \"+HSync\"");
else
@@ -879,6 +927,9 @@
" -bcast <value> : broadcast enable (false or true)\n"
" -laced <value> : interlace enable (false or true)\n"
" -double <value> : doublescan enable (false or true)\n"
+ " -cw <value> : rotate clockwise (false or true)\n"
+ " -ccw <value> : rotate counter clockwise (false or true)\n"
+ " -ud <value> : rotate 180 degrees (false or true)\n"
" -rgba <r,g,b,a> : recommended length of color entries\n"
" -grayscale <value> : grayscale enable (false or true)\n"
" Display positioning:\n"
diff -Naur fbset-orig/fbset.h fbset-2.1/fbset.h
--- fbset-orig/fbset.h Wed Jun 23 22:12:28 1999
+++ fbset-2.1/fbset.h Sat Sep 7 10:39:28 2002
@@ -62,6 +62,9 @@
unsigned extsync : 1;
unsigned bcast : 1;
unsigned laced : 1;
+ unsigned cw : 1;
+ unsigned ccw : 1;
+ unsigned ud : 1;
unsigned dblscan : 1;
unsigned grayscale : 1;
/* scanrates */
diff -Naur fbset-orig/modes.l fbset-2.1/modes.l
--- fbset-orig/modes.l Wed Jun 23 22:09:48 1999
+++ fbset-2.1/modes.l Sat Sep 7 11:37:09 2002
@@ -41,6 +41,9 @@
{ "bcast", BCAST, 0 },
{ "laced", LACED, 0 },
{ "double", DOUBLE, 0 },
+ { "cw", CW, 0 },
+ { "ccw", CCW, 0 },
+ { "ud", UD, 0 },
{ "rgba", RGBA, 0 },
{ "nonstd", NONSTD, 0 },
{ "accel", ACCEL, 0 },
diff -Naur fbset-orig/modes.y fbset-2.1/modes.y
--- fbset-orig/modes.y Wed Jun 23 22:09:48 1999
+++ fbset-2.1/modes.y Sat Sep 7 11:34:39 2002
@@ -41,7 +41,7 @@
%start file
%token MODE GEOMETRY TIMINGS HSYNC VSYNC CSYNC GSYNC EXTSYNC BCAST LACED DOUBLE
- RGBA NONSTD ACCEL GRAYSCALE
+ CW CCW UD RGBA NONSTD ACCEL GRAYSCALE
ENDMODE POLARITY BOOLEAN STRING NUMBER
%%
@@ -94,6 +94,9 @@
| options bcast
| options laced
| options double
+ | options cw
+ | options ccw
+ | options ud
| options rgba
| options nonstd
| options accel
@@ -145,6 +148,24 @@
double : DOUBLE BOOLEAN
{
VideoMode.dblscan = $2;
+ }
+ ;
+
+cw : DOUBLE CW
+ {
+ VideoMode.cw = $2;
+ }
+ ;
+
+ccw : DOUBLE CCW
+ {
+ VideoMode.ccw = $2;
+ }
+ ;
+
+ud : DOUBLE UD
+ {
+ VideoMode.ud = $2;
}
;
-------------------------------------------------------
This sf.net email is sponsored by: OSDN - Tired of that same old
cell phone? Get a new here for FREE!
https://www.inphonic.com/r.asp?r=sourceforge1&refcode1=vs3390
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2002-09-09 14:22 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2002-09-09 14:23 [Patch 4] Console Rotation Antonino Daplas
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.