org.graphstream.stream.file
Class FileSinkImages

java.lang.Object
  extended by org.graphstream.stream.file.FileSinkImages
All Implemented Interfaces:
AttributeSink, ElementSink, FileSink, Sink

public 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
 CODEC=msmpeg4v2
 BITRATE=6000
 OPT="vcodec=mpeg4:vqscale=2:vhq:v4mv:trell:autoaspect"
 FPS=15
 PREFIX=$1
 OUTPUT=$2
 
 mencoder "mf://$PREFIX*.$EXT" -mf fps=$FPS:type=$EXT -ovc lavc -lavcopts $OPTS -o $OUTPUT -nosound -vf scale
 
 


Nested Class Summary
static class FileSinkImages.CustomResolution
          User-defined resolution.
static class FileSinkImages.LayoutPolicy
          Layout policy.
static class FileSinkImages.Option
           
static class FileSinkImages.OutputPolicy
          Output policy.
static class FileSinkImages.OutputType
          Output image type.
static interface FileSinkImages.PostRenderer
          Defines post rendering action on images.
static class FileSinkImages.Quality
           
static class FileSinkImages.RendererType
          Experimental.
static interface FileSinkImages.Resolution
          Output resolutions.
static class FileSinkImages.Resolutions
          Common resolutions.
 
Constructor Summary
FileSinkImages()
           
FileSinkImages(FileSinkImages.OutputType type, FileSinkImages.Resolution resolution)
           
FileSinkImages(String prefix, FileSinkImages.OutputType type, FileSinkImages.Resolution resolution, FileSinkImages.OutputPolicy outputPolicy)
           
 
Method Summary
 void addLogo(String logoFile, int x, int y)
          Add a logo on images.
 void begin(OutputStream stream)
          Begin the output of the given stream of graph events.
 void begin(String prefix)
          Begin the output of the given stream of graph events.
 void begin(Writer writer)
          Begin the output of the given stream of graph events.
 void edgeAdded(String sourceId, long timeId, String edgeId, String fromNodeId, String toNodeId, boolean directed)
          An edge was inserted in graph.
 void edgeAttributeAdded(String sourceId, long timeId, String edgeId, String attribute, Object value)
          A edge attribute was added.
 void edgeAttributeChanged(String sourceId, long timeId, String edgeId, String attribute, Object oldValue, Object newValue)
          A edge attribute was changed.
 void edgeAttributeRemoved(String sourceId, long timeId, String edgeId, String attribute)
          A edge attribute was removed.
 void edgeRemoved(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.
 void end()
          End the writing process started with FileSink.begin(OutputStream) or FileSink.begin(String).
 void flush()
          Ensure all data sent to the output are correctly written.
 Point3 getViewCenter()
           
 double getViewPercent()
           
 void graphAttributeAdded(String sourceId, long timeId, String attribute, Object value)
          A graph attribute was added.
 void graphAttributeChanged(String sourceId, long timeId, String attribute, Object oldValue, Object newValue)
          A graph attribute was changed.
 void graphAttributeRemoved(String sourceId, long timeId, String attribute)
          A graph attribute was removed.
 void graphCleared(String sourceId, long timeId)
          The whole graph was cleared.
static void main(String... args)
           
 void nodeAdded(String sourceId, long timeId, String nodeId)
          A node was inserted in the given graph.
 void nodeAttributeAdded(String sourceId, long timeId, String nodeId, String attribute, Object value)
          A node attribute was added.
 void nodeAttributeChanged(String sourceId, long timeId, String nodeId, String attribute, Object oldValue, Object newValue)
          A node attribute was changed.
 void nodeAttributeRemoved(String sourceId, long timeId, String nodeId, String attribute)
          A node attribute was removed.
 void nodeRemoved(String sourceId, long timeId, String nodeId)
          A node was removed from the graph.
 void outputNewImage()
          Produce a new image.
 void outputNewImage(String filename)
           
 void setClearImageBeforeOutputEnabled(boolean on)
           
 void setLayoutPolicy(FileSinkImages.LayoutPolicy policy)
          Set the layout policy.
 void setLayoutStabilizationLimit(double limit)
          Set the stabilization limit of the layout used to compute coordinates of nodes.
 void setLayoutStepAfterStabilization(int sas)
          Set the amount of steps after the stabilization of the algorithm.
 void setLayoutStepPerFrame(int spf)
          Set the amount of step before output a new image.
 void setOutputPolicy(FileSinkImages.OutputPolicy policy)
          Set the output policy.
 void setOutputRunnerDelay(long delay)
           
 void setOutputRunnerEnabled(boolean on)
           
 void setQuality(FileSinkImages.Quality q)
          Enable high-quality rendering and anti-aliasing.
 void setRenderer(FileSinkImages.RendererType rendererType)
          Set the renderer type.
 void setResolution(FileSinkImages.Resolution r)
          Set resolution of images.
 void setResolution(int width, int height)
          Set a custom resolution.
 void setStyleSheet(String styleSheet)
          Defines style of the graph as a css stylesheet.
 void setViewCenter(double x, double y)
           
 void setViewPercent(double zoom)
           
 void stabilizeLayout(double limit)
           
 void stepBegins(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 void usage()
           
 void writeAll(Graph g, OutputStream stream)
          Write the current graph state in one big non-interruptible operation.
 void writeAll(Graph g, String filename)
          Write the current graph state in one big non-interruptible operation.
 void writeAll(Graph g, Writer writer)
          Write the current graph state in one big non-interruptible operation.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

FileSinkImages

public FileSinkImages()

FileSinkImages

public FileSinkImages(FileSinkImages.OutputType type,
                      FileSinkImages.Resolution resolution)

FileSinkImages

public FileSinkImages(String prefix,
                      FileSinkImages.OutputType type,
                      FileSinkImages.Resolution resolution,
                      FileSinkImages.OutputPolicy outputPolicy)
Method Detail

setQuality

public void setQuality(FileSinkImages.Quality q)
Enable high-quality rendering and anti-aliasing.


setStyleSheet

public void setStyleSheet(String styleSheet)
Defines style of the graph as a css stylesheet.

Parameters:
styleSheet - the style sheet

setResolution

public void setResolution(FileSinkImages.Resolution r)
Set resolution of images.

Parameters:
r - resolution

setResolution

public void setResolution(int width,
                          int height)
Set a custom resolution.

Parameters:
width -
height -

setRenderer

public void setRenderer(FileSinkImages.RendererType rendererType)
Set the renderer type. This is experimental.

Parameters:
rendererType -

setOutputPolicy

public void setOutputPolicy(FileSinkImages.OutputPolicy policy)
Set the output policy.

Parameters:
policy - policy defining when images are produced

setLayoutPolicy

public void setLayoutPolicy(FileSinkImages.LayoutPolicy policy)
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. See Layout.setStabilizationLimit(double) for more informations about this limit.

Parameters:
limit -

addLogo

public void addLogo(String logoFile,
                    int x,
                    int y)
Add a logo on images.

Parameters:
logoFile - path to the logo picture-file
x - x position of the logo (top-left corner is (0;0))
y - y position of the logo

setOutputRunnerEnabled

public void setOutputRunnerEnabled(boolean on)

setOutputRunnerDelay

public void setOutputRunnerDelay(long delay)

stabilizeLayout

public void stabilizeLayout(double limit)

getViewCenter

public Point3 getViewCenter()

setViewCenter

public void setViewCenter(double x,
                          double y)

getViewPercent

public double getViewPercent()

setViewPercent

public void setViewPercent(double zoom)

setClearImageBeforeOutputEnabled

public void setClearImageBeforeOutputEnabled(boolean on)

outputNewImage

public void outputNewImage()
Produce a new image.


outputNewImage

public void outputNewImage(String filename)

begin

public void begin(OutputStream stream)
           throws IOException
Description copied from interface: FileSink
Begin the output of the given stream of graph events. The graph events can come from any input (implementation of Source or you can directly use the methods inherited from Sink. Once the writing is started using begin(), you must close it using FileSink.end() when done to ensure data is correctly stored in the file.

Specified by:
begin in interface FileSink
Parameters:
stream - The file stream where to output the graph events.
Throws:
IOException - If an I/O error occurs while writing.

begin

public void begin(Writer writer)
           throws IOException
Description copied from interface: FileSink
Begin the output of the given stream of graph events. The graph events can come from any input (implementation of Source or you can directly use the methods inherited from Sink. Once the writing is started using begin(), you must close it using FileSink.end() when done to ensure data is correctly stored in the file.

Specified by:
begin in interface FileSink
Parameters:
writer - The writer where to output the graph events.
Throws:
IOException - If an I/O error occurs while writing.

begin

public void begin(String prefix)
           throws IOException
Description copied from interface: FileSink
Begin the output of the given stream of graph events. The graph events can come from any input (implementation of Source or you can directly use the methods inherited from Sink. Once the writing is started using begin(), you must close it using FileSink.end() when done to ensure data is correctly stored in the file.

Specified by:
begin in interface FileSink
Parameters:
prefix - The name of the file where to output the graph events.
Throws:
IOException - If an I/O error occurs while writing.

flush

public void flush()
           throws IOException
Description copied from interface: FileSink
Ensure all data sent to the output are correctly written.

Specified by:
flush in interface FileSink
Throws:
IOException - If an I/O error occurs during write.

end

public void end()
         throws IOException
Description copied from interface: FileSink
End the writing process started with FileSink.begin(OutputStream) or FileSink.begin(String).

Specified by:
end in interface FileSink
Throws:
IOException

writeAll

public void writeAll(Graph g,
                     OutputStream stream)
              throws IOException
Description copied from interface: FileSink
Write 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 the FileSink.begin(Writer) or FileSink.begin(OutputStream) or FileSink.begin(String) as soon as the graph appears (or any source of graph event, any descendant of Source will do).

Specified by:
writeAll in interface FileSink
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

public void writeAll(Graph g,
                     Writer writer)
              throws IOException
Description copied from interface: FileSink
Write 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 the FileSink.begin(Writer) or FileSink.begin(OutputStream) or FileSink.begin(String) as soon as the graph appears (or any source of graph event, any descendant of Source will do).

Specified by:
writeAll in interface FileSink
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

public void writeAll(Graph g,
                     String filename)
              throws IOException
Description copied from interface: FileSink
Write 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 the FileSink.begin(OutputStream) or FileSink.begin(String) as soon as the graph appears (or any source of graph event, any descendant of Source will do).

Specified by:
writeAll in interface FileSink
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: AttributeSink
A edge attribute was added.

Specified by:
edgeAttributeAdded in interface AttributeSink
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: AttributeSink
A edge attribute was changed.

Specified by:
edgeAttributeChanged in interface AttributeSink
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

public void edgeAttributeRemoved(String sourceId,
                                 long timeId,
                                 String edgeId,
                                 String attribute)
Description copied from interface: AttributeSink
A edge attribute was removed.

Specified by:
edgeAttributeRemoved in interface AttributeSink
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

public void graphAttributeAdded(String sourceId,
                                long timeId,
                                String attribute,
                                Object value)
Description copied from interface: AttributeSink
A graph attribute was added.

Specified by:
graphAttributeAdded in interface AttributeSink
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: AttributeSink
A graph attribute was changed.

Specified by:
graphAttributeChanged in interface AttributeSink
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

public void graphAttributeRemoved(String sourceId,
                                  long timeId,
                                  String attribute)
Description copied from interface: AttributeSink
A graph attribute was removed.

Specified by:
graphAttributeRemoved in interface AttributeSink
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: AttributeSink
A node attribute was added.

Specified by:
nodeAttributeAdded in interface AttributeSink
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: AttributeSink
A node attribute was changed.

Specified by:
nodeAttributeChanged in interface AttributeSink
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

public void nodeAttributeRemoved(String sourceId,
                                 long timeId,
                                 String nodeId,
                                 String attribute)
Description copied from interface: AttributeSink
A node attribute was removed.

Specified by:
nodeAttributeRemoved in interface AttributeSink
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: ElementSink
An edge was inserted in graph.

Specified by:
edgeAdded in interface ElementSink
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

public void edgeRemoved(String sourceId,
                        long timeId,
                        String edgeId)
Description copied from interface: ElementSink
An edge of graph was removed.The nodes the edge connects may already have been removed from the graph.

Specified by:
edgeRemoved in interface ElementSink
Parameters:
sourceId - The graph where the edge will be removed.
edgeId - The edge that will be removed.
See Also:
Sink

graphCleared

public void graphCleared(String sourceId,
                         long timeId)
Description copied from interface: ElementSink
The whole graph was cleared. All the nodes, edges and attributes of the graph are removed.

Specified by:
graphCleared in interface ElementSink
Parameters:
sourceId - The graph cleared.
See Also:
Sink

nodeAdded

public void nodeAdded(String sourceId,
                      long timeId,
                      String nodeId)
Description copied from interface: ElementSink
A node was inserted in the given graph.

Specified by:
nodeAdded in interface ElementSink
Parameters:
sourceId - Identifier of the graph where the node was added.
nodeId - Identifier of the added node.
See Also:
Sink

nodeRemoved

public void nodeRemoved(String sourceId,
                        long timeId,
                        String nodeId)
Description copied from interface: ElementSink
A node was removed from the graph.

Specified by:
nodeRemoved in interface ElementSink
Parameters:
sourceId - Identifier of the graph where the node will be removed.
nodeId - Identifier of the removed node.
See Also:
Sink

stepBegins

public void stepBegins(String sourceId,
                       long timeId,
                       double step)
Description copied from interface: ElementSink

Since 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:
stepBegins in interface ElementSink
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

public static void main(String... args)
                 throws IOException
Throws:
IOException


Copyright © 2012. All Rights Reserved.