Overview | Package | Class | Tree | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## de.grogra.imp3d
Class Visitor3D

    java.lang.Object
      de.grogra.imp3d.Visitor3D

All Implemented Interfaces:
  Visitor

Direct Known Subclasses:
  DisplayVisitor, PickRayVisitor

    public abstract class Visitor3D

extends java.lang.Object
implements Visitor

This base implementation of the `Visitor` interface tracks information about the current coordinate transformation and layer of objects. Invocations of `visit` methods are forwarded to the abstract methods `visitEnterImpl(Object, boolean, Path)` and `visitLeaveImpl(Object, boolean, Path)`.

Author:
  Ole Kniemeyer

Field Summary
`protected int` | `layer` The current layer.
`protected GraphState` | `state` The graph state in which this visitor runs.
`protected Matrix4d` | `transformation` The current transformation from local coordinates to global coordinates.

Fields inherited from interface de.grogra.graph.Visitor
`STOP`

Constructor Summary
`Visitor3D()`

Method Summary
`Matrix4d` | `getCurrentTransformation()` Returns the current affine transformation from local coordinates to global coordinates.
`GraphState` | `getGraphState()` Returns the graph state within which the visitor is operating.
`protected void` | `init(GraphState gs, EdgePattern pattern, Matrix4d t)` Initializes this visitor.
`protected java.lang.Object` | `visitEnter(java.lang.Object object, boolean asNode, Path path)`
`java.lang.Object` | `visitEnter(Path path, boolean node)` Informs this visitor about a node or edge in the graph.
`protected abstract void` | `visitEnterImpl(java.lang.Object object, boolean asNode, Path path)` This method has to be implemented by subclasses.
`java.lang.Object` | `visitInstanceEnter()` Informs this visitor about the beginning of an instantiation.
`boolean` | `visitInstanceLeave(java.lang.Object o)` Informs this visitor that an instantiation has been processed completely.
`boolean` | `visitLeave(java.lang.Object o, Path path, boolean node)` Informs this visitor that a node or an edge has been processed completely.
`protected abstract void` | `visitLeaveImpl(java.lang.Object object, boolean asNode, Path path)` This method has to be implemented by subclasses.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### layer

    protected int layer

  The current layer.

### state

    protected GraphState state

  The graph state in which this visitor runs.

### transformation

    protected Matrix4d transformation

  The current transformation from local coordinates to global coordinates.

Constructor Detail

### Visitor3D

    public Visitor3D()

Method Detail

### getCurrentTransformation

    public Matrix4d getCurrentTransformation()

  Returns the current affine transformation from local coordinates to global coordinates.

  Returns:
    current coordinate transformation

### getGraphState

    public GraphState getGraphState()

  Description copied from interface: `Visitor`
  Returns the graph state within which the visitor is operating.

  Specified by:
    `getGraphState` in interface `Visitor`
  Returns:
    graph state of visitor

### init

    protected void init(GraphState gs,
                        EdgePattern pattern,
                        Matrix4d t)

  Initializes this visitor.

  Parameters:
    `gs` - the graph state in which the visitor runs
    `pattern` - the pattern which is used to extract the scene tree to visit from the complete graph
    `t` - the initial transformation from local to global coordinates

### visitEnter

    protected java.lang.Object visitEnter(java.lang.Object object,
                                          boolean asNode,
                                          Path path)

### visitEnter

    public java.lang.Object visitEnter(Path path,
                                       boolean node)

  Description copied from interface: `Visitor`
  Informs this visitor about a node or edge in the graph. `path` contains the path from the root up to and including the node or, in case an edge is visited, the edge and its terminal node. Later on, `Visitor.visitLeave(java.lang.Object, de.grogra.graph.Path, boolean)` will be invoked with the returned value of this invocation, `path` and `node` as arguments. If this method returns `Visitor.STOP`, the corresponding `visitLeave`-method will be invoked immediately after this method, i.e., the visitor does not dive more deeply in the hierarchy. Otherwise, if a node is visited and there are instantiations associated with or edges connected with it (regardless of their direction), their corresponding visitor methods will be invoked inbetween. Likewise, if an edge is visited, its indicent terminal node will be visited next.

  Specified by:
    `visitEnter` in interface `Visitor`
  Parameters:
    `path` - current path
    `node` - do we enter a node or an edge?
  Returns:
    value to pass to `visitLeave`, may be `Visitor.STOP`

### visitEnterImpl

    protected abstract void visitEnterImpl(java.lang.Object object,
                                           boolean asNode,
                                           Path path)

  This method has to be implemented by subclasses. It is invoked when `object` is entered.

  Parameters:
    `object` - the object being entered
    `asNode` - is `object` a node or an edge?
    `path` - the path to `object` if `object` is a node, the path to the node where `object` points to if `object` is an edge

### visitInstanceEnter

    public java.lang.Object visitInstanceEnter()

  Description copied from interface: `Visitor`
  Informs this visitor about the beginning of an instantiation. This method invokation is nested immediately within `visitEnter`/`visitLeave` of a node. Later on, `Visitor.visitInstanceLeave(Object)` will be invoked with the returned value of this invocation as argument. If this method returns `Visitor.STOP`, the `visitInstanceLeave`-method will be invoked immediately after this method, i.e., the visitor does not dive into the instantiation. Otherwise, the instantiation is performed, starting with an edge.

  Specified by:
    `visitInstanceEnter` in interface `Visitor`
  Returns:
    value to pass to `visitInstanceLeave`, may be `Visitor.STOP`

### visitInstanceLeave

    public boolean visitInstanceLeave(java.lang.Object o)

  Description copied from interface: `Visitor`
  Informs this visitor that an instantiation has been processed completely. The value `o` is the return value of the corresponding invocation of `Visitor.visitInstanceEnter()`. If this invocation returns `false`, no further instantiations or edges of the current level of hierarchy will be passed to this visitor, i.e., the `visitLeave` method for the enclosing node will be invoked immediately.

  Specified by:
    `visitInstanceLeave` in interface `Visitor`
  Parameters:
    `o` - returned value of `visitInstanceEnter`
  Returns:
    `true` iff processing of current level shall be continued

### visitLeave

    public boolean visitLeave(java.lang.Object o,
                              Path path,
                              boolean node)

  Description copied from interface: `Visitor`
  Informs this visitor that a node or an edge has been processed completely. The value `o` is the return value of the corresponding invocation of `Visitor.visitEnter(de.grogra.graph.Path, boolean)`. In case of a node and if this invocation returns `false`, no further edges of the current level of hierarchy will be passed to this visitor, i.e., the `visitLeave` methods for the enclosing edge and node will be invoked immediately. Likewise, in case of an edge and a return value `false`, no further instantiations or edges of the current level of hierarchy will be passed to this visitor, i.e., the `visitLeave` method for the enclosing node will be invoked immediately.

  Specified by:
    `visitLeave` in interface `Visitor`
  Parameters:
    `o` - returned value of `visitEnter`
    `path` - current path to `node`
    `node` - do we leave a node or an edge?
  Returns:
    `true` iff processing of current level shall be continued

### visitLeaveImpl

    protected abstract void visitLeaveImpl(java.lang.Object object,
                                           boolean asNode,
                                           Path path)

  This method has to be implemented by subclasses. It is invoked when `object` is left.

  Parameters:
    `object` - the object being left
    `asNode` - is `object` a node or an edge?
    `path` - the path to `object` if `object` is a node, the path to the node where `object` points to if `object` is an edge

Overview | Package | Class | Tree | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD