Subversion Repositories Kolibri OS

Rev

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

  1. ;   *********************************************
  2. ;   *******  DRAW PLAY BAR **********************
  3. ;   *********************************************
  4.  
  5. draw_bar:
  6.     push eax ebp
  7.     mov  eax,[cur_tick]
  8.     test eax,eax
  9.     jz   .ex
  10.     mov  ebp,[coo]
  11.     mov  ebx,[ebp-20]
  12.     mul  ebx
  13.     mov  ebx,[tick_count]
  14.     test ebx,ebx
  15.     jz   .ex
  16.     div  ebx
  17.     mov  ebx,[ebp-16]
  18.     mov  bx,ax
  19.     mov  ecx,[ebp-12]
  20.     mov  edx,0x84706a
  21.     mov  eax,13
  22.     int  0x40
  23.     mov  esi,TOTALTIME_XY
  24.     mov  eax,[tick_count]
  25.     call draw_total_time
  26.   .nobar:
  27.     mov  esi,[ebp+20]
  28.     mov  ebx,[ebp+12]
  29.     mov  ecx,[ebp+16]
  30.     call draw_cur_time
  31.     mov  esi,140 shl 16+(WND_HEIGHT-18)
  32.     sub  ebx,95 shl 16
  33.     add  ecx,(WND_HEIGHT-34)shl 16
  34.     call draw_cur_time
  35.   .ex:
  36.     pop  ebp eax
  37.     ret
  38.  
  39.  
  40.  
  41. ;   *********************************************
  42. ;   *******  Ž…„…‹…ˆ… ˆ Ž’ˆ‘Ž‚Š€ ŽŠ€ *******
  43. ;   *********************************************
  44.  
  45. draw_window:
  46.     mov  eax,12
  47.     mov  ebx,1
  48.     int  0x40
  49.     or   [flag],FL_BOTTRED
  50.     xor  eax,eax
  51.     mov  ebx,100*65536+275
  52.     mov  ecx,200*65536+WND_HEIGHT
  53.     mov  edi,hdr_raw+12
  54.     mov  ebp,[coo]
  55.     test [flag],FL_HIDDEN
  56.     jz   .nohide1
  57.     and  ebx,0xffff
  58.     and  ecx,0xffff
  59.     add  edi,275*14*3
  60.   .nohide1:
  61.     push edi
  62.     mov  edx,WND_BACK
  63.     mov  esi,edx
  64.     mov  edi,edx
  65.     int  0x40
  66.     mov  ecx,[channel]
  67.     shl  ecx,4
  68.     add  cl,[sel_track]
  69.     mcall 47,0x20100,,<191,15>,0xf0f000
  70.     movsx ecx,[octave]
  71.     add   ecx,100
  72.     mcall ,0x30000,,<132,15>
  73.     pop  ebx
  74.     mcall 7,,(275 shl 16+14),0
  75.     mov  esi,0x80ecce7a
  76.  
  77.     mov  eax,8
  78.     mov  ebx,265 shl 16+7
  79.     mov  ecx,3 shl 16+7
  80.     mov  edx,1+1 shl 30
  81.     int  0x40        ; close button
  82.     sub  ebx,10 shl 16
  83.     mov  edx,100+1 shl 30
  84.     int  0x40        ; shade button-101
  85.     sub  ebx,10 shl 16
  86.     add  edx,3
  87.     int  0x40        ; minimize button-103
  88.     sub  ebx,239 shl 16
  89.     inc  edx         ; about button-104
  90.     int  0x40
  91.     xor  esi,esi
  92.     xor  edi,edi
  93.     mov  ecx,3
  94.     pushd [ebp+12]
  95.     pushd [ebp+16]
  96.     call draw_navigation
  97.     add  esp,8
  98.  
  99.     mov  ebx,[ebp-16]
  100.     add  ebx,[ebp-20]
  101.     mov  ecx,[ebp-12]
  102.     add  ecx,[ebp-24]
  103.     mov  esi,0x2c2b46
  104.     mov  edx,2+1 shl 29
  105.     int  0x40
  106.  
  107.     shr  eax,1
  108.  
  109.     mov  ecx,12
  110.     mov  ebx,FN_XY
  111.     mov  edx,[fn_ptr];I_PARAM;filename
  112.     mov  esi,1;[fname_len]
  113.     mov  edi,0x00e200
  114.   .fnlp:
  115.     push ecx
  116.     mcall ,,edi
  117.     add  ebx,1 shl 16
  118.     mcall
  119.     add  ebx,6 shl 16
  120.     inc  edx
  121.     pop  ecx
  122.     loop .fnlp
  123.     add  ebx,5 shl 16
  124.     mcall ,,0xa0a0a0,text,text_end-text
  125.     call draw_bar
  126.     call PL_show
  127.     test [flag],FL_HIDDEN
  128.     jnz  .nohide2
  129.     mov  eax,7
  130.     mov  ebx,btn_raw+12
  131.     mov  ecx,BTNS_SIZE
  132.     mov  edx,BTNS_XY
  133.     int  0x40
  134.   .nohide2:
  135.     mov  esi,FL_SHUFFLE
  136.     mov  edi,btncoords+8
  137.     mov  eax,13
  138.     mov  edx,0xd600
  139.     mov  ecx,2
  140.   .loo3:
  141.     test [flag],esi
  142.     je   .el
  143.     mov  ebx,[edi]
  144.     add  ebx,5 shl 16
  145.     add  ebx,[ebp]
  146.     mov  bx,3
  147.     push ecx
  148.     mov  ecx,[edi+4]
  149.     add  ecx,4 shl 16
  150.     add  ecx,[ebp+4]
  151.     mov  cx,2
  152.     int  0x40
  153.     pop  ecx
  154.   .el:
  155.     add  edi,8
  156.     inc  esi
  157.     loop .loo3
  158.  
  159.   .enddraw:
  160.     mov  eax,12
  161.     mov  ebx,2
  162.     int  0x40
  163.     ret
  164.  
  165. draw_navigation:
  166. ; ebp - coordinates
  167.     push esi edi ecx
  168.     mov  eax,8
  169.  
  170.     mov  ecx,5
  171.     mov  ebx,[ebp]
  172.     add  ebx,[ebp-8]
  173.     add  ebx,esi
  174.     mov  edx,3+1 shl 30
  175.   .btnloo:
  176.     push ecx
  177.     mov  ecx,[ebp+4]
  178.     add  ecx,[ebp-4]
  179.     add  ecx,edi
  180.     int  0x40
  181.     pop  ecx
  182.     add  ebx,[ebp+8]
  183.     inc  edx
  184.     loop .btnloo
  185.     pop  ecx
  186.  
  187.     lea  edi,[ebp+24]
  188.   .btnloo2:
  189.     mov  ebx,[edi]
  190.     add  ebx,[ebp]
  191.     add  ebx,[esp+4]
  192.     push ecx
  193.     mov  ecx,[edi+4]
  194.     add  ecx,[ebp+4]
  195.     add  ecx,[esp+4]
  196.     int  0x40
  197.     pop  ecx
  198.     add  edi,8
  199.     inc  edx
  200.     loop .btnloo2
  201.     pop  edi esi
  202.     ret
  203.  
  204. draw_cur_time:
  205.     pusha
  206.     mcall 13,,,WND_BACK
  207.     mcall 8,,,101+1 shl 29+1 shl 30
  208.     mov  ebx,[tick_count]
  209.     mov  eax,[cur_tick]
  210.     test [flag],FL_REVERSE
  211.     jz   .norev
  212.     xchg eax,ebx
  213.     sub  eax,ebx
  214.     lea  ebx,[esi-6 shl 16]
  215.     push eax
  216.     mcall 4,,0xf000,dots+1,1
  217.     pop  eax
  218.   .norev:
  219.     mov  [esp+28],eax
  220.     popa
  221. draw_total_time:      ; eax -time to show
  222.     pusha
  223.     xor  edx,edx
  224.     mov  ebx,100
  225.     div  ebx
  226.     xor  edx,edx
  227.     mov  ebx,60
  228.     div  ebx
  229.     push edx
  230.     mov  ecx,eax
  231.     mcall 47,0x20000,,esi,0xf000
  232.     pop  ecx
  233.     add  edx,17 shl 16
  234.     int  0x40
  235.     sub  edx,5 shl 16
  236.     mcall 4,edx,esi,dots,1
  237.     popa
  238.     ret
  239.  
  240. BOTT_BTN equ 25 shl 16+18
  241. BOTT_SIZEX equ 25
  242. BOTT_SIZEY equ 18
  243. BOTT_S     equ BOTT_SIZEX*BOTT_SIZEY*3
  244. BOTT_X  equ PL_X
  245. BOTT_Y  equ (WND_HEIGHT-27)
  246. BOTT_SPACE equ 30 shl 16
  247.  
  248. popup db -1
  249.  
  250. draw_bottom:
  251.     pusha
  252.     mcall 13,175,(BOTT_Y-5)shl 16+24,WND_BACK
  253.     add  ebx,(266-30)shl 16-135
  254.     mcall
  255.     mov  ecx,5
  256.     mov  esi,bot_btn
  257.     push esi
  258.     mov  ebx,bottom_raw+12
  259.     xor  eax,eax
  260.   .nxt:
  261.     push ecx
  262.     lodsw
  263.     shl  eax,16
  264.     lea  edx,[eax+BOTT_Y]
  265.     mcall 7,,BOTT_BTN
  266.     add  ebx,BOTT_S*4
  267.     pop  ecx
  268.     cmp  ecx,4
  269.     jne  .noadj
  270.     add  ebx,BOTT_S
  271.   .noadj:
  272.     loop .nxt
  273.     mov  esi,[esp]
  274.     mov  ecx,5
  275.     mov  ebp,BOTT_Y shl 16+BOTT_SIZEY
  276.     mov  edx,20+1 shl 30
  277.   .nxt2:
  278.     push ecx
  279.     lodsw
  280.     shl  eax,16
  281.     lea  ebx,[eax+BOTT_SIZEX+2 shl 16-3]
  282.     mcall 8,,ebp
  283.     inc  edx
  284.     pop  ecx
  285.     loop .nxt2
  286.     pop  esi
  287.     call draw_popup
  288.     popa
  289.     ret
  290.  
  291. draw_popup:
  292.     movsx eax,[popup]
  293.     cmp  eax,0
  294.     jge  .ok
  295.     mov  edx,30+1 shl 31
  296.     mov  ecx,21
  297.     mov  eax,8
  298.   .clr:
  299.     mcall
  300.     inc  edx
  301.     loop .clr
  302.     jmp  .ex
  303.   .ok:
  304.     push eax
  305.     lea  edx,[eax+1 shl 31+20]
  306.     mcall 8
  307.     pop  eax
  308.     mov  ebx,eax
  309.     shl  eax,2
  310.     mov  ecx,3
  311.     cmp  eax,4
  312.     jne  .noadj1
  313.     inc  ecx
  314.   .noadj1:
  315.     cmp  eax,8
  316.     jb   .noadj2
  317.     inc  eax
  318.   .noadj2:
  319.     inc  eax
  320.     push eax
  321.     movzx edx,word[bot_btn+ebx*2]
  322.     shl  edx,16
  323.     add  edx,BOTT_Y
  324.     push edx
  325.   .noadj3:
  326.     imul ebx,eax,BOTT_S
  327.     add  ebx,bottom_raw+12
  328.     push ecx
  329.   .nxt:
  330.     push ecx
  331.     mcall 7,,BOTT_BTN
  332.     add  ebx,BOTT_S
  333.     sub  edx,BOTT_SIZEY
  334.     pop  ecx
  335.     loop .nxt
  336.     pop  ecx ebx edx
  337.     mov  ebp,BOTT_Y shl 16+BOTT_SIZEY
  338.     mov  eax,8
  339.     add  edx,1 shl 30+30
  340.     add  ebx,2 shl 16
  341.     mov  bx,BOTT_SIZEX-3
  342.   .nxt2:
  343.     push ecx
  344.     mcall ,,ebp
  345.     inc  edx
  346.     sub  ebp,BOTT_SIZEY shl 16
  347.     pop  ecx
  348.     loop .nxt2
  349.   .ex:
  350.     ret
  351.  
  352. bot_btn:
  353.     dw 10,40,70,100,240
  354.  
  355. about1:
  356.   db 13,10,'* MIDAMP for MenuetOS v1.0 by Willow, July 2005 *',13,10,0