Open Inventor Release 2024.2.1
 
Loading...
Searching...
No Matches
SoScale2UniformDragger.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** Modified by : Howard Look (MMM yyyy)
26**=======================================================================*/
27/*=======================================================================
28 *** THE CONTENT OF THIS WORK IS PROPRIETARY TO FEI S.A.S, (FEI S.A.S.), ***
29 *** AND IS DISTRIBUTED UNDER A LICENSE AGREEMENT. ***
30 *** ***
31 *** REPRODUCTION, DISCLOSURE, OR USE, IN WHOLE OR IN PART, OTHER THAN AS ***
32 *** SPECIFIED IN THE LICENSE ARE NOT TO BE UNDERTAKEN EXCEPT WITH PRIOR ***
33 *** WRITTEN AUTHORIZATION OF FEI S.A.S. ***
34 *** ***
35 *** RESTRICTED RIGHTS LEGEND ***
36 *** USE, DUPLICATION, OR DISCLOSURE BY THE GOVERNMENT OF THE CONTENT OF THIS ***
37 *** WORK OR RELATED DOCUMENTATION IS SUBJECT TO RESTRICTIONS AS SET FORTH IN ***
38 *** SUBPARAGRAPH (C)(1) OF THE COMMERCIAL COMPUTER SOFTWARE RESTRICTED RIGHT ***
39 *** CLAUSE AT FAR 52.227-19 OR SUBPARAGRAPH (C)(1)(II) OF THE RIGHTS IN ***
40 *** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 52.227-7013. ***
41 *** ***
42 *** COPYRIGHT (C) 1996-2019 BY FEI S.A.S, ***
43 *** BORDEAUX, FRANCE ***
44 *** ALL RIGHTS RESERVED ***
45**=======================================================================*/
46/*=======================================================================
47** Modified by : VSG (MMM YYYY)
48**=======================================================================*/
49
50
51#ifndef _SO_SCALE_2_UNIFORM_DRAGGER_
52#define _SO_SCALE_2_UNIFORM_DRAGGER_
53
54#include <Inventor/SbLinear.h>
55#include <Inventor/draggers/SoDragger.h>
56#include <Inventor/fields/SoSFVec3f.h>
57#include <Inventor/sensors/SoSensor.h>
58
59class SbDict;
60class SbLineProjector;
61class SoFieldSensor;
62
179{
181
182 SO_KIT_CATALOG_ENTRY_HEADER(scalerSwitch);
183 SO_KIT_CATALOG_ENTRY_HEADER(scaler);
184 SO_KIT_CATALOG_ENTRY_HEADER(scalerActive);
185 SO_KIT_CATALOG_ENTRY_HEADER(feedbackSwitch);
186 SO_KIT_CATALOG_ENTRY_HEADER(feedback);
187 SO_KIT_CATALOG_ENTRY_HEADER(feedbackActive);
188
189 public:
190
195
201
202 private:
203 static void initClass(); // initialize the class
204 static void exitClass();
205
206 private:
207
208 SbVec3f closestPtOfZeroScale; // used during interaction
209 SbLineProjector *lineProj; // projector for scaling
210
211 static void startCB( void *, SoDragger * );
212 static void motionCB( void *, SoDragger * );
213 static void finishCB( void *, SoDragger * );
214
215 SoFieldSensor *fieldSensor;
216 static void fieldSensorCB( void *, SoSensor * );
217 static void valueChangedCB( void *, SoDragger * );
218
219 void dragStart();
220 void drag();
221 void dragFinish();
222
223 // detach/attach any sensors, callbacks, and/or field connections.
224 // Called by: start/end of SoBaseKit::readInstance
225 // and on new copy by: start/end of SoBaseKit::copy.
226 // Classes that redefine must call setUpConnections(TRUE,TRUE)
227 // at end of constructor.
228 // Returns the state of the node when this was called.
229 virtual SbBool setUpConnections( SbBool onOff, SbBool doItAlways = FALSE );
230
231 virtual ~SoScale2UniformDragger();
232
233 private:
234 static const char geomBuffer[];
235};
236
237#endif /* _SO_SCALE_2_UNIFORM_DRAGGER_ */
238
239
240
241
Line projector.
3D vector class.
Definition SbVec.h:932
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.
Field containing a three-dimensional vector.
Definition SoSFVec3f.h:80
Object you can scale uniformly in two dimensions by dragging with the mouse.
SoSFVec3f scaleFactor
Scale factor affecting the dragger.
SoScale2UniformDragger()
Constructor.
Abstract base class for Open Inventor sensors.
Definition SoSensor.h:100
int SbBool
Boolean type.
Definition SbBase.h:87