Subversion Repositories Kolibri OS

Rev

Rev 675 | 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            = 00000001b
  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.          xor eax,eax
  113.          mov al,[ProgressBar.type]
  114.          and al,activate_trap
  115.          test al,al
  116.          jz no_draw_progress_bar
  117.  
  118.            and [ProgressBar.type],deactivate_trap
  119.  
  120.            cmp [ProgressBar.progress],dword 0.02
  121.            jae nofull_redraw
  122.                 call draw_all_progress_bar
  123.            nofull_redraw:
  124.  
  125.            call draw_progress
  126.  
  127.          no_draw_progress_bar:
  128.          jmp exit_progress_bar
  129.  
  130.       no_special_message_progress_bar:
  131.  
  132.       xor eax,eax
  133.       mov al,[ProgressBar.type]
  134.       and al,pb_redraw_all
  135.       test al,al
  136.       jz no_draw_all_progress_bar
  137.  
  138.          and [ProgressBar.type],pb_redraw_all_off
  139.  
  140.           call draw_all_progress_bar
  141.  
  142.          jmp exit_progress_bar
  143.  
  144.       no_draw_all_progress_bar:
  145.  
  146.  
  147.       exit_progress_bar:
  148.  
  149.       mov edi,[PointerForProgressBar]
  150.       add edi,control_header_size
  151.       mov esi,dword ProgressBar
  152.       mov ecx,pb_control_data_size
  153.       rep movsb
  154.  
  155.       ret 8
  156.  
  157. draw_all_progress_bar:
  158.  
  159.          mov eax,[ProgressBar.color3]
  160.          mov ebx,dword 0xffffff
  161.          mov ecx,20
  162.          mov edx,dword colors_table1
  163.          call gradient
  164.  
  165.          mov eax,13
  166.          mov ebx,[ProgressBar.x]
  167.          mov ecx,[ProgressBar.y]
  168.          mov edx,[ProgressBar.color1]
  169.          shl ebx,16
  170.          shl ecx,16
  171.          add ebx,[ProgressBar.sizex]
  172.          add ecx,[ProgressBar.sizey]
  173.          mcall
  174.  
  175.          mov eax,[ProgressBar.x]
  176.          mov ebx,[ProgressBar.y]
  177.          add eax,[ProgressBar.sizex]
  178.          add ebx,[ProgressBar.sizey]
  179.          mov [v],eax    ;v=x+sizex
  180.          mov [v2],ebx   ;v2=y+sizey
  181.  
  182.          ;dark lines
  183.          mov eax,[ProgressBar.color3]
  184.          and eax,0xffffff
  185.          mov [Line.color],eax
  186.          mov [Pixel.color],eax
  187.  
  188.          ;(x+1,y)-(x+sizex-1,y)
  189.          mov eax,[ProgressBar.x]
  190.          mov ebx,[ProgressBar.y]
  191.          mov ecx,[v]
  192.          add eax,1
  193.          sub ecx,1
  194.          mov [Line.x1],eax
  195.          mov [Line.x2],ecx
  196.          mov [Line.y1],ebx
  197.          mov [Line.y2],ebx
  198.          call DrawLine
  199.  
  200.          ;(x+sizex,y+1)-(x+sizex,y+sizey-1)
  201.          mov eax,[v]
  202.          mov ebx,[v2]
  203.          mov ecx,[ProgressBar.y]
  204.          add ecx,1
  205.          sub ebx,1
  206.          mov [Line.x1],eax
  207.          mov [Line.x2],eax
  208.          mov [Line.y1],ecx
  209.          mov [Line.y2],ebx
  210.          call DrawLine
  211.  
  212.          ;(x+1,y+sizey)-(x+sizex-1,y+sizey)
  213.          mov eax,[ProgressBar.x]
  214.          mov ebx,[v]
  215.          mov ecx,[v2]
  216.          add eax,1
  217.          sub ebx,1
  218.          mov [Line.x1],eax
  219.          mov [Line.x2],ebx
  220.          mov [Line.y1],ecx
  221.          mov [Line.y2],ecx
  222.          call DrawLine
  223.  
  224.          ;(x,y+1)-(x,y_sizey-1)
  225.          mov eax,[ProgressBar.x]
  226.          mov ebx,[ProgressBar.y]
  227.          mov ecx,[v2]
  228.          add ebx,1
  229.          sub ecx,1
  230.          mov [Line.x1],eax
  231.          mov [Line.x2],eax
  232.          mov [Line.y1],ebx
  233.          mov [Line.y2],ecx
  234.          call DrawLine
  235.  
  236.          ;(x+1,y+1)-(x+1,y+2)
  237.          mov eax,[ProgressBar.x]
  238.          mov ebx,[ProgressBar.y]
  239.          mov ecx,ebx
  240.          add eax,1
  241.          add ebx,1
  242.          add ecx,2
  243.          mov [Line.x1],eax
  244.          mov [Line.x2],eax
  245.          mov [Line.y1],ebx
  246.          mov [Line.y2],ecx
  247.          call DrawLine
  248.  
  249.          ;(x+2,y+1)
  250.          mov eax,[ProgressBar.x]
  251.          mov ebx,[ProgressBar.y]
  252.          add eax,2
  253.          add ebx,1
  254.          mov [Pixel.x],eax
  255.          mov [Pixel.y],ebx
  256.          call DrawPixel
  257.  
  258.          ;(x+1,y+sizey-1)-(x+1,y+sizey-2)
  259.          mov eax,[ProgressBar.x]
  260.          mov ebx,[v2]
  261.          mov ecx,ebx
  262.          add eax,1
  263.          sub ebx,1
  264.          sub ecx,2
  265.          mov [Line.x1],eax
  266.          mov [Line.x2],eax
  267.          mov [Line.y1],ebx
  268.          mov [Line.y2],ecx
  269.          call DrawLine
  270.  
  271.          ;(x+2,y+sizey-1)
  272.          mov eax,[ProgressBar.x]
  273.          mov ebx,[v2]
  274.          add eax,2
  275.          sub ebx,1
  276.          mov [Pixel.x],eax
  277.          mov [Pixel.y],ebx
  278.          call DrawPixel
  279.  
  280.          ;(x+sizex-1,y+1)-(x+sizex-1,y+2)
  281.          mov eax,[v]
  282.          mov ebx,[ProgressBar.y]
  283.          mov ecx,ebx
  284.          sub eax,1
  285.          add ebx,1
  286.          add ecx,2
  287.          mov [Line.x1],eax
  288.          mov [Line.x2],eax
  289.          mov [Line.y1],ebx
  290.          mov [Line.y2],ecx
  291.          call DrawLine
  292.  
  293.          ;(x+sizex-2,y+1)
  294.          mov eax,[v]
  295.          mov ebx,[ProgressBar.y]
  296.          sub eax,2
  297.          add ebx,1
  298.          mov [Pixel.x],eax
  299.          mov [Pixel.y],ebx
  300.          call DrawPixel
  301.  
  302.          ;(x+sizex-1,y+sizey-2)-(x+sizex-1,y+sizey-1)
  303.          mov eax,[v]
  304.          mov ebx,[v2]
  305.          mov ecx,ebx
  306.          sub eax,1
  307.          sub ebx,2
  308.          sub ecx,1
  309.          mov [Line.x1],eax
  310.          mov [Line.x2],eax
  311.          mov [Line.y1],ebx
  312.          mov [Line.y2],ecx
  313.          call DrawLine
  314.  
  315.          ;(x+sizex-2,y+sizey-1)
  316.          mov eax,[v]
  317.          mov ebx,[v2]
  318.          sub eax,2
  319.          sub ebx,1
  320.          mov [Pixel.x],eax
  321.          mov [Pixel.y],ebx
  322.          call DrawPixel
  323.  
  324.          mov eax,[colors_table1+10*3]
  325.          and eax,0xffffff
  326.          mov [Line.color],eax
  327.          mov [Pixel.color],eax
  328.  
  329.          ;(x+3,y+1)-(x+sizex-3,y+1)
  330.          mov eax,[ProgressBar.x]
  331.          mov ebx,[v]
  332.          mov ecx,[ProgressBar.y]
  333.          add ecx,1
  334.          add eax,3
  335.          sub ebx,3
  336.          mov [Line.x1],eax
  337.          mov [Line.x2],ebx
  338.          mov [Line.y1],ecx
  339.          mov [Line.y2],ecx
  340.          call DrawLine
  341.  
  342.          ;(x+2,y+2)
  343.          mov eax,[ProgressBar.x]
  344.          mov ebx,[ProgressBar.y]
  345.          add eax,2
  346.          add ebx,2
  347.          mov [Pixel.x],eax
  348.          mov [Pixel.y],ebx
  349.          call DrawPixel
  350.  
  351.          ;(x+sizex-1,y+3)-(x+sizex-1,y+sizey-3)
  352.          mov eax,[v]
  353.          mov ebx,[v2]
  354.          mov ecx,[ProgressBar.y]
  355.          sub eax,1
  356.          sub ebx,3
  357.          add ecx,3
  358.          mov [Line.x1],eax
  359.          mov [Line.x2],eax
  360.          mov [Line.y1],ecx
  361.          mov [Line.y2],ebx
  362.          call DrawLine
  363.  
  364.          ;(x+sizex-2,y+2)
  365.          mov eax,[v]
  366.          mov ebx,[ProgressBar.y]
  367.          sub eax,2
  368.          add ebx,2
  369.          mov [Pixel.x],eax
  370.          mov [Pixel.y],ebx
  371.          call DrawPixel
  372.  
  373.          ;(x+3,y+sizey-1)-(x+sizex-3,y+sizey-1)
  374.          mov eax,[ProgressBar.x]
  375.          mov ebx,[v]
  376.          mov ecx,[v2]
  377.          sub ebx,3
  378.          sub ecx,1
  379.          add eax,3
  380.          mov [Line.x1],eax
  381.          mov [Line.x2],ebx
  382.          mov [Line.y1],ecx
  383.          mov [Line.y2],ecx
  384.          call DrawLine
  385.  
  386.          ;(x+sizex-2,y+sizey-2)
  387.          mov eax,[v]
  388.          mov ebx,[v2]
  389.          sub eax,2
  390.          sub ebx,2
  391.          mov [Pixel.x],eax
  392.          mov [Pixel.y],ebx
  393.          call DrawPixel
  394.  
  395.          ;(x+1,y+3)-(x+1,y+sizey-3)
  396.          mov eax,[ProgressBar.x]
  397.          mov ebx,[ProgressBar.y]
  398.          mov ecx,[v2]
  399.          add eax,1
  400.          add ebx,3
  401.          sub ecx,3
  402.          mov [Line.x1],eax
  403.          mov [Line.x2],eax
  404.          mov [Line.y1],ebx
  405.          mov [Line.y2],ecx
  406.          call DrawLine
  407.  
  408.          ;(x+2,y+sizey-2)
  409.          mov eax,[ProgressBar.x]
  410.          mov ebx,[v2]
  411.          add eax,2
  412.          sub ebx,2
  413.          mov [Pixel.x],eax
  414.          mov [Pixel.y],ebx
  415.          call DrawPixel
  416.  
  417.          ret
  418.  
  419. draw_progress:
  420.  
  421.          cmp [ProgressBar.progress],dword 0.02
  422.          jae min_size_ok
  423.  
  424.          mov [ProgressBar.progress],dword 0.02
  425.          min_size_ok:
  426.  
  427.          cmp [ProgressBar.progress],dword 1.0
  428.          jle max_size_ok
  429.  
  430.          mov [ProgressBar.progress],dword 1.0
  431.          max_size_ok:
  432.  
  433.          mov eax,[ProgressBar.sizex]
  434.          sub eax,6
  435.          mov [v2],eax
  436.  
  437.          fld [ProgressBar.progress]
  438.          fild [v2]
  439.          fmul st0,st1
  440.          fistp [v3]
  441.          fstp st0
  442.  
  443.          mov eax,[ProgressBar.color2]
  444.          mov ebx,0xffffff
  445.          mov ecx,[ProgressBar.x]
  446.          mov edx,[ProgressBar.y]
  447.          mov esi,[v3]
  448.          mov edi,[ProgressBar.sizey]
  449.          sub edi,4
  450.          shr edi,1
  451.          add ecx,3
  452.          add edx,1
  453.  
  454.          call rectangle_gradient_up
  455.  
  456.          mov eax,[ProgressBar.color2]
  457.          mov ebx,0xffffff
  458.          mov ecx,[ProgressBar.x]
  459.          mov edx,[ProgressBar.y]
  460.          mov esi,[v3]
  461.          mov edi,[ProgressBar.sizey]
  462.          sub edi,4
  463.          shr edi,1
  464.          add ecx,3
  465.          add edx,2
  466.          add edx,edi
  467.  
  468.          call rectangle_gradient_down
  469.  
  470.          ret