fix val
This commit is contained in:
parent
a976416822
commit
8bed7747d9
2 changed files with 48 additions and 56 deletions
58
src/boot.asm
58
src/boot.asm
|
|
@ -103,13 +103,6 @@ entrycode:
|
|||
GFX MOUSE_MOVE
|
||||
GFX MOUSE_SHOW
|
||||
|
||||
push cs
|
||||
pop ds
|
||||
|
||||
; Init du système GUI
|
||||
call gui_init_system
|
||||
call build_interface
|
||||
|
||||
call main_loop
|
||||
|
||||
; --- Callbacks (Fonctions appelées par le moteur) ---
|
||||
|
|
@ -119,34 +112,19 @@ on_click_quit:
|
|||
ret
|
||||
|
||||
%define .oldval word [bp-2]
|
||||
%define .slider word [bp-4]
|
||||
main_loop:
|
||||
push bp
|
||||
push bx
|
||||
mov bp, sp
|
||||
sub sp, 2
|
||||
sub sp, 4
|
||||
|
||||
mov .oldval, -1
|
||||
push cs
|
||||
pop ds
|
||||
|
||||
.loop:
|
||||
call gui_process_all
|
||||
GUI OBJ_GET_VAL, 6 ; slider
|
||||
; Init du système GUI
|
||||
call gui_init_system
|
||||
|
||||
cmp ax,.oldval
|
||||
je .loop
|
||||
|
||||
mov .oldval, ax
|
||||
GFX RECTANGLE_FILL,0,148,50,166, PATTERN_WHITE
|
||||
GFX GOTOXY, 8, 150
|
||||
|
||||
call print_word_hex
|
||||
|
||||
jmp .loop
|
||||
|
||||
|
||||
build_interface:
|
||||
; --- CRÉATION DYNAMIQUE DES BOUTONS ---
|
||||
; On reste dans CS pour lire les arguments,
|
||||
; mais on configure DS=GUI_RAM_SEG pour l'allocation
|
||||
|
||||
; Créer Bouton 1 "QUITTER"
|
||||
GUI OBJ_CREATE, OBJ_TYPE_BUTTON_ROUNDED, 10, 10, 80, 16
|
||||
|
|
@ -170,10 +148,28 @@ build_interface:
|
|||
GUI OBJ_SLIDER_SET_ATTR, ax, 10, 140, 10, 15
|
||||
|
||||
GUI OBJ_CREATE, OBJ_TYPE_SLIDER, 400, 10, 16, 150
|
||||
GUI OBJ_SET_MODE, ax, SLIDER_VERTICAL
|
||||
GUI OBJ_SLIDER_SET_ATTR, ax, 0, 15, 15, 20
|
||||
mov .slider, ax
|
||||
GUI OBJ_SET_MODE, .slider, SLIDER_VERTICAL
|
||||
GUI OBJ_SLIDER_SET_ATTR, .slider, 0, 15, 15, 20
|
||||
mov .oldval, -1
|
||||
|
||||
.mem_full:
|
||||
.loop:
|
||||
call gui_process_all
|
||||
GUI OBJ_GET_VAL, .slider ; slider
|
||||
|
||||
cmp ax,.oldval
|
||||
je .loop
|
||||
|
||||
; debug
|
||||
mov .oldval, ax
|
||||
GFX RECTANGLE_FILL,0,148,50,166, PATTERN_WHITE
|
||||
GFX GOTOXY, 8, 150
|
||||
|
||||
call print_word_hex
|
||||
; end debug
|
||||
|
||||
jmp .loop
|
||||
leave
|
||||
ret
|
||||
|
||||
; --- Données ROM ---
|
||||
|
|
|
|||
|
|
@ -136,8 +136,6 @@ gui_api_slider_attr:
|
|||
call gui_get_widget_ptr
|
||||
jc .err
|
||||
|
||||
mov ax, .mode
|
||||
mov byte [gs:si + widget.attr_min], al
|
||||
mov ax, .min
|
||||
mov word [gs:si + widget.attr_min], ax
|
||||
mov ax, .max
|
||||
|
|
@ -319,7 +317,6 @@ gui_api_get_val:
|
|||
push bp
|
||||
mov bp, sp
|
||||
|
||||
|
||||
mov ax, .id ; ID
|
||||
call gui_get_widget_ptr
|
||||
jc .err
|
||||
|
|
@ -335,9 +332,9 @@ gui_api_get_val:
|
|||
%undef .id
|
||||
|
||||
; -----------------------------------------------------------------------------
|
||||
; gui_api_get_val
|
||||
; gui_api_set_val
|
||||
; Arg1: ID
|
||||
; Out: AX = Attr Val
|
||||
; Arg2: Value
|
||||
; -----------------------------------------------------------------------------
|
||||
%define .id word [bp+4]
|
||||
%define .val word [bp+6]
|
||||
|
|
@ -349,16 +346,14 @@ gui_api_set_val:
|
|||
call gui_get_widget_ptr
|
||||
jc .err
|
||||
|
||||
mov ax, [gs:si + widget.attr_val]
|
||||
jmp .done
|
||||
mov ax, .val
|
||||
mov [gs:si + widget.attr_val], ax
|
||||
|
||||
.err:
|
||||
mov ax, -1
|
||||
.done:
|
||||
leave
|
||||
ret
|
||||
%undef .id
|
||||
|
||||
%undef .val
|
||||
|
||||
; -----------------------------------------------------------------------------
|
||||
; gui_api_destroy
|
||||
|
|
@ -793,10 +788,6 @@ gui_logic_slider:
|
|||
|
||||
.do_drag:
|
||||
; --- LOGIQUE DE DÉPLACEMENT ---
|
||||
; On calcule les limites dynamiquement pour éviter que le curseur ne sorte
|
||||
push ax
|
||||
push bx
|
||||
push dx
|
||||
|
||||
xor ax, ax
|
||||
xor bx, bx
|
||||
|
|
@ -806,9 +797,6 @@ gui_logic_slider:
|
|||
cmp byte [gs:si + widget.attr_mode], 2
|
||||
je .drag_v
|
||||
|
||||
pop dx
|
||||
pop bx
|
||||
pop ax
|
||||
xor ax, ax
|
||||
ret
|
||||
|
||||
|
|
@ -816,6 +804,7 @@ gui_logic_slider:
|
|||
; 1. Thumb Width -> AX
|
||||
mov ax, [gs:si + widget.w]
|
||||
mov bl, [gs:si + widget.thumb_pct]
|
||||
xor bh, bh ; Sécurité
|
||||
mul bx
|
||||
mov bx, 100
|
||||
div bx ; AX = Thumb Width
|
||||
|
|
@ -829,7 +818,13 @@ gui_logic_slider:
|
|||
mov dx, [gs:si + widget.x] ; DX = Min Pos
|
||||
|
||||
; 4. Target Pos = MouseX - Anchor
|
||||
mov ax, cx
|
||||
; On recharge MouseX depuis la BDA pour être sûr
|
||||
push ds
|
||||
mov ax, BDA_DATA_SEG
|
||||
mov ds, ax
|
||||
mov ax, [BDA_MOUSE + mouse.x]
|
||||
pop ds
|
||||
|
||||
sub ax, [gs:si + widget.attr_anchor]
|
||||
jmp .apply_clamp
|
||||
|
||||
|
|
@ -837,6 +832,7 @@ gui_logic_slider:
|
|||
; 1. Thumb Height -> AX
|
||||
mov ax, [gs:si + widget.h]
|
||||
mov bl, [gs:si + widget.thumb_pct]
|
||||
xor bh, bh ; Sécurité
|
||||
mul bx
|
||||
mov bx, 100
|
||||
div bx ; AX = Thumb Height
|
||||
|
|
@ -850,9 +846,13 @@ gui_logic_slider:
|
|||
mov dx, [gs:si + widget.y] ; DX = Min Pos
|
||||
|
||||
; 4. Target Pos = MouseY - Anchor
|
||||
; MouseY est sur la pile (push dx initial), on le recupere via SP
|
||||
mov bp, sp
|
||||
mov ax, [bp] ; [bp] = Saved DX (MouseY)
|
||||
; On recharge MouseY depuis la BDA pour être sûr
|
||||
push ds
|
||||
mov ax, BDA_DATA_SEG
|
||||
mov ds, ax
|
||||
mov ax, [BDA_MOUSE + mouse.y]
|
||||
pop ds
|
||||
|
||||
sub ax, [gs:si + widget.attr_anchor]
|
||||
|
||||
.apply_clamp:
|
||||
|
|
@ -867,10 +867,6 @@ gui_logic_slider:
|
|||
mov ax, bx
|
||||
|
||||
.apply_pos:
|
||||
pop dx
|
||||
pop bx
|
||||
add sp, 2 ; Clean AX from stack
|
||||
|
||||
cmp ax, [gs:si + widget.attr_val]
|
||||
je .no_change
|
||||
mov [gs:si + widget.attr_val], ax
|
||||
|
|
|
|||
Loading…
Reference in a new issue