Subversion Repositories Kolibri OS

Rev

Rev 1169 | Rev 8288 | Go to most recent revision | 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'
1373 IgorA 40
include '../../box_lib/trunk/box_lib.mac'
1158 Lrz 41
include '../../box_lib/load_lib.mac'
1373 IgorA 42
	@use_library	;use load lib macros
1158 Lrz 43
start:
44
;universal load library/librarys
45
sys_load_libraries l_libs_start,end_l_libs
46
;if return code =-1 then exit, else nornary work
1373 IgorA 47
	cmp	eax,-1
48
	jz	exit
49
	mcall	40,0x27 	;установить маску для ожидаемых событий
1158 Lrz 50
 
1373 IgorA 51
	mov  eax,48
52
	mov  ebx,3
53
	mov  ecx,sc
54
	mov  edx,sizeof.system_colors
55
	mcall
56
	mov  eax,dword [sc.work]
57
	mov  dword [con_colors+4],eax
1158 Lrz 58
 
59
;       mcall   66,1,0
1373 IgorA 60
       call [initialization_font]	; инициализация списка шрифтов
61
       push dword (8 shl 16 +16)	; поиск нужного шрифта в наборе шрифтов (пока доступен только 8х16)
1158 Lrz 62
       call [get_font]
1373 IgorA 63
	test	eax,eax 		;нашли ?
64
	jnz	exit
1158 Lrz 65
;;;;;;;;;;;;;;;;;;;;
1373 IgorA 66
	mcall	40,0x27 	;установить маску для ожидаемых событий
1158 Lrz 67
red_win:
1373 IgorA 68
    call draw_window		;первоначально необходимо нарисовать окно
1158 Lrz 69
align 4
1373 IgorA 70
still:				;основной обработчик
71
	mcall	10		;Ожидать события
72
	dec  eax
73
	jz   red_win
74
	dec  eax
75
	jz   key
76
	dec  eax
77
	jz   button
1158 Lrz 78
 
1373 IgorA 79
	push	dword edit1
80
	call	[edit_box_mouse]
1158 Lrz 81
 
1373 IgorA 82
	jmp still    ;если ничего из перечисленного то снова в цикл
1158 Lrz 83
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
84
button:
1373 IgorA 85
	mcall	17	;получить идентификатор нажатой клавиши
86
	test ah,ah	;если в ah 0, то перейти на обработчик событий still
87
	jz  still
88
exit:
89
	call	[free_fulder_info]
90
	call	[free_font]
91
	mcall	-1
1158 Lrz 92
key:
1373 IgorA 93
	mcall	2	;загрузим значение 2 в регистор eax и получим код нажатой клавиши
1158 Lrz 94
 
1373 IgorA 95
	push	dword edit1
96
	call	[edit_box_key]
1158 Lrz 97
 
98
 
1373 IgorA 99
	mcall	13,<20,650>,<40,16>, dword[con_colors+4]
1158 Lrz 100
 
101
 
1373 IgorA 102
	push	dword 20 shl 16 + 40	; esp+12= dd x shl 16 + y x- координата по Х, y - координата по Y
103
	push	dword con_colors	; esp+8 = dd point to color of background and font
104
	push	dword text		; esp+4 = dd point to ASCIIZ
1158 Lrz 105
; esp+0 = dd back
1373 IgorA 106
	call	[font_draw_on_string]	; вывести по глифам строчку
1158 Lrz 107
 
108
 
1373 IgorA 109
	jmp still
1158 Lrz 110
 
111
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
112
align 4
1373 IgorA 113
draw_window:		;рисование окна приложения
114
	mcall	12,1
115
	xor  eax,eax		 ;обнулить eax
116
	mov  ebx,50*65536+680	 ;[координата по оси x]*65536 + [размер по оси x]
117
	mov  ecx,30*65536+200	 ;[координата по оси y]*65536 + [размер по оси y]
118
	mov  edx,[sc.work]	 ; color of work area RRGGBB,8->color gl
119
	or   edx,0x34000000
120
	mov  edi,hed
121
	mcall			 ;нарисовать окно приложения
122
 
123
	push	dword edit1
124
	call	[edit_box_draw]
1158 Lrz 125
;
1373 IgorA 126
	push	dword 20 shl 16 + 40	; esp+12= dd x shl 16 + y x- координата по Х, y - координата по Y
127
	push	dword con_colors	; esp+8 = dd point to color of background and font
128
	push	dword text; esp+4 = dd point to ASCIIZ
1158 Lrz 129
; esp+0 = dd back
1373 IgorA 130
	call	[font_draw_on_string]	; вывести по глифам строчку
131
	mov eax,12		 ;Функция 12 - начать/закончить перерисовку окна.
132
	mov ebx,2		 ;Подфункция 2 - закончить перерисовку окна.
133
	mcall
134
	ret
1158 Lrz 135
;;;;;;;;;;;;
136
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
137
;DATA данные
138
l_libs_start:
139
library01 l_libs library_name, way_of_ini, library_path, system_path, err_message_found_lib, head_f_l, font_import, err_message_import, head_f_i
140
 
141
library02 l_libs library_name1, way_of_ini, library_path, system_path1, err_message_found_lib1, head_f_l, import_box_lib, err_message_import1, head_f_i
142
 
143
end_l_libs:
144
 
145
;
1373 IgorA 146
system_path	 db '/sys/lib/'
147
library_name	 db 'fonts_lib.obj',0
1158 Lrz 148
 
1373 IgorA 149
system_path1	  db '/sys/lib/'
150
library_name1	  db 'box_lib.obj',0
1158 Lrz 151
 
1373 IgorA 152
err_message_found_lib	db 'Sorry I cannot load library fonts_lib.obj',0
153
err_message_found_lib1	db 'Sorry I cannot load library box_lib.obj',0
1158 Lrz 154
 
155
head_f_i:
1373 IgorA 156
head_f_l	db 'System error',0
157
err_message_import	db 'Error on load import library fonts_lib.obj',0
158
err_message_import1	db 'Error on load import library box_lib.obj',0
1158 Lrz 159
 
160
align 4
161
import_box_lib:
162
 
1373 IgorA 163
edit_box_draw	dd	aEdit_box_draw
164
edit_box_key	dd	aEdit_box_key
165
edit_box_mouse	dd	aEdit_box_mouse
166
version_ed	dd	aVersion_ed
1158 Lrz 167
 
1373 IgorA 168
		dd	0
169
		dd	0
1158 Lrz 170
 
1373 IgorA 171
aEdit_box_draw	db 'edit_box',0
172
aEdit_box_key	db 'edit_box_key',0
1158 Lrz 173
aEdit_box_mouse db 'edit_box_mouse',0
1373 IgorA 174
aVersion_ed	db 'version_ed',0
1158 Lrz 175
 
176
font_import:
1373 IgorA 177
initialization_font	dd	a_initialization_font
178
get_font		dd	a_get_font
179
free_fulder_info	dd	a_free_fulder_info
180
free_font		dd	a_free_font
181
font_draw_on_string	dd	a_font_draw_on_string
182
show_all_glif		dd	a_show_all_glif
183
Version_fn	      dd      a_Version_fn
184
		      dd      0,0
1158 Lrz 185
 
1373 IgorA 186
a_initialization_font	db 'initialization_font',0
187
a_get_font		db 'get_font',0
188
a_free_fulder_info	db 'free_fulder_info',0
189
a_free_font		db 'free_font',0
190
a_font_draw_on_string	db 'font_draw_on_string',0
191
a_show_all_glif 	db 'show_all_glif',0
192
a_Version_fn	      db 'version_fn',0
1158 Lrz 193
 
194
 
195
 
196
edit1 edit_box 350,175,5,0xffffff,0x6f9480,0,0xAABBCC,0,test_leght,text,ed_focus,text_end-text-1,text_end-text-1
197
 
198
text db   'Пример использования библиотеки шрифтов fonts_lib.obj',0
199
text_end:
200
rb  256
201
test_leght = ($-text)-1
202
 
1373 IgorA 203
hed db	 "Font's demo ",0
1158 Lrz 204
align 4
1373 IgorA 205
con_colors	dd	0x1E1EFF, 0x96FFCF
1158 Lrz 206
 
207
align 4
208
sc     system_colors
1373 IgorA 209
way_of_ini	rb 4096
210
library_path	rb 4096
1158 Lrz 211
 
212
align 4
213
i_end:
214
rb 1024
215
mem:
1373 IgorA 216
		;конец кода