forked from KolibriOS/kolibrios
[KERNEL] Graphics subsystem has been redesigned:
- removed the old cursor and the code for its operation - minor fixes in other kernel modules - new fields have been added to the display_t structure for further refactoring of the graphics subsystem. git-svn-id: svn://kolibrios.org@9941 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
d9820a5748
commit
69f5ec5ac7
@ -731,7 +731,7 @@ disk_scan_partitions:
|
|||||||
; [ecx+0x40] is shorter than [ebx+0x1fe]: one-byte offset vs 4-bytes offset.
|
; [ecx+0x40] is shorter than [ebx+0x1fe]: one-byte offset vs 4-bytes offset.
|
||||||
lea ecx, [ebx+0x1be] ; ecx -> partition table
|
lea ecx, [ebx+0x1be] ; ecx -> partition table
|
||||||
cmp word [ecx+0x40], 0xaa55
|
cmp word [ecx+0x40], 0xaa55
|
||||||
jnz .mbr_failed
|
jnz .notmbr
|
||||||
; 8. The MBR is treated differently from EBRs. For MBR we additionally need to
|
; 8. The MBR is treated differently from EBRs. For MBR we additionally need to
|
||||||
; execute step 10 and possibly step 11.
|
; execute step 10 and possibly step 11.
|
||||||
test ebp, ebp
|
test ebp, ebp
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
;; ;;
|
;; ;;
|
||||||
;; Copyright (C) KolibriOS team 2004-2022. All rights reserved. ;;
|
;; Copyright (C) KolibriOS team 2004-2023. All rights reserved. ;;
|
||||||
;; Distributed under terms of the GNU General Public License ;;
|
;; Distributed under terms of the GNU General Public License ;;
|
||||||
;; ;;
|
;; ;;
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
@ -789,6 +789,15 @@ struct display_t
|
|||||||
check_m_pixel dd ?
|
check_m_pixel dd ?
|
||||||
|
|
||||||
bytes_per_pixel dd ?
|
bytes_per_pixel dd ?
|
||||||
|
|
||||||
|
put_pixel dd ?
|
||||||
|
put_rect dd ?
|
||||||
|
put_image dd ?
|
||||||
|
put_line dd ?
|
||||||
|
get_pixel dd ?
|
||||||
|
get_rect dd ?
|
||||||
|
get_image dd ?
|
||||||
|
get_line dd ?
|
||||||
ends
|
ends
|
||||||
|
|
||||||
struct DISPMODE
|
struct DISPMODE
|
||||||
|
@ -709,16 +709,16 @@ proc new_sys_threads
|
|||||||
mov [slot], eax
|
mov [slot], eax
|
||||||
|
|
||||||
mov esi, [current_slot]
|
mov esi, [current_slot]
|
||||||
mov ebx, esi ;ebx=esi - pointer to extended information about current thread
|
mov ebx, esi ;ebx=esi - pointer to information about current thread
|
||||||
|
|
||||||
mov edi, eax
|
mov edi, eax
|
||||||
shl edi, BSF sizeof.APPDATA
|
shl edi, BSF sizeof.APPDATA
|
||||||
add edi, SLOT_BASE
|
add edi, SLOT_BASE
|
||||||
mov edx, edi ;edx=edi - pointer to extended infomation about new thread
|
mov edx, edi ;edx=edi - pointer to infomation about new thread
|
||||||
mov ecx, sizeof.APPDATA/4
|
mov ecx, sizeof.APPDATA/4
|
||||||
xor eax, eax
|
xor eax, eax
|
||||||
cld
|
cld
|
||||||
rep stosd ;clean extended information about new thread
|
rep stosd ;clean information about new thread
|
||||||
mov esi, ebx
|
mov esi, ebx
|
||||||
mov edi, edx
|
mov edi, edx
|
||||||
mov ecx, 11
|
mov ecx, 11
|
||||||
|
@ -353,7 +353,6 @@ fpu_data_size = $ - fpu_data
|
|||||||
|
|
||||||
BPSLine_calc_area rd MAX_SCREEN_HEIGHT
|
BPSLine_calc_area rd MAX_SCREEN_HEIGHT
|
||||||
d_width_calc_area rd MAX_SCREEN_HEIGHT
|
d_width_calc_area rd MAX_SCREEN_HEIGHT
|
||||||
mouseunder rd 16*24
|
|
||||||
|
|
||||||
mem_block_list rd 64*2
|
mem_block_list rd 64*2
|
||||||
mem_used_list rd 64*2
|
mem_used_list rd 64*2
|
||||||
@ -395,8 +394,6 @@ BANK_SWITCH dd ? ; reserved for vesa 1.2
|
|||||||
BANK_RW dd ?
|
BANK_RW dd ?
|
||||||
end if
|
end if
|
||||||
|
|
||||||
MOUSE_PICTURE dd ?
|
|
||||||
|
|
||||||
def_cursor dd ?
|
def_cursor dd ?
|
||||||
def_cursor_clock dd ?
|
def_cursor_clock dd ?
|
||||||
def_cursor_hresize dd ?
|
def_cursor_hresize dd ?
|
||||||
@ -404,7 +401,6 @@ def_cursor_vresize dd ?
|
|||||||
def_cursor_dresize1 dd ?
|
def_cursor_dresize1 dd ?
|
||||||
def_cursor_dresize2 dd ?
|
def_cursor_dresize2 dd ?
|
||||||
current_cursor dd ?
|
current_cursor dd ?
|
||||||
hw_cursor dd ?
|
|
||||||
cur_saved_base dd ?
|
cur_saved_base dd ?
|
||||||
|
|
||||||
cur.lock dd ? ; 1 - lock update, 2- hide
|
cur.lock dd ? ; 1 - lock update, 2- hide
|
||||||
|
@ -95,13 +95,13 @@ syscall_button:
|
|||||||
|
|
||||||
; make coordinates clientbox-relative
|
; make coordinates clientbox-relative
|
||||||
push eax
|
push eax
|
||||||
mov eax, [current_slot_idx]
|
mov eax, [current_slot]
|
||||||
shl eax, BSF sizeof.WDATA
|
mov eax, [eax + APPDATA.window]
|
||||||
rol ebx, 16
|
rol ebx, 16
|
||||||
add bx, word[window_data + eax + WDATA.clientbox.left]
|
add bx, word[eax + WDATA.clientbox.left]
|
||||||
rol ebx, 16
|
rol ebx, 16
|
||||||
rol ecx, 16
|
rol ecx, 16
|
||||||
add cx, word[window_data + eax + WDATA.clientbox.top]
|
add cx, word[eax + WDATA.clientbox.top]
|
||||||
rol ecx, 16
|
rol ecx, 16
|
||||||
pop eax
|
pop eax
|
||||||
|
|
||||||
@ -173,10 +173,10 @@ syscall_button:
|
|||||||
dec ebp
|
dec ebp
|
||||||
shr ebx, 16
|
shr ebx, 16
|
||||||
shr ecx, 16
|
shr ecx, 16
|
||||||
mov eax, [current_slot_idx]
|
mov eax, [current_slot]
|
||||||
shl eax, BSF sizeof.WDATA
|
mov eax, [eax + APPDATA.window]
|
||||||
add ebx, [eax + window_data + WDATA.box.left]
|
add ebx, [eax + WDATA.box.left]
|
||||||
add ecx, [eax + window_data + WDATA.box.top]
|
add ecx, [eax + WDATA.box.top]
|
||||||
mov eax, ebx
|
mov eax, ebx
|
||||||
inc eax
|
inc eax
|
||||||
mov edx, ebx
|
mov edx, ebx
|
||||||
|
@ -1,14 +1,12 @@
|
|||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
;; ;;
|
;; ;;
|
||||||
;; Copyright (C) KolibriOS team 2010-2015. All rights reserved. ;;
|
;; Copyright (C) KolibriOS team 2010-2023. All rights reserved. ;;
|
||||||
;; Distributed under terms of the GNU General Public License ;;
|
;; Distributed under terms of the GNU General Public License ;;
|
||||||
;; ;;
|
;; ;;
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
$Revision$
|
$Revision$
|
||||||
|
|
||||||
include 'mousepointer.inc'
|
|
||||||
|
|
||||||
;================================
|
;================================
|
||||||
;/////// public functions ///////
|
;/////// public functions ///////
|
||||||
;================================
|
;================================
|
||||||
|
@ -1,250 +0,0 @@
|
|||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
||||||
;; ;;
|
|
||||||
;; Copyright (C) KolibriOS team 2004-2015. All rights reserved. ;;
|
|
||||||
;; Copyright (C) MenuetOS 2000-2004 Ville Mikael Turjanmaa ;;
|
|
||||||
;; Distributed under terms of the GNU General Public License ;;
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
||||||
|
|
||||||
$Revision$
|
|
||||||
|
|
||||||
|
|
||||||
iglobal
|
|
||||||
|
|
||||||
align 4
|
|
||||||
mousepointer:
|
|
||||||
db 0x00,0x00,0x00,0x74,0x74,0x74,0x6e,0x6e,0x6e,0x6f
|
|
||||||
db 0x6f,0x6f,0x71,0x71,0x71,0x75,0x75,0x75,0x79,0x79
|
|
||||||
db 0x79,0x7c,0x7c,0x7c,0x7e,0x7e,0x7e,0x80,0x80,0x80
|
|
||||||
db 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80
|
|
||||||
db 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80
|
|
||||||
db 0x80,0x00,0x00,0x00,0x63,0x63,0x63,0x63,0x63,0x63
|
|
||||||
db 0x66,0x66,0x66,0x6c,0x6c,0x6c,0x72,0x72,0x72,0x78
|
|
||||||
db 0x78,0x78,0x7c,0x7c,0x7c,0x7e,0x7e,0x7e,0x80,0x80
|
|
||||||
db 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80
|
|
||||||
db 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xc0
|
|
||||||
db 0xc0,0xc0,0x00,0x00,0x00,0x54,0x54,0x54,0x57,0x57
|
|
||||||
db 0x57,0x5f,0x5f,0x5f,0x68,0x68,0x68,0x71,0x71,0x71
|
|
||||||
db 0x77,0x77,0x77,0x7c,0x7c,0x7c,0x7e,0x7e,0x7e,0x80
|
|
||||||
db 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80
|
|
||||||
db 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xc0,0xc0,0xc0
|
|
||||||
db 0xc0,0xc0,0xc0,0x00,0x00,0x00,0x47,0x47,0x47,0x50
|
|
||||||
db 0x50,0x50,0x5b,0x5b,0x5b,0x67,0x67,0x67,0x70,0x70
|
|
||||||
db 0x70,0x77,0x77,0x77,0x7c,0x7c,0x7c,0x7e,0x7e,0x7e
|
|
||||||
db 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80
|
|
||||||
db 0x80,0x80,0x80,0x80,0x80,0xff,0xff,0xff,0xc0,0xc0
|
|
||||||
db 0xc0,0xc0,0xc0,0xc0,0x00,0x00,0x00,0x3f,0x3f,0x3f
|
|
||||||
db 0x4b,0x4b,0x4b,0x59,0x59,0x59,0x66,0x66,0x66,0x70
|
|
||||||
db 0x70,0x70,0x77,0x77,0x77,0x7c,0x7c,0x7c,0x7e,0x7e
|
|
||||||
db 0x7e,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80
|
|
||||||
db 0x80,0x80,0x80,0xff,0xff,0xff,0xc0,0xc0,0xc0,0xc0
|
|
||||||
db 0xc0,0xc0,0xc0,0xc0,0xc0,0x00,0x00,0x00,0x3a,0x3a
|
|
||||||
db 0x3a,0x49,0x49,0x49,0x59,0x59,0x59,0x66,0x66,0x66
|
|
||||||
db 0x70,0x70,0x70,0x77,0x77,0x77,0x7c,0x7c,0x7c,0x7e
|
|
||||||
db 0x7e,0x7e,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80
|
|
||||||
db 0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xc0,0xc0,0xc0
|
|
||||||
db 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0x00,0x00,0x00,0x39
|
|
||||||
db 0x39,0x39,0x49,0x49,0x49,0x59,0x59,0x59,0x66,0x66
|
|
||||||
db 0x66,0x71,0x71,0x71,0x78,0x78,0x78,0x7c,0x7c,0x7c
|
|
||||||
db 0x7e,0x7e,0x7e,0x80,0x80,0x80,0x80,0x80,0x80,0xff
|
|
||||||
db 0xff,0xff,0xff,0xff,0xff,0xc0,0xc0,0xc0,0xc0,0xc0
|
|
||||||
db 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0x00,0x00,0x00
|
|
||||||
db 0x39,0x39,0x39,0x4a,0x4a,0x4a,0x5a,0x5a,0x5a,0x68
|
|
||||||
db 0x68,0x68,0x72,0x72,0x72,0x79,0x79,0x79,0x7d,0x7d
|
|
||||||
db 0x7d,0x7f,0x7f,0x7f,0x80,0x80,0x80,0xff,0xff,0xff
|
|
||||||
db 0xff,0xff,0xff,0xff,0xff,0xff,0xc0,0xc0,0xc0,0xc0
|
|
||||||
db 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0x00,0x00
|
|
||||||
db 0x00,0x3c,0x3c,0x3c,0x4e,0x4e,0x4e,0x5e,0x5e,0x5e
|
|
||||||
db 0x6b,0x6b,0x6b,0x75,0x75,0x75,0x7a,0x7a,0x7a,0x7e
|
|
||||||
db 0x7e,0x7e,0x80,0x80,0x80,0xff,0xff,0xff,0xff,0xff
|
|
||||||
db 0xff,0xff,0xff,0xff,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0
|
|
||||||
db 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0x00
|
|
||||||
db 0x00,0x00,0x43,0x43,0x43,0x55,0x55,0x55,0x64,0x64
|
|
||||||
db 0x64,0x70,0x70,0x70,0x78,0x78,0x78,0x7d,0x7d,0x7d
|
|
||||||
db 0x80,0x80,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xc0
|
|
||||||
db 0xc0,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
|
||||||
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
|
||||||
db 0x00,0x00,0x00,0x4e,0x4e,0x4e,0x5f,0x5f,0x5f,0x6d
|
|
||||||
db 0x6d,0x6d,0x76,0x76,0x76,0x7c,0x7c,0x7c,0x80,0x80
|
|
||||||
db 0x80,0xff,0xff,0xff,0xc0,0xc0,0xc0,0x00,0x00,0x00
|
|
||||||
db 0xff,0xff,0xff,0xc0,0xc0,0xc0,0x00,0x00,0x00,0x14
|
|
||||||
db 0x14,0x14,0x1b,0x1b,0x1b,0x29,0x29,0x29,0x3a,0x3a
|
|
||||||
db 0x3a,0x4c,0x4c,0x4c,0x5d,0x5d,0x5d,0x6c,0x6c,0x6c
|
|
||||||
db 0x75,0x75,0x75,0x7b,0x7b,0x7b,0x80,0x80,0x80,0xc0
|
|
||||||
db 0xc0,0xc0,0x00,0x00,0x00,0x2f,0x2f,0x2f,0x80,0x80
|
|
||||||
db 0x80,0xff,0xff,0xff,0xc0,0xc0,0xc0,0x00,0x00,0x00
|
|
||||||
db 0x21,0x21,0x21,0x2e,0x2e,0x2e,0x40,0x40,0x40,0x52
|
|
||||||
db 0x52,0x52,0x62,0x62,0x62,0x6f,0x6f,0x6f,0x77,0x77
|
|
||||||
db 0x77,0x7c,0x7c,0x7c,0x80,0x80,0x80,0x00,0x00,0x00
|
|
||||||
db 0x47,0x47,0x47,0x3b,0x3b,0x3b,0x80,0x80,0x80,0xff
|
|
||||||
db 0xff,0xff,0xc0,0xc0,0xc0,0x00,0x00,0x00,0x25,0x25
|
|
||||||
db 0x25,0x30,0x30,0x30,0x42,0x42,0x42,0x54,0x54,0x54
|
|
||||||
db 0x64,0x64,0x64,0x70,0x70,0x70,0x78,0x78,0x78,0x7d
|
|
||||||
db 0x7d,0x7d,0x00,0x00,0x00,0x62,0x62,0x62,0x52,0x52
|
|
||||||
db 0x52,0x4a,0x4a,0x4a,0x43,0x43,0x43,0x80,0x80,0x80
|
|
||||||
db 0xff,0xff,0xff,0xc0,0xc0,0xc0,0x00,0x00,0x00,0x33
|
|
||||||
db 0x33,0x33,0x42,0x42,0x42,0x54,0x54,0x54,0x64,0x64
|
|
||||||
db 0x64,0x71,0x71,0x71,0x79,0x79,0x79,0x7d,0x7d,0x7d
|
|
||||||
db 0x72,0x72,0x72,0x6b,0x6b,0x6b,0x5f,0x5f,0x5f,0x5a
|
|
||||||
db 0x5a,0x5a,0x54,0x54,0x54,0x80,0x80,0x80,0xff,0xff
|
|
||||||
db 0xff,0xc0,0xc0,0xc0,0x00,0x00,0x00,0x35,0x35,0x35
|
|
||||||
db 0x41,0x41,0x41,0x53,0x53,0x53,0x63,0x63,0x63,0x70
|
|
||||||
db 0x70,0x70,0x78,0x78,0x78,0x7d,0x7d,0x7d,0x77,0x77
|
|
||||||
db 0x77,0x73,0x73,0x73,0x6c,0x6c,0x6c,0x68,0x68,0x68
|
|
||||||
db 0x62,0x62,0x62,0x5a,0x5a,0x5a,0x80,0x80,0x80,0xff
|
|
||||||
db 0xff,0xff,0xc0,0xc0,0xc0,0x00,0x00,0x00,0x41,0x41
|
|
||||||
db 0x41,0x52,0x52,0x52,0x62,0x62,0x62,0x6f,0x6f,0x6f
|
|
||||||
db 0x78,0x78,0x78,0x7d,0x7d,0x7d,0x7b,0x7b,0x7b,0x79
|
|
||||||
db 0x79,0x79,0x74,0x74,0x74,0x72,0x72,0x72,0x6e,0x6e
|
|
||||||
db 0x6e,0x66,0x66,0x66,0x80,0x80,0x80,0xc0,0xc0,0xc0
|
|
||||||
db 0xc0,0xc0,0xc0,0x00,0x00,0x00,0x44,0x44,0x44,0x52
|
|
||||||
db 0x52,0x52,0x62,0x62,0x62,0x6e,0x6e,0x6e,0x77,0x77
|
|
||||||
db 0x77,0x7c,0x7c,0x7c,0x7e,0x7e,0x7e,0x7c,0x7c,0x7c
|
|
||||||
db 0x7a,0x7a,0x7a,0x79,0x79,0x79,0x75,0x75,0x75,0x6f
|
|
||||||
db 0x6f,0x6f,0x65,0x65,0x65,0x00,0x00,0x00,0x00,0x00
|
|
||||||
db 0x00,0x48,0x48,0x48,0x4b,0x4b,0x4b,0x56,0x56,0x56
|
|
||||||
db 0x65,0x65,0x65,0x70,0x70,0x70,0x78,0x78,0x78,0x7d
|
|
||||||
db 0x7d,0x7d,0x80,0x80,0x80,0x7f,0x7f,0x7f,0x7e,0x7e
|
|
||||||
db 0x7e,0x7d,0x7d,0x7d,0x7a,0x7a,0x7a,0x76,0x76,0x76
|
|
||||||
db 0x6f,0x6f,0x6f,0x65,0x65,0x65,0x5c,0x5c,0x5c,0x56
|
|
||||||
db 0x56,0x56,0x58,0x58,0x58,0x60,0x60,0x60,0x6b,0x6b
|
|
||||||
db 0x6b,0x73,0x73,0x73,0x7a,0x7a,0x7a,0x7d,0x7d,0x7d
|
|
||||||
db 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x7f
|
|
||||||
db 0x7f,0x7f,0x7d,0x7d,0x7d,0x7a,0x7a,0x7a,0x76,0x76
|
|
||||||
db 0x76,0x70,0x70,0x70,0x6a,0x6a,0x6a,0x66,0x66,0x66
|
|
||||||
db 0x66,0x66,0x66,0x6c,0x6c,0x6c,0x72,0x72,0x72,0x78
|
|
||||||
db 0x78,0x78,0x7c,0x7c,0x7c,0x7e,0x7e,0x7e,0x80,0x80
|
|
||||||
db 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80
|
|
||||||
db 0x7f,0x7f,0x7f,0x7d,0x7d,0x7d,0x7b,0x7b,0x7b,0x77
|
|
||||||
db 0x77,0x77,0x73,0x73,0x73,0x71,0x71,0x71,0x71,0x71
|
|
||||||
db 0x71,0x74,0x74,0x74,0x78,0x78,0x78,0x7b,0x7b,0x7b
|
|
||||||
db 0x7d,0x7d,0x7d,0x7f,0x7f,0x7f,0x80,0x80,0x80,0x80
|
|
||||||
db 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80
|
|
||||||
db 0x80,0x7f,0x7f,0x7f,0x7d,0x7d,0x7d,0x7c,0x7c,0x7c
|
|
||||||
db 0x7a,0x7a,0x7a,0x78,0x78,0x78,0x78,0x78,0x78,0x7a
|
|
||||||
db 0x7a,0x7a,0x7c,0x7c,0x7c,0x7e,0x7e,0x7e,0x7f,0x7f
|
|
||||||
db 0x7f,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80
|
|
||||||
db 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80
|
|
||||||
db 0x80,0x80,0x7f,0x7f,0x7f,0x7e,0x7e,0x7e,0x7e,0x7e
|
|
||||||
db 0x7e,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7e,0x7e,0x7e
|
|
||||||
db 0x7e,0x7e,0x7e,0x7f,0x7f,0x7f,0x80,0x80,0x80,0x80
|
|
||||||
db 0x80,0x80
|
|
||||||
|
|
||||||
mousepointer1:
|
|
||||||
db 0xff,0xff,0xff,0x06,0x06,0x06,0x0a,0x0a
|
|
||||||
db 0x0a,0x08,0x08,0x08,0x00,0x00,0x00,0x00,0x00,0x00
|
|
||||||
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
|
||||||
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
|
||||||
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
|
||||||
db 0xff,0xff,0xff,0xff,0xff,0xff,0x19,0x19,0x19,0x16
|
|
||||||
db 0x16,0x16,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
|
||||||
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
|
||||||
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
|
||||||
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff
|
|
||||||
db 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2e,0x2e,0x2e
|
|
||||||
db 0x23,0x23,0x23,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
|
||||||
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
|
||||||
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
|
||||||
db 0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff
|
|
||||||
db 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x3f
|
|
||||||
db 0x3f,0x29,0x29,0x29,0x00,0x00,0x00,0x00,0x00,0x00
|
|
||||||
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
|
||||||
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
|
||||||
db 0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff
|
|
||||||
db 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x47
|
|
||||||
db 0x47,0x47,0x2c,0x2c,0x2c,0x00,0x00,0x00,0x00,0x00
|
|
||||||
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
|
||||||
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
|
||||||
db 0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff
|
|
||||||
db 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff
|
|
||||||
db 0x48,0x48,0x48,0x2c,0x2c,0x2c,0x16,0x16,0x16,0x00
|
|
||||||
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
|
||||||
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
|
||||||
db 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff
|
|
||||||
db 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff
|
|
||||||
db 0xff,0x48,0x48,0x48,0x2c,0x2c,0x2c,0x16,0x16,0x16
|
|
||||||
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
|
||||||
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff
|
|
||||||
db 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff
|
|
||||||
db 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff
|
|
||||||
db 0xff,0xff,0x48,0x48,0x48,0x2c,0x2c,0x2c,0x00,0x00
|
|
||||||
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
|
||||||
db 0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff
|
|
||||||
db 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff
|
|
||||||
db 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff
|
|
||||||
db 0xff,0xff,0xff,0x48,0x48,0x48,0x2c,0x2c,0x2c,0x00
|
|
||||||
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
|
||||||
db 0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff
|
|
||||||
db 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff
|
|
||||||
db 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff
|
|
||||||
db 0xff,0xff,0xff,0xff,0x47,0x47,0x47,0x29,0x29,0x29
|
|
||||||
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
|
||||||
db 0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff
|
|
||||||
db 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff
|
|
||||||
db 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff
|
|
||||||
db 0xff,0xff,0xff,0xff,0xff,0x40,0x40,0x40,0x23,0x23
|
|
||||||
db 0x23,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
|
||||||
db 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff
|
|
||||||
db 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff
|
|
||||||
db 0xff,0xaa,0xaa,0xaa,0x9f,0x9f,0x9f,0x8c,0x8c,0x8c
|
|
||||||
db 0x70,0x70,0x70,0x4f,0x4f,0x4f,0x30,0x30,0x30,0x00
|
|
||||||
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff
|
|
||||||
db 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x8f,0x8f,0x8f
|
|
||||||
db 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff
|
|
||||||
db 0xff,0xff,0x9c,0x9c,0x9c,0x87,0x87,0x87,0x6c,0x6c
|
|
||||||
db 0x6c,0x4f,0x4f,0x4f,0x32,0x32,0x32,0x19,0x19,0x19
|
|
||||||
db 0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff
|
|
||||||
db 0xff,0xff,0x69,0x69,0x69,0x84,0x84,0x84,0xff,0xff
|
|
||||||
db 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff
|
|
||||||
db 0x92,0x92,0x92,0x79,0x79,0x79,0x59,0x59,0x59,0x3c
|
|
||||||
db 0x3c,0x3c,0x24,0x24,0x24,0x11,0x11,0x11,0x00,0x00
|
|
||||||
db 0x00,0x00,0x00,0x00,0xff,0xff,0xff,0x37,0x37,0x37
|
|
||||||
db 0x5d,0x5d,0x5d,0x70,0x70,0x70,0x76,0x76,0x76,0xff
|
|
||||||
db 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff
|
|
||||||
db 0xff,0x75,0x75,0x75,0x51,0x51,0x51,0x31,0x31,0x31
|
|
||||||
db 0x19,0x19,0x19,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
|
||||||
db 0x00,0x00,0x16,0x16,0x16,0x2d,0x2d,0x2d,0x49,0x49
|
|
||||||
db 0x49,0x53,0x53,0x53,0x54,0x54,0x54,0xff,0xff,0xff
|
|
||||||
db 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x78
|
|
||||||
db 0x78,0x78,0x54,0x54,0x54,0x30,0x30,0x30,0x16,0x16
|
|
||||||
db 0x16,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
|
||||||
db 0x0f,0x0f,0x0f,0x1f,0x1f,0x1f,0x30,0x30,0x30,0x33
|
|
||||||
db 0x33,0x33,0x33,0x33,0x33,0x3b,0x3b,0x3b,0xff,0xff
|
|
||||||
db 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff
|
|
||||||
db 0x62,0x62,0x62,0x3b,0x3b,0x3b,0x1c,0x1c,0x1c,0x00
|
|
||||||
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x08
|
|
||||||
db 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
|
||||||
db 0x00,0x00,0x00,0x24,0x24,0x24,0xff,0xff,0xff,0xff
|
|
||||||
db 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x6e,0x6e
|
|
||||||
db 0x6e,0x48,0x48,0x48,0x25,0x25,0x25,0x0e,0x0e,0x0e
|
|
||||||
db 0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x04,0x04,0x00
|
|
||||||
db 0x00,0x00,0x0a,0x0a,0x0a,0x09,0x09,0x09,0x00,0x00
|
|
||||||
db 0x00,0x00,0x00,0x00,0x29,0x29,0x29,0xff,0xff,0xff
|
|
||||||
db 0xff,0xff,0xff,0x7c,0x7c,0x7c,0x71,0x71,0x71,0x50
|
|
||||||
db 0x50,0x50,0x2b,0x2b,0x2b,0x00,0x00,0x00,0x00,0x00
|
|
||||||
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
|
||||||
db 0x00,0x00,0x00,0x02,0x02,0x02,0x04,0x04,0x04,0x00
|
|
||||||
db 0x00,0x00,0x00,0x00,0x00,0x36,0x36,0x36,0x56,0x56
|
|
||||||
db 0x56,0x69,0x69,0x69,0x64,0x64,0x64,0x4a,0x4a,0x4a
|
|
||||||
db 0x28,0x28,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
|
||||||
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
|
||||||
db 0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x05,0x05,0x05
|
|
||||||
db 0x00,0x00,0x00,0x21,0x21,0x21,0x39,0x39,0x39,0x49
|
|
||||||
db 0x49,0x49,0x48,0x48,0x48,0x35,0x35,0x35,0x1d,0x1d
|
|
||||||
db 0x1d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
|
||||||
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
|
||||||
db 0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00
|
|
||||||
db 0x00,0x00,0x00,0x00,0x1d,0x1d,0x1d,0x27,0x27,0x27
|
|
||||||
db 0x27,0x27,0x27,0x1d,0x1d,0x1d,0x0f,0x0f,0x0f,0x06
|
|
||||||
db 0x06,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
|
||||||
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
|
||||||
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
|
||||||
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
|
||||||
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
|
||||||
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
|
||||||
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
|
||||||
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
|
||||||
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
|
||||||
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
|
||||||
db 0x00,0x00,0x00,0x00
|
|
||||||
|
|
||||||
endg
|
|
@ -186,7 +186,7 @@ syscall_drawline:
|
|||||||
align 4
|
align 4
|
||||||
; system function 48
|
; system function 48
|
||||||
syscall_display_settings:
|
syscall_display_settings:
|
||||||
cmp ebx, 13
|
cmp ebx, .ftable.size-1
|
||||||
ja .ret
|
ja .ret
|
||||||
jmp dword[.ftable + ebx*4]
|
jmp dword[.ftable + ebx*4]
|
||||||
|
|
||||||
@ -206,6 +206,7 @@ dd .setFontSmoothing
|
|||||||
dd .getFontSize
|
dd .getFontSize
|
||||||
dd .setFontSize
|
dd .setFontSize
|
||||||
dd .setSkinUnicode
|
dd .setSkinUnicode
|
||||||
|
.ftable.size = ($ - .ftable)/4
|
||||||
|
|
||||||
.redrawWholeScreen:
|
.redrawWholeScreen:
|
||||||
xor eax, eax
|
xor eax, eax
|
||||||
@ -223,7 +224,7 @@ dd .setSkinUnicode
|
|||||||
mov eax, [_display.height]
|
mov eax, [_display.height]
|
||||||
dec eax
|
dec eax
|
||||||
mov [draw_limits.bottom], eax
|
mov [draw_limits.bottom], eax
|
||||||
mov eax, window_data
|
mov eax, window_data ; TODO: check pointer
|
||||||
jmp redrawscreen
|
jmp redrawscreen
|
||||||
|
|
||||||
.setButtonStyle:
|
.setButtonStyle:
|
||||||
@ -406,18 +407,18 @@ align 4
|
|||||||
;> ebx = 1
|
;> ebx = 1
|
||||||
;> ecx = scale power (resulting scale is 2^ebx)
|
;> ecx = scale power (resulting scale is 2^ebx)
|
||||||
syscall_set_window_shape:
|
syscall_set_window_shape:
|
||||||
mov edi, [current_slot_idx]
|
mov edi, [current_slot]
|
||||||
shl edi, BSF sizeof.WDATA
|
mov edi, [edi + APPDATA.window]
|
||||||
|
|
||||||
test ebx, ebx
|
test ebx, ebx
|
||||||
jne .shape_scale
|
jne .shape_scale
|
||||||
mov [window_data + edi + WDATA.shape], ecx
|
mov [edi + WDATA.shape], ecx
|
||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
align 4
|
align 4
|
||||||
.shape_scale:
|
.shape_scale:
|
||||||
dec ebx
|
dec ebx
|
||||||
jnz .exit
|
jnz .exit
|
||||||
mov [window_data + edi + WDATA.shape_scale], ecx
|
mov [edi + WDATA.shape_scale], ecx
|
||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
align 4
|
align 4
|
||||||
.exit:
|
.exit:
|
||||||
@ -427,9 +428,8 @@ align 4
|
|||||||
align 4
|
align 4
|
||||||
; system function 67
|
; system function 67
|
||||||
syscall_move_window:
|
syscall_move_window:
|
||||||
mov edi, [current_slot_idx]
|
mov edi, [current_slot]
|
||||||
shl edi, BSF sizeof.WDATA
|
mov edi, [edi + APPDATA.window]
|
||||||
add edi, window_data
|
|
||||||
|
|
||||||
test [edi + WDATA.fl_wdrawn], 1
|
test [edi + WDATA.fl_wdrawn], 1
|
||||||
jz .exit
|
jz .exit
|
||||||
@ -556,11 +556,11 @@ align 4
|
|||||||
.next_window:
|
.next_window:
|
||||||
movzx edi, word[WIN_POS + esi * 2]
|
movzx edi, word[WIN_POS + esi * 2]
|
||||||
shl edi, BSF sizeof.WDATA
|
shl edi, BSF sizeof.WDATA
|
||||||
|
add edi, window_data
|
||||||
|
|
||||||
test byte [window_data + edi + WDATA.fl_wstate], WSTATE_USED
|
test byte [edi + WDATA.fl_wstate], WSTATE_USED
|
||||||
jz .skip_window
|
jz .skip_window
|
||||||
|
|
||||||
add edi, window_data
|
|
||||||
test [edi + WDATA.fl_wstate], WSTATE_MINIMIZED
|
test [edi + WDATA.fl_wstate], WSTATE_MINIMIZED
|
||||||
jnz .skip_window
|
jnz .skip_window
|
||||||
|
|
||||||
@ -1245,7 +1245,7 @@ window_check_events:
|
|||||||
dec bl
|
dec bl
|
||||||
jnz @f
|
jnz @f
|
||||||
call minimize_window
|
call minimize_window
|
||||||
jmp .exit
|
ret
|
||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
align 4
|
align 4
|
||||||
@@:
|
@@:
|
||||||
@ -1614,9 +1614,8 @@ align 4
|
|||||||
align 4
|
align 4
|
||||||
;< edx = pointer to WDATA struct
|
;< edx = pointer to WDATA struct
|
||||||
window._.sys_set_window:
|
window._.sys_set_window:
|
||||||
mov eax, [current_slot_idx]
|
mov eax, [current_slot]
|
||||||
shl eax, BSF sizeof.WDATA
|
mov eax, [eax + APPDATA.window]
|
||||||
add eax, window_data
|
|
||||||
; save window colors
|
; save window colors
|
||||||
mov [eax + WDATA.cl_workarea], edx
|
mov [eax + WDATA.cl_workarea], edx
|
||||||
mov [eax + WDATA.cl_titlebar], esi
|
mov [eax + WDATA.cl_titlebar], esi
|
||||||
@ -1847,18 +1846,20 @@ end virtual
|
|||||||
|
|
||||||
mov edi, esi
|
mov edi, esi
|
||||||
shl edi, BSF sizeof.WDATA
|
shl edi, BSF sizeof.WDATA
|
||||||
|
add edi, window_data
|
||||||
|
|
||||||
cmp esi, 1
|
cmp esi, 1
|
||||||
jz .check_for_shaped_window
|
jz .check_for_shaped_window
|
||||||
|
|
||||||
cmp [window_data + edi + WDATA.box.width], 0
|
cmp [edi + WDATA.box.width], 0
|
||||||
jnz .check_for_shaped_window
|
jnz .check_for_shaped_window
|
||||||
cmp [window_data + edi + WDATA.box.height], 0
|
|
||||||
|
cmp [edi + WDATA.box.height], 0
|
||||||
jz .exit
|
jz .exit
|
||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
align 4
|
align 4
|
||||||
.check_for_shaped_window:
|
.check_for_shaped_window:
|
||||||
cmp [window_data + edi + WDATA.shape], 0
|
cmp [edi + WDATA.shape], 0
|
||||||
jne .shaped_window
|
jne .shaped_window
|
||||||
|
|
||||||
; get x&y size
|
; get x&y size
|
||||||
@ -1908,7 +1909,7 @@ align 4
|
|||||||
inc ecx
|
inc ecx
|
||||||
inc edx
|
inc edx
|
||||||
|
|
||||||
push [window_data + edi + WDATA.shape_scale] ; push scale first -> for loop
|
push [edi + WDATA.shape_scale] ; push scale first -> for loop
|
||||||
|
|
||||||
; get WinMap start -> ebp
|
; get WinMap start -> ebp
|
||||||
push eax
|
push eax
|
||||||
@ -1918,7 +1919,7 @@ align 4
|
|||||||
add eax, [_display.win_map]
|
add eax, [_display.win_map]
|
||||||
mov ebp, eax
|
mov ebp, eax
|
||||||
|
|
||||||
mov edi, [window_data + edi + WDATA.shape]
|
mov edi, [edi + WDATA.shape]
|
||||||
pop eax
|
pop eax
|
||||||
|
|
||||||
; eax = x_start
|
; eax = x_start
|
||||||
@ -2227,9 +2228,8 @@ window._.draw_window_caption:
|
|||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
align 4
|
align 4
|
||||||
@@:
|
@@:
|
||||||
mov edx, [current_slot_idx]
|
mov edx, [current_slot]
|
||||||
shl edx, BSF sizeof.WDATA
|
mov edx, [edx + APPDATA.window]
|
||||||
add edx, window_data
|
|
||||||
movzx ebx, [edx + WDATA.fl_wstyle]
|
movzx ebx, [edx + WDATA.fl_wstyle]
|
||||||
and bl, 0x0F
|
and bl, 0x0F
|
||||||
cmp bl, 3
|
cmp bl, 3
|
||||||
@ -2263,17 +2263,17 @@ align 4
|
|||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
align 4
|
align 4
|
||||||
.2:
|
.2:
|
||||||
mov edi, [current_slot_idx]
|
mov edi, [current_slot]
|
||||||
shl edi, BSF sizeof.WDATA
|
mov edi, [edi + APPDATA.window]
|
||||||
test [window_data + edi + WDATA.fl_wstyle], WSTYLE_HASCAPTION
|
test [edi + WDATA.fl_wstyle], WSTYLE_HASCAPTION
|
||||||
jz .exit
|
jz .exit
|
||||||
mov edx, [window_data + edi + WDATA.caption]
|
mov edx, [edi + WDATA.caption]
|
||||||
or edx, edx
|
or edx, edx
|
||||||
jz .exit
|
jz .exit
|
||||||
|
|
||||||
mov ebp, [edi + window_data + WDATA.box.left - 2]
|
mov ebp, [edi + WDATA.box.left - 2]
|
||||||
mov bp, word[edi + window_data + WDATA.box.top]
|
mov bp, word[edi + WDATA.box.top]
|
||||||
movzx eax, [edi + window_data + WDATA.fl_wstyle]
|
movzx eax, [edi + WDATA.fl_wstyle]
|
||||||
and al, 0x0F
|
and al, 0x0F
|
||||||
cmp al, 3
|
cmp al, 3
|
||||||
je .skinned
|
je .skinned
|
||||||
@ -2284,7 +2284,7 @@ align 4
|
|||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
align 4
|
align 4
|
||||||
.skinned:
|
.skinned:
|
||||||
movzx eax, word[edi + window_data + WDATA.box.width]
|
movzx eax, word[edi + WDATA.box.width]
|
||||||
sub ax, [_skinmargins.left]
|
sub ax, [_skinmargins.left]
|
||||||
sub ax, [_skinmargins.right]
|
sub ax, [_skinmargins.right]
|
||||||
js .exit
|
js .exit
|
||||||
@ -2301,7 +2301,7 @@ align 4
|
|||||||
.not_skinned:
|
.not_skinned:
|
||||||
cmp al, 1
|
cmp al, 1
|
||||||
je .exit
|
je .exit
|
||||||
movzx eax, word[edi + window_data + WDATA.box.width]
|
movzx eax, word[edi + WDATA.box.width]
|
||||||
sub eax, 16
|
sub eax, 16
|
||||||
js .exit
|
js .exit
|
||||||
mov ebx, 80002h
|
mov ebx, 80002h
|
||||||
@ -2310,7 +2310,7 @@ align 4
|
|||||||
mov esi, eax
|
mov esi, eax
|
||||||
add ebx, ebp
|
add ebx, ebp
|
||||||
mov ecx, [common_colours + 16]
|
mov ecx, [common_colours + 16]
|
||||||
mov al, [window_data + edi + WDATA.captionEncoding]
|
mov al, [edi + WDATA.captionEncoding]
|
||||||
test al, al
|
test al, al
|
||||||
jnz @f
|
jnz @f
|
||||||
mov al, 1
|
mov al, 1
|
||||||
@ -2368,19 +2368,19 @@ align 4
|
|||||||
; void __fastcall get_window_rect(struct RECT* rc);
|
; void __fastcall get_window_rect(struct RECT* rc);
|
||||||
; ecx = pointer to RECT
|
; ecx = pointer to RECT
|
||||||
window._.get_rect:
|
window._.get_rect:
|
||||||
mov eax, [current_slot_idx]
|
mov eax, [current_slot]
|
||||||
shl eax, BSF sizeof.WDATA
|
mov eax, [eax + APPDATA.window]
|
||||||
|
|
||||||
mov edx, [eax + window_data + WDATA.box.left]
|
mov edx, [eax + WDATA.box.left]
|
||||||
mov [ecx+RECT.left], edx
|
mov [ecx+RECT.left], edx
|
||||||
|
|
||||||
add edx, [eax + window_data + WDATA.box.width]
|
add edx, [eax + WDATA.box.width]
|
||||||
mov [ecx+RECT.right], edx
|
mov [ecx+RECT.right], edx
|
||||||
|
|
||||||
mov edx, [eax +window_data + WDATA.box.top]
|
mov edx, [eax + WDATA.box.top]
|
||||||
mov [ecx+RECT.top], edx
|
mov [ecx+RECT.top], edx
|
||||||
|
|
||||||
add edx, [eax + window_data + WDATA.box.height]
|
add edx, [eax + WDATA.box.height]
|
||||||
mov [ecx+RECT.bottom], edx
|
mov [ecx+RECT.bottom], edx
|
||||||
ret
|
ret
|
||||||
;------------------------------------------------------------------------------
|
;------------------------------------------------------------------------------
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
;; ;;
|
;; ;;
|
||||||
;; Copyright (C) KolibriOS team 2004-2022. All rights reserved. ;;
|
;; Copyright (C) KolibriOS team 2004-2023. All rights reserved. ;;
|
||||||
;; Distributed under terms of the GNU General Public License ;;
|
;; Distributed under terms of the GNU General Public License ;;
|
||||||
;; ;;
|
;; ;;
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
@ -54,46 +54,7 @@ draw_mouse_under:
|
|||||||
movzx ebx, word [Y_UNDER]
|
movzx ebx, word [Y_UNDER]
|
||||||
stdcall [_display.restore_cursor], eax, ebx
|
stdcall [_display.restore_cursor], eax, ebx
|
||||||
popad
|
popad
|
||||||
ret
|
@@:
|
||||||
|
|
||||||
@@:
|
|
||||||
pushad
|
|
||||||
xor ecx, ecx
|
|
||||||
xor edx, edx
|
|
||||||
|
|
||||||
.mres:
|
|
||||||
movzx eax, word [X_UNDER]
|
|
||||||
movzx ebx, word [Y_UNDER]
|
|
||||||
add eax, ecx
|
|
||||||
add ebx, edx
|
|
||||||
push ecx
|
|
||||||
push edx
|
|
||||||
push eax
|
|
||||||
push ebx
|
|
||||||
mov eax, edx
|
|
||||||
shl eax, 6
|
|
||||||
shl ecx, 2
|
|
||||||
add eax, ecx
|
|
||||||
add eax, mouseunder
|
|
||||||
mov ecx, [eax]
|
|
||||||
pop ebx
|
|
||||||
pop eax
|
|
||||||
mov edi, 1 ; force
|
|
||||||
or ecx, 0x04000000 ; don't save to mouseunder area
|
|
||||||
; call [putpixel]
|
|
||||||
call __sys_putpixel
|
|
||||||
pop edx
|
|
||||||
pop ecx
|
|
||||||
inc ecx
|
|
||||||
cmp ecx, 16
|
|
||||||
jnz .mres
|
|
||||||
|
|
||||||
xor ecx, ecx
|
|
||||||
inc edx
|
|
||||||
cmp edx, 24
|
|
||||||
jnz .mres
|
|
||||||
|
|
||||||
popad
|
|
||||||
ret
|
ret
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
@ -101,7 +62,7 @@ draw_mouse_under:
|
|||||||
align 4
|
align 4
|
||||||
save_draw_mouse:
|
save_draw_mouse:
|
||||||
cmp [_display.move_cursor], 0
|
cmp [_display.move_cursor], 0
|
||||||
je .no_hw_cursor
|
je .exit
|
||||||
pushad
|
pushad
|
||||||
|
|
||||||
mov [X_UNDER], ax
|
mov [X_UNDER], ax
|
||||||
@ -158,8 +119,10 @@ save_draw_mouse:
|
|||||||
je .draw
|
je .draw
|
||||||
|
|
||||||
@@:
|
@@:
|
||||||
push esi
|
cmp [_display.select_cursor], 0
|
||||||
call [_display.select_cursor]
|
jz .error
|
||||||
|
|
||||||
|
stdcall [_display.select_cursor], esi
|
||||||
mov [current_cursor], esi
|
mov [current_cursor], esi
|
||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
align 4
|
align 4
|
||||||
@ -177,276 +140,9 @@ align 4
|
|||||||
; ret
|
; ret
|
||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
align 4
|
align 4
|
||||||
.no_hw_cursor:
|
.error:
|
||||||
pushad
|
|
||||||
; save & draw
|
|
||||||
mov [X_UNDER], ax
|
|
||||||
mov [Y_UNDER], bx
|
|
||||||
push eax
|
|
||||||
push ebx
|
|
||||||
mov ecx, 0
|
|
||||||
mov edx, 0
|
|
||||||
;--------------------------------------
|
|
||||||
align 4
|
|
||||||
.drm:
|
|
||||||
push eax
|
|
||||||
push ebx
|
|
||||||
push ecx
|
|
||||||
push edx
|
|
||||||
; helloworld
|
|
||||||
push ecx
|
|
||||||
add eax, ecx ; save picture under mouse
|
|
||||||
add ebx, edx
|
|
||||||
push ecx
|
|
||||||
or ecx, 0x04000000 ; don't load to mouseunder area
|
|
||||||
push eax ebx edx edi
|
|
||||||
call [GETPIXEL]
|
|
||||||
pop edi edx ebx eax
|
|
||||||
mov [COLOR_TEMP], ecx
|
|
||||||
pop ecx
|
|
||||||
mov eax, edx
|
|
||||||
shl eax, 6
|
|
||||||
shl ecx, 2
|
|
||||||
add eax, ecx
|
|
||||||
add eax, mouseunder
|
|
||||||
mov ebx, [COLOR_TEMP]
|
|
||||||
and ebx, 0xffffff
|
|
||||||
mov [eax], ebx
|
|
||||||
pop ecx
|
|
||||||
mov edi, edx ; y cycle
|
|
||||||
shl edi, 4 ; *16 bytes per row
|
|
||||||
add edi, ecx ; x cycle
|
|
||||||
mov esi, edi
|
|
||||||
add edi, esi
|
|
||||||
add edi, esi ; *3
|
|
||||||
add edi, [MOUSE_PICTURE] ; we have our str address
|
|
||||||
mov esi, edi
|
|
||||||
add esi, 16*24*3
|
|
||||||
push ecx
|
|
||||||
mov ecx, [COLOR_TEMP]
|
|
||||||
call combine_colors
|
|
||||||
and ecx, 0xffffff
|
|
||||||
mov [MOUSE_COLOR_MEM], ecx
|
|
||||||
pop ecx
|
|
||||||
pop edx
|
|
||||||
pop ecx
|
|
||||||
pop ebx
|
|
||||||
pop eax
|
|
||||||
add eax, ecx ; we have x coord+cycle
|
|
||||||
add ebx, edx ; and y coord+cycle
|
|
||||||
push ecx
|
|
||||||
mov ecx, [MOUSE_COLOR_MEM]
|
|
||||||
mov edi, 1 ; force
|
|
||||||
or ecx, 0x04000000 ; don't save to mouseunder area
|
|
||||||
; call [putpixel]
|
|
||||||
call __sys_putpixel
|
|
||||||
pop ecx
|
|
||||||
mov ebx, [esp+0] ; pure y coord again
|
|
||||||
mov eax, [esp+4] ; and x
|
|
||||||
inc ecx ; +1 cycle
|
|
||||||
cmp ecx, 16 ; if more than 16
|
|
||||||
jnz .drm
|
|
||||||
|
|
||||||
xor ecx, ecx
|
|
||||||
inc edx
|
|
||||||
cmp edx, 24
|
|
||||||
jnz .drm
|
|
||||||
|
|
||||||
add esp, 8
|
|
||||||
popad
|
popad
|
||||||
ret
|
.exit:
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
align 4
|
|
||||||
combine_colors:
|
|
||||||
; in
|
|
||||||
; ecx - color ( 00 RR GG BB )
|
|
||||||
; edi - ref to new color byte
|
|
||||||
; esi - ref to alpha byte
|
|
||||||
;
|
|
||||||
; out
|
|
||||||
; ecx - new color ( roughly (ecx*[esi]>>8)+([edi]*[esi]>>8) )
|
|
||||||
push eax
|
|
||||||
push ebx
|
|
||||||
push edx
|
|
||||||
push ecx
|
|
||||||
xor ecx, ecx
|
|
||||||
; byte 0
|
|
||||||
mov eax, 0xff
|
|
||||||
sub al, [esi+0]
|
|
||||||
mov ebx, [esp]
|
|
||||||
shr ebx, 16
|
|
||||||
and ebx, 0xff
|
|
||||||
mul ebx
|
|
||||||
shr eax, 8
|
|
||||||
add ecx, eax
|
|
||||||
xor eax, eax
|
|
||||||
xor ebx, ebx
|
|
||||||
mov al, [edi+0]
|
|
||||||
mov bl, [esi+0]
|
|
||||||
mul ebx
|
|
||||||
shr eax, 8
|
|
||||||
add ecx, eax
|
|
||||||
shl ecx, 8
|
|
||||||
; byte 1
|
|
||||||
mov eax, 0xff
|
|
||||||
sub al, [esi+1]
|
|
||||||
mov ebx, [esp]
|
|
||||||
shr ebx, 8
|
|
||||||
and ebx, 0xff
|
|
||||||
mul ebx
|
|
||||||
shr eax, 8
|
|
||||||
add ecx, eax
|
|
||||||
xor eax, eax
|
|
||||||
xor ebx, ebx
|
|
||||||
mov al, [edi+1]
|
|
||||||
mov bl, [esi+1]
|
|
||||||
mul ebx
|
|
||||||
shr eax, 8
|
|
||||||
add ecx, eax
|
|
||||||
shl ecx, 8
|
|
||||||
; byte 2
|
|
||||||
mov eax, 0xff
|
|
||||||
sub al, [esi+2]
|
|
||||||
mov ebx, [esp]
|
|
||||||
and ebx, 0xff
|
|
||||||
mul ebx
|
|
||||||
shr eax, 8
|
|
||||||
add ecx, eax
|
|
||||||
xor eax, eax
|
|
||||||
xor ebx, ebx
|
|
||||||
mov al, [edi+2]
|
|
||||||
mov bl, [esi+2]
|
|
||||||
mul ebx
|
|
||||||
shr eax, 8
|
|
||||||
add ecx, eax
|
|
||||||
pop eax
|
|
||||||
pop edx
|
|
||||||
pop ebx
|
|
||||||
pop eax
|
|
||||||
ret
|
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
align 4
|
|
||||||
check_mouse_area_for_getpixel:
|
|
||||||
; in:
|
|
||||||
; eax = x
|
|
||||||
; ebx = y
|
|
||||||
; out:
|
|
||||||
; ecx = new color
|
|
||||||
push eax ebx
|
|
||||||
; check for Y
|
|
||||||
xor ecx, ecx
|
|
||||||
mov cx, [Y_UNDER] ; [MOUSE_Y]
|
|
||||||
|
|
||||||
cmp ebx, ecx
|
|
||||||
jb .no_mouse_area
|
|
||||||
add ecx, 23 ; mouse cursor Y size
|
|
||||||
cmp ebx, ecx
|
|
||||||
ja .no_mouse_area
|
|
||||||
; offset Y
|
|
||||||
sub bx, [Y_UNDER] ; [MOUSE_Y]
|
|
||||||
;--------------------------------------
|
|
||||||
; check for X
|
|
||||||
xor ecx, ecx
|
|
||||||
mov cx, [X_UNDER] ; [MOUSE_X]
|
|
||||||
cmp eax, ecx
|
|
||||||
jb .no_mouse_area
|
|
||||||
add ecx, 15 ; mouse cursor X size
|
|
||||||
cmp eax, ecx
|
|
||||||
ja .no_mouse_area
|
|
||||||
; offset X
|
|
||||||
sub ax, [X_UNDER] ; [MOUSE_X]
|
|
||||||
;--------------------------------------
|
|
||||||
; eax = offset x
|
|
||||||
; ebx = offset y
|
|
||||||
shl ebx, 6 ;y
|
|
||||||
shl eax, 2 ;x
|
|
||||||
add eax, ebx
|
|
||||||
add eax, mouseunder
|
|
||||||
mov ecx, [eax]
|
|
||||||
and ecx, 0xffffff
|
|
||||||
or ecx, 0xff000000
|
|
||||||
pop ebx eax
|
|
||||||
ret
|
|
||||||
|
|
||||||
.no_mouse_area:
|
|
||||||
xor ecx, ecx
|
|
||||||
pop ebx eax
|
|
||||||
ret
|
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
align 4
|
|
||||||
check_mouse_area_for_putpixel:
|
|
||||||
; in:
|
|
||||||
; ecx = x shl 16 + y
|
|
||||||
; eax = color
|
|
||||||
; out:
|
|
||||||
; eax = new color
|
|
||||||
push eax
|
|
||||||
; check for Y
|
|
||||||
mov ax, [Y_UNDER] ; [MOUSE_Y]
|
|
||||||
cmp cx, ax
|
|
||||||
jb .no_mouse_area
|
|
||||||
add ax, 23 ; mouse cursor Y size
|
|
||||||
cmp cx, ax
|
|
||||||
ja .no_mouse_area
|
|
||||||
; offset Y
|
|
||||||
sub cx, [Y_UNDER] ; [MOUSE_Y]
|
|
||||||
mov ax, cx
|
|
||||||
shl eax, 16
|
|
||||||
|
|
||||||
; check for X
|
|
||||||
mov ax, [X_UNDER] ; [MOUSE_X]
|
|
||||||
shr ecx, 16
|
|
||||||
cmp cx, ax
|
|
||||||
jb .no_mouse_area
|
|
||||||
add ax, 15 ; mouse cursor X size
|
|
||||||
cmp cx, ax
|
|
||||||
ja .no_mouse_area
|
|
||||||
; offset X
|
|
||||||
sub cx, [X_UNDER] ; [MOUSE_X]
|
|
||||||
mov ax, cx
|
|
||||||
|
|
||||||
; eax = (offset y) shl 16 + (offset x)
|
|
||||||
|
|
||||||
pop ecx
|
|
||||||
|
|
||||||
push eax ebx
|
|
||||||
|
|
||||||
mov ebx, eax
|
|
||||||
shr ebx, 16 ; y
|
|
||||||
and eax, 0xffff ; x
|
|
||||||
|
|
||||||
shl ebx, 6
|
|
||||||
shl eax, 2
|
|
||||||
add eax, ebx
|
|
||||||
add eax, mouseunder
|
|
||||||
and ecx, 0xFFFFFF
|
|
||||||
mov [eax], ecx
|
|
||||||
|
|
||||||
pop ebx eax
|
|
||||||
|
|
||||||
push esi edi
|
|
||||||
rol eax, 16
|
|
||||||
movzx edi, ax ; y cycle
|
|
||||||
shl edi, 4 ; *16 bytes per row
|
|
||||||
shr eax, 16
|
|
||||||
add edi, eax ; x cycle
|
|
||||||
lea edi, [edi*3]
|
|
||||||
add edi, [MOUSE_PICTURE] ; we have our str address
|
|
||||||
mov esi, edi
|
|
||||||
add esi, 16*24*3
|
|
||||||
call combine_colors
|
|
||||||
pop edi esi
|
|
||||||
mov eax, ecx
|
|
||||||
ret
|
|
||||||
|
|
||||||
.no_mouse_area:
|
|
||||||
pop eax
|
|
||||||
ret
|
ret
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
@ -461,25 +157,22 @@ __sys_draw_pointer:
|
|||||||
cmp [redrawmouse_unconditional], 0
|
cmp [redrawmouse_unconditional], 0
|
||||||
je @f
|
je @f
|
||||||
mov [redrawmouse_unconditional], 0
|
mov [redrawmouse_unconditional], 0
|
||||||
jmp redrawmouse
|
jmp .redrawmouse
|
||||||
@@:
|
@@:
|
||||||
cmp eax, ecx
|
cmp eax, ecx
|
||||||
jne redrawmouse
|
jne .redrawmouse
|
||||||
cmp ebx, edx
|
cmp ebx, edx
|
||||||
je nodmp
|
je .nodmp
|
||||||
|
|
||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
|
|
||||||
align 4
|
align 4
|
||||||
redrawmouse:
|
.redrawmouse:
|
||||||
pushfd
|
pushfd
|
||||||
cli
|
cli
|
||||||
call draw_mouse_under
|
call draw_mouse_under
|
||||||
call save_draw_mouse
|
call save_draw_mouse
|
||||||
|
|
||||||
; mov eax, [_display.select_cursor]
|
|
||||||
; test eax, eax
|
|
||||||
; jz @f
|
|
||||||
cmp [_display.select_cursor], select_cursor
|
cmp [_display.select_cursor], select_cursor
|
||||||
jne @f
|
jne @f
|
||||||
|
|
||||||
@ -499,7 +192,7 @@ redrawmouse:
|
|||||||
mov [X_UNDER_sub_CUR_hot_x_add_curh], ax
|
mov [X_UNDER_sub_CUR_hot_x_add_curh], ax
|
||||||
@@:
|
@@:
|
||||||
popfd
|
popfd
|
||||||
nodmp:
|
.nodmp:
|
||||||
popad
|
popad
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
@ -1901,15 +1901,12 @@ sys_midi:
|
|||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
sys_end:
|
sys_end:
|
||||||
cmp [_display.select_cursor], 0
|
|
||||||
je @f
|
|
||||||
; restore default cursor before killing
|
; restore default cursor before killing
|
||||||
pusha
|
pusha
|
||||||
mov ecx, [current_slot]
|
mov ecx, [current_slot]
|
||||||
mov ecx, [ecx + APPDATA.window]
|
mov ecx, [ecx + APPDATA.window]
|
||||||
call restore_default_cursor_before_killing
|
call restore_default_cursor_before_killing
|
||||||
popa
|
popa
|
||||||
@@:
|
|
||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
; kill all sockets this process owns
|
; kill all sockets this process owns
|
||||||
pusha
|
pusha
|
||||||
@ -1954,8 +1951,10 @@ restore_default_cursor_before_killing:
|
|||||||
cmp esi, [current_cursor]
|
cmp esi, [current_cursor]
|
||||||
je @f
|
je @f
|
||||||
|
|
||||||
push esi
|
cmp [_display.select_cursor], 0
|
||||||
call [_display.select_cursor]
|
jz @f
|
||||||
|
|
||||||
|
stdcall [_display.select_cursor], esi
|
||||||
mov [current_cursor], esi
|
mov [current_cursor], esi
|
||||||
@@:
|
@@:
|
||||||
mov [redrawmouse_unconditional], 1
|
mov [redrawmouse_unconditional], 1
|
||||||
@ -2062,8 +2061,6 @@ sysfn_terminate: ; 18.2 = TERMINATE
|
|||||||
call socket_process_end
|
call socket_process_end
|
||||||
popa
|
popa
|
||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
cmp [_display.select_cursor], 0
|
|
||||||
je .restore_end
|
|
||||||
; restore default cursor before killing
|
; restore default cursor before killing
|
||||||
pusha
|
pusha
|
||||||
mov ecx, [esp+32]
|
mov ecx, [esp+32]
|
||||||
@ -2075,7 +2072,6 @@ sysfn_terminate: ; 18.2 = TERMINATE
|
|||||||
call restore_default_cursor_before_killing
|
call restore_default_cursor_before_killing
|
||||||
@@:
|
@@:
|
||||||
popa
|
popa
|
||||||
.restore_end:
|
|
||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
;call MEM_Heap_Lock ;guarantee that process isn't working with heap
|
;call MEM_Heap_Lock ;guarantee that process isn't working with heap
|
||||||
mov [ecx + APPDATA.state], TSTATE_ZOMBIE; clear possible i40's
|
mov [ecx + APPDATA.state], TSTATE_ZOMBIE; clear possible i40's
|
||||||
@ -2557,8 +2553,7 @@ sys_cpuusage:
|
|||||||
lea eax, [edx-1]
|
lea eax, [edx-1]
|
||||||
stosd
|
stosd
|
||||||
|
|
||||||
mov edx, ecx
|
mov edx, [SLOT_BASE + ecx + APPDATA.window]
|
||||||
shr edx, (BSF sizeof.APPDATA - BSF sizeof.WDATA)
|
|
||||||
|
|
||||||
; +30: PID/TID
|
; +30: PID/TID
|
||||||
mov eax, [SLOT_BASE + ecx + APPDATA.tid]
|
mov eax, [SLOT_BASE + ecx + APPDATA.tid]
|
||||||
@ -2566,7 +2561,7 @@ sys_cpuusage:
|
|||||||
|
|
||||||
; window position and size
|
; window position and size
|
||||||
push esi
|
push esi
|
||||||
lea esi, [window_data + edx + WDATA.box]
|
lea esi, [edx + WDATA.box]
|
||||||
movsd
|
movsd
|
||||||
movsd
|
movsd
|
||||||
movsd
|
movsd
|
||||||
@ -2577,14 +2572,14 @@ sys_cpuusage:
|
|||||||
stosd
|
stosd
|
||||||
|
|
||||||
; Window client area box
|
; Window client area box
|
||||||
lea esi, [window_data + edx + WDATA.clientbox]
|
lea esi, [edx + WDATA.clientbox]
|
||||||
movsd
|
movsd
|
||||||
movsd
|
movsd
|
||||||
movsd
|
movsd
|
||||||
movsd
|
movsd
|
||||||
|
|
||||||
; Window state
|
; Window state
|
||||||
mov al, [window_data + edx + WDATA.fl_wstate]
|
mov al, [edx + WDATA.fl_wstate]
|
||||||
stosb
|
stosb
|
||||||
|
|
||||||
; Event mask (+71)
|
; Event mask (+71)
|
||||||
@ -2771,12 +2766,8 @@ cache_enable:
|
|||||||
|
|
||||||
is_cache_enabled:
|
is_cache_enabled:
|
||||||
mov eax, cr0
|
mov eax, cr0
|
||||||
mov ebx, eax
|
|
||||||
and eax, 01100000_00000000_00000000_00000000b
|
and eax, 01100000_00000000_00000000_00000000b
|
||||||
jz cache_disabled
|
mov [esp + SYSCALL_STACK.eax], eax
|
||||||
mov [esp + SYSCALL_STACK.eax], ebx
|
|
||||||
cache_disabled:
|
|
||||||
mov dword [esp + SYSCALL_STACK.eax], eax;0
|
|
||||||
ret
|
ret
|
||||||
|
|
||||||
modify_pce:
|
modify_pce:
|
||||||
@ -2891,7 +2882,7 @@ backgr:
|
|||||||
; DEBUGF 1, "K : backg y %x\n",[BG_Rect_Y_top_bottom]
|
; DEBUGF 1, "K : backg y %x\n",[BG_Rect_Y_top_bottom]
|
||||||
;--------- set event 5 start ----------
|
;--------- set event 5 start ----------
|
||||||
push ecx edi
|
push ecx edi
|
||||||
xor edi, edi
|
mov edi, window_data
|
||||||
mov ecx, [thread_count]
|
mov ecx, [thread_count]
|
||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
align 4
|
align 4
|
||||||
@ -2899,40 +2890,38 @@ set_bgr_event:
|
|||||||
add edi, sizeof.WDATA
|
add edi, sizeof.WDATA
|
||||||
mov eax, [BG_Rect_X_left_right]
|
mov eax, [BG_Rect_X_left_right]
|
||||||
mov edx, [BG_Rect_Y_top_bottom]
|
mov edx, [BG_Rect_Y_top_bottom]
|
||||||
cmp [window_data + edi + WDATA.draw_bgr_x], 0
|
cmp [edi + WDATA.draw_bgr_x], 0
|
||||||
jz .set
|
jz .set
|
||||||
.join:
|
.join:
|
||||||
cmp word [window_data + edi + WDATA.draw_bgr_x], ax
|
cmp word [edi + WDATA.draw_bgr_x], ax
|
||||||
jae @f
|
jae @f
|
||||||
mov word [window_data + edi + WDATA.draw_bgr_x], ax
|
mov word [edi + WDATA.draw_bgr_x], ax
|
||||||
@@:
|
@@:
|
||||||
shr eax, 16
|
shr eax, 16
|
||||||
cmp word [window_data + edi + WDATA.draw_bgr_x + 2], ax
|
cmp word [edi + WDATA.draw_bgr_x + 2], ax
|
||||||
jbe @f
|
jbe @f
|
||||||
mov word [window_data + edi + WDATA.draw_bgr_x + 2], ax
|
mov word [edi + WDATA.draw_bgr_x + 2], ax
|
||||||
@@:
|
@@:
|
||||||
cmp word [window_data + edi + WDATA.draw_bgr_y], dx
|
cmp word [edi + WDATA.draw_bgr_y], dx
|
||||||
jae @f
|
jae @f
|
||||||
mov word [window_data + edi + WDATA.draw_bgr_y], dx
|
mov word [edi + WDATA.draw_bgr_y], dx
|
||||||
@@:
|
@@:
|
||||||
shr edx, 16
|
shr edx, 16
|
||||||
cmp word [window_data + edi + WDATA.draw_bgr_y+2], dx
|
cmp word [edi + WDATA.draw_bgr_y+2], dx
|
||||||
jbe @f
|
jbe @f
|
||||||
mov word [window_data + edi + WDATA.draw_bgr_y+2], dx
|
mov word [edi + WDATA.draw_bgr_y+2], dx
|
||||||
@@:
|
@@:
|
||||||
jmp .common
|
jmp .common
|
||||||
.set:
|
.set:
|
||||||
mov [window_data + edi + WDATA.draw_bgr_x], eax
|
mov [edi + WDATA.draw_bgr_x], eax
|
||||||
mov [window_data + edi + WDATA.draw_bgr_y], edx
|
mov [edi + WDATA.draw_bgr_y], edx
|
||||||
.common:
|
.common:
|
||||||
mov eax, [window_data + edi + WDATA.thread]
|
mov eax, [edi + WDATA.thread]
|
||||||
test eax, eax
|
test eax, eax
|
||||||
jz @f
|
jz @f
|
||||||
or [eax + APPDATA.occurred_events], EVENT_BACKGROUND
|
or [eax + APPDATA.occurred_events], EVENT_BACKGROUND
|
||||||
@@:
|
@@:
|
||||||
sub ecx, 1
|
loop set_bgr_event
|
||||||
jnz set_bgr_event
|
|
||||||
;loop set_bgr_event
|
|
||||||
pop edi ecx
|
pop edi ecx
|
||||||
;--------- set event 5 stop -----------
|
;--------- set event 5 stop -----------
|
||||||
dec [REDRAW_BACKGROUND] ; got new update request?
|
dec [REDRAW_BACKGROUND] ; got new update request?
|
||||||
@ -2956,7 +2945,7 @@ nobackgr:
|
|||||||
jne noshutdown
|
jne noshutdown
|
||||||
|
|
||||||
lea ecx, [edx-1]
|
lea ecx, [edx-1]
|
||||||
mov edx, SLOT_BASE + sizeof.APPDATA ;OS_BASE+0x3040
|
mov edx, SLOT_BASE + sizeof.APPDATA*2 ;OS_BASE+0x3040
|
||||||
jecxz no_mark_system_shutdown
|
jecxz no_mark_system_shutdown
|
||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
align 4
|
align 4
|
||||||
@ -3003,13 +2992,11 @@ newct:
|
|||||||
jnz .noterminate
|
jnz .noterminate
|
||||||
.terminate:
|
.terminate:
|
||||||
pushad
|
pushad
|
||||||
mov ecx, eax
|
push esi
|
||||||
shl ecx, BSF sizeof.WDATA
|
mov ecx, dword[ebx - APPDATA.state + APPDATA.window]
|
||||||
add ecx, window_data
|
|
||||||
call restore_default_cursor_before_killing
|
call restore_default_cursor_before_killing
|
||||||
popad
|
|
||||||
|
|
||||||
pushad
|
pop esi
|
||||||
call terminate
|
call terminate
|
||||||
popad
|
popad
|
||||||
cmp byte [SYS_SHUTDOWN], 0
|
cmp byte [SYS_SHUTDOWN], 0
|
||||||
@ -3025,6 +3012,7 @@ newct:
|
|||||||
ret
|
ret
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
align 4
|
align 4
|
||||||
|
; eax - ptr to WDATA
|
||||||
redrawscreen:
|
redrawscreen:
|
||||||
; eax , if process window_data base is eax, do not set flag/limits
|
; eax , if process window_data base is eax, do not set flag/limits
|
||||||
|
|
||||||
@ -3065,13 +3053,11 @@ newdw2:
|
|||||||
mov eax, [edi + WDATA.box.left]
|
mov eax, [edi + WDATA.box.left]
|
||||||
mov ebx, [edi + WDATA.box.top]
|
mov ebx, [edi + WDATA.box.top]
|
||||||
|
|
||||||
mov ecx, [draw_limits.bottom] ; ecx = area y end ebx = window y start
|
cmp ebx, [draw_limits.bottom] ; ecx = area y end ebx = window y start
|
||||||
cmp ecx, ebx
|
jae ricino
|
||||||
jb ricino
|
|
||||||
|
|
||||||
mov ecx, [draw_limits.right] ; ecx = area x end eax = window x start
|
cmp eax, [draw_limits.right] ; ecx = area x end eax = window x start
|
||||||
cmp ecx, eax
|
jae ricino
|
||||||
jb ricino
|
|
||||||
|
|
||||||
mov eax, [edi + WDATA.box.left]
|
mov eax, [edi + WDATA.box.left]
|
||||||
mov ebx, [edi + WDATA.box.top]
|
mov ebx, [edi + WDATA.box.top]
|
||||||
@ -3090,7 +3076,7 @@ newdw2:
|
|||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
align 4
|
align 4
|
||||||
bgli:
|
bgli:
|
||||||
cmp dword[esp], 1
|
cmp dword[esp], 1 ; check index in window_data array, 1 - idle
|
||||||
jnz .az
|
jnz .az
|
||||||
|
|
||||||
cmp [REDRAW_BACKGROUND], 0
|
cmp [REDRAW_BACKGROUND], 0
|
||||||
@ -3139,18 +3125,16 @@ align 4
|
|||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
align 4
|
align 4
|
||||||
.az:
|
.az:
|
||||||
mov eax, edi
|
|
||||||
|
|
||||||
mov ebx, [draw_limits.left] ; set limits
|
mov ebx, [draw_limits.left] ; set limits
|
||||||
mov [eax + WDATA.draw_data.left], ebx
|
mov [edi + WDATA.draw_data.left], ebx
|
||||||
mov ebx, [draw_limits.top]
|
mov ebx, [draw_limits.top]
|
||||||
mov [eax + WDATA.draw_data.top], ebx
|
mov [edi + WDATA.draw_data.top], ebx
|
||||||
mov ebx, [draw_limits.right]
|
mov ebx, [draw_limits.right]
|
||||||
mov [eax + WDATA.draw_data.right], ebx
|
mov [edi + WDATA.draw_data.right], ebx
|
||||||
mov ebx, [draw_limits.bottom]
|
mov ebx, [draw_limits.bottom]
|
||||||
mov [eax + WDATA.draw_data.bottom], ebx
|
mov [edi + WDATA.draw_data.bottom], ebx
|
||||||
|
|
||||||
cmp dword [esp], 1
|
cmp dword [esp], 1 ; check idle thread
|
||||||
jne nobgrd
|
jne nobgrd
|
||||||
inc [REDRAW_BACKGROUND]
|
inc [REDRAW_BACKGROUND]
|
||||||
call wakeup_osloop
|
call wakeup_osloop
|
||||||
@ -3159,8 +3143,8 @@ align 4
|
|||||||
newdw8:
|
newdw8:
|
||||||
nobgrd:
|
nobgrd:
|
||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
push eax edi ebp
|
push edi ebp
|
||||||
mov edi, [esp+12]
|
mov edi, [esp+8]
|
||||||
cmp edi, 1
|
cmp edi, 1
|
||||||
je .found
|
je .found
|
||||||
|
|
||||||
@ -3210,14 +3194,14 @@ align 4
|
|||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
align 4
|
align 4
|
||||||
.not_found:
|
.not_found:
|
||||||
pop ebp edi eax
|
pop ebp edi
|
||||||
jmp ricino
|
jmp ricino
|
||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
align 4
|
align 4
|
||||||
.found:
|
.found:
|
||||||
pop ebp edi eax
|
pop ebp edi
|
||||||
|
|
||||||
mov [eax + WDATA.fl_redraw], WSTATE_REDRAW ; mark as redraw
|
mov [edi + WDATA.fl_redraw], WSTATE_REDRAW ; mark as redraw
|
||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
align 4
|
align 4
|
||||||
ricino:
|
ricino:
|
||||||
|
@ -213,10 +213,10 @@ end virtual
|
|||||||
|
|
||||||
mov [esp + .flags], ebx
|
mov [esp + .flags], ebx
|
||||||
|
|
||||||
mov eax, [current_slot_idx]
|
mov eax, [current_slot]
|
||||||
shl eax, BSF sizeof.WDATA
|
mov eax, [eax + APPDATA.window]
|
||||||
mov ebx, [window_data + eax + WDATA.box.width]
|
mov ebx, [eax + WDATA.box.width]
|
||||||
mov edx, [window_data + eax + WDATA.box.height]
|
mov edx, [eax + WDATA.box.height]
|
||||||
inc ebx
|
inc ebx
|
||||||
inc edx
|
inc edx
|
||||||
|
|
||||||
@ -260,19 +260,19 @@ end virtual
|
|||||||
call blit_clip
|
call blit_clip
|
||||||
jc .L57
|
jc .L57
|
||||||
|
|
||||||
mov eax, [current_slot_idx]
|
mov eax, [current_slot]
|
||||||
shl eax, BSF sizeof.WDATA
|
mov eax, [eax + APPDATA.window]
|
||||||
|
|
||||||
mov ebx, [esp + BLITTER.dst_x]
|
mov ebx, [esp + BLITTER.dst_x]
|
||||||
mov ebp, [esp + BLITTER.dst_y]
|
mov ebp, [esp + BLITTER.dst_y]
|
||||||
add ebx, [window_data + eax + WDATA.box.left]
|
add ebx, [eax + WDATA.box.left]
|
||||||
add ebp, [window_data + eax + WDATA.box.top]
|
add ebp, [eax + WDATA.box.top]
|
||||||
|
|
||||||
test [esp + .flags], BLIT_CLIENT_RELATIVE
|
test [esp + .flags], BLIT_CLIENT_RELATIVE
|
||||||
jz .no_client_relative
|
jz .no_client_relative
|
||||||
|
|
||||||
add ebx, [window_data + eax + WDATA.clientbox.left]
|
add ebx, [eax + WDATA.clientbox.left]
|
||||||
add ebp, [window_data + eax + WDATA.clientbox.top]
|
add ebp, [eax + WDATA.clientbox.top]
|
||||||
.no_client_relative:
|
.no_client_relative:
|
||||||
|
|
||||||
mov ecx, ebx
|
mov ecx, ebx
|
||||||
@ -320,8 +320,6 @@ end virtual
|
|||||||
mov ebx, [current_slot_idx]
|
mov ebx, [current_slot_idx]
|
||||||
; check for hardware cursor
|
; check for hardware cursor
|
||||||
cmp [_display.select_cursor], select_cursor
|
cmp [_display.select_cursor], select_cursor
|
||||||
je .core_32.software_cursor
|
|
||||||
cmp [_display.select_cursor], 0
|
|
||||||
jne .core_32.hardware_cursor
|
jne .core_32.hardware_cursor
|
||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
.core_32.software_cursor:
|
.core_32.software_cursor:
|
||||||
@ -430,12 +428,9 @@ align 4
|
|||||||
|
|
||||||
; check for hardware cursor
|
; check for hardware cursor
|
||||||
cmp [_display.select_cursor], select_cursor
|
cmp [_display.select_cursor], select_cursor
|
||||||
je @f
|
|
||||||
cmp [_display.select_cursor], 0
|
|
||||||
jne .no_mouseunder_1
|
jne .no_mouseunder_1
|
||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
align 4
|
align 4
|
||||||
@@:
|
|
||||||
push ecx
|
push ecx
|
||||||
|
|
||||||
mov ecx, [esp+4]
|
mov ecx, [esp+4]
|
||||||
@ -491,11 +486,8 @@ align 4
|
|||||||
|
|
||||||
; check for hardware cursor
|
; check for hardware cursor
|
||||||
cmp [_display.select_cursor], select_cursor
|
cmp [_display.select_cursor], select_cursor
|
||||||
je @f
|
|
||||||
cmp [_display.select_cursor], 0
|
|
||||||
jne .no_mouseunder_2
|
jne .no_mouseunder_2
|
||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
@@:
|
|
||||||
push ecx
|
push ecx
|
||||||
|
|
||||||
mov ecx, [esp+4]
|
mov ecx, [esp+4]
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
;; ;;
|
;; ;;
|
||||||
;; Copyright (C) KolibriOS team 2004-2022. All rights reserved. ;;
|
;; Copyright (C) KolibriOS team 2004-2023. All rights reserved. ;;
|
||||||
;; Distributed under terms of the GNU General Public License ;;
|
;; Distributed under terms of the GNU General Public License ;;
|
||||||
;; ;;
|
;; ;;
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
@ -617,6 +617,74 @@ align 4
|
|||||||
endp
|
endp
|
||||||
;------------------------------------------------------------------------------
|
;------------------------------------------------------------------------------
|
||||||
align 4
|
align 4
|
||||||
|
proc VGA_restore_32 stdcall, x:dword, y:dword
|
||||||
|
|
||||||
|
push ebx
|
||||||
|
|
||||||
|
mov ebx, [cur_saved_base]
|
||||||
|
mov edx, [cur.h]
|
||||||
|
test edx, edx
|
||||||
|
jz .ret
|
||||||
|
|
||||||
|
push esi
|
||||||
|
push edi
|
||||||
|
|
||||||
|
mov esi, cur_saved_data
|
||||||
|
mov edi, ebx
|
||||||
|
push [cur.w]
|
||||||
|
push [cur.top];[y]
|
||||||
|
push [cur.left];[x]
|
||||||
|
;mov eax, [cur.top]
|
||||||
|
;add [esp + 4], eax
|
||||||
|
;mov eax, [cur.left]
|
||||||
|
;add [esp], eax
|
||||||
|
;--------------------------------------
|
||||||
|
align 4
|
||||||
|
@@:
|
||||||
|
mov ecx, [esi]
|
||||||
|
add esi, 4
|
||||||
|
|
||||||
|
;mov eax, [esp]
|
||||||
|
;sub eax, [x]
|
||||||
|
;shl eax, 2 ; *4
|
||||||
|
;mov [edi + eax], ecx
|
||||||
|
|
||||||
|
mov eax, [esp]
|
||||||
|
mov ebx, [esp + 4]
|
||||||
|
|
||||||
|
push edx edi
|
||||||
|
mov edi, 1
|
||||||
|
or ecx, 0x04000000
|
||||||
|
call __sys_putpixel
|
||||||
|
pop edi edx
|
||||||
|
add dword[esp], 1
|
||||||
|
dec dword[esp + 8]
|
||||||
|
jnz @b
|
||||||
|
|
||||||
|
mov eax, [cur.w]
|
||||||
|
mov ecx, [cur.left];[x]
|
||||||
|
;add ecx, [cur.left]
|
||||||
|
mov [esp + 8], eax
|
||||||
|
|
||||||
|
mov dword[esp], ecx
|
||||||
|
|
||||||
|
inc dword[esp + 4]
|
||||||
|
;add edi, [_display.lfb_pitch]
|
||||||
|
dec edx
|
||||||
|
jnz @b
|
||||||
|
|
||||||
|
add esp, 4*3
|
||||||
|
|
||||||
|
pop edi
|
||||||
|
pop esi
|
||||||
|
;--------------------------------------
|
||||||
|
align 4
|
||||||
|
.ret:
|
||||||
|
pop ebx
|
||||||
|
ret
|
||||||
|
endp
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
align 4
|
||||||
proc move_cursor_24 stdcall, hcursor:dword, x:dword, y:dword
|
proc move_cursor_24 stdcall, hcursor:dword, x:dword, y:dword
|
||||||
locals
|
locals
|
||||||
h dd ?
|
h dd ?
|
||||||
@ -959,6 +1027,161 @@ align 4
|
|||||||
jnz .row
|
jnz .row
|
||||||
ret
|
ret
|
||||||
endp
|
endp
|
||||||
|
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
align 4
|
||||||
|
proc VGA_move_cursor_32 stdcall, hcursor:dword, x:dword, y:dword
|
||||||
|
locals
|
||||||
|
h dd ?
|
||||||
|
_dx dd ?
|
||||||
|
_dy dd ?
|
||||||
|
bg_ptr dd ?
|
||||||
|
tmp_x dd ?
|
||||||
|
tmp_y dd ?
|
||||||
|
endl
|
||||||
|
|
||||||
|
mov esi, [hcursor]
|
||||||
|
mov ecx, [x]
|
||||||
|
mov eax, [y]
|
||||||
|
|
||||||
|
xor edx, edx
|
||||||
|
sub ecx, [esi + CURSOR.hot_x]
|
||||||
|
lea ebx, [ecx+32-1]
|
||||||
|
mov [x], ecx
|
||||||
|
sets dl
|
||||||
|
dec edx
|
||||||
|
and ecx, edx ;clip x to 0<=x
|
||||||
|
mov [cur.left], ecx
|
||||||
|
mov edi, ecx
|
||||||
|
sub edi, [x]
|
||||||
|
mov [_dx], edi
|
||||||
|
|
||||||
|
xor edx, edx
|
||||||
|
sub eax, [esi + CURSOR.hot_y]
|
||||||
|
lea edi, [eax+32-1]
|
||||||
|
mov [y], eax
|
||||||
|
sets dl
|
||||||
|
dec edx
|
||||||
|
and eax, edx ;clip y to 0<=y
|
||||||
|
mov [cur.top], eax
|
||||||
|
mov edx, eax
|
||||||
|
sub edx, [y]
|
||||||
|
mov [_dy], edx
|
||||||
|
|
||||||
|
mov [tmp_x], ecx
|
||||||
|
mov [tmp_y], eax
|
||||||
|
mov eax, [BPSLine_calc_area+eax*4]
|
||||||
|
lea edx, [LFB_BASE + eax + ecx*4]
|
||||||
|
mov [cur_saved_base], edx
|
||||||
|
|
||||||
|
cmp ebx, [_display.width]
|
||||||
|
jb @F
|
||||||
|
mov ebx, [_display.width]
|
||||||
|
;--------------------------------------
|
||||||
|
align 4
|
||||||
|
@@:
|
||||||
|
cmp edi, [_display.height]
|
||||||
|
jb @F
|
||||||
|
mov edi, [_display.height]
|
||||||
|
;--------------------------------------
|
||||||
|
align 4
|
||||||
|
@@:
|
||||||
|
sub ebx, [x]
|
||||||
|
sub edi, [y]
|
||||||
|
sub ebx, [_dx]
|
||||||
|
sub edi, [_dy]
|
||||||
|
|
||||||
|
mov [cur.w], ebx
|
||||||
|
mov [cur.h], edi
|
||||||
|
mov [h], edi
|
||||||
|
|
||||||
|
mov eax, edi
|
||||||
|
mov edi, cur_saved_data
|
||||||
|
|
||||||
|
xor ecx, ecx
|
||||||
|
mov eax, ecx
|
||||||
|
;--------------------------------------
|
||||||
|
align 4
|
||||||
|
@@:
|
||||||
|
; get and save pixel background
|
||||||
|
push eax ecx ebx edx
|
||||||
|
add eax, [tmp_x]
|
||||||
|
mov ebx, ecx
|
||||||
|
add ebx, [tmp_y]
|
||||||
|
push edi
|
||||||
|
|
||||||
|
or ecx, 0x04000000
|
||||||
|
call [GETPIXEL]
|
||||||
|
|
||||||
|
pop edi
|
||||||
|
;and ecx, 0x00ffffff
|
||||||
|
mov [edi], ecx
|
||||||
|
add edi, 4
|
||||||
|
|
||||||
|
pop edx ebx ecx eax
|
||||||
|
inc eax
|
||||||
|
cmp eax, [cur.w]
|
||||||
|
jb @b
|
||||||
|
xor eax, eax
|
||||||
|
inc ecx
|
||||||
|
cmp ecx, [h]
|
||||||
|
jb @B
|
||||||
|
|
||||||
|
;draw cursor
|
||||||
|
mov ebx, [cur_saved_base]
|
||||||
|
mov eax, [_dy]
|
||||||
|
shl eax, 5
|
||||||
|
add eax, [_dx]
|
||||||
|
|
||||||
|
mov esi, [hcursor]
|
||||||
|
mov esi, [esi + CURSOR.base]
|
||||||
|
lea edx, [esi+eax*4]
|
||||||
|
mov [bg_ptr], cur_saved_data
|
||||||
|
|
||||||
|
mov [_dy], 0
|
||||||
|
;--------------------------------------
|
||||||
|
align 4
|
||||||
|
.row:
|
||||||
|
mov [_dx], 0
|
||||||
|
mov ecx, [cur.w]
|
||||||
|
mov esi, edx ; cursor image base
|
||||||
|
mov edi, ebx
|
||||||
|
add edx, 32*4
|
||||||
|
add ebx, [_display.lfb_pitch]
|
||||||
|
;--------------------------------------
|
||||||
|
align 4
|
||||||
|
.pix:
|
||||||
|
; get pixel cursor
|
||||||
|
lodsd
|
||||||
|
test eax, 0xFF000000
|
||||||
|
jz @F
|
||||||
|
mov [edi], eax
|
||||||
|
|
||||||
|
pusha
|
||||||
|
mov edi, 1 ; force
|
||||||
|
mov ecx, eax ; color
|
||||||
|
and ecx, 0x00ffffff
|
||||||
|
or ecx, 0x04000000
|
||||||
|
mov eax, [x]
|
||||||
|
mov ebx, [y]
|
||||||
|
add eax, [_dx]
|
||||||
|
add ebx, [_dy]
|
||||||
|
call __sys_putpixel
|
||||||
|
popa
|
||||||
|
;--------------------------------------
|
||||||
|
align 4
|
||||||
|
@@:
|
||||||
|
inc [_dx]
|
||||||
|
add edi, 4
|
||||||
|
dec ecx
|
||||||
|
jnz .pix
|
||||||
|
|
||||||
|
inc [_dy]
|
||||||
|
dec [h]
|
||||||
|
jnz .row
|
||||||
|
ret
|
||||||
|
endp
|
||||||
|
|
||||||
;------------------------------------------------------------------------------
|
;------------------------------------------------------------------------------
|
||||||
align 4
|
align 4
|
||||||
check_mouse_area_for_getpixel_new:
|
check_mouse_area_for_getpixel_new:
|
||||||
@ -1167,16 +1390,31 @@ init_display:
|
|||||||
mov [edi + display_t.cr_list.prev], ecx
|
mov [edi + display_t.cr_list.prev], ecx
|
||||||
|
|
||||||
if ~defined UEFI
|
if ~defined UEFI
|
||||||
cmp [SCR_MODE], word 0x13
|
cmp [SCR_MODE], word 0x12
|
||||||
jbe .fail
|
jne .not_vga
|
||||||
|
; TODO
|
||||||
|
mov ebx, VGA_restore_32
|
||||||
|
mov ecx, VGA_move_cursor_32
|
||||||
|
mov edx, VGA_putpixel
|
||||||
|
jmp .set
|
||||||
|
|
||||||
|
.not_vga:
|
||||||
test word [SCR_MODE], 0x4000
|
test word [SCR_MODE], 0x4000
|
||||||
jz .fail
|
jnz .not_ega
|
||||||
|
|
||||||
|
mov ebx, restore_32
|
||||||
|
mov ecx, move_cursor_32
|
||||||
|
mov edx, Vesa20_putpixel32_new
|
||||||
|
mov eax, [_display.bits_per_pixel]
|
||||||
|
jmp .set
|
||||||
|
|
||||||
|
.not_ega:
|
||||||
end if
|
end if
|
||||||
mov ebx, restore_32
|
mov ebx, restore_32
|
||||||
mov ecx, move_cursor_32
|
mov ecx, move_cursor_32
|
||||||
mov edx, Vesa20_putpixel32_new
|
mov edx, Vesa20_putpixel32_new
|
||||||
mov eax, [_display.bits_per_pixel]
|
mov eax, [_display.bits_per_pixel]
|
||||||
|
|
||||||
cmp al, 32
|
cmp al, 32
|
||||||
jne .not_32bpp
|
jne .not_32bpp
|
||||||
|
|
||||||
@ -1184,13 +1422,11 @@ end if
|
|||||||
mov [_display.select_cursor], select_cursor
|
mov [_display.select_cursor], select_cursor
|
||||||
mov [_display.move_cursor], ecx
|
mov [_display.move_cursor], ecx
|
||||||
mov [_display.restore_cursor], ebx
|
mov [_display.restore_cursor], ebx
|
||||||
mov [_display.check_mouse], check_mouse_area_for_putpixel_new
|
;mov [_display.check_mouse], check_mouse_area_for_putpixel_new
|
||||||
mov [_display.check_m_pixel], check_mouse_area_for_getpixel_new
|
;mov [_display.check_m_pixel], check_mouse_area_for_getpixel_new
|
||||||
|
|
||||||
cmp [PUTPIXEL], dword VGA_putpixel
|
|
||||||
je @f
|
|
||||||
mov [PUTPIXEL], edx
|
mov [PUTPIXEL], edx
|
||||||
@@:
|
|
||||||
stdcall load_cursor, def_hresize, dword LOAD_FROM_MEM
|
stdcall load_cursor, def_hresize, dword LOAD_FROM_MEM
|
||||||
mov [def_cursor_hresize], eax
|
mov [def_cursor_hresize], eax
|
||||||
stdcall load_cursor, def_vresize, dword LOAD_FROM_MEM
|
stdcall load_cursor, def_vresize, dword LOAD_FROM_MEM
|
||||||
@ -1230,11 +1466,10 @@ end if
|
|||||||
; mov ecx, move_cursor_15
|
; mov ecx, move_cursor_15
|
||||||
; mov edx, Vesa20_putpixel15_new
|
; mov edx, Vesa20_putpixel15_new
|
||||||
; jmp .set
|
; jmp .set
|
||||||
|
|
||||||
.fail:
|
.fail:
|
||||||
xor eax, eax
|
;xor eax, eax
|
||||||
mov [_display.select_cursor], eax
|
;mov [_display.select_cursor], eax
|
||||||
mov [_display.move_cursor], eax
|
;mov [_display.move_cursor], eax
|
||||||
ret
|
ret
|
||||||
;------------------------------------------------------------------------------
|
;------------------------------------------------------------------------------
|
||||||
align 4
|
align 4
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
;; ;;
|
;; ;;
|
||||||
;; Copyright (C) KolibriOS team 2004-2022. All rights reserved. ;;
|
;; Copyright (C) KolibriOS team 2004-2023. All rights reserved. ;;
|
||||||
;; Distributed under terms of the GNU General Public License ;;
|
;; Distributed under terms of the GNU General Public License ;;
|
||||||
;; ;;
|
;; ;;
|
||||||
;; Synhronization for MenuetOS. ;;
|
;; Synhronization for MenuetOS. ;;
|
||||||
@ -99,26 +99,25 @@ init_video:
|
|||||||
jmp .finish
|
jmp .finish
|
||||||
|
|
||||||
.16bpp:
|
.16bpp:
|
||||||
mov [PUTPIXEL], Vesa20_putpixel16
|
mov [PUTPIXEL], Vesa20_putpixel16_new
|
||||||
mov [GETPIXEL], Vesa20_getpixel16
|
mov [GETPIXEL], Vesa20_getpixel16
|
||||||
mov [_display.bytes_per_pixel], 2
|
mov [_display.bytes_per_pixel], 2
|
||||||
jmp .finish
|
jmp .finish
|
||||||
|
|
||||||
.24bpp:
|
.24bpp:
|
||||||
mov [PUTPIXEL], Vesa20_putpixel24
|
mov [PUTPIXEL], Vesa20_putpixel24_new
|
||||||
mov [GETPIXEL], Vesa20_getpixel24
|
mov [GETPIXEL], Vesa20_getpixel24
|
||||||
mov [_display.bytes_per_pixel], 3
|
mov [_display.bytes_per_pixel], 3
|
||||||
jmp .finish
|
jmp .finish
|
||||||
|
|
||||||
.32bpp:
|
.32bpp:
|
||||||
mov [PUTPIXEL], Vesa20_putpixel32
|
mov [PUTPIXEL], Vesa20_putpixel32_new
|
||||||
mov [GETPIXEL], Vesa20_getpixel32
|
mov [GETPIXEL], Vesa20_getpixel32
|
||||||
mov [_display.bytes_per_pixel], 4
|
mov [_display.bytes_per_pixel], 4
|
||||||
|
|
||||||
.finish:
|
.finish:
|
||||||
mov [MOUSE_PICTURE], mousepointer
|
mov [_display.check_mouse], check_mouse_area_for_putpixel_new
|
||||||
mov [_display.check_mouse], check_mouse_area_for_putpixel
|
mov [_display.check_m_pixel], check_mouse_area_for_getpixel_new
|
||||||
mov [_display.check_m_pixel], check_mouse_area_for_getpixel
|
|
||||||
|
|
||||||
mov ax, word [SCR_MODE]
|
mov ax, word [SCR_MODE]
|
||||||
cmp ax, 0x0012
|
cmp ax, 0x0012
|
||||||
|
@ -40,10 +40,7 @@ Vesa20_getpixel16:
|
|||||||
|
|
||||||
; check for hardware cursor
|
; check for hardware cursor
|
||||||
cmp [_display.select_cursor], select_cursor
|
cmp [_display.select_cursor], select_cursor
|
||||||
je @f
|
|
||||||
cmp [_display.select_cursor], 0
|
|
||||||
jne .no_mouseunder
|
jne .no_mouseunder
|
||||||
@@:
|
|
||||||
|
|
||||||
; check mouse area for putpixel
|
; check mouse area for putpixel
|
||||||
test ecx, 0x04000000 ; don't load to mouseunder area
|
test ecx, 0x04000000 ; don't load to mouseunder area
|
||||||
@ -78,10 +75,7 @@ Vesa20_getpixel24:
|
|||||||
|
|
||||||
; check for hardware cursor
|
; check for hardware cursor
|
||||||
cmp [_display.select_cursor], select_cursor
|
cmp [_display.select_cursor], select_cursor
|
||||||
je @f
|
|
||||||
cmp [_display.select_cursor], 0
|
|
||||||
jne .no_mouseunder
|
jne .no_mouseunder
|
||||||
@@:
|
|
||||||
|
|
||||||
; check mouse area for putpixel
|
; check mouse area for putpixel
|
||||||
test ecx, 0x04000000 ; don't load to mouseunder area
|
test ecx, 0x04000000 ; don't load to mouseunder area
|
||||||
@ -110,10 +104,7 @@ Vesa20_getpixel32:
|
|||||||
|
|
||||||
; check for hardware cursor
|
; check for hardware cursor
|
||||||
cmp [_display.select_cursor], select_cursor
|
cmp [_display.select_cursor], select_cursor
|
||||||
je @f
|
|
||||||
cmp [_display.select_cursor], 0
|
|
||||||
jne .no_mouseunder
|
jne .no_mouseunder
|
||||||
@@:
|
|
||||||
|
|
||||||
; check mouse area for putpixel
|
; check mouse area for putpixel
|
||||||
test ecx, 0x04000000 ; don't load to mouseunder area
|
test ecx, 0x04000000 ; don't load to mouseunder area
|
||||||
@ -189,16 +180,16 @@ end virtual
|
|||||||
mov [putimg.image_cx], eax
|
mov [putimg.image_cx], eax
|
||||||
mov [putimg.image_cy], edx
|
mov [putimg.image_cy], edx
|
||||||
; calculate absolute (i.e. screen) coordinates
|
; calculate absolute (i.e. screen) coordinates
|
||||||
mov eax, [current_slot_idx]
|
mov eax, [current_slot]
|
||||||
shl eax, BSF sizeof.WDATA
|
mov eax, [eax + APPDATA.window]
|
||||||
mov ebx, [eax + window_data + WDATA.box.left]
|
mov ebx, [eax + WDATA.box.left]
|
||||||
add ebx, [putimg.image_cx]
|
add ebx, [putimg.image_cx]
|
||||||
mov [putimg.abs_cx], ebx
|
mov [putimg.abs_cx], ebx
|
||||||
mov ebx, [eax +window_data + WDATA.box.top]
|
mov ebx, [eax + WDATA.box.top]
|
||||||
add ebx, [putimg.image_cy]
|
add ebx, [putimg.image_cy]
|
||||||
mov [putimg.abs_cy], ebx
|
mov [putimg.abs_cy], ebx
|
||||||
; real_sx = MIN(wnd_sx-image_cx, image_sx);
|
; real_sx = MIN(wnd_sx-image_cx, image_sx);
|
||||||
mov ebx, [eax + window_data + WDATA.box.width] ; ebx = wnd_sx
|
mov ebx, [eax + WDATA.box.width] ; ebx = wnd_sx
|
||||||
inc ebx ; WDATA.box.width is one pixel less than real window x-size
|
inc ebx ; WDATA.box.width is one pixel less than real window x-size
|
||||||
sub ebx, [putimg.image_cx]
|
sub ebx, [putimg.image_cx]
|
||||||
ja @f
|
ja @f
|
||||||
@ -213,7 +204,7 @@ end virtual
|
|||||||
.end_x:
|
.end_x:
|
||||||
mov [putimg.real_sx], ebx
|
mov [putimg.real_sx], ebx
|
||||||
; init real_sy
|
; init real_sy
|
||||||
mov ebx, [eax + window_data + WDATA.box.height] ; ebx = wnd_sy
|
mov ebx, [eax + WDATA.box.height] ; ebx = wnd_sy
|
||||||
inc ebx
|
inc ebx
|
||||||
sub ebx, [putimg.image_cy]
|
sub ebx, [putimg.image_cy]
|
||||||
ja @f
|
ja @f
|
||||||
@ -292,8 +283,7 @@ put_image_end_16:
|
|||||||
mov ecx, [_display.select_cursor]
|
mov ecx, [_display.select_cursor]
|
||||||
cmp ecx, select_cursor
|
cmp ecx, select_cursor
|
||||||
je put_image_end_16_new
|
je put_image_end_16_new
|
||||||
cmp ecx, 0
|
|
||||||
je put_image_end_16_old
|
|
||||||
.new_line:
|
.new_line:
|
||||||
mov ecx, [putimg.real_sx]
|
mov ecx, [putimg.real_sx]
|
||||||
.new_x:
|
.new_x:
|
||||||
@ -339,64 +329,6 @@ put_image_end_16:
|
|||||||
|
|
||||||
;------------------------------------------------------------------------------
|
;------------------------------------------------------------------------------
|
||||||
|
|
||||||
align 4
|
|
||||||
put_image_end_16_old:
|
|
||||||
|
|
||||||
.new_line:
|
|
||||||
mov ecx, [putimg.real_sx]
|
|
||||||
.new_x:
|
|
||||||
push [putimg.edi]
|
|
||||||
mov eax, [putimg.ebp + 4]
|
|
||||||
call eax
|
|
||||||
cmp [ebp], bl
|
|
||||||
jne .skip
|
|
||||||
|
|
||||||
push ecx
|
|
||||||
neg ecx
|
|
||||||
add ecx, [putimg.real_sx_and_abs_cx + 4]
|
|
||||||
shl ecx, 16
|
|
||||||
add ecx, [putimg.real_sy_and_abs_cy + 4]
|
|
||||||
sub ecx, edi
|
|
||||||
|
|
||||||
; check mouse area for putpixel
|
|
||||||
call check_mouse_area_for_putpixel
|
|
||||||
pop ecx
|
|
||||||
|
|
||||||
; convert to 16 bpp and store to LFB
|
|
||||||
;; and eax, 00000000111110001111110011111000b
|
|
||||||
;; shr ah, 2
|
|
||||||
;; shr ax, 3
|
|
||||||
;; ror eax, 8
|
|
||||||
;; add al, ah
|
|
||||||
;; rol eax, 8
|
|
||||||
mov [LFB_BASE + edx], ax
|
|
||||||
.skip:
|
|
||||||
inc edx
|
|
||||||
inc edx
|
|
||||||
inc ebp
|
|
||||||
dec ecx
|
|
||||||
jnz .new_x
|
|
||||||
|
|
||||||
add esi, [putimg.line_increment]
|
|
||||||
add edx, [putimg.screen_newline]
|
|
||||||
add ebp, [putimg.winmap_newline]
|
|
||||||
|
|
||||||
cmp [putimg.ebp], putimage_get1bpp
|
|
||||||
jz .correct
|
|
||||||
cmp [putimg.ebp], putimage_get2bpp
|
|
||||||
jz .correct
|
|
||||||
cmp [putimg.ebp], putimage_get4bpp
|
|
||||||
jnz @f
|
|
||||||
.correct:
|
|
||||||
mov eax, [putimg.edi]
|
|
||||||
mov byte [eax], 80h
|
|
||||||
@@:
|
|
||||||
dec edi
|
|
||||||
jnz .new_line
|
|
||||||
jmp put_image_end_16.finish
|
|
||||||
|
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
align 4
|
align 4
|
||||||
put_image_end_16_new:
|
put_image_end_16_new:
|
||||||
|
|
||||||
@ -490,8 +422,7 @@ put_image_end_24:
|
|||||||
mov ecx, [_display.select_cursor]
|
mov ecx, [_display.select_cursor]
|
||||||
cmp ecx, select_cursor
|
cmp ecx, select_cursor
|
||||||
je put_image_end_24_new
|
je put_image_end_24_new
|
||||||
cmp ecx, 0
|
|
||||||
je put_image_end_24_old
|
|
||||||
.new_line:
|
.new_line:
|
||||||
mov ecx, [putimg.real_sx]
|
mov ecx, [putimg.real_sx]
|
||||||
.new_x:
|
.new_x:
|
||||||
@ -535,63 +466,6 @@ put_image_end_24:
|
|||||||
|
|
||||||
;------------------------------------------------------------------------------
|
;------------------------------------------------------------------------------
|
||||||
|
|
||||||
align 4
|
|
||||||
put_image_end_24_old:
|
|
||||||
|
|
||||||
.new_line:
|
|
||||||
mov ecx, [putimg.real_sx]
|
|
||||||
;--------------------------------------
|
|
||||||
align 4
|
|
||||||
.new_x:
|
|
||||||
push [putimg.edi]
|
|
||||||
mov eax, [putimg.ebp + 4]
|
|
||||||
call eax
|
|
||||||
cmp [ebp], bl
|
|
||||||
jne .skip
|
|
||||||
|
|
||||||
push ecx
|
|
||||||
neg ecx
|
|
||||||
add ecx, [putimg.real_sx_and_abs_cx + 4]
|
|
||||||
shl ecx, 16
|
|
||||||
add ecx, [putimg.real_sy_and_abs_cy + 4]
|
|
||||||
sub ecx, edi
|
|
||||||
|
|
||||||
; check mouse area for putpixel
|
|
||||||
call check_mouse_area_for_putpixel
|
|
||||||
pop ecx
|
|
||||||
; store to LFB
|
|
||||||
mov [LFB_BASE + edx], ax
|
|
||||||
shr eax, 16
|
|
||||||
mov [LFB_BASE + edx + 2], al
|
|
||||||
|
|
||||||
.skip:
|
|
||||||
add edx, 3
|
|
||||||
inc ebp
|
|
||||||
dec ecx
|
|
||||||
jnz .new_x
|
|
||||||
|
|
||||||
add esi, [putimg.line_increment]
|
|
||||||
add edx, [putimg.screen_newline]
|
|
||||||
add ebp, [putimg.winmap_newline]
|
|
||||||
|
|
||||||
cmp [putimg.ebp], putimage_get1bpp
|
|
||||||
jz .correct
|
|
||||||
cmp [putimg.ebp], putimage_get2bpp
|
|
||||||
jz .correct
|
|
||||||
cmp [putimg.ebp], putimage_get4bpp
|
|
||||||
jnz @f
|
|
||||||
|
|
||||||
.correct:
|
|
||||||
mov eax, [putimg.edi]
|
|
||||||
mov byte [eax], 80h
|
|
||||||
|
|
||||||
@@:
|
|
||||||
dec edi
|
|
||||||
jnz .new_line
|
|
||||||
jmp put_image_end_24.finish
|
|
||||||
|
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
align 4
|
align 4
|
||||||
put_image_end_24_new:
|
put_image_end_24_new:
|
||||||
|
|
||||||
@ -682,8 +556,6 @@ put_image_end_32:
|
|||||||
mov ecx, [_display.select_cursor]
|
mov ecx, [_display.select_cursor]
|
||||||
cmp ecx, select_cursor
|
cmp ecx, select_cursor
|
||||||
je put_image_end_32_new
|
je put_image_end_32_new
|
||||||
cmp ecx, 0
|
|
||||||
je put_image_end_32_old
|
|
||||||
|
|
||||||
.new_line:
|
.new_line:
|
||||||
mov ecx, [putimg.real_sx]
|
mov ecx, [putimg.real_sx]
|
||||||
@ -735,59 +607,6 @@ put_image_end_32:
|
|||||||
|
|
||||||
;------------------------------------------------------------------------------
|
;------------------------------------------------------------------------------
|
||||||
|
|
||||||
align 4
|
|
||||||
put_image_end_32_old:
|
|
||||||
|
|
||||||
.new_line:
|
|
||||||
mov ecx, [putimg.real_sx]
|
|
||||||
.new_x:
|
|
||||||
push [putimg.edi]
|
|
||||||
mov eax, [putimg.ebp + 4]
|
|
||||||
call eax
|
|
||||||
cmp [ebp], bl
|
|
||||||
jne .skip
|
|
||||||
|
|
||||||
push ecx
|
|
||||||
neg ecx
|
|
||||||
add ecx, [putimg.real_sx_and_abs_cx + 4]
|
|
||||||
shl ecx, 16
|
|
||||||
add ecx, [putimg.real_sy_and_abs_cy + 4]
|
|
||||||
sub ecx, edi
|
|
||||||
|
|
||||||
; check mouse area for putpixel
|
|
||||||
call check_mouse_area_for_putpixel
|
|
||||||
pop ecx
|
|
||||||
; store to LFB
|
|
||||||
mov [LFB_BASE+edx], eax
|
|
||||||
|
|
||||||
.skip:
|
|
||||||
add edx, 4
|
|
||||||
inc ebp
|
|
||||||
dec ecx
|
|
||||||
jnz .new_x
|
|
||||||
|
|
||||||
add esi, [putimg.line_increment]
|
|
||||||
add edx, [putimg.screen_newline]
|
|
||||||
add ebp, [putimg.winmap_newline]
|
|
||||||
|
|
||||||
cmp [putimg.ebp], putimage_get1bpp
|
|
||||||
jz .correct
|
|
||||||
cmp [putimg.ebp], putimage_get2bpp
|
|
||||||
jz .correct
|
|
||||||
cmp [putimg.ebp], putimage_get4bpp
|
|
||||||
jnz @f
|
|
||||||
|
|
||||||
.correct:
|
|
||||||
mov eax, [putimg.edi]
|
|
||||||
mov byte [eax], 80h
|
|
||||||
|
|
||||||
@@:
|
|
||||||
dec edi
|
|
||||||
jnz .new_line
|
|
||||||
jmp put_image_end_32.finish
|
|
||||||
|
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
align 4
|
align 4
|
||||||
put_image_end_32_new:
|
put_image_end_32_new:
|
||||||
|
|
||||||
@ -877,9 +696,9 @@ __sys_putpixel:
|
|||||||
|
|
||||||
pushad
|
pushad
|
||||||
cmp eax, [_display.width]
|
cmp eax, [_display.width]
|
||||||
jge .exit
|
jae .exit
|
||||||
cmp ebx, [_display.height]
|
cmp ebx, [_display.height]
|
||||||
jge .exit
|
jae .exit
|
||||||
test edi, 1 ; force ?
|
test edi, 1 ; force ?
|
||||||
jnz .forced
|
jnz .forced
|
||||||
|
|
||||||
@ -914,41 +733,6 @@ __sys_putpixel:
|
|||||||
; eax = x
|
; eax = x
|
||||||
; ebx = y
|
; ebx = y
|
||||||
|
|
||||||
align 4
|
|
||||||
Vesa20_putpixel16:
|
|
||||||
|
|
||||||
mov ecx, eax
|
|
||||||
shl ecx, 16
|
|
||||||
mov cx, bx
|
|
||||||
|
|
||||||
; imul ebx, [BytesPerScanLine] ; ebx = y * y multiplier
|
|
||||||
mov ebx, [BPSLine_calc_area + ebx*4]
|
|
||||||
lea edi, [eax*2]; edi = x*2
|
|
||||||
mov eax, [esp + 32-8+4]
|
|
||||||
|
|
||||||
; check for hardware cursor
|
|
||||||
cmp [_display.select_cursor], 0
|
|
||||||
jne @f
|
|
||||||
; check mouse area for putpixel
|
|
||||||
test eax, 0x04000000
|
|
||||||
jnz @f
|
|
||||||
call check_mouse_area_for_putpixel
|
|
||||||
@@:
|
|
||||||
; store to LFB
|
|
||||||
and eax, 00000000111110001111110011111000b
|
|
||||||
shr ah, 2
|
|
||||||
shr ax, 3
|
|
||||||
ror eax, 8
|
|
||||||
add al, ah
|
|
||||||
rol eax, 8
|
|
||||||
|
|
||||||
mov [LFB_BASE + ebx + edi], ax
|
|
||||||
ret
|
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
|
||||||
; eax = x
|
|
||||||
; ebx = y
|
|
||||||
|
|
||||||
align 4
|
align 4
|
||||||
Vesa20_putpixel16_new:
|
Vesa20_putpixel16_new:
|
||||||
|
|
||||||
@ -999,37 +783,6 @@ Vesa20_putpixel16_new:
|
|||||||
; eax = x
|
; eax = x
|
||||||
; ebx = y
|
; ebx = y
|
||||||
|
|
||||||
align 4
|
|
||||||
Vesa20_putpixel24:
|
|
||||||
|
|
||||||
mov ecx, eax
|
|
||||||
shl ecx, 16
|
|
||||||
mov cx, bx
|
|
||||||
|
|
||||||
; imul ebx, [BytesPerScanLine] ; ebx = y * y multiplier
|
|
||||||
mov ebx, [BPSLine_calc_area + ebx*4]
|
|
||||||
lea edi, [eax + eax*2]; edi = x*3
|
|
||||||
mov eax, [esp + 32-8+4]
|
|
||||||
|
|
||||||
; check for hardware cursor
|
|
||||||
cmp [_display.select_cursor], 0
|
|
||||||
jne @f
|
|
||||||
; check mouse area for putpixel
|
|
||||||
test eax, 0x04000000
|
|
||||||
jnz @f
|
|
||||||
call check_mouse_area_for_putpixel
|
|
||||||
@@:
|
|
||||||
|
|
||||||
; store to LFB
|
|
||||||
mov [LFB_BASE + ebx + edi], ax
|
|
||||||
shr eax, 16
|
|
||||||
mov [LFB_BASE + ebx + edi + 2], al
|
|
||||||
ret
|
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
|
||||||
; eax = x
|
|
||||||
; ebx = y
|
|
||||||
|
|
||||||
align 4
|
align 4
|
||||||
Vesa20_putpixel24_new:
|
Vesa20_putpixel24_new:
|
||||||
|
|
||||||
@ -1075,35 +828,6 @@ Vesa20_putpixel24_new:
|
|||||||
; eax = x
|
; eax = x
|
||||||
; ebx = y
|
; ebx = y
|
||||||
|
|
||||||
align 4
|
|
||||||
Vesa20_putpixel32:
|
|
||||||
|
|
||||||
mov ecx, eax
|
|
||||||
shl ecx, 16
|
|
||||||
mov cx, bx
|
|
||||||
|
|
||||||
; imul ebx, [BytesPerScanLine] ; ebx = y * y multiplier
|
|
||||||
mov ebx, [BPSLine_calc_area+ebx*4]
|
|
||||||
lea edi, [ebx + eax*4] ; edi = x*4+(y*y multiplier)
|
|
||||||
mov eax, [esp + 32-8+4] ; eax = color
|
|
||||||
|
|
||||||
; check for hardware cursor
|
|
||||||
cmp [_display.select_cursor], 0
|
|
||||||
jne @f
|
|
||||||
; check mouse area for putpixel
|
|
||||||
test eax, 0x04000000
|
|
||||||
jnz @f
|
|
||||||
call check_mouse_area_for_putpixel
|
|
||||||
@@:
|
|
||||||
and eax, 0xffffff
|
|
||||||
; store to LFB
|
|
||||||
mov [LFB_BASE + edi], eax
|
|
||||||
ret
|
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
|
||||||
; eax = x
|
|
||||||
; ebx = y
|
|
||||||
|
|
||||||
align 4
|
align 4
|
||||||
Vesa20_putpixel32_new:
|
Vesa20_putpixel32_new:
|
||||||
|
|
||||||
@ -1402,14 +1126,14 @@ end virtual
|
|||||||
mov [drbar.bar_sx], ecx
|
mov [drbar.bar_sx], ecx
|
||||||
mov [drbar.bar_cx], eax
|
mov [drbar.bar_cx], eax
|
||||||
mov [drbar.bar_cy], ebx
|
mov [drbar.bar_cy], ebx
|
||||||
mov edi, [current_slot_idx]
|
mov edi, [current_slot]
|
||||||
shl edi, BSF sizeof.WDATA
|
mov edi, [edi + APPDATA.window]
|
||||||
add eax, [edi + window_data + WDATA.box.left] ; win_cx
|
add eax, [edi + WDATA.box.left] ; win_cx
|
||||||
add ebx, [edi + window_data + WDATA.box.top] ; win_cy
|
add ebx, [edi + WDATA.box.top] ; win_cy
|
||||||
mov [drbar.abs_cx], eax
|
mov [drbar.abs_cx], eax
|
||||||
mov [drbar.abs_cy], ebx
|
mov [drbar.abs_cy], ebx
|
||||||
; real_sx = MIN(wnd_sx-bar_cx, bar_sx);
|
; real_sx = MIN(wnd_sx-bar_cx, bar_sx);
|
||||||
mov ebx, [edi + window_data + WDATA.box.width] ; ebx = wnd_sx
|
mov ebx, [edi + WDATA.box.width] ; ebx = wnd_sx
|
||||||
inc ebx ; WDATA.box.width is one pixel less than real window x-size
|
inc ebx ; WDATA.box.width is one pixel less than real window x-size
|
||||||
sub ebx, [drbar.bar_cx]
|
sub ebx, [drbar.bar_cx]
|
||||||
ja @f
|
ja @f
|
||||||
@ -1426,7 +1150,7 @@ end virtual
|
|||||||
.end_x:
|
.end_x:
|
||||||
mov [drbar.real_sx], ebx
|
mov [drbar.real_sx], ebx
|
||||||
; real_sy = MIN(wnd_sy-bar_cy, bar_sy);
|
; real_sy = MIN(wnd_sy-bar_cy, bar_sy);
|
||||||
mov ebx, [edi + window_data + WDATA.box.height] ; ebx = wnd_sy
|
mov ebx, [edi + WDATA.box.height] ; ebx = wnd_sy
|
||||||
inc ebx
|
inc ebx
|
||||||
sub ebx, [drbar.bar_cy]
|
sub ebx, [drbar.bar_cy]
|
||||||
ja @f
|
ja @f
|
||||||
@ -1508,8 +1232,7 @@ draw_bar_end_24:
|
|||||||
mov ecx, [_display.select_cursor]
|
mov ecx, [_display.select_cursor]
|
||||||
cmp ecx, select_cursor
|
cmp ecx, select_cursor
|
||||||
je draw_bar_end_24_new
|
je draw_bar_end_24_new
|
||||||
cmp ecx, 0
|
|
||||||
je draw_bar_end_24_old
|
|
||||||
.new_y:
|
.new_y:
|
||||||
mov edi, [drbar.real_sx]
|
mov edi, [drbar.real_sx]
|
||||||
.new_x:
|
.new_x:
|
||||||
@ -1546,49 +1269,6 @@ draw_bar_end_24:
|
|||||||
|
|
||||||
;------------------------------------------------------------------------------
|
;------------------------------------------------------------------------------
|
||||||
|
|
||||||
align 4
|
|
||||||
draw_bar_end_24_old:
|
|
||||||
|
|
||||||
.new_y:
|
|
||||||
mov edi, [drbar.real_sx]
|
|
||||||
.new_x:
|
|
||||||
cmp byte [ebp], bl
|
|
||||||
jne .skip
|
|
||||||
|
|
||||||
mov ecx, [drbar.real_sx_and_abs_cx]
|
|
||||||
sub ecx, edi
|
|
||||||
shl ecx, 16
|
|
||||||
add ecx, [drbar.real_sy_and_abs_cy]
|
|
||||||
sub ecx, esi
|
|
||||||
; check mouse area for putpixel
|
|
||||||
call check_mouse_area_for_putpixel
|
|
||||||
; store to LFB
|
|
||||||
mov [edx], ax
|
|
||||||
shr eax, 16
|
|
||||||
mov [edx + 2], al
|
|
||||||
mov eax, [drbar.color]
|
|
||||||
.skip:
|
|
||||||
; add pixel
|
|
||||||
add edx, 3
|
|
||||||
inc ebp
|
|
||||||
dec edi
|
|
||||||
jnz .new_x
|
|
||||||
; add line
|
|
||||||
add edx, [drbar.line_inc_scr]
|
|
||||||
add ebp, [drbar.line_inc_map]
|
|
||||||
; drawing gradient bars
|
|
||||||
test bh, 0x80
|
|
||||||
jz @f
|
|
||||||
test al, al
|
|
||||||
jz @f
|
|
||||||
dec al
|
|
||||||
@@:
|
|
||||||
dec esi
|
|
||||||
jnz .new_y
|
|
||||||
jmp draw_bar_end_24.end
|
|
||||||
|
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
align 4
|
align 4
|
||||||
draw_bar_end_24_new:
|
draw_bar_end_24_new:
|
||||||
|
|
||||||
@ -1669,8 +1349,6 @@ draw_bar_end_32:
|
|||||||
mov ecx, [_display.select_cursor]
|
mov ecx, [_display.select_cursor]
|
||||||
cmp ecx, select_cursor
|
cmp ecx, select_cursor
|
||||||
je draw_bar_end_32_new
|
je draw_bar_end_32_new
|
||||||
cmp ecx, 0
|
|
||||||
je draw_bar_end_32_old
|
|
||||||
|
|
||||||
.new_y:
|
.new_y:
|
||||||
mov edi, [drbar.real_sx]
|
mov edi, [drbar.real_sx]
|
||||||
@ -1713,45 +1391,6 @@ draw_bar_end_32:
|
|||||||
mov [EGA_counter], 1
|
mov [EGA_counter], 1
|
||||||
ret
|
ret
|
||||||
|
|
||||||
draw_bar_end_32_old:
|
|
||||||
|
|
||||||
.new_y:
|
|
||||||
mov edi, [drbar.real_sx]
|
|
||||||
.new_x:
|
|
||||||
cmp byte [ebp], bl
|
|
||||||
jne .skip
|
|
||||||
|
|
||||||
mov ecx, [drbar.real_sx_and_abs_cx]
|
|
||||||
sub ecx, edi
|
|
||||||
shl ecx, 16
|
|
||||||
add ecx, [drbar.real_sy_and_abs_cy]
|
|
||||||
sub ecx, esi
|
|
||||||
|
|
||||||
; check mouse area for putpixel
|
|
||||||
call check_mouse_area_for_putpixel
|
|
||||||
; store to LFB
|
|
||||||
mov [edx], eax
|
|
||||||
mov eax, [drbar.color]
|
|
||||||
.skip:
|
|
||||||
; add pixel
|
|
||||||
add edx, 4
|
|
||||||
inc ebp
|
|
||||||
dec edi
|
|
||||||
jnz .new_x
|
|
||||||
; add line
|
|
||||||
add edx, [drbar.line_inc_scr]
|
|
||||||
add ebp, [drbar.line_inc_map]
|
|
||||||
; drawing gradient bars
|
|
||||||
test bh, 0x80
|
|
||||||
jz @f
|
|
||||||
test al, al
|
|
||||||
jz @f
|
|
||||||
dec al
|
|
||||||
@@:
|
|
||||||
dec esi
|
|
||||||
jnz .new_y
|
|
||||||
jmp draw_bar_end_32.end
|
|
||||||
|
|
||||||
;------------------------------------------------------------------------------
|
;------------------------------------------------------------------------------
|
||||||
|
|
||||||
align 4
|
align 4
|
||||||
@ -1830,8 +1469,7 @@ draw_bar_end_16:
|
|||||||
mov ecx, [_display.select_cursor]
|
mov ecx, [_display.select_cursor]
|
||||||
cmp ecx, select_cursor
|
cmp ecx, select_cursor
|
||||||
je draw_bar_end_16_new
|
je draw_bar_end_16_new
|
||||||
cmp ecx, 0
|
|
||||||
je draw_bar_end_16_old
|
|
||||||
.new_y:
|
.new_y:
|
||||||
mov edi, [drbar.real_sx]
|
mov edi, [drbar.real_sx]
|
||||||
.new_x:
|
.new_x:
|
||||||
@ -1878,57 +1516,6 @@ draw_bar_end_16:
|
|||||||
|
|
||||||
;------------------------------------------------------------------------------
|
;------------------------------------------------------------------------------
|
||||||
|
|
||||||
align 4
|
|
||||||
draw_bar_end_16_old:
|
|
||||||
|
|
||||||
.new_y:
|
|
||||||
mov edi, [drbar.real_sx]
|
|
||||||
.new_x:
|
|
||||||
cmp byte [ebp], bl
|
|
||||||
jne .skip
|
|
||||||
|
|
||||||
mov ecx, [drbar.real_sx_and_abs_cx]
|
|
||||||
sub ecx, edi
|
|
||||||
shl ecx, 16
|
|
||||||
add ecx, [drbar.real_sy_and_abs_cy]
|
|
||||||
sub ecx, esi
|
|
||||||
|
|
||||||
; check mouse area for putpixel
|
|
||||||
call check_mouse_area_for_putpixel
|
|
||||||
; convert to 16 bpp and store to LFB
|
|
||||||
and eax, 00000000111110001111110011111000b
|
|
||||||
shr ah, 2
|
|
||||||
shr ax, 3
|
|
||||||
ror eax, 8
|
|
||||||
add al, ah
|
|
||||||
rol eax, 8
|
|
||||||
mov [edx], ax
|
|
||||||
mov eax, [drbar.color]
|
|
||||||
.skip:
|
|
||||||
|
|
||||||
; add pixel
|
|
||||||
add edx, 2
|
|
||||||
inc ebp
|
|
||||||
dec edi
|
|
||||||
jnz .new_x
|
|
||||||
|
|
||||||
; add line
|
|
||||||
add edx, [drbar.line_inc_scr]
|
|
||||||
add ebp, [drbar.line_inc_map]
|
|
||||||
|
|
||||||
; drawing gradient bars
|
|
||||||
test bh, 0x80
|
|
||||||
jz @f
|
|
||||||
test al, al
|
|
||||||
jz @f
|
|
||||||
dec al
|
|
||||||
@@:
|
|
||||||
dec esi
|
|
||||||
jnz .new_y
|
|
||||||
jmp draw_bar_end_16.end
|
|
||||||
|
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
align 4
|
align 4
|
||||||
draw_bar_end_16_new:
|
draw_bar_end_16_new:
|
||||||
|
|
||||||
@ -2077,10 +1664,8 @@ vesa20_drawbackground_tiled:
|
|||||||
|
|
||||||
; check for hardware cursor
|
; check for hardware cursor
|
||||||
cmp [_display.select_cursor], select_cursor
|
cmp [_display.select_cursor], select_cursor
|
||||||
je @f
|
|
||||||
cmp [_display.select_cursor], 0
|
|
||||||
jne .no_mouseunder
|
jne .no_mouseunder
|
||||||
@@:
|
|
||||||
and eax, 0xffffff
|
and eax, 0xffffff
|
||||||
; check mouse area for putpixel
|
; check mouse area for putpixel
|
||||||
call [_display.check_mouse]
|
call [_display.check_mouse]
|
||||||
@ -2271,10 +1856,8 @@ vesa20_drawbackground_stretch:
|
|||||||
push ecx
|
push ecx
|
||||||
; check for hardware cursor
|
; check for hardware cursor
|
||||||
cmp [_display.select_cursor], select_cursor
|
cmp [_display.select_cursor], select_cursor
|
||||||
je @f
|
|
||||||
cmp [_display.select_cursor], 0
|
|
||||||
jne .no_mouseunder
|
jne .no_mouseunder
|
||||||
@@:
|
|
||||||
mov ecx, [esp+20+4] ;x
|
mov ecx, [esp+20+4] ;x
|
||||||
shl ecx, 16
|
shl ecx, 16
|
||||||
add ecx, [esp+24+4] ;y
|
add ecx, [esp+24+4] ;y
|
||||||
|
@ -382,18 +382,16 @@ VGA_putpixel:
|
|||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
; check for hardware cursor
|
; check for hardware cursor
|
||||||
cmp [_display.select_cursor], select_cursor
|
cmp [_display.select_cursor], select_cursor
|
||||||
je @f
|
|
||||||
cmp [_display.select_cursor], 0
|
|
||||||
jne .no_mouseunder
|
jne .no_mouseunder
|
||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
align 4
|
align 4
|
||||||
@@:
|
|
||||||
push ecx
|
push ecx
|
||||||
shl ecx, 16
|
shl ecx, 16
|
||||||
mov cx, bx
|
mov cx, bx
|
||||||
; check mouse area for putpixel
|
; check mouse area for putpixel
|
||||||
test eax, 0x04000000
|
test eax, 0x04000000
|
||||||
jnz @f
|
jnz @f
|
||||||
|
|
||||||
call [_display.check_mouse]
|
call [_display.check_mouse]
|
||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
align 4
|
align 4
|
||||||
@ -495,10 +493,10 @@ VGA_draw_bar:
|
|||||||
align 4
|
align 4
|
||||||
VGA_draw_bar_1:
|
VGA_draw_bar_1:
|
||||||
mov [temp.cx], eax
|
mov [temp.cx], eax
|
||||||
mov eax, [current_slot_idx]
|
mov eax, [current_slot]
|
||||||
shl eax, BSF sizeof.WDATA
|
mov eax, [eax + APPDATA.window]
|
||||||
add ebx, [window_data + eax + WDATA.box.top]
|
add ebx, [eax + WDATA.box.top]
|
||||||
mov eax, [window_data + eax + WDATA.box.left]
|
mov eax, [eax + WDATA.box.left]
|
||||||
add eax, [temp.cx]
|
add eax, [temp.cx]
|
||||||
and eax, 0xfff8
|
and eax, 0xfff8
|
||||||
shl ebx, 9
|
shl ebx, 9
|
||||||
|
Loading…
Reference in New Issue
Block a user