Package org.graphstream.stream.file
Class FileSinkImages
java.lang.Object
org.graphstream.stream.file.FileSinkImages
- All Implemented Interfaces:
AttributeSink,ElementSink,FileSink,Sink
public abstract class FileSinkImages extends Object implements FileSink
Output graph in image files.
Given a prefix "dir/prefix_" and an output policy, this sink will output graph in an image file which name is prefix + a growing counter.
Then images can be processed to produce a movie. For example, with mencoder, the following produce high quality movie :
#!/bin/bash EXT=png BITRATE=2M FPS=15 PREFIX=$1 OUTPUT=$2 ffmpeg -framerate $FPS -i "$PREFIX%06d.$EXT" -b:v $BITRATE -r $FPS -an $OUTPUT
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classFileSinkImages.LayoutPolicyLayout policy.static classFileSinkImages.Optionstatic classFileSinkImages.OutputPolicyOutput policy.static classFileSinkImages.OutputTypeOutput image type.static classFileSinkImages.QualityDefines the quality of the rendering. -
Method Summary
Modifier and Type Method Description voidaddFilter(Filter filter)Add a filter.voidbegin(OutputStream stream)Begin the output of the given stream of graph events.voidbegin(Writer writer)Begin the output of the given stream of graph events.voidbegin(String prefix)Begin the output of the given stream of graph events.static FileSinkImagescreateDefault()Create a FileSinkImages object according to the UI module specified in "org.graphstream.ui" property.voidedgeAdded(String sourceId, long timeId, String edgeId, String fromNodeId, String toNodeId, boolean directed)An edge was inserted in graph.voidedgeAttributeAdded(String sourceId, long timeId, String edgeId, String attribute, Object value)A edge attribute was added.voidedgeAttributeChanged(String sourceId, long timeId, String edgeId, String attribute, Object oldValue, Object newValue)A edge attribute was changed.voidedgeAttributeRemoved(String sourceId, long timeId, String edgeId, String attribute)A edge attribute was removed.voidedgeRemoved(String sourceId, long timeId, String edgeId)An edge of graph was removed.The nodes the edge connects may already have been removed from the graph.voidend()End the writing process started withFileSink.begin(OutputStream)orFileSink.begin(String).voidflush()Ensure all data sent to the output are correctly written.Point3getViewCenter()doublegetViewPercent()voidgraphAttributeAdded(String sourceId, long timeId, String attribute, Object value)A graph attribute was added.voidgraphAttributeChanged(String sourceId, long timeId, String attribute, Object oldValue, Object newValue)A graph attribute was changed.voidgraphAttributeRemoved(String sourceId, long timeId, String attribute)A graph attribute was removed.voidgraphCleared(String sourceId, long timeId)The whole graph was cleared.static voidmain(String... args)voidnodeAdded(String sourceId, long timeId, String nodeId)A node was inserted in the given graph.voidnodeAttributeAdded(String sourceId, long timeId, String nodeId, String attribute, Object value)A node attribute was added.voidnodeAttributeChanged(String sourceId, long timeId, String nodeId, String attribute, Object oldValue, Object newValue)A node attribute was changed.voidnodeAttributeRemoved(String sourceId, long timeId, String nodeId, String attribute)A node attribute was removed.voidnodeRemoved(String sourceId, long timeId, String nodeId)A node was removed from the graph.voidoutputNewImage()Produce a new image.voidoutputNewImage(String filename)voidremoveFilter(Filter filter)Remove a filter.voidsetAutofit(boolean on)voidsetClearImageBeforeOutputEnabled(boolean on)voidsetGraphViewport(double minx, double miny, double maxx, double maxy)voidsetLayoutPolicy(FileSinkImages.LayoutPolicy policy)Set the layout policy.voidsetLayoutStabilizationLimit(double limit)Set the stabilization limit of the layout used to compute coordinates of nodes.voidsetLayoutStepAfterStabilization(int sas)Set the amount of steps after the stabilization of the algorithm.voidsetLayoutStepPerFrame(int spf)Set the amount of step before output a new image.voidsetOutputPolicy(FileSinkImages.OutputPolicy policy)Set the output policy.voidsetOutputRunnerDelay(long delay)voidsetOutputRunnerEnabled(boolean on)voidsetOutputType(FileSinkImages.OutputType outputType)Set the output type.voidsetQuality(FileSinkImages.Quality q)Enable high-quality rendering and anti-aliasing.voidsetResolution(int width, int height)Set a custom resolution.voidsetResolution(Resolution r)Set resolution of images.voidsetStyleSheet(String styleSheet)Defines style of the graph as a css stylesheet.voidsetViewCenter(double x, double y)voidsetViewPercent(double zoom)voidstabilizeLayout(double limit)voidstepBegins(String sourceId, long timeId, double step)Since dynamic graphs are based on discrete event modifications, the notion of step is defined to simulate elapsed time between events.static voidusage()voidwriteAll(Graph g, OutputStream stream)Write the current graph state in one big non-interruptible operation.voidwriteAll(Graph g, Writer writer)Write the current graph state in one big non-interruptible operation.voidwriteAll(Graph g, String filename)Write the current graph state in one big non-interruptible operation.
-
Method Details
-
createDefault
Create a FileSinkImages object according to the UI module specified in "org.graphstream.ui" property. If no valid module has been set null will be returned.- Returns:
- an implementation of FileSinkImages using the current UI module
-
setQuality
Enable high-quality rendering and anti-aliasing. -
setStyleSheet
Defines style of the graph as a css stylesheet.- Parameters:
styleSheet- the style sheet
-
setResolution
Set resolution of images.- Parameters:
r- resolution
-
setResolution
public void setResolution(int width, int height)Set a custom resolution.- Parameters:
width-height-
-
setOutputPolicy
Set the output policy.- Parameters:
policy- policy defining when images are produced
-
setOutputType
Set the output type.- Parameters:
outputType- type of outputted images
-
setLayoutPolicy
Set the layout policy.- Parameters:
policy- policy defining how the layout is computed
-
setLayoutStepPerFrame
public void setLayoutStepPerFrame(int spf)Set the amount of step before output a new image. This is used only in ByLayoutStepOutput output policy.- Parameters:
spf- step per frame
-
setLayoutStepAfterStabilization
public void setLayoutStepAfterStabilization(int sas)Set the amount of steps after the stabilization of the algorithm.- Parameters:
sas- step after stabilization.
-
setLayoutStabilizationLimit
public void setLayoutStabilizationLimit(double limit)Set the stabilization limit of the layout used to compute coordinates of nodes. SeeLayout.setStabilizationLimit(double)for more informations about this limit.- Parameters:
limit-
-
addFilter
Add a filter.- Parameters:
filter- the filter to add
-
removeFilter
Remove a filter.- Parameters:
filter- the filter to remove
-
setOutputRunnerEnabled
public void setOutputRunnerEnabled(boolean on) -
setOutputRunnerDelay
public void setOutputRunnerDelay(long delay) -
stabilizeLayout
public void stabilizeLayout(double limit) -
getViewCenter
-
setViewCenter
public void setViewCenter(double x, double y) -
getViewPercent
public double getViewPercent() -
setViewPercent
public void setViewPercent(double zoom) -
setGraphViewport
public void setGraphViewport(double minx, double miny, double maxx, double maxy) -
setClearImageBeforeOutputEnabled
public void setClearImageBeforeOutputEnabled(boolean on) -
setAutofit
public void setAutofit(boolean on) -
outputNewImage
public void outputNewImage()Produce a new image. -
outputNewImage
-
begin
Description copied from interface:FileSinkBegin the output of the given stream of graph events. The graph events can come from any input (implementation ofSourceor you can directly use the methods inherited fromSink. Once the writing is started using begin(), you must close it usingFileSink.end()when done to ensure data is correctly stored in the file.- Specified by:
beginin interfaceFileSink- Parameters:
stream- The file stream where to output the graph events.- Throws:
IOException- If an I/O error occurs while writing.
-
begin
Description copied from interface:FileSinkBegin the output of the given stream of graph events. The graph events can come from any input (implementation ofSourceor you can directly use the methods inherited fromSink. Once the writing is started using begin(), you must close it usingFileSink.end()when done to ensure data is correctly stored in the file.- Specified by:
beginin interfaceFileSink- Parameters:
writer- The writer where to output the graph events.- Throws:
IOException- If an I/O error occurs while writing.
-
begin
Description copied from interface:FileSinkBegin the output of the given stream of graph events. The graph events can come from any input (implementation ofSourceor you can directly use the methods inherited fromSink. Once the writing is started using begin(), you must close it usingFileSink.end()when done to ensure data is correctly stored in the file.- Specified by:
beginin interfaceFileSink- Parameters:
prefix- The name of the file where to output the graph events.- Throws:
IOException- If an I/O error occurs while writing.
-
flush
Description copied from interface:FileSinkEnsure all data sent to the output are correctly written.- Specified by:
flushin interfaceFileSink- Throws:
IOException- If an I/O error occurs during write.
-
end
Description copied from interface:FileSinkEnd the writing process started withFileSink.begin(OutputStream)orFileSink.begin(String).- Specified by:
endin interfaceFileSink- Throws:
IOException
-
writeAll
Description copied from interface:FileSinkWrite the current graph state in one big non-interruptible operation. This operation is a "snapshot" of the graph, it will never convey the dynamics of the graph. To ensure you store the graph "as it evolves in time" you must use theFileSink.begin(Writer)orFileSink.begin(OutputStream)orFileSink.begin(String)as soon as the graph appears (or any source of graph event, any descendant ofSourcewill do).- Specified by:
writeAllin interfaceFileSink- Parameters:
g- The graph to send as events to the file.stream- The stream where the graph is sent.- Throws:
IOException- if an I/O error occurs while writing.
-
writeAll
Description copied from interface:FileSinkWrite the current graph state in one big non-interruptible operation. This operation is a "snapshot" of the graph, it will never convey the dynamics of the graph. To ensure you store the graph "as it evolves in time" you must use theFileSink.begin(Writer)orFileSink.begin(OutputStream)orFileSink.begin(String)as soon as the graph appears (or any source of graph event, any descendant ofSourcewill do).- Specified by:
writeAllin interfaceFileSink- Parameters:
g- The graph to send as events to the file.writer- The writer where the graph is sent.- Throws:
IOException- if an I/O error occurs while writing.
-
writeAll
Description copied from interface:FileSinkWrite the current graph state in one big non-interruptible operation. This operation is a "snapshot" of the graph, it will never convey the dynamics of the graph. To ensure you store the graph "as it evolves in time" you must use theFileSink.begin(OutputStream)orFileSink.begin(String)as soon as the graph appears (or any source of graph event, any descendant ofSourcewill do).- Specified by:
writeAllin interfaceFileSink- Parameters:
g- The graph to send as events to the file.filename- Name of the file to write.- Throws:
IOException- if an I/O error occurs while writing.
-
edgeAttributeAdded
public void edgeAttributeAdded(String sourceId, long timeId, String edgeId, String attribute, Object value)Description copied from interface:AttributeSinkA edge attribute was added.- Specified by:
edgeAttributeAddedin interfaceAttributeSink- Parameters:
sourceId- Identifier of the graph where the change occurred.edgeId- Identifier of the edge whose attribute changed.attribute- The attribute name.value- The attribute new value.- See Also:
Sink
-
edgeAttributeChanged
public void edgeAttributeChanged(String sourceId, long timeId, String edgeId, String attribute, Object oldValue, Object newValue)Description copied from interface:AttributeSinkA edge attribute was changed.- Specified by:
edgeAttributeChangedin interfaceAttributeSink- Parameters:
sourceId- Identifier of the graph where the change occurred.edgeId- Identifier of the edge whose attribute changed.attribute- The attribute name.oldValue- The attribute old value.newValue- The attribute new value.- See Also:
Sink
-
edgeAttributeRemoved
Description copied from interface:AttributeSinkA edge attribute was removed.- Specified by:
edgeAttributeRemovedin interfaceAttributeSink- Parameters:
sourceId- Identifier of the graph where the attribute was removed.edgeId- Identifier of the edge whose attribute was removed.attribute- The removed attribute name.- See Also:
Sink
-
graphAttributeAdded
Description copied from interface:AttributeSinkA graph attribute was added.- Specified by:
graphAttributeAddedin interfaceAttributeSink- Parameters:
sourceId- Identifier of the graph where the attribute changed.attribute- The attribute name.value- The attribute new value.- See Also:
Sink
-
graphAttributeChanged
public void graphAttributeChanged(String sourceId, long timeId, String attribute, Object oldValue, Object newValue)Description copied from interface:AttributeSinkA graph attribute was changed.- Specified by:
graphAttributeChangedin interfaceAttributeSink- Parameters:
sourceId- Identifier of the graph where the attribute changed.attribute- The attribute name.oldValue- The attribute old value.newValue- The attribute new value.- See Also:
Sink
-
graphAttributeRemoved
Description copied from interface:AttributeSinkA graph attribute was removed.- Specified by:
graphAttributeRemovedin interfaceAttributeSink- Parameters:
sourceId- Identifier of the graph where the attribute was removed.attribute- The removed attribute name.- See Also:
Sink
-
nodeAttributeAdded
public void nodeAttributeAdded(String sourceId, long timeId, String nodeId, String attribute, Object value)Description copied from interface:AttributeSinkA node attribute was added.- Specified by:
nodeAttributeAddedin interfaceAttributeSink- Parameters:
sourceId- Identifier of the graph where the change occurred.nodeId- Identifier of the node whose attribute changed.attribute- The attribute name.value- The attribute new value.- See Also:
Sink
-
nodeAttributeChanged
public void nodeAttributeChanged(String sourceId, long timeId, String nodeId, String attribute, Object oldValue, Object newValue)Description copied from interface:AttributeSinkA node attribute was changed.- Specified by:
nodeAttributeChangedin interfaceAttributeSink- Parameters:
sourceId- Identifier of the graph where the change occurred.nodeId- Identifier of the node whose attribute changed.attribute- The attribute name.oldValue- The attribute old value.newValue- The attribute new value.- See Also:
Sink
-
nodeAttributeRemoved
Description copied from interface:AttributeSinkA node attribute was removed.- Specified by:
nodeAttributeRemovedin interfaceAttributeSink- Parameters:
sourceId- Identifier of the graph where the attribute was removed.nodeId- Identifier of the node whose attribute was removed.attribute- The removed attribute name.- See Also:
Sink
-
edgeAdded
public void edgeAdded(String sourceId, long timeId, String edgeId, String fromNodeId, String toNodeId, boolean directed)Description copied from interface:ElementSinkAn edge was inserted in graph.- Specified by:
edgeAddedin interfaceElementSink- Parameters:
sourceId- Identifier of the graph where the edge was added.edgeId- Identifier of the added edge.fromNodeId- Identifier of the first node of the edge.toNodeId- Identifier of the second node of the edge.directed- If true, the edge is directed.- See Also:
Sink
-
edgeRemoved
Description copied from interface:ElementSinkAn edge of graph was removed.The nodes the edge connects may already have been removed from the graph.- Specified by:
edgeRemovedin interfaceElementSink- Parameters:
sourceId- The graph where the edge will be removed.edgeId- The edge that will be removed.- See Also:
Sink
-
graphCleared
Description copied from interface:ElementSinkThe whole graph was cleared. All the nodes, edges and attributes of the graph are removed.- Specified by:
graphClearedin interfaceElementSink- Parameters:
sourceId- The graph cleared.- See Also:
Sink
-
nodeAdded
Description copied from interface:ElementSinkA node was inserted in the given graph.- Specified by:
nodeAddedin interfaceElementSink- Parameters:
sourceId- Identifier of the graph where the node was added.nodeId- Identifier of the added node.- See Also:
Sink
-
nodeRemoved
Description copied from interface:ElementSinkA node was removed from the graph.- Specified by:
nodeRemovedin interfaceElementSink- Parameters:
sourceId- Identifier of the graph where the node will be removed.nodeId- Identifier of the removed node.- See Also:
Sink
-
stepBegins
Description copied from interface:ElementSinkSince dynamic graphs are based on discrete event modifications, the notion of step is defined to simulate elapsed time between events. So a step is a event that occurs in the graph, it does not modify it but it gives a kind of timestamp that allow the tracking of the progress of the graph over the time.
This kind of event is useful for dynamic algorithms that listen to the dynamic graph and need to measure the time in the graph's evolution.
- Specified by:
stepBeginsin interfaceElementSink- Parameters:
sourceId- Identifier of the graph where the step starts.timeId- A numerical value that may give a timestamp to track the evolution of the graph over the time.- See Also:
Sink
-
usage
public static void usage() -
main
- Throws:
IOException
-