all skinned demos now use 0 function to draw header, most of them use client relative drawing

git-svn-id: svn://kolibrios.org@316 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
heavyiron 2007-02-04 00:42:14 +00:00
parent 71974025fe
commit f2647d013c
12 changed files with 92 additions and 221 deletions

View File

@ -49,7 +49,7 @@ still:
; cmp eax,3 ; button in buffer ? ; cmp eax,3 ; button in buffer ?
jz button jz button
fps 280,8,cl_White,cl_Black fps 230,8,cl_White,cl_Black
main_loop: main_loop:
@ -104,14 +104,8 @@ draw_window:
mov eax,0 ;Draw window mov eax,0 ;Draw window
mov ebx,100*65536+(SCREEN_X+9) ;x start*65536+x size mov ebx,100*65536+(SCREEN_X+9) ;x start*65536+x size
mov ecx,100*65536+(SCREEN_Y+26) ;y start*65536+y size mov ecx,100*65536+(SCREEN_Y+26) ;y start*65536+y size
mov edx,0x03000000 ;0x03 use skinned window mov edx,0x13000000 ;0x03 use skinned window
int 0x40 mov edi,header
mov eax,4 ;Out Text
mov ebx,8*65536+8 ;x start*65536+y start
mov ecx,0x00ffffff ;color White
mov edx,head_label
mov esi,hl_end-head_label
int 0x40 int 0x40
mov eax,12 ;End mov eax,12 ;End
@ -119,9 +113,7 @@ draw_window:
int 0x40 int 0x40
ret ret
head_label: db "3D TEST SAMPLE FOR MENUETOS" header db '3D TEST SAMPLE FOR MENUETOS',0
hl_end:
; Draw faces procedure ; Draw faces procedure

View File

@ -13,8 +13,8 @@ use32
dd 0x01 dd 0x01
dd START dd START
dd I_END dd I_END
dd 0x100000 dd 0x1000
dd 0x7fff0 dd 0x1000
dd 0x0 , 0x0 dd 0x0 , 0x0
include "lang.inc" include "lang.inc"
@ -22,7 +22,7 @@ include "macros.inc"
START: START:
red:
call drawwindow call drawwindow
still: still:
@ -41,18 +41,14 @@ still:
call drawclock call drawclock
jmp still jmp still
red: ; redraw
call drawwindow
jmp still
button: button:
mov eax,17 ; get id mov al,17 ; get id
int 0x40 int 0x40
cmp ah,1 ; button id=1 ? cmp ah,1 ; button id=1 ?
jne noclose jne noclose
mov eax,-1 ; close this program or eax,-1 ; close this program
int 0x40 int 0x40
noclose: noclose:
@ -77,7 +73,7 @@ dgtomem:
mov ebx,74*65536+10 mov ebx,74*65536+10
mov edi,dg1 mov edi,dg1
digitlp: digitlp:
mov ecx,30*65536+10 mov ecx,10*65536+10
xor esi,esi xor esi,esi
plotlp: plotlp:
xor edx,edx xor edx,edx
@ -122,36 +118,21 @@ drawwindow:
mov ebx,1 ; start redraw mov ebx,1 ; start redraw
int 0x40 int 0x40
mov eax,0 ; window xor eax,eax ; window
mov ebx,100*65536+100 mov ebx,100*65536+107
mov ecx,100*65536+100 mov ecx,100*65536+105
mov edx,0x83400088 mov edx,0x33400088
mov esi,0x805080d0 mov edi,header
mov edi,0x000000ff
int 0x40 int 0x40
call drawclock call drawclock
mov eax,4 ; text
mov ebx,8*65536+8
mov ecx,0x10ddeeff
mov edx,title
mov esi,titlend-title
int 0x40
mov eax,12 mov eax,12
mov ebx,2 ; end redraw mov ebx,2 ; end redraw
int 0x40 int 0x40
ret ret
header db 'BCD Clock',0
I_END:
title: dg1: db ?
db 'BCD Clock'
titlend:
dg1: db ?
I_END:

View File

@ -64,7 +64,7 @@ use32
dd START dd START
dd I_END dd I_END
dd 0x100000 dd 0x100000
dd 0x0cfff0 dd 0x100000
dd 0x0 dd 0x0
not1strun dd 0x0 not1strun dd 0x0
@ -223,12 +223,19 @@ key:
jmp still jmp still
draw_window: draw_window:
mov eax,48
mov ebx,3
mov ecx,sc
mov edx,sizeof.system_colors
int 0x40
mov eax,12 mov eax,12
mov ebx,1 mov ebx,1
int 0x40 int 0x40
xor eax,eax xor eax,eax
mov ebx,10*65536+_X*2 mov ebx,10*65536+_X*2+30
mov ecx,100*65536+_Y*2 mov ecx,100*65536+_Y*2
mov edx,0x03261212 mov edx,0x03261212
mov esi,0x805080d0 mov esi,0x805080d0
@ -237,7 +244,8 @@ draw_window:
mov eax,4 mov eax,4
mov ebx,8*65536+8 mov ebx,8*65536+8
mov ecx,0x10ddeeff mov ecx,[sc.grab_text]
or ecx,0x10000000
mov edx,title mov edx,title
mov esi,title_end-title mov esi,title_end-title
cmp [help],2 cmp [help],2
@ -439,5 +447,5 @@ freetest BGIfree ?,?,?,?,?,?,?,?,?
help db ? help db ?
pinfo: pinfo:
times 1024 db ? times 1024 db ?
rb 10000 ; reserve, unless process info will corrupt our fonts (why?) sc system_colors
I_END: I_END:

View File

@ -148,15 +148,8 @@ draw_window:
mov eax,0 ; DRAW WINDOW mov eax,0 ; DRAW WINDOW
mov ebx,1*65536+200 ; [x start] *65536 + [x size] mov ebx,1*65536+200 ; [x start] *65536 + [x size]
mov ecx,200*65536+240 ; [y start] *65536 + [y size] mov ecx,200*65536+240 ; [y start] *65536 + [y size]
mov edx,0x03000000 ; work area color (type II) mov edx,0x13000000 ; work area color (type II)
mov esi,0x82a0a0a0 ; grab bar color (w/glide) mov edi,header ; frame color
mov edi,0x82bbbbbb ; frame color
int 0x40
mov eax,4 ; WINDOW LABEL
mov ebx,8*65536+8 ; [x start] *65536 + [y start]
mov ecx,0xeeeeee ; color of text (white)
mov edx,prog_name ; pointer to header
mov esi,namelen-prog_name ; text length
int 0x40 int 0x40
call palette ; display color palette call palette ; display color palette
@ -325,9 +318,7 @@ h2: mov ebx,4*65536+192 ; y and width
; ********** DATA DEFINITIONS AREA *********** ; ********** DATA DEFINITIONS AREA ***********
; ********************************************* ; *********************************************
prog_name: header db 'COLOR REFERENCE H>HELP',0
db 'COLOR REFERENCE H>HELP'
namelen:
picks: picks:
dd 31,2 ; selected top/bot colors dd 31,2 ; selected top/bot colors

View File

@ -79,16 +79,8 @@ draw_window:
mov eax,0 ; function 0 : define and draw window mov eax,0 ; function 0 : define and draw window
mov ebx,100*65536+200 ; [x start] *65536 + [x size] mov ebx,100*65536+200 ; [x start] *65536 + [x size]
mov ecx,100*65536+200 ; [y start] *65536 + [y size] mov ecx,100*65536+200 ; [y start] *65536 + [y size]
mov edx,0x03ffffff ; color of work area RRGGBB,8->color gl mov edx,0x13ffffff ; color of work area RRGGBB,8->color gl
mov esi,0x806688cc mov edi,header ; WINDOW LABEL
mov edi,0x006688cc
int 0x40
; WINDOW LABEL
mov eax,4 ; function 4 : write text to window
mov ebx,8*65536+8 ; [x start] *65536 + [y start]
mov ecx,0x00ddeeff ; color of text RRGGBB
mov edx,labelt ; pointer to text beginning
mov esi,labellen-labelt ; text length
int 0x40 int 0x40
call draw_slider_info call draw_slider_info
@ -382,10 +374,5 @@ ret
;************************************************** ;**************************************************
; DATA AREA ; DATA AREA
labelt: db 'Color Slider' header db 'Color Slider',0
labellen: I_END:
I_END:

View File

@ -9,6 +9,8 @@
; Willow - greatly srinked code size by using GIF texture and FPU to calculate sine table ; Willow - greatly srinked code size by using GIF texture and FPU to calculate sine table
; ;
; !!!! Don't use GIF.INC in your apps - it's modified for FREE3D !!!! ; !!!! Don't use GIF.INC in your apps - it's modified for FREE3D !!!!
;
; Heavyiron - new 0-function of drawing window from kolibri (do not work correctly with menuet)
TEX_SIZE equ 64*64*4 TEX_SIZE equ 64*64*4
ceil = sinus+16*1024 ceil = sinus+16*1024
@ -29,8 +31,8 @@ use32
dd 0x01 ; header version dd 0x01 ; header version
dd START ; start of code dd START ; start of code
dd I_END ; size of image dd I_END ; size of image
dd APP_MEM;0x300000 ; memory for app dd APP_MEM;0x100000 ; memory for app
dd APP_MEM;0x300000 ; esp dd APP_MEM;0x100000 ; esp
dd 0x0 , 0x0 ; I_Param , I_Icon dd 0x0 , 0x0 ; I_Param , I_Icon
include 'lang.inc' include 'lang.inc'
include 'macros.inc' include 'macros.inc'
@ -307,28 +309,10 @@ draw_window:
mov eax,0 ; function 0 : define and draw window mov eax,0 ; function 0 : define and draw window
mov ebx,50*65536+649 ; [x start] *65536 + [x size] mov ebx,50*65536+649 ; [x start] *65536 + [x size]
mov ecx,50*65536+504 ; [y start] *65536 + [y size] mov ecx,50*65536+504 ; [y start] *65536 + [y size]
mov edx,0x02ffffff ; color of work area RRGGBB,8->color gl mov edx,0x33ffffff ; color of work area RRGGBB,8->color gl
mov esi,0x80777777 ; color of grab bar RRGGBB,8->color gl mov edi,header
mov edi,0x00777777 ; color of frames RRGGBB
int 0x40 int 0x40
; WINDOW LABEL
mov eax,4 ; function 4 : write text to window
mov ebx,8*65536+8 ; [x start] *65536 + [y start]
mov ecx,0x00ddeeff ; color of text RRGGBB
mov edx,labelt ; pointer to text beginning
mov esi,labellen-labelt ; text length
int 0x40
; CLOSE BUTTON
mov eax,8 ; function 8 : define and draw button
mov ebx,(649-19)*65536+12 ; [x start] *65536 + [x size]
mov ecx,5*65536+12 ; [y start] *65536 + [y size]
mov edx,1 ; button id
mov esi,0x777777 ; button color RRGGBB
int 0x40
mov eax,12 ; function 12:tell os about windowdraw mov eax,12 ; function 12:tell os about windowdraw
mov ebx,2 ; 2, end of draw mov ebx,2 ; 2, end of draw
int 0x40 int 0x40
@ -826,7 +810,7 @@ speedup:
mov eax,7 mov eax,7
mov ebx,0x80000 mov ebx,0x80000
mov ecx,640*65536+480 mov ecx,640*65536+480
mov edx,5*65536+20 xor edx,edx
int 0x40 int 0x40
ret ret
@ -1007,10 +991,8 @@ dd 0x0001FFFF ; initial player position * 0xFFFF
vpy: vpy:
dd 0x0001FFFF dd 0x0001FFFF
labelt: header db 'FISHEYE RAYCASTING ENGINE ETC. FREE3D',0
db 'FISHEYE RAYCASTING ENGINE ETC. FREE3D'
labellen:
sindegree dd 0.0 sindegree dd 0.0
sininc dd 0.0017453292519943295769236907684886 sininc dd 0.0017453292519943295769236907684886
sindiv dd 6553.5 sindiv dd 6553.5

View File

@ -38,7 +38,7 @@ CODE
mov eax,7 mov eax,7
mov ebx,virtual_screen_32 mov ebx,virtual_screen_32
mov ecx,(WND_SIZE_X shl 16)+WND_SIZE_Y mov ecx,(WND_SIZE_X shl 16)+WND_SIZE_Y
mov edx,(5 shl 16)+23 xor edx,edx
int 0x40 int 0x40
jmp .event_loop jmp .event_loop
@ -50,20 +50,14 @@ CODE
xor eax,eax xor eax,eax
mov ebx,(100 shl 16)+(WND_SIZE_X+9) mov ebx,(100 shl 16)+(WND_SIZE_X+9)
mov ecx,(100 shl 16)+(WND_SIZE_Y+28) mov ecx,(100 shl 16)+(WND_SIZE_Y+28)
mov edx,0x03000000 mov edx,0x33000000
mov edi,header
int 0x40 int 0x40
mov eax,7 mov eax,7
mov ebx,virtual_screen_32 mov ebx,virtual_screen_32
mov ecx,(WND_SIZE_X shl 16)+WND_SIZE_Y mov ecx,(WND_SIZE_X shl 16)+WND_SIZE_Y
mov edx,(5 shl 16)+23 xor edx,edx
int 0x40
mov eax,4
mov ebx,0x00060006
mov ecx,0x10ffffff
mov edx,window_title
mov esi,window_title_len
int 0x40 int 0x40
mov eax,12 mov eax,12
@ -166,9 +160,7 @@ DATA
delta_angle dd 0.0245436926066 ; pi/128 delta_angle dd 0.0245436926066 ; pi/128
scale_sin dd 128.0 scale_sin dd 128.0
window_title: header db 'MoveBack',0
db 'MoveBack'
window_title_len = $ - window_title
UDATA UDATA
ver_counter dd ? ver_counter dd ?

View File

@ -31,7 +31,7 @@ CODE
mov al,7 mov al,7
mov ebx,virtual_screen_32 mov ebx,virtual_screen_32
mov ecx,(WND_SIZE_X shl 16)+WND_SIZE_Y mov ecx,(WND_SIZE_X shl 16)+WND_SIZE_Y
mov edx,(4 shl 16)+24 xor edx,edx
int 0x40 int 0x40
call rotate_pal call rotate_pal
jmp .event_loop jmp .event_loop
@ -45,21 +45,15 @@ CODE
xor eax,eax xor eax,eax
mov ebx,(100 shl 16)+(WND_SIZE_X+8) mov ebx,(100 shl 16)+(WND_SIZE_X+8)
mov ecx,(100 shl 16)+(WND_SIZE_Y+28) mov ecx,(100 shl 16)+(WND_SIZE_Y+25)
mov edx,0x03000000 mov edx,0x33000000
mov edi,header
int 0x40 int 0x40
mov al,7 mov al,7
mov ebx,virtual_screen_32 mov ebx,virtual_screen_32
mov ecx,(WND_SIZE_X shl 16)+WND_SIZE_Y mov ecx,(WND_SIZE_X shl 16)+WND_SIZE_Y
mov edx,(4 shl 16)+24 xor edx,edx
int 0x40
mov al,4
mov ebx,0x00060006
mov ecx,0x10ffffff
mov edx,window_title
mov esi,window_title_len
int 0x40 int 0x40
pop eax pop eax
@ -167,9 +161,7 @@ include "graph8.inc"
DATA DATA
_multiplier dd 63.5 _multiplier dd 63.5
window_title: header db 'Plasma',0
db 'Plasma'
window_title_len = $ - window_title
UDATA UDATA
_fpom32 rd 1 _fpom32 rd 1

View File

@ -1,5 +1,5 @@
; ;
; TIMER ; TIMER (show how much system works)
; ;
; Compile with flat assembler ; Compile with flat assembler
; ;
@ -53,11 +53,6 @@ still:
; ********************************************* ; *********************************************
draw_clock: draw_clock:
mov eax, 13 ; clear area
mov ebx, 10*65536+55
mov ecx, 30*65536+10
mov edx, [sc.work]
int 0x40
mov eax, 26 ; get system counter mov eax, 26 ; get system counter
mov ebx, 9 mov ebx, 9
@ -84,9 +79,10 @@ draw_clock:
mov eax,47 ; HH mov eax,47 ; HH
mov esi,[sc.work_text] mov esi,[sc.work_text]
or esi,0x10000000 or esi,0x50000000
mov edi,[sc.work]
mov ebx,0x00020000 mov ebx,0x00020000
mov edx,10*65536+30 mov edx,15*65536+5
int 0x40 int 0x40
pop eax ; MM pop eax ; MM
@ -122,30 +118,12 @@ draw_window:
int 0x40 int 0x40
; DRAW WINDOW ; DRAW WINDOW
mov eax,0 ; function 0 : define and draw window xor eax,eax ; function 0 : define and draw window
mov ebx,100*65536+75 ; [x start] *65536 + [x size] mov ebx,100*65536+100 ; [x start] *65536 + [x size]
mov ecx,100*65536+45 ; [y start] *65536 + [y size] mov ecx,100*65536+40 ; [y start] *65536 + [y size]
mov edx,[sc.work] ; color of work area RRGGBB,8->color gl mov edx,[sc.work] ; color of work area RRGGBB,8->color gl
mov esi,[sc.grab] ; color of grab bar RRGGBB,8->color gl or edx,0x33000000
or esi,0x80000000 mov edi,header
mov edi,[sc.frame] ; color of frames RRGGBB
int 0x40
; WINDOW LABEL
mov eax,4 ; function 4 : write text to window
mov ebx,6*65536+7 ; [x start] *65536 + [y start]
mov ecx,[sc.grab_text] ; font 1 & color ( 0xF0RRGGBB )
or ecx,0x10000000
mov edx,header ; pointer to text beginning
mov esi,header.len ; text length
int 0x40
; CLOSE BUTTON
mov eax,8 ; function 8 : define and draw button
mov ebx,(75-16)*65536+12 ; [x start] *65536 + [x size]
mov ecx,4*65536+12 ; [y start] *65536 + [y size]
mov edx,1 ; button id
mov esi,[sc.grab_button] ; button color RRGGBB
int 0x40 int 0x40
call draw_clock call draw_clock
@ -160,13 +138,9 @@ draw_window:
; DATA AREA ; DATA AREA
if lang eq ru if lang eq ru
header: header db '€‰Œ…<C592>',0
db '€‰Œ…<C592>'
.len = $ - header
else else
header: header db 'TIMER',0
db 'TIMER'
.len = $ - header
end if end if

View File

@ -24,7 +24,9 @@ START: ; start of execution
mov [procinfo.x_size], 200 mov [procinfo.x_size], 200
mov [procinfo.y_start], 80 mov [procinfo.y_start], 80
mov [procinfo.y_size], 300 mov [procinfo.y_size], 300
call draw_window
red:
call get_transparent
call draw_window ; at first, draw the window call draw_window ; at first, draw the window
still: still:
@ -38,26 +40,20 @@ still:
je key je key
cmp eax,3 ; button in buffer ? cmp eax,3 ; button in buffer ?
je button je button
jmp still
red: ; redraw
call get_transparent
call draw_window
jmp still jmp still
key: ; key key: ; key
mov eax,2 ; just read it and ignore mov al,2 ; just read it and ignore
int 0x40 int 0x40
jmp still jmp still
button: ; button button: ; button
mov eax,17 ; get id mov al,17 ; get id
int 0x40 int 0x40
cmp ah,1 ; button id=1 ? cmp ah,1 ; button id=1 ?
jne noclose jne noclose
mov eax,-1 ; close this program or eax,-1 ; close this program
int 0x40 int 0x40
noclose: noclose:
@ -75,29 +71,19 @@ draw_window:
mov ebx,1 ; 1, start of draw mov ebx,1 ; 1, start of draw
int 0x40 int 0x40
; DRAW WINDOW ; DRAW WINDOW
mov eax,0 ; function 0 : define and draw window xor eax,eax ; function 0 : define and draw window
mov ebx,[procinfo.x_start] mov ebx,[procinfo.x_start]
shl ebx,16 shl ebx,16
add ebx,[procinfo.x_size] add ebx,[procinfo.x_size]
dec ebx
mov ecx,[procinfo.y_start] mov ecx,[procinfo.y_start]
shl ecx,16 shl ecx,16
add ecx,[procinfo.y_size] add ecx,[procinfo.y_size]
dec ecx mov edx,0x33000000 ; color of work area RRGGBB,8->color gl
mov edx,0x03000000 ; color of work area RRGGBB,8->color gl mov edi,header ; WINDOW LABEL
int 0x40 int 0x40
call draw_transparent call draw_transparent
; WINDOW LABEL
mov eax,4 ; function 4 : write text to window
mov ebx,8*65536+8 ; [x start] *65536 + [y start]
mov ecx,0x10ddeeff ; color of text RRGGBB
mov edx,labelt ; pointer to text beginning
mov esi,labellen-labelt ; text length
int 0x40
; call draw_transparent
mov eax,12 ; function 12:tell os about windowdraw mov eax,12 ; function 12:tell os about windowdraw
mov ebx,2 ; 2, end of draw mov ebx,2 ; 2, end of draw
int 0x40 int 0x40
@ -116,7 +102,7 @@ draw_transparent:
mov ecx,[procinfo.x_size] mov ecx,[procinfo.x_size]
shl ecx,16 shl ecx,16
add ecx,[procinfo.y_size] add ecx,[procinfo.y_size]
mov edx,4*65536+22 xor edx,edx
int 0x40 int 0x40
popa popa
@ -131,10 +117,6 @@ get_transparent:
mov ebx,I_END mov ebx,I_END
mov ecx,-1 mov ecx,-1
int 0x40 int 0x40
; mov eax,[I_END+34]
; mov [x_start],eax
; mov eax,[I_END+38]
; mov [y_start],eax
mov eax,14 mov eax,14
int 0x40 int 0x40
@ -168,8 +150,6 @@ get_transparent:
mov eax,35 mov eax,35
int 0x40 int 0x40
; shr eax,1
; and eax,0x7f7f7f
or eax, 0x4e4e4e or eax, 0x4e4e4e
mov ebx,[esp+4] mov ebx,[esp+4]
@ -213,9 +193,7 @@ y_end dd 0
scx dd 640 scx dd 640
labelt: header db 'Transparent',0
db 'EXAMPLE APPLICATION'
labellen:
I_END: I_END:
procinfo process_information procinfo process_information

View File

@ -87,7 +87,7 @@ draw_window:
xor eax,eax ;Draw window xor eax,eax ;Draw window
mov ebx,100*65536+(SCREEN_X+9) ;x start*65536+x size mov ebx,100*65536+(SCREEN_X+9) ;x start*65536+x size
mov ecx,100*65536+(SCREEN_Y+26) ;y start*65536+y size mov ecx,100*65536+(SCREEN_Y+26) ;y start*65536+y size
mov edx,0x13000000 ;0x33 use skinned window mov edx,0x13000000 ;0x13 use skinned window
mov edi,header mov edi,header
int 0x40 int 0x40

View File

@ -5,6 +5,8 @@
; Menuet port by VT ; Menuet port by VT
appname equ 'TUBE - FPU'
use32 use32
org 0x0 org 0x0
@ -13,7 +15,7 @@ use32
dd START dd START
dd I_END dd I_END
dd 0x40000 dd 0x40000
dd 0x3ff00 dd 0x40000
dd 0,0 dd 0,0
include 'macros.inc' include 'macros.inc'
@ -47,7 +49,7 @@ still:
cmp eax,0 cmp eax,0
je still je still
mov eax,-1 or eax,-1
int 0x40 int 0x40
@ -175,7 +177,7 @@ display_image:
mov eax,7 mov eax,7
mov ecx,320*65536+160 mov ecx,320*65536+160
mov edx,10*65536+27 xor edx,edx
mov ebx,0x10000 mov ebx,0x10000
int 0x40 int 0x40
@ -192,19 +194,11 @@ draw_window:
mov ebx,1 mov ebx,1
int 0x40 int 0x40
mov eax,0 xor eax,eax
mov ebx,100*65536+339 mov ebx,100*65536+329
mov ecx,100*65536+198 mov ecx,100*65536+186
mov edx,0x03225588 mov edx,0x33000000
mov esi,0x0 mov edi,header
mov esi,0x0
int 0x40
mov eax,4
mov ebx,8*65536+8
mov ecx,0xffffff
mov edx,labeltext
mov esi,19
int 0x40 int 0x40
mov eax,12 mov eax,12
@ -214,7 +208,7 @@ draw_window:
popa popa
ret ret
labeltext db 'TUBE.ASM - with FPU' header db appname,0
db 41,0,0xC3,0x3C db 41,0,0xC3,0x3C