public class FileSinkImages extends Object implements FileSink
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
Modifier and Type | Class and Description |
---|---|
protected static class |
FileSinkImages.AddLogoRenderer
Post rendering action allowing to add a logo-picture on images.
|
static class |
FileSinkImages.CustomResolution
User-defined resolution.
|
protected class |
FileSinkImages.InnerLayoutRunner |
static class |
FileSinkImages.LayoutPolicy
Layout policy.
|
static class |
FileSinkImages.Option |
static class |
FileSinkImages.OutputPolicy
Output policy.
|
protected class |
FileSinkImages.OutputRunner |
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 and Description |
---|
FileSinkImages() |
FileSinkImages(FileSinkImages.OutputType type,
FileSinkImages.Resolution resolution) |
FileSinkImages(String prefix,
FileSinkImages.OutputType type,
FileSinkImages.Resolution resolution,
FileSinkImages.OutputPolicy outputPolicy) |
Modifier and Type | Method and Description |
---|---|
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.
|
protected void |
clearGG() |
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.
|
protected void |
initImage() |
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) |
protected void |
printProgress() |
void |
setAutofit(boolean on) |
void |
setClearImageBeforeOutputEnabled(boolean on) |
void |
setGraphViewport(double minx,
double miny,
double maxx,
double maxy) |
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.
|
protected FileSinkImages.Resolution resolution
protected FileSinkImages.OutputType outputType
protected GraphRenderer renderer
protected String filePrefix
protected BufferedImage image
protected Graphics2D g2d
protected final GraphicGraph gg
protected int counter
protected FileSinkImages.OutputPolicy outputPolicy
protected LinkedList<FileSinkImages.PostRenderer> postRenderers
protected FileSinkImages.LayoutPolicy layoutPolicy
protected LayoutRunner optLayout
protected ProxyPipe layoutPipeIn
protected float layoutStabilizationLimit
protected int layoutStepAfterStabilization
protected int layoutStepPerFrame
protected int layoutStepWithoutFrame
protected long outputRunnerDelay
protected boolean outputRunnerAlive
protected FileSinkImages.OutputRunner outputRunner
protected ThreadProxyPipe outputRunnerProxy
protected boolean clearImageBeforeOutput
protected boolean hasBegan
protected boolean autofit
protected String styleSheet
public FileSinkImages()
public FileSinkImages(FileSinkImages.OutputType type, FileSinkImages.Resolution resolution)
public FileSinkImages(String prefix, FileSinkImages.OutputType type, FileSinkImages.Resolution resolution, FileSinkImages.OutputPolicy outputPolicy)
public void setQuality(FileSinkImages.Quality q)
public void setStyleSheet(String styleSheet)
styleSheet
- the style sheetpublic void setResolution(FileSinkImages.Resolution r)
r
- resolutionpublic void setResolution(int width, int height)
width
- height
- public void setRenderer(FileSinkImages.RendererType rendererType)
rendererType
- public void setOutputPolicy(FileSinkImages.OutputPolicy policy)
policy
- policy defining when images are producedpublic void setLayoutPolicy(FileSinkImages.LayoutPolicy policy)
policy
- policy defining how the layout is computedpublic void setLayoutStepPerFrame(int spf)
spf
- step per framepublic void setLayoutStepAfterStabilization(int sas)
sas
- step after stabilization.public void setLayoutStabilizationLimit(double limit)
Layout.setStabilizationLimit(double)
for more informations about this limit.limit
- public void addLogo(String logoFile, int x, int y)
logoFile
- path to the logo picture-filex
- x position of the logo (top-left corner is (0;0))y
- y position of the logopublic void setOutputRunnerEnabled(boolean on)
public void setOutputRunnerDelay(long delay)
public void stabilizeLayout(double limit)
public Point3 getViewCenter()
public void setViewCenter(double x, double y)
public double getViewPercent()
public void setViewPercent(double zoom)
public void setGraphViewport(double minx, double miny, double maxx, double maxy)
public void setClearImageBeforeOutputEnabled(boolean on)
public void setAutofit(boolean on)
protected void initImage()
protected void clearGG()
public void outputNewImage()
public void outputNewImage(String filename)
protected void printProgress()
public void begin(OutputStream stream) throws IOException
FileSink
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.begin
in interface FileSink
stream
- The file stream where to output the graph events.IOException
- If an I/O error occurs while writing.public void begin(Writer writer) throws IOException
FileSink
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.begin
in interface FileSink
writer
- The writer where to output the graph events.IOException
- If an I/O error occurs while writing.public void begin(String prefix) throws IOException
FileSink
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.begin
in interface FileSink
prefix
- The name of the file where to output the graph events.IOException
- If an I/O error occurs while writing.public void flush() throws IOException
FileSink
flush
in interface FileSink
IOException
- If an I/O error occurs during write.public void end() throws IOException
FileSink
FileSink.begin(OutputStream)
or
FileSink.begin(String)
.end
in interface FileSink
IOException
public void writeAll(Graph g, OutputStream stream) throws IOException
FileSink
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).writeAll
in interface FileSink
g
- The graph to send as events to the file.stream
- The stream where the graph is sent.IOException
- if an I/O error occurs while writing.public void writeAll(Graph g, Writer writer) throws IOException
FileSink
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).writeAll
in interface FileSink
g
- The graph to send as events to the file.writer
- The writer where the graph is sent.IOException
- if an I/O error occurs while writing.public void writeAll(Graph g, String filename) throws IOException
FileSink
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).writeAll
in interface FileSink
g
- The graph to send as events to the file.filename
- Name of the file to write.IOException
- if an I/O error occurs while writing.public void edgeAttributeAdded(String sourceId, long timeId, String edgeId, String attribute, Object value)
AttributeSink
edgeAttributeAdded
in interface AttributeSink
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.Sink
public void edgeAttributeChanged(String sourceId, long timeId, String edgeId, String attribute, Object oldValue, Object newValue)
AttributeSink
edgeAttributeChanged
in interface AttributeSink
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.Sink
public void edgeAttributeRemoved(String sourceId, long timeId, String edgeId, String attribute)
AttributeSink
edgeAttributeRemoved
in interface AttributeSink
sourceId
- Identifier of the graph where the attribute was removed.edgeId
- Identifier of the edge whose attribute was removed.attribute
- The removed attribute name.Sink
public void graphAttributeAdded(String sourceId, long timeId, String attribute, Object value)
AttributeSink
graphAttributeAdded
in interface AttributeSink
sourceId
- Identifier of the graph where the attribute changed.attribute
- The attribute name.value
- The attribute new value.Sink
public void graphAttributeChanged(String sourceId, long timeId, String attribute, Object oldValue, Object newValue)
AttributeSink
graphAttributeChanged
in interface AttributeSink
sourceId
- Identifier of the graph where the attribute changed.attribute
- The attribute name.oldValue
- The attribute old value.newValue
- The attribute new value.Sink
public void graphAttributeRemoved(String sourceId, long timeId, String attribute)
AttributeSink
graphAttributeRemoved
in interface AttributeSink
sourceId
- Identifier of the graph where the attribute was removed.attribute
- The removed attribute name.Sink
public void nodeAttributeAdded(String sourceId, long timeId, String nodeId, String attribute, Object value)
AttributeSink
nodeAttributeAdded
in interface AttributeSink
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.Sink
public void nodeAttributeChanged(String sourceId, long timeId, String nodeId, String attribute, Object oldValue, Object newValue)
AttributeSink
nodeAttributeChanged
in interface AttributeSink
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.Sink
public void nodeAttributeRemoved(String sourceId, long timeId, String nodeId, String attribute)
AttributeSink
nodeAttributeRemoved
in interface AttributeSink
sourceId
- Identifier of the graph where the attribute was removed.nodeId
- Identifier of the node whose attribute was removed.attribute
- The removed attribute name.Sink
public void edgeAdded(String sourceId, long timeId, String edgeId, String fromNodeId, String toNodeId, boolean directed)
ElementSink
edgeAdded
in interface ElementSink
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.Sink
public void edgeRemoved(String sourceId, long timeId, String edgeId)
ElementSink
edgeRemoved
in interface ElementSink
sourceId
- The graph where the edge will be removed.edgeId
- The edge that will be removed.Sink
public void graphCleared(String sourceId, long timeId)
ElementSink
graphCleared
in interface ElementSink
sourceId
- The graph cleared.Sink
public void nodeAdded(String sourceId, long timeId, String nodeId)
ElementSink
nodeAdded
in interface ElementSink
sourceId
- Identifier of the graph where the node was added.nodeId
- Identifier of the added node.Sink
public void nodeRemoved(String sourceId, long timeId, String nodeId)
ElementSink
nodeRemoved
in interface ElementSink
sourceId
- Identifier of the graph where the node will be removed.nodeId
- Identifier of the removed node.Sink
public void stepBegins(String sourceId, long timeId, double step)
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.
stepBegins
in interface ElementSink
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.Sink
public static void usage()
public static void main(String... args) throws IOException
IOException
WebARTS Library Licensed Under the GNU - General Public License. Other Libraries licensed under their respective Open Source Licenses