java.lang.Object
de.grogra.graph.impl.Edge
de.grogra.graph.impl.Node
de.grogra.imp.edit.ToolRoot
de.grogra.imp3d.edit.ToolRoot3D
- All Implemented Interfaces:
Transformation
,Manageable
,PersistenceCapable
,Shareable
,UserFields
,XObject
,Disposable
,EventListener
,Map
,Serializable
,EventListener
- Direct Known Subclasses:
TransformTool
This class is the base class for roots of tool graphs which
manipulate 3D objects (the latter are called tool targets).
It defines three coordinate systems:
- The parent coordinate system is the coordinate system of the parent object of the tool target.
- The target coordinate system is the coordinate system
of the tool target. It is computed by the method
computeTargetTransformation(Matrix4d, Matrix4d)
based on the global transformation of the parent coordinate system. - The tool coordinate system is the coordinate system of the tool graph. Normally, the translational and rotational components of its transformation matrix are equal to those of the target coordinate system. However, the scaling factors differ to ensure a constant size of the tool handles (independent of the size of the tool target).
Transformation
such that its local coordinates correspond to the tool coordinate system.- Author:
- Ole Kniemeyer
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class de.grogra.graph.impl.Node
Node.AccessorBridge, Node.FieldAttributeAccessor, Node.NType
Nested classes/interfaces inherited from interface de.grogra.util.EventListener
EventListener.Bicast, EventListener.Multicaster
-
Field Summary
FieldsFields inherited from class de.grogra.graph.impl.Node
ADDITIONAL_FIELDS, bits, DELETED, EXTENT_BIT, EXTENT_MASK, extentIndex$FIELD, extentTail$FIELD, HAS_OBSERVERS, IS_INTERPRETIVE, isInterpretive$FIELD, LAST_EXTENT_INDEX, layer$FIELD, MARK, mark$FIELD, MAX_RESOLUTION, MIME_TYPE, MIN_RESOLUTION, MIN_UNUSED_SPECIAL_OF_SOURCE, MIN_UNUSED_SPECIAL_OF_TARGET, name$FIELD, RESOLUTION_BIT, RESOLUTION_MASK, resolution$FIELD, USED_BITS
Fields inherited from interface de.grogra.util.Map
DEFAULT_VALUE, EMPTY_MAP
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected static final void
adjustScale
(Matrix4d t, CameraBase c, float scale) protected void
This method is invoked to compute an adjustment of the tool coordinates system.protected void
This method is invoked to notify the tool root about modifications of attributes of the tool target.protected abstract void
computeTargetTransformation
(Matrix4d t, Matrix4d parent) This method is invoked to compute the transformation matrix from target coordinates to world coordinates, based on the transformation matrix from parent coordinates to world coordinates.void
dispose()
void
This method implements theEventListener
-interface.protected final Matrix4d
This method returns the adjustment matrix from tool coordinates to target coordinates.protected final Matrix4d
This method returns the transformation matrix from parent coordinates to world coordinates.protected final Matrix4d
This method returns the transformation matrix from target coordinates to world coordinates.protected final Matrix4d
This method returns the transformation matrix from tool coordinates to world coordinates.protected boolean
initialize
(Tool tool) Initializes this tool root.void
postTransform
(Object object, boolean asNode, Matrix4d in, Matrix4d out, Matrix4d pre, GraphState gs) Implements the change from object's transformationin
to the object's post-transformationout
.void
preTransform
(Object object, boolean asNode, Matrix4d in, Matrix4d out, GraphState gs) Implements the change from the parent's post-transformationin
to the object's transformationout
.Methods inherited from class de.grogra.imp.edit.ToolRoot
executeWithWriteLock, getToolTarget, isTargetNode
Methods inherited from class de.grogra.graph.impl.Node
addEdgeBitsTo, addReference, appendBranchNode, appendBranchNode, appendReferencesTo, clone, clone, cloneGraph, dump, dumpTree, dup, dupFrom, dupnew, dupUnmanagedFields, edgeChanged, fieldModified, findAdjacent, findRefinementType, get, getAccessor, getAccessor, getAttributes, getAxisParent, getBoolean, getBranch, getBranchLength, getBranchNode, getBranchTail, getByte, getChar, getCommonAncestor, getCurrentGraphState, getDirectChildCount, getDouble, getEdgeAttributeAccessor, getEdgeAttributes, getEdgeBitsTo, getEdgeTo, getExtentIndex, getFirst, getFirstEdge, getFloat, getGraph, getId, getIgnored, getIndex, getInstantiator, getInt, getLayer, getLong, getManageableType, getName, getNeighbor, getNext, getNType, getNTypeImpl, getObject, getOrCreateEdgeTo, getOrNull, getPersistenceManager, getPredecessor, getProvider, getResolution, getShort, getSource, getStamp, getSuccessor, getSymbol, getSymbolColor, getTarget, getTransaction, getUserField, getUserFieldCount, getXClass, getXData, hasName, initProvider, initXClass, insertBranchNode, insertBranchNode, instantiateGraph, isAncestorOf, isDirection, isEncoarseOf, isManagingInstance, isMarked, isRoot, isSource, isTarget, manageableReadResolve, manageableWriteReplace, newInstance, paramString, removeAll, removeEdgeBitsTo, removeFromChain, removeFromChain, removeReference, setBranch, setBranch, setExtentIndex, setGraphForDeserialization, setIgnored, setLayer, setMark, setName, setResolution, setSuccessor, setSuccessor, specialEdgeAdded, specialEdgeRefModified, specialEdgeRemoved, toString, writeReplace
Methods inherited from class de.grogra.graph.impl.Edge
addEdgeBits, getBitMark, getEdgeBits, getEdgeKeys, getObjectMark, getSpecialEdgeDescriptor, parseEdgeKeys, remove, removeEdgeBits, setBitMark, setEdgeBits, setObjectMark, testEdgeBits
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface de.grogra.persistence.PersistenceCapable
getBitMark, getObjectMark, setBitMark, setObjectMark
-
Field Details
-
$TYPE
-
-
Constructor Details
-
ToolRoot3D
public ToolRoot3D()
-
-
Method Details
-
initialize
Description copied from class:ToolRoot
Initializes this tool root. This method initializes the fieldToolRoot.tool
with the giventool
.- Overrides:
initialize
in classToolRoot
- Parameters:
tool
- the tool to which this tool root is associated- Returns:
true
if this tool root actually shall be used for the tool,false
if it shall not be used (e.g., if the actual tool target cannot be manipulated by the tool graph of this tool root).
-
dispose
public void dispose()- Specified by:
dispose
in interfaceDisposable
-
eventOccured
This method implements theEventListener
-interface. If this method is overriden, it has to be invoked by the overriding method.- Specified by:
eventOccured
in interfaceEventListener
- Parameters:
e
- an event
-
attributeChanged
Description copied from class:ToolRoot
This method is invoked to notify the tool root about modifications of attributes of the tool target.- Specified by:
attributeChanged
in classToolRoot
- Parameters:
a
- an array of attributes which have changed
-
preTransform
Description copied from interface:Transformation
Implements the change from the parent's post-transformationin
to the object's transformationout
.- Specified by:
preTransform
in interfaceTransformation
- Parameters:
object
- the object for which the transformation is computedasNode
- isobject
a node or an edge?in
- the post-transformation of the object's parentout
- the tranformation of the object to be computedgs
- the graph state in which the computation has to be done
-
postTransform
public void postTransform(Object object, boolean asNode, Matrix4d in, Matrix4d out, Matrix4d pre, GraphState gs) Description copied from interface:Transformation
Implements the change from object's transformationin
to the object's post-transformationout
.- Specified by:
postTransform
in interfaceTransformation
- Parameters:
object
- the object for which the transformation is computedasNode
- isobject
a node or an edge?in
- the transformation of the objectout
- the post-tranformation of the object to be computedpre
- the post-transformation of the object's parentgs
- the graph state in which the computation has to be done
-
getParentTransformation
This method returns the transformation matrix from parent coordinates to world coordinates.- Returns:
- the transformation matrix of the parent coordinate system
- See Also:
-
getTargetTransformation
This method returns the transformation matrix from target coordinates to world coordinates.- Returns:
- the transformation matrix of the target coordinate system
- See Also:
-
getToolTransformation
This method returns the transformation matrix from tool coordinates to world coordinates.- Returns:
- the transformation matrix of the tool coordinate system
- See Also:
-
getAdjustment
This method returns the adjustment matrix from tool coordinates to target coordinates.- Returns:
- the adjustment between tool and target coordinates
-
computeTargetTransformation
This method is invoked to compute the transformation matrix from target coordinates to world coordinates, based on the transformation matrix from parent coordinates to world coordinates.- Parameters:
t
- the computed matrix has to be placed in hereparent
- the global transformation of parent coordinates
-
adjustToolTransformation
This method is invoked to compute an adjustment of the tool coordinates system. The invoker setst
to the transformation matrix from target coordinates to world coordinates. Implementations of this method may adjustt
, e.g., they may set a certain scaling factor between tool coordinates and camera coordinates in order to ensure a fixed size of tool nodes on the 3D view.- Parameters:
t
- the tool transformation to be adjustedc
- the camera of the tool's 3D view
-
adjustScale
-