[openfirmware] [commit] r2754 - ofw/gui

repository service svn at openfirmware.info
Thu Dec 8 13:43:43 CET 2011


Author: wmb
Date: Thu Dec  8 13:43:42 2011
New Revision: 2754
URL: http://tracker.coreboot.org/trac/openfirmware/changeset/2754

Log:
GUI mouse driver - support absolutely-addressed pointers like touchscreens.

Modified:
   ofw/gui/mouse.fth

Modified: ofw/gui/mouse.fth
==============================================================================
--- ofw/gui/mouse.fth	Thu Dec  8 13:43:38 2011	(r2753)
+++ ofw/gui/mouse.fth	Thu Dec  8 13:43:42 2011	(r2754)
@@ -3,6 +3,8 @@
 
 headerless
 
+false value mouse-absolute?  \ True if coordinates are absolute
+
 \ Current mouse cursor position
 
 0 value xpos  0 value ypos
@@ -134,10 +136,12 @@
 : remove-mouse-cursor  ( -- )
    hardware-cursor?  if  " cursor-off" $call-screen  exit  then
    mouse-ih 0=  if  exit  then
+   mouse-absolute?  if  exit  then
    xpos ypos  old-rect  put-cursor
 ;
 : draw-mouse-cursor  ( -- )
    mouse-ih 0=  if  exit  then
+   mouse-absolute?  if  exit  then
    hardware-cursor?  if
       xpos ypos " cursor-xy!" $call-screen
       exit
@@ -152,6 +156,7 @@
 : clamp  ( n min max - m )  rot min max  ;
 
 : update-position  ( x y -- )
+   mouse-absolute?  if  to ypos  to xpos  exit  then
    2dup or 0=  if  2drop exit  then  \ Avoid flicker if there is no movement
 
    \ Minimize the time the cursor is down by doing computation in advance
@@ -184,6 +189,7 @@
    close-mouse?  if
       mouse-ih close-dev
       0 to mouse-ih
+      false to mouse-absolute?
       hardware-cursor?  if
 	 false to hardware-cursor?
 	 " cursor-off" $call-screen
@@ -196,7 +202,13 @@
       mouse-ih  0=  if
          " /mouse" open-dev to mouse-ih
       then
-      mouse-ih  if  alloc-mouse-cursor  then
+      mouse-ih  if
+         " absolute?" mouse-ih  ['] $call-method catch  if  ( x x x )
+            3drop  false
+         then                     ( absolute? )
+         to mouse-absolute?
+         mouse-absolute?  0=  if  alloc-mouse-cursor  then
+      then
    then
 ;
 : mouse-event?  ( -- false | x y buttons true )



More information about the openfirmware mailing list