Subversion Repositories Kolibri OS

Rev

Rev 6170 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. ;----------------------------------------------------------------------
  2. area:
  3.   .x      = 5   ;345
  4.   .y      = 5   ;20
  5.   .w  = 226
  6.   .height = 220
  7. ;--------------------------------------
  8. wnd3:
  9.   .x      = area.x+37
  10.   .y      = area.y+35
  11.   .w  = 170
  12.   .height = 105
  13. ;--------------------------------------
  14. wnd4:
  15.   .x      = area.x+20
  16.   .y      = area.y+75
  17.   .w  = 170
  18.   .height = 105
  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.w>,<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.w
  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.w-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.w-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.w-5)*65536
  42.         mcall
  43.         mcall   ,<wnd3.x+5,wnd3.w-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.w-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.w)*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.w
  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.w-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.w-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.w-5)*65536
  109.         mcall
  110.         mcall   ,<wnd4.x+5,wnd4.w-10>,<wnd4.y+5,wnd4.height-10>,dword[dtp.work]
  111.         mov eax,[edi+SKIN_PARAMS.skin_height]
  112.         shl eax,16
  113.         sub eax,[edi+SKIN_PARAMS.skin_height]
  114.         add ecx,eax
  115.         mov edx,36+0x40000000
  116.         mcall   8
  117.        
  118.         mov     eax,0x00010001 ; left, inactive
  119.         call    find_bitmap
  120.         mcall   7,,,<wnd4.x,wnd4.y>
  121.  
  122.         pushd   [ebx-8]
  123.         mov     eax,0x00010003 ; base, inactive
  124.         call    find_bitmap
  125.         pop     edx
  126.         mov     esi,wnd4.x+wnd4.w-1
  127.         sub     esi,edx
  128.         shl     edx,16
  129.         add     edx,wnd4.x*65536+wnd4.y
  130.         mcall   7
  131. ;--------------------------------------
  132. @@:
  133.         rol     edx,16
  134.         add     dx,[ebx-8]
  135.         cmp     dx,si
  136.         ja      @f
  137.  
  138.         rol     edx,16
  139.         mcall   7
  140.         jmp     @b
  141. ;--------------------------------------
  142. @@:
  143.         mov     eax,0x00010002 ; oper, inactive
  144.         call    find_bitmap
  145.         mov     edx,ecx
  146.         shr     edx,16
  147.         neg     edx
  148.         shl     edx,16
  149.         add     edx,(wnd4.x+wnd4.w)*65536+wnd4.y
  150.         mcall   7
  151.  
  152.         mov     ebp,not_packed_area
  153.         mov     edi,[ebp+SKIN_HEADER.params]
  154.         add     edi,ebp
  155.         pop     eax
  156.         lea     ebx,[eax+wnd4.x*65536+wnd4.y]
  157.         mov ecx,dword[dtp.grab_text]
  158.         add ecx,0x10000000
  159.         mcall   4,,,caption_text,caption_text.size
  160.         mcall   8, <wnd4.x, 85>, <wnd4.y, 23>,35+0x40000000 ;button under caption
  161. ;----------------------------------------------------------------------
  162.         mov     edi,[ebp+SKIN_HEADER.buttons]
  163.         add     edi,ebp
  164. ;--------------------------------------
  165. .lp1:
  166.         cmp     dword[edi],0
  167.         je      .lp2
  168.  
  169.         mov     ebx,dword[edi+SKIN_BUTTONS.left-2]
  170.         mov     bx,[edi+SKIN_BUTTONS.w]
  171.         mov     ecx,dword[edi+SKIN_BUTTONS.top-2]
  172.         mov     cx,[edi+SKIN_BUTTONS.height]
  173.         add     ebx,(wnd4.x+wnd4.w)*65536
  174.         add     ecx,wnd4.y*65536
  175.         dec     ebx
  176.         dec     ecx
  177.         mcall   8,,,0x40000000
  178.         add     edi,12
  179.         jmp     .lp1
  180. ;--------------------------------------
  181. .lp2:
  182.         mov     edi,[ebp+SKIN_HEADER.params]
  183.         add     edi,ebp
  184.         mpack   ebx,wnd4.x+10,wnd4.y+10
  185.         add     bx,word[edi+SKIN_PARAMS.skin_height]
  186.         mov ecx,[dtp.work_text]
  187.         add ecx,0x10000000
  188.         mcall   4,,,window_text,window_text.size
  189.  
  190.         mov     ecx,[edi+SKIN_PARAMS.skin_height]
  191.         shl     ecx,16
  192.         add     ecx,(wnd4.y+8)*65536+18
  193.  
  194.         mcall   13,<wnd4.x+window_text.size*8+20,wnd4.x+wnd4.w-10-\
  195.                         (wnd4.x+window_text.size*8+20)>,,[dtp.work_graph]
  196.         mov edx, 40+0x40000000 ; graf button
  197.         mcall   8
  198.        
  199.         dec edx ; window text button
  200.         mcall   8, <wnd4.x+10, window_text.size*8>
  201.  
  202.         add     ecx,35*65536+5
  203.         mcall   8,<wnd4.x+wnd4.w/2-button_text.size*4-8,\
  204.                         button_text.size*8+15>,,37,[dtp.work_button]
  205.  
  206.         shr     ecx,16
  207.         mov     bx,cx
  208.         add     ebx,0x00060005
  209.         mov ecx, [dtp.work_button_text]
  210.         add ecx, 0x10000000
  211.         mcall   4,,,button_text,button_text.size
  212.         ret
  213. ;---------------------------------------------------------------------
  214. find_bitmap:
  215.         mov     edi,[ebp+SKIN_HEADER.bitmaps]
  216.         add     edi,ebp
  217.         xor     ebx,ebx
  218. ;--------------------------------------
  219. .lp1:
  220.         cmp     dword[edi],0
  221.         je      .lp2
  222.  
  223.         cmp     dword[edi+0],eax
  224.         jne     @f
  225. ;--------------------------------------
  226.         mov     ebx,[edi+SKIN_BITMAPS._data]
  227.         add     ebx,ebp
  228.         mov     ecx,[ebx-2]
  229.         mov     cx,[ebx+4]
  230.         add     ebx,8
  231. ;--------------------------------------
  232. .lp2:
  233.         ret
  234. ;--------------------------------------
  235. @@:
  236.         add     edi,8
  237.         jmp     .lp1
  238. ;----------------------------------------------------------------------
  239. dec_edx:
  240.         sub     dl,4
  241.         jnc     @f
  242.  
  243.         xor     dl,dl
  244. ;--------------------------------------
  245. @@:
  246.         sub     dh,4
  247.         jnc     @f
  248.  
  249.         xor     dh,dh
  250. ;--------------------------------------
  251. @@:
  252.         rol     edx,16
  253.         sub     dl,4
  254.         jnc     @f
  255.  
  256.         xor     dl,dl
  257. ;--------------------------------------
  258. @@:
  259.         rol     edx,16
  260.         ret
  261. ;---------------------------------------------------------------------
  262. draw_framerect: ; ebx,ecx
  263.         push    ebx ecx
  264.         add     bx,[esp+6]
  265.         mov     cx,[esp+2]
  266.         dec     ebx
  267.         mcall   38
  268.         add     cx,[esp]
  269.         rol     ecx,16
  270.         add     cx,[esp]
  271.         sub     ecx,0x00010001
  272.         mcall
  273.         mov     ebx,[esp+4]
  274.         mov     ecx,[esp]
  275.         mov     bx,[esp+6]
  276.         add     cx,[esp+2]
  277.         dec     ecx
  278.         mcall
  279.         add     bx,[esp+4]
  280.         rol     ebx,16
  281.         add     bx,[esp+4]
  282.         sub     ebx,0x00010001
  283.         mcall
  284.         add     esp,8
  285.         ret
  286. ;----------------------------------------------------------------------
  287.