From af3f65f16d35ad3c2733e44ee923d55321bd0254 Mon Sep 17 00:00:00 2001 From: nds Date: Tue, 7 Oct 2008 08:26:33 +0000 Subject: [PATCH] Merging GUI_SRC module with the BR_HDF_dev_merged branch, which has been merged with the BR_V5_DEV branch. --- src/STD/STD_TabDesktop.cxx | 102 ++++-- src/STD/STD_TabDesktop.h | 10 +- src/STD/resources/cascade.png | Bin 0 -> 430 bytes src/STD/resources/close.png | Bin 212 -> 1260 bytes src/STD/resources/copy.png | Bin 245 -> 843 bytes src/STD/resources/cut.png | Bin 211 -> 1206 bytes src/STD/resources/delete.png | Bin 0 -> 1344 bytes src/STD/resources/help.png | Bin 910 -> 1103 bytes src/STD/resources/htile.png | Bin 0 -> 343 bytes src/STD/resources/new.png | Bin 177 -> 667 bytes src/STD/resources/open.png | Bin 231 -> 1194 bytes src/STD/resources/paste.png | Bin 280 -> 1094 bytes src/STD/resources/print.png | Bin 233 -> 967 bytes src/STD/resources/redo.png | Bin 211 -> 885 bytes src/STD/resources/reset.png | Bin 232 -> 1032 bytes src/STD/resources/save.png | Bin 215 -> 1135 bytes src/STD/resources/undo.png | Bin 210 -> 873 bytes src/STD/resources/vtile.png | Bin 0 -> 373 bytes src/SUITApp/SUITApp.cxx | 51 ++- src/SUITApp/SUITApp.pro | 1 + src/SUITApp/SUITApp_Application.cxx | 16 +- src/SUITApp/SUITApp_Application.h | 12 +- src/SVTK/SALOME_Actor.cxx | 2 +- src/SVTK/SALOME_Actor.h | 8 +- src/SVTK/SVTK_CubeAxesDlg.cxx | 166 ++++----- src/SVTK/SVTK_CubeAxesDlg.h | 66 +--- .../SVTK_GenericRenderWindowInteractor.cxx | 2 +- src/SVTK/SVTK_GenericRenderWindowInteractor.h | 2 +- src/SVTK/SVTK_InteractorStyle.h | 3 - .../resources/vtk_view_graduated_axes.png | Bin 0 -> 650 bytes .../resources/vtk_view_rotation_point.png | Bin 0 -> 858 bytes src/SVTK/resources/vtk_view_scaling.png | Bin 0 -> 1128 bytes src/SVTK/resources/vtk_view_update_rate.png | Bin 0 -> 972 bytes src/Style/images/critical.png | Bin 0 -> 2328 bytes src/Style/images/information.png | Bin 0 -> 2087 bytes src/Style/images/question.png | Bin 0 -> 2188 bytes src/Style/images/warning.png | Bin 0 -> 2198 bytes src/VTKViewer/VTKViewer_ConvexTool.cxx | 339 ++++++++++-------- src/VTKViewer/VTKViewer_ConvexTool.h | 104 ++---- src/VTKViewer/VTKViewer_GeometryFilter.cxx | 79 ++++ src/VTKViewer/VTKViewer_Trihedron.cxx | 8 +- src/VTKViewer/VTKViewer_ViewManager.cxx | 37 -- src/VTKViewer/VTKViewer_ViewManager.h | 3 - src/VTKViewer/VTKViewer_ViewWindow.cxx | 4 +- src/VTKViewer/resources/vtk_view_back.png | Bin 0 -> 432 bytes src/VTKViewer/resources/vtk_view_bottom.png | Bin 0 -> 428 bytes .../resources/vtk_view_camera_dump.png | Bin 0 -> 682 bytes src/VTKViewer/resources/vtk_view_fitall.png | Bin 0 -> 816 bytes src/VTKViewer/resources/vtk_view_fitarea.png | Bin 0 -> 912 bytes src/VTKViewer/resources/vtk_view_front.png | Bin 0 -> 410 bytes src/VTKViewer/resources/vtk_view_glpan.png | Bin 0 -> 1086 bytes src/VTKViewer/resources/vtk_view_left.png | Bin 0 -> 427 bytes src/VTKViewer/resources/vtk_view_pan.png | Bin 0 -> 982 bytes src/VTKViewer/resources/vtk_view_reset.png | Bin 0 -> 918 bytes src/VTKViewer/resources/vtk_view_right.png | Bin 0 -> 418 bytes src/VTKViewer/resources/vtk_view_rotate.png | Bin 0 -> 886 bytes src/VTKViewer/resources/vtk_view_top.png | Bin 0 -> 419 bytes src/VTKViewer/resources/vtk_view_triedre.png | Bin 0 -> 698 bytes src/VTKViewer/resources/vtk_view_zoom.png | Bin 0 -> 797 bytes 59 files changed, 533 insertions(+), 482 deletions(-) create mode 100644 src/STD/resources/cascade.png create mode 100644 src/STD/resources/delete.png create mode 100644 src/STD/resources/htile.png create mode 100644 src/STD/resources/vtile.png create mode 100755 src/SVTK/resources/vtk_view_graduated_axes.png create mode 100755 src/SVTK/resources/vtk_view_rotation_point.png create mode 100644 src/SVTK/resources/vtk_view_scaling.png create mode 100755 src/SVTK/resources/vtk_view_update_rate.png create mode 100644 src/Style/images/critical.png create mode 100644 src/Style/images/information.png create mode 100644 src/Style/images/question.png create mode 100644 src/Style/images/warning.png create mode 100755 src/VTKViewer/resources/vtk_view_back.png create mode 100755 src/VTKViewer/resources/vtk_view_bottom.png create mode 100755 src/VTKViewer/resources/vtk_view_camera_dump.png create mode 100755 src/VTKViewer/resources/vtk_view_fitall.png create mode 100755 src/VTKViewer/resources/vtk_view_fitarea.png create mode 100755 src/VTKViewer/resources/vtk_view_front.png create mode 100644 src/VTKViewer/resources/vtk_view_glpan.png create mode 100755 src/VTKViewer/resources/vtk_view_left.png create mode 100755 src/VTKViewer/resources/vtk_view_pan.png create mode 100755 src/VTKViewer/resources/vtk_view_reset.png create mode 100755 src/VTKViewer/resources/vtk_view_right.png create mode 100755 src/VTKViewer/resources/vtk_view_rotate.png create mode 100755 src/VTKViewer/resources/vtk_view_top.png create mode 100755 src/VTKViewer/resources/vtk_view_triedre.png create mode 100755 src/VTKViewer/resources/vtk_view_zoom.png diff --git a/src/STD/STD_TabDesktop.cxx b/src/STD/STD_TabDesktop.cxx index 8b6c41b08..ab9d92e40 100644 --- a/src/STD/STD_TabDesktop.cxx +++ b/src/STD/STD_TabDesktop.cxx @@ -22,21 +22,20 @@ #include #include -#include #include #include -//#include +#include -#include -#include +#include +#include #include /*!Constructor.Create new instances of QVBox and QtxWorkstack.*/ STD_TabDesktop::STD_TabDesktop() : SUIT_Desktop(), -myWorkstack( 0 )//, -//myWorkstackAction( 0 ) +myWorkstack( 0 ), +myWorkstackAction( 0 ) { QFrame* base = new QFrame( this ); base->setFrameStyle( QFrame::Panel | QFrame::Sunken ); @@ -57,18 +56,32 @@ myWorkstack( 0 )//, myWorkstack->setAccel( QtxWorkstack::SplitHorizontal, Qt::SHIFT + Qt::Key_H ); myWorkstack->setAccel( QtxWorkstack::Close, Qt::SHIFT + Qt::Key_C ); + SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr(); + if ( resMgr ) { + myWorkstack->setIcon( QtxWorkstack::SplitVertical, + resMgr->loadPixmap( "STD", tr( "ICON_DESK_WINDOW_VSPLIT" ) ) ); + myWorkstack->setIcon( QtxWorkstack::SplitHorizontal, + resMgr->loadPixmap( "STD", tr( "ICON_DESK_WINDOW_HSPLIT" ) ) ); + myWorkstack->setIcon( QtxWorkstack::Close, + resMgr->loadPixmap( "STD", tr( "ICON_FILE_CLOSE" ) )); + } + connect( myWorkstack, SIGNAL( windowActivated( QWidget* ) ), this, SLOT( onWindowActivated( QWidget* ) ) ); createActions(); } -/*!Destructor.*/ +/*! + Destructor. +*/ STD_TabDesktop::~STD_TabDesktop() { } -/*!\retval SUIT_ViewWindow - return const active window.*/ +/*! + \retval SUIT_ViewWindow - return const active window. +*/ SUIT_ViewWindow* STD_TabDesktop::activeWindow() const { SUIT_ViewWindow* wnd = 0; @@ -80,7 +93,9 @@ SUIT_ViewWindow* STD_TabDesktop::activeWindow() const return wnd; } -/*!\retval QPtrList - return const active window list.*/ +/*! + \retval QPtrList - return const active window list. +*/ QList STD_TabDesktop::windows() const { QList winList; @@ -95,7 +110,9 @@ QList STD_TabDesktop::windows() const return winList; } -/*! insert new widget into desktop.*/ +/*! + Insert new widget into desktop. +*/ void STD_TabDesktop::addWindow( QWidget* w ) { if ( !w || !workstack() ) @@ -104,13 +121,17 @@ void STD_TabDesktop::addWindow( QWidget* w ) workstack()->addWindow( w ); } -/*!Call method perform for operation \a type.*/ +/*! + Call method perform for operation \a type. +*/ void STD_TabDesktop::windowOperation( const int type ) { -// myWorkstackAction->perform( operationFlag( type ) ); + myWorkstackAction->perform( operationFlag( type ) ); } -/*!Sets window operations by \a first ... parameters.*/ +/*! + Sets window operations by \a first ... parameters. +*/ void STD_TabDesktop::setWindowOperations( const int first, ... ) { va_list ints; @@ -128,7 +149,9 @@ void STD_TabDesktop::setWindowOperations( const int first, ... ) setWindowOperations( typeList ); } -/*!Sets window operations by variable \a opList - operation list.*/ +/*! + Sets window operations by variable \a opList - operation list. +*/ void STD_TabDesktop::setWindowOperations( const QList& opList ) { int flags = 0; @@ -139,23 +162,28 @@ void STD_TabDesktop::setWindowOperations( const QList& opList ) // myWorkstackAction->setItems( flags ); } -/*!\retval QtxWorkstack pointer - QT work stack.*/ +/*! + \retval QtxWorkstack pointer - Qt work stack. +*/ QtxWorkstack* STD_TabDesktop::workstack() const { return myWorkstack; } -/*!Emit window activated.*/ +/*! + Emit window activated. +*/ void STD_TabDesktop::onWindowActivated( QWidget* w ) { if ( w && w->inherits( "SUIT_ViewWindow" ) ) emit windowActivated( (SUIT_ViewWindow*)w ); } -/*!Create actions for window.*/ +/*! + Create actions for window. +*/ void STD_TabDesktop::createActions() { -/* if ( myWorkstackAction ) return; @@ -165,44 +193,46 @@ void STD_TabDesktop::createActions() myWorkstackAction = new QtxWorkstackAction( workstack(), this ); - myWorkstackAction->setItems( QtxWorkstackAction::Split | QtxWorkstackAction::Windows ); + myWorkstackAction->setMenuActions( QtxWorkstackAction::Split | QtxWorkstackAction::Windows ); // Split Horizontal - myWorkstackAction->setIconSet( QtxWorkstackAction::HSplit, - resMgr->loadPixmap( "STD", tr( "ICON_DESK_WINDOW_HSPLIT" ) ) ); - myWorkstackAction->setMenuText( QtxWorkstackAction::HSplit, tr( "MEN_DESK_WINDOW_HSPLIT" ) ); - myWorkstackAction->setStatusTip( QtxWorkstackAction::HSplit, tr( "PRP_DESK_WINDOW_HSPLIT" ) ); + myWorkstackAction->setIcon( QtxWorkstackAction::SplitHorizontal, + resMgr->loadPixmap( "STD", tr( "ICON_DESK_WINDOW_HSPLIT" ) ) ); + myWorkstackAction->setText( QtxWorkstackAction::SplitHorizontal, tr( "MEN_DESK_WINDOW_HSPLIT" ) ); + myWorkstackAction->setStatusTip( QtxWorkstackAction::SplitHorizontal, tr( "PRP_DESK_WINDOW_HSPLIT" ) ); + myWorkstackAction->setAccel( QtxWorkstackAction::SplitHorizontal, Qt::SHIFT + Qt::Key_H ); // Split Vertical - myWorkstackAction->setIconSet( QtxWorkstackAction::VSplit, - resMgr->loadPixmap( "STD", tr( "ICON_DESK_WINDOW_VSPLIT" ) ) ); - myWorkstackAction->setMenuText( QtxWorkstackAction::VSplit, tr( "MEN_DESK_WINDOW_VSPLIT" ) ); - myWorkstackAction->setStatusTip( QtxWorkstackAction::VSplit, tr( "PRP_DESK_WINDOW_VSPLIT" ) ); + myWorkstackAction->setIcon( QtxWorkstackAction::SplitVertical, + resMgr->loadPixmap( "STD", tr( "ICON_DESK_WINDOW_VSPLIT" ) ) ); + myWorkstackAction->setText( QtxWorkstackAction::SplitVertical, tr( "MEN_DESK_WINDOW_VSPLIT" ) ); + myWorkstackAction->setStatusTip( QtxWorkstackAction::SplitVertical, tr( "PRP_DESK_WINDOW_VSPLIT" ) ); + myWorkstackAction->setAccel( QtxWorkstackAction::SplitVertical, Qt::SHIFT + Qt::Key_V ); QtxActionMenuMgr* mMgr = menuMgr(); if ( !mMgr ) return; - int winMenuId = mMgr->insert( tr( "MEN_DESK_WINDOW" ), -1, 100, MenuWindowId ); + int winMenuId = mMgr->insert( tr( "MEN_DESK_WINDOW" ), -1, 100 ); mMgr->insert( myWorkstackAction, winMenuId, -1 ); mMgr->insert( QtxActionMenuMgr::separator(), winMenuId, -1 ); -*/ } -/*!Convert STD_TabDesktop enumerations to QtxWorkstackAction*/ +/*! + Convert STD_TabDesktop enumerations to QtxWorkstackAction +*/ int STD_TabDesktop::operationFlag( const int type ) const { int res = 0; -/* switch ( type ) { - case VSplit: - res = QtxWorkstackAction::VSplit; + case SplitVertical: + res = QtxWorkstackAction::SplitVertical; break; - case HSplit: - res = QtxWorkstackAction::HSplit; + case SplitHorizontal: + res = QtxWorkstackAction::SplitHorizontal; break; } -*/ + return res; } diff --git a/src/STD/STD_TabDesktop.h b/src/STD/STD_TabDesktop.h index 1d5c2ecb8..35d09cd29 100644 --- a/src/STD/STD_TabDesktop.h +++ b/src/STD/STD_TabDesktop.h @@ -23,11 +23,8 @@ #include -class QtxAction; -class QPopupMenu; -class QWorkspace; class QtxWorkstack; -//class QtxWorkstackAction; +class QtxWorkstackAction; #if defined WIN32 #pragma warning( disable: 4251 ) @@ -38,8 +35,7 @@ class STD_EXPORT STD_TabDesktop: public SUIT_Desktop Q_OBJECT public: - enum { MenuWindowId = 6 }; - enum { VSplit, HSplit }; + enum { SplitVertical, SplitHorizontal }; public: STD_TabDesktop(); @@ -67,7 +63,7 @@ private: private: QtxWorkstack* myWorkstack; -// QtxWorkstackAction* myWorkstackAction; + QtxWorkstackAction* myWorkstackAction; }; #if defined WIN32 diff --git a/src/STD/resources/cascade.png b/src/STD/resources/cascade.png new file mode 100644 index 0000000000000000000000000000000000000000..3111e55c26aeeb9e865f77fed2c222009ccc6375 GIT binary patch literal 430 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VXMsm#F#`j)FbFd;%$g$s6l6(v z^mSxl*w|O|J8&|PuaN8!{|6#PfXZR%A%6OapZa94^|&u2Zl!8JE4pHHatRckt`NDQpps9-53)~`@SOmB?HD2NHZeVaSoFJ9RDd3=EAu>UB8c=b|Sply@ zLO^R8mT56b_8CNL@B)=FRsLizI<&+@hmncn$y5Fd5=tEN>P!_^uqiamm=NpX*Rp`Q zfg#CB%TlD#f^&WnV>MgbdNs9#9&QE}fucz@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ=Vo5|nRCwBA{Qv(y10y3N0}`kQVhJE#55y;d_$Ltm z0^)xRL;!#QVgMP41cc@J1+L8Z3I1;(EeA5F28gwRSP+Prv1kWb90K+FcjEC2z- zge(hmsiK~!grc2{JVURO2b;Q(NEuK#0Ekt9m!$FDolUrG*_Y4;xz&P)Z$$Wq_C+sIdJE-f$0Rjl!K!$(+|M$$jcoq}@3}1i$W{A_)XAt4!@`QS+HCR=% zB2CAT;m4of4DY}HVAy!?Hp8oLU+)6tJ_GR&fB<5`63|BvJ$|tIih@S%l5F?gk0|I7N(sH}n zY@PXk{rSW2``=%NtFK=(XbFojy#Mi?;o|F;K>UJX-;;+o|Ni^87O4Ie5Z?siD*yq+ zgd;VbI`;I@rXx>)t^`{4|KEQGJy9`+r=LGD?0s~P;n0(ZAj7T!4O^2bJ0I>lA zhy{m%s=%b6#m&OX@CO(N2=tAk6>)gl?dT zI5*GEW*a9}V4`LC4h%n#%RtHFH;|U%=4LP!mEZ=dQwHKMK>P%h)L@2z06+jC8)ziQ zC$O!}+DT4bP?+Jz??1p~@r_~k!}|;y?%ZHt0fyywU@~%-Rb&9hxD8M}ClGT$vm`uL z0RjkSpfC?B>x?=JJ5eP8L56R?ela}y^pRoHy;}_PuAYCr?f#v&PrrO-0OfiS4o(I; zX*p1?F$H2-C+jxR z02*)|=%Ve=z(2Y3(fwy1fBpc6sRS^wn~O?_1I3L&zC$iJ00M{!QYbJy=sSCyq5s@* zV3^(g56qiafLZVuG~nL?@%4|ter(>&dyFf4xnBg+C9<4lZ9IzTy5Xz>N|@;`t8 zf*8o~fAPz2Uk^U}^7+N<@89+Sg+Q744-mhGCJRt5ShD}=|!@m;b=-0s?>lLe9%vKr95re9)xu9qQ#D&~)}2stHt-r9yMb6)1fHnq$5K1Q-Bj WYPb*HL2?`b0000MpMk-+o$V%& z#aI&L7tG-B>_!@hljQC0!qCAg>jC75mAFQf1m~xflqVLYGNfmw85QKED;Vh+=o#9^ z?aKhF@bYwV45^rtoRAQZz`&@=rl@d};fZB~%MKBV8!Qqm2Z9)7c$k=Yboh9Bcz9&^ zc(@NN(ot|a%eZ2eW+U$rp9Y~h!WNPeDv}GT7{z>>C BH68!} diff --git a/src/STD/resources/copy.png b/src/STD/resources/copy.png index 1e43a09c2f80427d80e154e552661e4cf9596317..a26b641984355b66dcf8a638b34e4e3dcd8205d0 100755 GIT binary patch literal 843 zcmV-R1GM~!P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;!AV3xRCwBA{Qv(y10y42Dgy(98v}Om2#9w9)$L>; z0ssUM1IR!iSo0qX`2FYa|Hn_BeV3A!-T}3c38Wq$1_&USf$RVN{r~^ZA5{GE&FBCB z{{8!Z{^FHy{QUfTfa)9x843_Uj8HFc{Q3L8UvcwX6xR!}ykod>@f29$ySH!u9yxOO z&ELO&uK}gr0r5j@K>-jzFc)t6`t$$)cV7_r!`J`+-MxbTlNuBN0mK3``1fB1hPtk~ z7-9VH9|Hr#P6T-O;Twarlmy4tZ9DB8?5tTne*E|w=*xpZ1OEX85Zu5&Km$v2lNtVj ztb>ZB#cyNy0~E-}Dnc+PpPz?8OfisE81#*exYusnYUb_k3<{qs009Iy@aG=}hU6rm z3;#njfk4HXZQ!6NE<|-XEf#Jz0hIIj52nvdZ zsv^9ZqqQ3pB>$O#1V2Ckp}27UN=z4mf+DZF4<#s2Qo(VzD9Pr)W=t1?f+D7%53hkBH821WKyU-ag%}vZ<59z~1?s{j z6Y#q*zaC*BKmfrEJfI}N2sDy`57`nRkZ$?Qz~`OThY}PRF8qsN0|XFE^FkoL48$5h z%!Q;j1{f4NTW8^SVOk}^g#ZBrGw>%6KZUZ{k<@+x1w~Q?Y8ZmjBT}$|g9`=#0tjZ{ zcWBA{5-I(Hz&2n|fM^~dW+qTp-v$u?0mS(K|9_k+fSFwwNEu-X3T)sT5Z?d@FaV&5 VkFu@xL23X1002ovPDHLkV1nhtV&MP) literal 245 zcmVSHfgws1h@S1R)~Jg>q(I^nm!Ehk*h?(CiQ_`x^^=3-E)5 zLbA%d2#-ENIrtM(k(d=QkqFSj9m*Y5AB`$p^8^rMsgFI#G%JJ2WNc4{;DD&PfC_$1 zssbv*GlPT4%~)z_mngd^2hj~MDeS{szWFq}&Z4QW9aLgxm)u<+PTDR*aPx9$AME%Y vI-=-M9W*`mTejkBpTT~xoc|z*gX-b}*D!os%$qEI00000NkvXXu0mjfFDYd; diff --git a/src/STD/resources/cut.png b/src/STD/resources/cut.png index b35200830ca593d5f55a151525f9f9125caa44f3..055c27ea6a73f494b87fbe64868df09e01024597 100755 GIT binary patch literal 1206 zcmV;n1WEgeP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ=EJ;K`RCwBA{Qv(y12q9a05Rea7h@0<$zu=}(_wh= zew&^-4)gPrF+pr|z-2fzV905M?|6%x~C zU}XBoP!@fFVf%_Z3|>)+4C2zUKp9?~dY}LxfUrqQ0KF^5@$WYSXV9|*MNAmXKmkEPYwy6I4F`{(`1u!@ z_EsK0^Iu9!X8}L};R*&JAU0*-Df;SYg>)1~&FtK=~Me0Kyfv%s|W!N-D0wA(#LE`Tc*_g{!~xZS3#$&z|?~ z$&)AlU%h+xf5w^(zoqqzjsn%y191TmCjtZzBY_ALWM^lu*}m^UHYYO^>zRue8I&X? z7=E&`|68$T`|CBcXYBs>^T&0dy6-^z28bU31P}`j!$7fVCZehl8|?4z@#XzH*4>8= zGH`IPGuYbMF=Q5(zB#^a^G2W=P`Coq6vJa6z7NFD0Rjl!Km%Y52QrvD`!HBI88N7+ zGYAR%XSjOp+W$Y?e1EmfOj-E3xfrH(wTtHe`DK4-*Up^BUPH~eRqwEjP1Vf$m=DeL}n0ka>wiq<)xn(2%ztXsX~lHMIWb^8DP$B+MK z6cpV6Mv@COWq<)d0D%HOguyFf2}4G$DTA~;2gCkN8yV)b&u6}MSzOx5Oa9HrkMI8M zT)lH{02p|Rqw~*Vqs}BF?HnqC~bp9?TE#sSN)7SmiTXW<;lcwQX zprRrmjsRjUXi^e_vVDNKOI%s)Lf?WV|1-*}-h+}EKmai^$SBoF7q>JD%g8Z3`uLea zfQyTP|L;$ROH1c$`oDAaE{6aAKSKi^R33hT1{DW1$H)V*Dl-RX2oJvi^T(IZdjSH7 znc>s>o1dRPdiV0>3l7Hb-~N4k@$~7lgS*x;>{@dM7-m192Hk-s4_NX32Z+Bx#XkT4 z^XKl*uU{Sj*}nh+2$Zn-fLH@u%0SpmQ2Z5|&OizGHPjGniJu*aMS)lnqy`|s0MoW| UhR8)+HUIzs07*qoM6N<$f+i;|U;qFB literal 211 zcmV;^04)EBP)5rp7y4|B6o z^XVaW77F0XR@IjsWXMYaUHf=tDjGZ{Px2s*MfvR#^$JrRAmGcN?F5>>hte6<$NK;P N002ovPDHLkV1hc}Rq6l$ diff --git a/src/STD/resources/delete.png b/src/STD/resources/delete.png new file mode 100644 index 0000000000000000000000000000000000000000..93d166354301efead4c3a08cc686b748b33dfc83 GIT binary patch literal 1344 zcmV-G1;6@z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ=wn;=mRCwBA{Qv(y10y3N13GX?F4SaX`rrTe@BhF5 z|NUhGs$c^u{Q2U}t(t3xcRm0r`3l6pfcQVMK7asXL^jYlxqy|Mi#tz5NXY%|`}d0f z|NoQVU}L}c>(@^fpgQJXfBz`|`}5}!Q1!bnAK&l0bLRNW7x!+y25S8d#D73$00a=+ zK(EYlLoqRtCUp%hA3k1Qh6fKGF#P)ci$O?Gh~fK>9}Iu~{9<_h>NVJ67FJeKwty?^J+qkO^oL%C@AoP4FCD_C(wXDK>Qns|AN_n z|NVi`VDW!&{_`hKKc6|Ud*bz@`&IxAd;$x-$2ViV!wX=<`s~X_6Hhs4TzZl0tjs2yZ0ZD zp1*h@5UdGk&_AH@cem-!x{{>ngEhWwH_VK;D&`ACZ5I|rT{%83AnTws{D<3Z(2gp_Y`~u*xV_{`s z;Njr`yNHjE7isql01$+s%gF4z``z{mWkf4(S*N02qP- zs1l93|4rMW3+-nzkVnv9zSyO^uf7~J6Y!o$L;yN5qG4Z|iaeUwqG?J4wfF1-qki!V zz#_G!01U#gj5?K0u%|L zFa@b$X9I;HD=4A=1GyNQr~d;45EIP6=g*$~Wd(*4D6E));R1?bkO82G0l5sw0P^$XN> zpmg{LAb{WozJLGmBPd_~0p?Eu0e*0z1sMnm9+0?zfB*w1o&NpH#=r)29VnteVg2dt zn~%^m2+A#g0RjkOpqw7##q$?;DJsc_3JD2{{QdKn5tN^SX^;_=E1rM<4tD8}AK$^b zgaOR{!SLzRm;aZ}o_)cz@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ<#Ysd#RCwBA{Qv(y0|+oOGBRKTii(OVKuQ#de*y93 z`}gnv!ln*p4nP1gVlxnE2pf>91L911c}XE*VSa{RzkV~^y!nvf_wPT8f#TDF1|P>} zAV2_t8E_87upBit)&KSNx&Pn4KmPyUzvKV^{yPYy5B&f6^YH(5>w5lsc-Z|1s_R8J z5QG5&2*rg!Mae=!d~=pBZ(&eT5n}lJ?(e;CN0=g(iv1G?hFt(!tcfB$j-4g1RQ_RVjG_wT=f zE&luWFDOND!VClmAh?0Rz+L?P`}c=HtPfPA0JNFo=g*%{1O){p1qJzw5)$=+!N3M| z*>8ro@0fu!BT&yvpxE!HK<#WWa{vMe*@ZwCy*LY`KnnPQm|0R%(nCo}I(O2f6b4=0 zUkoo^-UWv1f1u0Q81CKu#BkxleTFx0-W)(S10aA{&=UMNAbtdkEDjEisZ*yGFzD$? zF#P#@2N;$-3_pIbFkHI$nqlqQ<3MkJ*zoV)zc)aoKVb#{1Q5D`|6ySPOp~I(G-;}@ zuM7;&PYi#4GctVt#>udI_g#i%%MRW9^5x5^PoF+*0xEqBP8LuA5I`&pxB({z2OGnc zD|dhfeqng~_BAj_zA~ITbrkl;wv10uAB~}GLXf9 zk#-gs*4;qn86bWF^DfLBfB?eC%SeXFSzDU`r4Ic6@@3oqd-s<9KYe=oe}8|+{}K`s znb4$yk(U7ih>3v!`1b8PFeX2ObItefkdlj;nfVJWtkD5L0O1S6U!WrETZ~LGT@(sN_1PCBT z0wp#mNMwOn4~WH}V()?YDiA+FPJb|S00M}RfgnK+Am)S84A83JGt_ne&+kQc*Xu(=L&L+vqobo^ zV`Gbpi_K=U(P&IeOvJ+?TCE*<>3`yAXY1f#=fnFKDw0G@!~s`Pm84=St`hl9lcXe; z#FIpRswTUB;P=g}8mWe=x3Gl!`T3%9MZWcK#%s|ZE-6Cg)H@La> zu*gx8JxLQSSrQu|kqR;3TUI_{4mXIV44J6Q{28=F1*Yr)&$;J-5xFHqhC^7{2l3@* z(mmQj6G)wy$(1Z=9%+#fkx+wsdWl6mmGz~}vbE$6KZGCxNh!~{WJfUo|0iZvZ)Id@ zX=!_IkaOlau&+ys`17D2nor6B2o1X2m#v zx4yx7?f%^Cd_Lg**OMLXCW~OE*KQ`Kr{{g4UsYCz( diff --git a/src/STD/resources/htile.png b/src/STD/resources/htile.png new file mode 100644 index 0000000000000000000000000000000000000000..42af00c0a777869f4598f9583960c130875e42cb GIT binary patch literal 343 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VXMsm#F#`j)FbFd;%$g$s6l6(v z^mSxl*w|O|J8&|PuaN8!WKtyUfA{e-W{t$3<3@b;_p^nT;A2_aNLlAML^h)Ykr-n;;n!NhNPqgMhqMZi+Dsf zq$m8yN@6DL1H+=K rLu|w{lUR~i70OtWT(cxN1QHm8^o%510;XC5J;vba>gTe~DWM4f^#y4^ literal 0 HcmV?d00001 diff --git a/src/STD/resources/new.png b/src/STD/resources/new.png index 953757a62f594c7591c7cdcfe8e51cdde41bfa45..68555d2211d1f80a63dab34e873a943b4f128bc5 100755 GIT binary patch literal 667 zcmV;M0%ZM(P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;5lKWrRCwBA{Qv(y12q9a0I?u*7#SH;fs`8oJ&%BR z7ZC46mjF2qAb`LG3|&mZjg z<(tp{|NZ;-|NO-(-}w3Y_W;#9A{z=a10aCV4cz$i_y7OjeqhHJu0Q?%11SIX$KU^l zj-33$$;r7JsK)|kD98+e0AfN52F5@C7#M#1!NkA*GBAAk_M71k(B5DFm>Bepjkwot z+-e34_aLA?E|6Z30RRESf*!EHff|4P!4ZRO91N4^?__xO`U8WyiVTCbu{Iyj9BZK4 zM1j)3Ko}r^FbwgvSCI) zKmcL&^51{thao@!p&Mu{3{0Y$a*S9FfaM$*0I3B6Ib<~e0fcT~pOOGLvjg)e12d6@ z^bO>M4G=)+1}*{On?S4r#Oy>G_!AVDFb+U~0RTb2Cp*ew4LAS*002ovPDHLkV1jKT B2W$WU literal 177 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9oB=)|t_Kbr05bpo|KGb%L=DJd zED7=pW^j0RBMrzAD{+k|3C>R|DNig)Wk}CVGb+eSS1{5u&@;4++m``U!IJLjmJXyP ze>`8)3#3&%T^vIy<|HRDFdn-gps+DZvm@deLlP@PXQ*(8l9MyD!~+I~_)t;*^HWte Q0M#>iy85}Sb4q9e0N}kbVE_OC diff --git a/src/STD/resources/open.png b/src/STD/resources/open.png index d9953b6a7d36d4983f2cd609ef10976ac221215f..8ed143ebddf46107de32a68f5b95d4c0c90f26d6 100755 GIT binary patch literal 1194 zcmW+$drVVz6#lihTwb@M$g~B9TO+qU%DDf)s9hf4l6DbH1FD^GLq$*_4zP@J|_B(2{~-_6njwrrtoxYf99^B_&NCSt6is zPKit9ZZgm8R_b{RsV7|h+c*6V&-TQWwMTynPI?GHA? zAHxLKH#LFV#*UywBuPS4*=6bztq%>E30RBA>5X!A-5c#2BX>4IXZMwkF!Bts?6Jpiv&{KBhO3?BTk=+d}NXfF!N?2p zke-IcEMFjcN-Qfc*YBfYYA1Q3MY(t9dFqNQF(+-^OO3_{8M&>+VzS=TEzQrv1H+C= z{fgD&>w`k@CW`RXvJ-l$ao=f|gJCep4sW_^D6+LKkjtZNcV;Zn$-BF1Ic?3!Wu-np z8-xtfCXA+%A0EONiRr(-4A$zRTGKU`Ou+jJMGw9nJdvXu%IDS@PObb1dAh1^ifFz#WV(N-p}Pw9Gf{PJFOQy`GF_ z*+9_d1e((Okx57i`M*Op!0WA-m7q6tOpBAws`U=X{on0n_M?vqQ=&U0aHXIBXo#js zZT?8CjaCpg;;L3pBxoa-1BvS|+HSC_W@iv%It@7Dd!eMRrY*`1hLyI29IR<<$==TG+D$>SHB zO|!y*v*i6S70;aRYZ-OYcMFF)(JBQe(HiBRyPsb;^W~@*36DzB!UfI6=BbMrmiVmW z0VwQg;HaxwGT64l<6vidljhv<;bSy}M(cNi!sq&5k!q>ULmL#UKOnniJTx??`uQTl zY~^2^?l$XUn?{LT5kei%K1K!F?$;|sPTt=y01pKjyE`gpF6`OF{S}a(Tafc(wp#Ze D`a>n! literal 231 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!7%)r1n>(-?sKn{O^Pl)S*0|);9XJ~0+_z$EQ z7#`Knt^-nxB|(0{3=Yq3q=7g|-tI0e{TVj{fgG_C*NBqf{Irtt#G+J&^vpD)g1mGE zBRvB>L)*B089)``o-U3d6?1&M4)PvQ;5l+fi(A2vp(}!6Dx*Nk|Cv%5s~;VoE6>K# zQGEW5oA9EG!rjU&^ViLso3`2fSZHEMajgTe~DWM4fqRCMQ diff --git a/src/STD/resources/paste.png b/src/STD/resources/paste.png index c7446259534a83a6e06232c80c732b459919cd15..b2b5c95ac6a45af84b1f6de1b259e5e4ca890134 100755 GIT binary patch literal 1094 zcmV-M1iAZ(P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ&YxPIk2!}-hS88|pN z80O5H12)vj)d{Zd{pFp%Kl*Z@P!kssHA8v+_1Ux<}&p5 z_cAP9wv<6pL6M=SuLme!0;H3{YJdEYU{F;30e3w>05L{IM*Vkklw`Pm{TNX42gB6q z=fSqV|L~q+-THM5pMLyfxN`9n*n$rqJ}_K3e~y8Ri;Lmu)29pu`eF>Svb+p`|Ndjx zw*5ZXl>h<60`exvWgx>~VCm|mKnt!jJb&?=;p+t@Ds!3tFIZJ zJh{XmDk8+-;_Akbl#A&PU}a@xNY5*0m^^iXH7}Ql{ z7_5y=K`GY~Ab>CoymtL9!)IN1Q3dW&z^l@xb#?(fnSD)VR?}ugPb%w!>>OA z4Cl5@XRydw#~`R=#xQegEyJaY=NUvrB~TpF+T91voB#oYVxW*PC&Q=bHyAX;pD?&4 zs55-~_J?8h)^`lD79k8@U)^P3X5(bw)$(Q7b6^|8@^$+d6qMA#`u>5!@-M^;fB-@< zkb|9>Aud85OoIR)9~*;_juyk2!}A!}xrG@1{r$!8{K94iS0^WiP0MGZxUjON4@?6D z5Jnin41)n)K7NLb++v0Wi#7IPm zz53pV{~=G`qKY$tVi$=oEzH26B*3@^Ab?mH2!mZfg$zW3T>t?F0N;pZ%{;R2V*mgE M07*qoM6N<$f`ORsv;Y7A literal 280 zcmV+z0q6dSP)p}?9Qv#DoiT`}aPY1G@i@=zb*uwtp zmkY)pBs?6AgR+}@z?hGG;nxQ>UM}dz@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZk9}if)dhL5oPR>rCQc)lVy9ywHSQzjC zpdPTIC3~KthzHq7Fns&|lOZG|NZ|g1wxr66lD|MO0VwqvAb{|?P(?*$$3LKgPv8Fk z{|v=nzW@LK>fO)(*Y3WAyEHQ^=M@_pTM1ALA3y-H;5JNk)74wI+?S%c4g_TQe=)px z{g&a@!&eMCs({ThKq)nV0K#b?(A`YG{xC4u8%i_4;*1d@&hYrz8;19v zUom|7{sS0WYz$0{OhTX_2jVXP0ff^)pjVlH0u4NP{wY>@USSz9EhxkZwB-LkXw3fy z2p~pm$wo<8bw;LHV~f#;+p^g1^^ahyg$;D4>AA%002ovPDHLkV1h4ep~nCK literal 233 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!7%)r1n>(-?sKn{O^Pl)S*0|#1~TK@lM_z%Pk z3>q;Poq!Z$NswPKgTu2MX&_FLx4R2Vf5y!~AV;jkHKHUqKdq!Zu_%=xJu}UyATM3P zNY6me&^B&g22e$$r;B4q#T;9|+nfxB9H(Pt7Z~4RVU=~r_%{EgRO>H6zopr06D=?0RR91 diff --git a/src/STD/resources/redo.png b/src/STD/resources/redo.png index ac72e5c27cb02fdb6aebd6fdf3a8f08b4a4bb2fb..3753bb923cd9e03192cfe0d8cb013ae6813ddd51 100755 GIT binary patch literal 885 zcmV-*1B(2KP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;>q$gGRCwBA{Qv(y12q9a05LI882|(j1IUFWxY7oQ z7Xh&)F0%jv2%mw{KbGxam~!?k!>_-8vw*VGVFm&O5W0ch zoNR1cCL|^@q}kdsFns^c!0_V-1H;ds3=Dt%fa$+qzcM`e{F&j+w{Hwr-@IYS-@BLL z!;c?gK)tU)W&s2c3z|1GSLf$5c&n%|Fg$$7@an}2h7(VpGJO91o8c$WKqe+81|C*c zkO2(W-@Rj4ed7j*-2l}0733z6BLM;kISfNW%*_7(pEc|M|CW~j2|79;L7)>Ep24sp zKmY#{pc)+!5s=(-AYKK;?m#RGG7w}AKmZ}TFgDiAjDZ2@l?BI-Gc34rj;n*1Y)2nu&^-P0=l;K)G3BXpMZ{FVuGbyaC-a#jOCl}-hnJ!hMuqi z0th`F&h%GRO=|@vULH0!27aK|`G7PN3nXOz|NYDG5ttVDK6t|h20 z1Q2>U%-?wXw!n?IZ^ObhH5q^|W)SA&WMBeX22%VFlwpAMo%bN$GO#0sB^&?*5PDt) zIa36PtAY3$EOxQr`#{_W#FFS{0R#}Xyvz*5LeRhmVPR+?fE(-?sK#pjDPl)S*0|(O5(ij+KrlrjU z0tN;ko8e_7w;YgSED7=pW^j0R10=?n*?YcQZXkvfq^-UO^uOFVzQz_10&lEi3m{%2_6XphGc;j yHqF!^hL=hVK9Uk42TzGOSUK#9bu1CEvt^K0XP(n=mTxoAAO=rYKbLh*2~7a~`8MzX diff --git a/src/STD/resources/reset.png b/src/STD/resources/reset.png index ccda81cb117fd14d8ba2279f5de2aa03b55e1b90..761af7368d1abbee4f38dfbcbedca5bbe3efabb1 100755 GIT binary patch literal 1032 zcmV+j1o!)iP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZRH&~*%AVhjx8;tUMm zzA;?8eVf7l#S4Zv|Nn;q^{jyz2oOME0x6~wY*bbM|Cu}Y|NrXh|Nn)A{x9X`{@=yP z`F{cz*Z;LVJpUi@^Z);^sQCY{py2=cKrx`610eUn3>3Z@?h<38dwjnHjX1neBnX9xwv{0th)$q@{Uy%*bku8Ys03i2niv z5VC>l>fGE649}i1FaTZn4d?lMT>|3{Reb16>ekfDlkf9B3FX5Hql`F);A)F))CV5Xivq-x*#5EqxAjDG;y% zF%QT5MIikRqW3Kj zbAT8C0fcPe)2Dy`p4sx@gNY5$Ya&1wGV%Z|m63rM0&*QFO+v$XB`~2s1iJ1O#D(Wz zh5!T*dMwXq273D>(B_N4*ku4l4A=lpP6!4X!f^2-!(L$8ob~f3!$+W(-~Rvq3aIZm z5dQ=j01!av2^&N#c4T3Rc4TE`5C)3r0llsR#329N0=fp|vg1Gte*pEJ16m3+WgAec z50njoW_<<-AZ$5B668{GMn*psph0X{GWj#0!FPc8FC;I|1>(Ix`~YayUw{BY&nd9H zECs|1fL8nmroaC(OicfkfLIjB2D%ia_zn=S2I4$ulHr2o6o3H2=0aF95QP?7UO=n^ z#J~i|@CFolK>Qep?*j2fAO>bDhOZFw{xbjs5H15@5ylI|VxZ&*H4v04zCjIs4oxmU zkxLtZ0K#V=vcc@obOvIBa^!a){=)$AK1u-#5MTffc}_YNsa>-G0000(-?sK#ov=Pl)S*0|);9XV|-sVZod^ z|A8z9hKEa&*8wTUk|4ie28U-i(m6vLp z1$pTTMtTN%hPHA0GJq;VJzX3_D(0m27;-fj2(YkE`r?+P-=x1o-s8>r7k~e2yK#1; zbj{VB#%i;{@t7vRb)2A-owOg9tRi2*k)6{5EmN1aeX};$d_CN2vYGxb%MOo=+y2z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ<xKpzbs~Q?&{nc4kgK9(EQsR_6cz z|1;nOjEsy7zyJJY{P5|=pI?9f{yBBw=JIpv+uDDB|L_?gfLK5Z6lFxhoa~JipFMxW z5NsvSAR{5bKnOg0{gGk8&KnGTLV^sRzx~O0Agyue<((5p0Ro6c%C(u1nTe6%&ht+U zS8qILaMBfHXgR=6(7+O_Ukso2xHKR+t~g|7ev5X-aOwg3NX&1Ya? zW@KPzWoBRkdS^xiCqV=6J^sqT#=^wF%=n+--@kth|Ni~~xq=NKfLO38j+%6hpn)xc z;tc=){b%_5_b=#UX@-QJ^Gt@7a5XpMU=|urU3Bco`ba00G1T^DihZ@eA-X zJp1^W;o_l(kl6bN68{T!`9B~A)Bpc5F#i7w4jyh!c7~t7e*?YtkAVT|NPqxhLC&9F zzkX$S_T(9ZAm={@F=0*yCKhIfzkmKSeEb@&B1W;*fEB#_HKs$o_>ZG z&z}KZ`itSm_pc0pe|-aIH&#|wa1QzT>le_+f8j0!2p}eD_jZukjG&kT1vn^tzkUC~ z@Z;BScqDxN@|EG^r_T%@K73?&|KT&(`yc=c-`_xW|A1a*WMl@50R#}!)18(7nV8vG zfG!8;OOR_pVadV4&LAu-#2_Id%J38D)%Wk-Gkkdef#KuFj}UdhumjP*KnDJ2X8iU2 z6WG%L0R#@io0re*GdI?>6BguScm{Oc$Issw%q=Y$)V1}25%Qhk$B&;3?>>BG`1#`p z!QGnAZM5y#-1xpaK9CW`96QhnW)?S!@j7zJ34C%Erd@@59|&S5NQW`0wxEJpcg& zF_3{l6pCemSO|!j8Q}4T75qnI{{iB6KztP-zyNe(%ahxayUPFo002ovPDHLkV1n@z B3}XNQ literal 215 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!9%)r1XI!iqT$l(m|32{Ae;6O_gki&3TqMZXs zF_r}R1v5B2yO9RsBze2LFr{(VfRu}sxJHx&=ckpFCl;kLq-UlX738HW80i`48QR9} z%K)nI^>lFzshE?TkPwiNkTB!Gfg=l8m&}#eBr!>XWru@DmT2=etpyT?nG}*37e;y? zSkda3%^Hw(m5a@kjm^N2*=a>vo14Lkbx{V)P7MqUQul;6JeuR&3^bU*)78&qol`;+ E0M`~hx&QzG diff --git a/src/STD/resources/undo.png b/src/STD/resources/undo.png index 61b19777e4f9527d8961358b7dde84d4af2d16e6..9b60fbd5d01059c8cc35f2dfa10f27626a498577 100755 GIT binary patch literal 873 zcmV-v1D5=WP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;-$_J4RCwBA{Qv(y12q9a05LI882|(j1IUFqTxki! zi-6dM6te&V2%CYNK-|SIEb%|NcF})jT^o>O8WQ#cVrg6k0t65Xnph??3)?jNz#InO zq(%ltRvw0D&t5PHN^8x8S^4Gt3x;QR&N6&{`*aqNI~|BGAR7P>K#VZgF)}iWa`B12 zifr7=AgZ9t@aHcB!}ni61Aa0v`~xas0fsgQD+DtG*%x-rVmPp%fZ@-t?><27TVXB) z2q0twK~$EYtie>h&|U^UaW#hTpI$J0e0+i7&(CiREbQD2Y&^mY!b+A5g2LhqEX)iH zch7ERI55#?J5Zk&%s_wuLJvcbsTn|gMNGr#zkW#1e{K;4kmL&>eg?%qllI=j81GOw06mE8zEB*&h{r2BD zW;#fI7Z5Xp%mD}>^hg0oeg)#2KwSLy_m71Pzki5B`5@Q*f?CS;=;AQmjK{|{>DLm+++#N0sq4TwJh@gJy~KWsdr48Oj-Vfgm`2?JCd)QtmFRtzcsn`$o83RB7;W9AOGkXq$tfmb(4T93- z&)*CTAAbP-{oyUc=T~@O``!h%%Kmg$?9HM~uBvQB`W01z%K)ecw zOMut~h(%zz4j_Qga|$v5B^Og5Rs&*ov{V4{-diBP3&rn%_%FyTfB?d0AO{c&LX!g% zT3Y>sl$5^1A_Qa>KmajPyTk?vAgY(x009O7#HKIZQl!~300000NkvXXu0mjfr72_5 literal 210 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!7%)r1n>(-?sK#ov=Pl)S*0|(O5(ij+Krlrkf zU;r{0c8fE|0x8ClAirP+hi5lHVvI@N?k=o9@?RbYa>PnpBT9nv(@M${i&7cVGt-O; z^3oNI^bGV2ZR7T309Dv~x;TbZ%t=mQU}j}wb7#{iVECBO(8;)tf!9FG&|rfFL+EA) z6N97`4y=4Uemp!~4sBgbS7OxF+1c3AYpNKu@|hn*9eH^jXcU8|tDnm{r-UW|1Q0o1 diff --git a/src/STD/resources/vtile.png b/src/STD/resources/vtile.png new file mode 100644 index 0000000000000000000000000000000000000000..9ad8814d73058287a9895da34961551bcd1914cd GIT binary patch literal 373 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VXMsm#F#`j)FbFd;%$g$s6l6(v z^mSxl*w|O|J8&|PuaN8!adnG-!)jK>28JY- zodGUq+19Vk&y!`8{_+00c+)EerViF4H$oTphbvwPVoSQp$RZ%jJeARbA@Ht41H+9cVO~AEHC`5IjcpLn31HK%^0II! ytdiysaOk #include +#include #ifdef SUIT_ENABLE_PYTHON #include #endif @@ -44,6 +45,10 @@ #include +#ifdef WIN32 +#include +#endif + static QString salomeVersion() { QString path( ::getenv( "GUI_ROOT_DIR" ) ); @@ -161,12 +166,13 @@ int main( int args, char* argv[] ) PySys_SetArgv( args, argv ); #endif - qInstallMsgHandler( MessageOutput ); + //qInstallMsgHandler( MessageOutput ); QStringList argList; bool noExceptHandling = false; bool iniFormat = false; bool noSplash = false; + bool useLicense = false; for ( int i = 1; i < args /*&& !noExceptHandling*/; i++ ) { if ( !strcmp( argv[i], "--noexcepthandling" ) ) @@ -175,23 +181,51 @@ int main( int args, char* argv[] ) iniFormat = true; else if ( !strcmp( argv[i], "--nosplash") ) noSplash = true; - else + else if ( !strcmp( argv[i], "--uselicense" ) ) + useLicense = true; + else argList.append( QString( argv[i] ) ); } SUITApp_Application app( args, argv ); int result = -1; + + if ( useLicense ) { + QString env; + +#ifdef WIN32 + DWORD aLen=1024; + char aStr[1024]; + HANDLE aToken=0; + HANDLE hProcess = GetCurrentProcess(); + OpenProcessToken(hProcess,TOKEN_QUERY,&aToken); + if( GetUserProfileDirectory( aToken, aStr, &aLen ) ) + env = aStr; + +#else + if ( ::getenv( "HOME" ) ) + env = ::getenv( "HOME" ); +#endif + + QFile file( env + "/ReadLicense.log" ); // Read the text from a file + if( !file.exists() ) { + SUIT_LicenseDlg aLicense; + if ( aLicense.exec() != QDialog::Accepted ) + return result; + } + } + if ( !argList.isEmpty() ) { SUITApp_Session* aSession = new SUITApp_Session( iniFormat ); QtxSplash* splash = 0; + SUIT_ResourceMgr* resMgr = aSession->createResourceMgr( argList.first() ); if ( !noSplash ) { - SUIT_ResourceMgr* resMgr = aSession->createResourceMgr( argList.first() ); if ( resMgr ) { - resMgr->loadLanguage(); + resMgr->loadLanguage( false ); splash = QtxSplash::splash( QPixmap() ); splash->readSettings( resMgr ); @@ -222,9 +256,12 @@ int main( int args, char* argv[] ) SUIT_Application* theApp = aSession->startApplication( argList.first() ); if ( theApp ) { - Style_Salome* aStyle = new Style_Salome(); - aStyle->getModel()->initFromResource( theApp->resourceMgr() ); - app.setStyle( aStyle ); + if ( resMgr && resMgr->booleanValue( "Style", "use_salome_style", true ) ) + { + Style_Salome* aStyle = new Style_Salome(); + aStyle->getModel()->initFromResource( theApp->resourceMgr() ); + app.setStyle( aStyle ); + } if ( !noExceptHandling ) app.setHandler( aSession->handler() ); diff --git a/src/SUITApp/SUITApp.pro b/src/SUITApp/SUITApp.pro index e5edddab5..def2d4011 100644 --- a/src/SUITApp/SUITApp.pro +++ b/src/SUITApp/SUITApp.pro @@ -18,6 +18,7 @@ CONFIG -= debug release debug_and_release CONFIG += qt thread debug dll shared win32:DEFINES += WNT WIN32 +DEFINES += DISABLE_TESTRECORDER HEADERS = *.h diff --git a/src/SUITApp/SUITApp_Application.cxx b/src/SUITApp/SUITApp_Application.cxx index 7027184df..df551d580 100644 --- a/src/SUITApp/SUITApp_Application.cxx +++ b/src/SUITApp/SUITApp_Application.cxx @@ -35,7 +35,11 @@ Constructor */ SUITApp_Application::SUITApp_Application( int& argc, char** argv, SUIT_ExceptionHandler* hand ) -: QApplication( argc, argv ), +#ifndef DISABLE_TESTRECORDER + : TestApplication( argc, argv ), +#else + : QApplication( argc, argv ), +#endif myExceptHandler( hand ) { QString path = SUIT_Tools::dir( argv[0] ) + QDir::separator() + "../../resources"; @@ -52,7 +56,11 @@ myExceptHandler( hand ) Constructor */ SUITApp_Application::SUITApp_Application( int& argc, char** argv, Type type, SUIT_ExceptionHandler* hand ) -: QApplication( argc, argv, type ), +#ifndef DISABLE_TESTRECORDER + : TestApplication( argc, argv ), +#else + : QApplication( argc, argv, type ), +#endif myExceptHandler( hand ) { QTranslator* strTbl = new QTranslator( 0 ); @@ -69,7 +77,11 @@ myExceptHandler( hand ) bool SUITApp_Application::notify( QObject* receiver, QEvent* e ) { return myExceptHandler ? myExceptHandler->handle( receiver, e ) : +#ifndef DISABLE_TESTRECORDER + TestApplication::notify( receiver, e ); +#else QApplication::notify( receiver, e ); +#endif } /*! diff --git a/src/SUITApp/SUITApp_Application.h b/src/SUITApp/SUITApp_Application.h index 808e464cc..bb27322b5 100644 --- a/src/SUITApp/SUITApp_Application.h +++ b/src/SUITApp/SUITApp_Application.h @@ -19,11 +19,19 @@ #ifndef SUITAPP_APPLICATION_H #define SUITAPP_APPLICATION_H -#include +#ifndef DISABLE_TESTRECORDER + #include +#else + #include +#endif class SUIT_ExceptionHandler; -class SUITApp_Application : public QApplication +#ifndef DISABLE_TESTRECORDER + class SUITApp_Application : public TestApplication +#else + class SUITApp_Application : public QApplication +#endif { Q_OBJECT diff --git a/src/SVTK/SALOME_Actor.cxx b/src/SVTK/SALOME_Actor.cxx index 7f17c2708..678d9de95 100644 --- a/src/SVTK/SALOME_Actor.cxx +++ b/src/SVTK/SALOME_Actor.cxx @@ -509,7 +509,7 @@ SALOME_Actor if(myIsPreselected){ const TColStd_IndexedMapOfInteger& aMapIndex = myPreHighlightActor->GetMapIndex(); int anExtent = aMapIndex.Extent(); - anIsChanged |= (anExtent == 0); + anIsChanged |= (anExtent == 0 || anExtent == 1); anIsChanged |= (anExtent == 2 && (anObjId != aMapIndex(1) || anEdgeId != aMapIndex(2))); if(anIsChanged){ TColStd_IndexedMapOfInteger aMapIndex; diff --git a/src/SVTK/SALOME_Actor.h b/src/SVTK/SALOME_Actor.h index db4e2e56e..ffa0bdca7 100644 --- a/src/SVTK/SALOME_Actor.h +++ b/src/SVTK/SALOME_Actor.h @@ -54,8 +54,12 @@ class SVTK_Actor; class SVTK_RectPicker; class SVTK_InteractorStyle; -extern int SALOME_POINT_SIZE; -extern int SALOME_LINE_WIDTH; +SVTK_EXPORT extern int SALOME_POINT_SIZE; +SVTK_EXPORT extern int SALOME_LINE_WIDTH; + +#ifdef WIN32 +#pragma warning ( disable:4251 ) +#endif #ifdef WIN32 #pragma warning ( disable:4251 ) diff --git a/src/SVTK/SVTK_CubeAxesDlg.cxx b/src/SVTK/SVTK_CubeAxesDlg.cxx index 1258e98ed..92c3f2847 100644 --- a/src/SVTK/SVTK_CubeAxesDlg.cxx +++ b/src/SVTK/SVTK_CubeAxesDlg.cxx @@ -48,29 +48,60 @@ #include /*! - * Class : AxisWg - * Description : Tab of dialog - */ + \class SVTK_CubeAxesDlg::AxisWidget + \brief Axis tab widget of the "Graduated axis" dialog box + \internal +*/ + +class SVTK_CubeAxesDlg::AxisWidget : public QFrame +{ +public: + AxisWidget( QWidget* ); + ~AxisWidget(); + + void UseName( const bool ); + void SetName( const QString& ); + void SetNameFont( const QColor&, const int, const bool, const bool, const bool ); + bool ReadData( vtkAxisActor2D* ); + bool Apply( vtkAxisActor2D* ); + +private: + // name + QGroupBox* myNameGrp; + QLineEdit* myAxisName; + SVTK_FontWidget* myNameFont; + + // labels + QGroupBox* myLabelsGrp; + QtxIntSpinBox* myLabelNumber; + QtxIntSpinBox* myLabelOffset; + SVTK_FontWidget* myLabelsFont; + + // tick marks + QGroupBox* myTicksGrp; + QtxIntSpinBox* myTickLength; + + friend class SVTK_CubeAxesDlg; +}; /*! Constructor */ -SVTK_AxisWidget::SVTK_AxisWidget (QWidget* theParent) +SVTK_CubeAxesDlg::AxisWidget::AxisWidget (QWidget* theParent) : QFrame(theParent) { QList< QLabel* > aLabels; // "Name" grp - myNameGrp = new QGroupBox(tr("AXIS_NAME"), this); + myNameGrp = new QGroupBox(SVTK_CubeAxesDlg::tr("AXIS_NAME"), this); + myNameGrp->setCheckable( true ); + QVBoxLayout* aVBox = new QVBoxLayout; - myIsNameVisible = new QCheckBox(tr("IS_VISIBLE"), myNameGrp); - aVBox->addWidget(myIsNameVisible); - QHBoxLayout* aHBox = new QHBoxLayout; aHBox->setSpacing(5); - QLabel* aLabel = new QLabel(tr("NAME")); + QLabel* aLabel = new QLabel(SVTK_CubeAxesDlg::tr("NAME")); aHBox->addWidget(aLabel); myAxisName = new QLineEdit; aHBox->addWidget(myAxisName); @@ -79,7 +110,7 @@ SVTK_AxisWidget::SVTK_AxisWidget (QWidget* theParent) aHBox = new QHBoxLayout; aHBox->setSpacing(5); - aLabel = new QLabel(tr("FONT")); + aLabel = new QLabel(SVTK_CubeAxesDlg::tr("FONT")); aHBox->addWidget(aLabel); myNameFont = new SVTK_FontWidget(myNameGrp); aHBox->addWidget(myNameFont); @@ -90,35 +121,32 @@ SVTK_AxisWidget::SVTK_AxisWidget (QWidget* theParent) // "Labels" grp - myLabelsGrp = new QGroupBox(tr("LABELS"), this); - aVBox = new QVBoxLayout; + myLabelsGrp = new QGroupBox(SVTK_CubeAxesDlg::tr("LABELS"), this); + myLabelsGrp->setCheckable( true ); - myIsLabelsVisible = new QCheckBox(tr("IS_VISIBLE"), myLabelsGrp); - aVBox->addWidget(myIsLabelsVisible); + aVBox = new QVBoxLayout; aHBox = new QHBoxLayout; aHBox->setSpacing(5); - aLabel = new QLabel(tr("NUMBER")); + aLabel = new QLabel(SVTK_CubeAxesDlg::tr("NUMBER")); aHBox->addWidget(aLabel); myLabelNumber = new QtxIntSpinBox(0,25,1,myLabelsGrp); - myLabelNumber->setObjectName("SpinBoxLabelNumber"); aHBox->addWidget(myLabelNumber); aLabels.append(aLabel); aVBox->addLayout(aHBox); aHBox = new QHBoxLayout; aHBox->setSpacing(5); - aLabel = new QLabel(tr("OFFSET")); + aLabel = new QLabel(SVTK_CubeAxesDlg::tr("OFFSET")); aHBox->addWidget(aLabel); myLabelOffset = new QtxIntSpinBox(0,100,1,myLabelsGrp); - myLabelOffset->setObjectName("SpinBoxLabellOffset"); aHBox->addWidget(myLabelOffset); aLabels.append(aLabel); aVBox->addLayout(aHBox); aHBox = new QHBoxLayout; aHBox->setSpacing(5); - aLabel = new QLabel(tr("FONT")); + aLabel = new QLabel(SVTK_CubeAxesDlg::tr("FONT")); aHBox->addWidget(aLabel); myLabelsFont = new SVTK_FontWidget(myLabelsGrp); aHBox->addWidget(myLabelsFont); @@ -129,18 +157,16 @@ SVTK_AxisWidget::SVTK_AxisWidget (QWidget* theParent) // "Tick marks" grp - myTicksGrp = new QGroupBox(tr("TICK_MARKS"), this); - aVBox = new QVBoxLayout; + myTicksGrp = new QGroupBox(SVTK_CubeAxesDlg::tr("TICK_MARKS"), this); + myTicksGrp->setCheckable( true ); - myIsTicksVisible = new QCheckBox(tr("IS_VISIBLE"), myTicksGrp); - aVBox->addWidget(myIsTicksVisible); + aVBox = new QVBoxLayout; aHBox = new QHBoxLayout; aHBox->setSpacing(5); - aLabel = new QLabel(tr("LENGTH")); + aLabel = new QLabel(SVTK_CubeAxesDlg::tr("LENGTH")); aHBox->addWidget(aLabel); myTickLength = new QtxIntSpinBox(0,100,1,myTicksGrp); - myTickLength->setObjectName("SpinBoxTickLength"); aHBox->addWidget(myTickLength); aLabels.append(aLabel); aVBox->addLayout(aHBox); @@ -150,17 +176,16 @@ SVTK_AxisWidget::SVTK_AxisWidget (QWidget* theParent) // Layout QVBoxLayout* aLay = new QVBoxLayout(this); - aLay->setMargin(0); + aLay->setMargin(5); aLay->setSpacing(5); aLay->addWidget(myNameGrp); aLay->addWidget(myLabelsGrp); aLay->addWidget(myTicksGrp); // init - myIsNameVisible->setChecked(true); - myIsLabelsVisible->setChecked(true); - myIsTicksVisible->setChecked(true); - updateControlState(); + myNameGrp->setChecked( true ); + myLabelsGrp->setChecked( true ); + myTicksGrp->setChecked( true ); // Adjust label widths QList< QLabel* >::iterator anIter; @@ -169,74 +194,35 @@ SVTK_AxisWidget::SVTK_AxisWidget (QWidget* theParent) aMaxWidth = qMax(aMaxWidth, (*anIter)->sizeHint().width()); for (anIter = aLabels.begin(); anIter != aLabels.end(); anIter++) (*anIter)->setFixedWidth(aMaxWidth); - - // connect signals and slots - connect(myIsNameVisible, SIGNAL(stateChanged(int)), SLOT(onNameChecked())); - connect(myIsLabelsVisible, SIGNAL(stateChanged(int)), SLOT(onLabelsChecked())); - connect(myIsTicksVisible, SIGNAL(stateChanged(int)), SLOT(onTicksChecked())); } /*! Destructor */ -SVTK_AxisWidget::~SVTK_AxisWidget() -{ -} - -void SVTK_AxisWidget::updateControlState() +SVTK_CubeAxesDlg::AxisWidget::~AxisWidget() { - onNameChecked(); - onLabelsChecked(); - onTicksChecked(); } -void SVTK_AxisWidget::setEnabled(QGroupBox* theGrp, const bool theState) +void SVTK_CubeAxesDlg::AxisWidget::UseName(const bool toUse) { - QObjectList aChildren(theGrp->children()); - QObject* anObj; - for(int i = 0; i < aChildren.size(); i++) - { - anObj = aChildren.at(i); - if (anObj !=0 && anObj->inherits("QHBoxLayout")) - ((QHBoxLayout*)anObj)->setEnabled(theState); - } -} - -void SVTK_AxisWidget::onLabelsChecked() -{ - setEnabled(myLabelsGrp, myIsLabelsVisible->isChecked()); -} - -void SVTK_AxisWidget::onTicksChecked() -{ - setEnabled(myTicksGrp, myIsTicksVisible->isChecked()); + myNameGrp->setChecked(toUse); } -void SVTK_AxisWidget::onNameChecked() -{ - setEnabled(myNameGrp, myIsNameVisible->isChecked()); -} - -void SVTK_AxisWidget::UseName(const bool toUse) -{ - myIsNameVisible->setChecked(toUse); -} - -void SVTK_AxisWidget::SetName(const QString& theName) +void SVTK_CubeAxesDlg::AxisWidget::SetName(const QString& theName) { myAxisName->setText(theName); } -void SVTK_AxisWidget::SetNameFont(const QColor& theColor, - const int theFont, - const bool theIsBold, - const bool theIsItalic, - const bool theIsShadow) +void SVTK_CubeAxesDlg::AxisWidget::SetNameFont(const QColor& theColor, + const int theFont, + const bool theIsBold, + const bool theIsItalic, + const bool theIsShadow) { myNameFont->SetData(theColor, theFont, theIsBold, theIsItalic, theIsShadow); } -bool SVTK_AxisWidget::ReadData(vtkAxisActor2D* theActor) +bool SVTK_CubeAxesDlg::AxisWidget::ReadData(vtkAxisActor2D* theActor) { if (theActor == 0) return false; @@ -264,7 +250,7 @@ bool SVTK_AxisWidget::ReadData(vtkAxisActor2D* theActor) isTitleShadow = aTitleProp->GetShadow() ? true : false; } - myIsNameVisible->setChecked(useName); + myNameGrp->setChecked(useName); myAxisName->setText(aTitle); myNameFont->SetData(aTitleColor, aTitleFontFamily, isTitleBold, isTitleItalic, isTitleShadow); @@ -292,7 +278,7 @@ bool SVTK_AxisWidget::ReadData(vtkAxisActor2D* theActor) isLabelsShadow = aLabelsProp->GetShadow() ? true : false; } - myIsLabelsVisible->setChecked(useLabels); + myLabelsGrp->setChecked(useLabels); myLabelNumber->setValue(nbLabels); myLabelOffset->setValue(anOffset); myLabelsFont->SetData(aLabelsColor, aLabelsFontFamily, isLabelsBold, isLabelsItalic, isLabelsShadow); @@ -301,20 +287,20 @@ bool SVTK_AxisWidget::ReadData(vtkAxisActor2D* theActor) bool useTickMarks = theActor->GetTickVisibility(); int aTickLength = theActor->GetTickLength(); - myIsTicksVisible->setChecked(useTickMarks); + myTicksGrp->setChecked(useTickMarks); myTickLength->setValue(aTickLength); return true; } -bool SVTK_AxisWidget::Apply(vtkAxisActor2D* theActor) +bool SVTK_CubeAxesDlg::AxisWidget::Apply(vtkAxisActor2D* theActor) { if (theActor == 0) return false; // Name - theActor->SetTitleVisibility(myIsNameVisible->isChecked() ? 1 : 0); + theActor->SetTitleVisibility(myNameGrp->isChecked() ? 1 : 0); theActor->SetTitle(myAxisName->text().toLatin1()); QColor aTitleColor(255, 255, 255); @@ -341,7 +327,7 @@ bool SVTK_AxisWidget::Apply(vtkAxisActor2D* theActor) // Labels - theActor->SetLabelVisibility(myIsLabelsVisible->isChecked() ? 1 : 0); + theActor->SetLabelVisibility(myLabelsGrp->isChecked() ? 1 : 0); int nbLabels = myLabelNumber->value(); theActor->SetNumberOfLabels(nbLabels); @@ -374,7 +360,7 @@ bool SVTK_AxisWidget::Apply(vtkAxisActor2D* theActor) // Tick marks - theActor->SetTickVisibility(myIsTicksVisible->isChecked()); + theActor->SetTickVisibility(myTicksGrp->isChecked()); int aTickLength = myTickLength->value(); theActor->SetTickLength(aTickLength); @@ -418,16 +404,14 @@ QWidget* SVTK_CubeAxesDlg::createMainFrame(QWidget* theParent) myTabWg = new QTabWidget(aFrame); - myAxes[ 0 ] = new SVTK_AxisWidget(myTabWg); - myAxes[ 1 ] = new SVTK_AxisWidget(myTabWg); - myAxes[ 2 ] = new SVTK_AxisWidget(myTabWg); + myAxes[ 0 ] = new AxisWidget(myTabWg); + myAxes[ 1 ] = new AxisWidget(myTabWg); + myAxes[ 2 ] = new AxisWidget(myTabWg); myTabWg->addTab(myAxes[ 0 ], tr("X_AXIS")); myTabWg->addTab(myAxes[ 1 ], tr("Y_AXIS")); myTabWg->addTab(myAxes[ 2 ], tr("Z_AXIS")); - myTabWg->setContentsMargins(5,5,5,5); - myIsVisible = new QCheckBox(tr("IS_VISIBLE"), aFrame); QVBoxLayout* aLay = new QVBoxLayout(aFrame); diff --git a/src/SVTK/SVTK_CubeAxesDlg.h b/src/SVTK/SVTK_CubeAxesDlg.h index f573f94b1..d4f90568a 100644 --- a/src/SVTK/SVTK_CubeAxesDlg.h +++ b/src/SVTK/SVTK_CubeAxesDlg.h @@ -27,36 +27,27 @@ #ifndef SVTK_CubeAxesDlg_H #define SVTK_CubeAxesDlg_H -#include "SVTK.h" #include "SVTK_DialogBase.h" -#include - class QWidget; class QPushButton; class QTabWidget; class QCheckBox; -class QLineEdit; -class QGroupBox; class QtxAction; -class QtxIntSpinBox; - -class vtkAxisActor2D; class SVTK_CubeAxesActor2D; - -class SVTK_FontWidget; -class SVTK_AxisWidget; class SVTK_MainWindow; /*! * Class : SVTK_CubeAxesDlg * Description : Dialog for specifynig cube axes properties */ -class SVTK_EXPORT SVTK_CubeAxesDlg : public SVTK_DialogBase +class SVTK_CubeAxesDlg : public SVTK_DialogBase { Q_OBJECT + class AxisWidget; + public: SVTK_CubeAxesDlg(QtxAction* theAction, SVTK_MainWindow* theParent, @@ -85,56 +76,7 @@ private: QPushButton* myOkBtn; QPushButton* myApplyBtn; QPushButton* myCloseBtn; - SVTK_AxisWidget* myAxes[ 3 ]; -}; - -/*! - * Class : SVTK_AxisWidget - * Description : Tab of dialog - */ -class SVTK_EXPORT SVTK_AxisWidget : public QFrame -{ - Q_OBJECT - -public: - SVTK_AxisWidget( QWidget* ); - ~SVTK_AxisWidget(); - - void UseName( const bool ); - void SetName( const QString& ); - void SetNameFont( const QColor&, const int, const bool, const bool, const bool ); - bool ReadData( vtkAxisActor2D* ); - bool Apply( vtkAxisActor2D* ); - -private slots: - void onNameChecked(); - void onLabelsChecked(); - void onTicksChecked(); - -private: - void updateControlState(); - void setEnabled( QGroupBox*, const bool ); - -private: - // name - QGroupBox* myNameGrp; - QCheckBox* myIsNameVisible; - QLineEdit* myAxisName; - SVTK_FontWidget* myNameFont; - - // labels - QGroupBox* myLabelsGrp; - QCheckBox* myIsLabelsVisible; - QtxIntSpinBox* myLabelNumber; - QtxIntSpinBox* myLabelOffset; - SVTK_FontWidget* myLabelsFont; - - // tick marks - QGroupBox* myTicksGrp; - QCheckBox* myIsTicksVisible; - QtxIntSpinBox* myTickLength; - - friend class SVTK_CubeAxesDlg; + AxisWidget* myAxes[ 3 ]; }; #endif diff --git a/src/SVTK/SVTK_GenericRenderWindowInteractor.cxx b/src/SVTK/SVTK_GenericRenderWindowInteractor.cxx index 3dffbae50..fa4943202 100644 --- a/src/SVTK/SVTK_GenericRenderWindowInteractor.cxx +++ b/src/SVTK/SVTK_GenericRenderWindowInteractor.cxx @@ -134,7 +134,7 @@ SVTK_Selector* SVTK_GenericRenderWindowInteractor ::GetSelector() { - return mySelector.GetPointer(); + return mySelector; } /*! diff --git a/src/SVTK/SVTK_GenericRenderWindowInteractor.h b/src/SVTK/SVTK_GenericRenderWindowInteractor.h index 9bb7cbfcd..06c0241e8 100644 --- a/src/SVTK/SVTK_GenericRenderWindowInteractor.h +++ b/src/SVTK/SVTK_GenericRenderWindowInteractor.h @@ -122,7 +122,7 @@ class SVTK_EXPORT SVTK_GenericRenderWindowInteractor: public QVTK_GenericRenderW SVTK_GenericRenderWindowInteractor(); ~SVTK_GenericRenderWindowInteractor(); - vtkSmartPointer mySelector; //!< Keeps a pointer to SVTK_Selector + SVTK_Selector* mySelector; //!< Keeps a pointer to SVTK_Selector QWidget* myRenderWidget; //!< Keeps a pointer to QWidget, where vtkRenderWindow maps to. }; diff --git a/src/SVTK/SVTK_InteractorStyle.h b/src/SVTK/SVTK_InteractorStyle.h index 60dbf4fe6..b02941bfb 100644 --- a/src/SVTK/SVTK_InteractorStyle.h +++ b/src/SVTK/SVTK_InteractorStyle.h @@ -102,7 +102,6 @@ class SVTK_EXPORT SVTK_ControllerOnKeyDown : public vtkObject{ void operator=(const SVTK_ControllerOnKeyDown&); //Not implemented }; -class vtkPicker; class vtkPointPicker; class SALOME_Actor; @@ -334,8 +333,6 @@ class SVTK_EXPORT SVTK_InteractorStyle: public vtkInteractorStyle PSelectionEvent mySelectionEvent; - vtkSmartPointer myPicker; - unsigned long myCurrRotationPointType; unsigned long myPrevRotationPointType; diff --git a/src/SVTK/resources/vtk_view_graduated_axes.png b/src/SVTK/resources/vtk_view_graduated_axes.png new file mode 100755 index 0000000000000000000000000000000000000000..2b44c06fe8f81517d47267c43b62963b1a40ace5 GIT binary patch literal 650 zcmV;50(Jd~P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;07*naRCwBA`2YVu13vJ;#00+rGyo7lOhl>^2V!nw z6aoYg6EUs>(l3CN1Th8z1P}uOFY`hTtpZ{%5TB5F00G1ZGLVsx5tqD-v9a-EdQCNfLQPa2gtCsK+A5ow_`|FR8+v2prCjU#9x5;7eD|p;W6xQM@I)% zNswVkaw;im)@h0~(eq!v4A!D0vqkfUqTOAz&=O z72}z~P*n2)XZiygwjW4+hNeGeXkLE?5I{H$B#=8+11XSg&w&`EmJON~p8y09x`9ld z_NV`DKWORzWII9=Edx~ZZzvm-#Xf;F1Mxj*8Uz`@1_t3dn`h<~8@7^L|d)KHL1 ze}W8xNdg2A*vnoHXZ{0SrUEUZ_(8!0HSimz@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;&`Cr=RCwBA{Qv(y12q9a05LI882|(j3n2xJjEp=$ zUwlF0Gntv0{Y6)I>eMMdAoU9%fLI6^=ETFpv=>P8f((Tjrjxc7uI9?DU>H*th+hK) z5DOl|(wrQ)X5N4Bo8ilsf1*JCH<-(i3}FzmDPVYaWCDn(4a8Rg0*D2NVIDx2&Ft+I zVKA|J1QOx_Vpb4CIdl?S-QCrB$l7Fp_%T2LF<~(*lZ}mW`_lOm3@S>j4AtdA47xh( zmw-}Je*E|WR>O5;Ha2&F!jJgz1R9!?lPNH{t5t-7lamoeE-v{6!_gC>3?d>T$g#Tx zNIeANi$Hu5Ab=P^1|nl1UT15$7oh-U)v zN+4be3JM@D1Y#FZI06I^Mx+1@1;u1BDE-;na;A0kyk~gy_z%O(DPj!jYHT1S!capw zf%qp7zXjs^Q2ZVsfEaOQJ)nUG!0 zfcQDkyOG|W+zhtPk3nM72$fC%0R(d)HxO&VybMZ*Kn%(T(<@2@|NHrHgTyKbxekN@ z0tlRJfJp>opga&808C$X-6moRSbzY68ORPz1|V-rL*<@A k6RS8-%_(9_Y=8g*0FLr@0@O3lmjD0&07*qoM6N<$f_(BtfB*mh literal 0 HcmV?d00001 diff --git a/src/SVTK/resources/vtk_view_scaling.png b/src/SVTK/resources/vtk_view_scaling.png new file mode 100644 index 0000000000000000000000000000000000000000..fa8cbbc71e4c929f859c045ef73c53a8e431fcad GIT binary patch literal 1128 zcmV-u1eg1XP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ<-bqA3RCwBAWME+U&wvRS8OQ_x0R+T(>KN|dzmIO{e|!cB3JNm3fB&8lAb?mvoPYm+0}cDluw~ADhHu}# zG5q-P10*a9#BYH3JIJtY+qN;tm^=cjy$r;^{{3V)KS_(hL0F$5wapM@7}#Kd0Ad0W zfB*kt_zP6vnkd5HlO@6M{X57E1{WY!2O0Kq(sG7hzkUH-|CQm)-_H!+fcVS=4TcXN zzcZw?8ZdMu9)>wo9Uy?fF8l*D4CGyq!OJ>sgIx&(hCng7LB{F@=9M24Za_ZLW*3q(Awn8@%T`x(Ra?aB=A+%Gfy`1g(BOpOi0 z_aA>4_O4B3@RrbI`1tKD+=T!E!~zR%5M0^ykm2XgpD3>Q_vJg#t6#vb26^@8|L+W6 zz5;{jFGStfA0HULe*XYh4-h~si0Ecy2rrWdht=fCNCy7+2@H}S41fOoVfYP>yuS?p z|NUk7_xBH2{>QIx3_pK=gR2J!AQnWL_zzAO%i8aux$qmSM44 zr-1U$nf5XKV*UkJ4-h~oUS0(ZLuis=Ko-BSN{7K9>@vf?A3)cA{ljpf#f-s4+zKc= zn?d-O6~o+ZWgw+On`RgZ&3zzHiG8lwhV)*wDHLox+F@tGj!$1Ha zfKXh>$iM`4B{FDiYy=YMDR4W(X#{63lEgQF00QUbOK%r}vmPu9nu+DY6yAhlbtuLM zKv8`YAb?O@xPIaja3pYYax!pnaV3LjW@csvMn*`afszgggVh7YKx~kDaKr)g|NsC0 z4FLiO6c7#RWxn8?qGry;plQj?!1`5*p=)Ij1M?SohNcC+3{0P885-t!1Nm|ct&9B` zSidPSv@G&xVE>`W(7rr?f$f_jL+6Shh6NLLX8;7?n9NZC1cD&gPZ0f+h~E$dUv997 z^c=3o1`ZQcQc)$9g%(I*1S?!wIIfhpHy^Hq6@qo(gwI*_q|P z00M{M{=1zFpFVzL`1z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ#c!2mTx`6-zgkd1auxNgMhW|&8GCa6=kpU#5v||TIsvD}L6iL4_ z5Whq=7$AUHK!k>x8Xu6#1me{nKYnCj0O8xW8D9SQ!C((GSX@-}%C{ds96x{l{1B*S znwY4l%HO|#-8k6UC;j{Xf7kODFXqAw1qdJ(sKFg6si~PeckJl!{qu+6|D#6?=RSXC z2)cHS!NJas!QI0{=jzp~3b8WS7q#>WS81A{kE-22Gk!Ktwj+7#X2^%Aa$}bGUtKj1^@&QIHv$(YZ^3R z!@;j#zc&B-_m7K%gToo_dZS2&&u<C;*u^AbP+VPriiDXITr zVqy$3GBONXwrl}sEp2V>FDB)e7#`g`&G78}28MU{PB6T_aR8)zC&)ZdDgxs5Kzt7% zfUp$~+#p2)z5)#Vm-rdDxw#n>Q}!}^czB-S{lha1*EZC_)a``QcY$~V5FZ1jB!B?I zTH1ih10Z$<;u%;{%UWnj!+`EOkN`jc;W7~9N$D2U!bMTJ*dkr!3qa} u0K#P;vH{9a!^M&0UP2AIi(Y&I1Q-C)H>OJ$<6_?c0000@}v&{ literal 0 HcmV?d00001 diff --git a/src/Style/images/critical.png b/src/Style/images/critical.png new file mode 100644 index 0000000000000000000000000000000000000000..3cf8e5b53a44dce2bc77379b86efdca75b47f120 GIT binary patch literal 2328 zcmW+&dr%YC9zMI9WCP??gP5q`ss$+o2?Z>0N3sDCya)tpdDTjIg(y@}v|2BcjlmGb zVpJ}oWy*qu8JhwnzbsRtg3}03mzh{o{AOnKN_d{J#0V-{ZI} zKAP>k+!+AC-V(DZ$${9rU@{zM(c#0>4sa@rNh<=th5s%faG^%vxTNJtvwttft* zc=p|k?3koD01kTsKxhD%qa64WfCFLxUdaIns|H}%o--Len*m@}Y}q8;cIelv1&We% z<1hiTvIKI#!$sK9)2C095y{EPCD^EQ&nw)dX&9mN25Eo%hAq6cO|%VDMc+w7!&)QB6N%SR)<14x~3AKWX_LBa>g>F=< zqNtmY)e5;=I5EQ~^9a!O5|BM6yfL=)>@`D2udXv8?Yx?<6b?KZY!}+8x$X|og@yAp zE1@OGkPW{pIy_&Q>0}O&P*f8dR=-sFv!s9nF|o@WkiMH?IdHu}5pn#x4-hnFojFOH z(Jru43r-C}X|Z9Hl*xgoqB@e8T_x*xAtQY{F{5Q{$P$4ky zLz2B3rr1?gEUAwVFH%}nLOtl197Y9!@Z3p!ua^N4NUPQkQ8>Ct*BT|{+IHm02KZvm zR8vNgx}q0Kf3qSq2*5ge?Dd>v8r~NwMk0aJC!?(=ATrF>d&02pU|R0t(*afxbP^{W#ZC4j46fXqWIesM#z|0!v(}986 zFH=*)Umx6`BS(+9nD3hK+PY6GSR#=~P@K`0Gay=Dv6>Q&9ZE?_VGO1;30fuw(dZDd zFt8X2~-r0%vE;{OoWZ2 z!kgi{tdI8mo^y*keIPOMJq=%68XkGX&cEx{sfiuebO$9$Pr5-Z?^Vu2H#&^d*oL6fNm~ z{N2aGE8xjEy)ky;9xfsn# zPzQVTLfBp6Hq8`#P0^oqi?dC|GjJKKY?Pw@bqe-dWKYle z%gxA&C6kZ2mZiO2edqi&N4WPVV$ZG5m7(_&zTUvDVGjQEB@)jk3z+r!`T4@@Y704Q z2gX{G6GAK40{Katecc>2;YRORK26oMnoQnT;%E(u1akGv%nXZ56zF@f@(sKH%Zwj? zfd?$bHWt0uDu?FTuX((00`oYU4`tg|cvEi52mdf2_;jWY;dGs$y%PfzY*~D||M=;> z_jZx6%x#|a#1#oL(v_*Xxt`va1V1-rJS4gOyU5w#V_{hiTC9%7s!Z#vC#-#V+mgqY zn`Rz3-|93XmB%0(-*PTQsvKUu97X%*X?)t2&<=2e&7r3vQui~aIm#tR&8SkOLf>^cd1;tn+a?PXxrXNLk#C=<-N_WEFrg=ln|zX~HFSvylITzD zkSAw{Fs?5IuN|h#18%dG+}>ZB>e^ILoJWR3zT2OenB~qG!&+LZ=G+4f<@;s%o6#{| z6xPo+s>~5XtFD*+NH-oN+$4GOL$si`EVCt0meH=cvzYG~bwPGMMl@Sps>zp(5#|oe z4bIvt54;Z<9x!wV@L=IbdL9VwlzPEdN;`JM$&~erTCoFtWUEs{CvMwhv6-zFm!M|5 zL!k|*c#Y={j&c?6vCfsyI_n0=$)otv& S=W@pu1GYrPZ@Lm8Kl(rI8_ekd literal 0 HcmV?d00001 diff --git a/src/Style/images/information.png b/src/Style/images/information.png new file mode 100644 index 0000000000000000000000000000000000000000..3cd976403a5ff4ddf25581e098b7aa7dc448e8dd GIT binary patch literal 2087 zcmW+%dpOhkAOGxP8=ILn8F4m>)&*ZCx0KB-DYeG$lrD^A*2xpORdV?<&9z*Lh-$j( zlp49!31dPL(nWQurR0_rDt9~U_s9GFdOz>yc|XtV^}KIsoNb#lHS{$A0GgXUT)8Tw z|27;(VV06h7(A;7s}sw#;NW_z&#C_fcDx8wBh3cd%|3xF6C0ALXS zGfEW>0}urPFv0`Cp#T8g&|LqA?f_uVZ+2z-9DNfwuT(n8Sx6WJ22y!|#6pb$RgBQi z%*=FMB?t=ojNs<8ZsD3cSRtVKPU5sSDFOS@yCFeYzd0QRkf|qdTTEadBq=50@L|27 z;bBXUEnAq7rKP1%D1;s)C@=KQOb!y95*GK@hJV(Oi?CYn5iiCtACIwGVc~-`0v)EZ z(@1-8!0e?Ox3H3~h5Q^%vXiioJPVvP73$s7zv*sKjrrRjagUCKi zVu64t&^-|yAHSGBIvOI*&L&AibIjaYHf8-0w5vYWUVhfXpK5GuOm*C_!KfNMiJSgz zi?`m1C{5NpqYjWb10+jrUiM*8%5NoN{QUf+ zg6z)_md?+9b;rMfI?#2oOB(XpN_?>Qwxu-HgE_C9D>8c1D=Mk3UOLJz@Y_|I*u1#7 z(B9qK+uE&AI1P7QbTX6N!jo81k_YOZ!O}sfJ>WKWMn9Py!nt%h=X9`85qF`lYWqe} zfATxRe7Oz_J0IZT<)s$9iANHdiR{t)i5;2E&90bj+d3U38!oYq-&4^XfEgAR7H1^b z1J1-4(#EI}iiEkHQo7cGK)*v=9_G->tJ}>YD;v^t`i`Z;1=)YM zC9pEqEH&F*X=i43vhVA^H6NPM5om_3o&783{DU||@j|>)o&0;yV4%3ya1|lIp@JaO zAY9<{(sTtg`DS~lx5~=cU&UoC1r0Hyo0^aWu|VVM<)*?e_T| ztzFnhlwR%OPwrwprT`jMG|=AKKujiIT2q5P8%A$uJ*-vT9h6iP(Ydbc!Un$Zz=42W zHHY4LNrJb5@pZ!XVKPaiZyx%48i2cyoMGtWh%5))&Ui`KmD1AE;K)d8QC60gC@)XP z?rOrqtWNO=y9E6g3^%igXr0gWu%9FU6RRXLN8i`YnRWMgbNrP_v$OcpcgQH&9vC>^ zKE*DPX+)vhR>Wt!z~K`td0b)$lXrTno0pg7-n)q(ZB0!v`SCJA|Gj2 z85W3f9buSKJUhRPvC`QPtj2Csjd}%&R|3*Ch#VtCI*~Du;^0XVmTPe8R+BP{&YgP` z85PxtFRQM$5kD!i6@8pBc-}-)(Sdg_>gdnYN`C07=!E84mYhKAJ`ao}gd5m)_u%k& z{1Q#X3Y|TsK=mt6rY|;rTGkma4*xQ@#}ujtcS8M53QsqlddiMv-B;E zp~U)(S>$&0sa9&2$56|{rY|obXESz-Qwfph?%C0n&yRctkOc7QuKHcKDYR7e)WK%A LZLYVSc}f2Pin4Ij literal 0 HcmV?d00001 diff --git a/src/Style/images/question.png b/src/Style/images/question.png new file mode 100644 index 0000000000000000000000000000000000000000..b42fc1c7f6718eb37e75b6aef5d8e7e49a5fec0b GIT binary patch literal 2188 zcmWlbdpOkV7RTS;jJYsB($(2OTzrd)F9GS zwvfwI4xO^2+MVhgA)_RANtc}xW;AqB*j>yZbEZGm`o7QmJZnAAde{4W)+*p{+hl5D zZ2|x=4diVMHYoDL$V7ur$;|v>5aWHkohblN7X2^?R8%qymqvTITe$#SDbAYx`P7ey z-Mrwf0AxAt=_(S$L0kEaae3NTO<;(n#KBRmG1Kx>?59!y_u{rQA$Y*2BBx4i0XrA zCnjnxfDw$rEuifp1J~z-;PUqN_VS#Z9Qf0xPXfvbKln_`aXX(?OrM-e;rE%Z$c!6b zMC`TC=25x(X($k;f!@EaWIVPGn1#6%$7!65)h|1jl%+ zCtEvd@0XOcQaO10&<*^Nc%1E3!h67o2V}&Y1YAdrf^WOIxs{umn!;XQUi&Cq#v6H9 zV-&lm#-~O&U40A=xOWw9U&4gzw{M6QXjin;EG+KQ%*^h9?w82SP^%awQJDfqH@A50 zw~xD^Ub82XV7)@?gMzc3f{4V##N|A8&kZCXQHNZDjj!bOftv`xEU;sW^EmZVU%Vp<#dbb;#C^fc`Ku-?l0!x%d}BBFf* zky3CetTFezIb-2Vv3{PQsf-3thtb#dKCGM06%`f3rBatTp%Cg~H(j~HZiu{f(%w6; z>dw9DW2%YPJXk!x0jN7+vAz|k-BHRQdrtSc%HAWYNci}iKa5g_N85UUMp0A*%QHNB zBixX95*Z2SmRK^G@bQ$gMxk|ofBzjSxll!ln31bG8#lr9hp%JuO(ExIbWdtv^}~0PJWT# zl}~2>1E;M?xwCU>x`qx%4)nlDQTmt+-5g!{(Pqf1wzihxEuM!D02dEIF+VhvIK|bK z(h-cm+4s%OJfU2JScj0)($XZ^)0%F&th#!!>{R_}PDB4i<>cqiXvGn+m3NL-xljFK z4{=i-(xgGU(f1NA)!pU|SM(GMUc12X3w(!{H#{C&cz!+)#QmMvS_EcG*ADT!8&q_$+6`wg?x6H=`m7LbfLqV+&$ z7A*G4Kk-%IfUF`G_#FKEFqeDc4A=K0UeqO)O$_N*HAH`wN%Fc&?7h60=V6qnxUfF; zE$#lI16U;0z>Qp|>RXBZt7O}2yoKTUQAScG;^;_*)jn{L<-qRnbz=l&-Ss4^%TY5A zz~=h{0|S$(cnUZ6THTg%oD+$P7RFd&0Otu9TUKImnFr$H90n`QO646L9SrYg{hv*# zsuWq;r6|t$>+jX7C!MXs=F|sQnM~$BIOx8j*T`aHRaF%-WOt<8n1)Ugjak>%;tF3L zQFs9Jq_^DsNEe@+xiT)dKq}NMca{BgZHHBbrv)SA={l>uum4L(2ab;=zPRvgsV$WJ z<@TXzM)U34T#YhRG$##K+ZoF9y|_dVxn2gPF+qKOeT>1DY|3^oR?&FAfrsqoOkJVs z^{b&agz)d(pir6xCxiRRG~#;Eqv{Rtw{PDR>B?=2iQ|4BBsJ(99>D}@(4s%~+`Ks8?Y7i{OSL@>*&tv-F4K5oo^ zeRcoHJx}yeB~ERFer|=PRvOC#R;M z(=yg3>_KiJePwQ8B)^)za3OAXafzI({$Kh>+z#agR$7gpnPEKrOA-HS4?^^ZE@-|G z5lnt*H{Y=-_bTzikLe)y!;($V&J28iT^q84Xu%5z2pCqly1EiNSKenMZ~|rER>~Nu zx2F@$G8O68@L7J+S^*^{iQ>ZWVUOGe`MR^kD#GKoj8LPCBq4j(u3dR| z3+d8Du8zx`oSYbIlLnhfZ%4ZM6t32J;dcYD`Q$94BSb?I_inwPv(ASfCYCti2+y1y zbBLyWzoS8?ZN0O!h~qKr!6AOL^aYyttMAt(yS`bz%p{gi5#Jw@54dB%cY;2bcVjhw zA8O5r+svC8Yj`D=oF;@2?`Po`qJM`}q33@m#%OPPV4Y z(3d^em|gZgJgQLA*TAEWY<$o%k4D&tMyZ0;RTA0oCdcmbqfS_>OP%_aJh literal 0 HcmV?d00001 diff --git a/src/Style/images/warning.png b/src/Style/images/warning.png new file mode 100644 index 0000000000000000000000000000000000000000..471ec5888e56d90e8a2c951d974761f539e11c19 GIT binary patch literal 2198 zcmWkwX;f2L625r}*?1vfB0JZdT^vkFsy-%n ze0+9Z2zZ#VV}FC)z~Z1ziyp>PDB+Uj#qaDCr|0G@MlF1+YH3j#fawWq(%x8JTK_|7 z*(y>%pCzKuKHnuuYGPpY4Z0cqt2m2y>_}I@YCIesbhmn?hjo1T%Erl^Z0ur02A}0YoG*FP-V-^#%R- za}&C!r5Ux-Xy((`tzA^dhfgW)UYQVNTU4RW_V#G2di_#k&D!NgvG@=v`hu}i8%WKfQuWyC_ z@1F?UJyulk4NIs&AwWNxyj!MF#Db?G7(^&7(&aT27suANGDbsDfr!RXDFo(2irj;| zoVjw5rq@)WRXRH)2M`Ff(9B|-TW~mZw=RTWal&2uQnhj+@beAFA`pe4}dT2(0-~=wyF|09GrOll1e`oX~x1{OBPf z+nh>!kp>uvx&P|)0Su=6T~p#VS+Am7Z00s%sx#&i$%Z*?cb8y((O0!ihTQ}?0Pp$f zCkkbyzF*eTJvjchx0MWw(_9F0+4)+4Ipc-%K3j6j8i#wTtn*><2?67Ftb1&B;KD4$ z9z{iubdISrt_a_>ConJyR(FLqLAbLey*3?p>vu_|(%MVkizq>!#%s~c)TeLUIGY?E z_691OC;hp662E$?Q3(|mYbHk;d4yaLZZhy%Eu5id;Rpn#YNQcWvT;y#bsGG(zDb#1 zvc_V6NEVmo66kK6G%4Yyq(p;C$Dq&2Vk%}_<&Jvnoe2)M)!aul-I`$21$i3G?&yO? z!;fuB!AC!v(l(;w!+kwH14;pT^S& zB`3qLYPmxKp@VXGsUkS);!1lh^3bES6y^vweE#fHknK8P!F7^NA_NvYBg-2zO-C?HANzBMsFhk#@CfeHa=J`}D!Zzy6A$H(j|1lVxIE~0cjx<1 zY(MBL;Z$7b(t)O5Vu|}+N|@E1rE%i-4c#q_JU@7C>?HZ;q&~+ z!_}p2!|;O#@0BMot{pBDQwQeHP_lByXPcv0XdQ|HpKZo_0GzdW7q-zEp ztX(NdP#E&tt*_r%oTEzp10VodeuiTjhilU z;2{lruJYSa+@P5`cUYdXduMC&#SYx44plx7Ybce*ZT8`r7h)i6AjS_vrZ(p2(%p1e z(Sjb-lka@M$Xzz^048IE1t+&C)phM|zz` z>%hC9apVGaL9X@#GtQdEG&{b$QRel6mAjz-r{<5-vP%rqJ9m-n4c=@s$G0h<+j5qv z%8B>9bzU#l;1<&*CqI?KKb;61??ACFmDb8G$zDT+X6Us-nPu9@w3=rR9u>$Ocxf0g73&x;dj(qsk6!AA{+3G&nV)R+NG9j|XBrQTWu>_B|ZfIc&*zfmT68q!N3=F;E{6wrdwXZRXmD zc>=mXagRe9>SdAVEZ%{P;yJ6Bse;^vX)C#Y8T&&rv^_Z~Dc>bx_v(zqGjB1gc)NKd z-Naye^!4Ys@NSL}KvspyR4MUhM3z`29#klhUeqS~zon&8Pf}$d?(&b~0D8WYqn>J2 zc;=<5kfX)?`2kw}@gczAZrBEUQr952NIeiY5@TLA){_$KXVUCmcyPk@BPWIi{~QO` zVf&UH5K7u3RwtH-bYNwcqOEI!5leg`KQ$?zwk?}{wSshOW1sM`JzChjd5OBeuVB9~ z!>Blu?X;Vap8U-hYOE8jZq}Y@S(-K|@TgPi1 #include #include +#include +#include +#include #ifdef _DEBUG_ static int DEBUG_TRIA_EXECUTE = 0; @@ -81,31 +84,117 @@ namespace typedef std::vector TPolygons; } -/*! - Constructor -*/ + +//---------------------------------------------------------------------------- VTKViewer_Triangulator ::VTKViewer_Triangulator(): - myInput(NULL), - myCellId(-1), - myShowInside(-1), - myAllVisible(-1), - myCellsVisibility(NULL), - myCellIds(vtkIdList::New()) + myCellIds(vtkIdList::New()), + myFaceIds(vtkIdList::New()), + myPoints(vtkPoints::New()), + myPointIds(NULL) {} -/*! - Destructor -*/ +//---------------------------------------------------------------------------- VTKViewer_Triangulator ::~VTKViewer_Triangulator() { myCellIds->Delete(); + myFaceIds->Delete(); + myPoints->Delete(); +} + + +//---------------------------------------------------------------------------- +vtkPoints* +VTKViewer_Triangulator +::InitPoints(vtkUnstructuredGrid *theInput, + vtkIdType theCellId) +{ + myPoints->Reset(); + myPoints->Modified(); // the VTK bug + + vtkIdType aNumPts; + theInput->GetCellPoints(theCellId, aNumPts, myPointIds); + if ( aNumPts > 0 ) { + vtkFloatingPointType anAbsoluteCoord[3]; + myPoints->SetNumberOfPoints(aNumPts); + vtkPoints *anInputPoints = theInput->GetPoints(); + for (int aPntId = 0; aPntId < aNumPts; aPntId++) { + anInputPoints->GetPoint(myPointIds[aPntId], anAbsoluteCoord); + myPoints->SetPoint(aPntId, anAbsoluteCoord); + } + } + + return myPoints; +} + + +//---------------------------------------------------------------------------- +vtkIdType +VTKViewer_Triangulator +::GetNbOfPoints() +{ + return myPoints->GetNumberOfPoints(); } +//---------------------------------------------------------------------------- +vtkIdType +VTKViewer_Triangulator +::GetPointId(vtkIdType thePointId) +{ + return thePointId; +} + +//---------------------------------------------------------------------------- +vtkFloatingPointType +VTKViewer_Triangulator +::GetCellLength() +{ + vtkFloatingPointType aBounds[6]; + myPoints->GetBounds(aBounds); + + vtkFloatingPointType aCoordDiff[3]; + aCoordDiff[0] = (aBounds[1] - aBounds[0]); + aCoordDiff[1] = (aBounds[3] - aBounds[2]); + aCoordDiff[2] = (aBounds[5] - aBounds[4]); + + return sqrt(aCoordDiff[0]*aCoordDiff[0] + + aCoordDiff[1]*aCoordDiff[1] + + aCoordDiff[2]*aCoordDiff[2]); +} + + +//---------------------------------------------------------------------------- +void +VTKViewer_Triangulator +::GetCellNeighbors(vtkUnstructuredGrid *theInput, + vtkIdType theCellId, + vtkCell* theFace, + vtkIdList* theCellIds) +{ + myFaceIds->Reset(); + vtkIdList *anIdList = theFace->PointIds; + myFaceIds->InsertNextId(myPointIds[anIdList->GetId(0)]); + myFaceIds->InsertNextId(myPointIds[anIdList->GetId(1)]); + myFaceIds->InsertNextId(myPointIds[anIdList->GetId(2)]); + + theInput->GetCellNeighbors(theCellId, myFaceIds, theCellIds); +} + + +//---------------------------------------------------------------------------- +vtkIdType +VTKViewer_Triangulator +::GetConnectivity(vtkIdType thePntId) +{ + return myPointIds[thePntId]; +} + + +//---------------------------------------------------------------------------- bool VTKViewer_Triangulator ::Execute(vtkUnstructuredGrid *theInput, @@ -120,13 +209,7 @@ VTKViewer_Triangulator std::vector& theVTK2ObjIds, bool theIsCheckConvex) { - myInput = theInput; - myCellId = theCellId; - myShowInside = theShowInside; - myAllVisible = theAllVisible; - myCellsVisibility = theCellsVisibility; - - vtkPoints *aPoints = InitPoints(); + vtkPoints *aPoints = InitPoints(theInput, theCellId); vtkIdType aNumPts = GetNbOfPoints(); if(DEBUG_TRIA_EXECUTE) cout<<"Triangulator - aNumPts = "< TPointIds; @@ -172,9 +255,9 @@ VTKViewer_Triangulator for (int aFaceId = 0; aFaceId < aNumFaces; aFaceId++) { vtkCell* aFace = GetFace(aFaceId); - GetCellNeighbors(theCellId, aFace, myCellIds); - if((!myAllVisible && !myCellsVisibility[myCellIds->GetId(0)]) || - myCellIds->GetNumberOfIds() <= 0 || myShowInside) + GetCellNeighbors(theInput, theCellId, aFace, myCellIds); + if((!theAllVisible && !theCellsVisibility[myCellIds->GetId(0)]) || + myCellIds->GetNumberOfIds() <= 0 || theShowInside) { TPointIds aPointIds; vtkIdList *anIdList = aFace->PointIds; @@ -320,9 +403,9 @@ VTKViewer_Triangulator aCenter[0] += aPntCoord[0]; aCenter[1] += aPntCoord[1]; aCenter[2] += aPntCoord[2]; - if(DEBUG_TRIA_EXECUTE) cout << "Added = TRUE" << endl; + if(DEBUG_TRIA_EXECUTE) cout << "; Added = TRUE" << endl; } else { - if(DEBUG_TRIA_EXECUTE) cout << "Added = FALSE" << endl; + if(DEBUG_TRIA_EXECUTE) cout << "; Added = FALSE" << endl; } } int aNbPoints = aPointIds.size(); @@ -512,171 +595,144 @@ VTKViewer_Triangulator return true; } -/*! - Constructor -*/ + +//---------------------------------------------------------------------------- VTKViewer_OrderedTriangulator ::VTKViewer_OrderedTriangulator(): - myCell(vtkGenericCell::New()) -{} + myTriangulator(vtkOrderedTriangulator::New()), + myBoundaryTris(vtkCellArray::New()), + myTriangle(vtkTriangle::New()) +{ + myBoundaryTris->Allocate(VTK_CELL_SIZE); + myTriangulator->PreSortedOff(); +} -/*! - Destructor -*/ + +//---------------------------------------------------------------------------- VTKViewer_OrderedTriangulator ::~VTKViewer_OrderedTriangulator() { - myCell->Delete(); + myTriangle->Delete(); + myBoundaryTris->Delete(); + myTriangulator->Delete(); } + +//---------------------------------------------------------------------------- vtkPoints* VTKViewer_OrderedTriangulator -::InitPoints() +::InitPoints(vtkUnstructuredGrid *theInput, + vtkIdType theCellId) { - myInput->GetCell(myCellId,myCell); - return myInput->GetPoints(); -} + myBoundaryTris->Reset(); -vtkIdType -VTKViewer_OrderedTriangulator -::GetNbOfPoints() -{ - return myCell->GetNumberOfPoints(); -} + vtkPoints* aPoints = VTKViewer_Triangulator::InitPoints(theInput, theCellId); + vtkIdType aNumPts = myPoints->GetNumberOfPoints(); + if ( aNumPts > 0 ) { + myTriangulator->InitTriangulation(0.0, 1.0, 0.0, 1.0, 0.0, 1.0, aNumPts); -vtkIdType -VTKViewer_OrderedTriangulator -::GetPointId(vtkIdType thePointId) -{ - return myCell->GetPointId(thePointId); -} + vtkFloatingPointType aBounds[6]; + myPoints->GetBounds(aBounds); -vtkFloatingPointType -VTKViewer_OrderedTriangulator -::GetCellLength() -{ - return sqrt(myCell->GetLength2()); + vtkFloatingPointType anAbsoluteCoord[3]; + vtkFloatingPointType aParamentrucCoord[3]; + for (int aPntId = 0; aPntId < aNumPts; aPntId++) { + myPoints->GetPoint(aPntId, anAbsoluteCoord); + aParamentrucCoord[0] = (anAbsoluteCoord[0] - aBounds[0]) / (aBounds[1] - aBounds[0]); + aParamentrucCoord[1] = (anAbsoluteCoord[1] - aBounds[2]) / (aBounds[3] - aBounds[2]); + aParamentrucCoord[2] = (anAbsoluteCoord[2] - aBounds[4]) / (aBounds[5] - aBounds[4]); + myTriangulator->InsertPoint(aPntId, anAbsoluteCoord, aParamentrucCoord, 0); + } + + myTriangulator->Triangulate(); + myTriangulator->AddTriangles(myBoundaryTris); + } + + return aPoints; } + +//---------------------------------------------------------------------------- vtkIdType VTKViewer_OrderedTriangulator ::GetNumFaces() { - return myCell->GetNumberOfFaces(); + return myBoundaryTris->GetNumberOfCells(); } + +//---------------------------------------------------------------------------- vtkCell* VTKViewer_OrderedTriangulator ::GetFace(vtkIdType theFaceId) { - return myCell->GetFace(theFaceId); -} + vtkIdType aNumCells = myBoundaryTris->GetNumberOfCells(); + if ( theFaceId < 0 || theFaceId >= aNumCells ) + return NULL; -void -VTKViewer_OrderedTriangulator -::GetCellNeighbors(vtkIdType theCellId, - vtkCell* theFace, - vtkIdList* theCellIds) -{ - vtkIdList *anIdList = theFace->PointIds; - myInput->GetCellNeighbors(theCellId, anIdList, theCellIds); -} + vtkIdType *aCells = myBoundaryTris->GetPointer(); -vtkIdType -VTKViewer_OrderedTriangulator -::GetConnectivity(vtkIdType thePntId) -{ - return thePntId; + // Each triangle has three points plus number of points + vtkIdType *aCellPtr = aCells + 4*theFaceId; + + myTriangle->PointIds->SetId(0, aCellPtr[1]); + myTriangle->Points->SetPoint(0, myPoints->GetPoint(aCellPtr[1])); + + myTriangle->PointIds->SetId(1, aCellPtr[2]); + myTriangle->Points->SetPoint(1, myPoints->GetPoint(aCellPtr[2])); + + myTriangle->PointIds->SetId(2, aCellPtr[3]); + myTriangle->Points->SetPoint(2, myPoints->GetPoint(aCellPtr[3])); + + return myTriangle; } -/*! - Constructor -*/ + +//---------------------------------------------------------------------------- VTKViewer_DelaunayTriangulator ::VTKViewer_DelaunayTriangulator(): myUnstructuredGrid(vtkUnstructuredGrid::New()), myGeometryFilter(vtkGeometryFilter::New()), myDelaunay3D(vtkDelaunay3D::New()), - myFaceIds(vtkIdList::New()), - myPoints(vtkPoints::New()), - myPolyData(NULL), - myPointIds(NULL) + myPolyData(NULL) { + myUnstructuredGrid->Initialize(); + myUnstructuredGrid->Allocate(); + myUnstructuredGrid->SetPoints(myPoints); + myDelaunay3D->SetInput(myUnstructuredGrid); myGeometryFilter->SetInput(myDelaunay3D->GetOutput()); + myPolyData = myGeometryFilter->GetOutput(); } - -/*! - Destructor -*/ +//---------------------------------------------------------------------------- VTKViewer_DelaunayTriangulator ::~VTKViewer_DelaunayTriangulator() { myUnstructuredGrid->Delete(); myGeometryFilter->Delete(); myDelaunay3D->Delete(); - myFaceIds->Delete(); - myPoints->Delete(); } +//---------------------------------------------------------------------------- vtkPoints* VTKViewer_DelaunayTriangulator -::InitPoints() +::InitPoints(vtkUnstructuredGrid *theInput, + vtkIdType theCellId) { - myPoints->Reset(); - myUnstructuredGrid->Initialize(); - myUnstructuredGrid->Allocate(); - myUnstructuredGrid->SetPoints(myPoints); - - vtkIdType aNumPts; - myInput->GetCellPoints(myCellId,aNumPts,myPointIds); - - if ( aNumPts < myPoints->GetNumberOfPoints() ) - myPoints->Reset(); - - { - vtkFloatingPointType aPntCoord[3]; - myPoints->SetNumberOfPoints(aNumPts); - vtkPoints *anInputPoints = myInput->GetPoints(); - for (int aPntId = 0; aPntId < aNumPts; aPntId++) { - anInputPoints->GetPoint(myPointIds[aPntId],aPntCoord); - myPoints->SetPoint(aPntId,aPntCoord); - } - } + vtkPoints* aPoints = VTKViewer_Triangulator::InitPoints(theInput, theCellId); myPoints->Modified(); myUnstructuredGrid->Modified(); - myGeometryFilter->Update(); - myPolyData = myGeometryFilter->GetOutput(); - return myPoints; -} - -vtkIdType -VTKViewer_DelaunayTriangulator -::GetNbOfPoints() -{ - return myPoints->GetNumberOfPoints(); + return aPoints; } -vtkIdType -VTKViewer_DelaunayTriangulator -::GetPointId(vtkIdType thePointId) -{ - return thePointId; -} - -vtkFloatingPointType -VTKViewer_DelaunayTriangulator -::GetCellLength() -{ - return myPolyData->GetLength(); -} +//---------------------------------------------------------------------------- vtkIdType VTKViewer_DelaunayTriangulator ::GetNumFaces() @@ -684,32 +740,11 @@ VTKViewer_DelaunayTriangulator return myPolyData->GetNumberOfCells(); } + +//---------------------------------------------------------------------------- vtkCell* VTKViewer_DelaunayTriangulator ::GetFace(vtkIdType theFaceId) { return myPolyData->GetCell(theFaceId); } - -void -VTKViewer_DelaunayTriangulator -::GetCellNeighbors(vtkIdType theCellId, - vtkCell* theFace, - vtkIdList* theCellIds) -{ - myFaceIds->Reset(); - vtkIdList *anIdList = theFace->PointIds; - myFaceIds->InsertNextId(myPointIds[anIdList->GetId(0)]); - myFaceIds->InsertNextId(myPointIds[anIdList->GetId(1)]); - myFaceIds->InsertNextId(myPointIds[anIdList->GetId(2)]); - - myInput->GetCellNeighbors(theCellId, myFaceIds, theCellIds); -} - - -vtkIdType -VTKViewer_DelaunayTriangulator -::GetConnectivity(vtkIdType thePntId) -{ - return myPointIds[thePntId]; -} diff --git a/src/VTKViewer/VTKViewer_ConvexTool.h b/src/VTKViewer/VTKViewer_ConvexTool.h index 2bf024d5e..5e391d976 100644 --- a/src/VTKViewer/VTKViewer_ConvexTool.h +++ b/src/VTKViewer/VTKViewer_ConvexTool.h @@ -36,7 +36,12 @@ class vtkCellData; class vtkPoints; class vtkIdList; class vtkCell; +class vtkCellArray; +class vtkTriangle; +class vtkOrderedTriangulator; + +//---------------------------------------------------------------------------- class VTKVIEWER_EXPORT VTKViewer_Triangulator { public: @@ -57,51 +62,48 @@ class VTKVIEWER_EXPORT VTKViewer_Triangulator std::vector& theVTK2ObjIds, bool theIsCheckConvex); - protected: + private: vtkIdList* myCellIds; - vtkUnstructuredGrid *myInput; - vtkIdType myCellId; - int myShowInside; - int myAllVisible; - const char* myCellsVisibility; + protected: + vtkIdType *myPointIds; + vtkIdList* myFaceIds; + vtkPoints* myPoints; virtual vtkPoints* - InitPoints() = 0; + InitPoints(vtkUnstructuredGrid *theInput, + vtkIdType theCellId); virtual vtkIdType - GetNbOfPoints() = 0; + GetNumFaces() = 0; virtual - vtkIdType - GetPointId(vtkIdType thePointId) = 0; + vtkCell* + GetFace(vtkIdType theFaceId) = 0; - virtual - vtkFloatingPointType - GetCellLength() = 0; + vtkIdType + GetNbOfPoints(); - virtual vtkIdType - GetNumFaces() = 0; + GetPointId(vtkIdType thePointId); - virtual - vtkCell* - GetFace(vtkIdType theFaceId) = 0; + vtkFloatingPointType + GetCellLength(); - virtual void - GetCellNeighbors(vtkIdType theCellId, + GetCellNeighbors(vtkUnstructuredGrid *theInput, + vtkIdType theCellId, vtkCell* theFace, - vtkIdList* theCellIds) = 0; + vtkIdList* theCellIds); - virtual vtkIdType - GetConnectivity(vtkIdType thePntId) = 0; + GetConnectivity(vtkIdType thePntId); }; +//---------------------------------------------------------------------------- class VTKVIEWER_EXPORT VTKViewer_OrderedTriangulator : public VTKViewer_Triangulator { public: @@ -111,22 +113,14 @@ class VTKVIEWER_EXPORT VTKViewer_OrderedTriangulator : public VTKViewer_Triangul ~VTKViewer_OrderedTriangulator(); protected: - vtkGenericCell *myCell; + vtkOrderedTriangulator *myTriangulator; + vtkCellArray *myBoundaryTris; + vtkTriangle *myTriangle; virtual vtkPoints* - InitPoints(); - - virtual - vtkIdType - GetNbOfPoints(); - - vtkIdType - GetPointId(vtkIdType thePointId); - - virtual - vtkFloatingPointType - GetCellLength(); + InitPoints(vtkUnstructuredGrid *theInput, + vtkIdType theCellId); virtual vtkIdType @@ -135,19 +129,10 @@ class VTKVIEWER_EXPORT VTKViewer_OrderedTriangulator : public VTKViewer_Triangul virtual vtkCell* GetFace(vtkIdType theFaceId); - - virtual - void - GetCellNeighbors(vtkIdType theCellId, - vtkCell* theFace, - vtkIdList* theCellIds); - - virtual - vtkIdType - GetConnectivity(vtkIdType thePntId); }; +//---------------------------------------------------------------------------- class VTKVIEWER_EXPORT VTKViewer_DelaunayTriangulator : public VTKViewer_Triangulator { public: @@ -161,24 +146,11 @@ class VTKVIEWER_EXPORT VTKViewer_DelaunayTriangulator : public VTKViewer_Triangu vtkGeometryFilter* myGeometryFilter; vtkDelaunay3D* myDelaunay3D; vtkPolyData* myPolyData; - vtkIdType *myPointIds; - vtkIdList* myFaceIds; - vtkPoints* myPoints; virtual vtkPoints* - InitPoints(); - - virtual - vtkIdType - GetNbOfPoints(); - - vtkIdType - GetPointId(vtkIdType thePointId); - - virtual - vtkFloatingPointType - GetCellLength(); + InitPoints(vtkUnstructuredGrid *theInput, + vtkIdType theCellId); virtual vtkIdType @@ -187,16 +159,6 @@ class VTKVIEWER_EXPORT VTKViewer_DelaunayTriangulator : public VTKViewer_Triangu virtual vtkCell* GetFace(vtkIdType theFaceId); - - virtual - void - GetCellNeighbors(vtkIdType theCellId, - vtkCell* theFace, - vtkIdList* theCellIds); - - virtual - vtkIdType - GetConnectivity(vtkIdType thePntId); }; diff --git a/src/VTKViewer/VTKViewer_GeometryFilter.cxx b/src/VTKViewer/VTKViewer_GeometryFilter.cxx index 50cade3f1..3d6182e96 100755 --- a/src/VTKViewer/VTKViewer_GeometryFilter.cxx +++ b/src/VTKViewer/VTKViewer_GeometryFilter.cxx @@ -474,6 +474,7 @@ VTKViewer_GeometryFilter case VTK_QUADRATIC_QUAD: case VTK_QUADRATIC_TETRA: case VTK_QUADRATIC_HEXAHEDRON: + case VTK_QUADRATIC_WEDGE: if(!myIsWireframeMode){ input->GetCell(cellId,cell); vtkIdList *pts = vtkIdList::New(); @@ -650,6 +651,82 @@ VTKViewer_GeometryFilter break; } + case VTK_QUADRATIC_WEDGE: { + aCellType = VTK_POLYGON; + numFacePts = 6; + //--------------------------------------------------------------- + //Face 1 + aNewPts[0] = pts[0]; + aNewPts[1] = pts[6]; + aNewPts[2] = pts[1]; + aNewPts[3] = pts[7]; + aNewPts[4] = pts[2]; + aNewPts[5] = pts[8]; + newCellId = output->InsertNextCell(aCellType,numFacePts,aNewPts); + if(myStoreMapping) + myVTK2ObjIds.push_back(cellId); + outputCD->CopyData(cd,cellId,newCellId); + + //--------------------------------------------------------------- + //Face 2 + aNewPts[0] = pts[3]; + aNewPts[1] = pts[9]; + aNewPts[2] = pts[4]; + aNewPts[3] = pts[10]; + aNewPts[4] = pts[5]; + aNewPts[5] = pts[11]; + newCellId = output->InsertNextCell(aCellType,numFacePts,aNewPts); + if(myStoreMapping) + myVTK2ObjIds.push_back(cellId); + outputCD->CopyData(cd,cellId,newCellId); + + //--------------------------------------------------------------- + //Face 3 + numFacePts = 8; + aNewPts[0] = pts[0]; + aNewPts[1] = pts[8]; + aNewPts[2] = pts[2]; + aNewPts[3] = pts[14]; + aNewPts[4] = pts[5]; + aNewPts[5] = pts[11]; + aNewPts[6] = pts[3]; + aNewPts[7] = pts[12]; + newCellId = output->InsertNextCell(aCellType,numFacePts,aNewPts); + if(myStoreMapping) + myVTK2ObjIds.push_back(cellId); + outputCD->CopyData(cd,cellId,newCellId); + + //--------------------------------------------------------------- + //Face 4 + aNewPts[0] = pts[1]; + aNewPts[1] = pts[13]; + aNewPts[2] = pts[4]; + aNewPts[3] = pts[10]; + aNewPts[4] = pts[5]; + aNewPts[5] = pts[14]; + aNewPts[6] = pts[2]; + aNewPts[7] = pts[7]; + newCellId = output->InsertNextCell(aCellType,numFacePts,aNewPts); + if(myStoreMapping) + myVTK2ObjIds.push_back(cellId); + outputCD->CopyData(cd,cellId,newCellId); + + //--------------------------------------------------------------- + //Face 5 + aNewPts[0] = pts[0]; + aNewPts[1] = pts[12]; + aNewPts[2] = pts[3]; + aNewPts[3] = pts[9]; + aNewPts[4] = pts[4]; + aNewPts[5] = pts[13]; + aNewPts[6] = pts[1]; + aNewPts[7] = pts[6]; + newCellId = output->InsertNextCell(aCellType,numFacePts,aNewPts); + if(myStoreMapping) + myVTK2ObjIds.push_back(cellId); + outputCD->CopyData(cd,cellId,newCellId); + break; + } case VTK_QUADRATIC_HEXAHEDRON: { aCellType = VTK_POLYGON; numFacePts = 8; @@ -771,6 +848,8 @@ VTKViewer_GeometryFilter { delete [] cellVis; } + + return 1; } diff --git a/src/VTKViewer/VTKViewer_Trihedron.cxx b/src/VTKViewer/VTKViewer_Trihedron.cxx index f50d67b30..7781f1b57 100755 --- a/src/VTKViewer/VTKViewer_Trihedron.cxx +++ b/src/VTKViewer/VTKViewer_Trihedron.cxx @@ -80,8 +80,12 @@ void VTKViewer_UnScaledActor::Render(vtkRenderer *theRenderer) vtkFloatingPointType aLength = aDataSet->GetLength(); vtkFloatingPointType aPrecision = 1.0E-3; vtkFloatingPointType anOldScale = GetScale()[0]; - vtkFloatingPointType aScale = mySize*aWorldDiag/aWinDiag/aLength*sqrt(vtkFloatingPointType(aSize[0])/vtkFloatingPointType(aSize[1])); - if(fabs(aScale - anOldScale)/aScale > aPrecision){ + vtkFloatingPointType aScale; + if (aSize[1] > aSize[0]) + aScale = mySize*aWorldDiag/aWinDiag/aLength*sqrt(vtkFloatingPointType(aSize[0])/vtkFloatingPointType(aSize[1])); + else + aScale = mySize*aWorldDiag/aWinDiag/aLength*sqrt(vtkFloatingPointType(aSize[1])/vtkFloatingPointType(aSize[0])); + if(aScale != 0.0&& fabs(aScale - anOldScale)/aScale > aPrecision){ SetScale(aScale); } } diff --git a/src/VTKViewer/VTKViewer_ViewManager.cxx b/src/VTKViewer/VTKViewer_ViewManager.cxx index 0e3f32bb7..a206be6ee 100755 --- a/src/VTKViewer/VTKViewer_ViewManager.cxx +++ b/src/VTKViewer/VTKViewer_ViewManager.cxx @@ -19,9 +19,6 @@ #include "VTKViewer_ViewManager.h" #include "VTKViewer_ViewModel.h" -#include -#include - /*!Constructor.Initialize SIUT_ViewManager by \a study and \a theDesktop. * Create new instance of VTKViewer_Viewer and set view model by it. */ @@ -36,37 +33,3 @@ VTKViewer_ViewManager::~VTKViewer_ViewManager() { /*!Do nothing.*/ } - -/*! - Fills preference manager for viewer -*/ -int VTKViewer_ViewManager::fillPreferences( SUIT_PreferenceMgr* thePrefMgr, const int theId ) -{ - int aGrpId = thePrefMgr->addItem( tr( "PREF_GROUP_VTKVIEWER" ), theId, - SUIT_PreferenceMgr::GroupBox ); - - int vtkTS = thePrefMgr->addItem( tr( "PREF_TRIHEDRON_SIZE" ), aGrpId, - SUIT_PreferenceMgr::DblSpin, "VTKViewer", "trihedron_size" ); - thePrefMgr->addItem( tr( "PREF_RELATIVE_SIZE" ), aGrpId, SUIT_PreferenceMgr::Bool, - "VTKViewer", "relative_size" ); - thePrefMgr->addItem( tr( "PREF_VIEWER_BACKGROUND" ), aGrpId, - SUIT_PreferenceMgr::Color, "VTKViewer", "background" ); - - thePrefMgr->setItemProperty( "min", 1.0E-06, vtkTS ); - thePrefMgr->setItemProperty( "max", 150, vtkTS ); - - return aGrpId; -} - -/** - * Fills values from resources - */ -void VTKViewer_ViewManager::fillFrom( SUIT_ResourceMgr* theMgr ) -{ - VTKViewer_Viewer* aModel = dynamic_cast( getViewModel() ); - if ( !aModel ) - return; - - aModel->setBackgroundColor( theMgr->colorValue( "VTKViewer", "background", - aModel->backgroundColor() ) ); -} diff --git a/src/VTKViewer/VTKViewer_ViewManager.h b/src/VTKViewer/VTKViewer_ViewManager.h index c8e200817..debd7987e 100755 --- a/src/VTKViewer/VTKViewer_ViewManager.h +++ b/src/VTKViewer/VTKViewer_ViewManager.h @@ -35,9 +35,6 @@ class VTKVIEWER_EXPORT VTKViewer_ViewManager : public SUIT_ViewManager public: VTKViewer_ViewManager( SUIT_Study* study, SUIT_Desktop* ); virtual ~VTKViewer_ViewManager(); - - static int fillPreferences( SUIT_PreferenceMgr*, const int ); - void fillFrom( SUIT_ResourceMgr* ); }; #endif diff --git a/src/VTKViewer/VTKViewer_ViewWindow.cxx b/src/VTKViewer/VTKViewer_ViewWindow.cxx index ead79fd57..6f462e3e2 100755 --- a/src/VTKViewer/VTKViewer_ViewWindow.cxx +++ b/src/VTKViewer/VTKViewer_ViewWindow.cxx @@ -456,8 +456,8 @@ void VTKViewer_ViewWindow::onAdjustTrihedron(){ (bnd[5]-bnd[4])*(bnd[5]-bnd[4])); }else{ aLength = bnd[1]-bnd[0]; - aLength = max((bnd[3]-bnd[2]),aLength); - aLength = max((bnd[5]-bnd[4]),aLength); + aLength = qMax((bnd[3]-bnd[2]),aLength); + aLength = qMax((bnd[5]-bnd[4]),aLength); } static vtkFloatingPointType aSizeInPercents = 105; diff --git a/src/VTKViewer/resources/vtk_view_back.png b/src/VTKViewer/resources/vtk_view_back.png new file mode 100755 index 0000000000000000000000000000000000000000..51beb0c73e5fa109819e0d38cacb60c467e540b5 GIT binary patch literal 432 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VXMsm#F#`j)FbFd;%$g$s6l6(v z^mSxl*w|O|J8&|PuaN8!Y85oZ=>2VsZ z*|B4WqSelM8i#wf{7CTOSGdP0;NbJ3?dMNl#apQghtI|SW_jEcbAlNt8e+u5$H3Gf zD54n^6{T{VXH(*w9)HIxEDCW90uCPxT*~IIdR4n8u|p(Jf$t^q z>bS!nR-h>-40+fb+8DXnCM1eC{NOkd(7=$iXi}o}f-m6>3`*9o6ODOP_yimhm>Zui zG}`hbQ1Rdy@qqk8yv&RZ3{8?JcvHL^y5xm;{xF$-(cYxsz+f1(n~QY85oZ=>2VsZ z*|B5B!*98+i+FBt(PTgNh2fDbP^Kks#{Byti(=V~&Kyry>ftU@4rc>h5?ccECN?~SvV9{NplD|gqRB`G_1%| z0J`JBB!;6Vb_>@1<5+D007H_2!PC{x JWt~$(699I+gjE0l literal 0 HcmV?d00001 diff --git a/src/VTKViewer/resources/vtk_view_camera_dump.png b/src/VTKViewer/resources/vtk_view_camera_dump.png new file mode 100755 index 0000000000000000000000000000000000000000..b02616f2975e7a3865a236ee75380bdae5ce59f7 GIT binary patch literal 682 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VXMsm#F#`j)FbFd;%$g$s6l6(v z^mSxl*w|O|J8&|PuaN8!GAr-fh{`~)M&uq%*z+h+?Aj!ZYz}<83#0idNZ{NHLm{arOf}-0Di4NZr z4h;-Rj?WrQvR=Mwyy^F?%;4dFDJdx)KR>?&vt5iYrhzo>YRaCjpLk={x^?G1e0dpc zAf2Wt^rJsV!+{}D;>9cZGar846mH{Q?tkd0S>BzF%TD3t{4*BXIQ-IfVA%M8i#s*c zlr1kVj?FMpku6S6PGNSxV@Sx9M(Gn`0zzpIgandKboIMkOJX=8&cMX6ys@Kkl!Hi5Cs~Z*GuUfUrsH3ynxPybcSy{#2e*VG@J6ax= z#n~Osp1^ImwK3)gt3rdprHAi&vk!iGdwaWNpPVI=nU9lGQ{we?u{?kG+WrXQ(cn=9 z+IG10^fX=PhwiSfjl8q1O0@zxr4<@xOt_qoo~}Mam+y-f$9#+0wuLz-jo8f1&D+fL z?z+m40n#|u4mYG61ddHVaiyUq`r4~d9q8ZdYn zozP=;ncaEPUC6S9SjZ)j11xdTOVx|PwNDx OD+W(jKbLh*2~7Z6;rO)x literal 0 HcmV?d00001 diff --git a/src/VTKViewer/resources/vtk_view_fitall.png b/src/VTKViewer/resources/vtk_view_fitall.png new file mode 100755 index 0000000000000000000000000000000000000000..87e001dd80b2755858d4599857106a0c9c0b3500 GIT binary patch literal 816 zcmV-01JC@4P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;rb$FWRCwBA{Qv(y12q9a0I`6G?+lD6rgAd;XCy{5 zHhlmA#Dc^@mIHB63}s|w3&>x^7VEp$V z!_S{T8NPo0%wTSB4^{^=10aA{2t*_sGYc!&H9+&gF8uxbH^cX@Ux5bxVEFUvH&_hp zNhkmaASMC^p1OMBJi~90i+=rL`10u!!-sco89u&$$ME^%M~1IozA)UpbP22urU4*; z81W@+U>Ndq^YVU}wt5|dps+B*k8j@@e*E~(@bkwHhQELQGJN^`k)bg^7i72+(46}q zJpciO*M(YIT7fc>k_-*mnGENS9|s!*!oPv8y?^^ALw|iO$gn1uVITkyKn&QD3J3!Y zt1#5l`yc4!^j}9?`#%#C(;-P2+5cJwhW{mHWkKFL1H{Sb`Tzn5YousvYge$bu(Yd+ zi!(g^@BtL?iGTn8T>uOM_2*9>%K?=<1!}&AO)o$IVT2*juu`C5U1~tXo&y8^?Uyf= zSFc{}AhvJ-2p}dj!}3{~naMT`1ONgE>_SkfVWO=i2{i0E$eXW$2^NUUfQEGwYY@l` zP;LPTAh-*gnwp;TadI-eff!amiebp56hHvMT?i_^fL=}k3i1H)bfAI1NHGa!20#G8 u4Wv>5%K#8S$g%vNP}zvfo5&o100RIgKz|e1YHVKs0000aa literal 0 HcmV?d00001 diff --git a/src/VTKViewer/resources/vtk_view_fitarea.png b/src/VTKViewer/resources/vtk_view_fitarea.png new file mode 100755 index 0000000000000000000000000000000000000000..450dc56c6ce722c040b4e5b77459207e8256cd58 GIT binary patch literal 912 zcmV;B18@9^P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ<21!IgRCwBA`2YVu0|yT@j4)mLY4&S1Wi z-OcbHM57sG48)m^9-he_0f7usvT_X1pFT0(yLC(8&W#(k0Oh^{@n4u?fB<44!Y5g^ z-MvYH5s?faC;S8YMon9X!N%2{!P42~V^d*1!@s|O;pPAY5EB8zLY%$4ll;RYzy^Ww zzyAz>|Nmq7`|lrvqn8hZdq5CKT`^1pKmZXkFx1h@8)yK~5THSSfQEqa-+v50fBt0n z`uQ`1xxGC|T`bJU00BhE%bd(CtYFsw%>%pe_wU~f-@kqZ8u)|Z&#&KLF(43ts^eU0F)F)_Iu>vs%)X>*Rt^|Sq00D$yAS*L-7tFAGPoM68`t<2NpzvEDJ`2PkgPEZQ zf?W3=>e4ST{Qv>Pgyb@bC5sj@fV}w<7@K#WJlO{{>@HC171XfPKztRHl%RYNeIJNF z01K4gATvM(3qSzDi!W_$?G#}ip4rTdj11l(AtV=F=_OOZ1q?s{!3|_&WMorRR4o7X z>z4u0Wlx|ky9mWEfcQ5q!$2+r83v*O0tneaP`Ky0YCsD8wiRZ mF(6igmT$M9kwFpw2rvMsC6+#;$I7?>0000Y85oZ=>2VsZ z*|B5B!*98+i+FBt(PTgNh2fDbP^Kks#{Byti(=V~&Kyry>ftU@fIOolmwP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZc>jKeOv$OzL15I`)*h9FA-UC3*1Z~uwm?OTSQ4<0bQ ze(?e}13&j7BtjOg8oBY{u_wj195)S?b{&f6+rwNh(Uq* zK0ZGF9!TB4fBzVey$%pSph#d!NlE$3!NI}s_3KxL7r?*=#V#=XRDg2aKr9Qy%0Mg# zwcu`6R@RnZzkY$$K7Ra|;oiM_44*%L1}7(g00Oy$^}~k`3@Z!_7=WS-7i47_^npo& z_1d*NKskL-Yy$BYAm#zl;o;#2riOWv!1Q5tTw%b52J!EBN z_zMj9Ye2(a0MpVAL405VabQDXA%mWt-g{_beh*a#GW3?PurN#?D4ah51P}|7@?T7UooaWF76FUtY(e=N8Ih<%~* zEa-Xx0ti>}^$+SLM<6zX=4AnBQUWFN&ro@cDgYqB0GrW?VpB4t`v3p{07*qoM6N<$ Eg6tg6&Hw-a literal 0 HcmV?d00001 diff --git a/src/VTKViewer/resources/vtk_view_left.png b/src/VTKViewer/resources/vtk_view_left.png new file mode 100755 index 0000000000000000000000000000000000000000..1b787b0433413a7117083cefce238d0219b55484 GIT binary patch literal 427 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VXMsm#F#`j)FbFd;%$g$s6l6(v z^mSxl*w|O|J8&|PuaN8!cxAr-fh{`~)M&uq%*z_77_!_Cc2#L?H+cT&#Iy1!N(L5z>Y85oZ=>2VsZ z*|B5B!*98+i+FBt(PTgNh2fDbP^KmC#?I{d9c7Xy4CLo`8t9#9wE>E{s2+a6pwJL8 z;qV!cZhoyh-WMEl+8P-g7!Dp5xLNA`-0Tsr^OAzYKsOvY;*iQ9;1FUipwO@)Pr-p9 z@UBAx!=hb{AX~kiLciL@^}c%5zoCnnMWC&*WfBk1fh!J^FNg)$u|3iU+0>VK;-z4O zK?Bcjh9m9{ZA>fz!c%!}GcMf^WGSz(xpL`}($0V*X%ZeX3JnL?m`*#VW_(=i)HG9n z!Mzq~HYNr}7UK!hC#Ero+N((XV9k0Fp5oZRkhG*sltCbY;YM8g@#-Jb&H@9L!PC{x JWt~$(69BoFkt+ZI literal 0 HcmV?d00001 diff --git a/src/VTKViewer/resources/vtk_view_pan.png b/src/VTKViewer/resources/vtk_view_pan.png new file mode 100755 index 0000000000000000000000000000000000000000..ec56cacc779342a978f183ecf747860c8b6dafb4 GIT binary patch literal 982 zcmV;{11bE8P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZb!otG-18H_3W&!c>DFz52f`;Yh z=KlYG@Zf(vJw1@2;y}!e&rpB>!e<*(Vq)UoNnv3OZ?0TnIIE=v5_imOsnQ(>_Q@}D9Q|HpzmfY=u#@9*!A5&HlE#0WDiKR^HPSD@Ek zzkbaCa@oa;7a4y4{_O{p(+6UCAm#(&Px|`$DQaqJ3~X#{4Da5(V|e)RA;Yz6*FdiR z0t!=r00NsF6BF}yLQoI`!>?Zq4Bx&nFns>Zz!(z)vWNqS-$A_va>-9lVB{=URRycP zpsdWG&(6-kdhOZ^SVRE?5Q~nE&fmqMp$spM9AUWs@+E@^Q1mI#KqwFe;@8la1=_~I z2J*$jJ9ilVe*DOA?ZXF#7k~dU%-7RnNW63j9QyzP#B$}z6$wUv{}&HSOBrrFdBPyW z&(HAr=TDe{d{D#gLnA=o6)=Lf|NhPJ2I#_XKyN<>8oU@7aj@722p~`x$^o%15O2W} zQ4K(R5QwirT?%sXD=g|(05K?CodF0SP#A)o^9gFhL?B)Zjj^{zMn(Vgg6j zxpU_jK79D#4wN$jVr3vsfvN|&{yoSXfB<5F#?CWnLd}P!GmwE_`1tr3R)vHxJUVoU z;RMiI;U7Ty82F(McnHLu(3}E_l-nS400M{wntfhCo&E)yX#avZ-#{@A45MF<9x;Hz z4lSY{BV~fOP)EH02p|@y4KPE$Kyv_tjEu~^`}glN965WI;l_&>3~!m4VFpeGVn3)0 zVaeeeEFA&_5G?D#4E+fW52hzio+tt7dm^Ah;l~e#JMZ4X4D5u`pP`QU2lWw%{s$01 zxUwNTH0uR`vRkc+3M|{L0pd2OxFS>?3IGToW*i2Bk`pV``xg$qd*=yF8X#vr0J$9M zy07T20tg^xJOwPwRUpGpK{Y>y#^wX4;lH73-~b@N0A_|Q{Wj4Xb^rhX07*qoM6N<$ Ef)-GsSpWb4 literal 0 HcmV?d00001 diff --git a/src/VTKViewer/resources/vtk_view_reset.png b/src/VTKViewer/resources/vtk_view_reset.png new file mode 100755 index 0000000000000000000000000000000000000000..66f81e60471b7b587c37166a4e206b45f74e7fc2 GIT binary patch literal 918 zcmV;H18Mw;P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ<3`s;mRCwBA`2YVu0}KO!sHi9>h~bSaP6`GHAOZXQ009Iu ztVK?a_y6WCKL3CH$@>5IfA;^Iw`2aBnTdlW&7exTp@zi+u{AD30Ro7Lk&#hUNQk5Q z?D;STpjR1~nHj+nii&(-KGfwPzyqZXfLH~Ij{*P!hzW=@vvYJAfQEtvwrzdL@b~Y3 zhTx#>3=Q?CrT~SeL)CtP(l4O+3pN7*0*D2Ojg5^(!JOKflMHLu++jF%N|j;rru$QX z!I2B}0Zi>zGy}h4GY}wvKrZ|XauEp3n0^K5WhREsj&mSx69e%89{T_R1ajfcn>Rmz zIq%;60AXz)^A6B;zi?=K-}sfC-?tzTH62r z+1dZM`}+RpVPyp=a)o&VAb=Q=3jlDg;ox}n@#jy5zyJSR0p*SZ#Xz=e0L9NFXlO8m zC@V8qN=Sg!-~8}_;lk_J40EqvXW0Gtu^UimH$VWPmo_{g8)rH={0C|R3ET$aE+9^W z#_sAO0|T(@KsZfX8>D6hvI_wMh!MSr0=mcm=$i9OU0oSe`1u*u-@C_f=i^5PHYO$p zdueHgKqVyxW?=4l`t>V=_OfLRAAkK40Gja;rXL`H7_pRjAVWa`o#`Ya<56K`#Na9` ziz0vj(Y85oZ=>2VsZ z*|B5B!*98+i+FBt(PTgNh2fDbP^Kks#{Byti(=V~-rU*hZ=iRg)dnc)qI&oNgF=IZ z+e1T-)tEt-^Qz2HlD1A~(F>qKK76+Qun1m?!43yrq?2vj_HMm!+@5HB-h z14EPK3EmX%hAw#_o&BefBz>vE(*)?7Fuoo~q89ZJ6T-G@yGywqE CrHFz@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;>`6pHRCwBA{Qv(y12R~;bm{-kpFcBXWMnWhkO2S! zh!NSqB}nm z_#K0zqZ|V(D=WjUUAu@f7$ATcKn6xcL;xu(AT|MFC6Lhn$B!BQ-@VK5ALvjZpYgx7 zwe^1|C#U~lNjw-JfZz;ORn`9w9x(jhw~yifBP`+xG}xButP{r|6^ zpz#0SKaeu^{~*hO@{?f(!3+aofB<4dk7WS?0kC9s^&AE_w@?O<^q)V#kOc;9VxlU; z?b~;NzENS&)YJs4-?V8HO4tGf5EFWs{`m1Dg_)Td7#X2pgMR&j81~}_14CcmZ3Z

_Vnz58}j`-1H-p(2n+(i@MQS?`!|ES zx;=;+j;t9VfLO2?s3j(*3Dyh@GoVI@D?x^T`SOK;2)s#xwr&D>UEJd0|XE@ z1Al$^@Qag!gA?p!NcjC^`1I*D!^e*=zzTrof(`uo^&N=&7g;kv0AVxm!p)nP>@QyI zX7KP>0Cd@Bpld$>4SWSQ@aolD3??S}49d!`4A-yk1*t!dtQjDHFbs5aa|0V@W77-F zdJn*cefjbZY~bh5AVYyp`ui6w_wwaUkd`&b`T+t6ZlIr^-+x##0LI+pFJF3c^!0s# zhP?qA1j4U@?6*KeAl|)m=P)pg|7HPG#V=$70RjjmmBTPF(TW1`G$keD|2{qy|2;iR z|J&Lo{r~WR;lH7w;eQ?;eo(@0$CmW~0tj!u1Z6QGzQNBg3e1Mm|F2(X_^+$03o^_G zmmYusVjz^+p$5wVu`v)3EF1s=2qWuJ3IGC#iGj)hAb_ZDAV7ct0CqnRZB|4ZssI20 M07*qoM6N<$f-H}K!2kdN literal 0 HcmV?d00001 diff --git a/src/VTKViewer/resources/vtk_view_top.png b/src/VTKViewer/resources/vtk_view_top.png new file mode 100755 index 0000000000000000000000000000000000000000..cef95040afe84ada0bd453b6e4057004c3d75c5f GIT binary patch literal 419 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VXMsm#F#`j)FbFd;%$g$s6l6(v z^mSxl*w|O|J8&|PuaN8!Y85oZ=>2Vsp zxwF;ZMLKQCQTF62hL3y=3`vWw7|74>G|)TIY6Dc`qI&oNgF-{Zgu^^1f3h%|9d-cn z9wfeaZqBN=VpY}rhu?Bt=d|VCn$jH1r_eA%Vg(NaQ^zYdCKiFKyeu3FtE4#u974O2ZYzRgvtQ98zfuwPaa_K;WgpRWqg{f@Q+Er!RLuY+Z?$@R^}5MxE*R( zQZyVG3mdKI;Vst0Grx_ AY5)KL literal 0 HcmV?d00001 diff --git a/src/VTKViewer/resources/vtk_view_triedre.png b/src/VTKViewer/resources/vtk_view_triedre.png new file mode 100755 index 0000000000000000000000000000000000000000..bc5894dc380f7595ee865b43f1a94779c5aee3fa GIT binary patch literal 698 zcmV;r0!96aP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;FiAu~RCwBA{Qv(y12q9a05O0Jgkf}$kdQ#KZ2$qp zgirF{zkdv;PoMsO_Uv+^4F(7xoCZcjMEw8w@gqZEU?9-ozaSxbAm$=uAV2`&^D>u- ziOK&nXO{jydUWRhEnC|DLk-0X00Ib~m$_cQe$8;_4l~1#ADW1qB5eL_|aw*x6aZd?0=erEvm)0Aj%>DI_Gsz`?-* zbR`>z`;{020RjlGfvl{o3`|TQPp}c44gmrPZ#raTWP~VU!fvm(w>L)800b`7drzdCp!Z(GYbPq`|sbs7`}Y@&hY2YUj~2x zLUCbYV&Z?8VOzFr0kQ4&?CAl~%Yb+e5Vr$y4H9mTjEwx>-JJnalL1l>5I`s{w6nAO z|MKNah7~KC7>tY}O!n{ZJLBkB)B#O<-=Hy#4!EJ|6C`&XAb?N|1SXOHKY#vY0A@9Y z@83T&xVV%QBN_A%nrzSk$S^G^`x-z1p@*SnO-;=;V`Dak=g;3Vym|A9p{{PeC)BWq zIMN_22Z6wAfB-@_5R_Lz2ADvF9suzfD1JjsIs^zH^aKX-(rGALgix-)1^@yGTe3kf g1c=JRFaQu>05%EfVPBu~R{#J207*qoM6N<$g3D|Y2LJ#7 literal 0 HcmV?d00001 diff --git a/src/VTKViewer/resources/vtk_view_zoom.png b/src/VTKViewer/resources/vtk_view_zoom.png new file mode 100755 index 0000000000000000000000000000000000000000..386c966d156f0a6f53e780aed211b78aa473a11b GIT binary patch literal 797 zcmV+&1LFLNP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;lSxEDRCwBA{Qv(y12q9a05LI882|(j3yAp6z=+{Y zPKN)C$b3dd#y}ty1;mO#{0NBG0DZR%T^~RIu^?$iH}pTm97baxo$2V|nd}h|$RH&v z$MF2=6XU&Gw*&&^{D5-Pfd(IhX#xl!22dE{!$2^nw!8QLxyR4`p9SL6kDmTN`QXX_ zWA`8bZ*#;G5q}bli};<&kW}F_F#1|4FCbe zLcl;aW)@bkYk=l~UHJR=Z-(z*zXA>X!SLtTZ?G6R8lV6mfC#zp)YS{;8GeIY^y?SH zmrtJL&@bUdShR+{AGJO5=h2iF{4FCbeh%aFS!;qhwm-oZ8)$14pg@qY@ zeEZJuHQCMa{8~Mt^J>giRqA}jO>3c z1H=E4va%p=odM!xbbSB;gf&vMwY4kQSXkOs#l;z(e)s?i_{6_||1JOqf%@|&kL7?$ zo&q&r!=@J?fH1-kXjm!Gur4*AVb6g9|Mtt5%Bxqec3{&C%ChKL6d-_@&RKiH#D= b009O7QZ{F9XF19?00000NkvXXu0mjfwM|pG literal 0 HcmV?d00001 -- 2.39.2