Subversion Repositories Kolibri OS

Rev

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

  1. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  2. ;;                                                              ;;
  3. ;; Copyright (C) KolibriOS team 2004-2012. All rights reserved. ;;
  4. ;; Distributed under terms of the GNU General Public License    ;;
  5. ;;                                                              ;;
  6. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  7.  
  8. $Revision: 2465 $
  9.  
  10. ;------------------------------------------------------------------------------
  11. align 4
  12. dtext_asciiz_esi:                          ; for skins title out
  13.         push    eax
  14.         xor     eax, eax
  15.         inc     eax
  16.         jmp     dtext.1
  17. ;------------------------------------------------------------------------------
  18. align 4
  19. dtext:  ; Text String Output (rw by Johnny_B[john@kolibrios.org])
  20.         ; ebx x & y
  21.         ; ecx style ( 0xX0000000 ) & color ( 0x00RRGGBB )
  22.         ; X = ABnnb:
  23.         ; nn = font
  24.         ; A = 0 <=> output esi characters; otherwise output ASCIIZ string
  25.         ; B = 1 <=> fill background with color eax
  26.         ; edx start of text
  27.         ; edi 1 force
  28.         push    eax
  29.         xor     eax, eax
  30. ;--------------------------------------
  31. align 4
  32. .1:
  33.         pushad
  34.         movsx   eax, bx         ; eax=y
  35.         sar     ebx, 16         ; ebx=x
  36.         xchg    eax, ebx        ; eax=x, ebx=y
  37.         cmp     esi, 255
  38.         jb      .loop
  39.         mov     esi, 255
  40. ;--------------------------------------
  41. align 4
  42. .loop:
  43.         test    ecx, ecx
  44.         js      .test_asciiz
  45.         dec     esi
  46.         js      .end
  47.         jmp     @f
  48. ;--------------------------------------
  49. align 4
  50. .test_asciiz:
  51.         cmp     byte [edx], 0
  52.         jz      .end
  53.  
  54.         cmp     byte [esp+28], 1
  55.         jne     @f
  56.         dec     esi
  57.         js      .end
  58. ;--------------------------------------
  59. align 4
  60. @@:
  61.         inc     edx
  62.         pushad
  63.         movzx   edx, byte [edx-1]
  64.         test    ecx, 0x10000000
  65.         jnz     .font2
  66.         mov     esi, 9
  67.         lea     ebp, [FONT_I+8*edx+edx]
  68. ;--------------------------------------
  69. align 4
  70. .symloop1:
  71.         mov     dl, byte [ebp]
  72.         or      dl, 1 shl 6
  73. ;--------------------------------------
  74. align 4
  75. .pixloop1:
  76.         shr     dl, 1
  77.         jz      .pixloop1end
  78.         jnc     .nopix
  79.         and     ecx, 0xFBFFFFFF  ;negate 0x04000000 save to mouseunder area
  80. ;        call    [putpixel]
  81.         call    __sys_putpixel
  82.         jmp     .pixloop1cont
  83. ;--------------------------------------
  84. align 4
  85. .nopix:
  86.         test    ecx, 0x40000000
  87.         jz      .pixloop1cont
  88.         push    ecx
  89.         mov     ecx, [esp+4+20h+20h]
  90.         and     ecx, 0xFBFFFFFF  ;negate 0x04000000 save to mouseunder area
  91. ;        call    [putpixel]
  92.         call    __sys_putpixel
  93.         pop     ecx
  94. ;--------------------------------------
  95. align 4
  96. .pixloop1cont:
  97.         inc     eax
  98.         jmp     .pixloop1
  99. ;--------------------------------------
  100. align 4
  101. .pixloop1end:
  102.         sub     eax, 6
  103.         inc     ebx
  104.         inc     ebp
  105.         dec     esi
  106.         jnz     .symloop1
  107.         popad
  108.         add     eax, 6
  109.         jmp     .loop
  110. ;--------------------------------------
  111. align 4
  112. .font2:
  113.         add     edx, edx
  114.         lea     ebp, [FONT_II+4*edx+edx+1]
  115.         push    9
  116.         movzx   esi, byte [ebp-1]
  117. ;--------------------------------------
  118. align 4
  119. .symloop2:
  120.         mov     dl, byte [ebp]
  121.         push    esi
  122. ;--------------------------------------
  123. align 4
  124. .pixloop2:
  125.         shr     dl, 1
  126.         jnc     .nopix2
  127.         and     ecx, 0xFBFFFFFF  ;negate 0x04000000 save to mouseunder area
  128. ;        call    [putpixel]
  129.         call    __sys_putpixel
  130.         jmp     .pixloop2cont
  131. ;--------------------------------------
  132. align 4
  133. .nopix2:
  134.         test    ecx, 0x40000000
  135.         jz      .pixloop2cont
  136.         push    ecx
  137.         mov     ecx, [esp+12+20h+20h]
  138.         and     ecx, 0xFBFFFFFF  ;negate 0x04000000 save to mouseunder area
  139. ;        call    [putpixel]
  140.         call    __sys_putpixel
  141.         pop     ecx
  142. ;--------------------------------------
  143. align 4
  144. .pixloop2cont:
  145.         inc     eax
  146.         dec     esi
  147.         jnz     .pixloop2
  148.         pop     esi
  149.         sub     eax, esi
  150.         inc     ebx
  151.         inc     ebp
  152.         dec     dword [esp]
  153.         jnz     .symloop2
  154.         pop     eax
  155.         add     dword [esp+28], esi
  156.         popad
  157.         jmp     .loop
  158. ;--------------------------------------
  159. align 4
  160. .end:
  161.         popad
  162.         pop     eax
  163.         ret
  164. ;------------------------------------------------------------------------------
  165.