Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. include "../../macros.inc"
  2. include "../../KOSfuncs.inc"
  3.  
  4. KOS_APP_START
  5.  
  6. CODE
  7.  
  8. mcall SF_SYSTEM, SSF_WINDOW_BEHAVIOR, SSSF_SET_WB, -1, 1
  9. mcall SF_STYLE_SETTINGS, SSF_GET_COLORS, syscl, sizeof.system_colors
  10. mcall SF_SET_EVENTS_MASK, EVM_REDRAW + EVM_MOUSE + EVM_KEY
  11. mcall SF_KEYBOARD, SSF_SET_INPUT_MODE, 1
  12.  
  13. wait_event:
  14.         mcall SF_WAIT_EVENT
  15.        
  16.         cmp eax, EV_REDRAW
  17.         jz redraw_event
  18.        
  19.         cmp eax, EV_MOUSE
  20.         jz draw_text
  21.        
  22.         cmp eax, EV_KEY
  23.         jz key_event
  24.  
  25.         jmp wait_event
  26.  
  27. key_event:
  28.         mcall SF_GET_KEY
  29.         cmp eax, 256 ;Escape
  30.         jnz wait_event
  31.         mcall SF_TERMINATE_PROCESS
  32.  
  33. redraw_event:
  34.         mcall SF_REDRAW, SSF_BEGIN_DRAW
  35.         mcall SF_CREATE_WINDOW, <0, WIN_W>, <0, WIN_H>, 0x01000000, 0x1000000, 0
  36.         mcall SF_DRAW_RECT, <0, WIN_W + 1>, <0, WIN_H + 1>, [syscl.work]
  37.         mcall SF_REDRAW, SSF_END_DRAW
  38.  
  39. draw_text:
  40.         ; Draw labels
  41.         mov ecx, 0xF0000000
  42.         or ecx, [syscl.work_text]
  43.         mcall SF_DRAW_TEXT, <10, 10>, , gxlabel, , [syscl.work]
  44.         mcall , <10, 30>, , gylabel
  45.         mcall , <10, 50>, , pidlabel
  46.         mcall , <10, 70>, , lxlabel
  47.         mcall , <10, 90>, , lylabel
  48.        
  49.         ; Get mouse porition
  50.         mcall SF_MOUSE_GET, SSF_SCREEN_POSITION
  51.         push eax
  52.        
  53.         ; Draw coords
  54.         mov esi, 0x50000000
  55.         or esi, [syscl.work_text]
  56.         xor ecx, ecx
  57.         mov cx, [esp + 2]
  58.         mcall SF_DRAW_NUMBER, 0x00040000, , <102, 10>
  59.         mov cx, [esp]
  60.         mcall , , , <102, 30>
  61.        
  62.         ; Get pixel owner
  63.         xor ebx, ebx
  64.         mov bx, [esp + 2]
  65.         mov cx, [esp]
  66.         mcall SF_GET_PIXEL_OWNER
  67.        
  68.         ; Draw pixel owner
  69.         xchg ecx, eax
  70.         mcall SF_DRAW_NUMBER, 0x00040000, , <102, 50>
  71.        
  72.         mcall SF_THREAD_INFO, pinf
  73.        
  74.         xor ecx, ecx
  75.         mov cx, [esp + 2]
  76.         sub ecx, [pinf.box.left]
  77.         mcall SF_DRAW_NUMBER, 0x00040000, , <102, 70>
  78.         mov cx, [esp]
  79.         sub ecx, [pinf.box.top]
  80.         mcall , , , <102, 90>
  81.        
  82.         pop eax
  83.         jmp wait_event
  84.  
  85. DATA
  86.  
  87. WIN_W = 200
  88. WIN_H = 150
  89. gxlabel db 'Global X:', 0
  90. gylabel db 'Global Y:', 0
  91. lxlabel db 'Local X:', 0
  92. lylabel db 'Local Y:', 0
  93. pidlabel db 'PID:', 0
  94.  
  95. syscl system_colors
  96. pinf process_information
  97.  
  98. UDATA
  99. KOS_APP_END
  100.