Open Inventor Release 2024.1.2
 
Loading...
Searching...
No Matches
SoTabBoxDragger.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-2023 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_TAB_BOX_DRAGGER_
52#define _SO_TAB_BOX_DRAGGER_
53
54#include <Inventor/SbLinear.h>
55#include <Inventor/draggers/SoDragger.h>
56#include <Inventor/fields/SoSFVec3f.h>
57#include <Inventor/fields/SoSFColor.h>
58#include <Inventor/sensors/SoSensor.h>
59#include <Inventor/misc/SoRef.h>
60#include <Inventor/nodes/SoSeparator.h>
61#include <Inventor/nodes/SoMaterial.h>
62#include <Inventor/nodes/SoShapeHints.h>
63
64class SoFieldSensor;
65class SoSwitch;
66class SoDrawStyle;
67
294{
295 SO_KIT_HEADER(SoTabBoxDragger);
296
297 // For making the dragger surround what lies above it.
298 SO_KIT_CATALOG_ENTRY_HEADER(surroundScale);
299
300 SO_KIT_CATALOG_ENTRY_HEADER(tabPlane1Sep);
301 SO_KIT_CATALOG_ENTRY_HEADER(tabPlane1Xf);
302 SO_KIT_CATALOG_ENTRY_HEADER(tabPlane1);
303 SO_KIT_CATALOG_ENTRY_HEADER(tabPlane2Sep);
304 SO_KIT_CATALOG_ENTRY_HEADER(tabPlane2Xf);
305 SO_KIT_CATALOG_ENTRY_HEADER(tabPlane2);
306 SO_KIT_CATALOG_ENTRY_HEADER(tabPlane3Sep);
307 SO_KIT_CATALOG_ENTRY_HEADER(tabPlane3Xf);
308 SO_KIT_CATALOG_ENTRY_HEADER(tabPlane3);
309 SO_KIT_CATALOG_ENTRY_HEADER(tabPlane4Sep);
310 SO_KIT_CATALOG_ENTRY_HEADER(tabPlane4Xf);
311 SO_KIT_CATALOG_ENTRY_HEADER(tabPlane4);
312 SO_KIT_CATALOG_ENTRY_HEADER(tabPlane5Sep);
313 SO_KIT_CATALOG_ENTRY_HEADER(tabPlane5Xf);
314 SO_KIT_CATALOG_ENTRY_HEADER(tabPlane5);
315 SO_KIT_CATALOG_ENTRY_HEADER(tabPlane6Sep);
316 SO_KIT_CATALOG_ENTRY_HEADER(tabPlane6Xf);
317 SO_KIT_CATALOG_ENTRY_HEADER(tabPlane6);
318
319 SO_KIT_CATALOG_ENTRY_HEADER(boxGeom);
320
321 public:
326
331
336
343
350
363
369
377
385
386 private:
387 static void initClass(); // initialize the class
388 static void exitClass();
389
390 int getCurrentState();
391
392private:
393
394 SoFieldSensor *translFieldSensor;
395 SoFieldSensor *scaleFieldSensor;
396 SoFieldSensor *resizeHandlesFieldSensor;
397 SoFieldSensor *tabPixelSizeFieldSensor;
398 SoFieldSensor *privateStyleFieldSensor;
399
400 static void resizeHandlesSensorCB( void *, SoSensor * );
401 static void fieldSensorCB( void *, SoSensor * );
402 static void valueChangedCB( void *, SoDragger * );
403 static void tabPixelSizeSensorCB( void *, SoSensor * );
404 static void privateStyleCB(void *, SoSensor *);
405
406
407 static void invalidateSurroundScaleCB( void *, SoDragger * );
408 static void adjustScaleTabSizeCB( void *, SoDragger * );
409
410 virtual void handleEvent( SoHandleEventAction *action );
411 virtual void handleHighlighting( SoHandleEventAction* action );
412
413 // detach/attach any sensors, callbacks, and/or field connections.
414 // Also set geometry of childDraggers to be our default instead of their
415 // regular default, using our resources.
416 // Called by: start/end of SoBaseKit::readInstance
417 // and on new copy by: start/end of SoBaseKit::copy.
418 // Classes that redefine must call setUpConnections(TRUE,TRUE)
419 // at end of constructor.
420 // Returns the state of the node when this was called.
421 virtual SbBool setUpConnections( SbBool onOff, SbBool doItAlways = FALSE );
422
423 virtual void setDefaultOnNonWritingFields();
424
425 virtual ~SoTabBoxDragger();
426
427 private:
428 // Highlighting
429 void applyHighlightingColor();
430 void clearHighlight();
431
432 SoSwitch* m_lastHighlightedTabSwitch;
433 SoMaterial* m_lastHighlightedPlaneMaterial;
434 SoDrawStyle* m_lastHighlightedPlaneDrawStyle;
435 static const float s_highlightLineWidth;
436
437
438 static const char geomBuffer[];
439 static SoRef<SoMaterial> s_tabScaleMatShared;
440 static SoRef<SoSeparator> s_translatorShared;
441 static SoRef<SoShapeHints> s_scaleHintsShared;
442};
443
444#endif /* _SO_TAB_BOX_DRAGGER_ */
445
Base class for nodekits that move in response to click-drag-release mouse events.
Definition SoDragger.h:537
Node that defines the style to use when rendering.
Sensor class that can be attached to Open Inventor fields.
Allows nodes in a graph to receive input events.
Surface material definition node.
Definition SoMaterial.h:173
Smart pointer for any class inheriting SoRefCounter.
Definition SoRef.h:90
Field containing a single Boolean value.
Definition SoSFBool.h:79
Field containing an RGB color.
Definition SoSFColor.h:82
Field containing a int32_t integer.
Definition SoSFInt32.h:80
Field containing a three-dimensional vector.
Definition SoSFVec3f.h:80
Abstract base class for Open Inventor sensors.
Definition SoSensor.h:100
Group node that traverses one chosen child.
Definition SoSwitch.h:179
Cubic object you can translate and scale by dragging with the mouse.
SoSFVec3f translation
Position of the dragger.
SoSFBool privateStyle
Controls whether this instance of SoTabBoxDragger shares or does not share parts, e....
SoSFColor highlightColor
Specifies the highlight color.
SoSFVec3f scaleFactor
Scale of the dragger.
void adjustScaleTabSize()
Causes the scale tab sizes to be re-adjusted on all 6 SoTabPlaneDraggers so that they remain a near c...
SoSFBool resizeHandles
If set to TRUE, handles will be resized at each camera motion.
SoTabBoxDragger()
Constructor.
SoSFBool enableHighlight
Enables highlighting for tabs and faces.
SoSFInt32 tabPixelSize
Specifies the size of the green tabs in pixels.
int SbBool
Boolean type.
Definition SbBase.h:87