Subversion Repositories Kolibri OS

Rev

Rev 6359 | Rev 6364 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. ;---------------------------------------------
  2. ;-------------interraction MOUSE--------------
  3. ;---------------------------------------------
  4. mouse:
  5.         stdcall [kmainmenu_dispatch_cursorevent], [main_menu]
  6.  
  7.         or ecx,-1
  8.         mcall SF_THREAD_INFO,procinfo
  9.        
  10.         mov     eax,[procinfo+70] ;staus of window
  11.         test eax,100b
  12.         jne     still
  13.        
  14.         call GetMouseCoordinats
  15. ;panel
  16.         mov     edx,[Window_SizeX]
  17.         sub     edx,5
  18.  
  19.         ;cmp ebx,0
  20.         ;jle no_panel
  21.  
  22.         cmp ebx,ci_panel_y_pos
  23.         jae no_panel
  24.  
  25.         cmp     eax,5
  26.         jle     no_panel
  27.  
  28.         cmp     eax,edx
  29.         jae     no_panel
  30.  
  31.         call GetMouseCoordinats
  32.         jmp     panel_interraction
  33.  
  34. no_panel:
  35.         cmp     [Panel_flag],0
  36.         jz      no_redraw_panel
  37.  
  38.         jmp     panel_interraction
  39.  
  40. no_redraw_panel:
  41.         call GetMouseCoordinats
  42.         mov     eax,[MouseX]
  43.         mov     ebx,[MouseY]
  44.         mov     ecx,[WorkScreen_SizeX]
  45.         mov     edx,[WorkScreen_SizeY]
  46.         add     ecx,ci_scrollh_coord_x_min
  47.         add     edx,ci_scrollv_coord_y_min
  48.  
  49.         cmp     eax,ecx
  50.         jae     mouse_scroll
  51.  
  52.         cmp     ebx,edx
  53.         jae     mouse_scroll
  54.         jmp     no_scrollers
  55.  
  56. mouse_scroll:
  57.         mov     [exit_from_work_arrea],1 ;mouse situated after work arrea
  58. ;scrollers
  59.         call    GetMouseClick
  60.         cmp     eax,1
  61.         jne     no_click
  62.  
  63.         call    GetMouseCoordinats
  64. ;interraction with horizontal scroller
  65.         mov     eax,[Scroll1CoordinatX]
  66.         mov     ebx,[Scroll1CoordinatY]
  67.         mov     ecx,[MouseX]
  68.         mov     edx,[MouseY]
  69.         mov     esi,[Scroll1MaxSizeX]
  70.         mov     edi,[Scroll1MaxSizeY]
  71.         call    columnus
  72.         test    eax,eax
  73.         jz      no_horizontal
  74.  
  75.         mov     eax,ci_scrollh_coord_x_min
  76.         mov     ebx,[Scroll1CoordinatY]
  77.         mov     ecx,[Scroll1MaxSizeX]
  78.         inc ecx
  79.         mov     edx,ci_scroll_dim-6
  80.         mov     esi,7
  81.         call draw_volume_rectangle ; horizontal scrollbar clear
  82.  
  83.         mov     eax,[MouseX]
  84.         mov     ebx,[Scroll1SizeX]
  85.         shr     ebx,1
  86.         sub     eax,ebx
  87.         mov     ecx,[MouseX]
  88.         add     ecx,ebx
  89.         mov     edx,ci_scrollh_coord_x_min
  90.         add     edx,[Scroll1MaxSizeX]
  91.         mov     [Scroll1CoordinatX],eax
  92.         sub     eax,ci_scrollh_coord_x_min
  93.         jns     no_min_scroll
  94.  
  95.         mov     [Scroll1CoordinatX],ci_scrollh_coord_x_min
  96.  
  97. no_min_scroll:
  98.         cmp     ecx,edx
  99.         jl      no_max_scroll
  100.  
  101.         sub     edx,ebx
  102.         sub     edx,ebx
  103.         mov     [Scroll1CoordinatX],edx
  104.  
  105. no_max_scroll:
  106.         mov     eax,[Scroll1CoordinatX]
  107.         sub     eax,ci_scrollh_coord_x_min
  108.         mov     ebx,[Picture_SizeX]
  109.         imul    eax,ebx
  110.         mov     ebx,[Scroll1MaxSizeX]
  111.         cdq
  112.         idiv    ebx
  113.         mov     [PosX],eax
  114.         jmp     no_vertical
  115.  
  116. no_horizontal:
  117.         mov     eax,[Scroll2CoordinatX]
  118.         mov     ebx,[Scroll2CoordinatY]
  119.         mov     ecx,[MouseX]
  120.         mov     edx,[MouseY]
  121.         mov     esi,[Scroll2MaxSizeX]
  122.         mov     edi,[Scroll2MaxSizeY]
  123.         call    columnus
  124.         test    eax,eax
  125.         jz      no_vertical
  126.  
  127.         mov     eax,[Scroll2CoordinatX]
  128.         mov     ebx,ci_scrollv_coord_y_min
  129.         mov     ecx,ci_scroll_dim-6
  130.         mov     edx,[Scroll2MaxSizeY]
  131.         inc edx
  132.         mov     esi,7
  133.         call draw_volume_rectangle ; vertical scrollbar clear
  134.  
  135.         mov     eax,[MouseY]
  136.         mov     ebx,[Scroll2SizeY]
  137.         shr     ebx,1
  138.         sub     eax,ebx
  139.         mov     ecx,[MouseY]
  140.         add     ecx,ebx
  141.         mov     edx,ci_scrollv_coord_y_min
  142.         add     edx,[Scroll2MaxSizeY]
  143.         mov     [Scroll2CoordinatY],eax
  144.  
  145.         sub     eax,ci_scrollv_coord_y_min
  146.         jns     no_min_scroll2
  147.  
  148.         mov     [Scroll2CoordinatY],ci_scrollv_coord_y_min
  149.  
  150. no_min_scroll2:
  151.         cmp     ecx,edx
  152.         jl      no_max_scroll2
  153.  
  154.         sub     edx,ebx
  155.         sub     edx,ebx
  156.         mov     [Scroll2CoordinatY],edx
  157.  
  158. no_max_scroll2:
  159.         mov     eax,[Scroll2CoordinatY]
  160.         sub     eax,ci_scrollv_coord_y_min
  161.         mov     ebx,[Picture_SizeY]
  162.         imul    eax,ebx
  163.         mov     ebx,[Scroll2MaxSizeY]
  164.         cdq
  165.         idiv    ebx
  166.         mov     [PosY],eax
  167.  
  168. no_vertical:
  169.         call    CalculatePositionScreen
  170.         call    draw_scrollers
  171.         call    MovePictureToWorkScreen
  172.  
  173. no_click:
  174.         jmp     still
  175.  
  176. no_scrollers:
  177.         mov     eax,[MouseX]
  178.         mov     ebx,[MouseY]
  179.         mov     ecx,[Window_SizeX]
  180.         mov     edx,[Window_SizeY]
  181.         sub     ecx,36
  182.         sub     edx,35
  183.  
  184.         cmp     eax,ci_scrollh_coord_x_min
  185.         jle     not_work_arrea
  186.  
  187.         cmp     eax,ecx
  188.         jae     not_work_arrea
  189.  
  190.         cmp     ebx,ci_scrollv_coord_y_min
  191.         jle     not_work_arrea
  192.  
  193.         cmp     ebx,edx
  194.         jae     not_work_arrea
  195.         jmp     mouse_in_work_arrea
  196.  
  197. not_work_arrea:
  198.         mov     [exit_from_work_arrea],1
  199.         jmp     still
  200.  
  201. mouse_in_work_arrea:
  202.         call    GetScreenCordinats
  203.         call    PrintMousePos
  204.         call    GetMouseClick
  205.         test    eax,eax
  206.         jz      no_use_instruments
  207.  
  208.         cmp     [Activate_instrument],0
  209.         jnz     no_undo___
  210. ;------------begin copy for undo-------------
  211. ;copy bufer number 2 to bufer number 0
  212.         mov edi,[PointerToCopyPicture2]
  213.         mov esi,[PointerToPicture]
  214.         mov ecx,[Picture_SizeX]
  215.         imul ecx,[Picture_SizeY]
  216.         lea ecx,[ecx+ecx*2]
  217.         mov ebx,ecx
  218.         shr ecx,2
  219.         cld
  220.         rep movsd
  221.         mov ecx,ebx
  222.         and ecx,3
  223.         rep movsb
  224.         ;call MovePictureToWorkScreen
  225. ;rotate bufers +1
  226.         and     [number_undo],0 ;erase all undo
  227.         mov eax,[PointerToPicture]
  228.         mov ebx,[PointerToCopyPicture]
  229.         mov ecx,[PointerToCopyPicture2]
  230.         mov [PointerToPicture],ecx
  231.         mov [PointerToCopyPicture],eax
  232.         mov [PointerToCopyPicture2],ebx
  233. ;--------------end copy for undo-------------
  234. no_undo___:
  235.         call TakeButtonInstruments
  236.         jmp still
  237.  
  238. no_use_instruments:
  239.         mov     eax,[Current_instrument]
  240.         and     [Activate_instrument],0
  241.         jmp     still
  242. ;-----------------------------------------------
  243. ;---------get mouse cordinats-------------------
  244. ;-----------------------------------------------
  245. GetMouseCoordinats:
  246.         mcall SF_MOUSE_GET,SSF_WINDOW_POSITION
  247.         mov     ebx,eax
  248.         shr     eax,16
  249.         and     ebx,0xffff
  250.         mov     [MouseX],eax
  251.         mov     [MouseY],ebx
  252.         ret
  253. ;------------------------------------------------
  254. ;-------get mouse attributs----------------------
  255. ;------------------------------------------------
  256. GetMouseClick:
  257.         mcall SF_MOUSE_GET,SSF_BUTTON
  258.         ret