diff --git a/programs/develop/kol_f_edit/about.png b/programs/develop/kol_f_edit/about.png deleted file mode 100644 index 71a02559f5..0000000000 Binary files a/programs/develop/kol_f_edit/about.png and /dev/null differ diff --git a/programs/develop/kol_f_edit/box_l.ced b/programs/develop/kol_f_edit/box_l.ced index bd91b698be..a37f47235b 100644 Binary files a/programs/develop/kol_f_edit/box_l.ced and b/programs/develop/kol_f_edit/box_l.ced differ diff --git a/programs/develop/kol_f_edit/ced_code_g.inc b/programs/develop/kol_f_edit/ced_code_g.inc index cbab3e041e..51d7f117ee 100644 --- a/programs/develop/kol_f_edit/ced_code_g.inc +++ b/programs/develop/kol_f_edit/ced_code_g.inc @@ -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,31 +444,34 @@ 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 - stdcall insert_text,edx - stdcall insert_text,txt_met_end - stdcall insert_text,txt_minus + stdcall insert_text, edx + stdcall insert_text, txt_met_end + stdcall insert_text, txt_minus stdcall insert_text, txt_txt - stdcall insert_text,edx - stdcall insert_text,txt_minus + stdcall insert_text, edx + stdcall insert_text, txt_minus stdcall insert_text, txt_1 stdcall insert_text, txt_coma stdcall insert_text, txt_txt - stdcall insert_text,edx - stdcall insert_text,txt_met_end - stdcall insert_text,txt_minus + stdcall insert_text, edx + stdcall insert_text, txt_met_end + stdcall insert_text, txt_minus stdcall insert_text, txt_txt - stdcall insert_text,edx - stdcall insert_text,txt_minus + stdcall insert_text, edx + stdcall insert_text, txt_minus stdcall insert_text, txt_1 .null_string: insert_nl @@ -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 \ No newline at end of file diff --git a/programs/develop/kol_f_edit/docs/about.png b/programs/develop/kol_f_edit/docs/about.png new file mode 100644 index 0000000000..5e23336fc4 Binary files /dev/null and b/programs/develop/kol_f_edit/docs/about.png differ diff --git a/programs/develop/kol_f_edit/docs/prop_auto.png b/programs/develop/kol_f_edit/docs/prop_auto.png new file mode 100644 index 0000000000..c804a025bd Binary files /dev/null and b/programs/develop/kol_f_edit/docs/prop_auto.png differ diff --git a/programs/develop/kol_f_edit/docs/prop_code.png b/programs/develop/kol_f_edit/docs/prop_code.png new file mode 100644 index 0000000000..272ad182fc Binary files /dev/null and b/programs/develop/kol_f_edit/docs/prop_code.png differ diff --git a/programs/develop/kol_f_edit/docs/prop_ifun.png b/programs/develop/kol_f_edit/docs/prop_ifun.png new file mode 100644 index 0000000000..fca0134fab Binary files /dev/null and b/programs/develop/kol_f_edit/docs/prop_ifun.png differ diff --git a/programs/develop/kol_f_edit/docs/prop_libr.png b/programs/develop/kol_f_edit/docs/prop_libr.png new file mode 100644 index 0000000000..7d7f429b62 Binary files /dev/null and b/programs/develop/kol_f_edit/docs/prop_libr.png differ diff --git a/programs/develop/kol_f_edit/docs/prop_stru.png b/programs/develop/kol_f_edit/docs/prop_stru.png new file mode 100644 index 0000000000..698a30ab4f Binary files /dev/null and b/programs/develop/kol_f_edit/docs/prop_stru.png differ diff --git a/programs/develop/kol_f_edit/docs/prop_type.png b/programs/develop/kol_f_edit/docs/prop_type.png new file mode 100644 index 0000000000..e3339b5c93 Binary files /dev/null and b/programs/develop/kol_f_edit/docs/prop_type.png differ diff --git a/programs/develop/kol_f_edit/docs/prop_vari.png b/programs/develop/kol_f_edit/docs/prop_vari.png new file mode 100644 index 0000000000..5de3ab56af Binary files /dev/null and b/programs/develop/kol_f_edit/docs/prop_vari.png differ diff --git a/programs/develop/kol_f_edit/docs/property.png b/programs/develop/kol_f_edit/docs/property.png new file mode 100644 index 0000000000..17edc7b22f Binary files /dev/null and b/programs/develop/kol_f_edit/docs/property.png differ diff --git a/programs/develop/kol_f_edit/docs/readme.htm b/programs/develop/kol_f_edit/docs/readme.htm new file mode 100644 index 0000000000..9f1eae8b8a --- /dev/null +++ b/programs/develop/kol_f_edit/docs/readme.htm @@ -0,0 +1,160 @@ + + +Оглавление + + + + + +

Kol_f_edit версия от 22.12.2010

+

Оглавление

+ + +

О программе

+

Программа для автоматизации создания интерфейса. + Многие функции программы пока еще не сделаны, потому возможности ее практического использования минимальные. + Лицензия свободная.

+

+

Внешний вид программы.

+ +

Алгоритм работы с программой

+

1) Открываем шаблон программы из файла min_prog.ced или box_l.ced + (min_prog.ced - "минимальная" программа, box_l.ced - программа с подключением библиотеки box_lib.obj, планируеться добавление других шаблонов)

+

2) Редактируем объекты в подключенном файле *.ced

+

3) Создаем *.asm код в текстовом окне кнопкой на панели. Сохраняем *.asm код на диск (работоспособность получившегося файла не гарантируется, т. к. многие элементы еще доконца не запрограмированы)

+

4) Редактируем получившийся *.asm файл любым текстовым редактором

+ +

Виды объектов

+

Програмный код создается на основе свойств объектов, внесенных в файл проэкта. Все объекты внутри програмы представляються структурами вида:

+
struct object
+	id dd ? ;идентификатор объекта
+	txt rb MAX_LEN_OBJ_TXT ;текстовые свойства
+	lvl db 0
+	clo db 0
+	typid dd ? ;номер объекта определяющего тип переменной
+	modif dd ? ;битовые свойства
+ends
+

В зависимости от вида объекта не все его параметры могут использоваться. + Большая часть свойств объекта задается параметрами: txt (текстовые свойства), typid и modif (битовые свойства). + Редактирование оъектов совершается через окно свойств объекта. + При создании объекта текстовые свойства вносятся в текстовые поля (элементы editbox слевой стороны окна); + битовые свойства задаются флажками (находятся справой стороны в нижнем углу окна) а тип объекта выбирается из списка, который доступен только при редактировании переменных (находятся справой стороны в верхнем углу окна).

+

Для открытия окна со свойствами объекта нужно выбрать редактируемый объект и нажать [Enter] или кнопку на панели инструментов.

+ +

Тип даного

+ +

Переменные в програмном коде имеют разные типы данных. Этот объект служит для задания типов данных, с которыми в последствии можно связывать объекты переменных. Один объект типа данных может много раз использоваться для задания типов переменных.

+ +

Переменная

+ +

Объект переменной содержит 3 текстовых свойства: 1) имя переменной, 2) значение по умолчанию, 3) комментарий; + и одну ссылку на объект типа данного или объект структуры.

+ +

Структура

+ +

Объект структуры содержит 2 текстовых свойства: 1) имя структуры, 2) параметры для макроса. Свойство параметры для макроса не обязательно для заполнения. + Структура должна содержать в себе переменные. Все объекты переменных структуры должны быть расположены уровнем ниже чем объект структуры, таким образом программа при создании кода определит где находится начало и конец данных структуры.

+ +

Asm код

+ +

Объект содержащий програмный код, который вставляется в генерируемую программу. + Длина кода ограничивается размером константы MAX_LEN_OBJ_TXT (200 символов). + Подобный объект нужен для задания каких-либо готовых пользовательских функций или для выхода из нестандартных заранее не предусмотренных ситуаций. + Может возникнуть ситуация, когда через использование других объектов решение задачи может оказаться нецелесообразным, например такой код:

+
struct p
+	a dd ?
+	b dd ?
+ends
+

Можно создать из 3-х обектов: 1-на структура и 2 переменные или обойтись 1-м объектом asm кода.

+ +

Авто код

+ +

Для програмирования некоторых объектов необходимо написание кода в разных местах программы. + Но один объект не может создавать свой код в разных местах. Для решения этой задачи был создан объект авто кода. + Он может автоматически создавать коды других объектов. + Этот объект содержит текстовое свойство, которое используется как подсказка пользователю, но в програмный код не попадает. + Также содержит флаги, от которых зависит какой именно код будет создаваться, вот они:

+ +

Этот объект работает в связке с другими объектами, а сам по себе никакого кода не создает.

+ +

Импорт библиотеки

+ +

Данный объект служит для создания структуры импорта библиотеки. Содержит параметры:

+ +

Для создания програмного кода этого объекта нужен объект авто кода с включенной опцией коды элементов. + Этот объект используется вместе с объектами функция из библиотеки, которые должны быть дочерними для него.

+ +

+

+ +

Автор

+

Игорь А. (IgorA) - разработка программы.

+ + + \ No newline at end of file diff --git a/programs/develop/kol_f_edit/kol_f_edit.asm b/programs/develop/kol_f_edit/kol_f_edit.asm index 0bf8f976e8..a0ce632d85 100644 --- a/programs/develop/kol_f_edit/kol_f_edit.asm +++ b/programs/develop/kol_f_edit/kol_f_edit.asm @@ -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 diff --git a/programs/develop/kol_f_edit/min_prog.ced b/programs/develop/kol_f_edit/min_prog.ced index b7c090844a..d6ba7d0d9d 100644 Binary files a/programs/develop/kol_f_edit/min_prog.ced and b/programs/develop/kol_f_edit/min_prog.ced differ diff --git a/programs/develop/kol_f_edit/ob_o.asm b/programs/develop/kol_f_edit/ob_o.asm index a0629b733e..1d1f145fca 100644 --- a/programs/develop/kol_f_edit/ob_o.asm +++ b/programs/develop/kol_f_edit/ob_o.asm @@ -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,'ђ ¤Ё® Є­®ЇЄ ','Ё¬п*®вбвгЇ б«Ґў *®вбв㯠ᢥаег*梥в д®­  ў­гваЁ*梥в а ¬ЄЁ Ё ў­гва. Ј «®зЄЁ*梥в ⥪бв *Ї®¤ЇЁбм*®вбвгЇ ¤® ­ ¤ЇЁбЁ*а §¬Ґа Єў ¤а в ',\ <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,'ђЁб®ў ­ЁҐ ⥪бв ','⥪бв®ў п бва®Є *Є®®а¤Ё­ в  Ї® 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,'Џаאַ㣮«м­ЁЄ','梥в*®вбвгЇ б«Ґў *®вбв㯠ᢥаег*иЁаЁ­ *ўлб®в ',\ <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 diff --git a/programs/develop/kol_f_edit/obj_codes.inc b/programs/develop/kol_f_edit/obj_codes.inc index 221e8095de..c4bc553ada 100644 --- a/programs/develop/kol_f_edit/obj_codes.inc +++ b/programs/develop/kol_f_edit/obj_codes.inc @@ -6,9 +6,8 @@ C_TDF equ 'Type' ;typedef C_ACO equ 'Auto' ; ўв®¬ вЁзҐбЄЁҐ Є®¤л (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 diff --git a/programs/develop/kol_f_edit/readme.htm b/programs/develop/kol_f_edit/readme.htm deleted file mode 100644 index 4172eea27f..0000000000 --- a/programs/develop/kol_f_edit/readme.htm +++ /dev/null @@ -1,70 +0,0 @@ - - -Оглавление - - - - - -

Kol_f_edit версия от 20.11.2010

-

О программе

-

Программа для автоматизации создания интерфейса. - Многие функции программы пока еще не сделаны, потому возможности ее практического использования минимальные. - Лицензия свободная.

-

-

Внешний вид программы.

- -

Алгоритм работы с программой

-

1) Открываем шаблон программы из файла min_prog.ced или box_l.ced - (min_prog.ced - "минимальная" программа, box_l.ced - программа с подключением библиотеки box_lib.obj, планируеться добавление других шаблонов)

-

2) Редактируем объекты в подключенном файле *.ced (более подробные инструкции по редактированию добавлю когда программа будет готова)

-

3) Создаем *.asm код в текстовом окне кнопкой на панели. Сохраняем *.asm код на диск (работоспособность получившегося файла не гарантируется, т. к. многие элементы еще доконца не запрограмированы)

-

4) Редактируем получившийся *.asm файл любым текстовым редактором

- -

Автор

-

Игорь А. (IgorA) - разработка программы.

- - - \ No newline at end of file diff --git a/programs/develop/libraries/buf2d/trunk/about.htm b/programs/develop/libraries/buf2d/trunk/about.htm index fbccd17939..3a23887fdb 100644 --- a/programs/develop/libraries/buf2d/trunk/about.htm +++ b/programs/develop/libraries/buf2d/trunk/about.htm @@ -62,7 +62,7 @@ table { font-size: 15px; } С ее помощью можно создавать буфера с изображениями в памяти, и при необходимости выводить их на экран. Изображения можно накладывать одно на другое, поддерживается работа с прозрачными изображениями, есть функция рисования лини пока на этом все.

-

Последнее обновление библиотеки 02.11.10.

+

Последнее обновление библиотеки 22.12.10.

Форматы буферов

Поддерживается 3 формата буферов. @@ -161,7 +161,7 @@ buf_0:

Рисует в буфере изображение из другого буфера в указанных координатах, при этом учитывается прозрачность. Буфер который будет нарисован должен быть 8 битным, а тот в котором рисуют 24 битным.

-

buf2d_cruve_bezier

+

buf2d_curve_bezier

Рисует по трем точкам отрезок кривой безье.

buf2d_convert_text_matrix

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

07.10.10 - доработана функция buf_bit_blt (при попытке нарисовать изображение за пределами правого края буфера приложение вызвавшее функцию падало).

11.10.10 - исправлено задание цветов в некоторых функциях, красный и синий цвета поменял местами. Теперь цвета совпадают с сисемными функциями.

02.11.10 - добавлена функция buf2d_flood_fill.

+

22.12.10 - изменено имя функции buf2d_cruve_bezier на buf2d_curve_bezier.

\ No newline at end of file diff --git a/programs/develop/libraries/buf2d/trunk/buf2d.asm b/programs/develop/libraries/buf2d/trunk/buf2d.asm index 9cb808b940..6e828d0189 100644 --- a/programs/develop/libraries/buf2d/trunk/buf2d.asm +++ b/programs/develop/libraries/buf2d/trunk/buf2d.asm @@ -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 diff --git a/programs/games/nu_pogodi/trunk/nu_pogod.asm b/programs/games/nu_pogodi/trunk/nu_pogod.asm index 264efd631b..6cd9ce5c90 100644 --- a/programs/games/nu_pogodi/trunk/nu_pogod.asm +++ b/programs/games/nu_pogodi/trunk/nu_pogod.asm @@ -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