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:
Kirill Lipatov (Leency) 2021-12-21 21:38:18 +00:00
parent bcdd96a753
commit 532075fe18
6 changed files with 166 additions and 179 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -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

View File

@ -1,123 +1,123 @@
#0 **** MAIN #0 **** MAIN
58 Welcome |welcome.htm 58 Welcome |welcome.htm
00 2D Demos > |@1 00 2D Demos > |@1
00 3D Demos > |@2 00 3D Demos > |@2
00 Graphics > |@3 00 Graphics > |@3
00 Multimedia > |@4 00 Multimedia > |@4
00 Development > |@5 00 Development > |@5
00 System > |@7 00 System > |@7
00 Data processing > |@10 00 Data processing > |@10
00 Network > |@11 00 Network > |@11
00 Other > |@14 00 Other > |@14
23 Game Center |allgames 23 Game Center |allgames
60 System panel |syspanel 60 System panel |syspanel
18 Documentation |docpack 18 Documentation |docpack
53 Run |run 53 Run |run
04 Shut down |end 04 Shut down |end
#1 **** DEMOS #1 **** DEMOS
16 Fractal |demos/tinyfrac 16 Fractal |demos/tinyfrac
16 Eyes |demos/eyes 16 Eyes |demos/eyes
16 Tube |demos/tube 16 Tube |demos/tube
16 Plasma |demos/plasma 16 Plasma |demos/plasma
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
38 Animage |media/animage 38 Animage |media/animage
38 IconEdit |media/iconedit 38 IconEdit |media/iconedit
40 Image Filtering |media/imgf/imgf 40 Image Filtering |media/imgf/imgf
52 Palitra |media/palitra 52 Palitra |media/palitra
39 Pipet |develop/pipet 39 Pipet |develop/pipet
#4 **** MULTIMEDIA #4 **** MULTIMEDIA
53 Pixie Audio |media/pixie 53 Pixie Audio |media/pixie
07 MidAMP |media/midamp 07 MidAMP |media/midamp
22 Toy piano |media/piano 22 Toy piano |media/piano
11 Fplay Video * |/kolibrios/media/fplay 11 Fplay Video * |/kolibrios/media/fplay
#5 **** DEV #5 **** DEV
54 Flat Assembler |develop/fasm 54 Flat Assembler |develop/fasm
03 Example.asm |example.asm 03 Example.asm |example.asm
49 Debugger |develop/mtdbg 49 Debugger |develop/mtdbg
13 Debug Board |develop/board 13 Debug Board |develop/board
09 KPack Archiver |kpack 09 KPack Archiver |kpack
20 Diff Tool |develop/diff 20 Diff Tool |develop/diff
34 Base Converter |develop/h2d2b 34 Base Converter |develop/h2d2b
59 Character table |develop/ASCIIVju 59 Character table |develop/ASCIIVju
59 Key ASCII-codes |develop/keyascii 59 Key ASCII-codes |develop/keyascii
59 Key SCAN-codes |develop/scancode 59 Key SCAN-codes |develop/scancode
#6 **** EMUL #6 **** EMUL
24 DOSBox * |/kolibrios/emul/DosBox/dosbox 24 DOSBox * |/kolibrios/emul/DosBox/dosbox
16 e80 (ZX Spectrum) * |/kolibrios/emul/e80/e80 16 e80 (ZX Spectrum) * |/kolibrios/emul/e80/e80
23 Gameboy Color * |/kolibrios/emul/gameboy 23 Gameboy Color * |/kolibrios/emul/gameboy
23 FCE Ultra (NES) * |/kolibrios/emul/fceu/fceu 23 FCE Ultra (NES) * |/kolibrios/emul/fceu/fceu
23 ZSNES * |/kolibrios/emul/zsnes/zsnes 23 ZSNES * |/kolibrios/emul/zsnes/zsnes
16 ScummVM * |/kolibrios/emul/scummvm 16 ScummVM * |/kolibrios/emul/scummvm
#7 **** SYSTEM #7 **** SYSTEM
00 File Managers > |@8 00 File Managers > |@8
00 Accessibility > |@9 00 Accessibility > |@9
59 Hotkeys |mykey 59 Hotkeys |mykey
56 Clipboard viewer |develop/clipview 56 Clipboard viewer |develop/clipview
62 Calendar |calendar 62 Calendar |calendar
33 Online update * |/kolibrios/utils/osupdate 33 Online update * |/kolibrios/utils/osupdate
48 Process manager |cpu 48 Process manager |cpu
24 Terminal |terminal 24 Terminal |terminal
05 Save ramdisk |rdsave 05 Save ramdisk |rdsave
24 Shell |shell 24 Shell |shell
51 Virtual disks |tmpdisk 51 Virtual disks |tmpdisk
#8 **** FM #8 **** FM
50 Eolite |File Managers/Eolite 50 Eolite |File Managers/Eolite
05 KFM2 |File Managers/kfm2 05 KFM2 |File Managers/kfm2
20 fNav |File Managers/fNav/fNav 20 fNav |File Managers/fNav/fNav
64 KFAR |File Managers/kfar 64 KFAR |File Managers/kfar
65 NDN * |/kolibrios/utils/ndn/ndn 65 NDN * |/kolibrios/utils/ndn/ndn
#9 **** ACCESSIBILITY #9 **** ACCESSIBILITY
49 Screen magnifier |magnify 49 Screen magnifier |magnify
59 Screen keyboard |zkey 59 Screen keyboard |zkey
#10 **** DATA PROCESSING #10 **** DATA PROCESSING
16 Calculator |calc 16 Calculator |calc
03 Tinypad |tinypad 03 Tinypad |tinypad
28 CodeEdit |develop/cedit 28 CodeEdit |develop/cedit
21 Table processor |table 21 Table processor |table
47 Graph builder |graph 47 Graph builder |graph
16 Hex editor |develop/heed 16 Hex editor |develop/heed
09 Unarchiver Unz |unz 09 Unarchiver Unz |unz
#11 **** NETWORK #11 **** NETWORK
00 Clients > |@12 00 Clients > |@12
00 Servers > |@13 00 Servers > |@13
25 Network devices |network/netcfg 25 Network devices |network/netcfg
16 Network status |network/netstat 16 Network status |network/netstat
#12 **** CLIENTS #12 **** CLIENTS
13 IRC |network/ircc 13 IRC |network/ircc
20 FTP |network/ftpc 20 FTP |network/ftpc
20 TFTP |network/tftpc 20 TFTP |network/tftpc
24 Ping |network/ping 24 Ping |network/ping
24 Telnet |network/telnet 24 Telnet |network/telnet
24 Synergy |network/synergyc 24 Synergy |network/synergyc
24 DNS lookup |network/nslookup 24 DNS lookup |network/nslookup
61 VNC Viewer |network/vncc 61 VNC Viewer |network/vncc
33 Downloader |network/downloader 33 Downloader |network/downloader
12 Text-based browser |network/webview 12 Text-based browser |network/webview
#13 **** SERVERS #13 **** SERVERS
24 FTP |network/ftpd 24 FTP |network/ftpd
#14 **** OTHER #14 **** OTHER
00 Emulators* > |@6 00 Emulators* > |@6
16 Analog clock |aclock 16 Analog clock |aclock
16 Binary clock |demos/bcdclk 16 Binary clock |demos/bcdclk
29 FB2 Reader |fb2read 29 FB2 Reader |fb2read
53 Timer |timer 53 Timer |timer
45 Screenshooter |scrshoot 45 Screenshooter |scrshoot
45 Easyshot |easyshot 45 Easyshot |easyshot
03 RTF reader |rtfread 03 RTF reader |rtfread
## ##

View File

@ -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

View File

@ -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:

View File

@ -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: