From 8cc2207bd725e9a41c4e06e2161505c2670112bc Mon Sep 17 00:00:00 2001 From: IgorA Date: Mon, 13 Dec 2010 15:21:52 +0000 Subject: [PATCH] 1) correction functions 'buf_filled_rect_by_size' and 'buf_line_h' in 'buf2d.obj' 2) fix & update 'kol_f_edit' git-svn-id: svn://kolibrios.org@1717 a494cfbc-eb01-0410-851d-a64ba20cac60 --- programs/develop/kol_f_edit/about.png | Bin 30912 -> 42504 bytes programs/develop/kol_f_edit/box_l.ced | Bin 36136 -> 32960 bytes programs/develop/kol_f_edit/ced_code_g.inc | 160 ++++++++++-------- programs/develop/kol_f_edit/ced_constr.inc | 23 ++- programs/develop/kol_f_edit/ced_wnd_m.inc | 118 ++++--------- programs/develop/kol_f_edit/ced_wnd_prop.inc | 147 +++++++++++++--- programs/develop/kol_f_edit/kol_f_edit.asm | 124 ++++++-------- programs/develop/kol_f_edit/min_prog.ced | Bin 26281 -> 25681 bytes programs/develop/kol_f_edit/ob_o.asm | 11 +- programs/develop/kol_f_edit/obj_codes.inc | 37 ++-- .../develop/libraries/buf2d/trunk/buf2d.asm | 13 +- 11 files changed, 337 insertions(+), 296 deletions(-) diff --git a/programs/develop/kol_f_edit/about.png b/programs/develop/kol_f_edit/about.png index f2811cabfe279792e16a2b9a589a1069b1789e71..71a02559f5836dbe9ec467d9a3aa7842582d4d01 100644 GIT binary patch literal 42504 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 literal 30912 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 M)mAA}vU>ji0PYWX8!LVM_F1gmOK zV+Yb?MU27Rhw7s=l-s9F7+Q*j@r)u~nuQsW!=_QxpI`wSnqAyG$plHqlZW=F51U zbW1s;Q&hpE-r@xXMYy4Wh}$chSd^BPK*g7IsKY^K?*)9lun6y~?A9y$xsu7z90MUK z91zg}7l@22;-pG3jnWD5Crg+)nvo&|q6&vX9Ma5%c=Nhsuzq(blN)c%6RSQcDDeS- zusRI0wkn7m;d-SpVGv2ZK`yFj$xlVz^deIbpB_&NeA;@S!8m^zGc!K$RGO^032fe3 z4t!9_fAamfoUv;)w?f$(45}};6B6P$8|~g+VV@Z()YCP|4Z zu`r4T1)kWo7y%FLXVMK7FGNOTc&`1Zo^RCwCPf>A5lN+PGhDI{GNqcFA1Biwgv3b{ zj)*Ac7b5*4!fdD!FjA~7hUq4C=RX%K&&xmhQ@dk|(-JFuvTMrhURq#Gk1s!M8zSFOsXWHfD{ahV?tEnB}AmW zdMa6Stzlo+$dtwc+yJLewtC8YVr?=ehyWk32snH zPjNbt&1cvCJH3t$uZBGJu2v^nPVS!}A)@A`r#gw7j?^YmAE;;hiz9FvK57Bbb#w|8 z<1?-O`gcZYn@ne@4yo+`M%(3FRRYTqmi&R>U9};TYLH(3S(3K@kj&`r7t(CG- zL|2ew+0*GlYubF|n+Dm-t@bjj-G+bZxS(HVCpsa*4ljV><8o$vC~`U`w9lgCRQ+Dk zUUj!l4Ckts6s(g^1g%|APT6f#Sd31PTbUrYZdS2`K(Z*RtlUOb+3*(Mykwu-ZL`_1 zJ!w|1x=FBnmi3+%*D_17UPW3ZDMw#b_@S>Lfx2dKI%UN?azSwmoU9AcT8!J>{bN7|$h7gyW8a5dZJ6%m) z!UbQ6^UldL<95XHXnb^H^v-V&DSYGDwG>M2kcs^8Pv?hc#J~DGo3!0crB|xji*Ld} TG`}U&rK)7z+p-psU~T;cuKLA$ delta 4185 zcma)9YfzNe83uMi4vMf`6yohul#2n}rD_I=JSxHxpC zXXcqb&+|U-`<`<+-?z)>Zzg>7L4v_$x4BJ!achgx3~_OB9tMWXevZ{Fo+U7hjJXJX z9Dg$t-o#kdeun+aqTZy~NH6NIiTW4CL^^HV11+5$w$g6fNw+DJ4jQiuWG2J&UZNB* z3lRF68RQhjt|v(o^u=Hd3@7P}>eY)?_K*NmZ;=NCADRV#X9HpruHI|hvjb+JcvFw{PX_~7Uoj6G|*%{85Ztt36vsyD^Syg5%TavX< z#l~zq-CmwdN3)N|RQ+>yZ06-<3uWG3j?CD#Y{`kuO3$6oa_CX+jhG(kxj9t5qDgf( zuZZpL-E*4{9w(j7@KF0oNe8=(i8v4sZC@obp=W?GFiJWdbjF!ap*7b8T$v0b1y@S} z7cQcaK3^jR^lZi6*Q9{1E**8Qm6_0&GZv}|R}Ldm6Rupv^gJn`Kcm=}>!pCcLa`4v zNCAB%!$Up!Qb1p&V!I2ZfWDexpp}JEK*u#VP@~06ALbWPebJymTvO`biljh%EhCA3 zw^0h{>lj9IJu3zDJjM1EO96eoVp@q5&^ItP(s#_D=QEyk+OTO*AYP!sVXrpf)l`;$eip^2 zHfN*wCL}R1N?z@4v(fG3^?Wx9vA*TeB0f&OqmSvnpg-F4823a!Gs8%QnZB&AKF-y_ff>VD!Lb+wonpT>Y7tj@iLY4_iEK3{pn57&Kie6-Ew97 zLyfYnnp^h&u8q1CD(Q_aDyjHR$a_D)r|ZKO{aRtjJ38VY3xxe+4<}~)+E`#B5YPfz zxOB3#h=!Bv1bSAg5=Xa6fnrq*4;62d%b;&&;GK?9($LY>?;_Jco_g+JtY#$8Kc15U z#u~-`xLsyL-vY+KC~4^Ka*=z>8n>3Hl40G-NT8Q?NCE3MhJnmGrGWk%!$V2WO96d5 z!$|*P2K@&NTun3iUbrR@+o6yz?~(%g^NLmMmIC?ulCIw_#L}GKnm!Mifub61@r?94`m#Z0{TIQk+3f4hZtCw z6wnVVR$Xs(YXf|_5&R(o3$xM}O+x~PCZ+5+A_Zbc6uZ%2rLLnx0DUr`1AdQ8<`8hL>g z`eueh-iac&$-yqPIIdj3eMPxUQ5Qc|b4DBQ2c=qIWMJ@qdX5w@)XRrFM^3sm!39yQ zm0_g4Emm#Z8=MM^d-&msN1G;R<~N|b%o(?7A1?}xY)E8a@S;}N70~+!3L_T-MNcpcbhAwg zIPDB0eQ2|$P3oh8@Ax!>)1fIn6nUq^>rjrfC!~Pasn~wIbu+)9L%fO63GV~`EBLiZ zT^pE9)(Qhtlls`h(P=-{I5Nhs`v-xka4^8fypwl`qOYn_>l_P~n*P5_VMXn#)b|cN zr72m_9jJRT;l1k(^PQl0XMtNQ=hkT3q5QX;)|}`rc(M9jwT)=9+tkWl)IF)Zk)JBa zJH_zOPH*L>_YeU=sfYZhG$4+A%< zq}@TE#OG%fG&u%byX+mV?q1DYUTQ8YHP=vW&t-vX{fq?qxg$YzejTWIaZOw>y`(eH|D zadvb%;`pR%Ghlr))?UqagQdKZUK?;2PjvST@^hc@20Px0b=4?Wm07uZ+WPR_y(fzu zsP&^*CpXSASgKV$gR`THyVmEU){kRd7W_(iYLv~cIjPst)7f?cEs9j}pRiM%1%KKs zWl!ZXEsLx_h5OlCPB{i!_@BtyLUeqa@g%i;fz&Fs)Reyd)3%oWo*qXpQql3J^HM7o zNUc%l5lQXrJ{w6z$9LwXKDh&PHOeijEAN!E`XW0;zn{%ZteW%BP0A}&A{|a|%tx1Z z=Ot{O^UY1l=_|9k2?@Op3Z?BYM2nx#%fe5rr$&WYZB3|C>F7G!LGf*QZf%_j{Vp+P z&$O4)hi(cem!Z-(Lo)XlJo{zT!yj>N{~7a-`zONumGVU@Y*(Ve9J+k|mVnjGFjDL5 kQXuvoV>?w{kODd}JhbGZ6wt3SHj(e5G(rCrVhlC@3o`?{NdN!< diff --git a/programs/develop/kol_f_edit/ced_code_g.inc b/programs/develop/kol_f_edit/ced_code_g.inc index cf1641cf98..1bbcec8f26 100644 --- a/programs/develop/kol_f_edit/ced_code_g.inc +++ b/programs/develop/kol_f_edit/ced_code_g.inc @@ -164,9 +164,12 @@ push ebx cmp eax,0 je .find_no - cmp byte[eax],C_STR + cmp dword[eax],C_STR jne @f - stdcall get_code_struct,eax ;юсЁрсюЄър юс·хъЄр + stdcall insert_text,txt_struct + stdcall insert_text_prop, eax,0 + insert_nl + stdcall dword[tl_node_poi_get_next_info], esi,tree2 pop esi ;яхЁхїюфшь ъ ёыхфє∙хьє єчыє cmp esi,0 @@ -178,34 +181,34 @@ push ebx call code_gen_obj ;ЁхъєЁёштэ√щ т√чют фюўхЁэшї юс·хъЄют pop bx .end_st: - stdcall [ted_text_add], tedit0,txt_ends,6,ted_opt_ed_move_cursor + stdcall insert_text,txt_ends jmp .beg_iterat @@: - cmp byte[eax],C_TXT + cmp dword[eax],C_TXT jne @f stdcall get_code_text,eax ;юсЁрсюЄър юс·хъЄр @@: - cmp byte[eax],C_INC + cmp dword[eax],C_INC jne @f stdcall get_code_incl,eax ;юсЁрсюЄър юс·хъЄр @@: - cmp byte[eax],C_COM + cmp dword[eax],C_COM jne @f stdcall get_code_comment,eax ;юсЁрсюЄър юс·хъЄр @@: - cmp byte[eax],C_VAR + cmp dword[eax],C_VAR jne @f stdcall get_code_variable,eax,ebx ;юсЁрсюЄър юс·хъЄр @@: - cmp byte[eax],C_WND + cmp dword[eax],C_WND jne @f stdcall get_code_window,eax ;юсЁрсюЄър юс·хъЄр @@: - cmp byte[eax],C_ACO + cmp dword[eax],C_ACO jne @f stdcall get_code_auto,eax ;юсЁрсюЄър юс·хъЄр @@: - cmp byte[eax],C_KEY ;ъыртшрЄєЁр + cmp dword[eax],C_KEY ;ъыртшрЄєЁр jne @f stdcall get_code_key,eax ;юсЁрсюЄър юс·хъЄр @@: @@ -218,17 +221,14 @@ push ebx pop ebx ret - +;фюсртыхэшх юс·хъЄр ё яЁюуЁрьэ√ь ъюфюь (ЄхъёЄюь) align 4 proc get_code_text, p_obj:dword - pushad + ;pushad insert_nl - mov ebx,dword[p_obj] - stdcall get_obj_text_col,ebx,0 - stdcall str_len,edx - stdcall [ted_text_add], tedit0,edx,eax,ted_opt_ed_move_cursor + stdcall insert_text_prop, dword[p_obj],0 insert_nl - popad + ;popad ret endp @@ -238,13 +238,12 @@ proc get_code_auto, p_obj:dword pushad insert_nl mov ebx,dword[p_obj] - mov ecx,dword[ebx+u_object.modif-u_object] - bt ecx,BIT_MOD_ACM + test_bool_prop ebx,BIT_MOD_ACM jae @f ;ртЄюьрЄшўхёъшх ёюс√Єш  юЄ ь√°ш call get_code_auto_m @@: - bt ecx,BIT_MOD_ABU + test_bool_prop ebx,BIT_MOD_ABU jae @f ;ёючфрэшх ЇєэъЎшш button insert_but_beg @@ -252,13 +251,12 @@ proc get_code_auto, p_obj:dword insert_but_end call get_code_a_but_fun ;ъюф√ ЇєэъЎшщ, т√ч√трхь√ї яЁш эрцрЄшш ъэюяюъ @@: - bt ecx,BIT_MOD_ACD + test_bool_prop ebx,BIT_MOD_ACD jae @f call get_code_auto_data_el call get_code_auto_data_dop - xor edx,edx - mov dl,C_LIB + mov edx,C_LIB stdcall find_obj_in_file,edx ;eax - єърчрЄхы№ эр ёЄЁєъЄєЁє сшсышюЄхъш cmp eax,0 je @f @@ -298,7 +296,7 @@ proc get_code_auto_m cmp ebx,0 je .find_no - cmp byte[ebx],C_EDB + cmp dword[ebx],C_EDB jne @f stdcall insert_text, txt_std_mouse_ed ;insert_sp @@ -307,7 +305,7 @@ proc get_code_auto_m stdcall [ted_text_add], tedit0,edx,eax,ted_opt_ed_move_cursor insert_nl @@: - cmp byte[ebx],C_CHB + cmp dword[ebx],C_CHB jne @f stdcall insert_text, txt_std_mouse_cb ;insert_sp @@ -343,7 +341,7 @@ proc get_code_auto_data_el cmp ebx,0 je .find_no - cmp byte[ebx],C_EDB + cmp dword[ebx],C_EDB jne @f ;1,2,3,4,...,6,...8,...,10 - w,x,y,col_fon,...,col_frame,...,col_txt,...,txt stdcall insert_text_prop, ebx,0 @@ -396,7 +394,7 @@ proc get_code_auto_data_el .null_string: insert_nl @@: - cmp byte[ebx],C_DTT + cmp dword[ebx],C_DTT jne @f stdcall insert_text, txt_txt mov edx,fp_icon @@ -433,7 +431,7 @@ proc get_code_auto_data_libs_param cmp ebx,0 je .find_no - cmp byte[ebx],C_LIB + cmp dword[ebx],C_LIB jne @f ;0,1,2,3,4,5 - l_nam,s_dir,i_met,... @@ -501,7 +499,7 @@ proc get_code_auto_data_libs_struc cmp ebx,0 je .find_no - cmp byte[ebx],C_LIB + cmp dword[ebx],C_LIB jne @f ;0,1,2,3,4,5 - l_nam,s_dir,i_met,... @@ -567,7 +565,7 @@ proc get_code_auto_data_libs cmp ebx,0 je .find_no - cmp byte[ebx],C_LIB + cmp dword[ebx],C_LIB jne @f ;0,1,2,3,4,5 - l_nam,s_dir,i_met,... stdcall insert_text, txt_align_4 @@ -609,7 +607,7 @@ pushad pop ecx ;яюыєўрхь фрээ√х єчыр cmp ecx,0 je @f - cmp byte[ecx],C_IFN + cmp dword[ecx],C_IFN jne @b ;тёЄртър єърчрЄхы  эр ЇєэъЎш■ insert_tab @@ -633,7 +631,7 @@ pushad pop ecx ;яюыєўрхь фрээ√х єчыр cmp ecx,0 je @f - cmp byte[ecx],C_IFN + cmp dword[ecx],C_IFN jne @b ;тёЄртър шьхэш шьяюЁЄшЁютрээющ ЇєэъЎшш insert_tab @@ -666,7 +664,7 @@ proc get_code_auto_data_dop cmp ebx,0 je .find_no - cmp byte[ebx],C_EDB + cmp dword[ebx],C_EDB jne @f ;1,2,3,4,...,6,...8,...,10 - w,x,y,col_fon,...,col_frame,...,col_txt,...,txt stdcall insert_text, txt_txt @@ -717,9 +715,6 @@ proc get_code_auto_data_dop insert_0 insert_nl @@: - ;cmp byte[ebx],C_CHB - ;jne @f - ;@@: stdcall dword[tl_node_poi_get_next_info], esi,tree2 pop esi ;яхЁхїюфшь ъ ёыхфє∙хьє єчыє @@ -745,7 +740,7 @@ proc get_code_auto_but cmp ebx,0 je .find_no - cmp byte[ebx],C_BUT + cmp dword[ebx],C_BUT jne @f insert_tab insert_cmp @@ -797,7 +792,7 @@ proc get_code_a_but_fun cmp ebx,0 je .find_no - cmp byte[ebx],C_BUT + cmp dword[ebx],C_BUT jne @f stdcall get_obj_text_col,ebx,6 stdcall str_len,edx @@ -851,7 +846,7 @@ proc get_code_funct_key cmp ebx,0 je .find_no - cmp byte[ebx],C_EDB + cmp dword[ebx],C_EDB jne @f stdcall insert_text, txt_std_key_ed stdcall insert_text_prop,ebx,0 @@ -984,20 +979,20 @@ proc get_code_draw_obj cmp ebx,0 je .find_no - cmp byte[ebx],C_EDB + cmp dword[ebx],C_EDB jne @f stdcall insert_text, txt_editb_draw stdcall insert_text_prop, ebx,0 insert_nl @@: - cmp byte[ebx],C_CHB + cmp dword[ebx],C_CHB jne @f stdcall insert_text, txt_cbox_draw stdcall insert_text_prop, ebx,0 insert_nl @@: - cmp byte[ebx],C_BUT - jne @f + cmp dword[ebx],C_BUT + jne .ob_draw_but insert_tab stdcall insert_text, txt_mov insert_reg txt_eax @@ -1028,13 +1023,16 @@ proc get_code_draw_obj insert_reg txt_edx insert_coma stdcall insert_text_prop, ebx,0 - insert_nl - - insert_tab - stdcall insert_text, txt_or - insert_reg txt_edx - insert_coma - stdcall insert_text, txt_but_create + test_bool_prop ebx,BIT_MOD_BUT_NFON + jnc @f + stdcall insert_text, txt_plus + stdcall insert_text, txt_bit_30 + @@: + test_bool_prop ebx,BIT_MOD_BUT_NBORD + jnc @f + stdcall insert_text, txt_plus + stdcall insert_text, txt_bit_29 + @@: insert_nl insert_tab @@ -1047,8 +1045,8 @@ proc get_code_draw_obj insert_tab stdcall insert_text, txt_i_40 insert_nl - @@: - cmp byte[ebx],C_REC + .ob_draw_but: + cmp dword[ebx],C_REC jne @f insert_tab stdcall insert_text, txt_mov @@ -1087,8 +1085,8 @@ proc get_code_draw_obj stdcall insert_text, txt_i_40 insert_nl @@: - cmp byte[ebx],C_DTT ;Ёшёютрэшх ЄхъёЄр ўхЁхч ёшёЄ. Ї. 4 - jne @f + cmp dword[ebx],C_DTT ;Ёшёютрэшх ЄхъёЄр ўхЁхч ёшёЄ. Ї. 4 + jne .ob_draw_text insert_tab stdcall insert_text, txt_mov insert_reg txt_eax @@ -1110,10 +1108,26 @@ 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 + @@: insert_nl -;or ecx,0x80000000 - insert_tab stdcall insert_text, txt_mov insert_reg txt_edx @@ -1125,11 +1139,20 @@ proc get_code_draw_obj insert_nl ;mov esi,... + test_bool_prop ebx,BIT_MOD_TXT_NO_TRAN + jnc @f + insert_tab + stdcall insert_text, txt_mov + insert_reg txt_edi + insert_coma + stdcall insert_text_prop, ebx,4 ;ЎтхЄ Їюэр + insert_nl + @@: insert_tab stdcall insert_text, txt_i_40 insert_nl - @@: + .ob_draw_text: stdcall dword[tl_node_poi_get_next_info], esi,tree2 pop esi ;яхЁхїюфшь ъ ёыхфє∙хьє єчыє @@ -1140,22 +1163,6 @@ proc get_code_draw_obj ret endp - - -align 4 -proc get_code_struct, p_obj:dword - pushad - mov ebx,dword[p_obj] - ;0 - name - - stdcall [ted_text_add], tedit0,txt_struct,7,ted_opt_ed_move_cursor - stdcall insert_text_prop, ebx,0 - insert_nl - - popad - ret -endp - ;ёючфрЄ№ ъюф юс· тыхэш  яхЁхьхээющ align 4 proc get_code_variable, p_obj:dword,o_lev:dword @@ -1166,7 +1173,7 @@ 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) - and cx,0xff + and ecx,0xff cld @@: insert_tab ;ЇюЁьшЁютрэшх юЄёЄєяр яхЁхф яхЁхьхээющ @@ -1246,7 +1253,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_but_create db '0x40000000',0 ;tmp +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_0x33000000 db '0x33000000',0 ;tmp txt_struct db 'struct ',0 txt_met_end db '.end',0 diff --git a/programs/develop/kol_f_edit/ced_constr.inc b/programs/develop/kol_f_edit/ced_constr.inc index eebc80eed2..aa13320c80 100644 --- a/programs/develop/kol_f_edit/ced_constr.inc +++ b/programs/develop/kol_f_edit/ced_constr.inc @@ -23,8 +23,7 @@ pushad jmp .end_draw @@: - xor edx,edx - mov dl,C_WND + mov edx,C_WND stdcall find_obj_in_file,edx ;eax - указатель на структуру окна cmp eax,0 je .end_draw @@ -80,16 +79,16 @@ pushad stdcall [buf2d_bit_blt], buf_fon, eax,0, buf_skin3 ;прорисовка правого скина .end_skin: - xor edx,edx ;рисуем графические элементы - mov dl,C_BUT + ;рисуем графические элементы + mov edx,C_BUT stdcall draw_arr_objects, edx,draw_obj_but - mov dl,C_EDB + mov edx,C_EDB stdcall draw_arr_objects, edx,draw_obj_edit - mov dl,C_CHB + mov edx,C_CHB stdcall draw_arr_objects, edx,draw_obj_check - mov dl,C_DTT + mov edx,C_DTT stdcall draw_arr_objects, edx,draw_obj_text - mov dl,C_REC + mov edx,C_REC stdcall draw_arr_objects, edx,draw_obj_rect_f13 .end_draw: @@ -142,7 +141,13 @@ endl mov ecx,eax stdcall get_obj_text_col,ebx,5 stdcall conv_str_to_int,edx - stdcall [buf2d_rect_by_size], buf_fon, dword[coor_x],dword[coor_y],edi,ecx,eax + test_bool_prop ebx,BIT_MOD_BUT_NFON + jc .no_draw_fon + stdcall [buf2d_filled_rect_by_size], buf_fon, dword[coor_x],dword[coor_y],edi,ecx,eax + jmp @f + .no_draw_fon: ;не прорисовываем кнопку + stdcall [buf2d_rect_by_size], buf_fon, dword[coor_x],dword[coor_y],edi,ecx,eax + @@: popad ret endp diff --git a/programs/develop/kol_f_edit/ced_wnd_m.inc b/programs/develop/kol_f_edit/ced_wnd_m.inc index 04fc4fc008..f01c67d4bf 100644 --- a/programs/develop/kol_f_edit/ced_wnd_m.inc +++ b/programs/develop/kol_f_edit/ced_wnd_m.inc @@ -29,14 +29,14 @@ pop edi esi ecx align 4 but_obj_paste: push eax ebx ecx edi - mov eax,[tree2.data_info] ;данные 0-го узла, используем для копирования - mov bl,byte[eax] - call find_obj_in_opt - xor ecx,ecx - mov cx,word[edi+obj_opt.img-obj_opt] ;cx - индекс главной иконки добавляемого объекта - shl ecx,16 - stdcall [tl_node_add], eax, ecx, tree2 ;добавляем объект - stdcall [tl_draw], tree2 + mov eax,[tree2.data_info] ;данные 0-го узла, используем для копирования + mov ebx,dword[eax] + call find_obj_in_opt + xor ecx,ecx + mov cx,word[edi+obj_opt.img-obj_opt] ;cx - индекс главной иконки добавляемого объекта + shl ecx,16 + stdcall [tl_node_add], eax, ecx, tree2 ;добавляем объект + stdcall [tl_draw], tree2 pop edi ecx ebx eax ret @@ -114,23 +114,21 @@ get_obj_win_param: align 4 proc get_obj_text_col, obj:dword, ind:dword mov edx,dword[obj] - inc edx ;goto text -push ebx - mov ebx,dword[ind] - cmp bx,0 + add edx,4 ;goto text +push ebx ecx + mov ecx,dword[ind] + cmp cx,0 je .end_fun - shl ebx,8 ;в bh попадает номер искомой колонки - mov bl,byte[edx-1] ;в bl попадает код объекта + mov ebx,dword[edx-4] ;в ebx попадает код объекта - push ecx edi + push edi call find_obj_in_opt ;ищем структуру с опциями объекта add edi,obj_opt.Col-obj_opt - dec bh - and ebx,0xff00 - shr ebx,7 ;сдвигаем на 7, т.к. нужно значение bh умноженное на 2 - add edi,ebx ;+ бывшее bh*2 + dec ecx + shl ecx,1 ;умножаем на 2 + add edi,ecx ;+ ind*2 xor ecx,ecx mov cx,word[edi] ;ecx - сдиг для искомого поля add edx,ecx @@ -144,9 +142,9 @@ push ebx mov edx,0 ;not text @@: - pop edi ecx + pop edi .end_fun: -pop ebx +pop ecx ebx ret endp @@ -158,20 +156,17 @@ endp align 4 proc get_obj_text_len_col, obj:dword, ind:dword xor eax,eax -push ebx - mov ebx,dword[ind] - shl ebx,8 ;в bh попадает номер искомой колонки +push ebx ecx edi + mov ecx,dword[ind] mov eax,dword[obj] - mov bl,byte[eax] ;в bl попадает код объекта + mov ebx,dword[eax] ;в ebx попадает код объекта xor eax,eax - push edi call find_obj_in_opt ;ищем структуру с опциями объекта add edi,obj_opt.Col-obj_opt - and ebx,0xff00 - shr ebx,7 ;сдвигаем на 7, т.к. нужно значение bh умноженное на 2 - add edi,ebx ;+ бывшее bh*2 + shl ecx,1 ;умножаем на 2 + add edi,ecx ;+ ind*2 mov ax,word[edi] ;eax - сдиг для следущего поля cmp ax,0 @@ -191,9 +186,8 @@ push ebx mov eax,0 ;not text @@: - pop edi .end_fun: -pop ebx +pop edi ecx ebx ret endp @@ -201,7 +195,7 @@ align 4 proc draw_obj_icon, o_type:dword,n_col:dword, coord_y:dword pushad xor ebx,ebx - mov bl,byte[o_type] + mov ebx,dword[o_type] call find_obj_in_opt add edi,obj_opt.img-obj_opt ;get index (+0) @@ -231,54 +225,6 @@ proc draw_obj_icon, o_type:dword,n_col:dword, coord_y:dword ret endp -;вывод текста с подписью -align 4 -proc draw_obj_caption, o_type:dword,n_col:dword, coord_y:dword - pushad - stdcall get_obj_text_len_col, [foc_obj], [n_col] ;eax - длинна поля - cmp eax,1 - jl .no_draw - - xor ebx,ebx - mov bl,byte[o_type] - call find_obj_in_opt - - mov edx,edi - add edx,obj_opt.caption-obj_opt - - mov eax,[n_col] - mov ebx,150 - shl ebx,16 - add ebx,dword[coord_y] - add ebx,3 - mov ecx,0 ;text color - - mov esi,edx - .beg_found: - cmp byte[esi],0 - je .end_found - cmp byte[esi],'*' - je @f - inc esi - jmp .beg_found - @@: - cmp eax,0 - je .end_found - dec eax - inc esi - mov edx,esi ;переключаем начало строки на след. подпись - jmp .beg_found - .end_found: - cmp esi,edx - jle .no_draw - sub esi,edx ;esi = text len - mov eax,4 - int 0x40 - .no_draw: - popad - ret -endp - align 4 proc draw_icon, ind:dword,coord_x:dword,coord_y:dword pushad @@ -301,16 +247,16 @@ proc draw_icon, ind:dword,coord_x:dword,coord_y:dword endp ;input -; bl = cod object +; ebx = cod object ;output: ; edi = pointer to option struct align 4 find_obj_in_opt: push ecx - xor ecx,ecx ;find 'bl' in options + xor ecx,ecx ;find 'ebx' in options mov edi,obj_opt @@: - cmp bl,[edi] ;find + cmp ebx,dword[edi] ;find je @f inc ecx cmp ecx,MAX_OBJ_TYPES @@ -343,7 +289,7 @@ push ebx esi cmp eax,0 je .find_no - cmp byte[eax],bl ;смотрим описан ли искомый объект в узле + cmp dword[eax],ebx ;смотрим описан ли искомый объект в узле je .find_yes stdcall dword[tl_node_poi_get_next_info], esi,tree2 @@ -370,7 +316,7 @@ push ebx esi cmp dword[obj_find_last],0 je .find_no - mov ebx,[o_type] + mov ebx,dword[o_type] stdcall dword[tl_node_poi_get_next_info], dword[obj_find_last],tree2 pop esi ;переходим к следущему узлу @@ -384,7 +330,7 @@ push ebx esi cmp eax,0 je .find_no - cmp byte[eax],bl ;смотрим описан ли искомый объект в узле + cmp dword[eax],ebx ;смотрим описан ли искомый объект в узле je .find_yes stdcall dword[tl_node_poi_get_next_info], esi, tree2 diff --git a/programs/develop/kol_f_edit/ced_wnd_prop.inc b/programs/develop/kol_f_edit/ced_wnd_prop.inc index 214f2c15e7..d96531b5c0 100644 --- a/programs/develop/kol_f_edit/ced_wnd_prop.inc +++ b/programs/develop/kol_f_edit/ced_wnd_prop.inc @@ -15,6 +15,8 @@ prop_start: pushad mcall 40,0x27 ;маска ожидаемых событий + call init_obj_count_txt_props ;получаем число используемых полей + ; настройка текстовых полей xor ebx,ebx mov edi,edit2 @@ -35,7 +37,7 @@ pushad mov dword[tree3.data_img_sys],eax mov edx,[foc_obj] - cmp byte[edx],C_VAR + cmp dword[edx],C_VAR jne .sel_end stdcall [tl_node_poi_get_info], 0,tree2 @@ -49,10 +51,10 @@ pushad mov ebx,[foc_obj] cmp ebx,esi je .add_end ;избегаем циклической ссылки - mov bl,[esi] - cmp bl,C_TDF + mov ebx,dword[esi] + cmp ebx,C_TDF je .add_beg - cmp bl,C_STR + cmp ebx,C_STR je .add_beg jmp .add_end .add_beg: @@ -60,7 +62,7 @@ pushad mov edi,u_object mov dword[edi],eax add edi,4 - inc esi ;переходим на имя объекта + add esi,u_object.txt-u_object ;переходим на имя объекта mov ecx,MAX_LEN_OBJ_TXT cld rep movsb @@ -107,7 +109,7 @@ pushad ;установка новых подписей mov esi,[foc_obj] ;берем указатель на объект - mov bl,byte[esi] + mov ebx,dword[esi] call find_obj_in_opt mov edi,dword[edi+obj_opt.bit_prop-obj_opt] cmp edi,0 @@ -161,7 +163,7 @@ pushad mov edx,[foc_obj] ;берем указатель на объект cmp edx,0 je @f - mov bl,[edx] + mov ebx,dword[edx] call find_obj_in_opt add edi,obj_opt.info-obj_opt ;edi - подпись (название объекта) @@: @@ -195,11 +197,12 @@ pushad stdcall draw_icon, 17,ebx,ecx ;17 - save mov edi,edit2 + mov ecx,[obj_count_txt_props] + cld .cycle: - stdcall [edit_box_draw], edi ;рисуем поля со свойствами объекта + stdcall [edit_box_draw], edi add edi,ed_struc_size - cmp edi,prop_wnd_edits_end - jl .cycle + loop .cycle cmp [err_ini0],1 je .exit_fun @@ -219,7 +222,7 @@ pushad cmp ebx,MAX_OPT_FIELDS jl .draw_column - cmp byte[edx],C_VAR + cmp dword[edx],C_VAR jne .no_tree mov dword[w_scr_t3.all_redraw],1 stdcall [tl_draw], tree3 @@ -231,6 +234,7 @@ pushad mcall 12,2 popad +;не отрывать эту функцию от предыдущей align 4 prop_still: pushad @@ -251,44 +255,137 @@ prop_still: popad jmp prop_still +;в цикле пробегаем по всем полям со свойствами, +;что-бы посчитать число используемых полей align 4 -prop_key: -push eax edi - mcall 2 +init_obj_count_txt_props: +pushad + mov edx,[foc_obj] ;берем указатель на объект + xor ebx,ebx mov edi,edit2 .cycle: - stdcall [edit_box_key], edi + stdcall get_obj_text_len_col, edx,ebx ;eax - длинна поля + cmp eax,1 + jl @f ;выход из цикла если поле не используеться + inc ebx + add edi,ed_struc_size cmp edi,prop_wnd_edits_end jl .cycle + @@: + mov [obj_count_txt_props],ebx +popad + ret - mov edi,[foc_obj] - cmp byte[edi],C_VAR +;вывод текстовых подписей для полей со свойствами +align 4 +proc draw_obj_caption, o_type:dword,n_col:dword, coord_y:dword + pushad + stdcall get_obj_text_len_col, [foc_obj], [n_col] ;eax - длинна поля + cmp eax,1 + jl .no_draw + + xor ebx,ebx + mov ebx,dword[o_type] + call find_obj_in_opt + + mov edx,edi + add edx,obj_opt.caption-obj_opt + + mov eax,[n_col] + mov ebx,143 ;отступ слева + shl ebx,16 + add ebx,dword[coord_y] + add ebx,3 + mov ecx,0 ;text color + + mov esi,edx + .beg_found: + cmp byte[esi],0 + je .end_found + cmp byte[esi],'*' + je @f + inc esi + jmp .beg_found + @@: + cmp eax,0 + je .end_found + dec eax + inc esi + mov edx,esi ;переключаем начало строки на след. подпись + jmp .beg_found + .end_found: + cmp esi,edx + jle .no_draw + sub esi,edx ;esi = text len + mov eax,4 + int 0x40 + .no_draw: + popad + ret +endp + +align 4 +proc set_obj_win_param, col:dword, edit:dword + pushad + stdcall get_obj_text_col, [foc_obj], [col] ;edx - text + stdcall get_obj_text_len_col, [foc_obj], [col] ;eax - длинна поля + mov edi,[edit] + cmp eax,1 + jl @f + dec eax + mov ed_max,eax ;ed_max = edi+.max + mov ed_focus_border_color, dword 0xff + mov ed_blur_border_color, dword 0x808080 + stdcall [edit_box_set_text], edi,edx ;обновляем editbox + jmp .end_f + @@: + mov ed_max,dword MAX_LEN_OBJ_TXT + ;stdcall [edit_box_set_text], edi,txt_null + .end_f: + popad + ret +endp + +align 4 +prop_key: +push eax ecx edi + mcall 2 + mov edi,edit2 + mov ecx,[obj_count_txt_props] + cld + .cycle: + stdcall [edit_box_key], edi + add edi,ed_struc_size + loop .cycle + + mov edi,dword[foc_obj] + cmp dword[edi],C_VAR jne @f stdcall [tl_key], tree3 @@: -pop edi eax +pop edi ecx eax ret align 4 prop_mouse: - push edi + push ecx edi mov edi,edit2 + mov ecx,[obj_count_txt_props] + cld .cycle: stdcall [edit_box_mouse], edi add edi,ed_struc_size - cmp edi,prop_wnd_edits_end - jl .cycle + loop .cycle - mov edi,[foc_obj] - cmp byte[edi],C_VAR + mov edi,dword[foc_obj] + cmp dword[edi],C_VAR jne @f stdcall [tl_mouse], tree3 @@: checkboxes_mouse2 check_boxes,check_boxes_end - - pop edi + pop edi ecx ret align 4 diff --git a/programs/develop/kol_f_edit/kol_f_edit.asm b/programs/develop/kol_f_edit/kol_f_edit.asm index 3dbd1bfe7c..984bb96e80 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 10.12.10',0 +hed db 'kol_f_edit 13.12.10',0 sizeof.TreeList equ 20 ;need for element 'tree_list' @@ -43,28 +43,23 @@ WND_CAPT_COLOR equ 0xb0d0ff BUF_SIZE equ 1000 ;modif -CPP_MOD_ACM equ 2 ;события мыши -BIT_MOD_ACM equ 1 ;события мыши -CPP_MOD_ACI equ 4 ; включения -BIT_MOD_ACI equ 2 ; включения -CPP_MOD_ACD equ 8 ;данные объектов -BIT_MOD_ACD equ 3 ;данные объектов -CPP_MOD_ABU equ 16 ;связывание кнопок -BIT_MOD_ABU equ 4 ;связывание кнопок - -CPP_MOD_WI_CA equ 16 ; стиль окна подпись -CPP_MOD_WI_AO equ 32 ; стиль окна координаты относительно клиентской области -CPP_MOD_WI_RD equ 64 ; стиль окна перерисовка окна -CPP_MOD_WI_GR equ 128 ; стиль окна градиент -CPP_MOD_CHE equ 512 ; ch_flag_en - выбран CheckBox -CPP_MOD_TXT_ASCII_0 equ 1 ; текст заканчив. 0 -CPP_MOD_TXT_TRAN equ 4 ; текст прозрачный -CPP_MOD_TXT_CHAR2 equ 2 ; текст 2-м шрифтом -CPP_MOD_EDIT_FOC equ 1 ; EditBox в фокусе -CPP_MOD_EDIT_FIO equ 2 ; -CPP_MOD_RE_GR equ 1 ; градиентный прямоугольник -CPP_MOD_BUT_NFON equ 1 ; стиль Button не рисовать кнопку -CPP_MOD_BUT_NBORD equ 2 ; стиль Button не рисовать границу +BIT_MOD_ACI equ 0 ;подключения файлов +BIT_MOD_ACM equ 1 ;события от мыши +BIT_MOD_ACD equ 2 ;данные объектов +BIT_MOD_ABU equ 3 ;связывание кнопок +;CPP_MOD_WI_CA equ 16 ; стиль окна подпись +;CPP_MOD_WI_AO equ 32 ; стиль окна координаты относительно клиентской области +;CPP_MOD_WI_RD equ 64 ; стиль окна перерисовка окна +;CPP_MOD_WI_GR equ 128 ; стиль окна градиент +;CPP_MOD_CHE equ 512 ; ch_flag_en - выбран CheckBox +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 ; +;CPP_MOD_RE_GR equ 1 ; градиентный прямоугольник +BIT_MOD_BUT_NFON equ 0 ; стиль Button не рисовать кнопку +BIT_MOD_BUT_NBORD equ 1 ; стиль Button не рисовать границу macro load_image_file path,buf,size ;макрос для загрузки изображений { @@ -106,21 +101,20 @@ struct FileInfoBlock ends struct object - c db ? ;0 - txt rb MAX_LEN_OBJ_TXT ;1 - lvl db 0 ;1+mt - clo db 0 ;2+mt - rb 8 ;3+mt не используется, отсталось от Win версии - typid dd ? ;3+8+mt - modif dd ? ;7+8+mt + id dd ? ;идентификатор объекта + txt rb MAX_LEN_OBJ_TXT ;текстовые свойства + lvl db 0 + clo db 0 + typid dd ? ;номер объекта определяющего тип переменной + modif dd ? ;битовые свойства ends struct ObjOpt - db ? + dd ? bl_type db ? graph db ? info rb 30 - caption rb 200 + caption rb MAX_OPT_CAPTION Col rw MAX_OPT_FIELDS img rw MAX_OPT_FIELDS ;индексы картинок (в файле 'icon.bmp') bit_prop dd 0 ;битовые свойства @@ -151,6 +145,12 @@ icon_font_s1 dd 0 ;ука fn_syntax db 'asm.syn',0 ;имя загружаемого файла синтаксиса +;макрос для проверки битового свойства +macro test_bool_prop obj_reg,n_prop +{ + bt dword[obj_reg+u_object.modif-u_object],n_prop +} + include 'ced_wnd_m.inc' include 'ced_wnd_prop.inc' ;файл с функциями окна свойств объекта include 'ced_constr.inc' ;файл с функциями окна конструктора @@ -268,8 +268,8 @@ start: mov eax,obj_opt ;добавляем объекты @@: - mov bl,byte[eax] - cmp bl,0 + mov ebx,dword[eax] + cmp ebx,0 je @f ;xor ecx,ecx ;в ecx будет индекс иконки mov cx,word[eax+obj_opt.img-obj_opt] @@ -617,8 +617,8 @@ but_open_proj: stdcall dword[tl_info_clear], tree2 mov eax,ced_info ;добавляем объекты @@: - mov bl,byte[eax] - cmp bl,0 + mov ebx,dword[eax] + cmp ebx,0 je @f call find_obj_in_opt ;edi = pointer to ObjOpt struct @@ -629,10 +629,10 @@ but_open_proj: xor cx,cx ;что-бы не глючило с отрицательным индексом .zero: shl ecx,16 ;в ecx индекс иконки - mov cl,byte[eax+1+MAX_LEN_OBJ_TXT] ;уровень объекта + mov cl,byte[eax++u_object.lvl-u_object] ;уровень объекта ;tl_node_close_open - не подходит, т.к. действует на узлы имеющие дочерние - mov ch,byte[eax+2+MAX_LEN_OBJ_TXT] ;закрытый/открытый + mov ch,byte[eax++u_object.clo-u_object] ;закрытый/открытый stdcall dword[tl_node_add], eax, ecx, tree2 ;добавляем объект @@ -666,34 +666,33 @@ but_save_proj: pop esi ;получаем данные узла mov bl,byte[edx+2] ;bl - уровень объекта - mov byte[esi+1+MAX_LEN_OBJ_TXT],bl + mov byte[esi+u_object.lvl-u_object],bl mov bl,byte[edx+3] ;bl - открытие/закрытие объекта - mov byte[esi+2+MAX_LEN_OBJ_TXT],bl + mov byte[esi+u_object.clo-u_object],bl ;вычисляем новый индекс для типа объекта - mov ebx,[esi+3+8+MAX_LEN_OBJ_TXT] ;ebx - тип объекта + mov ebx,[esi+u_object.typid-u_object] ;ebx - тип объекта ;сохраняем тип объекта push ebx imul ebx,sizeof.TreeList add ebx,[tree2.data_nodes] ;ebx - указатель объект указывающий тип stdcall get_obj_npp,ebx - mov [esi+3+8+MAX_LEN_OBJ_TXT],eax + mov [esi+u_object.typid-u_object],eax mov eax,esi - ;копируем объект в память для сохранения xor ecx,ecx mov cx,word[tree2.info_size] cld rep movsb ;восстанавливаем тип объекта - pop dword[eax+3+8+MAX_LEN_OBJ_TXT] + pop dword[eax+u_object.typid-u_object] stdcall [tl_node_poi_get_next_info], edx,tree2 pop edx ;переходим к следущему узлу jmp @b @@: - mov byte[edi],0 - inc edi + mov dword[edi],0 ;метка конца файла + add edi,4 mov ecx,edi sub ecx,ced_info ;ecx - размер сохраняемого файла @@ -807,30 +806,6 @@ on_file_object_select: ;call draw_window ret -align 4 -proc set_obj_win_param, col:dword, edit:dword - pushad - stdcall get_obj_text_col, [foc_obj], [col] ;edx - text - stdcall get_obj_text_len_col, [foc_obj], [col] ;eax - длинна поля - mov edi,[edit] - cmp eax,1 - jl @f - dec eax - mov ed_max,eax ;ed_max = edi+.max - mov ed_focus_border_color, dword 0xff - mov ed_blur_border_color, dword 0x808080 - stdcall [edit_box_set_text], edi,edx ;обновляем editbox - jmp .end_f - @@: - mov ed_max,dword MAX_LEN_OBJ_TXT - mov ed_focus_border_color, dword 0xffffff ;делаем невидимую активную рамку - mov ed_blur_border_color, dword 0xffffff ;делаем невидимую фоновую рамку - stdcall [edit_box_set_text], edi,txt_null - .end_f: - popad - ret -endp - ;функция вызываемая при нажатии Enter в окне tree1 ;добавляет новый объект в окно tree2 align 4 @@ -844,8 +819,8 @@ push eax ebx ecx mov cx,word[eax+obj_opt.img-obj_opt] ;cx - индекс главной иконки добавляемого объекта shl ecx,16 stdcall mem_clear, u_object,sizeof.object - mov bl,byte[eax] - mov byte[u_object.c],bl + mov ebx,dword[eax] + mov dword[u_object.id],ebx stdcall dword[tl_node_add], u_object, ecx, tree2 ;добавляем объект @@: pop ecx ebx eax @@ -956,11 +931,11 @@ mouse_dd dd ? el_focus dd tree1 ;дерево со списком возможных типов объектов tree1 tree_list sizeof.ObjOpt,20+2, tl_key_no_edit+tl_draw_par_line+tl_list_box_mode,\ - 16,16, 0xffffff,0xb0d0ff,0xd000ff, 5,50,125,280, 0,3,0, el_focus,\ + 16,16, 0xffffff,0xb0d0ff,0xd000ff, 5,50,125,280, 0,obj_opt.info-obj_opt,0, el_focus,\ w_scr_t1,on_add_object ;дерево с объектами в пользовательском файле tree2 tree_list sizeof.object,MAX_CED_OBJECTS+2, tl_draw_par_line,\ - 16,16, 0xffffff,0xb0d0ff,0xd000ff, 155,50,130,280, 13,1,MAX_LEN_OBJ_TXT, el_focus,\ + 16,16, 0xffffff,0xb0d0ff,0xd000ff, 155,50,130,280, 13,u_object.txt-u_object,MAX_LEN_OBJ_TXT, el_focus,\ w_scr_t2,on_file_object_select msgbox_0: @@ -1168,6 +1143,7 @@ obj_opt ObjOpt cur_x dd 0 cur_y dd 0 foc_obj dd 0 ;объект в фокусе +obj_count_txt_props dd 0 ;количество используемых текстовых свойств obj_m_win dd 0 ;структура главного окна ; diff --git a/programs/develop/kol_f_edit/min_prog.ced b/programs/develop/kol_f_edit/min_prog.ced index ba2a22eabd3c9d05f7bbb454d69331b2fce87713..953aad3ff9ab07998ed8d36f4f03568281c2ef75 100644 GIT binary patch delta 1296 zcmZuwTSydP6yDLK3rUMkaZUCXpxFS%;Qdda+GVqR<4w$yD`+y@y;mvno`A}EN; z;Rr!5l|dohd=&ySGAwJsp@Ci!dMXmao`OJX{`t?!F7!YA^PTgb?|kP!=bzb+%<3}3 zc2A7>1tu(TtcF0}1<2`qFK`-a`C_bd(bjn{wGyF;T@kqLU{NcdP4x;Bg0MznS(Qo! zPq&E_TuTs*#DmM`<;TYOVZmSl&X_N7;~GY#5S&TkfB9i8CYnt~a5aTQdUU8%r5D+F zIXk2p5Nt%iicw@W0+zDSb3YrwMGirU#RP$z1=_U|3wpJ= z2);$YYb(*XnAtr6{j4}sMO$OB{?f!`YBHSv>cFV zOY_UH(Sp+jHC8qBJA$+cYYx2od^v*Y3Iu#5l3ETT$g5fO@!(zP!zO+UENYC1k zas9Zck11?)C;+eOtt1{M%aUNJeT3Fn-66_NqvQG2Nrv>Hi|miP$$q6r(uL%)GIX@I zA-_*B-wXO7~S_ delta 1919 zcmY+FSxl676vh9{e0*?47zPFbMI8imRKBUQsGy8MQHr9XxD2QWh*rhAVyqJrv5PgP zX*=GeNtdJz4{hv&p-Iy;UD7RSP172^@$<V##2}mhbgpM+sUw!m>#i=$B*Pb6pGa+v%Hi=Gp-Ji{+my@}0?)N6 zP7(pnLsH?6wysO!L9*;7H1Xvy$XD4f7Y?ZlBdKs6_qW9OR?ZkpY#xhX>6GgLu77w+MYicb)_nU*w` z2%(Fr@;JX#2)tYs(DeeIGIfm5%~HAi;Z$+aRTzGLnooe0Du?%!300`8vMDiL2z<6p zkr_hZb8PxS6L`#~Pi6{%&$a2rs1W!(oA#GW5%_#070x?;@W?QqDxaQ?X7MjGJ$`N0 zF~YoB<#0)b5aymuKUatg9yk1HrB8qlsRI0Rl~7#W0-FxamI(MlBo)qU8#sZt7e95Z zYE%I(i%A5lS|k)AEH-!_!)xBV?;`EKL|Lukoo#@p4s=@74$<)HU05rB(>MMdk1tbwc2+Hl3^&0)N=1i-{z^wJ1gC z+AN7J7DBf|739A)fv>db+LEhTwrDr}W`j?lkEk3TZ4_!(*I{>eYm$6%X^POTvgAr_ za^gM3V6_U5mE_*06k*V5$;tX8FG!>a{TfRyCWO$fwJEkZ$v2j#2;DkWkb9f;flziC z_FDV`(DkZ&pRzcQH_lPTxUV%uU0Q8G%{N-50K@M8kKeAZNJpLXbsmS>juECC?fh(; z5T=`K>RTZMzS*X_l|tZKY?{2`)zt* ztq}NtO}p0#fe+e*&l>nn!=d%Q3pix>w%VO)cNzX*gYOQh-EBDC?dR@N`=|=%@PUn& zX}7vPssJ}{5*OWG!-boD7jU29@73;AJ8bylEq?Akwfj}L0Kb~N><+7Y%_mj?rEh@{@avr=Z?#S=~F6)XY>o9ds;P%f9n?){EXo*2Ydp2MpekK T4~lz6-C6q&FASKWx_AEo^AvVt diff --git a/programs/develop/kol_f_edit/ob_o.asm b/programs/develop/kol_f_edit/ob_o.asm index e74264b459..fe2afe93af 100644 --- a/programs/develop/kol_f_edit/ob_o.asm +++ b/programs/develop/kol_f_edit/ob_o.asm @@ -2,15 +2,15 @@ include 'obj_codes.inc' -macro ObjOpt c,bl_type,graph,info,caption,Col,img,bit_prop +macro ObjOpt id,bl_type,graph,info,caption,Col,img,bit_prop { -db c +dd id db bl_type db graph @@: db info rb @b+30-$ @@: db caption -rb @b+MAX_LEN_OBJ_TXT-$ +rb @b+MAX_OPT_CAPTION-$ dw Col dw img ;индексы картинок (в файле 'icon.bmp') dd bit_prop+0 @@ -33,7 +33,8 @@ ObjOpt C_BUT, 1,1,' <20, 40, 60, 80,100,120, 0, 0, 0, 0, 0>,\ <29, 15, 16, 26, 27, 25, -1, -1, -1, -1,-1>,\ txt_bit_but -ObjOpt C_EDB, 1,1,'Текстовое поле','***отступ сверху*цвет фона*цвет выделения при удерживании shift или мышкой*цвет рамки*при неактивном боксе цвет рамки*цвет текста*максимальная длина текста*начальный текст',\ +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 @@ -47,7 +48,7 @@ ObjOpt C_CHB, 1,1,' 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> -ObjOpt C_WND, 1,1,'Окно','**отступ слева*отступ сверху*ширина*высота*цвет клиентской области*цвет заголовка (если есть)',\ +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 diff --git a/programs/develop/kol_f_edit/obj_codes.inc b/programs/develop/kol_f_edit/obj_codes.inc index bb43bfcfa2..f1eee45c4c 100644 --- a/programs/develop/kol_f_edit/obj_codes.inc +++ b/programs/develop/kol_f_edit/obj_codes.inc @@ -2,22 +2,23 @@ ; в этом файле собраны коды объектов ; -C_TDF equ 't' ;typedef -C_ACO equ 'a' ;автоматические коды (auto code) -C_STR equ 's' ;struct -C_INC equ '#' ;include -C_TXT equ 'd' ;блок кода (данных) -C_VAR equ '-' ;переменная -C_COM equ ';' ;комментарий -C_WND equ 'w' ;окно -C_CHB equ 'c' ;CheckBox -C_OPT equ 'o' ;OptionBox -C_EDB equ 'e' ;EditBox -C_BUT equ 'b' ;Button -C_DTT equ 'x' ;рисовать текст -C_REC equ 'r' ;рисовать прямоугольник -C_KEY equ 'k' ;клавиатура -C_LIB equ 'l' ;библиотека -C_IFN equ 'f' ;библиотечная подключаемая функция +C_TDF equ 'Type' ;typedef +C_ACO equ ('a' shl 24) ;автоматические коды (auto code) +C_STR equ ('s' shl 24) ;struct +C_INC equ ('#' shl 24) ;include +C_TXT equ ('d' shl 24) ;блок кода (данных) +C_VAR equ ('-' shl 24) ;переменная +C_COM equ (';' shl 24) ;комментарий +C_WND equ ('w' shl 24) ;окно +C_CHB equ ('c' shl 24) ;CheckBox +C_OPT equ ('o' shl 24) ;OptionBox +C_EDB equ ('e' shl 24) ;EditBox +C_BUT equ ('b' shl 24) ;Button +C_DTT equ ('x' shl 24) ;рисовать текст +C_REC equ 'Rect' ;рисовать прямоугольник +C_KEY equ ('k' shl 24) ;клавиатура +C_LIB equ 'Libr' ;библиотека +C_IFN equ ('f' shl 24) ;библиотечная подключаемая функция -MAX_LEN_OBJ_TXT equ 200 \ No newline at end of file +MAX_LEN_OBJ_TXT equ 200 ;максимальная длинна текстовых к свойств объекта +MAX_OPT_CAPTION equ 250 ;максимальная длинна подписей к свойствам объекта \ 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 428f6159f8..9cb808b940 100644 --- a/programs/develop/libraries/buf2d/trunk/buf2d.asm +++ b/programs/develop/libraries/buf2d/trunk/buf2d.asm @@ -1045,12 +1045,15 @@ proc buf_line_h, buf_struc:dword, coord_x0:dword, coord_y0:dword, coord_x1:dword mov ecx,dword[coord_y0] mov edx,dword[color] mov esi,dword[coord_x1] - - @@: ;for (x=x0 ; x x1 то меняем местами x0 и x1 + + @@: ;цикл по оси x от x0 до x1 cmp ebx,esi jge @f + call draw_pixel + inc ebx jmp @b @@: .end24: @@ -1099,6 +1102,8 @@ pushad mov edx,[w] add edx,eax mov ecx,[h] + cmp ecx,1 ;сравнение с минимально возможной высотой + jl .coord_end ;если высота меньше 1-го пикселя mov esi,dword[color] cld @@: