forked from KolibriOS/kolibrios
Upload "mousepos" utility
git-svn-id: svn://kolibrios.org@9914 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
d23a080c99
commit
3dc259f833
99
programs/other/mousepos/mousepos.asm
Executable file
99
programs/other/mousepos/mousepos.asm
Executable file
@ -0,0 +1,99 @@
|
||||
include "../../macros.inc"
|
||||
include "../../KOSfuncs.inc"
|
||||
|
||||
KOS_APP_START
|
||||
|
||||
CODE
|
||||
|
||||
mcall SF_SYSTEM, SSF_WINDOW_BEHAVIOR, SSSF_SET_WB, -1, 1
|
||||
mcall SF_STYLE_SETTINGS, SSF_GET_COLORS, syscl, sizeof.system_colors
|
||||
mcall SF_SET_EVENTS_MASK, EVM_REDRAW + EVM_MOUSE + EVM_KEY
|
||||
mcall SF_KEYBOARD, SSF_SET_INPUT_MODE, 1
|
||||
|
||||
wait_event:
|
||||
mcall SF_WAIT_EVENT
|
||||
|
||||
cmp eax, EV_REDRAW
|
||||
jz redraw_event
|
||||
|
||||
cmp eax, EV_MOUSE
|
||||
jz draw_text
|
||||
|
||||
cmp eax, EV_KEY
|
||||
jz key_event
|
||||
|
||||
jmp wait_event
|
||||
|
||||
key_event:
|
||||
mcall SF_GET_KEY
|
||||
cmp eax, 256 ;Escape
|
||||
jnz wait_event
|
||||
mcall SF_TERMINATE_PROCESS
|
||||
|
||||
redraw_event:
|
||||
mcall SF_REDRAW, SSF_BEGIN_DRAW
|
||||
mcall SF_CREATE_WINDOW, <0, WIN_W>, <0, WIN_H>, 0x01000000, 0x1000000, 0
|
||||
mcall SF_DRAW_RECT, <0, WIN_W + 1>, <0, WIN_H + 1>, [syscl.work]
|
||||
mcall SF_REDRAW, SSF_END_DRAW
|
||||
|
||||
draw_text:
|
||||
; Draw labels
|
||||
mov ecx, 0xF0000000
|
||||
or ecx, [syscl.work_text]
|
||||
mcall SF_DRAW_TEXT, <10, 10>, , gxlabel, , [syscl.work]
|
||||
mcall , <10, 30>, , gylabel
|
||||
mcall , <10, 50>, , pidlabel
|
||||
mcall , <10, 70>, , lxlabel
|
||||
mcall , <10, 90>, , lylabel
|
||||
|
||||
; Get mouse porition
|
||||
mcall SF_MOUSE_GET, SSF_SCREEN_POSITION
|
||||
push eax
|
||||
|
||||
; Draw coords
|
||||
mov esi, 0x50000000
|
||||
or esi, [syscl.work_text]
|
||||
xor ecx, ecx
|
||||
mov cx, [esp + 2]
|
||||
mcall SF_DRAW_NUMBER, 0x00040000, , <102, 10>
|
||||
mov cx, [esp]
|
||||
mcall , , , <102, 30>
|
||||
|
||||
; Get pixel owner
|
||||
xor ebx, ebx
|
||||
mov bx, [esp + 2]
|
||||
mov cx, [esp]
|
||||
mcall SF_GET_PIXEL_OWNER
|
||||
|
||||
; Draw pixel owner
|
||||
xchg ecx, eax
|
||||
mcall SF_DRAW_NUMBER, 0x00040000, , <102, 50>
|
||||
|
||||
mcall SF_THREAD_INFO, pinf
|
||||
|
||||
xor ecx, ecx
|
||||
mov cx, [esp + 2]
|
||||
sub ecx, [pinf.box.left]
|
||||
mcall SF_DRAW_NUMBER, 0x00040000, , <102, 70>
|
||||
mov cx, [esp]
|
||||
sub ecx, [pinf.box.top]
|
||||
mcall , , , <102, 90>
|
||||
|
||||
pop eax
|
||||
jmp wait_event
|
||||
|
||||
DATA
|
||||
|
||||
WIN_W = 200
|
||||
WIN_H = 150
|
||||
gxlabel db 'Global X:', 0
|
||||
gylabel db 'Global Y:', 0
|
||||
lxlabel db 'Local X:', 0
|
||||
lylabel db 'Local Y:', 0
|
||||
pidlabel db 'PID:', 0
|
||||
|
||||
syscl system_colors
|
||||
pinf process_information
|
||||
|
||||
UDATA
|
||||
KOS_APP_END
|
Loading…
Reference in New Issue
Block a user