From 22153559feab5fc63cb241ac0ea7c02d77dd6769 Mon Sep 17 00:00:00 2001 From: ouv Date: Tue, 10 Nov 2009 11:44:46 +0000 Subject: [PATCH] =?utf8?q?Bug=20IPAL21429=20-=20TC5.1.3:=20Not=20all=20req?= =?utf8?q?uired=20surfaces=20of=20=C3=A2=C2=80=C2=9CIso=20Surface=20Defini?= =?utf8?q?tion=20=C3=A2=C2=80=C2=9D=20are=20shown=20currently=20(5.1.3=20c?= =?utf8?q?urrent13.10.2009)=20in=20compare=20with=20previous=20version=20o?= =?utf8?q?f=20application=205.1.2=20current02.07.2009?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- doc/salome/gui/VISU/images/isosurfaces.png | Bin 22762 -> 28550 bytes doc/salome/gui/VISU/input/iso_surfaces.doc | 6 +- src/PIPELINE/VISU_IsoSurfacesPL.cxx | 37 ++++++- src/PIPELINE/VISU_IsoSurfacesPL.hxx | 11 ++- src/VISUGUI/VISU_msg_en.ts | 12 +++ src/VISUGUI/VisuGUI_IsoSurfacesDlg.cxx | 106 +++++++++++++++------ src/VISUGUI/VisuGUI_IsoSurfacesDlg.h | 6 ++ src/VISU_I/VISU_IsoSurfaces_i.cc | 29 +++++- src/VISU_I/VISU_IsoSurfaces_i.hh | 8 ++ 9 files changed, 177 insertions(+), 38 deletions(-) diff --git a/doc/salome/gui/VISU/images/isosurfaces.png b/doc/salome/gui/VISU/images/isosurfaces.png index 358dc90650eec72ea181d7744713afa5dd370855..7b13173ab633e663a38221ed2ba88f41eaead780 100644 GIT binary patch literal 28550 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 lQ7w(_xBDKUv&P-n)Iv@49#a=_gwNMQ=Z{ literal 22762 zcmbTecRXBOzc);Z7D4nbiHP2bULrz>PV^FGl+mKsAqj$L5xqwQ5r!zEw-AKUdly9S zond&_T-SZheeQFg_c_n!`6r*r%$~j1?7i0S_ianKhMMAS0$KtrEUeo~&*ZhRu&^tz zu&%ws!vXKycXEPZVco@2l7Fn@oxVBahA=lgc_I8eT zxf(aDv?&voC~k3#U;9i+VJ-XUF(vL#mnY^g<2{PR@p!l()bX0fPoLV`g$%-+#Em3@Fv<`?TUyd zX-NZmb_K3!FO)>DYkC`qefdVXY#_7gyy$WhYQ;N8sa9eZKqScF{Bt*$yXjYe`w zd83bv3R`Ez1rr9l@ZgY13AWo$+1OjBTEmh;W3fgc^}~&)m0Gbjr_o3nKha}*BAI;l z0W-13eZ}xjM+y9%gdi)w=W_O|$|a4A%7lpXyp`;?<{5X_yvAP<65lDOCMtPOAosGLME@8oWOSd_DR*-j@ssP8QH|RvDc%zbQ|k66xX0OmAs8q zT;qXTd$(Zeg>%pCmZ%M*zuhKy%KvT9VV~E(bL;(sNsnrZtA`C5xbL*}SW5Op@XB;`D)ioJH<%yrG{TM zbF+|%#|5eXUL5;?4&`tBOsHu3wGc=iq{-UMXl{_|vV`*jGKUZ`Iw}l~YKi8$RE@vZaV*WfzW zJ+DSFRlRqLXoPx3tX(F??aCVM9t0m=8xNqp{M9rX`aDi0N6<|Qt1j?e{PcUY(~g+% z7{uPJrJ-RzD#HU^yyG9K*T_GDo%cZZvNQ*F-MauD**|z;sp3WGdpJ9gE?)B{C~N1_ zBK#`H!-zSl#L8`V*Cn9SQ6UaDGj||^SZkr6?bBXfe=Ajv|GNEdSK#}T5m_CH)AOs} z`6~V2RKq(jQfbCI5Azy#U$ZNz;Jy1$nJ3cRHArx`iJWoWHr4fc@0)4TjdNkv*Zaus zlPTf1BZ?}_^;*}Bd0rQsw3r>6P4VQA%$^S%HpSp5%-{!I5;D;X!kJw1*P{H60#!SU zN|WrSNQ2hAKWbq|#9=W&mOgfdwI2>6n4fJ~z!+T*=&cB_#nskAO?i!tuEaMR&FO6w?t3KAY|7+EAG1uS<=h!RitaZ(C7=vW z*-lco=Jj8iK8C(dx3DkN`DBM}V(n7XDnA&2Cb)9eb=90Bay)qrZrD5VJ8Q~7zm84z6HYD`Z z)fV4x^}GlB_LX)he(sWmfF9@cWr$c?9{P=4uxCxPZ~gKXky(AEbpE)IxZk(5wZ<5n zZ79^YRjso@7pEAW*0f_N(R51F?)5GvI!!^n64h!dlcdM4KSHrsicq)rNC@1_ z;h(uWCATuoXt_Y?c~{mI1lU91M=nmKcEfgHk|ZGzyz`BhUZ`tgZI1T!vj#)bp-PUt z`ixDmA2s4>z9y=+93ep;XQKu@Bj+nys-Cg0MV)NH?5V%m;^{13QRK1Lo&@lz#z+lg zYq_cBygQ)z9Vq<6ips?AHiYU;$>_2Dx-#~~V(?mH7Hj0H6)iTGxV}ph&eIY7?i05N z&QWK_y5F*RO*8J@$_0E3P5T-tc~o>JFzsHpB3c_}b?w2_iGxXjn|j2eoLeVgbqMK9 z#$=7UYlSJ#duJ(Fj?@+%JvU!N98(kKdHS)zlMo{v(V5zc=K{ZoHEVoZgj(ln|tlEa| z^RwpeyG*>-%Ma-Yns2qtt40#;t|*ZBdB`l=^;%aow@tt2Pl+kz7Jr%gzNnv9@5H=N zhW^OX=L8WfNRzkJyIJmPvczOG72{*z(ZxX?odtdg>2}Y6n}0*en~q82@6&--Rh5Yy z>eHTYP6F*WUiq;YqyIn_mmkwq(KIcZE_u=l+rO)tCl(-T2$4R}8}_V>Giq&2F{4s# z$hNc`DkZP>C8!;!DE{AO-$Dj_u zP*}lNLR2L`Y|?oXBJPrNVLv>&fw*v0Pgo-^{L)QsZ^=94!t0jOqNOcIJ38Qg@jUl+ zvysXYf%5!M$j~ZM&(d(EMEK}U&gCoeBt!fvR7=j|Ji7+oUb8Jl-1CYNPertaBWz$K z&L!2yh+g5a19{tuOM`~(>yQRcT zGp=D|m7Z?(^`()qAZ5GMJi1+*A-YB_bMf|rfj#?@l)!X8mUnunl;|q-F7D=K8_Hgp zxZ)_Ze@ewU5u$L)LiQ+wFG0iZ|X-I>pKqOPP7e$BLgIx!#uRspRjkBp6SDssu-rURc_rE$m^QrE6v3`E_ZDu;U>_L_bmnw-PgF zwSL9t7|~6k-p(8yyM?`6Oa+*wpIH?@X!U@joqgJgYORDXYPu>8XTT?n|$&3|0x!QZHd^luD= zuL_Wo(TCuN!6Yr*&;Gu`gKT`v^*;7vM)x0ItIebPro&M$*#H%!tkN^qQn9luXmuT| zs;seO5}$f_FBm4QW^0;h>h0^RWvpeKwpY!4lYsW7(0yjX*7>xgL%7HGc<6{-97#(f zEvpb8tgO4I2M*VtHg!=d9db4e2??=+*vx$TMN7oX%S$T)-PDEYXFS5c=TKK1tZVAz z#8V?yb9##Uq`~$lAopB6BYI)MqRg$#j=VpNlSYq?le2sx3n%FD>~s+uH+S17k^V1A zWC8+$)1Qe8hrs9@5sCeTIM;I_xzvO>7UaSn%XaA*bo&Jk`{Xu_^P9 zV74Wya$(=Pt{4sBQT?uEZvAwJANw8fY{_2-zLsf1AJc)0UoVatF19lM@sdx6&ADGB za;*#%pP2aW$14w=xRiNH*y`86M#i0ec8Yo_MC(|ruBytyB@{Viqc%3mBj$g~cd*jO zD#A*Ys}=s^=;Y*N=$J5iVvSzRHCQb}y!3MG2tjG-LlAN;N})AH(571A)M@|V zK$9b0$Z5D*S<9ZSBXHeFS($(!fVuja77X;#s0SHb(DA-A(=8&xa!^`dZMYSAShuNy&UOx%BYXnxeP2D5q`_)?H@i zp!`hV_q(sO)7qmL6b%gx6UK#UZ-e=jF787R^g~w7i6}QWSBStiST6fjEpd*_V_k+})7uWu!YSo-VeqvF|z_l$dPr@3AzBX;}6=Qhv>J=Zp z8yVM7wpoDB*3jANK#tFTCoA?d6_p3~?!DnQs>I@hbdlo_Gj{*!jN|;tNJobRFSv6) z!;Pv01Opz@Nl$A)t{f*T?s0NPd|V){$TS2?eDCChwOQu%$B(4>lP`63bmUD<8C6q- zO1Td9_I`A9bnJ_Ab4P*E$NKV9APiN(omE%yeyd6+QtEf&^#1+(ekkHWx9aa`iS4gt z#70Zq%xR&FzF|3vF#>GXB(3jmm($pr1~6h@VtZ(v@KOcLt8ZNfH)YA>LWHxRLOWi6 zzQ#UaPysVGg38qY&G~j+Um1_@OQE^I6DiuLcTXdz1}f}^ICAQrC-Lw*ZHhLYo=|Za z)Ca$Pdks9$(9rfEuUVgt0{yNkc20@s3Q)OmOPhXjnOD}b+vn6%S7ZT+SFyx^6u_JSWn&&nRn+{I*cAHMDPmO4L%@ZlI||G>_`^(;IQn7X5r!KH78_b zWF&k~W95d<{_>>A5b^%v!aq`hIVB}eP}a@W^>iL0}Mur2n9EIrnY;0l2 zTT?@YUc9xQTTu46U9D^LcjhA*rD&U7J=Z@aKbG8IWybPHkBo5z!o&)7OTLv6`z`J7 z@2?IQkg3ZYRE(T0fR)tFLl?RprSqboBl zI`vQ{!z`#;!#E73#cLzRK~7NVG}X1Y*dgY7$QD7#{doiq_dZ)nDr}f*ZkDyMum}qe zzb7u9szkJH7^DDHsC8J!`4M?kPJUE@aRV;eRj z3U01)?#G`$<%MXYhW6%MIvBou`SNLOL$h!MG_L`+Pj|p9y0|>wQ44&Ac~ChDQ466= z0l&Lb1iMv}ksq?3Bn#P*V%D}aEETaaYS?v-LS1`xxT-lDxC0}&b&H=iDsjLXa@5U6D_fuGp+8^T-))vwx-9xLwOBNE?+d<(2rmE+}KRoiFONO}lm|-fz>A8{;J_G_uTy&$8nY1;?A6i=-%)PbKcwP)K@br8H zdN!k!-}n8fgv19rhK608WUO1;&$BgNZNRJcH%glJH$u$74Y0DZ{-jk<-LSQ#)%qqyt%Yc7{Lfqwl?6o?p`^K5Yp*ICdGs!y=y>EuZ-I-Yi@D(h{kWUdj%WS^ z&LRX3IHXet^(Br~^&#k^ySuMUeb-nh8?96Gj1ayQNHa4veOu~KVy1`YPH%gBrB8of zmy?sj3%r~Dq4D14M0w~EXX5od_O>K5pOjc;1yVt_Ji~nH4R`UpzGO8ks|P_iL@jzN zM&{^A5BoDzVF~^kot(V)*`)GU}bTQeY%N*vtOcq z1wj~VXpmgZqMbv}5BB#L8ct@*jjX4uT_Wj3diPJk@+~BdKy+XUT6e!}kED4~DV%g= zyQui$n2Lm?nT~Vr6?L63n7Bj?5+5#%1Q=2_Ig5~aeR2d)_ z6%!Mqz2v~p^yE4~ia7@5*7c`@5eO|W*zVrm{P|AP%GQyyks1N^(BZ0JpL8pz=y-&L zUu;S;6CK^f82}=n5p#VI5D=i2MXr@%TCy^{rakSkVsd(V`XMPvkJFK~g<*J7&kSN? zV<|)n8dgc6zB9qor%%(RJyPr5Zi6X&Jy%O9=e5EYbgTjt3WbG^y{xbuxQ0;P+6|KR zFsXG9S5%N`$!ze0B4*e3cXxmHs(EPvC=u{DprQS~JnUOsNn`B*m2MrUy1M$?x*Kk1 z`w+=t#v4KecLh1)D0_@P$^OVij+P+FC<@{^$dzwGJ>U&LRgX*?b{i`<;5^9i`wZe1 zLbU8`Twlk$gJ0c5NG~NP*{5E!oA|~;rOnfYrkz%ANLB`OUrbEQy)jqN5T4lGtzuYV zi%r0lM1nUJ&%wfxOF&EF zrJE$PRD00|cWv@LL1Y?kH=>=86P^&10D$Bw%)%jZ0s14@30fgqxkX38%TQ2QJ3BkU zUB_Wo03CZ>;=#RjRXD>FGLd(op}0}kX!kmDW!Tt0*gZ4?T}zYwg>h%K)?D^92^b_L zx8aA33{@AG(#6}sugE-H300@50c5hWwk93t`f$j(wjVx?lb{@;HGj!0BnTiCYRNtI zkz*HA678sSGrpz~G`-&+22)avE8kv!qGT7oq*|!D@#u&?%D#?b zJEzz?hSyn{ID$#GzgUJw3t!H38=mKp0MhnZTIv6vJIQ6FFI79NmDPUL1!Rj(zt-I@ zBR$*1CVz|9q_(2?8zn~8ZtLh6Gnn!4Wk@w8ksn-=~*^0mLemaW!=QpR(E zeI$A~;)N$SK3uNXha$?p2Do5#b-OBUjs}}7HUW9w`D;1Ny+)GbFQzJx-QPbDx@OOw z;bl3Xzl^RI-UdYQmCN$aTpf+Rz+zqHi$xh=wWx|%=G7`2F_XyC>Z*N=f*;|EKO0hebs+trKF zD58#g4W>JXI)KPL1buj6v!>kRkyLzUrs>K#iAbiVd4-A?hYo=dBQ5H9<2jhjSVEKb z_&qQAzI*MMjusn5C={Ci{B`HSg9m))XA?&gH|FmbMfDq2Iw+l-*BOzfBqb%Wl)?Z- z0E2VgTWIqQt3(-dWczq~^Lec6m>QkZI>Q42r|DuY+|Lm?s8x!4SPIT8ASh^1W`%!# zykj|6bzbedL{P#Tm;v~c(fade&wl^@5o9ZDIO}u504g_;tbzg#Z{z8Go4(AaW_kIb zT5}oH1~2!d86ATTKn>_JHTsurdkmA=z23!+n1kua6+qi_?S}G-Ov`DVot@ti(I~sP z@M~&n64E`293LO&*fJ~ky-g?L_)~i$+_c07z;Z$c@nQ42j!2r;H`j5WoioF`q(|XK z9no77Y+PJFhlb)PoQpm^2_?b;D2>l=)Zt@XoTlH`@bGYR)Zv=vd9!Z%=p-{V)Tc|c zpxSp@r9cj@wU~V@o6W}}N=!_Q#beeOX$a3#T6~CA(E#TLMe_5A?M69%%Tpc3Y=qqm z&g<4IF$b@@L~f&fqkU%&NJC(Cn%^lJc#ZGSW9LF zpx9%ij;Za(;E>*QvCT;4ifuOU4m2&R^i{-woKJZnnFaUe@|8xe2 zhF<^fv7u|--e=VsO2;*YgNqx-C-MVIudeQwT74>tbDQ?(!qbS9lXXem5`!MV3-1H) z!rOE)Xng^?^uqX_<>}cOHl|EIe*C7@Gi{NdwR-=Y8cbt#>9Yq|;Ff^d@*RSt#L81i zX#tNiMbf7X5*UpF_h@ZxO(j({d`qHoDoRf$3&E~|HI9tuk_WtTq3X8_Ms=J(_g=`VF7VKla2gvXO8K$-*!#t zTtMCNnjBbGFPpKj-VrjiBrA4ceMn0~zCq(YQ&+c{ZwbMozTM8TcN?%A;dezvTmh&x z*3UUPg~MB6B_+Io5LkA_Y2&R?$(@|n4sFdk5s{@fcw-TuX5`usG)*2A7NGYefm<2e

xW4D+^kaadR(dlmfzYwpKL3^2q0JzJnCbI2TY~cE&!5NZeFWoJ)vZAdB%~Mp z-q=dY^Ld}G5KuxjXFt?oluT@Kt?@n-l-te&w@jPP1(rle6s<_hOTJf^7e2pH3fBQb z_up%y!rGiJjRVMs2@41@F_}{OXYI<73PWGNR8+*rv8su`C~0bv*_uQYYIwykN~KRe z`k$zRiC*1vWn}=VnECifUPm!GRum1bxx23ohIq}v#>%)PB&N)n#@}mC>knN293B?- zJw5g6bTP(gv|+EEuKu7`;>OLJu|PUAHa14zG?nE!VT{n z%j!pMjIO!UOL~9EeV$~fM!;`W=gD1Ce?b7G9#93?Ik_zlnR99miX}3>`Hif-RXOFv%&ycptgi#v zN|U=hX}ww{oeoJT)Ya10x2>TdC*SQEo7-(-x?C9+iLAc%uexsD5M8D1?AzfAox+Vo zZj<)G+~!K+(0Ybed6~0!+bp4sI`E-IMtglw%qi z8V9r$=N#-Rqi268PpxnuiA25B{9|r7MTL6W@1D1SrMW*x%S60IX?Qe}73gvgJ`PY7b>_ zC{Gc9-@@X;hIsbVXvCk7bAPGjI!XTrJoL*TTCV#0m!N(4SXyFzaZMqT`bYKNVzPu659sI-r`~6}0WNNC1;Ke5Y+;e_ z|3vgPy#&Mb2O1rrpEorSUvW61fv?A^mi`O$_0C_vUQU!j4%enSpf&#+2+*Uslbe@E zdWZ2xcpU4u7wQn8Zr&ASjss#1fh+(rFyE8;CdJE$swxpsS1mh^8OSLq0d(tpFQN-b zX()lmc*Jdt8cJp6A6stI_nCKSsMf#%VSYZ~hq=lB-U z2t&z@Djl*t(nf)F?s|njxvl|(TL%X&3D51jKu>gA>E-{EeeXqO6;;}Rt$cyb$K>QN zg`85FpjX7$*x2z239)Hu&llUHl$4aR0eU=QNF+JxW#KiYk@gn_y)Vaku2ICj>7SkL zwIRcZyrQDpYX7}axJkz^O=j-!(l1|v0Vx519eezApdH!)+7#eg zxbFY#G>kB-CIal-)|PFmD$VqInuxRY@8&m0^a&(KeJo^#;Bw&^w0^Dm8elDZpCu&G zfJw(6WU(1t{SApkMtsH1IR#CPhTkF>Qlpk{iHcm4S5OeJ{e9Qpqfz+1BWR-krt4r0 zK?p|`V4vp!SZ1UXar&Yd!)RRZ9a~*pjUrMC^UZ%IejHKiLl$@elVtC9yBt@ISmu7F z`W#W~G%*O_GN~P2_PrPE2522%r*4=I6Ga)N5TszV-KY?hpP#QH9N{}us8<4oiIwJD z^p`&AfSUMiERo6Tn%=QnGbk3ru+@9tp8xMIAkUfVJ-IOZg~dNchas=tVG6c>pQ%)# zM^p@nh+v82M4~JwmQRswZkx7#bQHmzdfPN)^=D z>z`#AaR=I<^iK!Pi){hto1`2kJGc2lbvQ8IEcmE*kB_Zq>wVmJW*b^O+uGVx(nVv< z0?uwGC_e>iFQE49fvBM@j(ESr0Yx#_KX`xuA-I4rYTgyk{^!r1{$dk}S^oo7P}bSm z*j|o*H;<2x2MY4u@$vGAo>?yFwqULtU@+1;aA6(-nhTtxVY@3l^JM}2+s$KRN!qOH zni?9fK_Sgo%akjqzAT6bzMRmh)k7y!g^)WTTIMxAa|=C+bTTbtV^o019B)q`%lo8} zUUPwZE)tO{8IKY^d>|nwxCxY5o<6m}#F;uTqb`TZig4?mRP0X!P%b3EpU7l>OX{m} zZ|k1)HlvNX`_j^kh|ttP7>XBooES@|VzX{0YqHe&O8PlNxlK>It&r|ly|CIpT4Xx_ z>Hhlqtnu{X7MAqcAF_8+l0|YUU={z<4{P3E+qpP9aNn4WnhU&Qcnv`&@&jwAS*UDn zJlitl{CN@=i?6JZl;5G%RU?|qxcb8?_Q3QUIskxg4T!|SBF1)`JkqJOXd^JqJTF^v z0X@cR#)k@+b)HlDnGNGuKx*<{FUZFuCT6WLV_R&GX6EMZnRmNu9P@V{In?m`y|EY( zI(eNKfeXHdQJ>%nM)P?GBX=fbNY&x2hEa(D_t4MIq}s})IRzt5=KQj#Ouez2%ch@f z{m7K^!|*3?jAo8P>G@pU0JOr}$M?=}rkCtS`Wm(#bJX*TF*4RbiF`5I+0)=u{4-a< z77O@ImY4Nsgf!y8;I@sBp2Bs0ouvpk>%AP-JEno6@+_K1|DpAaB8PhE&FFdfb9tN!Qji!zY zTKvSrQ6PR`?sN@`NOd%-x(2W~6zJrCpaXwq)#tN*10)g8c@+N>MjyA&l zij8YpicRY9h=|&e$if!X6Qxjn1eD_J>j}zj_9YGNm=z;)b*7#+ z#SLa3KqO^0eT+IB6c~Zs4k$S0=H`h8w-3Tu05}Yh)0}rXyTWd~MA;wuN`VKcdx8cw zkRb5w#0;KJYw#rXV_D#I>|SiH_#8Mp>*|~SPu(!_2*{QgM?ywM28a(15rf6dq(>yZ@Zd*k2E;(hI8fiEe2-r)(Q)$Asxp@k4r-}oiW=DOMWEc4x+q-T z+_+u z;Nk)F^vHRZFjq_<)9F8oCg5FLL=$T2apJ2)cRif{6~B^_-Q}Y zqTm81+5brc328;~%w`bmZGAFV=|Q-}0?wC`;_j=m#>VvOsy^?_%F1Xv00#VlEUEAQ zb%!~ehTPKY=L-{4Q&V{<>b4H1!0xa+%v{JVM5%Zw+@vn?&mSwf^AJ)-Mm3;I&iS9; zepws&WAdxI5Mcq8Hq9dkYBcI7$9}AsUfMso=?cB`nteW51}`r+cW>IQFE%dj39!Ba z#4YW-EQ zq!>~j<>{4}j-XsE6wk7OKt57CI{Ke6Bx5&B$Vl%0NZ|evKr-G>0|}@xz^uoBXf1?? z!35?~en&;4!qRfn-Bw+i|66ED45^7nmFUh_(D;O;B|Edhchn2-H3qxP0�Y;)V+u zSfux)rDxa1OrAXpLmC_22atp+e{7@kSNGQ)zMra}G-a8QFranE#15+jsoQcJRs6A7 zZv)ZtFmcNOOS_5B5Glp`(-XjQrTCcqpu+HXH~;kmfB40lh_uHB1_pr9I*~4!+27vt zSkb~)C5$5p@m02iB%yCXqKw^L9PNNJ;O7Y4o{tCS-6L7kR8_gio4ipYC zm;D>8>KR4fO_tW$hlh0xD{VW63$!`8Fcq~}V&_}=>Cn&+&3-=#7FYuY4N#A$b%0#p zL!$7l63m^SE%x_&I>Rv}QjfVN$CV-HP?DI38w(JeyMZ!A5YpmWcyS6$Cc~~tanI$A z4P-%FJ{ubw*6-m?Z8i#zsbK&rzQZ~^v4D@S-%x9f56{NK!~0&LH_Qz)Xg&YJMVq%@ zA`DBJbp@(g+LCTSO<}_$6P|3bv~Kzl&}cfTvI4Q2S+o3GzK4dsU@Lc;5&w)UPew`G z{u&qe)p9otvUVrhUlDYba7L1zw>NKbF+V)8wFZI}q4z7S6R)N$^!c%#J}#e4FFhDS zSXdY!V9gvkpSp6sgY3p&z84c?r0<8OCiDq`i?x;2?y$D{9k6t4n>79o(xmoO<^$c= zvs)h(a>xu=I0dIJ)+?aC-9J|(1;YRhtOEM30zh^SZR7myMPLDn~~|l2mPfc;QZ|Sg-VEx#{--o;eOoN#J~eR!&Ai@xmMp zYNyf#S8Pe+<@@|BpVZ*s8^~H3LF?VY=e)6}2KT|zr>I1Bc4mWS>3@7?Qx8mbF8%MH zx*Dl?jKgALhyj#j`MZ774B6~nq_3P^MDz{V3Q>%--dWa^UG%|k<(7$IuDu%u~W)^7(gTX<09Wl`=O^2w<-*|(ah)9`w>QZKzJ`HYygYm z;^LqWu(a!ZR;whlfmg6*cdqT`%j;i2ObkfHSdln6J++|e{6}&Hk^+(|n6DiUsZ$*D zFAwnRT9)edwzdX6<_{{`p3-d+U00t^Zd4(r?N|z~HciN znOx1nXA30E&k>{rfCLM8eqrSFdJr&CdWgw{*Qn;{_0mS~Y!~jwTY_YO84Ud*!PPw5 zoae08eS*EC%SJF!-MaT-#e8e1pyQ+v>Uhh@+~@C{#0?yrYv1>Bq7prT?LO@}<+yoy z;)D?r3TJRY1`_z7Tw^Xm&}ls2z5@(~&5^Ex312aIO`D$$m)o!KAjSVhy8Tu3mvqZ< zta`Q&+Q9sb*BpWi+1uMbH<#tPHED2M>eiv=3&JK4KO5u=MaRRHp5Bo>kKpsNM@#x= z=yE`*c_fxr%kWhTbX=E<*5sqQI=d%=M=R{KE%MtxYZY*Cjjg$>WbtSG`t=OwHhpkO zZ&eFwEUBrt@W2$(9CRIcLdqcnp@P7or4g{gy9awhO)W(NDwb)$5=0@ITB-X}GDl7l z<{KE-9utcLmNCJ`XtBw2S62Zb%mO^hdSCLbb0fNaxpA!62svg3Q++l^a{vB)?<=XH z!=-N{h5DB$*A}@}Q4nqfVY4Eq9fz9r>ei)&lKx$eFB-==c@C7 z;k<3UK3wKfI+J`EBHm#B??l=j(C9sY8{GDXl|u8kITMs8E1a}#%zRz|T~=(l63B4C zu;S`K$R8;Mjv5dCc(85jh5P2soBg)ypVdrM8h$YaUOe8^F8$fj;igz8kv_?DTrmEh z)LT(4OKi&>_D_XXyraL{%w|bNz|AvQR~ulSg_1xt=hKj<0HElWxa`<>t*0KY9J#bv zQnW}3A377bqy$^*#yP{kIs()g91=3(MeXzib%3g#tcZSP24+1SZIZGrP(9^zmY}$^ zA?M%xwVpj$1Z@XT^Tm^N)ScULm<;iH{MkNn$`29`)c|P)Jk5LnRe{v^SGQ9Do1nrB zMMTVkyja@cd=aWW?g5^Io z+ooC-JVko+gKl6yVry&B2}6gY@CtNmbmR)R)w_{ZF%fBR7S?4F<&Z=7$d(uP%FXrbx7_{K7;K4AaFq~~a3t7CL z5JQ#BG<6QyXbmM647~Jrb#v9^NB{|`g@r{-;taUYAPfp711u+1*YSvA@k8jl@5?>H zfU9&_r@ZSA9O3_Oxm?pLJu}$Th5T?}o_=ZfNH#lIj!jn1z5nnb25${Rg_|x>oOND1 z*1#l0P}jUttW>a_s&cNXy;xM2w*K|uo(Ij}V_a4dDEGpu2lauKG4O3v+9OhWdO}&y z4uB~j@(us?;CA3n9w6wRaRx9D3PMQ369GX2tW4Bz+aW`B0;ID`f0x{Prly8DO88sr zS3bi$dJ2x4P-4Vd-lG{XlRyo#tw=SDHm#Ul*-(CO)l&)lb zOlk>X}&UfdSuiB=j(!khDEzgNS&~ESW(5j7&a}`L>A>te{VOrYS;dn8>e<}^_SV91p z0NFR!<4uD@h_7LlQ_siT=a}F!mc4F?`C?v_H&kk1;|P$Hj~HJXU1>M;kkRKbmf$>H z)aCPt^tEUIVuvFyi`t|u{@@itw%VL#J-d_nAF#0SqhbdlnPeK}(4&)&+*dWy&@UQ$ zuj3MZI98+us*?QEr~D4%d_YIul4b==x;s-i4X}e@Mkq)xCQHL=TUTEG{`3YT69C1K z1NMjTAU;RS<)}JEE5tC@dTP`Wq+b?5+#ndAtRGq-{LO4yk|U;H`g~I`zjErR#DtKV z?-LK^v846WM-4md9ULrnva6F0iUb$W)RMaEkq`&V$d;Hka6v#j#-#WJZF;O$qB8(k zdHu7G6x-W(a_DDU2fuCqU0|AZ*Xym6`u0Fk$7@KVjoE82fo9`gS4DSzvXu{z&gN8A z3~Rom0ZZZ?W(7Vz-@Bl0YZR(F%l?aqK3HL5VR8R&@gvs|P4Pb}6d&T^T7h#a>Ulv8 zd|WIm8ymfXR$C$0-QSNB8ydR{q`LsP0$OT!mP}S#1SMt}jushM3QPO_b@v~MiY5ow z;OlN6Mk_%;w+`HOHMh6t`$%5yjV&owfTheq`X#YI%FRq1+5s|bNWgrcnf)B9VyTMO zmhF*`;kuwtN`o6&&cXCG_-oNV9(P%wRaBM7Q=XLm^c2sEl{P9ftHCcy7?K9&BR_~# zv_~`8`#b?A@nOs+vFwf0Q<}1j}8vpzA=Dg_n$GdKm=Wq zAjj2hfRaFI0+84S`17uLIj?>V7)0OBK(bV9NWHVBq^1VqAt66MKLCP)b_-t!@Oywl zVbDwI_C-BQdULiR?GU+kxIPj=W#%0VG7KMQVZKw-*27;lG1Gn2(J&5p7J$?f%W7)g zDJ?DC9Ipxb^yzMIhD67Q&~J?XFF4{U7C3o0DyK#M1F;R*eq)pY!2^t|4ALfU00V)t zE?;P5R0_hOp^k7nCO{ZBu>d@OBvU^QojNGbs+us1UUxqhD{zt^XXCS|s4aeo3Ful> zsPHpNct$327ka(>UM=>55du5d5>a!W;{9Ug7^=NtybbLJzf)IVALF5M8p{H;MP@Kh zl`i!B_~aztq|Wm{-FHSQU;WXOwW-jNLS45x*a`M4@J}g_0|833FYg62gNQ-=XDwob zS`7MyOgcal3uKAbe(FuP{mAlezdM? zi+FMAXnUrvtFrjll7j7+AK`7_)l2`*O)_mk4n+VN$Ej)2GqL2ABnP%W2-f!Xct?Zv z3L=>N8$)%(>Q|Q)OMk+oVduN^p-hu7O^}|tbM%rt?W#28ivBX@zxXVJ-yocrsPy{r zzefNbjJQT4qeegs5wYI?zBn@m`{xkNO* zn8nExbr0Y)M7k_?WRKVa0%wabOv`z4udDo6_1?)`Adp}B0*m4sD`!)jsaY5Ubmn&c(vAN*;53%Wg1hdHWrR2ZWBXIHS%R38jXG~O&(RVc)Mf4c#yc0g$ zni>Ncf>#B>x>HT>xxfjR=e6*AW}0kNz{fMO7_qB`yINOH@UQD=3i2fM6Z(q118;w} z264O2_#6_suvAy@3;){p_mv&|ERhX7Oh~c6UjwAWw9O5Gpa;^AMV=cHuZCue5OeihODE*w9-Hzl&+!jqR{NS)-x#aZ*s`CX zz2?XOhQKB!`n}_P)gWgAxSb{N%^C6hUIPOMq@ihpW}9!hncf9yqF7zH(G78A&| z$aXbQDg4jn}1{i0owCYMYRi<%*zcg`+k4b`S z?s6Xqlx_fgr^nFJ%Z-vrKxf_?Yr0GT5k;)KJUr2-r`|a7#F)GV#k#NeX{$=IDE4cN zuAF2RkU}hj`rvc0>;lYfY1NBit$@j)p=3VuYk&=6Im|U?05$)hw{Ax#Tny~vYI{z3 z0H{BZ3UFn?t_$CwOt5YQUiHg9R7ut_uYv1xRLz;zOivrX702BJ3KRS|r6Hhp))!gQ z*V|iZqzAme6cBT|LX9=)pH9kwy#v^oWKMZjma2{pd7*Ccx9=tEhk<>WQU*-{QsDFe ztPFtN7ROt2ieL-m@y=Y|PbD(WL;Ix_32xyYr}U*4UPgXf-%n}_)XqbR=(+&y!H9Y~ zPznGcK%Kn?&mUbIGh7-oS?UmW4E-uooY3zyXlaYHI3n|)A%R`7fwAF-P#eXaJ8wYl zv;Wg$6>p1cU^fva4hS-{_fcj>C-d)!xjh)f-NTyDTh8QvsK92(&aSSqVS|7yQ0akW zy`YSuNaQlLc#qT&<`Dz|)7sgg1dLq)bi~@3sVGbw5yai286?_4e6q}8WpOdcw8TrC z(r*cX84yF&wJaM`9|O7fqvQ2KC?fb>$mg+*8n7MgOzO-F>EZ4I3rRUEJcWF7yk{U$eh`9+z z21M)V#>4Zgsk%Apf-b)|i%mD_`%So1Kk-aHnw|X=Q8P^Nv|k~IqJ&n-@T;BuAl25a z0tfv=}nn2Z+-We;Yw4HfdZt8-rHpQJnT*N&@Iw0y`or+c z@%e+xvcQ<6qr=0WO9#9$xQyO+)kNom!QUzwTWq<-JMEEnXJBlKN>x?0)S~S@$izrQ zI;&S9VJ9RLrtQ9tDZD<>|~yq zbOX07$!F&5cy>zkM7-quboLE>N9MLjkklpcQ-6Z<(|6FjsW%tv*Lz&EZTn zR-Wbb1l3A;deMu_xDPpXD8qz??QNeL5F%rkQ)9w9<5)YGW2CjvlR($m5Iq{!zVd1K z90vAza=b4KOHeP01QYM6Cgp%YB}+6q$+9rXF_56t=DGUe@p1bp{$dVWg!gVXZeh|3 z1w9LpC@MvG*^@)=^lY#k() za_>#_1w6_OSYBi6x}SNm!&;bh+w(G_ER06b<|jzCpX~_-m4(HriL-Bm*`3Vq*3NT2 z``3;0x}@$t+1?O6_H3fr-0Ktf)0MosIB*#=@oLjs@fYs8bk(TpV{M1s?<$KNyIetl z^D~;Aodz%|N->GhF6G2}zZ<;^w(yVu3IXFfA1Px)3QSH;f|zd(Dh@qfYPkq@4@I;^ zP$`04%wV7AiJ zLf@4}t>#ekTgcOUj+^hrWnDbz`W)HY3qbj5*b*`cGZeQzDG{F9)z4DVkaHUzKe_{= zzE_@>&Ic7uQ!|(QKOF2=`kbrh-&HTC+FNvPJ-1jNF5n09>pCPTs>}E!m2Ud`%>hB!k74B)=e)sBBD!JL8OP@$p_OBAi8oM;(dSR> z>6UY##Ojod{7~5GKuiGn)|_3;=;)~ER>ct1m7ZQwwa^S@6u5Ef!e0zgahRnbmABx{bJwtA6YRb6Rj zw(#W8m_jMqj+Dp|G%|mT!d(j5o~_;g*Ups&HI=2&P$*1~fZE71ARtmMqsXGNhNaoW zrCn%jAP5A>C>@;Km2<9 zQS^>Ltj@6zCejaG`vc^q;j`V`1h?NNs2?T zmTx!cC_@(V4V7!c{JmRO_{SUe?}DiODec^*vq>|*P5vRauyM19e;nX1&%v=A( zg1(+_MUOSyJeK@BYJ=Hh*-hbosY;#6NN?y&UDTLkNCi}JwD7k*nZ=8a&EP7lc_OO+ z1~0mIZ<@lV?#i`nGZi0n1Hwd?S&K=d0Jlq{Y+Hf=2}<*zE^OmU?{VHj{ZKX*OC%Dl zd6}oUK-g(th4{|5TG)(PATzjNB?>GM@B{5YSOO4>W&`iL15jIB9g!~dwfocyV^vt} zC?pcu4GS*P03cZJjcB)WCqLgACk=(!EqAFe&mnSp%t3$7jVYu04hWAIU(6~M|pGU?hK&SM949WSc~Az@Y1{iWbGEfrDjkf z9wh*v2ITP{Df#=GLz@JeD3i<;T zl2_Mf0;HIC9c^uGxed&K3?K*G=nr;Kx8fwkyr577wKwN0^d%GQsKu>@l)*kq9R26i zT|onQ3y-H)gMN8aF+4F5|1zg+DsAA@3*kJI0g@_O45}WzQ~MGa+l_A1q`hvit3yCQ zwk>V^z`ekI4h!x^(Y9aGAz}%IUmHzASL>>4(kB4q@im?;k za==8oU15${U%0o8HyCxU5inSkdg@{gto|_081|(>;)chXNaT)2qmhYO`u4Vi)~lIE z?;mskX-h_7Wb2>YJi3$(684z3t$kxxyOqMHT=Vq}0@_xPz2?U*u|-_mPO58{TKYS_CY&J-{$idh~vQJqGpS zF2Q~p!K$^Hj{PuhgaGRZkk_XhhTp#Rl8Q4-TeX1&4uoczaj&*T=+&=_Y%PkD_`g`s za)#2uee@qLJD(T}W$W3jzXE9z=hiJ|J_3|TTl}U*M%43%=yrgqrvMVF&J{A@IlD|- zYny4u^3EfTFAnd!0rN6tSq@f)Jc}TasHS*49?((^5IZQF%J=cTQD&=kofI*ezG%$f z?zrNisk~U$)@GlC>KrP?xS#<|i=+u}0+?(~lNLpKlSW2I_c^w06U-wf8ynXo`Dcc3 z#rG@&s`7lNOlJoQwe+Y_uci$O+A~aI|$(k?yEsh*ATnawnekWb41(GkZ1<(aoz=h)S`{f_v-28k- zS&oCPJZ?iAN^L;JT`Oj`KTA$bq-!J95)Oq%$+|H+1cgEYy)y#lQ2o5~hX(CMlZ|tw z8KtYZL7&<{r+$aKs7xJ;V`8y5NHEzHHCfI>y*pz+ih#F3iT*QT$*XVR>x_SAh7}2E zZ(oQj=t63?ffmoVr)%coyz*9-`n4lxz>GEW(SQwBNb;X<`Chv%pW?&Y2?TKG2%f#A+hj}`8m9k;m&rKcSZft+q-cZbi8WCO_MqIpvU2-Kl2d4fV D$X8zd diff --git a/doc/salome/gui/VISU/input/iso_surfaces.doc b/doc/salome/gui/VISU/input/iso_surfaces.doc index a06f907e..2810f218 100644 --- a/doc/salome/gui/VISU/input/iso_surfaces.doc +++ b/doc/salome/gui/VISU/input/iso_surfaces.doc @@ -27,13 +27,15 @@ Surfaces, or click "Iso surfaces" icon in the

  • Iso Surface tab allows to set additional parameters of the Iso Surfaces presentation:
    • -
    • Number of surfaces, which will be generated in the framework of this presentation.
    • Minimum / Maximum value fields allow to enter the range of scalar or vector values applied to the cells, on the basis of which -this presentation will be created.
    • +this presentation will be created (note that these fields are editable +only if Use custom range button is checked, otherwise range of +the scalar bar values is used).
    • Update scalar bar range with these values button allows you to update the range of the values, displayed with by the scalar bar, with the previously defined range of values.
    • +
    • Number of surfaces, which will be generated in the framework of this presentation.
  • Scalar Bar tab allows to define the parameters of the scalar bar displayed with this presentation (\ref scalar_map_page "see also").
  • diff --git a/src/PIPELINE/VISU_IsoSurfacesPL.cxx b/src/PIPELINE/VISU_IsoSurfacesPL.cxx index 25abb517..47554dc0 100644 --- a/src/PIPELINE/VISU_IsoSurfacesPL.cxx +++ b/src/PIPELINE/VISU_IsoSurfacesPL.cxx @@ -32,6 +32,7 @@ #include +#define GAP_COEFFICIENT 0.0001 //---------------------------------------------------------------------------- @@ -91,6 +92,7 @@ VISU_IsoSurfacesPL SetNbParts(aPipeLine->GetNbParts()); vtkFloatingPointType aRange[2] = {aPipeLine->GetMin(), aPipeLine->GetMax()}; SetRange(aRange); + SetRangeFixed(aPipeLine->IsRangeFixed()); } } @@ -134,15 +136,20 @@ VISU_IsoSurfacesPL //---------------------------------------------------------------------------- void VISU_IsoSurfacesPL -::SetRange(vtkFloatingPointType theRange[2]) +::SetRange(vtkFloatingPointType theRange[2], bool theIsForced) { - if(VISU::CheckIsSameRange(myRange, theRange)) + if(VISU::CheckIsSameRange(myRange, theRange) && !theIsForced) return; if(theRange[0] <= theRange[1]){ myRange[0] = theRange[0]; myRange[1] = theRange[1]; vtkFloatingPointType aRange[2] = {theRange[0], theRange[1]}; + if( IsRangeFixed() ) { + double aDelta = fabs( aRange[1] - aRange[0] ) * GAP_COEFFICIENT; + aRange[0] += aDelta; + aRange[1] -= aDelta; + } if(GetScaling() == VTK_SCALE_LOG10) VISU_LookupTable::ComputeLogRange(theRange, aRange); myContourFilter->GenerateValues(GetNbParts(), aRange); @@ -168,6 +175,25 @@ VISU_IsoSurfacesPL } +//---------------------------------------------------------------------------- +void +VISU_IsoSurfacesPL +::SetRangeFixed(bool theIsFixed) +{ + myIsRangeFixed = theIsFixed; + SetRange( myRange, true ); +} + + +//---------------------------------------------------------------------------- +bool +VISU_IsoSurfacesPL +::IsRangeFixed() +{ + return myIsRangeFixed; +} + + void //---------------------------------------------------------------------------- VISU_IsoSurfacesPL @@ -180,6 +206,8 @@ VISU_IsoSurfacesPL vtkFloatingPointType aScalarRange[2]; GetSourceRange(aScalarRange); SetRange(aScalarRange); + + SetRangeFixed(true); } //---------------------------------------------------------------------------- @@ -233,6 +261,11 @@ VISU_IsoSurfacesPL vtkFloatingPointType aRange[2] = {GetMax() - theMapScale*(GetMax()-GetMin()), GetMax()}; vtkFloatingPointType aNewRange[2] = {aRange[0], aRange[1]}; + if( IsRangeFixed() ) { + double aDelta = fabs( aNewRange[1] - aNewRange[0] ) * GAP_COEFFICIENT; + aNewRange[0] += aDelta; + aNewRange[1] -= aDelta; + } if(GetScaling() == VTK_SCALE_LOG10) VISU_LookupTable::ComputeLogRange(aRange,aNewRange); myContourFilter->GenerateValues(GetNbParts(), aNewRange); diff --git a/src/PIPELINE/VISU_IsoSurfacesPL.hxx b/src/PIPELINE/VISU_IsoSurfacesPL.hxx index 9c8b8a80..1fb16590 100644 --- a/src/PIPELINE/VISU_IsoSurfacesPL.hxx +++ b/src/PIPELINE/VISU_IsoSurfacesPL.hxx @@ -65,7 +65,7 @@ public: virtual void - SetRange(vtkFloatingPointType theRange[2]); + SetRange(vtkFloatingPointType theRange[2], bool theIsForced = false); virtual vtkFloatingPointType @@ -74,6 +74,14 @@ public: virtual vtkFloatingPointType GetMax(); + + virtual + void + SetRangeFixed(bool theIsFixed); + + virtual + bool + IsRangeFixed(); public: virtual @@ -110,6 +118,7 @@ protected: int myNbParts; vtkFloatingPointType myRange[2]; + bool myIsRangeFixed; vtkCellDataToPointData* myCellDataToPointData; vtkContourFilter *myContourFilter; diff --git a/src/VISUGUI/VISU_msg_en.ts b/src/VISUGUI/VISU_msg_en.ts index f8fddcb9..196b8f91 100644 --- a/src/VISUGUI/VISU_msg_en.ts +++ b/src/VISUGUI/VISU_msg_en.ts @@ -2403,6 +2403,18 @@ Please, provide non-empty resulting presentation. SHOW_VALUES_CHK Show values (nb per surface) + + RANGE + Range + + + USE_SCALAR_BAR_RANGE + Use scalar bar range + + + USE_CUSTOM_RANGE + Use custom range + VisuGUI_IsoSurfacesDlg diff --git a/src/VISUGUI/VisuGUI_IsoSurfacesDlg.cxx b/src/VISUGUI/VisuGUI_IsoSurfacesDlg.cxx index 76e48c21..fcf2963c 100644 --- a/src/VISUGUI/VisuGUI_IsoSurfacesDlg.cxx +++ b/src/VISUGUI/VisuGUI_IsoSurfacesDlg.cxx @@ -54,6 +54,8 @@ #include #include #include +#include +#include using namespace std; @@ -74,59 +76,79 @@ VisuGUI_IsoSurfPane::VisuGUI_IsoSurfPane (QWidget* parent, TopGroupLayout->setSpacing( 6 ); TopGroupLayout->setMargin( 11 ); + QGroupBox* aRangeBox = new QGroupBox( tr( "RANGE" ), this ); + QRadioButton* aUseScalarBarRange = new QRadioButton( tr( "USE_SCALAR_BAR_RANGE" ), aRangeBox ); + QRadioButton* aUseCustomRange = new QRadioButton( tr( "USE_CUSTOM_RANGE" ), aRangeBox ); + + myRangeGrp = new QButtonGroup( aRangeBox ); + myRangeGrp->addButton( aUseScalarBarRange, ScalarBarRange ); + myRangeGrp->addButton( aUseCustomRange, CustomRange ); + aUseScalarBarRange->setChecked( true ); + + connect( myRangeGrp, SIGNAL( buttonClicked( int ) ), this, SLOT( onRangeButtonClicked( int ) ) ); + + QLabel* LabelMin = new QLabel( tr( "MIN_VALUE" ), aRangeBox ); + MinIso = new QLineEdit( aRangeBox ); + MinIso->setValidator( new QDoubleValidator( aRangeBox ) ); + MinIso->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); + MinIso->setMinimumSize( 70, 0 ); + LabelMin->setBuddy( MinIso ); + + QLabel* LabelMax = new QLabel( tr( "MAX_VALUE" ), aRangeBox ); + MaxIso = new QLineEdit( aRangeBox ); + MaxIso->setValidator( new QDoubleValidator( aRangeBox ) ); + MaxIso->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); + MaxIso->setMinimumSize( 70, 0 ); + LabelMax->setBuddy( MaxIso ); + + QPushButton* aUpdateBtn = new QPushButton( "Update scalar bar range with these values", aRangeBox ); + aUpdateBtn->setEnabled( false ); + connect( aUpdateBtn, SIGNAL( clicked() ), this, SLOT(onCBUpdate() ) ); + connect( aUseCustomRange, SIGNAL( toggled( bool ) ), aUpdateBtn, SLOT( setEnabled( bool ) ) ); + + QGridLayout* aRangeLayout = new QGridLayout( aRangeBox ); + aRangeLayout->setSpacing( 6 ); + aRangeLayout->setMargin( 11 ); + aRangeLayout->addWidget( aUseScalarBarRange, 0, 0 ); + aRangeLayout->addWidget( aUseCustomRange, 0, 1 ); + aRangeLayout->addWidget( LabelMin, 1, 0 ); + aRangeLayout->addWidget( MinIso, 1, 1 ); + aRangeLayout->addWidget( LabelMax, 2, 0 ); + aRangeLayout->addWidget( MaxIso, 2, 1 ); + aRangeLayout->addWidget( aUpdateBtn, 3, 0, 1, 2 ); + + TopGroupLayout->addWidget( aRangeBox, 0, 0, 1, 2 ); + QLabel* LabelNbr = new QLabel (tr("NB_SURFACES"), TopGroup); - TopGroupLayout->addWidget( LabelNbr, 0, 0 ); + TopGroupLayout->addWidget( LabelNbr, 1, 0 ); NbrIso = new QSpinBox( TopGroup ); NbrIso->setMaximum( 100 ); NbrIso->setMinimum( 1 ); NbrIso->setSingleStep( 1 ); NbrIso->setValue( 1 ); - TopGroupLayout->addWidget( NbrIso, 0, 1 ); - - QLabel* LabelMin = new QLabel (tr("MIN_VALUE"), TopGroup ); - TopGroupLayout->addWidget(LabelMin, 1, 0); - //MinIso = new QtxDoubleSpinBox( -DBL_MAX, DBL_MAX, 0.1, TopGroup ); - MinIso = new QLineEdit( TopGroup ); - MinIso->setValidator( new QDoubleValidator(TopGroup) ); - MinIso->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - MinIso->setMinimumSize( 70, 0 ); - LabelMin->setBuddy(MinIso); - TopGroupLayout->addWidget( MinIso, 1, 1 ); - - QLabel* LabelMax = new QLabel (tr("MAX_VALUE"), TopGroup ); - TopGroupLayout->addWidget( LabelMax, 2, 0 ); - //MaxIso = new QtxSpinBoxDbl( -DBL_MAX, DBL_MAX, 0.1, TopGroup ); - MaxIso = new QLineEdit( TopGroup ); - MaxIso->setValidator( new QDoubleValidator(TopGroup) ); - MaxIso->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - MaxIso->setMinimumSize( 70, 0 ); - LabelMax->setBuddy(MaxIso); - TopGroupLayout->addWidget( MaxIso, 2, 1 ); + TopGroupLayout->addWidget( NbrIso, 1, 1 ); myUseMagnitude = new QCheckBox(tr("MAGNITUDE_COLORING_CHK"), TopGroup); myUseMagnitude->setChecked(true); - TopGroupLayout->addWidget( myUseMagnitude, 3, 0 ); + TopGroupLayout->addWidget( myUseMagnitude, 2, 0 ); mySelColor = new QtxColorButton( TopGroup ); mySelColor->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - TopGroupLayout->addWidget( mySelColor, 3, 1 ); + TopGroupLayout->addWidget( mySelColor, 2, 1 ); //connect( mySelColor, SIGNAL( clicked() ), this, SLOT( setColor() ) ); connect( myUseMagnitude, SIGNAL( toggled(bool) ), mySelColor, SLOT( setDisabled(bool) ) ); myUseLabels = new QCheckBox(tr("SHOW_VALUES_CHK"), TopGroup); myUseLabels->setChecked(false); - TopGroupLayout->addWidget( myUseLabels, 4, 0 ); + TopGroupLayout->addWidget( myUseLabels, 3, 0 ); myNbLabels = new QSpinBox( TopGroup ); myNbLabels->setMinimum(1); myNbLabels->setMaximum(100); myNbLabels->setSingleStep(1); myNbLabels->setEnabled(false); - TopGroupLayout->addWidget( myNbLabels, 4, 1 ); + TopGroupLayout->addWidget( myNbLabels, 3, 1 ); connect( myUseLabels, SIGNAL( toggled(bool) ), myNbLabels, SLOT( setEnabled(bool) ) ); - QPushButton* aUpdateBtn = new QPushButton( "Update scalar bar range with these values", TopGroup); - TopGroupLayout->addWidget( aUpdateBtn, 5, 0, 1, 2); - connect( aUpdateBtn, SIGNAL( clicked() ), this, SLOT(onCBUpdate() ) ); mySelColor->setEnabled( !myUseMagnitude->isChecked() ); } @@ -135,6 +157,12 @@ void VisuGUI_IsoSurfPane::initFromPrsObject (VISU::IsoSurfaces_i* thePrs) NbrIso->setValue(thePrs->GetNbSurfaces()); MinIso->setText(QString::number(thePrs->GetSubMin())); MaxIso->setText(QString::number(thePrs->GetSubMax())); + + int anId = thePrs->IsSubRangeFixed() ? ScalarBarRange : CustomRange; + bool anIsSubRangeFixed = thePrs->IsSubRangeFixed(); + myRangeGrp->button( anId )->setChecked( true ); + onRangeButtonClicked( anId ); + myUseMagnitude->setChecked(thePrs->IsColored()); SALOMEDS::Color anOldColor = thePrs->GetColor(); QColor aColor = QColor(int(255*anOldColor.R),int(255*anOldColor.G),int(255*anOldColor.B)); @@ -148,7 +176,18 @@ void VisuGUI_IsoSurfPane::initFromPrsObject (VISU::IsoSurfaces_i* thePrs) int VisuGUI_IsoSurfPane::storeToPrsObject (VISU::IsoSurfaces_i* thePrs) { thePrs->SetNbSurfaces(NbrIso->value()); - thePrs->SetSubRange(MinIso->text().toDouble(), MaxIso->text().toDouble()); + + if( myRangeGrp->checkedId() == ScalarBarRange ) + { + thePrs->SetSubRange( myScalarPane->getMin(), myScalarPane->getMax() ); + thePrs->SetSubRangeFixed( true ); + } + else // CustomRange + { + thePrs->SetSubRange( MinIso->text().toDouble(), MaxIso->text().toDouble() ); + thePrs->SetSubRangeFixed( false ); + } + thePrs->ShowLabels(myUseLabels->isChecked(), myNbLabels->value()); thePrs->ShowColored(myUseMagnitude->isChecked()); if(!thePrs->IsColored()){ @@ -162,6 +201,13 @@ int VisuGUI_IsoSurfPane::storeToPrsObject (VISU::IsoSurfaces_i* thePrs) return 1; } +void VisuGUI_IsoSurfPane::onRangeButtonClicked( int theId ) +{ + bool isCustomRange = theId == 1; + MinIso->setEnabled( isCustomRange ); + MaxIso->setEnabled( isCustomRange ); +} + void VisuGUI_IsoSurfPane::onCBUpdate() { myScalarPane->setRange(MinIso->text().toDouble(), MaxIso->text().toDouble(), true); diff --git a/src/VISUGUI/VisuGUI_IsoSurfacesDlg.h b/src/VISUGUI/VisuGUI_IsoSurfacesDlg.h index fd7b234b..a57ccbcd 100644 --- a/src/VISUGUI/VisuGUI_IsoSurfacesDlg.h +++ b/src/VISUGUI/VisuGUI_IsoSurfacesDlg.h @@ -33,6 +33,7 @@ class QTabWidget; class QLineEdit; class QSpinBox; +class QButtonGroup; class QtxColorButton; namespace VISU @@ -47,6 +48,9 @@ class VisuGUI_IsoSurfPane : public QWidget { Q_OBJECT; +public: + enum { ScalarBarRange = 0, CustomRange }; + public: VisuGUI_IsoSurfPane (QWidget* parent, VisuGUI_ScalarBarPane* theScalarPane); @@ -61,10 +65,12 @@ public: QColor color() const; protected slots: + void onRangeButtonClicked( int ); void onCBUpdate(); void setColor(); private: + QButtonGroup* myRangeGrp; QLineEdit* MinIso; QLineEdit* MaxIso; QSpinBox* NbrIso; diff --git a/src/VISU_I/VISU_IsoSurfaces_i.cc b/src/VISU_I/VISU_IsoSurfaces_i.cc index 1e60235e..906aef86 100644 --- a/src/VISU_I/VISU_IsoSurfaces_i.cc +++ b/src/VISU_I/VISU_IsoSurfaces_i.cc @@ -138,6 +138,8 @@ VISU::IsoSurfaces_i myNbLabels = VISU::Storable::FindValue(theMap,"myNbLabels").toInt(); myIsLabeled = VISU::Storable::FindValue(theMap,"myIsLabeled").toInt(); SetSubRange(aMin,aMax); + + SetSubRangeFixed(VISU::Storable::FindValue(theMap,"myIsRangeFixed").toInt()); return this; } @@ -155,6 +157,7 @@ VISU::IsoSurfaces_i Storable::DataToStream( theStr, "myRange[1]", GetSubMax() ); Storable::DataToStream( theStr, "myNbLabels", myNbLabels ); Storable::DataToStream( theStr, "myIsLabeled", myIsLabeled ); + Storable::DataToStream( theStr, "myIsRangeFixed", IsSubRangeFixed() ); } //--------------------------------------------------------------- @@ -204,10 +207,11 @@ VISU::IsoSurfaces_i ::SetSubRange(CORBA::Double theMin, CORBA::Double theMax) { VISU::TSetModified aModified(this); - + + bool isForced = false; vtkFloatingPointType aRange[2] = {theMin, theMax}; - ProcessVoidEvent(new TVoidMemFun1ArgEvent - (GetSpecificPL(), &VISU_IsoSurfacesPL::SetRange, aRange)); + ProcessVoidEvent(new TVoidMemFun2ArgEvent + (GetSpecificPL(), &VISU_IsoSurfacesPL::SetRange, aRange, isForced)); } //--------------------------------------------------------------- @@ -226,6 +230,25 @@ VISU::IsoSurfaces_i return myIsoSurfacesPL->GetMax(); } +//--------------------------------------------------------------- +void +VISU::IsoSurfaces_i +::SetSubRangeFixed(CORBA::Boolean theIsFixed) +{ + VISU::TSetModified aModified(this); + + ProcessVoidEvent(new TVoidMemFun1ArgEvent + (GetSpecificPL(), &VISU_IsoSurfacesPL::SetRangeFixed, theIsFixed)); +} + +//--------------------------------------------------------------- +CORBA::Boolean +VISU::IsoSurfaces_i +::IsSubRangeFixed() +{ + return myIsoSurfacesPL->IsRangeFixed(); +} + //--------------------------------------------------------------- void diff --git a/src/VISU_I/VISU_IsoSurfaces_i.hh b/src/VISU_I/VISU_IsoSurfaces_i.hh index 86833c53..b8e245c5 100644 --- a/src/VISU_I/VISU_IsoSurfaces_i.hh +++ b/src/VISU_I/VISU_IsoSurfaces_i.hh @@ -82,6 +82,14 @@ namespace VISU CORBA::Double GetSubMax(); + virtual + void + SetSubRangeFixed(CORBA::Boolean theIsFixed); + + virtual + CORBA::Boolean + IsSubRangeFixed(); + VISU_IsoSurfacesPL* GetSpecificPL() const { -- 2.39.2