Re: Mouse cursor

new topic     » goto parent     » topic index » view thread      » older message » newer message

At 18:01 97-06-09 -0600, you wrote:
>---------------------- Information from the mail header -----------------------
>Sender:       Euphoria Programming for MS-DOS <EUPHORIA at
>MIAMIU.ACS.MUOHIO.EDU>
>Poster:       William Eiten <atompunk at ROF.NET>
>Subject:      Mouse cursor
>-------------------------------------------------------------------------------
>
>> Here's my question:
>>
>> Does anyone know how to change the shape and the size of the mouse in
>> 320*200 mode (or mode 19). I do no understant mousecur.e
>
>I have had the same question for a little while.  I have seen some examples
>in QBasic, but haven't been able to convert them.  Thank you for any
>replies.
>
>William
>

------------------------- demo -----------------------------------------

-- changing mouse cursor in graphics_mode 19
include image.e
include mouse.e
include mousecur.e

atom junk
junk = graphics_mode(19)
bk_color(BLUE)
clear_screen()
puts(1,"move mouse pointer to change shape.\n")
for i = 1 to 9   do
    draw_line(WHITE,{{i*32,0},{i*32,199}})
end for
for i = 1 to  2 do
    draw_line(WHITE,{{0,i*70},{319,i*70}})
end for
mouse_pointer(1)
object mouse
integer x,y,n
while 1 do
    if get_key() = 27 then
        exit
    end if
    mouse = get_mouse()
    if sequence(mouse) then
        x = mouse[2]
        y = mouse[3]
        n = floor(y/70)*10+floor(x/64) + 1 --note x/64 not x/32
        if n > 27 then
            n = 27
        end if
        Change_cursor(n)
    end if
end while

junk = graphics_mode(-1)

-----  end of code -----------------------------

if the question was how to design your own cursor shape I'll explain you the
structure of the sequence use by mousecur.e

mouse_cursor = {{},x,y}
mouse_cursor[1] = 64 bytes (32 screen mask, 32 cursor mask)
mouse_cursor[2] = hot spot x coord.
mouse_cursor[3] = hot sport y coord.

a mouse cursor is made  of a screen mask , a cursor mask and a hot spot.

cursor are 16 by 16 bits array.

so the first 32 bytes are the screen mask, the next 32 bytes are the cursor
mask and
the last 2 number are the coordinates (x,y) of the hot spot.  The hot spot
is the active point when you click over something.

truth table

  screen mask    cursor mask       screen result
    bit           bit               bit
-----------------------------------------------------
     0                0               0
     0                1               1
     1                0               unchanged
     1                1               inverted


 here an example:

  ARROW

   screen mask
----------------
1001111111111111  #9F,#FF,
1000111111111111  #8F,#FF,
1000011111111111  #87,#FF,
1000001111111111  #83,#FF,
1000000111111111  #81,#FF,
1000000011111111  #80,#FF,
1000000001111111  #80,#7F,
1000000000111111  #80,#3F,
1000000000011111  #80,#1F
1000000000001111  #80,#0F,
1000000011111111  #80,#FF,
1000100011111111  #88,#FF,
1001100001111111  #98,#7F,
1111110000111111  #FC,#3F,
1111110000111111  #FC,#3F,
1111111000111111  #FE,#3F,

  cursor mask
----------------
0000000000000000  #00,#00,
0010000000000000  #20,#00,
0011000000000000  #30,#00,
0011100000000000  #38,#00,
0011110000000000  #3C,#00,
0011111000000000  #3E,#00,
0011111100000000  #3F,#00,
0011111110000000  #3F,#80,
0011111111000000  #3F,#C0,
0011111000000000  #3E,#00,
0011011000000000  #33,#00,
0010001100000000  #23,#00,
0000001100000000  #03,#00,
0000000110000000  #01,#80,
0000000110000000  #01,#80,
0000000000000000  #00,#00

hot spot x = 1  hot spot y = 0



Jacques Deschenes
Baie-Comeau, Quebec
Canada
desja at quebectel.com

new topic     » goto parent     » topic index » view thread      » older message » newer message

Search



Quick Links

User menu

Not signed in.

Misc Menu