diff --git a/programs/develop/fasm/trunk/fasm.asm b/programs/develop/fasm/trunk/fasm.asm index 6c5915c408..63cb56a12d 100644 --- a/programs/develop/fasm/trunk/fasm.asm +++ b/programs/develop/fasm/trunk/fasm.asm @@ -334,21 +334,9 @@ fun_opn_dlg: ; mov [edit3.size],edi mov [edit3.pos],edi - ;xor al,al - mov edi,dword[OpenDialog_data.filename_area] - mov ebx,edi ;copy text pointer - mov ecx,dword[edit1.max] - ;cld - repne scasb - sub edi,ebx ;edi = strlen(OpenDialog_data.filename_area) - mov ecx,edi - dec edi - mov [edit1.size],edi - mov [edit1.pos],edi - mov esi,dword[OpenDialog_data.filename_area] - mov edi,dword[edit1.text] - ;cld - rep movsb + push dword [OpenDialog_data.filename_area] + push dword edit1 + call dword [edit_box_set_text] push dword edit1 call dword [edit_box_draw] @@ -456,10 +444,11 @@ end if align 4 import_box_lib: - edit_box_draw dd aEdit_box_draw - edit_box_key dd aEdit_box_key - edit_box_mouse dd aEdit_box_mouse - ;version_ed dd aVersion_ed + edit_box_draw dd aEdit_box_draw + edit_box_key dd aEdit_box_key + edit_box_mouse dd aEdit_box_mouse + edit_box_set_text dd aEdit_box_set_text + ;version_ed dd aVersion_ed check_box_draw dd aCheck_box_draw check_box_mouse dd aCheck_box_mouse @@ -470,6 +459,7 @@ import_box_lib: aEdit_box_draw db 'edit_box',0 aEdit_box_key db 'edit_box_key',0 aEdit_box_mouse db 'edit_box_mouse',0 + aEdit_box_set_text db 'edit_box_set_text',0 ;aVersion_ed db 'version_ed',0 aCheck_box_draw db 'check_box_draw',0 diff --git a/programs/develop/libraries/box_lib/trunk/box_lib.asm b/programs/develop/libraries/box_lib/trunk/box_lib.asm index fce8ca5a4a..bcc18d5cff 100644 --- a/programs/develop/libraries/box_lib/trunk/box_lib.asm +++ b/programs/develop/libraries/box_lib/trunk/box_lib.asm @@ -125,6 +125,7 @@ dd sz_version, 0x00000001 dd sz_edit_box, edit_box dd sz_edit_box_key, edit_box_key dd sz_edit_box_mouse, edit_box_mouse +dd sz_edit_box_set_text, edit_box_set_text dd szVersion_ed, 0x00000001 dd sz_check_box_draw, check_box_draw @@ -222,6 +223,7 @@ sz_version db 'version',0 sz_edit_box db 'edit_box',0 sz_edit_box_key db 'edit_box_key',0 sz_edit_box_mouse db 'edit_box_mouse',0 +sz_edit_box_set_text db 'edit_box_set_text',0 szVersion_ed db 'version_ed',0 sz_check_box_draw db 'check_box_draw',0 diff --git a/programs/develop/libraries/box_lib/trunk/box_lib.mac b/programs/develop/libraries/box_lib/trunk/box_lib.mac index 8034c427ac..e56ef4a711 100644 --- a/programs/develop/libraries/box_lib/trunk/box_lib.mac +++ b/programs/develop/libraries/box_lib/trunk/box_lib.mac @@ -257,6 +257,7 @@ tl_err_load_caption equ 1b ; tl_err_load_info_size equ 100b ;не совпадает размер информационной структуры при открытии tl_load_mode_add equ 0x20000 ;опция считывания в режиме добавления информации tl_save_load_heder_size equ 26 ;размер заголовка для записи/чтения элементов +tl_offs_box equ 58 ;начало BOX структуры для tree_list ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Basic macros for use TextEditor ; diff --git a/programs/develop/libraries/box_lib/trunk/doc/editbox/info_editbox.htm b/programs/develop/libraries/box_lib/trunk/doc/editbox/info_editbox.htm index b2effaee52..7342dcf905 100644 --- a/programs/develop/libraries/box_lib/trunk/doc/editbox/info_editbox.htm +++ b/programs/develop/libraries/box_lib/trunk/doc/editbox/info_editbox.htm @@ -12,6 +12,8 @@

╤ЄЁєъЄєЁр editbox

@@ -30,6 +32,18 @@

edit_box_mouse

▌Єр ЇєэъЎш  фюыцэр т√ч√трЄё  яЁш ттюфх шэЇюЁьрЎшш ё ь√°ш.

+

edit_box_draw

+

▌Єр ЇєэъЎш  фюыцэр т√ч√трЄё  яЁш ттюфх яхЁхЁшёютъх ¤ыхьхэЄр.

+ +

edit_box_set_text

+

▌Єр ЇєэъЎш  ъюяшЁєхЄ ЄхъёЄ шч єърчрЄхы  т ЄхъёЄютюх яюых. ┼ёыш ЄхъёЄ т єърчрЄхых юърцхЄё  фышээхх ўхь фюяєёЄшь√щ т ¤ыхьхэЄх edit_box, Єю юэ чряш°хЄё  эх тхё№. ╧юёых т√чютр фрээющ ЇєэъЎшш эхюсїюфшью яхЁхЁшёютрЄ№ юъэю ЇєэъЎшхщ edit_box_draw, шэрўх шчьхэхэш  сєфєЄ ёЁрчє эх тшфэ√. ╧ЁшьхЁ шёяюы№чютрэш :

+
	push dword buf
+	push dword edit1
+	call dword [edit_box_set_text]
+.........
+buf db '111-222-333',0
+

уфх edit1 - ёЄЁєъЄєЁр ¤ыхьхэЄр edit_box; buf - сєЇхЁ, т ъюЄюЁюь ёюфхЁцшЄё  єёЄрэртыштрхь√щ ЄхъёЄ.

+

version_ed

┬хЁёш  ¤ыхьхэЄр

@@ -74,6 +88,6 @@

╥хъёЄютюх яюых т Їюъєёх.


-

─юъєьхэЄрЎш  юсэюты ырё№ яюёыхфэшщ Ёрч 10.01.10.

+

─юъєьхэЄрЎш  юсэюты ырё№ яюёыхфэшщ Ёрч 17.09.10.

\ No newline at end of file diff --git a/programs/develop/libraries/box_lib/trunk/editbox.mac b/programs/develop/libraries/box_lib/trunk/editbox.mac index 8f42d2b67b..1237699aea 100644 --- a/programs/develop/libraries/box_lib/trunk/editbox.mac +++ b/programs/develop/libraries/box_lib/trunk/editbox.mac @@ -327,7 +327,7 @@ ret ;--- изменяем смещение ------------------------------------ ;--- если смещение было установка флага ed_offset_cl иначе ; если ничего не изменилось то выставление ed_offset_fl -; в общей битовой маррице состояния компонентов word ed_flags +; в общей битовой матрице состояния компонентов word ed_flags ;---------------------------------------------------------- edit_box.check_offset: pushad @@ -378,6 +378,31 @@ edit_ex or word ed_flags,ed_offset_fl edit_ex + +align 4 +proc edit_box_set_text, edit:dword, text:dword +pushad + mov edi,dword[edit] + mov ecx,ed_max + inc ecx ;учитываем будущее обрезание строки для ascii 0 + mov edi,dword[text] + xor al,al + cld + repne scasb ;поиск в строке edi символа al + mov ecx,edi ;ecx = text + мин. значение из: 1) ed_max или 2) длинны строки text + + mov edi,dword[edit] + mov esi,dword[text] + sub ecx,esi ;ecx = длинна строки text (но не больше чем ed_max) + dec ecx + mov ed_size,ecx ;ставим новый размер строки + mov ed_pos,ecx ;ставим курсор в конец новой строки + mov edi,ed_text + repne movsb ;копирование текстовой строки text в edit_box + mov byte[edi],0 ;ставим ascii 0 в конце строки +popad +ret +endp } macro use_key_func diff --git a/programs/games/nu_pogodi/trunk/main.ini b/programs/games/nu_pogodi/trunk/main.ini index 04bf87116d..1f7bd84309 100644 --- a/programs/games/nu_pogodi/trunk/main.ini +++ b/programs/games/nu_pogodi/trunk/main.ini @@ -1,4 +1,5 @@ [Files] -count=2 +count=3 g0=nu_pogod.ini -g1=kvaka_za.ini \ No newline at end of file +g1=nu_pogod_n.ini +g2=kvaka_za.ini \ No newline at end of file diff --git a/programs/games/nu_pogodi/trunk/nu_pogod.asm b/programs/games/nu_pogodi/trunk/nu_pogod.asm index f38991de8a..264efd631b 100644 --- a/programs/games/nu_pogodi/trunk/nu_pogod.asm +++ b/programs/games/nu_pogodi/trunk/nu_pogod.asm @@ -918,11 +918,11 @@ draw_window: or edx,0x73000000 mov edi,hed mcall ;создание окна + mcall 9,procinfo,-1 cmp byte[game_select_mode],0 jne .select_mode - mcall 9,procinfo,-1 mov edi,buf_displ mov eax,dword[procinfo.client_box.width] cmp eax,dword[displ_w] @@ -1015,12 +1015,67 @@ pop esi jmp @f .select_mode: stdcall dword[tl_draw],dword tree1 + mov edi,tree1 + add edi,tl_offs_box + stdcall draw_rect_border, procinfo.client_box, edi @@: mcall 12,2 popad ret +; функция рисует поля вокруг прямоугольника user_box +; размер полей вычисляется исходя из размеров client_rect +; предполагается, что в большинстве случаев client_rect > user_box +align 4 +proc draw_rect_border, client_rect:dword, user_box:dword + pushad + mov edi,dword[client_rect] + mov esi,dword[user_box] + cmp esi,0 + je @f + mov ebx,dword[edi+8] ;+8 = width + inc bx + mov ecx,dword[esi+4] ;+4 = top + mov edx,[sc.work] + mov eax,13 + int 0x40 ;top + + mov eax,dword[esi+4] ;+4 = top + add eax,dword[esi+12] ;+12 = height + cmp eax,dword[edi+12] + jge .no_bottom + mov ecx,eax + shl ecx,16 + mov cx,word[edi+12] ;+12 = bottom + inc cx + sub cx,ax + mov eax,13 + int 0x40 ;bottom + .no_bottom: + + mov ebx,dword[esi] ;+0 left + mov ecx,dword[esi+4] ;+4 = top + shl ecx,16 + mov cx,word[esi+12] ;+12 = height + inc cx + mov eax,13 + int 0x40 ;left + + mov eax,dword[esi] ;+0 left + add eax,dword[esi+8] ;+8 = width + mov ebx,eax + shl ebx,16 + mov bx,word[edi+8] ;+8 = right + sub bx,ax + inc bx + mov eax,13 + int 0x40 ;right + @@: + popad + ret +endp + align 4 draw_display: @@ -1168,7 +1223,7 @@ image_data dd 0 ; image_data_gray dd 0 ;память с временными серыми изображениями в формате 24-bit, из которых будут создаваться трафареты run_file_70 FileInfoBlock -hed db 'Nu pogodi 08.09.10',0 ;подпись окна +hed db 'Nu pogodi 17.09.10',0 ;подпись окна sc system_colors ;системные цвета count_of_dir_list_files equ 10 diff --git a/programs/games/nu_pogodi/trunk/nu_pogod_n.ini b/programs/games/nu_pogodi/trunk/nu_pogod_n.ini new file mode 100644 index 0000000000..a56cb456ba --- /dev/null +++ b/programs/games/nu_pogodi/trunk/nu_pogod_n.ini @@ -0,0 +1,22 @@ +[Files] +displ_w=315 +displ_h=210 +file_decorat=curici.png +file_unit=wolf.png +file_objects=eggs.png +file_lost=chi.png +offs_shadow_x=1 +offs_shadow_y=1 +[Game] +delay_a=65 +delay_b=35 +delay_min=15 +[Colors] +background=0,0,0 ;ЎтхЄ Їюэр +shadows=255,255,255 ;ЎтхЄ Єхэхщ +unit=255,255,255 ;ЎтхЄ шуЁрър +objects=0,255,255 ;ЎтхЄ фтшур■∙шїё  яЁхфьхЄют +lost=255,0,0 ;ЎтхЄ яЁюяє∙хээ√ї яЁхфьхЄют +dec0=0,0,128 +dec1=128,128,128 +dec2=0,128,0 \ No newline at end of file diff --git a/programs/other/planet_v/planet_v.asm b/programs/other/planet_v/planet_v.asm index 0c3e7f52ef..0c36d00ce6 100644 --- a/programs/other/planet_v/planet_v.asm +++ b/programs/other/planet_v/planet_v.asm @@ -428,13 +428,13 @@ pushad mov edx,txt_met_sh int 0x40 - mov ecx,[sc.work_text] - or ecx,0x80000000 - mov ebx,175*65536+13 mov edx,txt_cache int 0x40 + mov ecx,[sc.work_text] + or ecx,0x80000000 + mov bx,di ;add bx,450-otst_panel_left shl ebx,16 @@ -856,7 +856,6 @@ fun_opn_dlg: ; stdcall [OpenDialog_Start],OpenDialog_data cmp [OpenDialog_data.status],2 je @f - mov esi,[OpenDialog_data.openfile_path] stdcall [str_len],dword[edit1.text],dword[edit1.max] mov [edit1.size],eax mov [edit1.pos],eax