diff --git a/kernel/trunk/docs/sysfuncr.txt b/kernel/trunk/docs/sysfuncr.txt index fd65f8e4e8..bb06425698 100644 --- a/kernel/trunk/docs/sysfuncr.txt +++ b/kernel/trunk/docs/sysfuncr.txt @@ -1,6 +1,6 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; -;; Copyright (C) KolibriOS team 2004-2012. All rights reserved. ;; +;; Copyright (C) KolibriOS team 2004-2016. All rights reserved. ;; ;; Distributed under terms of the GNU General Public License ;; ;; ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -2104,12 +2104,16 @@ dir_path1 db 'HD0/1',0 * бит 31 установлен = не выводить ведущие нули числа * ecx = число (при bl=0) или указатель (при bl=1) * edx = [координата по оси x]*65536 + [координата по оси y] - * esi = 0xX0RRGGBB: - * RR, GG, BB задают цвет - * X = ABnn (биты) - * nn = шрифт (0/1) - * A игнорируется - * B=1 - закрашивать фон цветом edi + * esi = 0xXXRRGGBB, где + * RR, GG, BB задают цвет текста + * XX=0B0FCSSS (биты): + * B=1 - закрашивать фон (цвет = edi) + * F задает шрифт: + 0 = 6x9 + 1 = 8x16 + * C=0 - рисовать в окно, + С=1 - рисовать в буфер (edi) + * SSS = (множитель размера)-1, то-есть 0 = x1, 7 = x8 Возвращаемое значение: * функция не возвращает значения Замечания: @@ -2118,7 +2122,6 @@ dir_path1 db 'HD0/1',0 может быть записано меньшим количеством цифр, оно дополняется ведущими нулями; если число велико и не может быть записано таким количеством цифр, "лишние" ведущие цифры обрезаются. - * Параметры шрифтов указаны в описании функции 4 (вывода текста). ---------------------- Константы для регистров: ---------------------- eax - SF_DRAW_NUMBER (47) diff --git a/kernel/trunk/docs/sysfuncs.txt b/kernel/trunk/docs/sysfuncs.txt index 40965f0244..5164eabe3a 100644 --- a/kernel/trunk/docs/sysfuncs.txt +++ b/kernel/trunk/docs/sysfuncs.txt @@ -1,6 +1,6 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; -;; Copyright (C) KolibriOS team 2004-2012. All rights reserved. ;; +;; Copyright (C) KolibriOS team 2004-2016. All rights reserved. ;; ;; Distributed under terms of the GNU General Public License ;; ;; ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -2081,12 +2081,16 @@ Parameters: * bit 31 set = do not display leading zeroes of the number * ecx = number (if bl=0) or pointer (if bl=1) * edx = [coordinate on axis x]*65536 + [coordinate on axis y] - * esi = 0xX0RRGGBB: - * RR, GG, BB specify the color - * X = ABnn (bits) - * nn = font (0/1) - * A is ignored - * B=1 - fill background with the color edi + * esi = 0xXXRRGGBB, where + * RR, GG, BB specify text color + * XX = 0B0FCSSS (bits): + * B=1 - fill background (color = edi) + * F specifies the font: + 0 = 6x9 + 1 = 8x16 + * C=0 - draw to the window, + C=1 - draw to the user buffer (edi) + * SSS = (size multiplier)-1, so 0 = x1, 7 = x8 Returned value: * function does not return value Remarks: @@ -2095,8 +2099,6 @@ Remarks: and can be written by smaller amount of digits, it is supplemented by leading zeroes; if the number is big and can not be written by given amount of digits, extra digits are not drawn. - * Parameters of fonts are shown in the description of function 4 - (text output). ---------------------- Constants for registers: ---------------------- eax - SF_DRAW_NUMBER (47) diff --git a/kernel/trunk/kernel.asm b/kernel/trunk/kernel.asm index 7898ef04bc..9a94e495eb 100644 --- a/kernel/trunk/kernel.asm +++ b/kernel/trunk/kernel.asm @@ -1629,9 +1629,13 @@ draw_num_text: add eax, [edi+SLOT_BASE+APPDATA.wnd_clientbox.top] add ebx, eax mov ecx, [esp+64+32-12+4] - and ecx, not 0x80000000 ; force counted string mov eax, [esp+64+8] ; background color (if given) mov edi, [esp+64+4] + and ecx, 5FFFFFFFh + bt ecx, 27 + jnc @f + mov edi, eax +@@: jmp dtext ;----------------------------------------------------------------------------- iglobal