Subversion Repositories Kolibri OS

Rev

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

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