Open Inventor Reference
|
00001 /* 00002 * 00003 * Copyright (C) 2000 Silicon Graphics, Inc. All Rights Reserved. 00004 * 00005 * This library is free software; you can redistribute it and/or 00006 * modify it under the terms of the GNU Lesser General Public 00007 * License as published by the Free Software Foundation; either 00008 * version 2.1 of the License, or (at your option) any later version. 00009 * 00010 * This library is distributed in the hope that it will be useful, 00011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00013 * Lesser General Public License for more details. 00014 * 00015 * Further, this software is distributed without any warranty that it is 00016 * free of the rightful claim of any third person regarding infringement 00017 * or the like. Any license provided herein, whether implied or 00018 * otherwise, applies only to this software file. Patent licenses, if 00019 * any, provided herein do not apply to combinations of this program with 00020 * other software, or any other product whatsoever. 00021 * 00022 * You should have received a copy of the GNU Lesser General Public 00023 * License along with this library; if not, write to the Free Software 00024 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00025 * 00026 * Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy, 00027 * Mountain View, CA 94043, or: 00028 * 00029 * http://www.sgi.com 00030 * 00031 * For further information regarding this notice, see: 00032 * 00033 * http://oss.sgi.com/projects/GenInfo/NoticeExplan/ 00034 * 00035 */ 00036 00037 00038 /* 00039 * Copyright (C) 1990,91 Silicon Graphics, Inc. 00040 * 00041 _______________________________________________________________________ 00042 ______________ S I L I C O N G R A P H I C S I N C . ____________ 00043 | 00044 | Description: 00045 | This file defines the SoTransformerDragger class. 00046 | 00047 | NOTE TO DEVELOPERS: 00048 | For info about the structure of SoTransformerDragger: 00049 | [1] compile: /usr/share/src/Inventor/samples/ivNodeKitStructure 00050 | [2] type: ivNodeKitStructure SoTransformerDragger. 00051 | [3] The program prints a diagram of the scene graph and a table with 00052 | information about each part. 00053 | 00054 | The following parts in this dragger are created at construction time. 00055 | 'ResourceName' corresponds to the name of the default geometry for the 00056 | part. The dragger's constructor gets the scene graph for 'ResourceName' 00057 | by querying the global dictionary ( SoDB::getByName("ResourceName"); ). 00058 | 00059 | Resource Name: Part Name: 00060 | 00061 | transformerOverallStyle - overallStyle 00062 | 00063 | NOTE: for the translators and rotators, 00064 | numbering refers to a cube-face: 00065 | 1=top,2=bot,3=lft,4=rit,5=fnt,6=bak 00066 | 00067 | transformerTranslator1 - translator1 00068 | transformerTranslator1Active - translator1Active 00069 | (ditto for translator2-translator6) 00070 | 00071 | transformerRotator1 - rotator1 00072 | transformerRotator1Active - rotator1Active 00073 | (ditto for rotator2-rotator6) 00074 | 00075 | 00076 | NOTE: for the scalers, 00077 | numbers refer to a corner: 00078 | 1=+x+y+z, 2=+x+y-z, 3=+x-y+z, 00079 | 4=+x-y-z, 5=-x+y+z, 6=-x+y-z, 00080 | 7=-x-y+z, 8=-x-y-z 00081 | transformerScale1 - scale1 00082 | transformerScale1Active - scale1Active 00083 | (ditto for scale2-scale8) 00084 | 00085 | Feedback for translation 00086 | transformerTranslateBoxFeedback - translateBoxFeedback 00087 | 00088 | Feedback for scaling 00089 | transformerScaleBoxFeedback - scaleBoxFeedback 00090 | 00091 | Feedback for <Control> + scaling 00092 | transformerPosXWallFeedback - posXWallFeedback 00093 | transformerPosYWallFeedback - posYWallFeedback 00094 | transformerPosZWallFeedback - posZWallFeedback 00095 | transformerNegXWallFeedback - negXWallFeedback 00096 | transformerNegYWallFeedback - negYWallFeedback 00097 | transformerNegZWallFeedback - negZWallFeedback 00098 | 00099 | Feedback for <Control> + rotating 00100 | transformerPosXRoundWallFeedback - posXRoundWallFeedback 00101 | transformerPosYRoundWallFeedback - posYRoundWallFeedback 00102 | transformerPosZRoundWallFeedback - posZRoundWallFeedback 00103 | transformerNegXRoundWallFeedback - negXRoundWallFeedback 00104 | transformerNegYRoundWallFeedback - negYRoundWallFeedback 00105 | transformerNegZRoundWallFeedback - negZRoundWallFeedback 00106 | 00107 | Feedback for translation and for 1D scaling 00108 | transformerXAxisFeedbackActive - xAxisFeedbackActive 00109 | transformerYAxisFeedbackActive - yAxisFeedbackActive 00110 | transformerZAxisFeedbackActive - zAxisFeedbackActive 00111 | transformerXAxisFeedbackSelect - xAxisFeedbackSelect 00112 | transformerYAxisFeedbackSelect - yAxisFeedbackSelect 00113 | transformerZAxisFeedbackSelect - zAxisFeedbackSelect 00114 | 00115 | Feedback for <Control> + translation: 00116 | transformerXCrosshairFeedback - xCrosshairFeedback 00117 | transformerYCrosshairFeedback - yCrosshairFeedback 00118 | transformerZCrosshairFeedback - zCrosshairFeedback 00119 | 00120 | Feedback for uniform scaling 00121 | transformerRadialFeedback - radialFeedback 00122 | 00123 | Feedback for 1D rotation 00124 | transformerXCircleFeedback - xCircleFeedback 00125 | transformerYCircleFeedback - yCircleFeedback 00126 | transformerZCircleFeedback - zCircleFeedback 00127 | 00128 | Author(s): Paul Isaacs 00129 | 00130 ______________ S I L I C O N G R A P H I C S I N C . ____________ 00131 _______________________________________________________________________ 00132 */ 00133 00134 #ifndef _SO_TRANSFORMER_DRAGGER_ 00135 #define _SO_TRANSFORMER_DRAGGER_ 00136 00137 #include <Inventor/SoLists.h> 00138 #include <Inventor/draggers/SoDragger.h> 00139 #include <Inventor/fields/SoSFFloat.h> 00140 #include <Inventor/fields/SoSFRotation.h> 00141 #include <Inventor/fields/SoSFVec3f.h> 00142 #include <Inventor/sensors/SoSensor.h> 00143 00144 class SbDict; 00145 class SbPlaneProjector; 00146 class SbLineProjector; 00147 class SbSphereSectionProjector; 00148 class SbCylinderPlaneProjector; 00149 class SoFieldSensor; 00150 00151 00154 00282 00283 00284 class INVENTOR_API SoTransformerDragger : public SoDragger { 00285 00286 SO_KIT_HEADER(SoTransformerDragger); 00287 00288 SO_KIT_CATALOG_ENTRY_HEADER(overallStyle); 00289 00291 SO_KIT_CATALOG_ENTRY_HEADER(surroundScale); 00292 00293 SO_KIT_CATALOG_ENTRY_HEADER(translatorSep); 00294 SO_KIT_CATALOG_ENTRY_HEADER(translator1Switch); 00295 SO_KIT_CATALOG_ENTRY_HEADER(translator1LocateGroup); 00296 SO_KIT_CATALOG_ENTRY_HEADER(translator1); 00297 SO_KIT_CATALOG_ENTRY_HEADER(translator1Active); 00298 SO_KIT_CATALOG_ENTRY_HEADER(translator2Switch); 00299 SO_KIT_CATALOG_ENTRY_HEADER(translator2LocateGroup); 00300 SO_KIT_CATALOG_ENTRY_HEADER(translator2); 00301 SO_KIT_CATALOG_ENTRY_HEADER(translator2Active); 00302 SO_KIT_CATALOG_ENTRY_HEADER(translator3Switch); 00303 SO_KIT_CATALOG_ENTRY_HEADER(translator3LocateGroup); 00304 SO_KIT_CATALOG_ENTRY_HEADER(translator3); 00305 SO_KIT_CATALOG_ENTRY_HEADER(translator3Active); 00306 SO_KIT_CATALOG_ENTRY_HEADER(translator4Switch); 00307 SO_KIT_CATALOG_ENTRY_HEADER(translator4LocateGroup); 00308 SO_KIT_CATALOG_ENTRY_HEADER(translator4); 00309 SO_KIT_CATALOG_ENTRY_HEADER(translator4Active); 00310 SO_KIT_CATALOG_ENTRY_HEADER(translator5Switch); 00311 SO_KIT_CATALOG_ENTRY_HEADER(translator5LocateGroup); 00312 SO_KIT_CATALOG_ENTRY_HEADER(translator5); 00313 SO_KIT_CATALOG_ENTRY_HEADER(translator5Active); 00314 SO_KIT_CATALOG_ENTRY_HEADER(translator6Switch); 00315 SO_KIT_CATALOG_ENTRY_HEADER(translator6LocateGroup); 00316 SO_KIT_CATALOG_ENTRY_HEADER(translator6); 00317 SO_KIT_CATALOG_ENTRY_HEADER(translator6Active); 00318 00319 00320 SO_KIT_CATALOG_ENTRY_HEADER(rotatorSep); 00321 SO_KIT_CATALOG_ENTRY_HEADER(rotator1Switch); 00322 SO_KIT_CATALOG_ENTRY_HEADER(rotator1LocateGroup); 00323 SO_KIT_CATALOG_ENTRY_HEADER(rotator1); 00324 SO_KIT_CATALOG_ENTRY_HEADER(rotator1Active); 00325 SO_KIT_CATALOG_ENTRY_HEADER(rotator2Switch); 00326 SO_KIT_CATALOG_ENTRY_HEADER(rotator2LocateGroup); 00327 SO_KIT_CATALOG_ENTRY_HEADER(rotator2); 00328 SO_KIT_CATALOG_ENTRY_HEADER(rotator2Active); 00329 SO_KIT_CATALOG_ENTRY_HEADER(rotator3Switch); 00330 SO_KIT_CATALOG_ENTRY_HEADER(rotator3LocateGroup); 00331 SO_KIT_CATALOG_ENTRY_HEADER(rotator3); 00332 SO_KIT_CATALOG_ENTRY_HEADER(rotator3Active); 00333 SO_KIT_CATALOG_ENTRY_HEADER(rotator4Switch); 00334 SO_KIT_CATALOG_ENTRY_HEADER(rotator4LocateGroup); 00335 SO_KIT_CATALOG_ENTRY_HEADER(rotator4); 00336 SO_KIT_CATALOG_ENTRY_HEADER(rotator4Active); 00337 SO_KIT_CATALOG_ENTRY_HEADER(rotator5Switch); 00338 SO_KIT_CATALOG_ENTRY_HEADER(rotator5LocateGroup); 00339 SO_KIT_CATALOG_ENTRY_HEADER(rotator5); 00340 SO_KIT_CATALOG_ENTRY_HEADER(rotator5Active); 00341 SO_KIT_CATALOG_ENTRY_HEADER(rotator6Switch); 00342 SO_KIT_CATALOG_ENTRY_HEADER(rotator6LocateGroup); 00343 SO_KIT_CATALOG_ENTRY_HEADER(rotator6); 00344 SO_KIT_CATALOG_ENTRY_HEADER(rotator6Active); 00345 00346 SO_KIT_CATALOG_ENTRY_HEADER(scaleSep); 00347 SO_KIT_CATALOG_ENTRY_HEADER(scale1Switch); 00348 SO_KIT_CATALOG_ENTRY_HEADER(scale1LocateGroup); 00349 SO_KIT_CATALOG_ENTRY_HEADER(scale1); 00350 SO_KIT_CATALOG_ENTRY_HEADER(scale1Active); 00351 SO_KIT_CATALOG_ENTRY_HEADER(scale2Switch); 00352 SO_KIT_CATALOG_ENTRY_HEADER(scale2LocateGroup); 00353 SO_KIT_CATALOG_ENTRY_HEADER(scale2); 00354 SO_KIT_CATALOG_ENTRY_HEADER(scale2Active); 00355 SO_KIT_CATALOG_ENTRY_HEADER(scale3Switch); 00356 SO_KIT_CATALOG_ENTRY_HEADER(scale3LocateGroup); 00357 SO_KIT_CATALOG_ENTRY_HEADER(scale3); 00358 SO_KIT_CATALOG_ENTRY_HEADER(scale3Active); 00359 SO_KIT_CATALOG_ENTRY_HEADER(scale4Switch); 00360 SO_KIT_CATALOG_ENTRY_HEADER(scale4LocateGroup); 00361 SO_KIT_CATALOG_ENTRY_HEADER(scale4); 00362 SO_KIT_CATALOG_ENTRY_HEADER(scale4Active); 00363 SO_KIT_CATALOG_ENTRY_HEADER(scale5Switch); 00364 SO_KIT_CATALOG_ENTRY_HEADER(scale5LocateGroup); 00365 SO_KIT_CATALOG_ENTRY_HEADER(scale5); 00366 SO_KIT_CATALOG_ENTRY_HEADER(scale5Active); 00367 SO_KIT_CATALOG_ENTRY_HEADER(scale6Switch); 00368 SO_KIT_CATALOG_ENTRY_HEADER(scale6LocateGroup); 00369 SO_KIT_CATALOG_ENTRY_HEADER(scale6); 00370 SO_KIT_CATALOG_ENTRY_HEADER(scale6Active); 00371 SO_KIT_CATALOG_ENTRY_HEADER(scale7Switch); 00372 SO_KIT_CATALOG_ENTRY_HEADER(scale7LocateGroup); 00373 SO_KIT_CATALOG_ENTRY_HEADER(scale7); 00374 SO_KIT_CATALOG_ENTRY_HEADER(scale7Active); 00375 SO_KIT_CATALOG_ENTRY_HEADER(scale8Switch); 00376 SO_KIT_CATALOG_ENTRY_HEADER(scale8LocateGroup); 00377 SO_KIT_CATALOG_ENTRY_HEADER(scale8); 00378 SO_KIT_CATALOG_ENTRY_HEADER(scale8Active); 00379 00380 SO_KIT_CATALOG_ENTRY_HEADER(axisFeedbackSep); 00381 SO_KIT_CATALOG_ENTRY_HEADER(axisFeedbackLocation); 00382 SO_KIT_CATALOG_ENTRY_HEADER(xAxisFeedbackSwitch); 00383 SO_KIT_CATALOG_ENTRY_HEADER(xAxisFeedbackActive); 00384 SO_KIT_CATALOG_ENTRY_HEADER(xAxisFeedbackSelect); 00385 SO_KIT_CATALOG_ENTRY_HEADER(xCrosshairFeedback); 00386 SO_KIT_CATALOG_ENTRY_HEADER(yAxisFeedbackSwitch); 00387 SO_KIT_CATALOG_ENTRY_HEADER(yAxisFeedbackActive); 00388 SO_KIT_CATALOG_ENTRY_HEADER(yAxisFeedbackSelect); 00389 SO_KIT_CATALOG_ENTRY_HEADER(yCrosshairFeedback); 00390 SO_KIT_CATALOG_ENTRY_HEADER(zAxisFeedbackSwitch); 00391 SO_KIT_CATALOG_ENTRY_HEADER(zAxisFeedbackActive); 00392 SO_KIT_CATALOG_ENTRY_HEADER(zAxisFeedbackSelect); 00393 SO_KIT_CATALOG_ENTRY_HEADER(zCrosshairFeedback); 00394 00395 SO_KIT_CATALOG_ENTRY_HEADER(translateBoxFeedbackSep); 00396 SO_KIT_CATALOG_ENTRY_HEADER(translateBoxFeedbackSwitch); 00397 SO_KIT_CATALOG_ENTRY_HEADER(translateBoxFeedbackRotation); 00398 SO_KIT_CATALOG_ENTRY_HEADER(translateBoxFeedback); 00399 00400 SO_KIT_CATALOG_ENTRY_HEADER(scaleBoxFeedbackSwitch); 00401 SO_KIT_CATALOG_ENTRY_HEADER(scaleBoxFeedback); 00402 00403 SO_KIT_CATALOG_ENTRY_HEADER(posXWallFeedbackSwitch); 00404 SO_KIT_CATALOG_ENTRY_HEADER(posXWallFeedback); 00405 SO_KIT_CATALOG_ENTRY_HEADER(posXRoundWallFeedback); 00406 SO_KIT_CATALOG_ENTRY_HEADER(posYWallFeedbackSwitch); 00407 SO_KIT_CATALOG_ENTRY_HEADER(posYWallFeedback); 00408 SO_KIT_CATALOG_ENTRY_HEADER(posYRoundWallFeedback); 00409 SO_KIT_CATALOG_ENTRY_HEADER(posZWallFeedbackSwitch); 00410 SO_KIT_CATALOG_ENTRY_HEADER(posZWallFeedback); 00411 SO_KIT_CATALOG_ENTRY_HEADER(posZRoundWallFeedback); 00412 SO_KIT_CATALOG_ENTRY_HEADER(negXWallFeedbackSwitch); 00413 SO_KIT_CATALOG_ENTRY_HEADER(negXWallFeedback); 00414 SO_KIT_CATALOG_ENTRY_HEADER(negXRoundWallFeedback); 00415 SO_KIT_CATALOG_ENTRY_HEADER(negYWallFeedbackSwitch); 00416 SO_KIT_CATALOG_ENTRY_HEADER(negYWallFeedback); 00417 SO_KIT_CATALOG_ENTRY_HEADER(negYRoundWallFeedback); 00418 SO_KIT_CATALOG_ENTRY_HEADER(negZWallFeedbackSwitch); 00419 SO_KIT_CATALOG_ENTRY_HEADER(negZWallFeedback); 00420 SO_KIT_CATALOG_ENTRY_HEADER(negZRoundWallFeedback); 00421 00422 SO_KIT_CATALOG_ENTRY_HEADER(radialFeedbackSwitch); 00423 SO_KIT_CATALOG_ENTRY_HEADER(radialFeedback); 00424 00425 SO_KIT_CATALOG_ENTRY_HEADER(circleFeedbackSep); 00426 SO_KIT_CATALOG_ENTRY_HEADER(circleFeedbackTransformSwitch); 00427 SO_KIT_CATALOG_ENTRY_HEADER(circleFeedbackAntiSquish); 00428 SO_KIT_CATALOG_ENTRY_HEADER(circleFeedbackTransform); 00429 SO_KIT_CATALOG_ENTRY_HEADER(xCircleFeedbackSwitch); 00430 SO_KIT_CATALOG_ENTRY_HEADER(xCircleFeedback); 00431 SO_KIT_CATALOG_ENTRY_HEADER(yCircleFeedbackSwitch); 00432 SO_KIT_CATALOG_ENTRY_HEADER(yCircleFeedback); 00433 SO_KIT_CATALOG_ENTRY_HEADER(zCircleFeedbackSwitch); 00434 SO_KIT_CATALOG_ENTRY_HEADER(zCircleFeedback); 00435 00436 00437 public: 00438 00440 SoTransformerDragger(); 00441 00442 SoSFRotation rotation; 00443 SoSFVec3f translation; 00444 SoSFVec3f scaleFactor; 00445 SoSFFloat minDiscRotDot; 00446 00452 void unsquishKnobs(); 00453 00456 SbBool isLocateHighlighting() { return locateHighlightOn; } 00459 void setLocateHighlighting( SbBool onOff ); 00460 00462 static void setColinearThreshold(int newVal) { colinearThreshold = newVal; } 00467 static int getColinearThreshold() { return colinearThreshold; } 00468 00469 SoEXTENDER public: 00470 00473 SbVec3f getBoxPointInWorldSpace( const SbVec3f &pointOnUnitBox ); 00474 SbVec3f getBoxDirInWorldSpace( const SbVec3f &dirOnUnitBox ); 00475 SbVec3f getWorldPointInBoxSpace( const SbVec3f &pointInWorldSpace ); 00476 SbVec2f getWorldPointInPixelSpace( const SbVec3f &thePoint ); 00477 00483 SbVec3f getInteractiveCenterInBoxSpace() 00484 { return interactiveCenterInBoxSpace; } 00485 00486 SoINTERNAL public: 00487 static void initClass(); 00488 00489 enum State 00490 { INACTIVE, 00491 RIT_X_ROTATE, TOP_Y_ROTATE, FNT_Z_ROTATE, 00492 LFT_X_ROTATE, BOT_Y_ROTATE, BAK_Z_ROTATE, 00493 00494 PX_PY_PZ_3D_SCALE, PX_PY_NZ_3D_SCALE, PX_NY_PZ_3D_SCALE, 00495 PX_NY_NZ_3D_SCALE, NX_PY_PZ_3D_SCALE, NX_PY_NZ_3D_SCALE, 00496 NX_NY_PZ_3D_SCALE, NX_NY_NZ_3D_SCALE, 00497 00498 RIT_TRANSLATE, TOP_TRANSLATE, FNT_TRANSLATE, 00499 LFT_TRANSLATE, BOT_TRANSLATE, BAK_TRANSLATE }; 00500 00501 State getCurrentState() { return currentState; } 00502 00503 protected: 00504 00506 static void startCB( void *, SoDragger * ); 00507 static void motionCB( void *, SoDragger * ); 00508 static void finishCB( void *, SoDragger * ); 00509 00510 SoFieldSensor *translFieldSensor; 00511 SoFieldSensor *scaleFieldSensor; 00512 SoFieldSensor *rotateFieldSensor; 00513 static void fieldSensorCB( void *, SoSensor * ); 00514 static void valueChangedCB( void *, SoDragger * ); 00515 00517 static void metaKeyChangeCB( void *, SoDragger *); 00518 00520 void dragStart(); 00521 void drag(); 00522 void dragFinish(); 00523 00526 void setAllPartSwitches( int scaleAssemblyWhich, 00527 int rotateAssemblyWhich, 00528 int translateAssemblyWhich ); 00529 00536 virtual SbBool setUpConnections( SbBool onOff, SbBool doItAlways = FALSE ); 00537 00538 virtual void setDefaultOnNonWritingFields(); 00539 00540 virtual ~SoTransformerDragger(); 00541 00543 void updateAntiSquishList(); 00545 SoNodeList antiSquishList; 00546 00547 int getMouseGestureDirection(SbBool xAllowed, SbBool yAllowed, 00548 SbBool zAllowed); 00549 00550 static int getIgnoreAxis(SbVec2f axis[3][2], SbBool xAllowed, 00551 SbBool yAllowed, SbBool zAllowed ); 00552 00553 static void makeMinorAxisPerpendicularIfColinear( SbVec2f origin, 00554 SbVec2f axisEnds[3][2], int indexA, int indexB ); 00555 00556 static SbBool isColinear(SbVec2f a1[2], SbVec2f a2[2], int pixels); 00557 00558 private: 00559 00560 State currentState; 00561 int currentDir; 00562 00563 00564 00565 00566 SbBool rotatingAsDisc; 00567 00568 SbPlaneProjector *planeProj; 00569 SbLineProjector *lineProj; 00570 SbSphereSectionProjector *sphereProj; 00571 SbCylinderPlaneProjector *cylProj; 00572 00573 State restartState; 00574 SbVec3f worldRestartPt; 00575 00576 SbMatrix prevMotionMatrix; 00577 SbVec3f prevWorldHitPt; 00578 SbVec3f interactiveCenterInBoxSpace; 00579 00583 SbVec2f startNormalizedLocaterPosition; 00584 00585 SbBool altDown, ctlDown, shftDown; 00586 00587 SbBool constraining; 00588 00590 void setHighlights(); 00591 void setFeedback(); 00592 void setFeedbackForTranslate(); 00593 void setFeedbackForScale(); 00594 void setFeedbackForRotate(); 00595 00596 State getStateFromPick(); 00597 SbBool translateInit(); 00598 SbBool rotateInit(); 00599 SbBool scaleInit(); 00600 00601 SbBool translateDrag(); 00602 SbBool scaleDrag(); 00603 00604 SbBool rotateDrag(); 00605 SbBool rotateConstrainedDrag(); 00606 SbBool rotateConstrainedDiscDrag(); 00607 SbBool rotateConstrainedCylindricalDrag(); 00608 00609 void initSphereProjector(); 00610 void initDiscProjector(); 00611 void initCylinderProjector(); 00612 00613 SbBool getShouldRotateAsDisc(); 00614 int getConstrainedRotationAxis(); 00615 00617 static const char geomBuffer[]; 00618 00619 void setAllDefaultParts(); 00620 00621 SbBool locateHighlightOn; 00622 00623 static int colinearThreshold; 00624 00628 void makeCatalog(); 00629 void makeTranslaterCatalogParts(); 00630 void makeRotaterCatalogParts(); 00631 void makeScalerCatalogParts(); 00632 void makeAxisFeedbackCatalogParts(); 00633 void makeBoxFeedbackCatalogParts(); 00634 void makeWallFeedbackCatalogParts(); 00635 void makeRadialFeedbackCatalogParts(); 00636 void makeCircleFeedbackCatalogParts(); 00637 }; 00638 00639 #endif /* _SO_TRANSFORMER_DRAGGER_ */