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.

Reply via email to