1) 'kol_f_edit': optimize & update, create folder 'docs'

2) 'buf2d.obj': rename function 'buf2d_cruve_bezier'

git-svn-id: svn://kolibrios.org@1727 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
IgorA 2010-12-22 17:03:22 +00:00
parent d1dbee37fc
commit 987c59561a
21 changed files with 405 additions and 291 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

View File

@ -1,7 +1,7 @@
;
; в этом файле собраны функции создающие програмный код
; ¢ í⮬ ä ©«¥ ᮡ࠭ë ä㭪樨 ᮧ¤ î騥 ¯à®£à ¬­ë© ª®¤
;
u_object object ;временный объект для задания смещений
u_object object ;¢à¥¬¥­­ë© ®¡ê¥ªâ ¤«ï § ¤ ­¨ï ᬥ饭¨©
macro insert_coma
{
@ -20,7 +20,7 @@ macro insert_sp
stdcall [ted_text_add], tedit0,txt_sp,1,ted_opt_ed_move_cursor
}
;функция вставляет текстовую строку в текстовый редактор
;äã­ªæ¨ï ¢áâ ¢«ï¥â ⥪á⮢ãî áâப㠢 ⥪áâ®¢ë© à¥¤ ªâ®à
align 4
proc insert_text, txt:dword
push eax
@ -33,7 +33,7 @@ proc insert_text, txt:dword
ret
endp
;вставляет указанное свойство из объекта в текстовый редактор
;¢áâ ¢«ï¥â 㪠§ ­­®¥ ⥪á⮢®¥ ᢮©á⢮ ¨§ ®¡ê¥ªâ  ¢ ⥪áâ®¢ë© à¥¤ ªâ®à
align 4
proc insert_text_prop, p_obj:dword,index:dword
push eax edx
@ -46,7 +46,31 @@ proc insert_text_prop, p_obj:dword,index:dword
ret
endp
;функция вставляет 2 параметра по 16 бит в виде:
;¢áâ ¢«ï¥â 㪠§ ­­®¥ ¡¨â®¢®¥ ᢮©á⢮ ¨§ ®¡ê¥ªâ  ¢ ⥪áâ®¢ë© à¥¤ ªâ®à
align 4
proc insert_bit_prop, p_obj:dword,index:dword
push ebx ecx edi
mov ebx,[p_obj]
mov ecx,[index]
test_bool_prop ebx,ecx
jnc @f ;¥á«¨ ¯®«ì§®¢ â¥«ì ­¥ ¢ë¡à « ¢ ®¡ê¥ªâ¥ ¤ ­­®¥ ᢮©á⢮
mov ebx,dword[ebx]
call find_obj_in_opt
mov ecx,dword[edi+obj_opt.bit_val-obj_opt] ;ecx - ᬥ饭¨¥ §­ ç¥­¨© ᢮©á⢠(ª®­áâ ­â)
cmp byte[ecx],0
je @f ;¥á«¨ ã ®¡ê¥ªâ  ­¥â § ¤ ­­ëå ¡¨â®¢ëå ᢮©áâ¢
add ecx,obj_opt ;¤®¡ ¢«ï¥¬ ­ ç «® ä ©«  á ®¯æ¨ï¬¨
stdcall get_string_by_ind, ecx,[index]
cmp byte[edi],0
je @f ;¥á«¨ ã ®¡ê¥ªâ  ¡¨â®¢®¥ ᢮©á⢮ ¯ãá⮥
stdcall insert_text, txt_plus
stdcall insert_text, edi
@@:
pop edi ecx ebx
ret
endp
;äã­ªæ¨ï ¢áâ ¢«ï¥â 2 ¯ à ¬¥âà  ¯® 16 ¡¨â ¢ ¢¨¤¥:
; (_p1_ shl 16 + _p2_)
align 4
proc insert_2_prop_16_bit, obj:dword, p_hi:dword, p_lo:dword
@ -59,7 +83,7 @@ proc insert_2_prop_16_bit, obj:dword, p_hi:dword, p_lo:dword
ret
endp
;вставляем строку вида:
;¢áâ ¢«ï¥¬ áâப㠢¨¤ :
; txt_(n) db (s)
align 4
proc insert_text_label_data, obj:dword, col:dword
@ -145,18 +169,18 @@ macro insert_ret
align 4
but_update:
call draw_constructor
cmp byte[show_mode],0 ;условие видимости окна конструктора
cmp byte[show_mode],0 ;ãá«®¢¨¥ ¢¨¤¨¬®á⨠®ª­  ª®­áâàãªâ®à 
jne @f
stdcall [buf2d_draw], buf_fon
@@:
call code_gen
cmp byte[show_mode],1 ;условие видимости текстового окна
cmp byte[show_mode],1 ;ãá«®¢¨¥ ¢¨¤¨¬®á⨠⥪á⮢®£® ®ª­ 
jne @f
stdcall [ted_draw], tedit0
@@:
ret
;функция создающая код всего файла
;äã­ªæ¨ï ᮧ¤ îé ï ª®¤ ¢á¥£® ä ©« 
align 4
code_gen:
stdcall [ted_clear], tedit0,1
@ -166,14 +190,14 @@ pushad
xor bl,bl
call code_gen_obj
stdcall [ted_text_add], tedit0,\
txt_nl,1,ted_opt_ed_move_cursor+ted_opt_ed_change_time ;добавляем символ новой строки с опцией ted_opt_ed_change_time для возможности сохранения файла
stdcall [ted_init_scroll_bars], tedit0, 4 ;меняем размеры скроллингов
txt_nl,1,ted_opt_ed_move_cursor+ted_opt_ed_change_time ;¤®¡ ¢«ï¥¬ ᨬ¢®« ­®¢®© áâப¨ á ®¯æ¨¥© ted_opt_ed_change_time ¤«ï ¢®§¬®¦­®á⨠á®åà ­¥­¨ï ä ©« 
stdcall [ted_init_scroll_bars], tedit0, 4 ;¬¥­ï¥¬ à §¬¥àë áªà®««¨­£®¢
popad
ret
;input:
; bl - уровень объекта
; esi - указатель на узел
; bl - ã஢¥­ì ®¡ê¥ªâ 
; esi - 㪠§ â¥«ì ­  㧥«
align 4
code_gen_obj:
push ebx edx
@ -185,13 +209,13 @@ push ebx edx
jl .find_no
stdcall dword[tl_node_poi_get_data], esi,tree2
pop eax ;получаем данные узла
pop eax ;¯®«ãç ¥¬ ¤ ­­ë¥ 㧫 
cmp eax,0
je .find_no
cmp dword[eax],C_STR
jne .no_struct
stdcall get_obj_text_col, eax,1 ;edx - указатель на 1-е свойство структуры
stdcall get_obj_text_col, eax,1 ;edx - 㪠§ â¥«ì ­  1-¥ ᢮©á⢮ áâàãªâãàë
stdcall insert_text,txt_struc
cmp byte[edx],0
jne @f
@ -202,7 +226,7 @@ push ebx edx
cmp byte[edx],0
je @f
;если структура задана макросом
;¥á«¨ áâàãªâãà  § ¤ ­  ¬ ªà®á®¬
insert_sp
stdcall insert_text_prop, eax,1
insert_nl
@ -211,19 +235,19 @@ push ebx edx
insert_nl
stdcall dword[tl_node_poi_get_next_info], esi,tree2
pop esi ;переходим к следущему узлу
pop esi ;¯¥à¥å®¤¨¬ ª á«¥¤ã饬ã 㧫ã
cmp esi,0
je .end_st
cmp byte[esi+2],bl ;lev
jle .end_st
push bx
mov bl,byte[esi+2]
call code_gen_obj ;рекурсивный вызов дочерних объектов
call code_gen_obj ;४ãàᨢ­ë© ¢ë§®¢ ¤®ç¥à­¨å ®¡ê¥ªâ®¢
pop bx
.end_st:
cmp byte[edx],0
je @f
;если структура задана макросом
;¥á«¨ áâàãªâãà  § ¤ ­  ¬ ªà®á®¬
stdcall insert_text, txt_skob_fc
insert_nl
jmp .beg_iterat
@ -233,42 +257,38 @@ push ebx edx
.no_struct:
cmp dword[eax],C_TXT
jne @f
stdcall get_code_text,eax ;обработка объекта
stdcall get_code_text,eax ;®¡à ¡®âª  ®¡ê¥ªâ 
@@:
cmp dword[eax],C_INC
jne @f
stdcall get_code_incl,eax ;обработка объекта
@@:
cmp dword[eax],C_COM
jne @f
stdcall get_code_comment,eax ;обработка объекта
stdcall get_code_incl,eax ;®¡à ¡®âª  ®¡ê¥ªâ 
@@:
cmp dword[eax],C_VAR
jne @f
stdcall get_code_variable,eax,ebx ;обработка объекта
stdcall get_code_variable,eax,ebx ;®¡à ¡®âª  ®¡ê¥ªâ 
@@:
cmp dword[eax],C_WND
jne @f
stdcall get_code_window,eax ;обработка объекта
stdcall get_code_window,eax ;®¡à ¡®âª  ®¡ê¥ªâ 
@@:
cmp dword[eax],C_ACO
jne @f
stdcall get_code_auto,eax ;обработка объекта
stdcall get_code_auto,eax ;®¡à ¡®âª  ®¡ê¥ªâ 
@@:
cmp dword[eax],C_KEY ;клавиатура
cmp dword[eax],C_KEY ;ª« ¢¨ âãà 
jne @f
stdcall get_code_key,eax ;обработка объекта
stdcall get_code_key,eax ;®¡à ¡®âª  ®¡ê¥ªâ 
@@:
stdcall dword[tl_node_poi_get_next_info], esi,tree2
pop esi ;переходим к следущему узлу
pop esi ;¯¥à¥å®¤¨¬ ª á«¥¤ã饬ã 㧫ã
jmp .beg_iterat
.find_no:
pop edx ebx
ret
;добавление объекта с програмным кодом (текстом)
;¤®¡ ¢«¥­¨¥ ®¡ê¥ªâ  á ¯à®£à ¬­ë¬ ª®¤®¬ (⥪á⮬)
align 4
proc get_code_text, p_obj:dword
;pushad
@ -279,7 +299,7 @@ proc get_code_text, p_obj:dword
ret
endp
;обработка объекта создающего автоматичексие коды
;®¡à ¡®âª  ®¡ê¥ªâ  ᮧ¤ î饣®  ¢â®¬ â¨ç¥ªá¨¥ ª®¤ë
align 4
proc get_code_auto, p_obj:dword
pushad
@ -295,16 +315,16 @@ proc get_code_auto, p_obj:dword
@@:
test_bool_prop ebx,BIT_MOD_ACM
jae @f
;автоматические события от мыши
; ¢â®¬ â¨ç¥áª¨¥ ᮡëâ¨ï ®â ¬ëè¨
call get_code_auto_m
@@:
test_bool_prop ebx,BIT_MOD_ABU
jae @f
;создание функции button
;ᮧ¤ ­¨¥ ä㭪樨 button
insert_but_beg
call get_code_auto_but ;коды вызова кнопок
call get_code_auto_but ;ª®¤ë ¢ë§®¢  ª­®¯®ª
insert_but_end
call get_code_a_but_fun ;коды функций, вызываемых при нажатии кнопок
call get_code_a_but_fun ;ª®¤ë ä㭪権, ¢ë§ë¢ ¥¬ëå ¯à¨ ­ ¦ â¨¨ ª­®¯®ª
@@:
test_bool_prop ebx,BIT_MOD_ACD
jae @f
@ -322,7 +342,7 @@ proc get_code_auto, p_obj:dword
call get_code_auto_data_dop
mov edx,C_LIB
stdcall find_obj_in_file,edx ;eax - указатель на структуру библиотеки
stdcall find_obj_in_file,edx ;eax - 㪠§ â¥«ì ­  áâàãªâãàã ¡¨¡«¨®â¥ª¨
cmp eax,0
je @f
insert_nl
@ -340,7 +360,7 @@ proc get_code_auto, p_obj:dword
stdcall insert_text, txt_ll_start
call get_code_auto_data_libs_struc
stdcall insert_text, txt_ll_end
call get_code_auto_data_libs ;таблицы импорта библиотек
call get_code_auto_data_libs ;â ¡«¨æë ¨¬¯®àâ  ¡¨¡«¨®â¥ª
@@:
insert_nl
popad
@ -357,7 +377,7 @@ proc get_code_auto_m
je .find_no
stdcall dword[tl_node_poi_get_data], esi,tree2
pop ebx ;получаем данные узла
pop ebx ;¯®«ãç ¥¬ ¤ ­­ë¥ 㧫 
cmp ebx,0
je .find_no
@ -375,7 +395,7 @@ proc get_code_auto_m
@@:
stdcall dword[tl_node_poi_get_next_info], esi,tree2
pop esi ;переходим к следущему узлу
pop esi ;¯¥à¥å®¤¨¬ ª á«¥¤ã饬ã 㧫ã
jmp .beg_iterat
.find_no:
@ -383,11 +403,11 @@ proc get_code_auto_m
ret
endp
;создание данных (структур объектов)
;ᮧ¤ ­¨¥ ¤ ­­ëå (áâàãªâãà ®¡ê¥ªâ®¢)
align 4
proc get_code_auto_data_el
pushad
insert_nl ;отступ для форматирования
insert_nl ;®âáâ㯠¤«ï ä®à¬ â¨à®¢ ­¨ï
stdcall dword[tl_node_poi_get_info], 0,tree2
pop esi
@ -396,7 +416,7 @@ proc get_code_auto_data_el
je .find_no
stdcall dword[tl_node_poi_get_data], esi,tree2
pop ebx ;получаем данные узла
pop ebx ;¯®«ãç ¥¬ ¤ ­­ë¥ 㧫 
cmp ebx,0
je .find_no
@ -424,12 +444,15 @@ proc get_code_auto_data_el
stdcall insert_text, txt_mouse_dd
stdcall insert_text, txt_0 ;тут будут свойства editbox а пока просто ставим 0
xchg eax,edx ;сохраняем значение edx
stdcall insert_text, txt_0 ;᢮©á⢠ editbox
stdcall insert_bit_prop, ebx,BIT_MOD_EDIT_FOC
stdcall insert_bit_prop, ebx,BIT_MOD_EDIT_FIO
xchg eax,edx ;á®å࠭塞 §­ ç¥­¨¥ edx
stdcall get_obj_text_col,ebx,10
cmp byte[edx],0 ;проверяем пустая ли строка при запуске editbox
cmp byte[edx],0 ;¯à®¢¥à塞 ¯ãáâ ï «¨ áâப  ¯à¨ § ¯ã᪥ editbox
je .null_string
xchg eax,edx ;востанавливаем значение edx
xchg eax,edx ;¢®áâ ­ ¢«¨¢ ¥¬ §­ ç¥­¨¥ edx
stdcall insert_text, txt_coma
stdcall insert_text, txt_txt
@ -459,7 +482,7 @@ proc get_code_auto_data_el
@@:
stdcall dword[tl_node_poi_get_next_info], esi,tree2
pop esi ;переходим к следущему узлу
pop esi ;¯¥à¥å®¤¨¬ ª á«¥¤ã饬ã 㧫ã
jmp .beg_iterat
.find_no:
@ -470,7 +493,7 @@ endp
align 4
proc get_code_auto_data_el_cbox
pushad
insert_nl ;отступ для форматирования
insert_nl ;®âáâ㯠¤«ï ä®à¬ â¨à®¢ ­¨ï
stdcall dword[tl_node_poi_get_info], 0,tree2
pop esi
@ -479,7 +502,7 @@ proc get_code_auto_data_el_cbox
je .find_no
stdcall dword[tl_node_poi_get_data], esi,tree2
pop ebx ;получаем данные узла
pop ebx ;¯®«ãç ¥¬ ¤ ­­ë¥ 㧫 
cmp ebx,0
je .find_no
@ -504,8 +527,6 @@ proc get_code_auto_data_el_cbox
stdcall insert_text, txt_coma
stdcall insert_text_prop, ebx,7
stdcall insert_text, txt_coma
;stdcall insert_text, txt_bit_31
;stdcall insert_text, txt_plus
stdcall insert_text_prop, ebx,8
stdcall insert_text, txt_coma
stdcall insert_text, txt_br
@ -516,28 +537,12 @@ proc get_code_auto_data_el_cbox
stdcall insert_text, edx
stdcall insert_text, txt_coma
;флаги
;ä« £¨
stdcall insert_text,txt_0
test_bool_prop ebx,BIT_MOD_CHE
jnc @f
stdcall insert_text,txt_plus
stdcall insert_text,txt_bit_che
@@:
test_bool_prop ebx,BIT_MOD_CHE_T
jnc @f
stdcall insert_text,txt_plus
stdcall insert_text,txt_bit_che_t
@@:
test_bool_prop ebx,BIT_MOD_CHE_M
jnc @f
stdcall insert_text,txt_plus
stdcall insert_text,txt_bit_che_m
@@:
test_bool_prop ebx,BIT_MOD_CHE_B
jnc @f
stdcall insert_text,txt_plus
stdcall insert_text,txt_bit_che_b
@@:
stdcall insert_bit_prop, ebx,BIT_MOD_CHE
stdcall insert_bit_prop, ebx,BIT_MOD_CHE_T
stdcall insert_bit_prop, ebx,BIT_MOD_CHE_M
stdcall insert_bit_prop, ebx,BIT_MOD_CHE_B
insert_nl
.no_check:
@ -547,7 +552,7 @@ proc get_code_auto_data_el_cbox
@@:
stdcall dword[tl_node_poi_get_next_info], esi,tree2
pop esi ;переходим к следущему узлу
pop esi ;¯¥à¥å®¤¨¬ ª á«¥¤ã饬ã 㧫ã
jmp .beg_iterat
.find_no:
@ -555,11 +560,11 @@ proc get_code_auto_data_el_cbox
ret
endp
;данные для библиотек
;¤ ­­ë¥ ¤«ï ¡¨¡«¨®â¥ª
align 4
proc get_code_auto_data_libs_param
pushad
insert_nl ;отступ для форматирования
insert_nl ;®âáâ㯠¤«ï ä®à¬ â¨à®¢ ­¨ï
stdcall dword[tl_node_poi_get_info], 0,tree2
pop esi
@ -568,7 +573,7 @@ proc get_code_auto_data_libs_param
je .find_no
stdcall dword[tl_node_poi_get_data], esi,tree2
pop ebx ;получаем данные узла
pop ebx ;¯®«ãç ¥¬ ¤ ­­ë¥ 㧫 
cmp ebx,0
je .find_no
@ -615,7 +620,7 @@ proc get_code_auto_data_libs_param
@@:
stdcall dword[tl_node_poi_get_next_info], esi,tree2
pop esi ;переходим к следущему узлу
pop esi ;¯¥à¥å®¤¨¬ ª á«¥¤ã饬ã 㧫ã
jmp .beg_iterat
.find_no:
@ -623,11 +628,11 @@ proc get_code_auto_data_libs_param
ret
endp
;данные для библиотек
;¤ ­­ë¥ ¤«ï ¡¨¡«¨®â¥ª
align 4
proc get_code_auto_data_libs_struc
pushad
;insert_nl ;отступ для форматирования
;insert_nl ;®âáâ㯠¤«ï ä®à¬ â¨à®¢ ­¨ï
stdcall dword[tl_node_poi_get_info], 0,tree2
pop esi
@ -636,7 +641,7 @@ proc get_code_auto_data_libs_struc
je .find_no
stdcall dword[tl_node_poi_get_data], esi,tree2
pop ebx ;получаем данные узла
pop ebx ;¯®«ãç ¥¬ ¤ ­­ë¥ 㧫 
cmp ebx,0
je .find_no
@ -681,7 +686,7 @@ proc get_code_auto_data_libs_struc
@@:
stdcall dword[tl_node_poi_get_next_info], esi,tree2
pop esi ;переходим к следущему узлу
pop esi ;¯¥à¥å®¤¨¬ ª á«¥¤ã饬ã 㧫ã
jmp .beg_iterat
.find_no:
@ -689,11 +694,11 @@ proc get_code_auto_data_libs_struc
ret
endp
;данные для библиотек
;¤ ­­ë¥ ¤«ï ¡¨¡«¨®â¥ª
align 4
proc get_code_auto_data_libs
pushad
insert_nl ;отступ для форматирования
insert_nl ;®âáâ㯠¤«ï ä®à¬ â¨à®¢ ­¨ï
stdcall dword[tl_node_poi_get_info], 0,tree2
pop esi
@ -702,7 +707,7 @@ proc get_code_auto_data_libs
je .find_no
stdcall dword[tl_node_poi_get_data], esi,tree2
pop ebx ;получаем данные узла
pop ebx ;¯®«ãç ¥¬ ¤ ­­ë¥ 㧫 
cmp ebx,0
je .find_no
@ -718,7 +723,7 @@ proc get_code_auto_data_libs
@@:
stdcall dword[tl_node_poi_get_next_info], esi,tree2
pop esi ;переходим к следущему узлу
pop esi ;¯¥à¥å®¤¨¬ ª á«¥¤ã饬ã 㧫ã
jmp .beg_iterat
.find_no:
@ -734,23 +739,23 @@ pushad
mov bl,byte[esi+2]
mov edi,esi
stdcall dword[tl_node_poi_get_data], esi,tree2
pop edx ;получение данных родительского объекта
pop edx ;¯®«ã祭¨¥ ¤ ­­ëå த¨â¥«ì᪮£® ®¡ê¥ªâ 
cmp edx,0
je @f
@@:
stdcall dword[tl_node_poi_get_next_info], esi,tree2
pop esi ;переходим к следущему узлу
pop esi ;¯¥à¥å®¤¨¬ ª á«¥¤ã饬ã 㧫ã
cmp esi,0
je @f
cmp byte[esi+2],bl ;lev
jle @f
stdcall dword[tl_node_poi_get_data], esi,tree2
pop ecx ;получаем данные узла
pop ecx ;¯®«ãç ¥¬ ¤ ­­ë¥ 㧫 
cmp ecx,0
je @f
cmp dword[ecx],C_IFN
jne @b
;вставка указателя на функцию
;¢áâ ¢ª  㪠§ â¥«ï ­  äã­ªæ¨î
test_bool_prop ecx,BIT_MOD_IMPORT_FUNCT_COMMENT
jae .no_com_0
stdcall insert_text, txt_com
@ -758,7 +763,7 @@ pushad
insert_tab
stdcall insert_text_prop, ecx,0
stdcall insert_text, txt_dd
stdcall insert_text_prop, edx,3 ;приставка к функции
stdcall insert_text_prop, edx,3 ;¯à¨áâ ¢ª  ª ä㭪樨
stdcall insert_text_prop, ecx,0
insert_nl
jmp @b
@ -767,24 +772,24 @@ pushad
mov esi,edi
@@:
stdcall dword[tl_node_poi_get_next_info], esi,tree2
pop esi ;переходим к следущему узлу
pop esi ;¯¥à¥å®¤¨¬ ª á«¥¤ã饬ã 㧫ã
cmp esi,0
je @f
cmp byte[esi+2],bl ;lev
jle @f
stdcall dword[tl_node_poi_get_data], esi,tree2
pop ecx ;получаем данные узла
pop ecx ;¯®«ãç ¥¬ ¤ ­­ë¥ 㧫 
cmp ecx,0
je @f
cmp dword[ecx],C_IFN
jne @b
;вставка имени импортированной функции
;¢áâ ¢ª  ¨¬¥­¨ ¨¬¯®àâ¨à®¢ ­­®© ä㭪樨
test_bool_prop ecx,BIT_MOD_IMPORT_FUNCT_COMMENT
jae .no_com_1
stdcall insert_text, txt_com
.no_com_1:
insert_tab
stdcall insert_text_prop, edx,3 ;приставка к функции
stdcall insert_text_prop, edx,3 ;¯à¨áâ ¢ª  ª ä㭪樨
stdcall insert_text_prop, ecx,0
stdcall insert_text, txt_db
stdcall insert_text, txt_str_beg
@ -800,7 +805,7 @@ popad
align 4
proc get_code_auto_data_dop
pushad
insert_nl ;отступ для форматирования
insert_nl ;®âáâ㯠¤«ï ä®à¬ â¨à®¢ ­¨ï
stdcall dword[tl_node_poi_get_info], 0,tree2
pop esi
@ -809,13 +814,15 @@ proc get_code_auto_data_dop
je .find_no
stdcall dword[tl_node_poi_get_data], esi,tree2
pop ebx ;получаем данные узла
pop ebx ;¯®«ãç ¥¬ ¤ ­­ë¥ 㧫 
cmp ebx,0
je .find_no
cmp dword[ebx],C_EDB
jne @f
;1,2,3,4,...,6,...8,...,10 - w,x,y,col_fon,...,col_frame,...,col_txt,...,txt
;ä®à¬¨à㥬 ⥪áâ®¢ë¥ ¤ ­­ë¥ ¤«ï editbox-®¢
stdcall insert_text, txt_txt
mov edx,fp_icon
stdcall get_obj_id_str, ebx,edx
@ -854,7 +861,7 @@ proc get_code_auto_data_dop
jmp @f
.no_text: ;первоначально текст не задан
.no_text: ;¯¥à¢®­ ç «ì­® ⥪áâ ­¥ § ¤ ­
stdcall insert_text, txt_times
stdcall insert_text_prop,ebx,9
@ -870,7 +877,7 @@ proc get_code_auto_data_dop
@@:
stdcall dword[tl_node_poi_get_next_info], esi,tree2
pop esi ;переходим к следущему узлу
pop esi ;¯¥à¥å®¤¨¬ ª á«¥¤ã饬ã 㧫ã
jmp .beg_iterat
.find_no:
@ -878,7 +885,7 @@ proc get_code_auto_data_dop
ret
endp
;связываем кнопки с функциями
;á¢ï§ë¢ ¥¬ ª­®¯ª¨ á äã­ªæ¨ï¬¨
align 4
proc get_code_auto_but
pushad
@ -889,7 +896,7 @@ proc get_code_auto_but
je .find_no
stdcall dword[tl_node_poi_get_data], esi,tree2
pop ebx ;получаем данные узла
pop ebx ;¯®«ãç ¥¬ ¤ ­­ë¥ 㧫 
cmp ebx,0
je .find_no
@ -922,7 +929,7 @@ proc get_code_auto_but
@@:
stdcall dword[tl_node_poi_get_next_info], esi,tree2
pop esi ;переходим к следущему узлу
pop esi ;¯¥à¥å®¤¨¬ ª á«¥¤ã饬ã 㧫ã
jmp .beg_iterat
.find_no:
@ -930,7 +937,7 @@ proc get_code_auto_but
ret
endp
;берем коды для функций нажатий на кнопки
;¡¥à¥¬ ª®¤ë ¤«ï ä㭪権 ­ ¦ â¨© ­  ª­®¯ª¨
align 4
proc get_code_a_but_fun
pushad
@ -941,7 +948,7 @@ proc get_code_a_but_fun
je .find_no
stdcall dword[tl_node_poi_get_data], esi,tree2
pop ebx ;получаем данные узла
pop ebx ;¯®«ãç ¥¬ ¤ ­­ë¥ 㧫 
cmp ebx,0
je .find_no
@ -962,7 +969,7 @@ proc get_code_a_but_fun
@@:
stdcall dword[tl_node_poi_get_next_info], esi,tree2
pop esi ;переходим к следущему узлу
pop esi ;¯¥à¥å®¤¨¬ ª á«¥¤ã饬ã 㧫ã
jmp .beg_iterat
.find_no:
@ -977,7 +984,7 @@ proc get_code_key, p_obj:dword
mov ebx,dword[p_obj]
insert_key_beg
call get_code_funct_key ;коды вызова кнопок
call get_code_funct_key ;ª®¤ë ¢ë§®¢  ª­®¯®ª
insert_key_end
insert_nl
@ -995,7 +1002,7 @@ proc get_code_funct_key
je .find_no
stdcall dword[tl_node_poi_get_data], esi,tree2
pop ebx ;получаем данные узла
pop ebx ;¯®«ãç ¥¬ ¤ ­­ë¥ 㧫 
cmp ebx,0
je .find_no
@ -1007,7 +1014,7 @@ proc get_code_funct_key
@@:
stdcall dword[tl_node_poi_get_next_info], esi,tree2
pop esi ;переходим к следущему узлу
pop esi ;¯¥à¥å®¤¨¬ ª á«¥¤ã饬ã 㧫ã
jmp .beg_iterat
.find_no:
@ -1015,7 +1022,7 @@ proc get_code_funct_key
ret
endp
;объекты подключения файлов 'include ...'
;®¡ê¥ªâë ¯®¤ª«î祭¨ï ä ©«®¢ 'include ...'
align 4
proc get_code_incl, p_obj:dword
pushad
@ -1037,15 +1044,7 @@ proc get_code_incl, p_obj:dword
ret
endp
align 4
proc get_code_comment, p_obj:dword
insert_com
stdcall insert_text_prop, dword[p_obj],0
insert_nl
ret
endp
;создаем код задания окна
;ᮧ¤ ¥¬ ª®¤ § ¤ ­¨ï ®ª­ 
align 4
proc get_code_window, p_obj:dword
pushad
@ -1107,13 +1106,13 @@ proc get_code_window, p_obj:dword
call get_code_draw_obj
stdcall insert_text, txt_draw_we ;код завершающий функцию рисования
stdcall insert_text, txt_draw_we ;ª®¤ § ¢¥àè î騩 äã­ªæ¨î à¨á®¢ ­¨ï
popad
ret
endp
;формируем вызов функций для рисования объектов
;ä®à¬¨à㥬 ¢ë§®¢ ä㭪権 ¤«ï à¨á®¢ ­¨ï ®¡ê¥ªâ®¢
align 4
proc get_code_draw_obj
pushad
@ -1124,7 +1123,7 @@ proc get_code_draw_obj
je .find_no
stdcall dword[tl_node_poi_get_data], esi,tree2
pop ebx ;получаем данные узла
pop ebx ;¯®«ãç ¥¬ ¤ ­­ë¥ 㧫 
cmp ebx,0
je .find_no
@ -1226,7 +1225,7 @@ proc get_code_draw_obj
stdcall insert_text, txt_i_40
insert_nl
@@:
cmp dword[ebx],C_DTT ;рисование текста через сист. ф. 4
cmp dword[ebx],C_DTT ;à¨á®¢ ­¨¥ ⥪áâ  ç¥à¥§ á¨áâ. ä. 4
jne .ob_draw_text
insert_tab
stdcall insert_text, txt_mov
@ -1247,24 +1246,9 @@ proc get_code_draw_obj
insert_reg txt_ecx
insert_coma
stdcall insert_text_prop, ebx,3
test_bool_prop ebx,BIT_MOD_TXT_ASCII_0
jnc @f
;or ecx,0x80000000 - бит для строки ASCIIZ
stdcall insert_text,txt_plus
stdcall insert_text,txt_bit_31
@@:
test_bool_prop ebx,BIT_MOD_TXT_NO_TRAN
jnc @f
;or ecx,0x40000000 - бит для не прозрачного текста
stdcall insert_text,txt_plus
stdcall insert_text,txt_bit_30
@@:
test_bool_prop ebx,BIT_MOD_TXT_CHAR2
jnc @f
;or ecx,0x40000000 - бит для 2-го сист. шрифта
stdcall insert_text,txt_plus
stdcall insert_text,txt_bit_28
@@:
stdcall insert_bit_prop, ebx,BIT_MOD_TXT_ASCII_0 ;31 - ¡¨â ¤«ï áâப¨ ASCIIZ
stdcall insert_bit_prop, ebx,BIT_MOD_TXT_NO_TRAN ;30 - ¡¨â ¤«ï ­¥ ¯à®§à ç­®£® ⥪áâ 
stdcall insert_bit_prop, ebx,BIT_MOD_TXT_CHAR2 ;28 - ¡¨â ¤«ï 2-£® á¨áâ. èà¨äâ 
insert_nl
insert_tab
@ -1284,7 +1268,7 @@ proc get_code_draw_obj
stdcall insert_text, txt_mov
insert_reg txt_edi
insert_coma
stdcall insert_text_prop, ebx,4 ;цвет фона
stdcall insert_text_prop, ebx,4 ;梥â ä®­ 
insert_nl
@@:
@ -1294,7 +1278,7 @@ proc get_code_draw_obj
.ob_draw_text:
stdcall dword[tl_node_poi_get_next_info], esi,tree2
pop esi ;переходим к следущему узлу
pop esi ;¯¥à¥å®¤¨¬ ª á«¥¤ã饬ã 㧫ã
jmp .beg_iterat
.find_no:
@ -1302,7 +1286,7 @@ proc get_code_draw_obj
ret
endp
;создать код объявления переменной
;ᮧ¤ âì ª®¤ ®¡ê¥­¨ï ¯¥à¥¬¥­­®©
align 4
proc get_code_variable, p_obj:dword,o_lev:dword
pushad
@ -1311,30 +1295,30 @@ proc get_code_variable, p_obj:dword,o_lev:dword
mov ecx,dword[o_lev]
cmp cl,0
je .no_tab ;избегаем зацикливания (0-1 = 2^32-1)
je .no_tab ;¨§¡¥£ ¥¬ § æ¨ª«¨¢ ­¨ï (0-1 = 2^32-1)
and ecx,0xff
cld
@@:
insert_tab ;формирование отступа перед переменной
insert_tab ;ä®à¬¨à®¢ ­¨¥ ®âáâ㯠 ¯¥à¥¤ ¯¥à¥¬¥­­®©
loop @b
.no_tab:
stdcall insert_text_prop, ebx,0 ;имя переменной
stdcall insert_text_prop, ebx,0 ;¨¬ï ¯¥à¥¬¥­­®©
insert_sp
mov ecx,dword[ebx+u_object.typid-u_object] ;ecx - относительный индекс родительского объекта (в памяти)
mov ecx,dword[ebx+u_object.typid-u_object] ;ecx - ®â­®á¨â¥«ì­ë© ¨­¤¥ªá த¨â¥«ì᪮£® ®¡ê¥ªâ  (¢ ¯ ¬ïâ¨)
xor eax,eax
mov ax,[tree2.info_size]
imul ecx,eax ;умножаем индекс на размер структуры
add ecx,[tree2.data_info] ;ecx - указатель данные родительского узла
imul ecx,eax ;㬭®¦ ¥¬ ¨­¤¥ªá ­  à §¬¥à áâàãªâãàë
add ecx,[tree2.data_info] ;ecx - 㪠§ â¥«ì ¤ ­­ë¥ த¨â¥«ì᪮£® 㧫 
;проверку на правильность ecx ???
;¯à®¢¥àªã ­  ¯à ¢¨«ì­®áâì ecx ???
stdcall insert_text_prop, ecx,0 ;тип переменной
stdcall insert_text_prop, ecx,0 ;⨯ ¯¥à¥¬¥­­®©
insert_sp
stdcall insert_text_prop, ebx,1 ;значение
stdcall insert_text_prop, ebx,1 ;§­ ç¥­¨¥
stdcall get_obj_text_col,ebx,2 ;комментарий
stdcall get_obj_text_col,ebx,2 ;ª®¬¬¥­â à¨©
stdcall str_len,edx
cmp eax,1
jl @f
@ -1350,14 +1334,14 @@ endp
;--- текстовые константы ---
;--- ⥪áâ®¢ë¥ ª®­áâ ­âë ---
txt_str_beg db 39,0
txt_str_end db 39,',0',0
txt_coma db ',',0
txt_skob_o db '(',0
txt_skob_c db ')',0
txt_skob_fo db '{',0 ;скобка фигурная открывающая
txt_skob_fc db '}',0 ;скобка фигурная закрывающая
txt_skob_fo db '{',0 ;᪮¡ª  䨣ãà­ ï ®âªà뢠îé ï
txt_skob_fc db '}',0 ;᪮¡ª  䨣ãà­ ï § ªà뢠îé ï
txt_i_40 db 'int 0x40',13,0
txt_0 db '0',0
txt_1 db '1',0
@ -1396,14 +1380,10 @@ txt_head_l db 'head_f_l',0
txt_err_m_i_lib db 'err_msg_import_',0
txt_head_i db 'head_f_i',0
txt_ll_end db 'l_libs_end:',13,0
txt_bit_28 db '0x10000000',0
;txt_bit_28 db '0x10000000',0
txt_bit_29 db '0x20000000',0
txt_bit_30 db '0x40000000',0
txt_bit_31 db '0x80000000',0
txt_bit_che db 'ch_flag_en',0
txt_bit_che_t db 'ch_flag_top',0
txt_bit_che_m db 'ch_flag_middle',0
txt_bit_che_b db 'ch_flag_bottom',0
;txt_bit_31 db '0x80000000',0
txt_0x33000000 db '0x33000000',0 ;tmp
txt_struc db 'struc',0
txt_t db 't',0
@ -1460,9 +1440,9 @@ txt_key_2:
db 9,'jmp still',13
txt_key_3:
;получаем порядковый номер объекта относительно памяти элемента tree2
;¯®«ãç ¥¬ ¯®à浪®¢ë© ­®¬¥à ®¡ê¥ªâ  ®â­®á¨â¥«ì­® ¯ ¬ïâ¨ í«¥¬¥­â  tree2
;output:
; txt_buf - строка с номером объекта
; txt_buf - áâப  á ­®¬¥à®¬ ®¡ê¥ªâ 
align 4
proc get_obj_id_str, p_obj:dword, txt_buf:dword
push eax ecx edx
@ -1480,9 +1460,9 @@ proc get_obj_id_str, p_obj:dword, txt_buf:dword
ret
endp
;получаем порядковый номер объекта относительно памяти элемента tree2
;¯®«ãç ¥¬ ¯®à浪®¢ë© ­®¬¥à ®¡ê¥ªâ  ®â­®á¨â¥«ì­® ¯ ¬ïâ¨ í«¥¬¥­â  tree2
;output:
; eax - номер объекта
; eax - ­®¬¥à ®¡ê¥ªâ 
align 4
proc get_obj_id, p_obj:dword
push ecx edx
@ -1496,7 +1476,35 @@ proc get_obj_id, p_obj:dword
ret
endp
;--- текстовые функции ---
;--- ⥪áâ®¢ë¥ ä㭪樨 ---
;¢ë¡¨à ¥¬ áâப㠨§ ¬ á¨¢ , ¯® 㪠§ ­­®¬ã ¨­¤¥ªáã
;input:
; str - 㪠§ â¥«ì ­  ¬ á¨¢ áâப
; ind - ¨­¤¥ªá ¨áª®¬®© áâப¨
;output:
; edi - 㪠§ â¥«ì ­  ­ ©¤¥­ãî áâபã
align 4
proc get_string_by_ind, str:dword, ind:dword
push eax ebx ecx
mov edi,[str]
mov ebx,[ind]
xor al,al ;0 - ᨬ¢®« ª®­æ  áâப¨
@@:
cmp ebx,0
jle @f ;¥á«¨ ­ ©¤¥­  áâப  á 㪠§ ­­ë¬ ¨­¤¥ªá®¬
xor ecx,ecx
dec ecx ;ecx - ç¨á«® ¯à®á¬ âਢ ¥¬ëå ¡ ©â
cld
repne scasb ;¨é¥¬ ª®­¥æ áâப¨ (al=0)
cmp byte[edi],0
je @f ;¥á«¨ á«¥¤ãî饩 áâப¨ ­¥â ¢ë室 ¨§ 横« 
dec ebx
jmp @b
@@:
pop ecx ebx eax
ret
endp
align 4
proc mem_clear, mem:dword, len:dword
@ -1566,17 +1574,17 @@ tl_convert_to_str:
align 4
.str:
mov ecx,0x0a ;задается система счисления изменяются регистры ebx,eax,ecx,edx входные параметры eax - число
;преревод числа в ASCII строку входные данные ecx=система счисленя edi адрес куда записывать, будем строку, причем конец переменной
cmp eax,ecx ;сравнить если в eax меньше чем в ecx то перейти на @@-1 т.е. на pop eax
mov ecx,0x0a ;§ ¤ ¥âáï á¨á⥬  áç¨á«¥­¨ï ¨§¬¥­ïîâáï ॣ¨áâàë ebx,eax,ecx,edx ¢å®¤­ë¥ ¯ à ¬¥âàë eax - ç¨á«®
;¯à¥à¥¢®¤ ç¨á«  ¢ ASCII áâப㠢室­ë¥ ¤ ­­ë¥ ecx=á¨á⥬  áç¨á«¥­ï edi  ¤à¥á ªã¤  § ¯¨á뢠âì, ¡ã¤¥¬ áâபã, ¯à¨ç¥¬ ª®­¥æ ¯¥à¥¬¥­­®©
cmp eax,ecx ;áà ¢­¨âì ¥á«¨ ¢ eax ¬¥­ìè¥ ç¥¬ ¢ ecx â® ¯¥à¥©â¨ ­  @@-1 â.¥. ­  pop eax
jb @f
xor edx,edx ;очистить edx
div ecx ;разделить - остаток в edx
push edx ;положить в стек
;dec edi ;смещение необходимое для записи с конца строки
call .str ;перейти на саму себя т.е. вызвать саму себя и так до того момента пока в eax не станет меньше чем в ecx
xor edx,edx ;®ç¨áâ¨âì edx
div ecx ;à §¤¥«¨âì - ®áâ â®ª ¢ edx
push edx ;¯®«®¦¨âì ¢ á⥪
;dec edi ;ᬥ饭¨¥ ­¥®¡å®¤¨¬®¥ ¤«ï § ¯¨á¨ á ª®­æ  áâப¨
call .str ;¯¥à¥©â¨ ­  á ¬ã ᥡï â.¥. ¢ë§¢ âì á ¬ã á¥¡ï ¨ â ª ¤® ⮣® ¬®¬¥­â  ¯®ª  ¢ eax ­¥ áâ ­¥â ¬¥­ìè¥ ç¥¬ ¢ ecx
pop eax
@@: ;cmp al,10 ;проверить не меньше ли значение в al чем 10 (для системы счисленя 10 данная команда - лишная))
or al,0x30 ;данная команда короче чем две выше
stosb ;записать элемент из регистра al в ячеку памяти es:edi
@@: ;cmp al,10 ;¯à®¢¥à¨âì ­¥ ¬¥­ìè¥ «¨ §­ ç¥­¨¥ ¢ al 祬 10 (¤«ï á¨á⥬ë áç¨á«¥­ï 10 ¤ ­­ ï ª®¬ ­¤  - «¨è­ ï))
or al,0x30 ;¤ ­­ ï ª®¬ ­¤  ª®à®ç¥ 祬 ¤¢¥ ¢ëè¥
stosb ;§ ¯¨á âì í«¥¬¥­â ¨§ ॣ¨áâà  al ¢ ï祪㠯 ¬ï⨠es:edi
ret

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 748 B

View File

@ -0,0 +1,160 @@
<html>
<head>
<title>Оглавление</title>
<meta http-equiv="content-type" content="text/html; charset=WINDOWS-1251">
<style>
body
{
font-size: 15px;
font-family: "Bookman Old Style";
color: black;
text-align: justify;
}
h1 { color: green; font-size: 23px; }
h2 { color: green; font-size: 21px; }
h3 { color: green; font-size: 19px; }
h4 { color: #803f00; font-size: 17px; }
i { color: #0099cc; }
b { color: #0099cc; }
p {
text-indent: 1em;
margin-top: 3px;
margin-bottom: 2px;
margin-left: 0px;
margin-right: 0px;
}
ol, ul, dl{
margin-top: 3px;
margin-bottom: 2px;
}
pre
{
padding: 2px;
padding-left: 20px;
margin-top: 5px;
margin-bottom: 5px;
margin-left: 0px;
margin-right: 0px;
font-family: "Courier New";
font-size: 15px;
color: #004000;
background-color: #ffd0ff;
}
table
{
font-size: 15px;
}
</style>
</head>
<body>
<h1>Kol_f_edit версия от 22.12.2010</h1>
<p>Оглавление</p>
<ul>
<li>О программе</li>
<li><a href="#algor">Алгоритм работы с программой</a></li>
<li><a href="#v_obj">Виды объектов</a></li>
<ul>
<li><a href="#obj_type">Тип даного</a></li>
<li><a href="#obj_vari">Переменная</a></li>
<li><a href="#obj_stru">Структура</a></li>
<li><a href="#obj_code">Asm код</a></li>
<li><a href="#obj_auto">Авто код</a></li>
<li><a href="#obj_libr">Импорт библиотеки</a></li>
</ul>
</ul>
<h2>О программе</h2>
<p>Программа для автоматизации создания интерфейса.
Многие функции программы пока еще не сделаны, потому возможности ее практического использования минимальные.
Лицензия свободная.</p>
<p><img src="about.png"></p>
<p>Внешний вид программы.</p>
<h2><a name="algor">Алгоритм работы с программой</a></h2>
<p>1) Открываем шаблон программы из файла <b>min_prog.ced</b> или <b>box_l.ced</b>
(min_prog.ced - &quot;минимальная&quot; программа, box_l.ced - программа с подключением библиотеки box_lib.obj, планируеться добавление других шаблонов</i>)</p>
<p>2) Редактируем объекты в подключенном файле <b>*.ced</b></p>
<p>3) Создаем <b>*.asm</b> код в текстовом окне кнопкой на панели. Сохраняем <b>*.asm</b> код на диск (<i>работоспособность получившегося файла не гарантируется, т. к. многие элементы еще доконца не запрограмированы</i>)</p>
<p>4) Редактируем получившийся <b>*.asm</b> файл любым текстовым редактором</p>
<h2><a name="v_obj">Виды объектов</a></h2>
<p>Програмный код создается на основе свойств объектов, внесенных в файл проэкта. Все объекты внутри програмы представляються структурами вида:</p>
<pre>struct object
id dd ? ;идентификатор объекта
txt rb MAX_LEN_OBJ_TXT ;текстовые свойства
lvl db 0
clo db 0
typid dd ? ;номер объекта определяющего тип переменной
modif dd ? ;битовые свойства
ends</pre>
<p>В зависимости от вида объекта не все его параметры могут использоваться.
Большая часть свойств объекта задается параметрами: <b>txt</b> (текстовые свойства), <b>typid</b> и <b>modif</b> (битовые свойства).
Редактирование оъектов совершается через окно свойств объекта.
При создании объекта текстовые свойства вносятся в текстовые поля (элементы editbox слевой стороны окна);
битовые свойства задаются флажками (находятся справой стороны в нижнем углу окна) а тип объекта выбирается из списка, который доступен только при редактировании переменных (находятся справой стороны в верхнем углу окна).</p>
<p>Для открытия окна со свойствами объекта нужно выбрать редактируемый объект и нажать <b>[Enter]</b> или кнопку <img src="property.png"> на панели инструментов.</p>
<h3><a name="obj_type">Тип даного</a></h3>
<img src="prop_type.png">
<p>Переменные в програмном коде имеют разные типы данных. Этот объект служит для задания типов данных, с которыми в последствии можно связывать объекты переменных. Один объект типа данных может много раз использоваться для задания типов переменных.</p>
<h3><a name="obj_vari">Переменная</a></h3>
<img src="prop_vari.png">
<p>Объект переменной содержит 3 текстовых свойства: 1) имя переменной, 2) значение по умолчанию, 3) комментарий;
и одну ссылку на объект типа данного или объект структуры.</p>
<h3><a name="obj_stru">Структура</a></h3>
<img src="prop_stru.png">
<p>Объект структуры содержит 2 текстовых свойства: 1) имя структуры, 2) параметры для макроса. Свойство <i>параметры для макроса</i> не обязательно для заполнения.
Структура должна содержать в себе переменные. Все объекты переменных структуры должны быть расположены уровнем ниже чем объект структуры, таким образом программа при создании кода определит где находится начало и конец данных структуры.</p>
<h3><a name="obj_code">Asm код</a></h3>
<img src="prop_code.png">
<p>Объект содержащий програмный код, который вставляется в генерируемую программу.
Длина кода ограничивается размером константы MAX_LEN_OBJ_TXT (200 символов).
Подобный объект нужен для задания каких-либо готовых пользовательских функций или для выхода из нестандартных заранее не предусмотренных ситуаций.
Может возникнуть ситуация, когда через использование других объектов решение задачи может оказаться нецелесообразным, например такой код:</p>
<pre>struct p
a dd ?
b dd ?
ends</pre>
<p>Можно создать из 3-х обектов: 1-на структура и 2 переменные или обойтись 1-м объектом <i>asm кода</i>.</p>
<h3><a name="obj_auto">Авто код</a></h3>
<img src="prop_auto.png">
<p>Для програмирования некоторых объектов необходимо написание кода в разных местах программы.
Но один объект не может создавать свой код в разных местах. Для решения этой задачи был создан объект <b>авто кода</b>.
Он может автоматически создавать коды других объектов.
Этот объект содержит текстовое свойство, которое используется как подсказка пользователю, но в програмный код не попадает.
Также содержит флаги, от которых зависит какой именно код будет создаваться, вот они:</p>
<ul>
<li>первоначальные настройки элементов</li>
<li>события от мыши</li>
<li>коды элементов</li>
<li>нажатия на кнопки</li>
</ul>
<p>Этот объект работает в связке с другими объектами, а сам по себе никакого кода не создает.</p>
<h3><a name="obj_libr">Импорт библиотеки</a></h3>
<img src="prop_libr.png">
<p>Данный объект служит для создания структуры импорта библиотеки. Содержит параметры:</p>
<ul>
<li>имя библиотеки</li>
<li>путь к системной директории для поиска библиотеки</li>
<li>метка используемая при импорте</li>
<li>приставка, которая будет добавляться перед именем каждой импортируемой функции</li>
<li>текст ошибки который появляется если библиотека не найдена</li>
<li>текст ошибки который появляется если возникли проблемы с импортом функций из библиотеки</li>
</ul>
<p>Для создания програмного кода этого объекта нужен объект <a href="#obj_auto">авто кода</a> с включенной опцией <b>коды элементов</b>.
Этот объект используется вместе с объектами <b>функция из библиотеки</b>, которые должны быть дочерними для него.</p>
<h3></h3>
<p></p>
<h2>Автор</h2>
<p>Игорь А. (IgorA) - разработка программы.</p>
</body>
</html>

View File

@ -20,7 +20,7 @@ include 'obj_codes.inc'
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc, dll.Load
hed db 'kol_f_edit 18.12.10',0
hed db 'kol_f_edit 22.12.10',0
sizeof.TreeList equ 20 ;need for element 'tree_list'
@ -37,7 +37,7 @@ buf2d_bits equ byte[edi+20] ;
MAX_CED_OBJECTS equ 200
MAX_OPT_FIELDS equ 11
MAX_OBJ_TYPES equ 18 ;¬ ªá¨¬ «ì­®¥ ç¨á«® ®¡ê¥ªâ®¢
MAX_OBJ_TYPES equ 17 ;¬ ªá¨¬ «ì­®¥ ç¨á«® ®¡ê¥ªâ®¢
MAX_OBJ_CAPTIONS equ 1000 ;à §¬¥à ¤®¯®«­¨â¥«ì­ëå ¯®¤¯¨á¥© ¯®¤¯¨á¥©
WND_CAPT_COLOR equ 0xb0d0ff
BUF_SIZE equ 1000
@ -58,8 +58,8 @@ BIT_MOD_CHE_B equ 3 ;᭨
BIT_MOD_TXT_ASCII_0 equ 0 ;⥪áâ § ª ­ç¨¢. 0
BIT_MOD_TXT_NO_TRAN equ 1 ;⥪á⠯஧à ç­ë©
BIT_MOD_TXT_CHAR2 equ 2 ;⥪áâ 2-¬ èà¨ä⮬
;CPP_MOD_EDIT_FOC equ 1 ;EditBox ¢ 䮪ãá¥
;CPP_MOD_EDIT_FIO equ 2 ;
BIT_MOD_EDIT_FOC equ 0 ;EditBox ¢ 䮪ãá¥
BIT_MOD_EDIT_FIO equ 1 ;
;CPP_MOD_RE_GR equ 1 ;£à ¤¨¥­â­ë© ¯àאַ㣮«ì­¨ª
BIT_MOD_BUT_NFON equ 0 ;á⨫ì Button ­¥ à¨á®¢ âì ª­®¯ªã
BIT_MOD_BUT_NBORD equ 1 ;á⨫ì Button ­¥ à¨á®¢ âì £à ­¨æã
@ -121,7 +121,8 @@ struct ObjOpt
caption rb MAX_OPT_CAPTION
Col rw MAX_OPT_FIELDS
img rw MAX_OPT_FIELDS ;¨­¤¥ªáë ª à⨭®ª (¢ ä ©«¥ 'icon.bmp')
bit_prop dd 0 ;¡¨â®¢ë¥ ᢮©á⢠
bit_prop dd 0 ;¡¨â®¢ë¥ ᢮©á⢠ (¯®¤¯¨á¨, ­ §¢ ­¨ï)
bit_val dd 0 ;¡¨â®¢ë¥ ᢮©á⢠ (§­ ç¥­¨ï, ª®­áâ ­âë)
ends
SKIN_H equ 22
@ -728,7 +729,7 @@ proc get_obj_npp, p_obj_str:dword
pop edx
@@:
cmp edx,0
je @f
je .no_exist
cmp edx,ebx
je @f
@ -736,6 +737,8 @@ proc get_obj_npp, p_obj_str:dword
stdcall [tl_node_poi_get_next_info], edx,tree2
pop edx ;¯¥à¥å®¤¨¬ ª á«¥¤ã饬ã 㧫ã
jmp @b
.no_exist: ;ª®£¤  ¨¤¥â áá뫪  ­  ­¥ áãé¥áâ¢ãî騩 ®¡ê¥ªâ
xor eax,eax ;®¡­ã«ï¥¬ 㪠§ â¥«ì, çâ®-¡ë ­¥ á®åà ­ïâì ¢ ä ©« ¬ãá®à
@@:
pop edx ebx
ret
@ -1209,7 +1212,7 @@ import_buf2d_lib:
buf2d_line dd sz_buf2d_line
buf2d_rect_by_size dd sz_buf2d_rect_by_size
buf2d_filled_rect_by_size dd sz_buf2d_filled_rect_by_size
buf2d_circle dd sz_buf2d_circle
;buf2d_circle dd sz_buf2d_circle
buf2d_img_hdiv2 dd sz_buf2d_img_hdiv2
buf2d_img_wdiv2 dd sz_buf2d_img_wdiv2
buf2d_conv_24_to_8 dd sz_buf2d_conv_24_to_8
@ -1217,10 +1220,10 @@ import_buf2d_lib:
buf2d_bit_blt dd sz_buf2d_bit_blt
buf2d_bit_blt_transp dd sz_buf2d_bit_blt_transp
buf2d_bit_blt_alpha dd sz_buf2d_bit_blt_alpha
buf2d_cruve_bezier dd sz_buf2d_cruve_bezier
;buf2d_curve_bezier dd sz_buf2d_curve_bezier
buf2d_convert_text_matrix dd sz_buf2d_convert_text_matrix
buf2d_draw_text dd sz_buf2d_draw_text
buf2d_crop_color dd sz_buf2d_crop_color
;buf2d_crop_color dd sz_buf2d_crop_color
buf2d_offset_h dd sz_buf2d_offset_h
dd 0,0
sz_lib_init db 'lib_init',0
@ -1232,7 +1235,7 @@ dd 0,0
sz_buf2d_line db 'buf2d_line',0
sz_buf2d_rect_by_size db 'buf2d_rect_by_size',0 ;à¨á®¢ ­¨¥ ¯àאַ㣮«ì­¨ª , 2-ï ª®®à¤¨­ â  § ¤ ­  ¯® à §¬¥àã
sz_buf2d_filled_rect_by_size db 'buf2d_filled_rect_by_size',0
sz_buf2d_circle db 'buf2d_circle',0 ;à¨á®¢ ­¨¥ ®ªà㦭®áâ¨
;sz_buf2d_circle db 'buf2d_circle',0 ;à¨á®¢ ­¨¥ ®ªà㦭®áâ¨
sz_buf2d_img_hdiv2 db 'buf2d_img_hdiv2',0
sz_buf2d_img_wdiv2 db 'buf2d_img_wdiv2',0
sz_buf2d_conv_24_to_8 db 'buf2d_conv_24_to_8',0
@ -1240,10 +1243,10 @@ dd 0,0
sz_buf2d_bit_blt db 'buf2d_bit_blt',0
sz_buf2d_bit_blt_transp db 'buf2d_bit_blt_transp',0
sz_buf2d_bit_blt_alpha db 'buf2d_bit_blt_alpha',0
sz_buf2d_cruve_bezier db 'buf2d_cruve_bezier',0
;sz_buf2d_curve_bezier db 'buf2d_curve_bezier',0
sz_buf2d_convert_text_matrix db 'buf2d_convert_text_matrix',0
sz_buf2d_draw_text db 'buf2d_draw_text',0
sz_buf2d_crop_color db 'buf2d_crop_color',0
;sz_buf2d_crop_color db 'buf2d_crop_color',0
sz_buf2d_offset_h db 'buf2d_offset_h',0
align 4

View File

@ -2,7 +2,7 @@
include 'obj_codes.inc'
macro ObjOpt id,bl_type,graph,info,caption,Col,img,bit_prop
macro ObjOpt id,bl_type,graph,info,caption,Col,img,bit_prop,bit_val
{
dd id
db bl_type
@ -13,7 +13,8 @@ rb @b+30-$
rb @b+MAX_OPT_CAPTION-$
dw Col
dw img ;¨­¤¥ªáë ª à⨭®ª (¢ ä ©«¥ 'icon.bmp')
dd bit_prop+0
dd bit_prop+0 ;㪠§ â¥«ì ­  ­ §¢ ­¨ï ¡¨â®¢ëå ᢮©áâ¢
dd bit_val+0 ;㪠§ â¥«ì ­  §­ ç¥­¨ï (ª®­áâ ­âë) ¡¨â®¢ëå ᢮©áâ¢
}
ObjOpt C_TDF, 0,0,'’¨¯ ¤ ­­®£®','',\
@ -37,14 +38,14 @@ ObjOpt C_EDB, 1,1,'
'¨¬ï áâàãªâãàë editbox*è¨à¨­  ¯®«ï*®âáâ㯠᫥¢ *®âáâ㯠ᢥàåã*梥â ä®­ *梥⠢뤥«¥­¨ï ¯à¨ 㤥ন¢ ­¨¨ shift ¨«¨ ¬ë誮©*梥â à ¬ª¨*梥â à ¬ª¨ ¯à¨ ­¥ ªâ¨¢­®¬ ¯®«¥*梥â ⥪áâ *¬ ªá¨¬ «ì­ ï ¤«¨­  ⥪áâ *­ ç «ì­ë© ⥪áâ',\
<30, 40, 50, 60, 80,100,120,140,160,170, 0>,\
<10, 26, 15, 16, 25, 25, 25, 25, 25, -1, 4>,\
txt_bit_edit
txt_bit_edit,txt_bit_edit.v
ObjOpt C_OPT, 1,1,'<27> ¤¨® ª­®¯ª ','¨¬ï*®âáâ㯠᫥¢ *®âáâ㯠ᢥàåã*梥â ä®­  ¢­ãâà¨*梥â à ¬ª¨ ¨ ¢­ãâà. £ «®çª¨*梥â ⥪áâ *¯®¤¯¨áì*®âáâ㯠¤® ­ ¤¯¨á¨*à §¬¥à ª¢ ¤à â ',\
<40, 50, 60, 80,100,120,180,190, 0, 0, 0>,\
< 9, 15, 16, 25, 25, 25, 4, 26, 27, -1, -1>
ObjOpt C_CHB, 1,1,'”« ¦®ª','¨¬ï áâàãªâãàë*®âáâ㯠᫥¢ *®âáâ㯠ᢥàåã*è¨à¨­ *¢ëá®â *®âáâ㯠¤® ­ ¤¯¨á¨*梥â ä®­  ¢­ãâà¨*梥â à ¬ª¨ ¨ ¢­ãâà. £ «®çª¨*梥â ⥪áâ *¯®¤¯¨áì',\
<40, 50, 60, 70, 80, 90,110,130,150, 0, 0>,\
< 8, 15, 16, 26, 27, 26, 25, 25, 25, 4,-1>,\
txt_bit_che
txt_bit_che,txt_bit_che.v
ObjOpt C_TXT, 1,0,'asm ª®¤','',\
< 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0>,\
<11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1>
@ -52,9 +53,6 @@ ObjOpt C_WND, 1,1,'
<98,100,110,120,130,150,170, 0, 0, 0, 0>,\
<12, -1, 15, 16, 26, 27, 25, 25, -1, -1, -1>,\
txt_bit_wnd
ObjOpt C_COM, 1,0,'Š®¬¬¥­â à¨©','áâப  ª®¬¬¥­â à¨ï',\
< 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0>,\
< 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1>
ObjOpt C_INC, 1,0,'‚ª«î祭¨¥ ä ©« ','¨¬ï ä ©« *ª®¬¬¥­â à¨©',\
<100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0>,\
< 6, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1>
@ -68,7 +66,7 @@ ObjOpt C_IFN, 1,0,'
ObjOpt C_DTT, 1,1,'<27>¨á®¢ ­¨¥ ⥪áâ ','⥪á⮢ ï áâப *ª®®à¤¨­ â  ¯® x*ª®®à¤¨­ â  ¯® y*梥â ⥪áâ *梥â ä®­  (¥á«¨ ¥áâì)',\
<40, 50, 60, 80, 0, 0, 0, 0, 0, 0, 0>,\
< 4, 15, 16, 25, 25, -1, -1, -1, -1, -1, -1>,\
txt_bit_caption
txt_bit_caption,txt_bit_caption.v
ObjOpt C_REC, 1,1,'<27>àאַ㣮«ì­¨ª','梥â*®âáâ㯠᫥¢ *®âáâ㯠ᢥàåã*è¨à¨­ *¢ëá®â ',\
<20, 40, 60, 80, 0, 0, 0, 0, 0, 0, 0>,\
<25, 15, 16, 26, 27, -1, -1, -1, -1, -1, -1>
@ -95,11 +93,21 @@ txt_bit_wnd db '
txt_bit_edit db '¢ 䮪ãá¥',0
db 'æ¨äàë ®â 0-9',0
db 0
.v:
db 'ed_focus',0
db 'ed_figure_only',0
db 0
txt_bit_che db 'check_box ¢ë¡à ­',0
db '⥪áâ c¢¥àåã',0
db '⥪áâ ¯® 業âàã',0
db '⥪áâ c­¨§ã',0
db 0
.v:
db 'ch_flag_en',0
db 'ch_flag_top',0
db 'ch_flag_middle',0
db 'ch_flag_bottom',0
db 0
txt_bit_but db '­¥ à¨á®¢ âì ª­®¯ªã',0
db '­¥ à¨á®¢ âì £à ­¨æ㠯ਠ­ ¦ â¨¨',0
db 0
@ -107,5 +115,10 @@ txt_bit_caption db '
db '§ «¨¢ª  ä®­ ',0
db '2-© èà¨äâ',0
db 0
.v:
db '0x80000000',0
db '0x40000000',0
db '0x10000000',0
db 0
txt_bit_ifn db '§ ª®¬¥­â¨à®¢ âì äã­ªæ¨î',0
db 0

View File

@ -6,9 +6,8 @@ C_TDF equ 'Type' ;typedef
C_ACO equ 'Auto' ;𨯂漅<EFBFBD>漼蟡嶊言 狙月 (auto code)
C_STR equ ('s' shl 24) ;struct
C_INC equ ('#' shl 24) ;include
C_TXT equ ('d' shl 24) ;¡«®ª ª®¤  (¤ ­­ëå)
C_TXT equ 'Code' ;¡«®ª ª®¤  (¤ ­­ëå)
C_VAR equ ('-' shl 24) ;砲鄍洛限𩤃
C_COM equ (';' shl 24) ;ª®¬¬¥­â à¨©
C_WND equ ('w' shl 24) ;悚陋
C_CHB equ 'ChkB' ;CheckBox
C_OPT equ ('o' shl 24) ;OptionBox

View File

@ -1,70 +0,0 @@
<html>
<head>
<title>Оглавление</title>
<meta http-equiv="content-type" content="text/html; charset=WINDOWS-1251">
<style>
body
{
font-size: 15px;
font-family: "Bookman Old Style";
color: black;
text-align: justify;
}
h1 { color: green; font-size: 23px; }
h2 { color: green; font-size: 21px; }
h3 { color: green; font-size: 19px; }
h4 { color: #803f00; font-size: 17px; }
i { color: #0099cc; }
b { color: #0099cc; }
p {
text-indent: 1em;
margin-top: 3px;
margin-bottom: 2px;
margin-left: 0px;
margin-right: 0px;
}
ol, ul, dl{
margin-top: 3px;
margin-bottom: 2px;
}
pre
{
padding: 2px;
padding-left: 20px;
margin-top: 5px;
margin-bottom: 5px;
margin-left: 0px;
margin-right: 0px;
font-family: "Courier New";
font-size: 15px;
color: #004000;
background-color: #ffd0ff;
}
table
{
font-size: 15px;
}
</style>
</head>
<body>
<h1>Kol_f_edit версия от 20.11.2010</h1>
<h2>О программе</h2>
<p>Программа для автоматизации создания интерфейса.
Многие функции программы пока еще не сделаны, потому возможности ее практического использования минимальные.
Лицензия свободная.</p>
<p><img src="about.png"></p>
<p>Внешний вид программы.</p>
<h2>Алгоритм работы с программой</h2>
<p>1) Открываем шаблон программы из файла <b>min_prog.ced</b> или <b>box_l.ced</b>
(min_prog.ced - &quot;минимальная&quot; программа, box_l.ced - программа с подключением библиотеки box_lib.obj, планируеться добавление других шаблонов</i>)</p>
<p>2) Редактируем объекты в подключенном файле <b>*.ced</b> (<i>более подробные инструкции по редактированию добавлю когда программа будет готова</i>)</p>
<p>3) Создаем <b>*.asm</b> код в текстовом окне кнопкой на панели. Сохраняем <b>*.asm</b> код на диск (<i>работоспособность получившегося файла не гарантируется, т. к. многие элементы еще доконца не запрограмированы</i>)</p>
<p>4) Редактируем получившийся <b>*.asm</b> файл любым текстовым редактором</p>
<h2>Автор</h2>
<p>Игорь А. (IgorA) - разработка программы.</p>
</body>
</html>

View File

@ -62,7 +62,7 @@ table { font-size: 15px; }
С ее помощью можно создавать буфера с изображениями в памяти, и при необходимости выводить их на экран.
Изображения можно накладывать одно на другое, поддерживается работа с прозрачными изображениями, есть функция рисования лини пока на этом все.</p>
<p>Ïîñëåäíåå îáíîâëåíèå áèáëèîòåêè 02.11.10.</p>
<p>Ïîñëåäíåå îáíîâëåíèå áèáëèîòåêè 22.12.10.</p>
<h1><a name="f_buf">Форматы буферов</a></h1>
<p>Поддерживается 3 формата буферов.
@ -161,7 +161,7 @@ buf_0:
<p>Рисует в буфере изображение из другого буфера в указанных координатах, при этом учитывается прозрачность.
Буфер который будет нарисован должен быть 8 битным, а тот в котором рисуют 24 битным.</p>
<h4>buf2d_cruve_bezier</h4>
<h4>buf2d_curve_bezier</h4>
<p>Рисует по трем точкам отрезок кривой безье.</p>
<h4>buf2d_convert_text_matrix</h4>
@ -229,7 +229,7 @@ import_buf2d_lib:
buf2d_bit_blt dd sz_buf2d_bit_blt
buf2d_bit_blt_transp dd sz_buf2d_bit_blt_transp
buf2d_bit_blt_alpha dd sz_buf2d_bit_blt_alpha
buf2d_cruve_bezier dd sz_buf2d_cruve_bezier
buf2d_curve_bezier dd sz_buf2d_curve_bezier
buf2d_convert_text_matrix dd sz_buf2d_convert_text_matrix
buf2d_draw_text dd sz_buf2d_draw_text
buf2d_crop_color dd sz_buf2d_crop_color
@ -254,7 +254,7 @@ import_buf2d_lib:
sz_buf2d_bit_blt db 'buf2d_bit_blt',0
sz_buf2d_bit_blt_transp db 'buf2d_bit_blt_transp',0
sz_buf2d_bit_blt_alpha db 'buf2d_bit_blt_alpha',0
sz_buf2d_cruve_bezier db 'buf2d_cruve_bezier',0
sz_buf2d_curve_bezier db 'buf2d_curve_bezier',0
sz_buf2d_convert_text_matrix db 'buf2d_convert_text_matrix',0
sz_buf2d_draw_text db 'buf2d_draw_text',0
sz_buf2d_crop_color db 'buf2d_crop_color',0
@ -274,5 +274,6 @@ import_buf2d_lib:
<p>07.10.10 - доработана функция buf_bit_blt (при попытке нарисовать изображение за пределами правого края буфера приложение вызвавшее функцию падало).</p>
<p>11.10.10 - исправлено задание цветов в некоторых функциях, красный и синий цвета поменял местами. Теперь цвета совпадают с сисемными функциями.</p>
<p>02.11.10 - добавлена функция buf2d_flood_fill.</p>
<p>22.12.10 - èçìåíåíî èìÿ ôóíêöèè buf2d_cruve_bezier íà buf2d_curve_bezier.</p>
</body>
</html>

View File

@ -2164,7 +2164,7 @@ line_len4i:
ret 4 ;8
align 4
proc buf_cruve_bezier, buffer:dword, coord_p0:dword,coord_p1:dword,coord_p2:dword, color:dword
proc buf_curve_bezier, buffer:dword, coord_p0:dword,coord_p1:dword,coord_p2:dword, color:dword
locals
delt_t dd ?
opr_param dd ?
@ -2179,7 +2179,7 @@ proc buf_cruve_bezier, buffer:dword, coord_p0:dword,coord_p1:dword,coord_p2:dwor
; dc.SetPixel(xt,yt,255L);
;}
mov edx,[color] ;set cruve color
mov edx,[color] ;set curve color
mov edi,[buffer]
xor ebx,ebx
xor ecx,ecx
@ -2305,7 +2305,7 @@ EXPORTS:
dd sz_buf2d_bit_blt, buf_bit_blt
dd sz_buf2d_bit_blt_transp, buf_bit_blt_transp
dd sz_buf2d_bit_blt_alpha, buf_bit_blt_alpha
dd sz_buf2d_cruve_bezier, buf_cruve_bezier
dd sz_buf2d_curve_bezier, buf_curve_bezier
dd sz_buf2d_convert_text_matrix, buf_convert_text_matrix
dd sz_buf2d_draw_text, buf_draw_text
dd sz_buf2d_crop_color, buf_crop_color
@ -2329,7 +2329,7 @@ EXPORTS:
sz_buf2d_bit_blt db 'buf2d_bit_blt',0
sz_buf2d_bit_blt_transp db 'buf2d_bit_blt_transp',0
sz_buf2d_bit_blt_alpha db 'buf2d_bit_blt_alpha',0
sz_buf2d_cruve_bezier db 'buf2d_cruve_bezier',0
sz_buf2d_curve_bezier db 'buf2d_curve_bezier',0
sz_buf2d_convert_text_matrix db 'buf2d_convert_text_matrix',0
sz_buf2d_draw_text db 'buf2d_draw_text',0
sz_buf2d_crop_color db 'buf2d_crop_color',0

View File

@ -1365,7 +1365,7 @@ import_buf2d_lib:
buf2d_bit_blt dd sz_buf2d_bit_blt
buf2d_bit_blt_transp dd sz_buf2d_bit_blt_transp
buf2d_bit_blt_alpha dd sz_buf2d_bit_blt_alpha
buf2d_cruve_bezier dd sz_buf2d_cruve_bezier
buf2d_curve_bezier dd sz_buf2d_curve_bezier
buf2d_convert_text_matrix dd sz_buf2d_convert_text_matrix
buf2d_draw_text dd sz_buf2d_draw_text
buf2d_crop_color dd sz_buf2d_crop_color
@ -1386,7 +1386,7 @@ import_buf2d_lib:
sz_buf2d_bit_blt db 'buf2d_bit_blt',0
sz_buf2d_bit_blt_transp db 'buf2d_bit_blt_transp',0
sz_buf2d_bit_blt_alpha db 'buf2d_bit_blt_alpha',0
sz_buf2d_cruve_bezier db 'buf2d_cruve_bezier',0
sz_buf2d_curve_bezier db 'buf2d_curve_bezier',0
sz_buf2d_convert_text_matrix db 'buf2d_convert_text_matrix',0
sz_buf2d_draw_text db 'buf2d_draw_text',0
sz_buf2d_crop_color db 'buf2d_crop_color',0