Subversion Repositories Kolibri OS

Rev

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