forked from KolibriOS/kolibrios
Added border styles(raised, sunken, etched, ridged), possibility to fill frame background.
git-svn-id: svn://kolibrios.org@6586 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
e47ae79991
commit
0de6e52a90
@ -499,3 +499,35 @@ PB_MAX equ +28
|
||||
PB_BACK_COLOR equ +32
|
||||
PB_PROGRESS_COLOR equ +36
|
||||
PB_FRAME_COLOR equ +40
|
||||
|
||||
; *** Frame constants *** ;
|
||||
FR_STYLE equ +0 ; Dword
|
||||
FR_WIDTH equ +4 ; Word
|
||||
FR_LEFT equ +6 ; Word
|
||||
FR_HEIGHT equ +8 ; Word
|
||||
FR_TOP equ +10 ; Word
|
||||
FR_OUTER_COLOR equ +12 ; Dword
|
||||
FR_INNER_COLOR equ +16 ; Dword
|
||||
FR_FLAGS equ +20 ; Dword
|
||||
FR_TEXT equ +24 ; Dword
|
||||
FR_TEXT_POSITION equ +28 ; Dword
|
||||
FR_FONT equ +32 ; Dword
|
||||
FR_FONT_HEIGHT equ +36 ; Dword
|
||||
FR_FORE_COLOR equ +40 ; Dword
|
||||
FR_BACK_COLOR equ +44 ; Dword
|
||||
|
||||
; FR_FLAGS = [x][yyy][z]
|
||||
; z - Caption
|
||||
; yyy - BorderStyle
|
||||
; x - BackStyle
|
||||
FR_CAPTION equ 00001b ; [z]
|
||||
FR_DOUBLE equ 00000b ; [yyy]
|
||||
FR_RAISED equ 00010b ; [yyy]
|
||||
FR_SUNKEN equ 00100b ; [yyy]
|
||||
FR_ETCHED equ 00110b ; [yyy]
|
||||
FR_RIDGED equ 01000b ; [yyy]
|
||||
FR_FILLED equ 10000b ; [x]
|
||||
|
||||
; FR_TEXT_POSITION
|
||||
FR_TEXT_POS_BOTTOM equ 1
|
||||
FR_TEXT_POS_TOP equ 0
|
@ -1,4 +1,8 @@
|
||||
;**************************************************************
|
||||
; 2016, 0CodErr
|
||||
; Added border styles(raised, sunken, etched, ridged).
|
||||
; Added possibility to fill frame background.
|
||||
;**************************************************************
|
||||
; Frame Macro for Kolibri OS
|
||||
; Copyright (c) 2013, Marat Zakiyanov aka Mario79, aka Mario
|
||||
; All rights reserved.
|
||||
@ -28,7 +32,6 @@
|
||||
macro frame_start
|
||||
{
|
||||
pusha
|
||||
mov edi,dword [esp+36]
|
||||
}
|
||||
;*****************************************************************************
|
||||
macro frame_exit
|
||||
@ -39,21 +42,22 @@ ret 4
|
||||
;*****************************************************************************
|
||||
macro use_frame
|
||||
{
|
||||
fr equ [esp + 36]
|
||||
frame:
|
||||
fr_type equ [edi] ;dword
|
||||
fr_size_x equ [edi+4] ;word
|
||||
fr_start_x equ [edi+6] ;word
|
||||
fr_size_y equ [edi+8] ;word
|
||||
fr_start_y equ [edi+10] ;word
|
||||
fr_ext_fr_col equ [edi+12] ;dword
|
||||
fr_int_fr_col equ [edi+16] ;dword
|
||||
fr_draw_text_flag equ [edi+20] ;dword 0-not,1-yes
|
||||
fr_text_pointer equ [edi+24] ;dword
|
||||
fr_text_position equ [edi+28] ;dword 0-up,1-bottom
|
||||
fr_font_number equ [edi+32] ;dword 0-monospace,1-variable
|
||||
fr_font_size_y equ [edi+36] ;dword
|
||||
fr_font_color equ [edi+40] ;dword
|
||||
fr_font_backgr_color equ [edi+44] ;dword
|
||||
fr_type equ [eax + FR_STYLE] ; dword
|
||||
fr_size_x equ [eax + FR_WIDTH] ; word
|
||||
fr_start_x equ [eax + FR_LEFT] ; word
|
||||
fr_size_y equ [eax + FR_HEIGHT] ; word
|
||||
fr_start_y equ [eax + FR_TOP] ; word
|
||||
fr_ext_fr_col equ [eax + FR_OUTER_COLOR] ; dword
|
||||
fr_int_fr_col equ [eax + FR_INNER_COLOR] ; dword
|
||||
fr_flags equ [eax + FR_FLAGS] ; dword
|
||||
fr_text_pointer equ [eax + FR_TEXT] ; dword
|
||||
fr_text_position equ [eax + FR_TEXT_POSITION] ; dword
|
||||
fr_font_number equ [eax + FR_FONT] ; dword
|
||||
fr_font_size_y equ [eax + FR_FONT_HEIGHT] ; dword
|
||||
fr_font_color equ [eax + FR_FORE_COLOR] ; dword
|
||||
fr_font_backgr_color equ [eax + FR_BACK_COLOR] ; dword
|
||||
;*****************************************************************************
|
||||
;*****************************************************************************
|
||||
; draw event
|
||||
@ -62,97 +66,156 @@ fr_font_backgr_color equ [edi+44] ;dword
|
||||
align 4
|
||||
.draw:
|
||||
frame_start
|
||||
;-------------------------------------
|
||||
; in
|
||||
; ebx = [coordinate on axis x]*65536 + [size on axis x]
|
||||
; ecx = [coordinate on axis y]*65536 + [size on axis y]
|
||||
;--------------------------------------
|
||||
; top
|
||||
mov bx,fr_start_x
|
||||
shl ebx,16
|
||||
mov bx,fr_start_x
|
||||
add bx,fr_size_x
|
||||
dec bx
|
||||
|
||||
mov cx,fr_start_y
|
||||
shl ecx,16
|
||||
mov cx,fr_start_y
|
||||
|
||||
mcall 38,,,fr_ext_fr_col
|
||||
|
||||
add ecx,1 shl 16 +1
|
||||
add ebx,1 shl 16
|
||||
dec ebx
|
||||
|
||||
mcall ,,,fr_int_fr_col
|
||||
;--------------------------------------
|
||||
; bottom
|
||||
mov bx,fr_start_x
|
||||
shl ebx,16
|
||||
mov bx,fr_start_x
|
||||
add bx,fr_size_x
|
||||
dec bx
|
||||
|
||||
mov cx,fr_start_y
|
||||
add cx,fr_size_y
|
||||
dec cx
|
||||
shl ecx,16
|
||||
mov cx,fr_start_y
|
||||
add cx,fr_size_y
|
||||
dec cx
|
||||
|
||||
mcall ,,,fr_ext_fr_col
|
||||
|
||||
sub ecx,1 shl 16 +1
|
||||
add ebx,1 shl 16
|
||||
dec ebx
|
||||
|
||||
mcall ,,,fr_int_fr_col
|
||||
;--------------------------------------
|
||||
; left
|
||||
mov bx,fr_start_x
|
||||
shl ebx,16
|
||||
mov bx,fr_start_x
|
||||
|
||||
mov cx,fr_start_y
|
||||
shl ecx,16
|
||||
mov cx,fr_start_y
|
||||
add cx,fr_size_y
|
||||
dec cx
|
||||
|
||||
mcall ,,,fr_ext_fr_col
|
||||
|
||||
add ebx,1 shl 16 +1
|
||||
add ecx,1 shl 16
|
||||
dec ecx
|
||||
|
||||
mcall ,,,fr_int_fr_col
|
||||
|
||||
;--------------------------------------
|
||||
; right
|
||||
mov bx,fr_start_x
|
||||
add bx,fr_size_x
|
||||
dec bx
|
||||
shl ebx,16
|
||||
mov bx,fr_start_x
|
||||
add bx,fr_size_x
|
||||
dec bx
|
||||
|
||||
mov cx,fr_start_y
|
||||
shl ecx,16
|
||||
mov cx,fr_start_y
|
||||
add cx,fr_size_y
|
||||
dec cx
|
||||
|
||||
mcall ,,,fr_ext_fr_col
|
||||
|
||||
sub ebx,1 shl 16 +1
|
||||
add ecx,1 shl 16
|
||||
dec ecx
|
||||
|
||||
mcall ,,,fr_int_fr_col
|
||||
mov eax, fr
|
||||
mov edx, fr_ext_fr_col
|
||||
mov edi, fr_int_fr_col
|
||||
mov esi, edx
|
||||
mov ebp, edi
|
||||
mov eax, fr_flags
|
||||
and eax, 1110b
|
||||
.raised:
|
||||
cmp eax, FR_RAISED
|
||||
je .border_style_selected
|
||||
.sunken:
|
||||
cmp eax, FR_SUNKEN
|
||||
jne .etched
|
||||
xchg edx, edi
|
||||
xchg esi, ebp
|
||||
jmp .border_style_selected
|
||||
.etched:
|
||||
cmp eax, FR_ETCHED
|
||||
jne .ridged
|
||||
xchg edx, edi
|
||||
jmp .border_style_selected
|
||||
.ridged:
|
||||
cmp eax, FR_RIDGED
|
||||
jne .double
|
||||
xchg esi, ebp
|
||||
jmp .border_style_selected
|
||||
.double:
|
||||
cmp eax, FR_DOUBLE
|
||||
jne .border_style_selected
|
||||
mov edi, edx
|
||||
mov esi, ebp
|
||||
.border_style_selected:
|
||||
; Outer Top Line
|
||||
mov eax, fr
|
||||
mov bx, fr_start_x
|
||||
mov cx, fr_start_y
|
||||
shl ebx, 16
|
||||
shl ecx, 16
|
||||
mov bx, fr_size_x
|
||||
add bx, fr_start_x
|
||||
sub ebx, 1
|
||||
mov cx, fr_start_y
|
||||
mov eax, 38
|
||||
int 64
|
||||
; Outer Left Line
|
||||
mov eax, fr
|
||||
mov bx, fr_start_x
|
||||
add cx, fr_size_y
|
||||
sub ecx, 1
|
||||
mov eax, 38
|
||||
int 64
|
||||
; Inner Top Line
|
||||
mov eax, fr
|
||||
mov bx, fr_start_x
|
||||
mov cx, fr_start_y
|
||||
add ebx, 1
|
||||
add ecx, 1
|
||||
shl ebx, 16
|
||||
shl ecx, 16
|
||||
mov bx, fr_size_x
|
||||
mov cx, fr_start_y
|
||||
add bx, fr_start_x
|
||||
sub ebx, 2
|
||||
add ecx, 1
|
||||
mov edx, esi
|
||||
mov eax, 38
|
||||
int 64
|
||||
; Inner Left Line
|
||||
mov eax, fr
|
||||
mov bx, fr_start_x
|
||||
add cx, fr_size_y
|
||||
add ebx, 1
|
||||
sub ecx, 3
|
||||
mov edx, esi
|
||||
mov eax, 38
|
||||
int 64
|
||||
; Outer Bottom Line
|
||||
mov eax, fr
|
||||
mov bx, fr_size_x
|
||||
mov cx, fr_size_y
|
||||
add bx, fr_start_x
|
||||
add cx, fr_start_y
|
||||
sub ebx, 1
|
||||
sub ecx, 1
|
||||
shl ebx, 16
|
||||
shl ecx, 16
|
||||
mov bx, fr_start_x
|
||||
mov cx, fr_size_y
|
||||
add cx, fr_start_y
|
||||
sub ecx, 1
|
||||
mov edx, edi
|
||||
mov eax, 38
|
||||
int 64
|
||||
; Outer Right Line
|
||||
mov eax, fr
|
||||
add bx, fr_size_x
|
||||
sub ebx, 1
|
||||
mov cx, fr_start_y
|
||||
mov edx, edi
|
||||
mov eax, 38
|
||||
int 64
|
||||
; Inner Bottom Line
|
||||
mov eax, fr
|
||||
mov bx, fr_size_x
|
||||
mov cx, fr_size_y
|
||||
add bx, fr_start_x
|
||||
add cx, fr_start_y
|
||||
sub ebx, 2
|
||||
sub ecx, 2
|
||||
shl ebx, 16
|
||||
shl ecx, 16
|
||||
mov bx, fr_start_x
|
||||
mov cx, fr_size_y
|
||||
add cx, fr_start_y
|
||||
add ebx, 1
|
||||
sub ecx, 2
|
||||
mov edx, ebp
|
||||
mov eax, 38
|
||||
int 64
|
||||
; Inner Right Line
|
||||
mov eax, fr
|
||||
mov cx, fr_start_y
|
||||
add bx, fr_size_x
|
||||
sub ebx, 3
|
||||
add ecx, 1
|
||||
mov edx, ebp
|
||||
mov eax, 38
|
||||
int 64
|
||||
;----------------------------------------------------------------------
|
||||
cmp fr_draw_text_flag,dword 0
|
||||
mov eax, fr
|
||||
test dword fr_flags, FR_FILLED
|
||||
je .fill_exit
|
||||
|
||||
mov bx, fr_start_x
|
||||
mov cx, fr_start_y
|
||||
add ebx, 2
|
||||
add ecx, 2
|
||||
shl ebx, 16
|
||||
shl ecx, 16
|
||||
mov bx, fr_size_x
|
||||
mov cx, fr_size_y
|
||||
sub ebx, 4
|
||||
sub ecx, 4
|
||||
mov edx, fr_font_backgr_color
|
||||
mov eax, 13
|
||||
int 64
|
||||
.fill_exit:
|
||||
;----------------------------------------------------------------------
|
||||
mov eax, fr
|
||||
test dword fr_flags, FR_CAPTION
|
||||
je .exit
|
||||
|
||||
mov ecx,0xC0000000
|
||||
@ -160,6 +223,7 @@ frame_start
|
||||
and eax,11b
|
||||
shl eax,28
|
||||
add ecx,eax
|
||||
mov eax, fr
|
||||
mov eax,fr_font_color
|
||||
and eax,0xffffff
|
||||
add ecx,eax
|
||||
@ -171,6 +235,7 @@ frame_start
|
||||
|
||||
xor esi,esi
|
||||
|
||||
mov eax, fr
|
||||
mov bx,fr_start_x
|
||||
add bx,10
|
||||
shl ebx,16
|
||||
@ -194,10 +259,9 @@ align 4
|
||||
;--------------------------------------
|
||||
align 4
|
||||
.draw_1:
|
||||
push edi
|
||||
mov edi,eax
|
||||
mov edx,fr_text_pointer
|
||||
mov edi,fr_font_backgr_color
|
||||
mcall 4
|
||||
pop edi
|
||||
;----------------------------------------------------------------------
|
||||
align 4
|
||||
.exit:
|
||||
|
Loading…
Reference in New Issue
Block a user