Open Inventor Release 2024.1.1
 
Loading...
Searching...
No Matches
SoJackDragger.h
1/*=======================================================================
2 * Copyright 1991-1996, Silicon Graphics, Inc.
3 * ALL RIGHTS RESERVED
4 *
5 * UNPUBLISHED -- Rights reserved under the copyright laws of the United
6 * States. Use of a copyright notice is precautionary only and does not
7 * imply publication or disclosure.
8 *
9 * U.S. GOVERNMENT RESTRICTED RIGHTS LEGEND:
10 * Use, duplication or disclosure by the Government is subject to restrictions
11 * as set forth in FAR 52.227.19(c)(2) or subparagraph (c)(1)(ii) of the Rights
12 * in Technical Data and Computer Software clause at DFARS 252.227-7013 and/or
13 * in similar or successor clauses in the FAR, or the DOD or NASA FAR
14 * Supplement. Contractor/manufacturer is Silicon Graphics, Inc.,
15 * 2011 N. Shoreline Blvd. Mountain View, CA 94039-7311.
16 *
17 * THE CONTENT OF THIS WORK CONTAINS CONFIDENTIAL AND PROPRIETARY
18 * INFORMATION OF SILICON GRAPHICS, INC. ANY DUPLICATION, MODIFICATION,
19 * DISTRIBUTION, OR DISCLOSURE IN ANY FORM, IN WHOLE, OR IN PART, IS STRICTLY
20 * PROHIBITED WITHOUT THE PRIOR EXPRESS WRITTEN PERMISSION OF SILICON
21 * GRAPHICS, INC.
22**=======================================================================*/
23/*=======================================================================
24** Author : Paul Isaacs (MMM yyyy)
25**=======================================================================*/
26/*=======================================================================
27 *** THE CONTENT OF THIS WORK IS PROPRIETARY TO FEI S.A.S, (FEI S.A.S.), ***
28 *** AND IS DISTRIBUTED UNDER A LICENSE AGREEMENT. ***
29 *** ***
30 *** REPRODUCTION, DISCLOSURE, OR USE, IN WHOLE OR IN PART, OTHER THAN AS ***
31 *** SPECIFIED IN THE LICENSE ARE NOT TO BE UNDERTAKEN EXCEPT WITH PRIOR ***
32 *** WRITTEN AUTHORIZATION OF FEI S.A.S. ***
33 *** ***
34 *** RESTRICTED RIGHTS LEGEND ***
35 *** USE, DUPLICATION, OR DISCLOSURE BY THE GOVERNMENT OF THE CONTENT OF THIS ***
36 *** WORK OR RELATED DOCUMENTATION IS SUBJECT TO RESTRICTIONS AS SET FORTH IN ***
37 *** SUBPARAGRAPH (C)(1) OF THE COMMERCIAL COMPUTER SOFTWARE RESTRICTED RIGHT ***
38 *** CLAUSE AT FAR 52.227-19 OR SUBPARAGRAPH (C)(1)(II) OF THE RIGHTS IN ***
39 *** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 52.227-7013. ***
40 *** ***
41 *** COPYRIGHT (C) 1996-2019 BY FEI S.A.S, ***
42 *** BORDEAUX, FRANCE ***
43 *** ALL RIGHTS RESERVED ***
44**=======================================================================*/
45/*=======================================================================
46** Modified by : VSG (MMM YYYY)
47**=======================================================================*/
48
49
50#ifndef _SO_JACK_DRAGGER_
51#define _SO_JACK_DRAGGER_
52
53#include <Inventor/SbLinear.h>
54#include <Inventor/draggers/SoDragger.h>
55#include <Inventor/fields/SoSFVec3f.h>
56#include <Inventor/fields/SoSFRotation.h>
57#include <Inventor/sensors/SoSensor.h>
58
59class SbDict;
60class SoFieldSensor;
61
312{
313 SO_KIT_HEADER(SoJackDragger);
314
315 // For making the dragger surround what lies above it.
316 SO_KIT_CATALOG_ENTRY_HEADER(surroundScale);
317 // For keeping the dragger even size in all 3 dimensions
318 SO_KIT_CATALOG_ENTRY_HEADER(antiSquish);
319
320 SO_KIT_CATALOG_ENTRY_HEADER(scaler);
321 SO_KIT_CATALOG_ENTRY_HEADER(rotator);
322 SO_KIT_CATALOG_ENTRY_HEADER(translator);
323
324 public:
325
330
351
352 private:
353 static void initClass(); // initialize the class
354 static void exitClass();
355
356 private:
357
358 SoFieldSensor *rotFieldSensor;
359 SoFieldSensor *translFieldSensor;
360 SoFieldSensor *scaleFieldSensor;
361 static void fieldSensorCB( void *, SoSensor * );
362 static void valueChangedCB( void *, SoDragger * );
363
364 static void invalidateSurroundScaleCB( void *, SoDragger * );
365
366 // detach/attach any sensors, callbacks, and/or field connections.
367 // Also set geometry of childDraggers to be our default instead of their
368 // regular default, using our resources.
369 // Called by: start/end of SoBaseKit::readInstance
370 // and on new copy by: start/end of SoBaseKit::copy.
371 // Classes that redefine must call setUpConnections(TRUE,TRUE)
372 // at end of constructor.
373 // Returns the state of the node when this was called.
374 virtual SbBool setUpConnections( SbBool onOff, SbBool doItAlways = FALSE );
375
376 virtual void setDefaultOnNonWritingFields();
377
378
379 virtual ~SoJackDragger();
380
381 private:
382 static const char geomBuffer[];
383};
384
385#endif /* _SO_JACK_DRAGGER_ */
386
Base class for nodekits that move in response to click-drag-release mouse events.
Definition SoDragger.h:537
Sensor class that can be attached to Open Inventor fields.
Jack-shaped object you rotate, translate, or scale by dragging with the mouse.
SoSFRotation rotation
Orientation of the dragger.
SoSFVec3f translation
Position of the dragger.
SoJackDragger()
Constructor.
SoSFVec3f scaleFactor
Scale of the dragger.
Field containing a rotation.
Field containing a three-dimensional vector.
Definition SoSFVec3f.h:80
Abstract base class for Open Inventor sensors.
Definition SoSensor.h:100
int SbBool
Boolean type.
Definition SbBase.h:87