Subversion Repositories Kolibri OS

Rev

Rev 1816 | Go to most recent revision | Blame | Compare with Previous | 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.         mov     esi, 0x00334455          ; color of grab bar  RRGGBB
  15.         mov     edi, 0x00ddeeff          ; color of frames    RRGGBB
  16.         int     0x40
  17.         ; WINDOW LABEL
  18.         mov     eax, 4                  ; function 4 : write text to window
  19.         mov     ebx, 8*65536+8          ; [x start] *65536 + [y start]
  20.         mov     ecx, 0x00ffffff         ; color of text RRGGBB
  21.         mov     edx, caption            ; pointer to text beginning
  22.         mov     esi, capsize    ; text length
  23.         int     0x40
  24.         ;popa
  25. }
  26.  
  27. macro end_draw_window
  28. {
  29.         mov     eax, 12                 ; end of redraw
  30.         mov     ebx, 2
  31.         int     0x40
  32. }
  33.  
  34. macro change_window_place_size x,y,xsize,ysize
  35. {
  36.         mov     eax, 67                  ; function 67 : replace and/or resize window
  37.         mov     ebx, x
  38.         mov     ecx, y
  39.         mov     edx, xsize
  40.         mov     esi, ysize
  41.         int     0x40
  42. }
  43.  
  44. proc draw_button stdcall, x:dword, y:dword, xsize:dword, ysize:dword, \
  45.         id:dword, butcolor:dword, text:dword, textlen:byte, textcolor:dword
  46.  
  47.         pusha
  48.         mov     ebx, dword [x]
  49.         shl     ebx, 16
  50.         add     ebx, dword [xsize]        ; [x start] *65536 + [x size]
  51.  
  52.         mov     ecx, dword [y]
  53.         shl     ecx, 16
  54.         add     ecx, dword [ysize]        ; [y start] *65536 + [y size]
  55.  
  56.         mov     edx, dword [id]                 ; button id
  57.         mov     esi, dword [butcolor]           ; button color RRGGBB
  58.         mov     eax, 8                  ; function 8 : define and draw button
  59.         int     0x40
  60.  
  61.         mov     ebx, dword [x]
  62.         add     ebx, 5
  63.         shl     ebx, 16
  64.         mov     eax, dword [ysize]
  65.         sub     eax, 5
  66.         shr     eax, 1
  67.         add     ebx, eax
  68.         add     ebx, dword [y]  ;mov    ebx, (x+5)*65536+y+(ysize-5)/2  ; Draw button text
  69.  
  70.         mov     ecx, dword [textcolor]
  71.         mov     edx, dword [text]
  72.         xor     eax, eax
  73.         mov     al,  byte [textlen]
  74.         mov     esi, eax
  75.         mov     eax, 4
  76.         int     0x40
  77.         popa
  78. ret
  79. endp
  80.  
  81. ;macro outtextxy x,y,prompt,prompt_len,color
  82. ;{
  83. proc outtextxy stdcall, x:dword, y:dword, prompt:dword, prompt_len:dword, color:dword
  84.         pusha
  85.         mov     eax, 4
  86.         mov     ebx, dword [x]         ; draw info text with function 4
  87.         shl     ebx, 16
  88.         or      ebx, dword [y]
  89.         mov     ecx, dword [color]
  90.         mov     edx, dword [prompt]
  91.         mov     esi, dword [prompt_len]
  92.         int     0x40
  93.         popa
  94. ret
  95. endp
  96. ;}
  97.  
  98. ;proc bar x:dword, y:dword, xsize:dword, ysize:dword, color:dword
  99. macro bar x, y, xsize, ysize, color
  100. {
  101.         pusha
  102.         mov eax, 13
  103.         ;mov ebx, [x]
  104.         ;shl ebx, 16
  105.         ;add ebx, [xsize]
  106.         ;mov ecx, [y]
  107.         ;shl ecx, 16
  108.         ;add ecx, [ysize]
  109.         ;mov edx, [color]
  110.         mov     ebx, x*65536+xsize
  111.         mov     ecx, y*65536+ysize
  112.         mov edx, color
  113.  
  114.         int 0x40
  115.         popa
  116. ;ret
  117. ;endp
  118. }
  119.  
  120. macro line x1,y1,x2,y2,color
  121. {
  122.   pusha
  123.   mov eax, 38
  124.   mov ebx, x1*65536+x2
  125.   mov ecx, y1*65536+y2
  126.   mov edx, color
  127.   int 0x40
  128.   popa
  129. }
  130.  
  131. macro rectangle x,y,xsize,ysize,color
  132. {
  133.   x2=x+xsize
  134.   y2=y+ysize
  135.   line x,y,x2,y,color
  136.   line x,y,x,y2,color
  137.   line x,y2,x2,y2,color
  138.   line x2,y,x2,y2,color
  139. }
  140.  
  141. macro putpixel x,y,color
  142. {
  143.   mov eax, 1
  144.   mov ebx, x
  145.   mov ecx, y
  146.   mov edx, color
  147.   int 0x40
  148. }
  149.  
  150.