Author: kono
Date: 2011-06-22 17:40:52 -0700 (Wed, 22 Jun 2011)
New Revision: 25893
Added:
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/graphics/AbstractPresentationWriterFactory.java
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/graphics/PDFWriter.java
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/graphics/PDFWriterFactory.java
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/graphics/PSWriter.java
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/graphics/PSWriterFactory.java
core3/io-impl/trunk/src/test/java/org/cytoscape/io/internal/write/
core3/io-impl/trunk/src/test/java/org/cytoscape/io/internal/write/graphics/
core3/io-impl/trunk/src/test/java/org/cytoscape/io/internal/write/graphics/PDFWriterTest.java
Removed:
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/graphics/Exporter.java
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/graphics/PDFExporter.java
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/graphics/PSExporter.java
Modified:
core3/io-api/trunk/src/main/java/org/cytoscape/io/write/PresentationWriterManager.java
core3/io-impl/trunk/pom.xml
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/PresentationWriterManagerImpl.java
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/graphics/BitmapWriter.java
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/graphics/BitmapWriterFactory.java
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/graphics/SVGExporter.java
core3/io-impl/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml
core3/io-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml
Log:
Start porting vector image writers.
Modified:
core3/io-api/trunk/src/main/java/org/cytoscape/io/write/PresentationWriterManager.java
===================================================================
---
core3/io-api/trunk/src/main/java/org/cytoscape/io/write/PresentationWriterManager.java
2011-06-23 00:22:23 UTC (rev 25892)
+++
core3/io-api/trunk/src/main/java/org/cytoscape/io/write/PresentationWriterManager.java
2011-06-23 00:40:52 UTC (rev 25893)
@@ -54,7 +54,7 @@
* @return The {@link CyWriter} Task that will attempt to write the
specified view to the
* specified file of the specified file type.
*/
- CyWriter getWriter(View<?> view, RenderingEngine re, CyFileFilter
filter, File file) throws Exception;
+ CyWriter getWriter(View<?> view, RenderingEngine<?> re, CyFileFilter
filter, File file) throws Exception;
/**
* @param view The View to be written.
@@ -64,5 +64,5 @@
* @return The {@link CyWriter} Task that will attempt to write the
specified view to the
* specified output stream of the specified file type.
*/
- CyWriter getWriter(View<?> view, RenderingEngine re, CyFileFilter
filter, OutputStream os) throws Exception;
+ CyWriter getWriter(View<?> view, RenderingEngine<?> re, CyFileFilter
filter, OutputStream os) throws Exception;
}
Modified: core3/io-impl/trunk/pom.xml
===================================================================
--- core3/io-impl/trunk/pom.xml 2011-06-23 00:22:23 UTC (rev 25892)
+++ core3/io-impl/trunk/pom.xml 2011-06-23 00:40:52 UTC (rev 25893)
@@ -121,8 +121,13 @@
</dependency>
<dependency>
<groupId>org.cytoscape</groupId>
+ <artifactId>presentation-api</artifactId>
+ <version>3.0.0-alpha4-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.cytoscape</groupId>
<artifactId>layout-api</artifactId>
- <version>3.0.0-alpha2</version>
+ <version>3.0.0-alpha3-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.cytoscape</groupId>
@@ -137,7 +142,7 @@
<dependency>
<groupId>org.cytoscape</groupId>
<artifactId>core-task-api</artifactId>
- <version>3.0.0-alpha3</version>
+ <version>3.0.0-alpha4-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.cytoscape</groupId>
@@ -154,10 +159,13 @@
<artifactId>equations-api</artifactId>
<version>3.0.0-alpha2</version>
</dependency>
+
+ <!-- 3rd party libraries -->
<dependency>
- <groupId>com.lowagie.text</groupId>
-
<artifactId>com.springsource.com.lowagie.text</artifactId>
- <version>2.0.8</version>
+ <groupId>com.itextpdf</groupId>
+ <artifactId>itextpdf</artifactId>
+ <version>5.1.1</version>
+ <scope>compile</scope>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
@@ -169,6 +177,28 @@
<artifactId>opencsv</artifactId>
<version>2.1</version>
</dependency>
+
+ <!-- freehep -->
+ <dependency>
+ <groupId>cytoscape-temp</groupId>
+ <artifactId>freehep-graphicsio</artifactId>
+ <version>2.0</version>
+ </dependency>
+ <dependency>
+ <groupId>cytoscape-temp</groupId>
+ <artifactId>freehep-graphicsio-svg</artifactId>
+ <version>2.0</version>
+ </dependency>
+ <dependency>
+ <groupId>cytoscape-temp</groupId>
+ <artifactId>freehep-graphics2d</artifactId>
+ <version>2.0</version>
+ </dependency>
+ <dependency>
+ <groupId>cytoscape-temp</groupId>
+ <artifactId>freehep-graphicsio-ps</artifactId>
+ <version>2.1.1</version>
+ </dependency>
<!-- For Testing -->
<dependency>
Modified:
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/PresentationWriterManagerImpl.java
===================================================================
---
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/PresentationWriterManagerImpl.java
2011-06-23 00:22:23 UTC (rev 25892)
+++
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/PresentationWriterManagerImpl.java
2011-06-23 00:40:52 UTC (rev 25893)
@@ -21,11 +21,11 @@
super(DataCategory.IMAGE);
}
- public CyWriter getWriter(View<?> view, RenderingEngine re,
CyFileFilter filter, File outFile) throws Exception {
+ public CyWriter getWriter(View<?> view, RenderingEngine<?> re,
CyFileFilter filter, File outFile) throws Exception {
return getWriter(view,re,filter,new FileOutputStream(outFile));
}
- public CyWriter getWriter(View<?> view, RenderingEngine re,
CyFileFilter filter, OutputStream os) throws Exception {
+ public CyWriter getWriter(View<?> view, RenderingEngine<?> re,
CyFileFilter filter, OutputStream os) throws Exception {
PresentationWriterFactory tf = getMatchingFactory(filter,os);
if ( tf == null )
throw new NullPointerException("Couldn't find matching
factory for filter: " + filter);
Added:
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/graphics/AbstractPresentationWriterFactory.java
===================================================================
---
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/graphics/AbstractPresentationWriterFactory.java
(rev 0)
+++
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/graphics/AbstractPresentationWriterFactory.java
2011-06-23 00:40:52 UTC (rev 25893)
@@ -0,0 +1,41 @@
+package org.cytoscape.io.internal.write.graphics;
+
+import java.io.OutputStream;
+
+import org.cytoscape.io.CyFileFilter;
+import org.cytoscape.io.write.PresentationWriterFactory;
+import org.cytoscape.view.presentation.RenderingEngine;
+
+public abstract class AbstractPresentationWriterFactory implements
PresentationWriterFactory {
+
+ protected final CyFileFilter fileFilter;
+
+ protected RenderingEngine<?> re;
+ protected OutputStream outputStream;
+
+ public AbstractPresentationWriterFactory(final CyFileFilter fileFilter)
{
+ this.fileFilter = fileFilter;
+ }
+
+ @Override
+ public CyFileFilter getCyFileFilter() {
+ return fileFilter;
+ }
+
+
+ @Override
+ public void setRenderingEngine(final RenderingEngine<?> re) {
+ if (re == null)
+ throw new NullPointerException("RenderingEngine is
null");
+
+ this.re = re;
+ }
+
+
+ @Override
+ public void setOutputStream(OutputStream os) {
+ if (os == null)
+ throw new NullPointerException("Output stream is null");
+ outputStream = os;
+ }
+}
Modified:
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/graphics/BitmapWriter.java
===================================================================
---
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/graphics/BitmapWriter.java
2011-06-23 00:22:23 UTC (rev 25892)
+++
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/graphics/BitmapWriter.java
2011-06-23 00:40:52 UTC (rev 25893)
@@ -23,8 +23,7 @@
*/
public class BitmapWriter extends AbstractTask implements CyWriter {
- private static final Logger logger = LoggerFactory
- .getLogger(BitmapWriter.class);
+ private static final Logger logger =
LoggerFactory.getLogger(BitmapWriter.class);
private static final int MAX_SIZE = 50000;
@@ -55,9 +54,9 @@
width = new BoundedInteger(1, w, MAX_SIZE, false, false);
height = new BoundedInteger(1, h, MAX_SIZE, false, false);
-
}
+
private void setExtension(Set<String> extensions) {
for (String format : ImageIO.getWriterFormatNames()) {
@@ -72,7 +71,11 @@
+ extensions.toString() + ") NOT supported by
ImageIO");
}
+
+ @Override
public void run(TaskMonitor tm) throws Exception {
+ logger.debug("Bitmap image rendering start.");
+
final double scale = scaleFactor.getValue().doubleValue();
final int finalW =
((Number)(width.getValue()*scale)).intValue();
final int finalH =
((Number)(height.getValue()*scale)).intValue();
@@ -83,6 +86,8 @@
}
finally {
outStream.close();
- }
+ }
+
+ logger.debug("Bitmap image rendering finished.");
}
}
Modified:
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/graphics/BitmapWriterFactory.java
===================================================================
---
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/graphics/BitmapWriterFactory.java
2011-06-23 00:22:23 UTC (rev 25892)
+++
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/graphics/BitmapWriterFactory.java
2011-06-23 00:40:52 UTC (rev 25893)
@@ -1,50 +1,22 @@
package org.cytoscape.io.internal.write.graphics;
-import org.cytoscape.io.write.PresentationWriterFactory;
-import org.cytoscape.io.write.CyWriter;
import org.cytoscape.io.CyFileFilter;
+import org.cytoscape.io.write.CyWriter;
-import org.cytoscape.view.presentation.RenderingEngine;
-import org.cytoscape.view.model.View;
-
-import java.io.OutputStream;
-
/**
* Returns a Task that will write
*/
-public class BitmapWriterFactory implements PresentationWriterFactory {
+public class BitmapWriterFactory extends AbstractPresentationWriterFactory {
- private final CyFileFilter bitmapFilter;
-
- private RenderingEngine<?> re;
- private OutputStream outputStream;
-
public BitmapWriterFactory(final CyFileFilter bitmapFilter) {
- this.bitmapFilter = bitmapFilter;
+ super(bitmapFilter);
}
- public CyFileFilter getCyFileFilter() {
- return bitmapFilter;
- }
-
- public void setRenderingEngine(final RenderingEngine<?> re) {
- if ( re == null )
- throw new NullPointerException("RenderingEngine is
null");
-
- this.re = re;
- }
-
- public void setOutputStream(OutputStream os) {
- if ( os == null )
- throw new NullPointerException("Output stream is null");
- outputStream = os;
- }
-
public CyWriter getWriterTask() {
if ( re == null )
throw new NullPointerException("RenderingEngine is
null");
- return new BitmapWriter(re, outputStream,
bitmapFilter.getExtensions() );
+ return new BitmapWriter(re, outputStream,
fileFilter.getExtensions() );
}
}
Deleted:
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/graphics/Exporter.java
===================================================================
---
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/graphics/Exporter.java
2011-06-23 00:22:23 UTC (rev 25892)
+++
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/graphics/Exporter.java
2011-06-23 00:40:52 UTC (rev 25893)
@@ -1,21 +0,0 @@
-package org.cytoscape.io.internal.write.graphics;
-
-import org.cytoscape.view.model.CyNetworkView;
-
-import java.io.FileOutputStream;
-import java.io.IOException;
-
-/**
- * Interface for exporting a network view to a graphics file.
- */
-public interface Exporter
-{
- /**
- * Export a view as graphics to a stream.
- * @param view The view to export
- * @param stream The stream to write the graphics to;
- * the stream is not closed when exporting
- * is finished.
- */
- public void export(CyNetworkView view, FileOutputStream stream) throws
IOException;
-}
Deleted:
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/graphics/PDFExporter.java
===================================================================
---
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/graphics/PDFExporter.java
2011-06-23 00:22:23 UTC (rev 25892)
+++
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/graphics/PDFExporter.java
2011-06-23 00:40:52 UTC (rev 25893)
@@ -1,63 +0,0 @@
-package org.cytoscape.io.internal.write.graphics;
-
-import com.lowagie.text.Document;
-import com.lowagie.text.DocumentException;
-import com.lowagie.text.PageSize;
-import com.lowagie.text.Rectangle;
-import com.lowagie.text.pdf.DefaultFontMapper;
-import com.lowagie.text.pdf.PdfContentByte;
-import com.lowagie.text.pdf.PdfWriter;
-import org.cytoscape.view.model.CyNetworkView;
-
-import java.awt.*;
-import java.io.FileOutputStream;
-import java.io.IOException;
-
-/**
- * PDF exporter by the iText library.
- * @author Samad Lotia
- */
-public class PDFExporter implements Exporter
-{
- private boolean exportTextAsFont = true;
-
- public void export(CyNetworkView view, FileOutputStream stream) throws
IOException
- {
- // TODO should be accomplished with renderer properties
- //view.setPrintingTextAsShape(!exportTextAsFont);
-
- // TODO update with new style vizmapper
- /*
- Rectangle pageSize = PageSize.LETTER;
- Document document = new Document(pageSize);
- try
- {
- PdfWriter writer = PdfWriter.getInstance(document,
stream);
- document.open();
- PdfContentByte cb = writer.getDirectContent();
- Graphics2D g = null;
- if ( exportTextAsFont ) {
- g = cb.createGraphics(pageSize.getWidth(),
pageSize.getHeight(), new DefaultFontMapper());
- } else {
- g =
cb.createGraphicsShapes(pageSize.getWidth(), pageSize.getHeight());
- }
- // TODO NEED RENDERER
- double imageScale = Math.min(pageSize.getWidth() /
((double) view.getComponent().getWidth()),
- pageSize.getHeight() /
((double) view.getComponent().getHeight()));
- g.scale(imageScale, imageScale);
- // TODO NEED RENDERER
- view.print(g);
- g.dispose();
- }
- catch (DocumentException exp)
- {
- throw new IOException(exp.getMessage());
- }
-
- document.close();
- */
- }
- public void setExportTextAsFont(boolean pExportTextAsFont) {
- exportTextAsFont = pExportTextAsFont;
- }
-}
Copied:
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/graphics/PDFWriter.java
(from rev 25757,
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/graphics/PDFExporter.java)
===================================================================
---
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/graphics/PDFWriter.java
(rev 0)
+++
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/graphics/PDFWriter.java
2011-06-23 00:40:52 UTC (rev 25893)
@@ -0,0 +1,119 @@
+package org.cytoscape.io.internal.write.graphics;
+
+import java.awt.Graphics2D;
+import java.awt.Image;
+import java.io.BufferedOutputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+
+import org.cytoscape.io.write.CyWriter;
+import org.cytoscape.view.presentation.RenderingEngine;
+import org.cytoscape.view.presentation.property.MinimalVisualLexicon;
+import org.cytoscape.work.AbstractTask;
+import org.cytoscape.work.TaskMonitor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.itextpdf.text.Document;
+import com.itextpdf.text.DocumentException;
+import com.itextpdf.text.PageSize;
+import com.itextpdf.text.Rectangle;
+import com.itextpdf.text.pdf.DefaultFontMapper;
+import com.itextpdf.text.pdf.PdfContentByte;
+import com.itextpdf.text.pdf.PdfGraphics2D;
+import com.itextpdf.text.pdf.PdfWriter;
+
+/**
+ * PDF exporter by the iText library.
+ */
+public class PDFWriter extends AbstractTask implements CyWriter {
+
+ private static final Logger logger =
LoggerFactory.getLogger(PDFWriter.class);
+
+ private boolean exportTextAsFont = true;
+ private final Double width;
+ private final Double height;
+ private final RenderingEngine<?> engine;
+ private final OutputStream stream;
+
+ public PDFWriter(final RenderingEngine<?> engine, final OutputStream
stream) {
+ if (engine == null)
+ throw new NullPointerException("Rendering Engine is
null.");
+ if (stream == null)
+ throw new NullPointerException("Stream is null.");
+
+ this.engine = engine;
+ this.stream = stream;
+
+ width =
engine.getViewModel().getVisualProperty(MinimalVisualLexicon.NETWORK_WIDTH);
+ height =
engine.getViewModel().getVisualProperty(MinimalVisualLexicon.NETWORK_HEIGHT);
+
+ logger.debug("PDFWriter created.");
+ }
+
+
+ @Override
+ public void run(TaskMonitor taskMonitor) throws Exception {
+ // TODO should be accomplished with renderer properties
+ // view.setPrintingTextAsShape(!exportTextAsFont);
+
+ taskMonitor.setProgress(0.0);
+ taskMonitor.setStatusMessage("Creating PDF image...");
+
+ Thread.sleep(2000);
+ logger.debug("PDF Rendering start");
+
+ final OutputStream os = new BufferedOutputStream(new
FileOutputStream("itextTest100000.pdf"));
+
+ final Rectangle pageSize = PageSize.LETTER;
+ final Document document = new Document(pageSize);
+
+ logger.debug("Document created: " + document);
+
+ final PdfWriter writer = PdfWriter.getInstance(document, os);
+ document.open();
+
+ final PdfContentByte canvas = writer.getDirectContent();
+ logger.debug("CB0 created: " + canvas.getClass());
+
+
+ final float pageWidth = pageSize.getWidth();
+ final float pageHeight = pageSize.getHeight();
+
+ logger.debug("Page W: " + pageWidth + " Page H: " + pageHeight);
+ final DefaultFontMapper fontMapper = new DefaultFontMapper();
+ logger.debug("FontMapper created = " + fontMapper);
+ Graphics2D g = null;
+ logger.debug("!!!!! Enter block 2");
+ g = canvas.createGraphicsShapes(pageWidth, pageHeight);
+ logger.debug("!!!!! G2D created: " + g);
+
+ g.dispose();
+// if (exportTextAsFont)
+// g = cb.createGraphics(pageWidth, pageHeight, new
DefaultFontMapper());
+// else
+// g = cb.createGraphicsShapes(pageWidth, pageHeight);
+
+
+
+// double imageScale = Math.min(pageSize.getWidth() / width,
pageSize.getHeight() / height);
+// g.scale(imageScale, imageScale);
+
+// final Image image = engine.createImage(width.intValue(),
height.intValue());
+//
+// logger.debug("AWT Image created for PDF: " + image);
+// com.itextpdf.text.Image itxImage =
com.itextpdf.text.Image.getInstance(image, null);
+// logger.debug("iText Image created for PDF: " + itxImage);
+// canvas.addImage(itxImage, itxImage.getWidth(), 0, 0,
itxImage.getHeight(), 0, 0);
+// g.drawImage(image, 0, 0, null);
+
+
+ os.close();
+ stream.close();
+ document.close();
+
+ logger.debug("PDF rendering finished.");
+ }
+
+}
Added:
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/graphics/PDFWriterFactory.java
===================================================================
---
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/graphics/PDFWriterFactory.java
(rev 0)
+++
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/graphics/PDFWriterFactory.java
2011-06-23 00:40:52 UTC (rev 25893)
@@ -0,0 +1,20 @@
+package org.cytoscape.io.internal.write.graphics;
+
+import org.cytoscape.io.CyFileFilter;
+import org.cytoscape.io.write.CyWriter;
+
+public class PDFWriterFactory extends AbstractPresentationWriterFactory {
+
+ public PDFWriterFactory(CyFileFilter fileFilter) {
+ super(fileFilter);
+ }
+
+ @Override
+ public CyWriter getWriterTask() {
+ if ( re == null )
+ throw new NullPointerException("RenderingEngine is
null");
+
+ return new PDFWriter(re, outputStream);
+ }
+
+}
Deleted:
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/graphics/PSExporter.java
===================================================================
---
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/graphics/PSExporter.java
2011-06-23 00:22:23 UTC (rev 25892)
+++
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/graphics/PSExporter.java
2011-06-23 00:40:52 UTC (rev 25893)
@@ -1,47 +0,0 @@
-package org.cytoscape.io.internal.write.graphics;
-
-import org.cytoscape.view.model.CyNetworkView;
-//import org.freehep.graphicsio.ps.PSGraphics2D;
-
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.util.Properties;
-
-public class PSExporter implements Exporter
-{
- private boolean exportTextAsFont = true;
-
- public PSExporter()
- {
- }
-
-
- public void export(CyNetworkView view, FileOutputStream stream) throws
IOException
- {
- // TODO should be accomplished with presentation properties
- //view.setPrintingTextAsShape(!exportTextAsFont);
-
- // TODO update with new style vizmapper
- /*
- Properties p = new Properties();
- p.setProperty(PSGraphics2D.PAGE_SIZE,"Letter");
-
p.setProperty("org.freehep.graphicsio.AbstractVectorGraphicsIO.TEXT_AS_SHAPES",
- Boolean.toString(!exportTextAsFont));
-
- // TODO NEED RENDERER
- PSGraphics2D g = new PSGraphics2D(stream, view.getComponent());
- g.setMultiPage(false); // true for PS file
- g.setProperties(p);
-
- g.startExport();
- // TODO NEED RENDERER
- view.print(g);
- g.endExport();
- */
-
- }
-
- public void setExportTextAsFont(boolean pExportTextAsFont) {
- exportTextAsFont = pExportTextAsFont;
- }
-}
Copied:
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/graphics/PSWriter.java
(from rev 25757,
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/graphics/PSExporter.java)
===================================================================
---
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/graphics/PSWriter.java
(rev 0)
+++
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/graphics/PSWriter.java
2011-06-23 00:40:52 UTC (rev 25893)
@@ -0,0 +1,72 @@
+package org.cytoscape.io.internal.write.graphics;
+
+import org.cytoscape.io.write.CyWriter;
+import org.cytoscape.view.model.CyNetworkView;
+import org.cytoscape.view.presentation.RenderingEngine;
+import org.cytoscape.view.presentation.property.MinimalVisualLexicon;
+import org.cytoscape.work.AbstractTask;
+import org.cytoscape.work.TaskMonitor;
+import org.freehep.graphicsio.ps.PSGraphics2D;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.awt.Dimension;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.Properties;
+
+public class PSWriter extends AbstractTask implements CyWriter {
+
+ private static final Logger logger =
LoggerFactory.getLogger(PDFWriter.class);
+
+ private boolean exportTextAsFont = true;
+
+
+ private final Double width;
+ private final Double height;
+ private final RenderingEngine<?> engine;
+ private final OutputStream stream;
+
+ public PSWriter(final RenderingEngine<?> engine, final OutputStream
stream) {
+ if (engine == null)
+ throw new NullPointerException("Rendering Engine is
null.");
+ if (stream == null)
+ throw new NullPointerException("Stream is null.");
+
+ this.engine = engine;
+ this.stream = stream;
+
+ width =
engine.getViewModel().getVisualProperty(MinimalVisualLexicon.NETWORK_WIDTH);
+ height =
engine.getViewModel().getVisualProperty(MinimalVisualLexicon.NETWORK_HEIGHT);
+
+ logger.debug("Post Script Writer created.");
+ }
+
+ public void setExportTextAsFont(boolean pExportTextAsFont) {
+ exportTextAsFont = pExportTextAsFont;
+ }
+
+
+ @Override
+ public void run(TaskMonitor taskMonitor) throws Exception {
+ logger.debug("PS image rendering start.");
+
+ // TODO should be accomplished with presentation properties
+ // view.setPrintingTextAsShape(!exportTextAsFont);
+
+ final Properties p = new Properties();
+ p.setProperty(PSGraphics2D.PAGE_SIZE, "Letter");
+
p.setProperty("org.freehep.graphicsio.AbstractVectorGraphicsIO.TEXT_AS_SHAPES",
+ Boolean.toString(!exportTextAsFont));
+
+ PSGraphics2D g = new PSGraphics2D(stream, new
Dimension(width.intValue(), height.intValue()));
+ g.setMultiPage(false); // true for PS file
+ g.setProperties(p);
+ g.startExport();
+ //view.print(g);
+ g.endExport();
+
+ logger.debug("PS image created.");
+ }
+}
Added:
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/graphics/PSWriterFactory.java
===================================================================
---
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/graphics/PSWriterFactory.java
(rev 0)
+++
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/graphics/PSWriterFactory.java
2011-06-23 00:40:52 UTC (rev 25893)
@@ -0,0 +1,20 @@
+package org.cytoscape.io.internal.write.graphics;
+
+import org.cytoscape.io.CyFileFilter;
+import org.cytoscape.io.write.CyWriter;
+
+public class PSWriterFactory extends AbstractPresentationWriterFactory {
+
+ public PSWriterFactory(final CyFileFilter fileFilter) {
+ super(fileFilter);
+ }
+
+ @Override
+ public CyWriter getWriterTask() {
+ if ( re == null )
+ throw new NullPointerException("RenderingEngine is
null");
+
+ return new PSWriter(re, outputStream);
+ }
+
+}
Modified:
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/graphics/SVGExporter.java
===================================================================
---
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/graphics/SVGExporter.java
2011-06-23 00:22:23 UTC (rev 25892)
+++
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/graphics/SVGExporter.java
2011-06-23 00:40:52 UTC (rev 25893)
@@ -1,6 +1,9 @@
package org.cytoscape.io.internal.write.graphics;
+import org.cytoscape.io.write.CyWriter;
import org.cytoscape.view.model.CyNetworkView;
+import org.cytoscape.work.AbstractTask;
+import org.cytoscape.work.TaskMonitor;
//import org.freehep.graphicsio.svg.SVGGraphics2D;
import java.io.FileOutputStream;
@@ -8,39 +11,41 @@
/**
* SVG exporter by the batik library.
+ *
* @author Samad Lotia
*/
-public class SVGExporter implements Exporter
-{
+public class SVGExporter extends AbstractTask implements CyWriter {
+
private boolean exportTextAsFont = true;
- public SVGExporter()
- {
+ public SVGExporter() {
}
- public void export(CyNetworkView view, FileOutputStream stream) throws
IOException
- {
- // TODO should be accomplished with presentation properties
- //view.setPrintingTextAsShape(!exportTextAsFont);
-
- // TODO NEED RENDERER
- // TODO update with new style presentation
-/*
- SVGGraphics2D g = new SVGGraphics2D(stream,
view.getComponent());
+ public void export(CyNetworkView view, FileOutputStream stream) throws
IOException {
+ // TODO should be accomplished with presentation properties
+ // view.setPrintingTextAsShape(!exportTextAsFont);
- // this sets text as shape
- java.util.Properties p = new java.util.Properties();
-
p.setProperty("org.freehep.graphicsio.AbstractVectorGraphicsIO.TEXT_AS_SHAPES",
- Boolean.toString(!exportTextAsFont));
- g.setProperties(p);
-
- g.startExport();
// TODO NEED RENDERER
- view.print(g);
- g.endExport();
- */
+ // TODO update with new style presentation
+ /*
+ * SVGGraphics2D g = new SVGGraphics2D(stream,
view.getComponent());
+ *
+ * // this sets text as shape java.util.Properties p = new
+ * java.util.Properties(); p.setProperty(
+ *
"org.freehep.graphicsio.AbstractVectorGraphicsIO.TEXT_AS_SHAPES",
+ * Boolean.toString(!exportTextAsFont)); g.setProperties(p);
+ *
+ * g.startExport(); // TODO NEED RENDERER view.print(g);
g.endExport();
+ */
}
+
public void setExportTextAsFont(boolean pExportTextAsFont) {
exportTextAsFont = pExportTextAsFont;
}
+
+ @Override
+ public void run(TaskMonitor taskMonitor) throws Exception {
+ // TODO Auto-generated method stub
+
+ }
}
Modified:
core3/io-impl/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml
===================================================================
---
core3/io-impl/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml
2011-06-23 00:22:23 UTC (rev 25892)
+++
core3/io-impl/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml
2011-06-23 00:40:52 UTC (rev 25893)
@@ -209,14 +209,22 @@
interface="org.cytoscape.io.write.CySessionWriterFactory">
</osgi:service>
+
+ <!-- Image Writers -->
<osgi:service id="pngWriterFactoryService" ref="pngWriterFactory"
interface="org.cytoscape.io.write.PresentationWriterFactory">
</osgi:service>
-
<osgi:service id="jpegWriterFactoryService" ref="jpegWriterFactory"
interface="org.cytoscape.io.write.PresentationWriterFactory">
</osgi:service>
+ <osgi:service id="pdfWriterFactoryService" ref="pdfWriterFactory"
+ interface="org.cytoscape.io.write.PresentationWriterFactory">
+ </osgi:service>
+ <osgi:service id="psWriterFactoryService" ref="psWriterFactory"
+ interface="org.cytoscape.io.write.PresentationWriterFactory">
+ </osgi:service>
+
<osgi:service id="cysessionWriterFactoryService"
ref="cysessionWriterFactory"
interface="org.cytoscape.io.write.CyPropertyWriterFactory">
</osgi:service>
Modified:
core3/io-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml
===================================================================
--- core3/io-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml
2011-06-23 00:22:23 UTC (rev 25892)
+++ core3/io-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml
2011-06-23 00:40:52 UTC (rev 25893)
@@ -75,6 +75,44 @@
<ref bean="streamUtil" />
</constructor-arg>
</bean>
+
+ <bean id="pdfFilter" class="org.cytoscape.io.BasicCyFileFilter">
+ <constructor-arg index="0">
+ <set>
+ <value>pdf</value>
+ </set>
+ </constructor-arg>
+ <constructor-arg index="1">
+ <set>
+ <value>image/pdf</value>
+ </set>
+ </constructor-arg>
+ <constructor-arg value="PDF File" />
+ <constructor-arg type="org.cytoscape.io.DataCategory"
+ value="IMAGE" />
+ <constructor-arg type="org.cytoscape.io.util.StreamUtil">
+ <ref bean="streamUtil" />
+ </constructor-arg>
+ </bean>
+
+ <bean id="psFilter" class="org.cytoscape.io.BasicCyFileFilter">
+ <constructor-arg index="0">
+ <set>
+ <value>ps</value>
+ </set>
+ </constructor-arg>
+ <constructor-arg index="1">
+ <set>
+ <value>image/ps</value>
+ </set>
+ </constructor-arg>
+ <constructor-arg value="Post Script (PS) File" />
+ <constructor-arg type="org.cytoscape.io.DataCategory"
+ value="IMAGE" />
+ <constructor-arg type="org.cytoscape.io.util.StreamUtil">
+ <ref bean="streamUtil" />
+ </constructor-arg>
+ </bean>
<bean id="textTableFilter" class="org.cytoscape.io.BasicCyFileFilter">
<constructor-arg index="0">
@@ -400,6 +438,7 @@
<!-- Writer Factories -->
+ <!-- Image Export -->
<bean id="pngWriterFactory"
class="org.cytoscape.io.internal.write.graphics.BitmapWriterFactory">
<constructor-arg ref="pngFilter" />
@@ -408,7 +447,17 @@
class="org.cytoscape.io.internal.write.graphics.BitmapWriterFactory">
<constructor-arg ref="jpegFilter" />
</bean>
+ <bean id="pdfWriterFactory"
+
class="org.cytoscape.io.internal.write.graphics.PDFWriterFactory">
+ <constructor-arg ref="pdfFilter" />
+ </bean>
+ <bean id="psWriterFactory"
+
class="org.cytoscape.io.internal.write.graphics.PSWriterFactory">
+ <constructor-arg ref="psFilter" />
+ </bean>
+
+ <!-- Network Writers -->
<bean id="sifNetworkViewWriterFactory"
class="org.cytoscape.io.internal.write.sif.SifNetworkWriterFactory">
<constructor-arg ref="sifFilter" />
Added:
core3/io-impl/trunk/src/test/java/org/cytoscape/io/internal/write/graphics/PDFWriterTest.java
===================================================================
---
core3/io-impl/trunk/src/test/java/org/cytoscape/io/internal/write/graphics/PDFWriterTest.java
(rev 0)
+++
core3/io-impl/trunk/src/test/java/org/cytoscape/io/internal/write/graphics/PDFWriterTest.java
2011-06-23 00:40:52 UTC (rev 25893)
@@ -0,0 +1,57 @@
+package org.cytoscape.io.internal.write.graphics;
+
+import static org.junit.Assert.*;
+
+import java.awt.Graphics2D;
+import java.io.BufferedOutputStream;
+import java.io.FileOutputStream;
+import java.io.OutputStream;
+
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.itextpdf.text.Document;
+import com.itextpdf.text.PageSize;
+import com.itextpdf.text.Rectangle;
+import com.itextpdf.text.pdf.DefaultFontMapper;
+import com.itextpdf.text.pdf.PdfContentByte;
+import com.itextpdf.text.pdf.PdfWriter;
+
+
+public class PDFWriterTest {
+
+ private static final Logger logger =
LoggerFactory.getLogger(PDFWriterTest.class);
+
+
+ @Test
+ public void itextLibTest() throws Exception {
+
+ final OutputStream os = new BufferedOutputStream(new
FileOutputStream("itextTest.pdf"));
+ final Rectangle pageSize = PageSize.LETTER;
+ final Document document = new Document(pageSize);
+
+ logger.debug("Document created: " + document);
+
+ final PdfWriter writer = PdfWriter.getInstance(document, os);
+ document.open();
+
+ final PdfContentByte canvas = writer.getDirectContent();
+ logger.debug("CB0 created: " + canvas.getClass());
+
+ final float pageWidth = pageSize.getWidth();
+ final float pageHeight = pageSize.getHeight();
+
+ logger.debug("Page W: " + pageWidth + " Page H: " + pageHeight);
+ final DefaultFontMapper fontMapper = new DefaultFontMapper();
+ logger.debug("FontMapper created = " + fontMapper);
+ final Graphics2D g = canvas.createGraphics(100f, 100f);
+ logger.debug("! G2D created = " + g);
+
+ assertNotNull(g);
+ g.dispose();
+ document.close();
+ os.close();
+ }
+
+}
--
You received this message because you are subscribed to the Google Groups
"cytoscape-cvs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/cytoscape-cvs?hl=en.