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.
|
||||
lea ecx, [ebx+0x1be] ; ecx -> partition table
|
||||
cmp word [ecx+0x40], 0xaa55
|
||||
jnz .mbr_failed
|
||||
jnz .notmbr
|
||||
; 8. The MBR is treated differently from EBRs. For MBR we additionally need to
|
||||
; execute step 10 and possibly step 11.
|
||||
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 ;;
|
||||
;; ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
@ -789,6 +789,15 @@ struct display_t
|
||||
check_m_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
|
||||
|
||||
struct DISPMODE
|
||||
|
@ -709,16 +709,16 @@ proc new_sys_threads
|
||||
mov [slot], eax
|
||||
|
||||
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
|
||||
shl edi, BSF sizeof.APPDATA
|
||||
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
|
||||
xor eax, eax
|
||||
cld
|
||||
rep stosd ;clean extended information about new thread
|
||||
rep stosd ;clean information about new thread
|
||||
mov esi, ebx
|
||||
mov edi, edx
|
||||
mov ecx, 11
|
||||
|
@ -353,7 +353,6 @@ fpu_data_size = $ - fpu_data
|
||||
|
||||
BPSLine_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_used_list rd 64*2
|
||||
@ -395,8 +394,6 @@ BANK_SWITCH dd ? ; reserved for vesa 1.2
|
||||
BANK_RW dd ?
|
||||
end if
|
||||
|
||||
MOUSE_PICTURE dd ?
|
||||
|
||||
def_cursor dd ?
|
||||
def_cursor_clock dd ?
|
||||
def_cursor_hresize dd ?
|
||||
@ -404,7 +401,6 @@ def_cursor_vresize dd ?
|
||||
def_cursor_dresize1 dd ?
|
||||
def_cursor_dresize2 dd ?
|
||||
current_cursor dd ?
|
||||
hw_cursor dd ?
|
||||
cur_saved_base dd ?
|
||||
|
||||
cur.lock dd ? ; 1 - lock update, 2- hide
|
||||
|
@ -95,13 +95,13 @@ syscall_button:
|
||||
|
||||
; make coordinates clientbox-relative
|
||||
push eax
|
||||
mov eax, [current_slot_idx]
|
||||
shl eax, BSF sizeof.WDATA
|
||||
mov eax, [current_slot]
|
||||
mov eax, [eax + APPDATA.window]
|
||||
rol ebx, 16
|
||||
add bx, word[window_data + eax + WDATA.clientbox.left]
|
||||
add bx, word[eax + WDATA.clientbox.left]
|
||||
rol ebx, 16
|
||||
rol ecx, 16
|
||||
add cx, word[window_data + eax + WDATA.clientbox.top]
|
||||
add cx, word[eax + WDATA.clientbox.top]
|
||||
rol ecx, 16
|
||||
pop eax
|
||||
|
||||
@ -173,10 +173,10 @@ syscall_button:
|
||||
dec ebp
|
||||
shr ebx, 16
|
||||
shr ecx, 16
|
||||
mov eax, [current_slot_idx]
|
||||
shl eax, BSF sizeof.WDATA
|
||||
add ebx, [eax + window_data + WDATA.box.left]
|
||||
add ecx, [eax + window_data + WDATA.box.top]
|
||||
mov eax, [current_slot]
|
||||
mov eax, [eax + APPDATA.window]
|
||||
add ebx, [eax + WDATA.box.left]
|
||||
add ecx, [eax + WDATA.box.top]
|
||||
mov eax, ebx
|
||||
inc eax
|
||||
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 ;;
|
||||
;; ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
$Revision$
|
||||
|
||||
include 'mousepointer.inc'
|
||||
|
||||
;================================
|
||||
;/////// 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
|
||||
; system function 48
|
||||
syscall_display_settings:
|
||||
cmp ebx, 13
|
||||
cmp ebx, .ftable.size-1
|
||||
ja .ret
|
||||
jmp dword[.ftable + ebx*4]
|
||||
|
||||
@ -206,6 +206,7 @@ dd .setFontSmoothing
|
||||
dd .getFontSize
|
||||
dd .setFontSize
|
||||
dd .setSkinUnicode
|
||||
.ftable.size = ($ - .ftable)/4
|
||||
|
||||
.redrawWholeScreen:
|
||||
xor eax, eax
|
||||
@ -223,7 +224,7 @@ dd .setSkinUnicode
|
||||
mov eax, [_display.height]
|
||||
dec eax
|
||||
mov [draw_limits.bottom], eax
|
||||
mov eax, window_data
|
||||
mov eax, window_data ; TODO: check pointer
|
||||
jmp redrawscreen
|
||||
|
||||
.setButtonStyle:
|
||||
@ -406,18 +407,18 @@ align 4
|
||||
;> ebx = 1
|
||||
;> ecx = scale power (resulting scale is 2^ebx)
|
||||
syscall_set_window_shape:
|
||||
mov edi, [current_slot_idx]
|
||||
shl edi, BSF sizeof.WDATA
|
||||
mov edi, [current_slot]
|
||||
mov edi, [edi + APPDATA.window]
|
||||
|
||||
test ebx, ebx
|
||||
jne .shape_scale
|
||||
mov [window_data + edi + WDATA.shape], ecx
|
||||
mov [edi + WDATA.shape], ecx
|
||||
;--------------------------------------
|
||||
align 4
|
||||
.shape_scale:
|
||||
dec ebx
|
||||
jnz .exit
|
||||
mov [window_data + edi + WDATA.shape_scale], ecx
|
||||
mov [edi + WDATA.shape_scale], ecx
|
||||
;--------------------------------------
|
||||
align 4
|
||||
.exit:
|
||||
@ -427,9 +428,8 @@ align 4
|
||||
align 4
|
||||
; system function 67
|
||||
syscall_move_window:
|
||||
mov edi, [current_slot_idx]
|
||||
shl edi, BSF sizeof.WDATA
|
||||
add edi, window_data
|
||||
mov edi, [current_slot]
|
||||
mov edi, [edi + APPDATA.window]
|
||||
|
||||
test [edi + WDATA.fl_wdrawn], 1
|
||||
jz .exit
|
||||
@ -556,11 +556,11 @@ align 4
|
||||
.next_window:
|
||||
movzx edi, word[WIN_POS + esi * 2]
|
||||
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
|
||||
|
||||
add edi, window_data
|
||||
test [edi + WDATA.fl_wstate], WSTATE_MINIMIZED
|
||||
jnz .skip_window
|
||||
|
||||
@ -1245,7 +1245,7 @@ window_check_events:
|
||||
dec bl
|
||||
jnz @f
|
||||
call minimize_window
|
||||
jmp .exit
|
||||
ret
|
||||
;--------------------------------------
|
||||
align 4
|
||||
@@:
|
||||
@ -1614,9 +1614,8 @@ align 4
|
||||
align 4
|
||||
;< edx = pointer to WDATA struct
|
||||
window._.sys_set_window:
|
||||
mov eax, [current_slot_idx]
|
||||
shl eax, BSF sizeof.WDATA
|
||||
add eax, window_data
|
||||
mov eax, [current_slot]
|
||||
mov eax, [eax + APPDATA.window]
|
||||
; save window colors
|
||||
mov [eax + WDATA.cl_workarea], edx
|
||||
mov [eax + WDATA.cl_titlebar], esi
|
||||
@ -1847,18 +1846,20 @@ end virtual
|
||||
|
||||
mov edi, esi
|
||||
shl edi, BSF sizeof.WDATA
|
||||
add edi, window_data
|
||||
|
||||
cmp esi, 1
|
||||
jz .check_for_shaped_window
|
||||
|
||||
cmp [window_data + edi + WDATA.box.width], 0
|
||||
cmp [edi + WDATA.box.width], 0
|
||||
jnz .check_for_shaped_window
|
||||
cmp [window_data + edi + WDATA.box.height], 0
|
||||
|
||||
cmp [edi + WDATA.box.height], 0
|
||||
jz .exit
|
||||
;--------------------------------------
|
||||
align 4
|
||||
.check_for_shaped_window:
|
||||
cmp [window_data + edi + WDATA.shape], 0
|
||||
cmp [edi + WDATA.shape], 0
|
||||
jne .shaped_window
|
||||
|
||||
; get x&y size
|
||||
@ -1908,7 +1909,7 @@ align 4
|
||||
inc ecx
|
||||
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
|
||||
push eax
|
||||
@ -1918,7 +1919,7 @@ align 4
|
||||
add eax, [_display.win_map]
|
||||
mov ebp, eax
|
||||
|
||||
mov edi, [window_data + edi + WDATA.shape]
|
||||
mov edi, [edi + WDATA.shape]
|
||||
pop eax
|
||||
|
||||
; eax = x_start
|
||||
@ -2227,9 +2228,8 @@ window._.draw_window_caption:
|
||||
;--------------------------------------
|
||||
align 4
|
||||
@@:
|
||||
mov edx, [current_slot_idx]
|
||||
shl edx, BSF sizeof.WDATA
|
||||
add edx, window_data
|
||||
mov edx, [current_slot]
|
||||
mov edx, [edx + APPDATA.window]
|
||||
movzx ebx, [edx + WDATA.fl_wstyle]
|
||||
and bl, 0x0F
|
||||
cmp bl, 3
|
||||
@ -2263,17 +2263,17 @@ align 4
|
||||
;--------------------------------------
|
||||
align 4
|
||||
.2:
|
||||
mov edi, [current_slot_idx]
|
||||
shl edi, BSF sizeof.WDATA
|
||||
test [window_data + edi + WDATA.fl_wstyle], WSTYLE_HASCAPTION
|
||||
mov edi, [current_slot]
|
||||
mov edi, [edi + APPDATA.window]
|
||||
test [edi + WDATA.fl_wstyle], WSTYLE_HASCAPTION
|
||||
jz .exit
|
||||
mov edx, [window_data + edi + WDATA.caption]
|
||||
mov edx, [edi + WDATA.caption]
|
||||
or edx, edx
|
||||
jz .exit
|
||||
|
||||
mov ebp, [edi + window_data + WDATA.box.left - 2]
|
||||
mov bp, word[edi + window_data + WDATA.box.top]
|
||||
movzx eax, [edi + window_data + WDATA.fl_wstyle]
|
||||
mov ebp, [edi + WDATA.box.left - 2]
|
||||
mov bp, word[edi + WDATA.box.top]
|
||||
movzx eax, [edi + WDATA.fl_wstyle]
|
||||
and al, 0x0F
|
||||
cmp al, 3
|
||||
je .skinned
|
||||
@ -2284,7 +2284,7 @@ align 4
|
||||
;--------------------------------------
|
||||
align 4
|
||||
.skinned:
|
||||
movzx eax, word[edi + window_data + WDATA.box.width]
|
||||
movzx eax, word[edi + WDATA.box.width]
|
||||
sub ax, [_skinmargins.left]
|
||||
sub ax, [_skinmargins.right]
|
||||
js .exit
|
||||
@ -2301,7 +2301,7 @@ align 4
|
||||
.not_skinned:
|
||||
cmp al, 1
|
||||
je .exit
|
||||
movzx eax, word[edi + window_data + WDATA.box.width]
|
||||
movzx eax, word[edi + WDATA.box.width]
|
||||
sub eax, 16
|
||||
js .exit
|
||||
mov ebx, 80002h
|
||||
@ -2310,7 +2310,7 @@ align 4
|
||||
mov esi, eax
|
||||
add ebx, ebp
|
||||
mov ecx, [common_colours + 16]
|
||||
mov al, [window_data + edi + WDATA.captionEncoding]
|
||||
mov al, [edi + WDATA.captionEncoding]
|
||||
test al, al
|
||||
jnz @f
|
||||
mov al, 1
|
||||
@ -2368,19 +2368,19 @@ align 4
|
||||
; void __fastcall get_window_rect(struct RECT* rc);
|
||||
; ecx = pointer to RECT
|
||||
window._.get_rect:
|
||||
mov eax, [current_slot_idx]
|
||||
shl eax, BSF sizeof.WDATA
|
||||
mov eax, [current_slot]
|
||||
mov eax, [eax + APPDATA.window]
|
||||
|
||||
mov edx, [eax + window_data + WDATA.box.left]
|
||||
mov edx, [eax + WDATA.box.left]
|
||||
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 edx, [eax +window_data + WDATA.box.top]
|
||||
mov edx, [eax + WDATA.box.top]
|
||||
mov [ecx+RECT.top], edx
|
||||
|
||||
add edx, [eax + window_data + WDATA.box.height]
|
||||
add edx, [eax + WDATA.box.height]
|
||||
mov [ecx+RECT.bottom], edx
|
||||
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 ;;
|
||||
;; ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
@ -54,46 +54,7 @@ draw_mouse_under:
|
||||
movzx ebx, word [Y_UNDER]
|
||||
stdcall [_display.restore_cursor], eax, ebx
|
||||
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
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
@ -101,7 +62,7 @@ draw_mouse_under:
|
||||
align 4
|
||||
save_draw_mouse:
|
||||
cmp [_display.move_cursor], 0
|
||||
je .no_hw_cursor
|
||||
je .exit
|
||||
pushad
|
||||
|
||||
mov [X_UNDER], ax
|
||||
@ -158,8 +119,10 @@ save_draw_mouse:
|
||||
je .draw
|
||||
|
||||
@@:
|
||||
push esi
|
||||
call [_display.select_cursor]
|
||||
cmp [_display.select_cursor], 0
|
||||
jz .error
|
||||
|
||||
stdcall [_display.select_cursor], esi
|
||||
mov [current_cursor], esi
|
||||
;--------------------------------------
|
||||
align 4
|
||||
@ -177,276 +140,9 @@ align 4
|
||||
; ret
|
||||
;--------------------------------------
|
||||
align 4
|
||||
.no_hw_cursor:
|
||||
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
|
||||
.error:
|
||||
popad
|
||||
ret
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
|
||||
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
|
||||
.exit:
|
||||
ret
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
@ -461,25 +157,22 @@ __sys_draw_pointer:
|
||||
cmp [redrawmouse_unconditional], 0
|
||||
je @f
|
||||
mov [redrawmouse_unconditional], 0
|
||||
jmp redrawmouse
|
||||
jmp .redrawmouse
|
||||
@@:
|
||||
cmp eax, ecx
|
||||
jne redrawmouse
|
||||
jne .redrawmouse
|
||||
cmp ebx, edx
|
||||
je nodmp
|
||||
je .nodmp
|
||||
|
||||
;--------------------------------------
|
||||
|
||||
align 4
|
||||
redrawmouse:
|
||||
.redrawmouse:
|
||||
pushfd
|
||||
cli
|
||||
call draw_mouse_under
|
||||
call save_draw_mouse
|
||||
|
||||
; mov eax, [_display.select_cursor]
|
||||
; test eax, eax
|
||||
; jz @f
|
||||
cmp [_display.select_cursor], select_cursor
|
||||
jne @f
|
||||
|
||||
@ -499,7 +192,7 @@ redrawmouse:
|
||||
mov [X_UNDER_sub_CUR_hot_x_add_curh], ax
|
||||
@@:
|
||||
popfd
|
||||
nodmp:
|
||||
.nodmp:
|
||||
popad
|
||||
ret
|
||||
|
||||
|
@ -1901,15 +1901,12 @@ sys_midi:
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
sys_end:
|
||||
cmp [_display.select_cursor], 0
|
||||
je @f
|
||||
; restore default cursor before killing
|
||||
pusha
|
||||
mov ecx, [current_slot]
|
||||
mov ecx, [ecx + APPDATA.window]
|
||||
call restore_default_cursor_before_killing
|
||||
popa
|
||||
@@:
|
||||
;--------------------------------------
|
||||
; kill all sockets this process owns
|
||||
pusha
|
||||
@ -1954,8 +1951,10 @@ restore_default_cursor_before_killing:
|
||||
cmp esi, [current_cursor]
|
||||
je @f
|
||||
|
||||
push esi
|
||||
call [_display.select_cursor]
|
||||
cmp [_display.select_cursor], 0
|
||||
jz @f
|
||||
|
||||
stdcall [_display.select_cursor], esi
|
||||
mov [current_cursor], esi
|
||||
@@:
|
||||
mov [redrawmouse_unconditional], 1
|
||||
@ -2062,8 +2061,6 @@ sysfn_terminate: ; 18.2 = TERMINATE
|
||||
call socket_process_end
|
||||
popa
|
||||
;--------------------------------------
|
||||
cmp [_display.select_cursor], 0
|
||||
je .restore_end
|
||||
; restore default cursor before killing
|
||||
pusha
|
||||
mov ecx, [esp+32]
|
||||
@ -2075,7 +2072,6 @@ sysfn_terminate: ; 18.2 = TERMINATE
|
||||
call restore_default_cursor_before_killing
|
||||
@@:
|
||||
popa
|
||||
.restore_end:
|
||||
;--------------------------------------
|
||||
;call MEM_Heap_Lock ;guarantee that process isn't working with heap
|
||||
mov [ecx + APPDATA.state], TSTATE_ZOMBIE; clear possible i40's
|
||||
@ -2557,8 +2553,7 @@ sys_cpuusage:
|
||||
lea eax, [edx-1]
|
||||
stosd
|
||||
|
||||
mov edx, ecx
|
||||
shr edx, (BSF sizeof.APPDATA - BSF sizeof.WDATA)
|
||||
mov edx, [SLOT_BASE + ecx + APPDATA.window]
|
||||
|
||||
; +30: PID/TID
|
||||
mov eax, [SLOT_BASE + ecx + APPDATA.tid]
|
||||
@ -2566,7 +2561,7 @@ sys_cpuusage:
|
||||
|
||||
; window position and size
|
||||
push esi
|
||||
lea esi, [window_data + edx + WDATA.box]
|
||||
lea esi, [edx + WDATA.box]
|
||||
movsd
|
||||
movsd
|
||||
movsd
|
||||
@ -2577,14 +2572,14 @@ sys_cpuusage:
|
||||
stosd
|
||||
|
||||
; Window client area box
|
||||
lea esi, [window_data + edx + WDATA.clientbox]
|
||||
lea esi, [edx + WDATA.clientbox]
|
||||
movsd
|
||||
movsd
|
||||
movsd
|
||||
movsd
|
||||
|
||||
; Window state
|
||||
mov al, [window_data + edx + WDATA.fl_wstate]
|
||||
mov al, [edx + WDATA.fl_wstate]
|
||||
stosb
|
||||
|
||||
; Event mask (+71)
|
||||
@ -2771,12 +2766,8 @@ cache_enable:
|
||||
|
||||
is_cache_enabled:
|
||||
mov eax, cr0
|
||||
mov ebx, eax
|
||||
and eax, 01100000_00000000_00000000_00000000b
|
||||
jz cache_disabled
|
||||
mov [esp + SYSCALL_STACK.eax], ebx
|
||||
cache_disabled:
|
||||
mov dword [esp + SYSCALL_STACK.eax], eax;0
|
||||
mov [esp + SYSCALL_STACK.eax], eax
|
||||
ret
|
||||
|
||||
modify_pce:
|
||||
@ -2891,7 +2882,7 @@ backgr:
|
||||
; DEBUGF 1, "K : backg y %x\n",[BG_Rect_Y_top_bottom]
|
||||
;--------- set event 5 start ----------
|
||||
push ecx edi
|
||||
xor edi, edi
|
||||
mov edi, window_data
|
||||
mov ecx, [thread_count]
|
||||
;--------------------------------------
|
||||
align 4
|
||||
@ -2899,40 +2890,38 @@ set_bgr_event:
|
||||
add edi, sizeof.WDATA
|
||||
mov eax, [BG_Rect_X_left_right]
|
||||
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
|
||||
.join:
|
||||
cmp word [window_data + edi + WDATA.draw_bgr_x], ax
|
||||
cmp word [edi + WDATA.draw_bgr_x], ax
|
||||
jae @f
|
||||
mov word [window_data + edi + WDATA.draw_bgr_x], ax
|
||||
mov word [edi + WDATA.draw_bgr_x], ax
|
||||
@@:
|
||||
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
|
||||
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
|
||||
mov word [window_data + edi + WDATA.draw_bgr_y], dx
|
||||
mov word [edi + WDATA.draw_bgr_y], dx
|
||||
@@:
|
||||
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
|
||||
mov word [window_data + edi + WDATA.draw_bgr_y+2], dx
|
||||
mov word [edi + WDATA.draw_bgr_y+2], dx
|
||||
@@:
|
||||
jmp .common
|
||||
.set:
|
||||
mov [window_data + edi + WDATA.draw_bgr_x], eax
|
||||
mov [window_data + edi + WDATA.draw_bgr_y], edx
|
||||
mov [edi + WDATA.draw_bgr_x], eax
|
||||
mov [edi + WDATA.draw_bgr_y], edx
|
||||
.common:
|
||||
mov eax, [window_data + edi + WDATA.thread]
|
||||
mov eax, [edi + WDATA.thread]
|
||||
test eax, eax
|
||||
jz @f
|
||||
or [eax + APPDATA.occurred_events], EVENT_BACKGROUND
|
||||
@@:
|
||||
sub ecx, 1
|
||||
jnz set_bgr_event
|
||||
;loop set_bgr_event
|
||||
loop set_bgr_event
|
||||
pop edi ecx
|
||||
;--------- set event 5 stop -----------
|
||||
dec [REDRAW_BACKGROUND] ; got new update request?
|
||||
@ -2956,7 +2945,7 @@ nobackgr:
|
||||
jne noshutdown
|
||||
|
||||
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
|
||||
;--------------------------------------
|
||||
align 4
|
||||
@ -3003,13 +2992,11 @@ newct:
|
||||
jnz .noterminate
|
||||
.terminate:
|
||||
pushad
|
||||
mov ecx, eax
|
||||
shl ecx, BSF sizeof.WDATA
|
||||
add ecx, window_data
|
||||
push esi
|
||||
mov ecx, dword[ebx - APPDATA.state + APPDATA.window]
|
||||
call restore_default_cursor_before_killing
|
||||
popad
|
||||
|
||||
pushad
|
||||
pop esi
|
||||
call terminate
|
||||
popad
|
||||
cmp byte [SYS_SHUTDOWN], 0
|
||||
@ -3025,6 +3012,7 @@ newct:
|
||||
ret
|
||||
;-----------------------------------------------------------------------------
|
||||
align 4
|
||||
; eax - ptr to WDATA
|
||||
redrawscreen:
|
||||
; 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 ebx, [edi + WDATA.box.top]
|
||||
|
||||
mov ecx, [draw_limits.bottom] ; ecx = area y end ebx = window y start
|
||||
cmp ecx, ebx
|
||||
jb ricino
|
||||
cmp ebx, [draw_limits.bottom] ; ecx = area y end ebx = window y start
|
||||
jae ricino
|
||||
|
||||
mov ecx, [draw_limits.right] ; ecx = area x end eax = window x start
|
||||
cmp ecx, eax
|
||||
jb ricino
|
||||
cmp eax, [draw_limits.right] ; ecx = area x end eax = window x start
|
||||
jae ricino
|
||||
|
||||
mov eax, [edi + WDATA.box.left]
|
||||
mov ebx, [edi + WDATA.box.top]
|
||||
@ -3090,7 +3076,7 @@ newdw2:
|
||||
;--------------------------------------
|
||||
align 4
|
||||
bgli:
|
||||
cmp dword[esp], 1
|
||||
cmp dword[esp], 1 ; check index in window_data array, 1 - idle
|
||||
jnz .az
|
||||
|
||||
cmp [REDRAW_BACKGROUND], 0
|
||||
@ -3139,18 +3125,16 @@ align 4
|
||||
;--------------------------------------
|
||||
align 4
|
||||
.az:
|
||||
mov eax, edi
|
||||
|
||||
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 [eax + WDATA.draw_data.top], ebx
|
||||
mov [edi + WDATA.draw_data.top], ebx
|
||||
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 [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
|
||||
inc [REDRAW_BACKGROUND]
|
||||
call wakeup_osloop
|
||||
@ -3159,8 +3143,8 @@ align 4
|
||||
newdw8:
|
||||
nobgrd:
|
||||
;--------------------------------------
|
||||
push eax edi ebp
|
||||
mov edi, [esp+12]
|
||||
push edi ebp
|
||||
mov edi, [esp+8]
|
||||
cmp edi, 1
|
||||
je .found
|
||||
|
||||
@ -3210,14 +3194,14 @@ align 4
|
||||
;--------------------------------------
|
||||
align 4
|
||||
.not_found:
|
||||
pop ebp edi eax
|
||||
pop ebp edi
|
||||
jmp ricino
|
||||
;--------------------------------------
|
||||
align 4
|
||||
.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
|
||||
ricino:
|
||||
|
@ -213,10 +213,10 @@ end virtual
|
||||
|
||||
mov [esp + .flags], ebx
|
||||
|
||||
mov eax, [current_slot_idx]
|
||||
shl eax, BSF sizeof.WDATA
|
||||
mov ebx, [window_data + eax + WDATA.box.width]
|
||||
mov edx, [window_data + eax + WDATA.box.height]
|
||||
mov eax, [current_slot]
|
||||
mov eax, [eax + APPDATA.window]
|
||||
mov ebx, [eax + WDATA.box.width]
|
||||
mov edx, [eax + WDATA.box.height]
|
||||
inc ebx
|
||||
inc edx
|
||||
|
||||
@ -260,19 +260,19 @@ end virtual
|
||||
call blit_clip
|
||||
jc .L57
|
||||
|
||||
mov eax, [current_slot_idx]
|
||||
shl eax, BSF sizeof.WDATA
|
||||
mov eax, [current_slot]
|
||||
mov eax, [eax + APPDATA.window]
|
||||
|
||||
mov ebx, [esp + BLITTER.dst_x]
|
||||
mov ebp, [esp + BLITTER.dst_y]
|
||||
add ebx, [window_data + eax + WDATA.box.left]
|
||||
add ebp, [window_data + eax + WDATA.box.top]
|
||||
add ebx, [eax + WDATA.box.left]
|
||||
add ebp, [eax + WDATA.box.top]
|
||||
|
||||
test [esp + .flags], BLIT_CLIENT_RELATIVE
|
||||
jz .no_client_relative
|
||||
|
||||
add ebx, [window_data + eax + WDATA.clientbox.left]
|
||||
add ebp, [window_data + eax + WDATA.clientbox.top]
|
||||
add ebx, [eax + WDATA.clientbox.left]
|
||||
add ebp, [eax + WDATA.clientbox.top]
|
||||
.no_client_relative:
|
||||
|
||||
mov ecx, ebx
|
||||
@ -320,8 +320,6 @@ end virtual
|
||||
mov ebx, [current_slot_idx]
|
||||
; check for hardware cursor
|
||||
cmp [_display.select_cursor], select_cursor
|
||||
je .core_32.software_cursor
|
||||
cmp [_display.select_cursor], 0
|
||||
jne .core_32.hardware_cursor
|
||||
;--------------------------------------
|
||||
.core_32.software_cursor:
|
||||
@ -430,12 +428,9 @@ align 4
|
||||
|
||||
; check for hardware cursor
|
||||
cmp [_display.select_cursor], select_cursor
|
||||
je @f
|
||||
cmp [_display.select_cursor], 0
|
||||
jne .no_mouseunder_1
|
||||
;--------------------------------------
|
||||
align 4
|
||||
@@:
|
||||
push ecx
|
||||
|
||||
mov ecx, [esp+4]
|
||||
@ -491,11 +486,8 @@ align 4
|
||||
|
||||
; check for hardware cursor
|
||||
cmp [_display.select_cursor], select_cursor
|
||||
je @f
|
||||
cmp [_display.select_cursor], 0
|
||||
jne .no_mouseunder_2
|
||||
;--------------------------------------
|
||||
@@:
|
||||
push ecx
|
||||
|
||||
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 ;;
|
||||
;; ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
@ -617,6 +617,74 @@ align 4
|
||||
endp
|
||||
;------------------------------------------------------------------------------
|
||||
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
|
||||
locals
|
||||
h dd ?
|
||||
@ -959,6 +1027,161 @@ align 4
|
||||
jnz .row
|
||||
ret
|
||||
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
|
||||
check_mouse_area_for_getpixel_new:
|
||||
@ -1167,16 +1390,31 @@ init_display:
|
||||
mov [edi + display_t.cr_list.prev], ecx
|
||||
|
||||
if ~defined UEFI
|
||||
cmp [SCR_MODE], word 0x13
|
||||
jbe .fail
|
||||
cmp [SCR_MODE], word 0x12
|
||||
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
|
||||
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
|
||||
mov ebx, restore_32
|
||||
mov ecx, move_cursor_32
|
||||
mov edx, Vesa20_putpixel32_new
|
||||
mov eax, [_display.bits_per_pixel]
|
||||
|
||||
cmp al, 32
|
||||
jne .not_32bpp
|
||||
|
||||
@ -1184,13 +1422,11 @@ end if
|
||||
mov [_display.select_cursor], select_cursor
|
||||
mov [_display.move_cursor], ecx
|
||||
mov [_display.restore_cursor], ebx
|
||||
mov [_display.check_mouse], check_mouse_area_for_putpixel_new
|
||||
mov [_display.check_m_pixel], check_mouse_area_for_getpixel_new
|
||||
;mov [_display.check_mouse], check_mouse_area_for_putpixel_new
|
||||
;mov [_display.check_m_pixel], check_mouse_area_for_getpixel_new
|
||||
|
||||
cmp [PUTPIXEL], dword VGA_putpixel
|
||||
je @f
|
||||
mov [PUTPIXEL], edx
|
||||
@@:
|
||||
|
||||
stdcall load_cursor, def_hresize, dword LOAD_FROM_MEM
|
||||
mov [def_cursor_hresize], eax
|
||||
stdcall load_cursor, def_vresize, dword LOAD_FROM_MEM
|
||||
@ -1230,11 +1466,10 @@ end if
|
||||
; mov ecx, move_cursor_15
|
||||
; mov edx, Vesa20_putpixel15_new
|
||||
; jmp .set
|
||||
|
||||
.fail:
|
||||
xor eax, eax
|
||||
mov [_display.select_cursor], eax
|
||||
mov [_display.move_cursor], eax
|
||||
;xor eax, eax
|
||||
;mov [_display.select_cursor], eax
|
||||
;mov [_display.move_cursor], eax
|
||||
ret
|
||||
;------------------------------------------------------------------------------
|
||||
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 ;;
|
||||
;; ;;
|
||||
;; Synhronization for MenuetOS. ;;
|
||||
@ -99,26 +99,25 @@ init_video:
|
||||
jmp .finish
|
||||
|
||||
.16bpp:
|
||||
mov [PUTPIXEL], Vesa20_putpixel16
|
||||
mov [PUTPIXEL], Vesa20_putpixel16_new
|
||||
mov [GETPIXEL], Vesa20_getpixel16
|
||||
mov [_display.bytes_per_pixel], 2
|
||||
jmp .finish
|
||||
|
||||
.24bpp:
|
||||
mov [PUTPIXEL], Vesa20_putpixel24
|
||||
mov [PUTPIXEL], Vesa20_putpixel24_new
|
||||
mov [GETPIXEL], Vesa20_getpixel24
|
||||
mov [_display.bytes_per_pixel], 3
|
||||
jmp .finish
|
||||
|
||||
.32bpp:
|
||||
mov [PUTPIXEL], Vesa20_putpixel32
|
||||
mov [PUTPIXEL], Vesa20_putpixel32_new
|
||||
mov [GETPIXEL], Vesa20_getpixel32
|
||||
mov [_display.bytes_per_pixel], 4
|
||||
|
||||
.finish:
|
||||
mov [MOUSE_PICTURE], mousepointer
|
||||
mov [_display.check_mouse], check_mouse_area_for_putpixel
|
||||
mov [_display.check_m_pixel], check_mouse_area_for_getpixel
|
||||
mov [_display.check_mouse], check_mouse_area_for_putpixel_new
|
||||
mov [_display.check_m_pixel], check_mouse_area_for_getpixel_new
|
||||
|
||||
mov ax, word [SCR_MODE]
|
||||
cmp ax, 0x0012
|
||||
|
@ -40,10 +40,7 @@ Vesa20_getpixel16:
|
||||
|
||||
; check for hardware cursor
|
||||
cmp [_display.select_cursor], select_cursor
|
||||
je @f
|
||||
cmp [_display.select_cursor], 0
|
||||
jne .no_mouseunder
|
||||
@@:
|
||||
|
||||
; check mouse area for putpixel
|
||||
test ecx, 0x04000000 ; don't load to mouseunder area
|
||||
@ -78,10 +75,7 @@ Vesa20_getpixel24:
|
||||
|
||||
; check for hardware cursor
|
||||
cmp [_display.select_cursor], select_cursor
|
||||
je @f
|
||||
cmp [_display.select_cursor], 0
|
||||
jne .no_mouseunder
|
||||
@@:
|
||||
|
||||
; check mouse area for putpixel
|
||||
test ecx, 0x04000000 ; don't load to mouseunder area
|
||||
@ -110,10 +104,7 @@ Vesa20_getpixel32:
|
||||
|
||||
; check for hardware cursor
|
||||
cmp [_display.select_cursor], select_cursor
|
||||
je @f
|
||||
cmp [_display.select_cursor], 0
|
||||
jne .no_mouseunder
|
||||
@@:
|
||||
|
||||
; check mouse area for putpixel
|
||||
test ecx, 0x04000000 ; don't load to mouseunder area
|
||||
@ -189,16 +180,16 @@ end virtual
|
||||
mov [putimg.image_cx], eax
|
||||
mov [putimg.image_cy], edx
|
||||
; calculate absolute (i.e. screen) coordinates
|
||||
mov eax, [current_slot_idx]
|
||||
shl eax, BSF sizeof.WDATA
|
||||
mov ebx, [eax + window_data + WDATA.box.left]
|
||||
mov eax, [current_slot]
|
||||
mov eax, [eax + APPDATA.window]
|
||||
mov ebx, [eax + WDATA.box.left]
|
||||
add ebx, [putimg.image_cx]
|
||||
mov [putimg.abs_cx], ebx
|
||||
mov ebx, [eax +window_data + WDATA.box.top]
|
||||
mov ebx, [eax + WDATA.box.top]
|
||||
add ebx, [putimg.image_cy]
|
||||
mov [putimg.abs_cy], ebx
|
||||
; 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
|
||||
sub ebx, [putimg.image_cx]
|
||||
ja @f
|
||||
@ -213,7 +204,7 @@ end virtual
|
||||
.end_x:
|
||||
mov [putimg.real_sx], ebx
|
||||
; 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
|
||||
sub ebx, [putimg.image_cy]
|
||||
ja @f
|
||||
@ -292,8 +283,7 @@ put_image_end_16:
|
||||
mov ecx, [_display.select_cursor]
|
||||
cmp ecx, select_cursor
|
||||
je put_image_end_16_new
|
||||
cmp ecx, 0
|
||||
je put_image_end_16_old
|
||||
|
||||
.new_line:
|
||||
mov ecx, [putimg.real_sx]
|
||||
.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
|
||||
put_image_end_16_new:
|
||||
|
||||
@ -490,8 +422,7 @@ put_image_end_24:
|
||||
mov ecx, [_display.select_cursor]
|
||||
cmp ecx, select_cursor
|
||||
je put_image_end_24_new
|
||||
cmp ecx, 0
|
||||
je put_image_end_24_old
|
||||
|
||||
.new_line:
|
||||
mov ecx, [putimg.real_sx]
|
||||
.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
|
||||
put_image_end_24_new:
|
||||
|
||||
@ -682,8 +556,6 @@ put_image_end_32:
|
||||
mov ecx, [_display.select_cursor]
|
||||
cmp ecx, select_cursor
|
||||
je put_image_end_32_new
|
||||
cmp ecx, 0
|
||||
je put_image_end_32_old
|
||||
|
||||
.new_line:
|
||||
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
|
||||
put_image_end_32_new:
|
||||
|
||||
@ -877,9 +696,9 @@ __sys_putpixel:
|
||||
|
||||
pushad
|
||||
cmp eax, [_display.width]
|
||||
jge .exit
|
||||
jae .exit
|
||||
cmp ebx, [_display.height]
|
||||
jge .exit
|
||||
jae .exit
|
||||
test edi, 1 ; force ?
|
||||
jnz .forced
|
||||
|
||||
@ -914,41 +733,6 @@ __sys_putpixel:
|
||||
; eax = x
|
||||
; 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
|
||||
Vesa20_putpixel16_new:
|
||||
|
||||
@ -999,37 +783,6 @@ Vesa20_putpixel16_new:
|
||||
; eax = x
|
||||
; 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
|
||||
Vesa20_putpixel24_new:
|
||||
|
||||
@ -1075,35 +828,6 @@ Vesa20_putpixel24_new:
|
||||
; eax = x
|
||||
; 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
|
||||
Vesa20_putpixel32_new:
|
||||
|
||||
@ -1402,14 +1126,14 @@ end virtual
|
||||
mov [drbar.bar_sx], ecx
|
||||
mov [drbar.bar_cx], eax
|
||||
mov [drbar.bar_cy], ebx
|
||||
mov edi, [current_slot_idx]
|
||||
shl edi, BSF sizeof.WDATA
|
||||
add eax, [edi + window_data + WDATA.box.left] ; win_cx
|
||||
add ebx, [edi + window_data + WDATA.box.top] ; win_cy
|
||||
mov edi, [current_slot]
|
||||
mov edi, [edi + APPDATA.window]
|
||||
add eax, [edi + WDATA.box.left] ; win_cx
|
||||
add ebx, [edi + WDATA.box.top] ; win_cy
|
||||
mov [drbar.abs_cx], eax
|
||||
mov [drbar.abs_cy], ebx
|
||||
; 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
|
||||
sub ebx, [drbar.bar_cx]
|
||||
ja @f
|
||||
@ -1426,7 +1150,7 @@ end virtual
|
||||
.end_x:
|
||||
mov [drbar.real_sx], ebx
|
||||
; 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
|
||||
sub ebx, [drbar.bar_cy]
|
||||
ja @f
|
||||
@ -1508,8 +1232,7 @@ draw_bar_end_24:
|
||||
mov ecx, [_display.select_cursor]
|
||||
cmp ecx, select_cursor
|
||||
je draw_bar_end_24_new
|
||||
cmp ecx, 0
|
||||
je draw_bar_end_24_old
|
||||
|
||||
.new_y:
|
||||
mov edi, [drbar.real_sx]
|
||||
.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
|
||||
draw_bar_end_24_new:
|
||||
|
||||
@ -1669,8 +1349,6 @@ draw_bar_end_32:
|
||||
mov ecx, [_display.select_cursor]
|
||||
cmp ecx, select_cursor
|
||||
je draw_bar_end_32_new
|
||||
cmp ecx, 0
|
||||
je draw_bar_end_32_old
|
||||
|
||||
.new_y:
|
||||
mov edi, [drbar.real_sx]
|
||||
@ -1713,45 +1391,6 @@ draw_bar_end_32:
|
||||
mov [EGA_counter], 1
|
||||
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
|
||||
@ -1830,8 +1469,7 @@ draw_bar_end_16:
|
||||
mov ecx, [_display.select_cursor]
|
||||
cmp ecx, select_cursor
|
||||
je draw_bar_end_16_new
|
||||
cmp ecx, 0
|
||||
je draw_bar_end_16_old
|
||||
|
||||
.new_y:
|
||||
mov edi, [drbar.real_sx]
|
||||
.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
|
||||
draw_bar_end_16_new:
|
||||
|
||||
@ -2077,10 +1664,8 @@ vesa20_drawbackground_tiled:
|
||||
|
||||
; check for hardware cursor
|
||||
cmp [_display.select_cursor], select_cursor
|
||||
je @f
|
||||
cmp [_display.select_cursor], 0
|
||||
jne .no_mouseunder
|
||||
@@:
|
||||
|
||||
and eax, 0xffffff
|
||||
; check mouse area for putpixel
|
||||
call [_display.check_mouse]
|
||||
@ -2271,10 +1856,8 @@ vesa20_drawbackground_stretch:
|
||||
push ecx
|
||||
; check for hardware cursor
|
||||
cmp [_display.select_cursor], select_cursor
|
||||
je @f
|
||||
cmp [_display.select_cursor], 0
|
||||
jne .no_mouseunder
|
||||
@@:
|
||||
|
||||
mov ecx, [esp+20+4] ;x
|
||||
shl ecx, 16
|
||||
add ecx, [esp+24+4] ;y
|
||||
|
@ -382,18 +382,16 @@ VGA_putpixel:
|
||||
;--------------------------------------
|
||||
; check for hardware cursor
|
||||
cmp [_display.select_cursor], select_cursor
|
||||
je @f
|
||||
cmp [_display.select_cursor], 0
|
||||
jne .no_mouseunder
|
||||
;--------------------------------------
|
||||
align 4
|
||||
@@:
|
||||
push ecx
|
||||
shl ecx, 16
|
||||
mov cx, bx
|
||||
; check mouse area for putpixel
|
||||
test eax, 0x04000000
|
||||
jnz @f
|
||||
|
||||
call [_display.check_mouse]
|
||||
;--------------------------------------
|
||||
align 4
|
||||
@ -495,10 +493,10 @@ VGA_draw_bar:
|
||||
align 4
|
||||
VGA_draw_bar_1:
|
||||
mov [temp.cx], eax
|
||||
mov eax, [current_slot_idx]
|
||||
shl eax, BSF sizeof.WDATA
|
||||
add ebx, [window_data + eax + WDATA.box.top]
|
||||
mov eax, [window_data + eax + WDATA.box.left]
|
||||
mov eax, [current_slot]
|
||||
mov eax, [eax + APPDATA.window]
|
||||
add ebx, [eax + WDATA.box.top]
|
||||
mov eax, [eax + WDATA.box.left]
|
||||
add eax, [temp.cx]
|
||||
and eax, 0xfff8
|
||||
shl ebx, 9
|
||||
|
Loading…
Reference in New Issue
Block a user