artisynth.core.probes
Class NumericOutputProbe

java.lang.Object
  extended by artisynth.core.modelbase.ModelComponentBase
      extended by artisynth.core.modelbase.ModelAgentBase
          extended by artisynth.core.probes.Probe
              extended by artisynth.core.probes.NumericProbeBase
                  extended by artisynth.core.probes.NumericOutputProbe
All Implemented Interfaces:
Displayable, CopyableComponent, HasState, ModelAgent, ModelComponent, java.lang.Cloneable, HasProperties, HierarchyNode, Scannable
Direct Known Subclasses:
TracingProbe

public class NumericOutputProbe
extends NumericProbeBase
implements CopyableComponent


Nested Class Summary
 
Nested classes/interfaces inherited from interface artisynth.core.modelbase.ModelComponent
ModelComponent.NavpanelVisibility
 
Field Summary
static PropertyList myProps
           
 
Fields inherited from class artisynth.core.probes.Probe
useOldSaveMethod, writeStartStopTimeInSeconds
 
Fields inherited from class artisynth.core.modelbase.ModelComponentBase
enforceUniqueCompositeNames, enforceUniqueNames, myNumber, NULL_OBJ, useCompactPathNames
 
Fields inherited from interface artisynth.core.modelbase.CopyableComponent
COPY_REFERENCES
 
Constructor Summary
NumericOutputProbe()
           
NumericOutputProbe(ModelComponent comp, java.lang.String propName, double startTime, double stopTime, double interval)
           
NumericOutputProbe(ModelComponent comp, java.lang.String propName, java.lang.String fileName, double interval)
           
NumericOutputProbe(Property[] props, double interval)
           
NumericOutputProbe(Property[] props, double interval, double ymin, double ymax)
           
 
Method Summary
 void apply(double t)
          Called when the probe is being applied to a model
 java.lang.Object clone()
           
 ModelComponent copy(int flags, java.util.Map<ModelComponent,ModelComponent> copyMap)
          Create a copy of this component.
 PropertyList getAllPropertyInfo()
          Returns a list giving static information about all properties exported by this object.
 boolean getCopyReferences(java.util.List<ModelComponent> refs, ModelComponent ancestor)
          Collects external references which must also be copied in order to duplicate this component.
 NumericList getOutput()
           
 boolean getShowHeader()
           
 boolean getShowTime()
           
 boolean isDuplicatable()
          Returns true if this component can be duplicated.
 void postscan(java.util.Deque<ScanToken> tokens, CompositeComponent ancestor)
          Performs any required post-scanning for this component.
 void save()
          When called (perhaps by the Artsynth timeline), causes information about this probe to be written to its attached file.
 void scan(ReaderTokenizer rtok, java.lang.Object ref)
          Scans this element from a ReaderTokenizer.
 boolean scanItem(ReaderTokenizer rtok, java.util.Deque<ScanToken> tokens)
           
 void set(Property[] props, java.lang.String[] driverExpressions, java.lang.String[] variableNames)
           
 void set(Property[] props, java.lang.String[] driverExpressions, java.lang.String[] variableNames, PlotTraceInfo[] traceInfos)
           
 void setAttachedFileName(java.lang.String fileName, java.lang.String fmtStr)
           
 void setAttachedFileName(java.lang.String fileName, java.lang.String fmtStr, boolean showTime, boolean showHeader)
           
 void setOutputProperties(Property[] props)
           
 void setShowHeader(boolean enable)
           
 void setShowTime(boolean enable)
           
 void write(java.io.PrintWriter pw, java.lang.String fmtStr, boolean showTime)
          Writes the start and stop times, scale value, and data for this probe to a PrintWriter, using the format described for NumericInputProbe.read(File).
 void writeData(java.io.PrintWriter pw, java.lang.String fmtStr, boolean showTime)
           
 void writeItems(java.io.PrintWriter pw, NumberFormat fmt, CompositeComponent ancestor)
          write components to a file
 
Methods inherited from class artisynth.core.probes.NumericProbeBase
applyDefaultDisplayRanges, createNumericList, decreaseDisplayRanges, dispose, getAttachedProperties, getData, getDefaultDisplayMax, getDefaultDisplayMin, getDefaultDisplayRange, getDisplay, getDrivers, getFormat, getInterpolation, getInterpolationOrder, getLegend, getMinMaxValues, getNumericList, getOrderedTraceIndex, getPlotTraceInfo, getRange, getRangeHints, getTraceColor, getTraceLabel, getValues, getVariables, getVsize, increaseDisplayRanges, isCloneable, isEmpty, isPrintable, isSmallDisplayVisible, isTraceVisible, isValidVariableName, print, removeDisplay, removeLegend, resetTraceColors, resetTraceOrder, scaleNumericList, setDefaultDisplayRange, setDefaultDisplayRange, setFormat, setInterpolation, setInterpolationOrder, setLegendLabels, setRangeHints, setScale, setSmallDisplayVisible, setTraceColor, setTraceLabel, setTraceOrder, setTraceVisible, setValues, swapPlotTraceOrder, updateDisplays, updateDisplays, updateDisplaysForPropertyChanges, updateDisplaysWithoutAutoRanging
 
Methods inherited from class artisynth.core.probes.Probe
createState, getAttachedFile, getAttachedFileName, getChildren, getDefaultScale, getDefaultStartTime, getDefaultStopTime, getDefaultUpdateInterval, getInitialState, getProperty, getScale, getStartTime, getState, getStopTime, getTimelineTime, getTrack, getUpdateInterval, getVirtualTime, hasAttachedFile, hasChildren, hasState, isActive, isAttachedFileRelative, isEventTime, isInput, isScalable, isSettable, load, nextEventTime, setActive, setAttachedFileName, setData, setName, setScalable, setStartStopTimes, setStartTime, setState, setStopTime, setTrack, setUpdateInterval
 
Methods inherited from class artisynth.core.modelbase.ModelAgentBase
finalize, getModel, initialize, setModel, setModelFromComponent, write
 
Methods inherited from class artisynth.core.modelbase.ModelComponentBase
checkFlag, checkName, checkNameUniqueness, clearFlag, connectToHierarchy, createTempFlag, disconnectFromHierarchy, getGrandParent, getHardReferences, getName, getNameRange, getNavpanelVisibility, getNavpanelVisibility, getNumber, getParent, getSoftReferences, isFixed, isMarked, isSelected, isWritable, makeValidName, makeValidName, notifyParentOfChange, printReferences, recursivelyContained, recursivelyContains, removeTempFlag, setFixed, setFlag, setMarked, setNavpanelVisibility, setNavpanelVisibility, setNumber, setParent, setSelected, updateReferences
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface artisynth.core.modelbase.ModelComponent
connectToHierarchy, disconnectFromHierarchy, getHardReferences, getName, getNavpanelVisibility, getNumber, getParent, getSoftReferences, hasState, isFixed, isMarked, isSelected, notifyParentOfChange, setFixed, setMarked, setName, setNumber, setParent, setSelected, updateReferences
 
Methods inherited from interface maspack.properties.HasProperties
getProperty
 
Methods inherited from interface maspack.properties.HierarchyNode
getChildren, hasChildren
 
Methods inherited from interface maspack.util.Scannable
isWritable, write
 

Field Detail

myProps

public static PropertyList myProps
Constructor Detail

NumericOutputProbe

public NumericOutputProbe()

NumericOutputProbe

public NumericOutputProbe(ModelComponent comp,
                          java.lang.String propName,
                          java.lang.String fileName,
                          double interval)

NumericOutputProbe

public NumericOutputProbe(ModelComponent comp,
                          java.lang.String propName,
                          double startTime,
                          double stopTime,
                          double interval)

NumericOutputProbe

public NumericOutputProbe(Property[] props,
                          double interval,
                          double ymin,
                          double ymax)

NumericOutputProbe

public NumericOutputProbe(Property[] props,
                          double interval)
Method Detail

getAllPropertyInfo

public PropertyList getAllPropertyInfo()
Description copied from interface: HasProperties
Returns a list giving static information about all properties exported by this object.

Specified by:
getAllPropertyInfo in interface HasProperties
Overrides:
getAllPropertyInfo in class NumericProbeBase
Returns:
static information for all exported properties

getShowTime

public boolean getShowTime()

setShowTime

public void setShowTime(boolean enable)

getShowHeader

public boolean getShowHeader()

setShowHeader

public void setShowHeader(boolean enable)

setOutputProperties

public void setOutputProperties(Property[] props)

write

public void write(java.io.PrintWriter pw,
                  java.lang.String fmtStr,
                  boolean showTime)
           throws java.io.IOException
Writes the start and stop times, scale value, and data for this probe to a PrintWriter, using the format described for NumericInputProbe.read(File). The format used for producing floating point numbers can be controlled using a printf-style format string, details of which are described in NumberFormat.

Parameters:
pw - writer which accepts the output
fmtStr - printf-style format string (if set to null then "%g" will be assumed, which will produce full precision output).
showTime - if true, then time values are written explicitly. Otherwise, an implicit step size corresponding to the value returned by getUpdateInterval will be specified.
Throws:
java.io.IOException - if an I/O error occurs.

setAttachedFileName

public void setAttachedFileName(java.lang.String fileName,
                                java.lang.String fmtStr)

setAttachedFileName

public void setAttachedFileName(java.lang.String fileName,
                                java.lang.String fmtStr,
                                boolean showTime,
                                boolean showHeader)

save

public void save()
          throws java.io.IOException
When called (perhaps by the Artsynth timeline), causes information about this probe to be written to its attached file.

Overrides:
save in class Probe
Throws:
java.io.IOException
See Also:
write(java.io.PrintWriter, java.lang.String, boolean)

writeData

public void writeData(java.io.PrintWriter pw,
                      java.lang.String fmtStr,
                      boolean showTime)

apply

public void apply(double t)
Description copied from class: Probe
Called when the probe is being applied to a model

Specified by:
apply in class NumericProbeBase

clone

public java.lang.Object clone()
                       throws java.lang.CloneNotSupportedException
Overrides:
clone in class NumericProbeBase
Throws:
java.lang.CloneNotSupportedException

getOutput

public NumericList getOutput()

scanItem

public boolean scanItem(ReaderTokenizer rtok,
                        java.util.Deque<ScanToken> tokens)
                 throws java.io.IOException
Throws:
java.io.IOException

scan

public void scan(ReaderTokenizer rtok,
                 java.lang.Object ref)
          throws java.io.IOException
Description copied from class: ModelComponentBase
Scans this element from a ReaderTokenizer. The expected text format is assumed to be compatible with that produced by write.

Specified by:
scan in interface ModelComponent
Specified by:
scan in interface Scannable
Overrides:
scan in class Probe
Parameters:
rtok - Tokenizer from which to scan the element
ref - optional reference object which can be used for resolving references to other objects
Throws:
java.io.IOException - if an I/O or formatting error occured

postscan

public void postscan(java.util.Deque<ScanToken> tokens,
                     CompositeComponent ancestor)
              throws java.io.IOException
Description copied from interface: ModelComponent
Performs any required post-scanning for this component. This involves handling any information whose processing was deferred during the scan() method and stored in the token queue. The most common use of this method is to resolve the paths of component references, which may not have been created at the time of the initial scan() call.

Specified by:
postscan in interface ModelComponent
Overrides:
postscan in class ModelComponentBase
Parameters:
tokens - token information that was stored during scan().
ancestor - ancestor component with respect to which reference component paths are defined.
Throws:
java.io.IOException

writeItems

public void writeItems(java.io.PrintWriter pw,
                       NumberFormat fmt,
                       CompositeComponent ancestor)
                throws java.io.IOException
Description copied from class: Probe
write components to a file

Throws:
java.io.IOException

set

public void set(Property[] props,
                java.lang.String[] driverExpressions,
                java.lang.String[] variableNames)

set

public void set(Property[] props,
                java.lang.String[] driverExpressions,
                java.lang.String[] variableNames,
                PlotTraceInfo[] traceInfos)

isDuplicatable

public boolean isDuplicatable()
Returns true if this component can be duplicated. Duplication means that we can expect to be able to make a complete copy of the component along with all it's external references. This method should return true if and only if CopyableComponent.getCopyReferences(java.util.List, artisynth.core.modelbase.ModelComponent) returns true.

This method is not currently used. It is intended to provide a faster way of determining if a component can be duplicated, without having to use CopyableComponent.getCopyReferences(java.util.List, artisynth.core.modelbase.ModelComponent) to build the list of copy references.

Specified by:
isDuplicatable in interface CopyableComponent
Returns:
true if this component can be duplicated.

getCopyReferences

public boolean getCopyReferences(java.util.List<ModelComponent> refs,
                                 ModelComponent ancestor)
Collects external references which must also be copied in order to duplicate this component. These references should exclude those which are contained within a specified component hierarchy. This method should return true if and only if CopyableComponent.isDuplicatable() returns true.

Specified by:
getCopyReferences in interface CopyableComponent
Parameters:
refs - list to which references are appended
ancestor - root node of the hierarchy from which references are to be excluded
Returns:
false if it is discovered that the component cannot be duplicated

copy

public ModelComponent copy(int flags,
                           java.util.Map<ModelComponent,ModelComponent> copyMap)
Description copied from interface: CopyableComponent
Create a copy of this component. If COPY_REFERENCES is set in flags, then any component referenced by this component should itself be set to a copy. This should be done first checking copyMap for an existing copy of the referenced component. If there is no existing copy, then a copy should be created by calling copy recursively and adding the new copy to copyMap.

Specified by:
copy in interface CopyableComponent
Overrides:
copy in class ModelComponentBase