forked from KolibriOS/kolibrios
View3DS: better key and scroll support
icons16.png: better icons 'run' and 'monitor/screensaver' some fixes git-svn-id: svn://kolibrios.org@9454 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
bcdd96a753
commit
532075fe18
Binary file not shown.
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
@ -17,7 +17,7 @@ PCI=on
|
|||||||
[screensaver]
|
[screensaver]
|
||||||
timeout=10 ;in minutes
|
timeout=10 ;in minutes
|
||||||
program=/sys/demos/spiral
|
program=/sys/demos/spiral
|
||||||
available=3d/crownscr;demos/web;demos/zeroline;demos/spiral
|
available=3d/crownscr|demos/web|demos/zeroline|demos/spiral
|
||||||
|
|
||||||
[style]
|
[style]
|
||||||
buttons_gradient=1
|
buttons_gradient=1
|
||||||
|
@ -22,17 +22,17 @@
|
|||||||
16 Spiral |demos/spiral
|
16 Spiral |demos/spiral
|
||||||
16 Moveback |demos/movback
|
16 Moveback |demos/movback
|
||||||
16 TranTest |demos/trantest
|
16 TranTest |demos/trantest
|
||||||
16 WEB |demos/web
|
16 Web |demos/web
|
||||||
16 FireWork |demos/firework
|
16 FireWork |demos/firework
|
||||||
16 UnvWater |demos/unvwater
|
16 UnvWater |demos/unvwater
|
||||||
#2 **** 3D
|
#2 **** 3D
|
||||||
15 ScreenSaver |3d/crownscr
|
15 Crown Screensaver |3d/crownscr
|
||||||
15 3D-labyrinth |3d/free3d04
|
15 Labyrinth |3d/free3d04
|
||||||
15 3D-cube |3d/3dcube2
|
15 Cube |3d/3dcube2
|
||||||
15 Ray tracing |3d/ray
|
15 Ray tracing |3d/ray
|
||||||
15 View3DS |3d/view3ds
|
15 View3DS |3d/view3ds
|
||||||
15 Gears |3d/gears
|
15 Gears |3d/gears
|
||||||
15 3D-waved area |3d/3dwav
|
15 Waved area |3d/3dwav
|
||||||
#3 **** GRAPHICS
|
#3 **** GRAPHICS
|
||||||
06 Kolibri Image Viewer |media/kiv
|
06 Kolibri Image Viewer |media/kiv
|
||||||
06 zSea Image Viewer * |/kolibrios/media/zsea/zsea
|
06 zSea Image Viewer * |/kolibrios/media/zsea/zsea
|
||||||
|
@ -173,12 +173,12 @@ struct libimg_image
|
|||||||
:void libimg_image::convert_into(dword _to)
|
:void libimg_image::convert_into(dword _to)
|
||||||
{
|
{
|
||||||
img_convert stdcall(image, 0, _to, 0, 0);
|
img_convert stdcall(image, 0, _to, 0, 0);
|
||||||
$push eax
|
|
||||||
img_destroy stdcall(image);
|
|
||||||
$pop eax
|
|
||||||
if (!EAX) {
|
if (!EAX) {
|
||||||
notify("'LibImg convertation error!'E");
|
notify("'LibImg convertation error!'E");
|
||||||
} else {
|
} else {
|
||||||
|
$push eax
|
||||||
|
img_destroy stdcall(image);
|
||||||
|
$pop eax
|
||||||
image = EAX;
|
image = EAX;
|
||||||
set_vars();
|
set_vars();
|
||||||
}
|
}
|
||||||
@ -230,52 +230,4 @@ struct libimg_image
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////
|
|
||||||
/*
|
|
||||||
// DRAW ICON PATTERN / TEMP
|
|
||||||
*/
|
|
||||||
/////////////////////////////
|
|
||||||
|
|
||||||
:void DrawIcon32(dword x,y, _bg, icon_n) {
|
|
||||||
static dword bg;
|
|
||||||
static dword pure_img32;
|
|
||||||
if (!pure_img32) || (bg!=_bg) {
|
|
||||||
bg = _bg;
|
|
||||||
if (pure_img32) img_destroy stdcall(pure_img32);
|
|
||||||
img_from_file stdcall("/sys/icons32.png");
|
|
||||||
pure_img32 = EAX;
|
|
||||||
//now fill transparent with another color
|
|
||||||
EDX = ESDWORD[EAX+4] * ESDWORD[EAX+8] * 4 + ESDWORD[EAX+24];
|
|
||||||
for (ESI = ESDWORD[EAX+24]; ESI < EDX; ESI += 4) {
|
|
||||||
if (DSDWORD[ESI]==0x00000000) DSDWORD[ESI] = bg;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
img_draw stdcall(pure_img32, x, y, 32, 32, 0, icon_n*32);
|
|
||||||
}
|
|
||||||
|
|
||||||
:int DrawIcon16(dword x,y, _bg, icon_n) {
|
|
||||||
static dword bg;
|
|
||||||
static dword pure_img16;
|
|
||||||
dword bgshadow;
|
|
||||||
int size;
|
|
||||||
if (!pure_img16) || (bg!=_bg) {
|
|
||||||
bg = _bg;
|
|
||||||
bgshadow = MixColors(bg, 0, 220);
|
|
||||||
if (pure_img16) img_destroy stdcall(pure_img16);
|
|
||||||
img_from_file stdcall("/sys/icons16.png");
|
|
||||||
pure_img16 = EAX;
|
|
||||||
//now fill transparent with another color
|
|
||||||
EDX = ESDWORD[EAX+4] * ESDWORD[EAX+8] * 4 + ESDWORD[EAX+24];
|
|
||||||
for (ESI = ESDWORD[EAX+24]; ESI < EDX; ESI += 4) {
|
|
||||||
if (DSDWORD[ESI]==0xffFFFfff) DSDWORD[ESI] = bg;
|
|
||||||
if (DSDWORD[ESI]==0xffCACBD6) DSDWORD[ESI] = bgshadow;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
size = ESDWORD[pure_img16+4]; //get image width
|
|
||||||
img_draw stdcall(pure_img16, x, y, size, size, 0, icon_n*size);
|
|
||||||
return size;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
#endif
|
@ -80,7 +80,7 @@
|
|||||||
menu:
|
menu:
|
||||||
db 2 ; button number = index
|
db 2 ; button number = index
|
||||||
db 'rotary ' ; label
|
db 'rotary ' ; label
|
||||||
db 3 ; max flag + 1 , if = 255, no flag
|
db 4 ; max flag + 1 , if = 255, no flag
|
||||||
r_flag db 1 ; flag
|
r_flag db 1 ; flag
|
||||||
dd axl_f ; offset to flags description
|
dd axl_f ; offset to flags description
|
||||||
|
|
||||||
@ -289,6 +289,7 @@ flags: ; flags description
|
|||||||
db ' y '
|
db ' y '
|
||||||
db 'x+y '
|
db 'x+y '
|
||||||
db ' x '
|
db ' x '
|
||||||
|
db 'keys'
|
||||||
onoff_f:
|
onoff_f:
|
||||||
db 'off '
|
db 'off '
|
||||||
db 'on '
|
db 'on '
|
||||||
@ -353,7 +354,7 @@ base_vector:
|
|||||||
if Ext=SSE3
|
if Ext=SSE3
|
||||||
db ' (SSE3)'
|
db ' (SSE3)'
|
||||||
end if
|
end if
|
||||||
db ' 0.074',0
|
db ' 0.075',0
|
||||||
labellen:
|
labellen:
|
||||||
STRdata db '-1 '
|
STRdata db '-1 '
|
||||||
lab_vert:
|
lab_vert:
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
; application : View3ds ver. 0.074 - tiny .3ds and .asc files viewer
|
; application : View3ds ver. 0.075 - tiny .3ds and .asc files viewer
|
||||||
; with a few graphics effects demonstration.
|
; with a few graphics effects demonstration.
|
||||||
; compiler : FASM
|
; compiler : FASM
|
||||||
; system : KolibriOS
|
; system : KolibriOS
|
||||||
@ -18,6 +18,7 @@
|
|||||||
; 1) Read from a file (*.3DS standard)
|
; 1) Read from a file (*.3DS standard)
|
||||||
; 2) Written in manually (at the end of the code) ; now not exist
|
; 2) Written in manually (at the end of the code) ; now not exist
|
||||||
|
|
||||||
|
format binary as ""
|
||||||
|
|
||||||
SIZE_X equ 512
|
SIZE_X equ 512
|
||||||
SIZE_Y equ 512 ; ///// I want definitely
|
SIZE_Y equ 512 ; ///// I want definitely
|
||||||
@ -163,11 +164,8 @@ still:
|
|||||||
je key
|
je key
|
||||||
cmp eax,3 ; button event ?
|
cmp eax,3 ; button event ?
|
||||||
je button
|
je button
|
||||||
cmp eax,6 ; mouse event ?
|
|
||||||
jne @f
|
|
||||||
cmp [edit_flag],1 ; handle mouse only when edit is active
|
|
||||||
jne @f
|
|
||||||
|
|
||||||
|
mov esi,eax
|
||||||
mov eax,37
|
mov eax,37
|
||||||
mov ebx,7 ; get mouse scroll
|
mov ebx,7 ; get mouse scroll
|
||||||
int 0x40
|
int 0x40
|
||||||
@ -176,7 +174,12 @@ still:
|
|||||||
je button.zoom_in
|
je button.zoom_in
|
||||||
cmp eax, 1
|
cmp eax, 1
|
||||||
je button.zoom_out
|
je button.zoom_out
|
||||||
|
mov eax,esi
|
||||||
|
|
||||||
|
cmp eax,6 ; mouse event ?
|
||||||
|
jne @f
|
||||||
|
cmp [edit_flag],1 ; handle mouse only when edit is active
|
||||||
|
jne @f
|
||||||
mov eax,37
|
mov eax,37
|
||||||
mov ebx,3 ;read mouse state
|
mov ebx,3 ;read mouse state
|
||||||
int 0x40
|
int 0x40
|
||||||
@ -214,24 +217,54 @@ still:
|
|||||||
key: ; key
|
key: ; key
|
||||||
mov eax,2 ; just read it and ignore
|
mov eax,2 ; just read it and ignore
|
||||||
int 0x40
|
int 0x40
|
||||||
|
shr eax,16 ; use scancodes (al)
|
||||||
|
|
||||||
cmp ah, '+'
|
cmp al, 013 ;+
|
||||||
je button.zoom_in
|
je button.zoom_in
|
||||||
cmp ah, '='
|
cmp al, 012 ;-
|
||||||
je button.zoom_in
|
|
||||||
cmp ah, '-'
|
|
||||||
je button.zoom_out
|
je button.zoom_out
|
||||||
cmp ah, 176 ;left
|
cmp al, 075 ;left
|
||||||
je add_vec_buttons.x_minus
|
je add_vec_buttons.x_minus
|
||||||
cmp ah, 179 ;right
|
cmp al, 077 ;right
|
||||||
je add_vec_buttons.x_plus
|
je add_vec_buttons.x_plus
|
||||||
cmp ah, 178 ;up
|
cmp al, 072 ;up
|
||||||
je add_vec_buttons.y_minus
|
je add_vec_buttons.y_minus
|
||||||
cmp ah, 177 ;down
|
cmp al, 080 ;down
|
||||||
je add_vec_buttons.y_plus
|
je add_vec_buttons.y_plus
|
||||||
|
cmp al, 073 ;page up
|
||||||
|
je .rot_inc_y
|
||||||
|
cmp al, 081 ;page down
|
||||||
|
je .rot_dec_y
|
||||||
|
cmp al, 051 ;<
|
||||||
|
je .rot_dec_x
|
||||||
|
cmp al, 052 ;>
|
||||||
|
je .rot_inc_x
|
||||||
|
cmp al, 057 ;space
|
||||||
|
je .rot_z
|
||||||
|
|
||||||
jmp noclose
|
jmp noclose
|
||||||
|
|
||||||
|
.rot_inc_x:
|
||||||
|
inc [angle_x]
|
||||||
|
and [angle_x],0xff
|
||||||
|
jmp noclose.end_rot
|
||||||
|
.rot_dec_x:
|
||||||
|
dec [angle_x]
|
||||||
|
and [angle_x],0xff
|
||||||
|
jmp noclose.end_rot
|
||||||
|
.rot_inc_y:
|
||||||
|
inc [angle_y]
|
||||||
|
and [angle_y],0xff
|
||||||
|
jmp noclose.end_rot
|
||||||
|
.rot_dec_y:
|
||||||
|
dec [angle_y]
|
||||||
|
and [angle_y],0xff
|
||||||
|
jmp noclose.end_rot
|
||||||
|
.rot_z:
|
||||||
|
inc [angle_z]
|
||||||
|
and [angle_z],0xff
|
||||||
|
jmp noclose.end_rot
|
||||||
|
|
||||||
button: ; button
|
button: ; button
|
||||||
mov eax,17 ; get id
|
mov eax,17 ; get id
|
||||||
int 0x40
|
int 0x40
|
||||||
@ -303,6 +336,7 @@ still:
|
|||||||
.next_m4:
|
.next_m4:
|
||||||
cmp ah,14
|
cmp ah,14
|
||||||
jne @f
|
jne @f
|
||||||
|
.xchg:
|
||||||
call exchange
|
call exchange
|
||||||
@@:
|
@@:
|
||||||
cmp ah,15
|
cmp ah,15
|
||||||
@ -486,7 +520,7 @@ still:
|
|||||||
jne .no_x
|
jne .no_x
|
||||||
inc [angle_x]
|
inc [angle_x]
|
||||||
and [angle_x],0xff
|
and [angle_x],0xff
|
||||||
mov [angle_z],0
|
;mov [angle_z],0
|
||||||
jmp .end_rot
|
jmp .end_rot
|
||||||
|
|
||||||
.no_x:
|
.no_x:
|
||||||
@ -494,7 +528,7 @@ still:
|
|||||||
jne .no_y
|
jne .no_y
|
||||||
inc [angle_y]
|
inc [angle_y]
|
||||||
and [angle_y],0xff
|
and [angle_y],0xff
|
||||||
mov [angle_z],0
|
;mov [angle_z],0
|
||||||
jmp .end_rot
|
jmp .end_rot
|
||||||
|
|
||||||
.no_y:
|
.no_y:
|
||||||
@ -503,7 +537,7 @@ still:
|
|||||||
mov cx,[angle_x]
|
mov cx,[angle_x]
|
||||||
inc cx
|
inc cx
|
||||||
and cx,0xff
|
and cx,0xff
|
||||||
mov [angle_z],0
|
;mov [angle_z],0
|
||||||
mov [angle_y],cx
|
mov [angle_y],cx
|
||||||
mov [angle_x],cx
|
mov [angle_x],cx
|
||||||
.end_rot:
|
.end_rot:
|
||||||
|
Loading…
Reference in New Issue
Block a user