Subversion Repositories Kolibri OS

Rev

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

  1. ;----------------------------------------------------------------------
  2. area:
  3.   .x      = 5   ;345
  4.   .y      = 5   ;20
  5.   .width  = 206
  6.   .height = 191
  7. ;--------------------------------------
  8. wnd3:
  9.   .x      = area.x+32
  10.   .y      = area.y+35
  11.   .width  = 160
  12.   .height = 100
  13. ;--------------------------------------
  14. wnd4:
  15.   .x      = area.x+15
  16.   .y      = area.y+70
  17.   .width  = 160
  18.   .height = 100
  19. ;--------------------------------------
  20. virtual at edi+SKIN_PARAMS.dtp.data
  21.         dtp system_colors
  22. end virtual
  23. ;----------------------------------------------------------------------
  24. draw_skin:
  25.         mcall   13,<area.x,area.width>,<area.y+2,area.height>,0x00FFFFFF
  26.         mov     ebp,not_packed_area
  27.         mov     edi,[ebp+SKIN_HEADER.params]
  28.         add     edi,ebp
  29.         mpack   ebx,wnd3.x,wnd3.width
  30.         mpack   ecx,wnd3.y,wnd3.height
  31.         mov     edx,[edi+SKIN_PARAMS.colors_1.outer]
  32.         call    draw_framerect
  33.         mpack   ebx,wnd3.x+4,wnd3.width-8
  34.         mpack   ecx,wnd3.y+4,wnd3.height-8
  35.         mov     edx,[edi+SKIN_PARAMS.colors_1.inner]
  36.         call    draw_framerect
  37.         mcall   13,<wnd3.x+1,wnd3.width-2>,<wnd3.y+1,3>,[edi+SKIN_PARAMS.colors_1.frame]
  38.         add     ecx,(wnd3.height-5)*65536
  39.         mcall
  40.         mcall   ,<wnd3.x+1,3>,<wnd3.y+1,wnd3.height-2>
  41.         add     ebx,(wnd3.width-5)*65536
  42.         mcall
  43.         mcall   ,<wnd3.x+5,wnd3.width-10>,<wnd3.y+5,wnd3.height-10>,dword[dtp.work]
  44.  
  45.         mov     eax,0x00000001 ; left, inactive
  46.         call    find_bitmap
  47.         mcall   7,,,<wnd3.x,wnd3.y>
  48.  
  49.         pushd   [ebx-8]
  50.         mov     eax,0x00000003 ; base, inactive
  51.         call    find_bitmap
  52.         pop     edx
  53.         mov     esi,wnd3.x+wnd3.width-1
  54.         sub     esi,edx
  55.         shl     edx,16
  56.         add     edx,wnd3.x*65536+wnd3.y
  57.         mcall   7
  58. ;--------------------------------------
  59. @@:
  60.         rol     edx,16
  61.         add     dx,[ebx-8]
  62.         cmp     dx,si
  63.         ja      @f
  64.  
  65.         rol     edx,16
  66.         mcall   7
  67.         jmp     @b
  68. ;--------------------------------------
  69. @@:
  70.         mov     eax,0x00000002 ; oper, inactive
  71.         call    find_bitmap
  72.         mov     edx,ecx
  73.         shr     edx,16
  74.         neg     edx
  75.         shl     edx,16
  76.         add     edx,(wnd3.x+wnd3.width)*65536+wnd3.y
  77.         mcall   7
  78.  
  79.         mov     ebp,not_packed_area
  80.         mov     edi,[ebp+SKIN_HEADER.params]
  81.         add     edi,ebp
  82.         mov     eax,dword[edi+SKIN_PARAMS.margin.left-2]
  83.         mov     ax,word[edi+SKIN_PARAMS.skin_height]
  84.         sub     ax,[edi+SKIN_PARAMS.margin.bottom]
  85.         shr     ax,1
  86.         add     ax,[edi+SKIN_PARAMS.margin.top]
  87.         add     ax,-9
  88.         push    eax
  89.         lea     ebx,[eax+wnd3.x*65536+wnd3.y]
  90.         mov ecx,dword[dtp.grab_text]
  91.         add ecx,0x10000000
  92.         mcall   4,,,caption_text,caption_text.size
  93. ;---------------------------------------------------------
  94.         mov     edi,[ebp+SKIN_HEADER.params]
  95.         add     edi,ebp
  96.         mpack   ebx,wnd4.x,wnd4.width
  97.         mpack   ecx,wnd4.y,wnd4.height
  98.         mov     edx,[edi+SKIN_PARAMS.colors.outer]
  99.         call    draw_framerect
  100.         mpack   ebx,wnd4.x+4,wnd4.width-8
  101.         mpack   ecx,wnd4.y+4,wnd4.height-8
  102.         mov     edx,[edi+SKIN_PARAMS.colors.inner]
  103.         call    draw_framerect
  104.         mcall   13,<wnd4.x+1,wnd4.width-2>,<wnd4.y+1,3>,[edi+SKIN_PARAMS.colors.frame]
  105.         add     ecx,(wnd4.height-5)*65536
  106.         mcall
  107.         mcall   ,<wnd4.x+1,3>,<wnd4.y+1,wnd4.height-2>
  108.         add     ebx,(wnd4.width-5)*65536
  109.         mcall
  110.         mcall   ,<wnd4.x+5,wnd4.width-10>,<wnd4.y+5,wnd4.height-10>,dword[dtp.work]
  111.  
  112.         mov     eax,0x00010001 ; left, inactive
  113.         call    find_bitmap
  114.         mcall   7,,,<wnd4.x,wnd4.y>
  115.  
  116.         pushd   [ebx-8]
  117.         mov     eax,0x00010003 ; base, inactive
  118.         call    find_bitmap
  119.         pop     edx
  120.         mov     esi,wnd4.x+wnd4.width-1
  121.         sub     esi,edx
  122.         shl     edx,16
  123.         add     edx,wnd4.x*65536+wnd4.y
  124.         mcall   7
  125. ;--------------------------------------
  126. @@:
  127.         rol     edx,16
  128.         add     dx,[ebx-8]
  129.         cmp     dx,si
  130.         ja      @f
  131.  
  132.         rol     edx,16
  133.         mcall   7
  134.         jmp     @b
  135. ;--------------------------------------
  136. @@:
  137.         mov     eax,0x00010002 ; oper, inactive
  138.         call    find_bitmap
  139.         mov     edx,ecx
  140.         shr     edx,16
  141.         neg     edx
  142.         shl     edx,16
  143.         add     edx,(wnd4.x+wnd4.width)*65536+wnd4.y
  144.         mcall   7
  145.  
  146.         mov     ebp,not_packed_area
  147.         mov     edi,[ebp+SKIN_HEADER.params]
  148.         add     edi,ebp
  149.         pop     eax
  150.         lea     ebx,[eax+wnd4.x*65536+wnd4.y]
  151.         mov ecx,dword[dtp.grab_text]
  152.         add ecx,0x10000000
  153.         mcall   4,,,caption_text,caption_text.size
  154. ;----------------------------------------------------------------------
  155.         mov     edi,[ebp+SKIN_HEADER.buttons]
  156.         add     edi,ebp
  157. ;--------------------------------------
  158. .lp1:
  159.         cmp     dword[edi],0
  160.         je      .lp2
  161.  
  162.         mov     ebx,dword[edi+SKIN_BUTTONS.left-2]
  163.         mov     bx,[edi+SKIN_BUTTONS.width]
  164.         mov     ecx,dword[edi+SKIN_BUTTONS.top-2]
  165.         mov     cx,[edi+SKIN_BUTTONS.height]
  166.         add     ebx,(wnd4.x+wnd4.width)*65536
  167.         add     ecx,wnd4.y*65536
  168.         dec     ebx
  169.         dec     ecx
  170.         mcall   8,,,0x40000000
  171.         add     edi,12
  172.         jmp     .lp1
  173. ;--------------------------------------
  174. .lp2:
  175.         mov     edi,[ebp+SKIN_HEADER.params]
  176.         add     edi,ebp
  177.         mpack   ebx,wnd4.x+10,wnd4.y+10
  178.         add     bx,word[edi+SKIN_PARAMS.skin_height]
  179.         mcall   4,,[dtp.work_text],window_text,window_text.size
  180.  
  181.         mov     ecx,[edi+SKIN_PARAMS.skin_height]
  182.         shl     ecx,16
  183.         add     ecx,(wnd4.y+8)*65536+10
  184.         mcall   13,<wnd4.x+window_text.size*6+20,wnd4.x+wnd4.width-10-\
  185.                         (wnd4.x+window_text.size*6+20)>,,[dtp.work_graph]
  186.  
  187.         add     ecx,25*65536+10
  188.         mcall   8,<wnd4.x+wnd4.width/2-button_text.size*3-6,\
  189.                         button_text.size*6+11>,,0,[dtp.work_button]
  190.  
  191.         shr     ecx,16
  192.         mov     bx,cx
  193.         add     ebx,0x00060007
  194.         mcall   4,,[dtp.work_button_text],button_text,button_text.size
  195.         ret
  196. ;---------------------------------------------------------------------
  197. find_bitmap:
  198.         mov     edi,[ebp+SKIN_HEADER.bitmaps]
  199.         add     edi,ebp
  200.         xor     ebx,ebx
  201. ;--------------------------------------
  202. .lp1:
  203.         cmp     dword[edi],0
  204.         je      .lp2
  205.  
  206.         cmp     dword[edi+0],eax
  207.         jne     @f
  208. ;--------------------------------------
  209.         mov     ebx,[edi+SKIN_BITMAPS._data]
  210.         add     ebx,ebp
  211.         mov     ecx,[ebx-2]
  212.         mov     cx,[ebx+4]
  213.         add     ebx,8
  214. ;--------------------------------------
  215. .lp2:
  216.         ret
  217. ;--------------------------------------
  218. @@:
  219.         add     edi,8
  220.         jmp     .lp1
  221. ;----------------------------------------------------------------------
  222. dec_edx:
  223.         sub     dl,4
  224.         jnc     @f
  225.  
  226.         xor     dl,dl
  227. ;--------------------------------------
  228. @@:
  229.         sub     dh,4
  230.         jnc     @f
  231.  
  232.         xor     dh,dh
  233. ;--------------------------------------
  234. @@:
  235.         rol     edx,16
  236.         sub     dl,4
  237.         jnc     @f
  238.  
  239.         xor     dl,dl
  240. ;--------------------------------------
  241. @@:
  242.         rol     edx,16
  243.         ret
  244. ;---------------------------------------------------------------------
  245. draw_framerect: ; ebx,ecx
  246.         push    ebx ecx
  247.         add     bx,[esp+6]
  248.         mov     cx,[esp+2]
  249.         dec     ebx
  250.         mcall   38
  251.         add     cx,[esp]
  252.         rol     ecx,16
  253.         add     cx,[esp]
  254.         sub     ecx,0x00010001
  255.         mcall
  256.         mov     ebx,[esp+4]
  257.         mov     ecx,[esp]
  258.         mov     bx,[esp+6]
  259.         add     cx,[esp+2]
  260.         dec     ecx
  261.         mcall
  262.         add     bx,[esp+4]
  263.         rol     ebx,16
  264.         add     bx,[esp+4]
  265.         sub     ebx,0x00010001
  266.         mcall
  267.         add     esp,8
  268.         ret
  269. ;----------------------------------------------------------------------
  270.