[Oberon] Oberon.RemoveMarks

peter at easthope.ca peter at easthope.ca
Sat Mar 1 19:49:24 CET 2014


In ETHO, quoting from Oberon.Mod,
(** Fade the mouse and pointer cursors if located inside the screen area X, Y, W, H. 
This is required before drawing inside the area X, Y, W, H. *)
    PROCEDURE RemoveMarks* (X, Y, W, H: INTEGER);
    BEGIN
      IF (Mouse.X > X - 16) & (Mouse.X < X + W + 16) ...

According to Display, the Arrow pattern is defined in a 
frame of pixels (0..15)x(0..15).  Row 0 is at the bottom. 
Column 0 is at the left.  The tip of the arrow, which is 
the "hot point", is the pixel at column 0, row 15.
The tail of the arrow is 15 pixels to the right of the tip.  

Consider the arrow being in the vicinity of X, the left 
boundary of screen area X, Y, W, H.  I understand (Mouse.X > X - 16), 
up to the secondary question of inclusion of the X boundary. 

Then consider the arrow in the vicinity of X + W, the right 
boundary of the area.  If Mouse.X = X + W then the arrow tip 
and pixels on the left edge of the arrow head are on the left 
boundary of the area.  All other arrow pixels are outside the
area, to the right.  If my reasoning is correct, the condition 
should be (Mouse.X < X + W) or (Mouse.X <= X + W) rather than 
(Mouse.X < X + W + 16).

To my understanding the only harm is a small fraction of 
invocations of FadeCursor(Mouse) being unnecessary.  

For the boundary cases, Mouse.X = X and Mouse.X = X + W, 
I need to study details further.

Regards,               ... Peter E.

-- 
123456789 123456789 123456789 123456789 123456789 123456789 123456789 12
Tel +1 360 639 0202  http://carnot.yi.org/  New address Bcc: peter at easthope. ca




More information about the Oberon mailing list