Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1.  
  2. pb_control_data_size              = 34
  3. pb_redraw_all                     = 10000000b
  4. pb_redraw_all_off                 = 01111111b
  5. pb_special_progress_on            = 1b
  6. pb_special_progress_off           = 11111110b
  7.  
  8. ;****************************************************
  9. ;****************craete ProgressBar********************
  10. ;****************************************************
  11. ;IN
  12. ;pointer to parend
  13. ;pointer to ProgressBar's structure
  14. ;OUT
  15. ;pointer to initialized control
  16. align 4
  17.  
  18. craete_progress_bar:
  19.  
  20.       mov ebx,[esp+4]
  21.       mov eax,[esp+8]
  22.  
  23.       mov [PointerToStructureForProgressBar],eax
  24.  
  25.       mov eax,control_header_size+pb_control_data_size
  26.       call craete_control
  27.  
  28.       ;set all EditBox's parameters in control
  29.       mov [eax],dword progress_bar
  30.  
  31.       mov ecx,pb_control_data_size
  32.       mov esi,[PointerToStructureForProgressBar]
  33.       mov edi,eax
  34.       add edi,control_header_size
  35.       rep movsb
  36.  
  37.       call get_skin_height
  38.  
  39.       mov ebx,[PointerToStructureForProgressBar]
  40.       mov ecx,[ebx+10]  ;x
  41.       mov edx,[ebx+14]  ;y
  42.       mov esi,[ebx+18]  ;size x
  43.       mov edi,[ebx+22]  ;size y
  44.       add ecx,border_width
  45.       add edx,[skin_height]
  46.       ;copy information to control
  47.       mov [eax+24],ecx
  48.       mov [eax+28],edx
  49.       mov [eax+32],esi
  50.       mov [eax+36],edi
  51.  
  52.       ret 8
  53.  
  54. ;****************************************************
  55. ;*****************Draw ProgressBar********************
  56. ;****************************************************
  57. ;IN
  58. ;pointer to control of ProgressBar
  59. ;message
  60. ;OUT
  61. ;not returned value
  62. align 4
  63.  
  64. progress_bar:
  65.  
  66.       ;get message
  67.       mov eax,[esp+8]
  68.  
  69.       ;get pointer to control of button
  70.       mov esi,[esp+4]
  71.       mov [PointerForProgressBar],esi
  72.  
  73.       ;copy control to local control
  74.       add esi,control_header_size
  75.       mov edi,dword ProgressBar
  76.       mov ecx,pb_control_data_size
  77.       rep movsb
  78.  
  79.  
  80.       push eax
  81.       ;load coordinats and size from control
  82.       mov eax,[PointerForProgressBar]
  83.       mov ebx,[eax+24]           ;x
  84.       mov ecx,[eax+28]           ;y
  85.       mov edx,[eax+32]           ;size x
  86.       mov esi,[eax+36]           ;size y
  87.       ;set current coordinats and sizes in EeditBox
  88.       mov [ProgressBar.x],ebx
  89.       mov [ProgressBar.y],ecx
  90.       mov [ProgressBar.sizex],edx
  91.       mov [ProgressBar.sizey],esi
  92.  
  93.       pop eax
  94.  
  95.  
  96.       cmp [eax],dword -1
  97.       jne no_destroy_progress_bar
  98.  
  99.       jmp exit_progress_bar
  100.       no_destroy_progress_bar:
  101.  
  102.       cmp [eax],dword 1
  103.       jne no_redraw_all_progress_bar
  104.  
  105.          or [ProgressBar.type],pb_redraw_all
  106.  
  107.       no_redraw_all_progress_bar:
  108.  
  109.       cmp [eax],dword 3
  110.       jne no_special_message_progress_bar
  111.  
  112.          or [ProgressBar.type],pb_special_progress_on
  113.  
  114.       no_special_message_progress_bar:
  115.  
  116.       xor eax,eax
  117.       mov al,[ProgressBar.type]
  118.       and al,pb_redraw_all
  119.       test al,al
  120.       jz no_draw_all_progress_bar
  121.  
  122.          and [ProgressBar.type],pb_redraw_all_off
  123.  
  124.           call draw_all_progress_bar
  125.  
  126.          jmp exit_progress_bar
  127.  
  128.       no_draw_all_progress_bar:
  129.  
  130.       xor eax,eax
  131.       mov al,[ProgressBar.type]
  132.       and al,pb_special_progress_on
  133.       test al,al
  134.       jz no_draw_progress_bar
  135.  
  136.          and [ProgressBar.type],pb_special_progress_off
  137.  
  138.          call draw_progress
  139.  
  140.       no_draw_progress_bar:
  141.  
  142.       exit_progress_bar:
  143.  
  144.       ret 8
  145.  
  146. draw_all_progress_bar:
  147.  
  148.          mov eax,[ProgressBar.color3]
  149.          mov ebx,dword 0xffffff
  150.          mov ecx,20
  151.          mov edx,dword colors_table1
  152.          call gradient
  153.  
  154.          mov eax,13
  155.          mov ebx,[ProgressBar.x]
  156.          mov ecx,[ProgressBar.y]
  157.          mov edx,[ProgressBar.color1]
  158.          shl ebx,16
  159.          shl ecx,16
  160.          add ebx,[ProgressBar.sizex]
  161.          add ecx,[ProgressBar.sizey]
  162.          mcall
  163.  
  164.          mov eax,[ProgressBar.x]
  165.          mov ebx,[ProgressBar.y]
  166.          add eax,[ProgressBar.sizex]
  167.          add ebx,[ProgressBar.sizey]
  168.          mov [v],eax    ;v=x+sizex
  169.          mov [v2],ebx   ;v2=y+sizey
  170.  
  171.          ;dark lines
  172.          mov eax,[ProgressBar.color3]
  173.          and eax,0xffffff
  174.          mov [Line.color],eax
  175.          mov [Pixel.color],eax
  176.  
  177.          ;(x+1,y)-(x+sizex-1,y)
  178.          mov eax,[ProgressBar.x]
  179.          mov ebx,[ProgressBar.y]
  180.          mov ecx,[v]
  181.          add eax,1
  182.          sub ecx,1
  183.          mov [Line.x1],eax
  184.          mov [Line.x2],ecx
  185.          mov [Line.y1],ebx
  186.          mov [Line.y2],ebx
  187.          call DrawLine
  188.  
  189.          ;(x+sizex,y+1)-(x+sizex,y+sizey-1)
  190.          mov eax,[v]
  191.          mov ebx,[v2]
  192.          mov ecx,[ProgressBar.y]
  193.          add ecx,1
  194.          sub ebx,1
  195.          mov [Line.x1],eax
  196.          mov [Line.x2],eax
  197.          mov [Line.y1],ecx
  198.          mov [Line.y2],ebx
  199.          call DrawLine
  200.  
  201.          ;(x+1,y+sizey)-(x+sizex-1,y+sizey)
  202.          mov eax,[ProgressBar.x]
  203.          mov ebx,[v]
  204.          mov ecx,[v2]
  205.          add eax,1
  206.          sub ebx,1
  207.          mov [Line.x1],eax
  208.          mov [Line.x2],ebx
  209.          mov [Line.y1],ecx
  210.          mov [Line.y2],ecx
  211.          call DrawLine
  212.  
  213.          ;(x,y+1)-(x,y_sizey-1)
  214.          mov eax,[ProgressBar.x]
  215.          mov ebx,[ProgressBar.y]
  216.          mov ecx,[v2]
  217.          add ebx,1
  218.          sub ecx,1
  219.          mov [Line.x1],eax
  220.          mov [Line.x2],eax
  221.          mov [Line.y1],ebx
  222.          mov [Line.y2],ecx
  223.          call DrawLine
  224.  
  225.          ;(x+1,y+1)-(x+1,y+2)
  226.          mov eax,[ProgressBar.x]
  227.          mov ebx,[ProgressBar.y]
  228.          mov ecx,ebx
  229.          add eax,1
  230.          add ebx,1
  231.          add ecx,2
  232.          mov [Line.x1],eax
  233.          mov [Line.x2],eax
  234.          mov [Line.y1],ebx
  235.          mov [Line.y2],ecx
  236.          call DrawLine
  237.  
  238.          ;(x+2,y+1)
  239.          mov eax,[ProgressBar.x]
  240.          mov ebx,[ProgressBar.y]
  241.          add eax,2
  242.          add ebx,1
  243.          mov [Pixel.x],eax
  244.          mov [Pixel.y],ebx
  245.          call DrawPixel
  246.  
  247.          ;(x+1,y+sizey-1)-(x+1,y+sizey-2)
  248.          mov eax,[ProgressBar.x]
  249.          mov ebx,[v2]
  250.          mov ecx,ebx
  251.          add eax,1
  252.          sub ebx,1
  253.          sub ecx,2
  254.          mov [Line.x1],eax
  255.          mov [Line.x2],eax
  256.          mov [Line.y1],ebx
  257.          mov [Line.y2],ecx
  258.          call DrawLine
  259.  
  260.          ;(x+2,y+sizey-1)
  261.          mov eax,[ProgressBar.x]
  262.          mov ebx,[v2]
  263.          add eax,2
  264.          sub ebx,1
  265.          mov [Pixel.x],eax
  266.          mov [Pixel.y],ebx
  267.          call DrawPixel
  268.  
  269.          ;(x+sizex-1,y+1)-(x+sizex-1,y+2)
  270.          mov eax,[v]
  271.          mov ebx,[ProgressBar.y]
  272.          mov ecx,ebx
  273.          sub eax,1
  274.          add ebx,1
  275.          add ecx,2
  276.          mov [Line.x1],eax
  277.          mov [Line.x2],eax
  278.          mov [Line.y1],ebx
  279.          mov [Line.y2],ecx
  280.          call DrawLine
  281.  
  282.          ;(x+sizex-2,y+1)
  283.          mov eax,[v]
  284.          mov ebx,[ProgressBar.y]
  285.          sub eax,2
  286.          add ebx,1
  287.          mov [Pixel.x],eax
  288.          mov [Pixel.y],ebx
  289.          call DrawPixel
  290.  
  291.          ;(x+sizex-1,y+sizey-2)-(x+sizex-1,y+sizey-1)
  292.          mov eax,[v]
  293.          mov ebx,[v2]
  294.          mov ecx,ebx
  295.          sub eax,1
  296.          sub ebx,2
  297.          sub ecx,1
  298.          mov [Line.x1],eax
  299.          mov [Line.x2],eax
  300.          mov [Line.y1],ebx
  301.          mov [Line.y2],ecx
  302.          call DrawLine
  303.  
  304.          ;(x+sizex-2,y+sizey-1)
  305.          mov eax,[v]
  306.          mov ebx,[v2]
  307.          sub eax,2
  308.          sub ebx,1
  309.          mov [Pixel.x],eax
  310.          mov [Pixel.y],ebx
  311.          call DrawPixel
  312.  
  313.          mov eax,[colors_table1+10*3]
  314.          and eax,0xffffff
  315.          mov [Line.color],eax
  316.          mov [Pixel.color],eax
  317.  
  318.          ;(x+3,y+1)-(x+sizex-3,y+1)
  319.          mov eax,[ProgressBar.x]
  320.          mov ebx,[v]
  321.          mov ecx,[ProgressBar.y]
  322.          add ecx,1
  323.          add eax,3
  324.          sub ebx,3
  325.          mov [Line.x1],eax
  326.          mov [Line.x2],ebx
  327.          mov [Line.y1],ecx
  328.          mov [Line.y2],ecx
  329.          call DrawLine
  330.  
  331.          ;(x+2,y+2)
  332.          mov eax,[ProgressBar.x]
  333.          mov ebx,[ProgressBar.y]
  334.          add eax,2
  335.          add ebx,2
  336.          mov [Pixel.x],eax
  337.          mov [Pixel.y],ebx
  338.          call DrawPixel
  339.  
  340.          ;(x+sizex-1,y+3)-(x+sizex-1,y+sizey-3)
  341.          mov eax,[v]
  342.          mov ebx,[v2]
  343.          mov ecx,[ProgressBar.y]
  344.          sub eax,1
  345.          sub ebx,3
  346.          add ecx,3
  347.          mov [Line.x1],eax
  348.          mov [Line.x2],eax
  349.          mov [Line.y1],ecx
  350.          mov [Line.y2],ebx
  351.          call DrawLine
  352.  
  353.          ;(x+sizex-2,y+2)
  354.          mov eax,[v]
  355.          mov ebx,[ProgressBar.y]
  356.          sub eax,2
  357.          add ebx,2
  358.          mov [Pixel.x],eax
  359.          mov [Pixel.y],ebx
  360.          call DrawPixel
  361.  
  362.          ;(x+3,y+sizey-1)-(x+sizex-3,y+sizey-1)
  363.          mov eax,[ProgressBar.x]
  364.          mov ebx,[v]
  365.          mov ecx,[v2]
  366.          sub ebx,3
  367.          sub ecx,1
  368.          add eax,3
  369.          mov [Line.x1],eax
  370.          mov [Line.x2],ebx
  371.          mov [Line.y1],ecx
  372.          mov [Line.y2],ecx
  373.          call DrawLine
  374.  
  375.          ;(x+sizex-2,y+sizey-2)
  376.          mov eax,[v]
  377.          mov ebx,[v2]
  378.          sub eax,2
  379.          sub ebx,2
  380.          mov [Pixel.x],eax
  381.          mov [Pixel.y],ebx
  382.          call DrawPixel
  383.  
  384.          ;(x+1,y+3)-(x+1,y+sizey-3)
  385.          mov eax,[ProgressBar.x]
  386.          mov ebx,[ProgressBar.y]
  387.          mov ecx,[v2]
  388.          add eax,1
  389.          add ebx,3
  390.          sub ecx,3
  391.          mov [Line.x1],eax
  392.          mov [Line.x2],eax
  393.          mov [Line.y1],ebx
  394.          mov [Line.y2],ecx
  395.          call DrawLine
  396.  
  397.          ;(x+2,y+sizey-2)
  398.          mov eax,[ProgressBar.x]
  399.          mov ebx,[v2]
  400.          add eax,2
  401.          sub ebx,2
  402.          mov [Pixel.x],eax
  403.          mov [Pixel.y],ebx
  404.          call DrawPixel
  405.  
  406.          ret
  407.  
  408. draw_progress:
  409.  
  410.          cmp [ProgressBar.progress],dword 0.02
  411.          jae min_size_ok
  412.  
  413.          mov [ProgressBar.progress],dword 0.02
  414.          min_size_ok:
  415.  
  416.          cmp [ProgressBar.progress],dword 1.0
  417.          jle max_size_ok
  418.  
  419.          mov [ProgressBar.progress],dword 1.0
  420.          max_size_ok:
  421.  
  422.          mov eax,[ProgressBar.sizex]
  423.          sub eax,6
  424.          mov [v2],eax
  425.  
  426.          fld [ProgressBar.progress]
  427.          fild [v2]
  428.          fmul st0,st1
  429.          fistp [v3]
  430.          fstp st0
  431.  
  432.          mov eax,[ProgressBar.color2]
  433.          mov ebx,0xffffff
  434.          mov ecx,[ProgressBar.x]
  435.          mov edx,[ProgressBar.y]
  436.          mov esi,[v3]
  437.          mov edi,[ProgressBar.sizey]
  438.          sub edi,4
  439.          shr edi,1
  440.          add ecx,3
  441.          add edx,1
  442.  
  443.          call rectangle_gradient_up
  444.  
  445.          mov eax,[ProgressBar.color2]
  446.          mov ebx,0xffffff
  447.          mov ecx,[ProgressBar.x]
  448.          mov edx,[ProgressBar.y]
  449.          mov esi,[v3]
  450.          mov edi,[ProgressBar.sizey]
  451.          sub edi,4
  452.          shr edi,1
  453.          add ecx,3
  454.          add edx,2
  455.          add edx,edi
  456.  
  457.          call rectangle_gradient_down
  458.  
  459.          ret