Subversion Repositories Kolibri OS

Rev

Rev 8288 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1158 Lrz 1
; Copyright (c) 2009, 
2
; All rights reserved.
3
;
4
; Redistribution and use in source and binary forms, with or without
5
; modification, are permitted provided that the following conditions are met:
6
;       * Redistributions of source code must retain the above copyright
7
;       notice, this list of conditions and the following disclaimer.
8
;       * Redistributions in binary form must reproduce the above copyright
9
;       notice, this list of conditions and the following disclaimer in the
10
;       documentation and/or other materials provided with the distribution.
11
;       * Neither the name of the  nor the
12
;       names of its contributors may be used to endorse or promote products
13
;       derived from this software without specific prior written permission.
14
;
15
; THIS SOFTWARE IS PROVIDED BY Alexey Teplov nickname  ''AS IS'' AND ANY
16
; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
17
; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18
; DISCLAIMED. IN NO EVENT SHALL  BE LIABLE FOR ANY
19
; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20
; (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21
; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
22
; ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23
; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
24
; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25
;*****************************************************************************
26
 
27
;заголовок приложения
1373 IgorA 28
use32		     ; транслятор, использующий 32 разрядных команды
29
    org 0x0		   ; базовый адрес кода, всегда 0x0
30
    db 'MENUET01'	 ; идентификатор исполняемого файла (8 байт)
31
    dd 0x1		  ; версия формата заголовка исполняемого файла
32
    dd start		    ; адрес, на который система передаёт управление
33
			; после загрузки приложения в память
34
    dd mem		  ; размер приложения
35
    dd mem		    ; Объем используемой памяти, для стека отведем 0х100 байт и выровним на грницу 4 байта
36
    dd mem		    ; расположим позицию стека в области памяти, сразу за телом программы. Вершина стека в диапазоне памяти, указанном выше
37
    dd 0x0		; указатель на строку с параметрами.
1158 Lrz 38
    dd way_of_ini
39
include '../../../../macros.inc'
8288 IgorA 40
include '../../../../KOSfuncs.inc'
41
include '../../../../load_lib.mac'
1373 IgorA 42
include '../../box_lib/trunk/box_lib.mac'
43
	@use_library	;use load lib macros
1158 Lrz 44
start:
45
;universal load library/librarys
46
sys_load_libraries l_libs_start,end_l_libs
47
;if return code =-1 then exit, else nornary work
1373 IgorA 48
	cmp	eax,-1
49
	jz	exit
50
	mcall	40,0x27 	;установить маску для ожидаемых событий
1158 Lrz 51
 
1373 IgorA 52
	mov  eax,48
53
	mov  ebx,3
54
	mov  ecx,sc
55
	mov  edx,sizeof.system_colors
56
	mcall
57
	mov  eax,dword [sc.work]
58
	mov  dword [con_colors+4],eax
1158 Lrz 59
 
60
;       mcall   66,1,0
1373 IgorA 61
       call [initialization_font]	; инициализация списка шрифтов
62
       push dword (8 shl 16 +16)	; поиск нужного шрифта в наборе шрифтов (пока доступен только 8х16)
1158 Lrz 63
       call [get_font]
1373 IgorA 64
	test	eax,eax 		;нашли ?
65
	jnz	exit
1158 Lrz 66
;;;;;;;;;;;;;;;;;;;;
1373 IgorA 67
	mcall	40,0x27 	;установить маску для ожидаемых событий
1158 Lrz 68
red_win:
1373 IgorA 69
    call draw_window		;первоначально необходимо нарисовать окно
1158 Lrz 70
align 4
1373 IgorA 71
still:				;основной обработчик
72
	mcall	10		;Ожидать события
73
	dec  eax
74
	jz   red_win
75
	dec  eax
76
	jz   key
77
	dec  eax
78
	jz   button
1158 Lrz 79
 
1373 IgorA 80
	push	dword edit1
81
	call	[edit_box_mouse]
1158 Lrz 82
 
1373 IgorA 83
	jmp still    ;если ничего из перечисленного то снова в цикл
1158 Lrz 84
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
85
button:
1373 IgorA 86
	mcall	17	;получить идентификатор нажатой клавиши
87
	test ah,ah	;если в ah 0, то перейти на обработчик событий still
88
	jz  still
89
exit:
90
	call	[free_fulder_info]
91
	call	[free_font]
92
	mcall	-1
1158 Lrz 93
key:
1373 IgorA 94
	mcall	2	;загрузим значение 2 в регистор eax и получим код нажатой клавиши
1158 Lrz 95
 
1373 IgorA 96
	push	dword edit1
97
	call	[edit_box_key]
1158 Lrz 98
 
99
 
1373 IgorA 100
	mcall	13,<20,650>,<40,16>, dword[con_colors+4]
1158 Lrz 101
 
102
 
1373 IgorA 103
	push	dword 20 shl 16 + 40	; esp+12= dd x shl 16 + y x- координата по Х, y - координата по Y
104
	push	dword con_colors	; esp+8 = dd point to color of background and font
105
	push	dword text		; esp+4 = dd point to ASCIIZ
1158 Lrz 106
; esp+0 = dd back
1373 IgorA 107
	call	[font_draw_on_string]	; вывести по глифам строчку
1158 Lrz 108
 
109
 
1373 IgorA 110
	jmp still
1158 Lrz 111
 
112
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
113
align 4
1373 IgorA 114
draw_window:		;рисование окна приложения
115
	mcall	12,1
116
	xor  eax,eax		 ;обнулить eax
117
	mov  ebx,50*65536+680	 ;[координата по оси x]*65536 + [размер по оси x]
118
	mov  ecx,30*65536+200	 ;[координата по оси y]*65536 + [размер по оси y]
119
	mov  edx,[sc.work]	 ; color of work area RRGGBB,8->color gl
120
	or   edx,0x34000000
121
	mov  edi,hed
122
	mcall			 ;нарисовать окно приложения
123
 
124
	push	dword edit1
125
	call	[edit_box_draw]
1158 Lrz 126
;
1373 IgorA 127
	push	dword 20 shl 16 + 40	; esp+12= dd x shl 16 + y x- координата по Х, y - координата по Y
128
	push	dword con_colors	; esp+8 = dd point to color of background and font
129
	push	dword text; esp+4 = dd point to ASCIIZ
1158 Lrz 130
; esp+0 = dd back
1373 IgorA 131
	call	[font_draw_on_string]	; вывести по глифам строчку
132
	mov eax,12		 ;Функция 12 - начать/закончить перерисовку окна.
133
	mov ebx,2		 ;Подфункция 2 - закончить перерисовку окна.
134
	mcall
135
	ret
1158 Lrz 136
;;;;;;;;;;;;
137
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
138
;DATA данные
139
l_libs_start:
8288 IgorA 140
library01 l_libs library_name, library_path, system_path, font_import
141
library02 l_libs library_name1, library_path, system_path1, import_box_lib
1158 Lrz 142
end_l_libs:
143
 
144
;
1373 IgorA 145
system_path	 db '/sys/lib/'
146
library_name	 db 'fonts_lib.obj',0
1158 Lrz 147
 
1373 IgorA 148
system_path1	  db '/sys/lib/'
149
library_name1	  db 'box_lib.obj',0
1158 Lrz 150
 
151
align 4
152
import_box_lib:
153
 
1373 IgorA 154
edit_box_draw	dd	aEdit_box_draw
155
edit_box_key	dd	aEdit_box_key
156
edit_box_mouse	dd	aEdit_box_mouse
157
version_ed	dd	aVersion_ed
1158 Lrz 158
 
9568 IgorA 159
		dd	0,0
1158 Lrz 160
 
9568 IgorA 161
aEdit_box_draw	db 'edit_box_draw',0
1373 IgorA 162
aEdit_box_key	db 'edit_box_key',0
1158 Lrz 163
aEdit_box_mouse db 'edit_box_mouse',0
1373 IgorA 164
aVersion_ed	db 'version_ed',0
1158 Lrz 165
 
166
font_import:
1373 IgorA 167
initialization_font	dd	a_initialization_font
168
get_font		dd	a_get_font
169
free_fulder_info	dd	a_free_fulder_info
170
free_font		dd	a_free_font
171
font_draw_on_string	dd	a_font_draw_on_string
172
show_all_glif		dd	a_show_all_glif
173
Version_fn	      dd      a_Version_fn
174
		      dd      0,0
1158 Lrz 175
 
1373 IgorA 176
a_initialization_font	db 'initialization_font',0
177
a_get_font		db 'get_font',0
178
a_free_fulder_info	db 'free_fulder_info',0
179
a_free_font		db 'free_font',0
180
a_font_draw_on_string	db 'font_draw_on_string',0
181
a_show_all_glif 	db 'show_all_glif',0
182
a_Version_fn	      db 'version_fn',0
1158 Lrz 183
 
184
 
185
 
186
edit1 edit_box 350,175,5,0xffffff,0x6f9480,0,0xAABBCC,0,test_leght,text,ed_focus,text_end-text-1,text_end-text-1
187
 
188
text db   'Пример использования библиотеки шрифтов fonts_lib.obj',0
189
text_end:
190
rb  256
191
test_leght = ($-text)-1
192
 
1373 IgorA 193
hed db	 "Font's demo ",0
1158 Lrz 194
align 4
1373 IgorA 195
con_colors	dd	0x1E1EFF, 0x96FFCF
1158 Lrz 196
 
197
align 4
198
sc     system_colors
1373 IgorA 199
way_of_ini	rb 4096
200
library_path	rb 4096
1158 Lrz 201
 
202
align 4
203
i_end:
204
rb 1024
205
mem:
1373 IgorA 206
		;конец кода