Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. include '../../proc32.inc'
  2.  
  3. macro start_draw_window x,y,xsize,ysize,areacolor,caption;,capsize
  4. {
  5.         ;pusha
  6.         mov     eax, 12                 ; function 12:tell os about windowdraw
  7.         mov     ebx, 1                  ; 1, start of draw
  8.         int     0x40
  9.         ; DRAW WINDOW
  10.         mov     eax, 0                  ; function 0 : define and draw window
  11.         mov     ebx, x*65536+xsize      ; [x start] *65536 + [x size]
  12.         mov     ecx, y*65536+ysize      ; [y start] *65536 + [y size]
  13.         mov     edx, areacolor           ; color of work area RRGGBB
  14.         or      edx, 0x34000000
  15.         mov     edi, caption
  16. ;        mov     esi, 0x00334455          ; color of grab bar  RRGGBB
  17. ;        mov     edi, 0x00ddeeff          ; color of frames    RRGGBB
  18.         int     0x40
  19.         ;popa
  20. }
  21.  
  22. macro end_draw_window
  23. {
  24.         mov     eax, 12                 ; end of redraw
  25.         mov     ebx, 2
  26.         int     0x40
  27. }
  28.  
  29. macro change_window_place_size x,y,xsize,ysize
  30. {
  31.         mov     eax, 67                  ; function 67 : replace and/or resize window
  32.         mov     ebx, x
  33.         mov     ecx, y
  34.         mov     edx, xsize
  35.         mov     esi, ysize
  36.         int     0x40
  37. }
  38.  
  39. proc draw_button stdcall, x:dword, y:dword, xsize:dword, ysize:dword, \
  40.         id:dword, butcolor:dword, text:dword, textlen:byte, textcolor:dword
  41.  
  42.         pusha
  43.         mov     ebx, dword [x]
  44.         shl     ebx, 16
  45.         add     ebx, dword [xsize]        ; [x start] *65536 + [x size]
  46.  
  47.         mov     ecx, dword [y]
  48.         shl     ecx, 16
  49.         add     ecx, dword [ysize]        ; [y start] *65536 + [y size]
  50.  
  51.         mov     edx, dword [id]                 ; button id
  52.         mov     esi, dword [butcolor]           ; button color RRGGBB
  53.         mov     eax, 8                  ; function 8 : define and draw button
  54.         int     0x40
  55.  
  56.         mov     ebx, dword [x]
  57.         add     ebx, 5
  58.         shl     ebx, 16
  59.         mov     eax, dword [ysize]
  60.         sub     eax, 5
  61.         shr     eax, 1
  62.         add     ebx, eax
  63.         add     ebx, dword [y]  ;mov    ebx, (x+5)*65536+y+(ysize-5)/2  ; Draw button text
  64.  
  65.         mov     ecx, dword [textcolor]
  66.         mov     edx, dword [text]
  67.         xor     eax, eax
  68.         mov     al,  byte [textlen]
  69.         mov     esi, eax
  70.         mov     eax, 4
  71.         int     0x40
  72.         popa
  73. ret
  74. endp
  75.  
  76. ;macro outtextxy x,y,prompt,prompt_len,color
  77. ;{
  78. proc outtextxy stdcall, x:dword, y:dword, prompt:dword, prompt_len:dword, color:dword
  79.         pusha
  80.         mov     eax, 4
  81.         mov     ebx, dword [x]         ; draw info text with function 4
  82.         shl     ebx, 16
  83.         or      ebx, dword [y]
  84.         mov     ecx, dword [color]
  85.         mov     edx, dword [prompt]
  86.         mov     esi, dword [prompt_len]
  87.         int     0x40
  88.         popa
  89. ret
  90. endp
  91. ;}
  92.  
  93. proc bar x:dword, y:dword, xsize:dword, ysize:dword, color:dword
  94. ;macro bar x, y, xsize, ysize, color
  95. ;{
  96.         pusha
  97.         mov     eax, 13
  98.         mov     ebx, [x]
  99.         shl     ebx, 16
  100.         add     ebx, [xsize]
  101.         mov     ecx, [y]
  102.         shl     ecx, 16
  103.         add     ecx, [ysize]
  104.         mov     edx, [color]
  105.         ;mov     ebx, x*65536+xsize
  106.         ;mov     ecx, y*65536+ysize
  107.         ;mov     edx, color
  108.  
  109.         int     0x40
  110.         popa
  111. ret
  112. endp
  113. ;}
  114.  
  115.  
  116. proc line x1:dword, y1:dword, x2:dword, y2:dword, color:dword
  117. ;macro line x1,y1,x2,y2,color
  118. ;{
  119.         pusha
  120.         mov     eax, 38
  121. ;        mov     ebx, x1*65536+x2
  122. ;        mov     ecx, y1*65536+y2
  123.         mov     ebx, [x1]
  124.         shl     ebx, 16
  125.         add     ebx, [x2]
  126.         mov     ecx, [y1]
  127.         shl     ecx, 16
  128.         add     ecx, [y2]
  129.  
  130.         mov     edx, [color]
  131.         int     0x40
  132.         popa
  133. ret
  134. endp
  135. ;}
  136.  
  137.  
  138. ;macro rectangle x,y,xsize,ysize,color
  139. ;{
  140. ;  x2=x+xsize
  141. ;  y2=y+ysize
  142. ;  line x,y,x2,y,color
  143. ;  line x,y,x,y2,color
  144. ;  line x,y2,x2,y2,color
  145. ;  line x2,y,x2,y2,color
  146. ;}
  147.  
  148. proc rectangle x:dword, y:dword, xsize:dword, ysize:dword, color:dword
  149.         pusha
  150.         mov     eax, [x]
  151.         mov     ebx, eax
  152.         add     ebx, [xsize]
  153.         mov     ecx, [y]
  154.         mov     edx, ecx
  155.         add     edx, [ysize]
  156.         mov     edi, [color]
  157.  
  158.         stdcall line, eax,ecx,ebx,ecx,edi
  159.         stdcall line, eax,ecx,eax,edx,edi
  160.         stdcall line, eax,edx,ebx,edx,edi
  161.         stdcall line, ebx,ecx,ebx,edx,edi
  162.         popa
  163. ret
  164. endp
  165.  
  166.  
  167. proc putpixel stdcall, x:dword, y:dword, color:dword
  168. ;macro putpixel x,y,color
  169. ;{
  170.         pusha
  171.         mov     eax, 1
  172.         mov     ebx, [x] ;x
  173.         mov     ecx, [y] ;y
  174.         mov     edx, [color] ;color
  175.         int     0x40
  176.         popa
  177. ret
  178. endp
  179. ;}
  180.  
  181.