Author: mes
Date: 2010-09-10 13:30:30 -0700 (Fri, 10 Sep 2010)
New Revision: 21797

Added:
   
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/ViewWriterManagerImpl.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
Removed:
   
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/graphics/BitmapExporter.java
Modified:
   
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/AbstractWriterManager.java
   
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/CyTableWriterManagerImpl.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:
added bitmap support

Modified: 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/AbstractWriterManager.java
===================================================================
--- 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/AbstractWriterManager.java
        2010-09-10 20:28:50 UTC (rev 21796)
+++ 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/AbstractWriterManager.java
        2010-09-10 20:30:30 UTC (rev 21797)
@@ -1,4 +1,4 @@
-package org.cytoscape.io.internal.read;
+package org.cytoscape.io.internal.write;
 
 
 import java.io.File;
@@ -48,6 +48,7 @@
                for (T factory : factories.values()) {
                        CyFileFilter cff = factory.getCyFileFilter();
                        if ( filter.equals(cff) ) {
+                               logger.debug("found factory for file filter: " 
+ filter.toString());
                                factory.setOutputFile(file);
                                return factory;
                        }

Modified: 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/CyTableWriterManagerImpl.java
===================================================================
--- 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/CyTableWriterManagerImpl.java
     2010-09-10 20:28:50 UTC (rev 21796)
+++ 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/CyTableWriterManagerImpl.java
     2010-09-10 20:30:30 UTC (rev 21797)
@@ -1,4 +1,4 @@
-package org.cytoscape.io.internal.read;
+package org.cytoscape.io.internal.write;
 
 
 import org.cytoscape.io.write.CyTableWriter;

Added: 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/ViewWriterManagerImpl.java
===================================================================
--- 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/ViewWriterManagerImpl.java
                                (rev 0)
+++ 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/ViewWriterManagerImpl.java
        2010-09-10 20:30:30 UTC (rev 21797)
@@ -0,0 +1,29 @@
+package org.cytoscape.io.internal.write;
+
+
+import org.cytoscape.io.write.ViewWriter;
+import org.cytoscape.io.write.ViewWriterManager;
+import org.cytoscape.io.write.ViewWriterFactory;
+import org.cytoscape.io.write.CyWriter;
+import org.cytoscape.io.DataCategory;
+import org.cytoscape.io.CyFileFilter;
+import org.cytoscape.view.model.View;
+import org.cytoscape.view.presentation.RenderingEngine;
+import java.io.File;
+
+
+public class ViewWriterManagerImpl extends 
AbstractWriterManager<ViewWriterFactory> 
+       implements ViewWriterManager {
+
+       public ViewWriterManagerImpl() {
+               super(DataCategory.IMAGE);
+       }
+
+       public CyWriter getWriter(View<?> view, RenderingEngine re, 
CyFileFilter filter, File outFile) {
+               ViewWriterFactory tf = getMatchingFactory(filter,outFile);
+               if ( tf == null )
+                       throw new NullPointerException("Couldn't find matching 
factory for filter: " + filter);
+               tf.setViewRenderer(view,re);
+               return tf.getWriter();
+       }
+}

Deleted: 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/graphics/BitmapExporter.java
===================================================================
--- 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/graphics/BitmapExporter.java
      2010-09-10 20:28:50 UTC (rev 21796)
+++ 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/graphics/BitmapExporter.java
      2010-09-10 20:30:30 UTC (rev 21797)
@@ -1,58 +0,0 @@
-package org.cytoscape.io.internal.write.graphics;
-
-import org.cytoscape.view.model.CyNetworkView;
-
-import javax.imageio.ImageIO;
-import java.awt.*;
-import java.awt.image.BufferedImage;
-import java.io.FileOutputStream;
-import java.io.IOException;
-
-/**
- * Bitmap exporter by the ImageIO class.
- * @author Samad Lotia
- */
-public class BitmapExporter implements Exporter
-{
-       private String extension;
-       private double scale;
-
-       public BitmapExporter(String extension, double scale)
-       {
-               this.extension = extension;
-               this.scale = scale;
-
-               boolean match = false;
-               String[] formats = ImageIO.getWriterFormatNames();
-               for (int i = 0; i < formats.length; i++)
-               {
-                       if (formats[i].equals(extension))
-                       {
-                               match = true;
-                               break;
-                       }
-               }
-               if (!match)
-                       throw new IllegalArgumentException("Format " + 
extension + " is not supported by the ImageIO class");
-       }
-
-       public void export(CyNetworkView view, FileOutputStream stream) throws 
IOException
-       {
-               // TODO update with presentation code
-       /*
-               // TODO NEED RENDERER
-               int width  = (int) (view.getComponent().getWidth() * scale);
-               // TODO NEED RENDERER
-               int height = (int) (view.getComponent().getHeight() * scale);
-
-               BufferedImage image = new BufferedImage(width, height, 
BufferedImage.TYPE_INT_RGB);
-               Graphics2D g = (Graphics2D) image.getGraphics();
-               g.scale(scale, scale);
-               // TODO NEED RENDERER
-               view.printNoImposter(g);
-               g.dispose();
-               
-               ImageIO.write(image, extension, stream);
-               */
-       }
-}

Added: 
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
                                (rev 0)
+++ 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/graphics/BitmapWriter.java
        2010-09-10 20:30:30 UTC (rev 21797)
@@ -0,0 +1,71 @@
+package org.cytoscape.io.internal.write.graphics;
+
+import org.cytoscape.io.write.CyWriter;
+import org.cytoscape.view.model.View;
+import org.cytoscape.view.presentation.RenderingEngine;
+import static org.cytoscape.view.presentation.property.TwoDVisualLexicon.*;
+
+import org.cytoscape.work.util.BoundedDouble;
+import org.cytoscape.work.AbstractTask;
+import org.cytoscape.work.TaskMonitor;
+import org.cytoscape.work.Tunable;
+
+import javax.imageio.ImageIO;
+import java.io.File;
+import java.awt.image.BufferedImage;
+import java.util.Set;
+
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
+
+/**
+ */
+class BitmapWriter extends AbstractTask implements CyWriter {
+
+       private static final Logger logger = 
LoggerFactory.getLogger(BitmapWriter.class);
+
+       @Tunable(description="Image scale")
+       public BoundedDouble scaleFactor;
+
+       private final File outFile;
+       private final RenderingEngine re;
+       private final View<?> view;
+       private String extension = null; 
+       
+       public BitmapWriter(View<?> view, RenderingEngine re, File outFile, 
Set<String> extensions) {
+               this.view = view;
+               this.re = re;
+               this.outFile = outFile;
+               setExtension( extensions );
+               scaleFactor = new BoundedDouble(0.0,100.0,500.0,false,false);   
+       }
+
+       private void setExtension( Set<String> extensions ) {
+
+               for ( String format : ImageIO.getWriterFormatNames() ) {
+                       for ( String ext : extensions ) {
+                               if ( format.equals(ext) ) {
+                                       extension = format;
+                                       return;
+                               }
+                       }
+               }
+               throw new IllegalArgumentException("Image format ("+ 
extensions.toString() +") NOT supported by ImageIO");
+       }
+
+       public void run(TaskMonitor tm) throws Exception {
+               logger.debug("about to export graphics of type: " + extension + 
+                            " and to file: " + outFile.getName()); 
+
+               final double scale = scaleFactor.getValue().doubleValue();
+
+               int width  = (int) 
(view.getVisualProperty(NETWORK_WIDTH).doubleValue() * scale);
+               int height = (int) 
(view.getVisualProperty(NETWORK_HEIGHT).doubleValue() * scale);
+
+               ImageIO.write(((BufferedImage)re.createImage(width,height)), 
extension, outFile);
+       }
+
+       // TODO use the one from AbstractTask
+       public void cancel() {
+       }
+}

Added: 
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
                         (rev 0)
+++ 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/graphics/BitmapWriterFactory.java
 2010-09-10 20:30:30 UTC (rev 21797)
@@ -0,0 +1,51 @@
+package org.cytoscape.io.internal.write.graphics;
+
+
+import org.cytoscape.io.write.ViewWriterFactory;
+import org.cytoscape.io.write.CyWriter;
+import org.cytoscape.io.CyFileFilter;
+
+import org.cytoscape.view.presentation.RenderingEngine;
+import org.cytoscape.view.model.View;
+
+import java.io.File;
+
+/**
+ * Returns a Task that will write
+ */
+public class BitmapWriterFactory implements ViewWriterFactory {
+
+       private final CyFileFilter bitmapFilter; 
+
+       private View<?> view;
+       private RenderingEngine re;
+       private File outputFile;
+
+       public BitmapWriterFactory(CyFileFilter bitmapFilter) {
+               this.bitmapFilter = bitmapFilter;       
+       }
+
+       public CyFileFilter getCyFileFilter() {
+               return bitmapFilter; 
+       }
+
+       public void setViewRenderer(View<?> view, RenderingEngine re) {
+               if ( view == null )
+                       throw new NullPointerException("View is null");
+               if ( re == null )
+                       throw new NullPointerException("RenderingEngine is 
null");
+
+               this.view = view;
+               this.re = re;
+       }
+
+       public void setOutputFile(File f) {
+               if ( f == null )
+                       throw new NullPointerException("OutputFile is null");
+               outputFile = f;
+       }
+
+       public CyWriter getWriter() {
+               return new BitmapWriter(view, re, outputFile, 
bitmapFilter.getExtensions() );
+       }
+}

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  
    2010-09-10 20:28:50 UTC (rev 21796)
+++ 
core3/io-impl/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml  
    2010-09-10 20:30:30 UTC (rev 21797)
@@ -33,6 +33,10 @@
                interface="org.cytoscape.io.read.CyTableReaderManager">
        </osgi:service>
 
+       <osgi:service id="viewWriterManagerService" ref="viewWriterManager"
+               interface="org.cytoscape.io.write.ViewWriterManager">
+       </osgi:service>
+
        <osgi:service id="sifNetworkViewReaderFactoryService" 
ref="sifNetworkViewReaderFactory"
                interface="org.cytoscape.io.read.InputStreamTaskFactory">
                <osgi:service-properties>
@@ -61,6 +65,14 @@
                </osgi:service-properties>
        </osgi:service>
 
+       <osgi:service id="pngWriterFactoryService" ref="pngWriterFactory"
+               interface="org.cytoscape.io.write.ViewWriterFactory">
+       </osgi:service>
+
+       <osgi:service id="jpegWriterFactoryService" ref="jpegWriterFactory"
+               interface="org.cytoscape.io.write.ViewWriterFactory">
+       </osgi:service>
+
        <osgi:service id="streamUtilService" ref="streamUtil"
                interface="org.cytoscape.io.util.StreamUtil">
        </osgi:service>
@@ -82,4 +94,12 @@
                               ref="cyDataTableReaderManager" />
        </osgi:set>
 
+       <osgi:set id="viewWriterFactories" 
+                 interface="org.cytoscape.io.write.ViewWriterFactory"
+                 cardinality="0..N">
+               <osgi:listener bind-method="addCyWriterFactory"
+                              unbind-method="removeCyWriterFactory" 
+                              ref="viewWriterManager" />
+       </osgi:set>
+
 </beans>

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   
2010-09-10 20:28:50 UTC (rev 21796)
+++ core3/io-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml   
2010-09-10 20:30:30 UTC (rev 21797)
@@ -16,6 +16,43 @@
 
        <context:annotation-config />
 
+       <bean id="pngFilter" class="org.cytoscape.io.internal.CyFileFilterImpl">
+               <constructor-arg index="0">
+                       <set>
+                               <value>png</value>
+                       </set>
+               </constructor-arg>
+               <constructor-arg index="1">
+                       <set>
+                               <value>image/png</value>
+                       </set>
+               </constructor-arg>
+               <constructor-arg value="Portable Network Graphics (PNG) 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="jpegFilter" 
class="org.cytoscape.io.internal.CyFileFilterImpl">
+               <constructor-arg index="0">
+                       <set>
+                               <value>jpg</value>
+                               <value>jpeg</value>
+                       </set>
+               </constructor-arg>
+               <constructor-arg index="1">
+                       <set>
+                               <value>image/jpeg</value>
+                       </set>
+               </constructor-arg>
+               <constructor-arg value="JPEG Image 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.internal.CyFileFilterImpl">
                <constructor-arg index="0">
                        <set>
@@ -81,13 +118,20 @@
                </constructor-arg>
        </bean>
 
-       <!-- DataTable Readers -->
+       <!-- Utility for Stream/Proxy management -->
+       <bean id="readUtil" class="org.cytoscape.io.internal.util.ReadUtils">
+               <constructor-arg ref="streamUtil" />
+       </bean>
+
+       <bean id="streamUtil" 
class="org.cytoscape.io.internal.util.StreamUtilImpl" />
+
+
+       <!-- Reader Factories -->
        <bean id="textDataTableReaderFactory" 
class="org.cytoscape.io.internal.read.datatable.TextDataTableReaderFactory">
                <constructor-arg ref="textTableFilter" />
                <constructor-arg ref="cyDataTableFactoryServiceRef" />
        </bean>
 
-       <!-- Network Readers -->
        <bean id="sifNetworkViewReaderFactory" 
class="org.cytoscape.io.internal.read.sif.SIFNetworkViewReaderFactory">
                <constructor-arg ref="readUtil" />
                <constructor-arg ref="sifFilter" />
@@ -96,6 +140,13 @@
                <constructor-arg ref="cyNetworkFactoryServiceRef" />
        </bean>
 
+       <!-- Writer Factories -->
+       <bean id="pngWriterFactory" 
class="org.cytoscape.io.internal.write.graphics.BitmapWriterFactory">
+               <constructor-arg ref="pngFilter" />
+       </bean>
+       <bean id="jpegWriterFactory" 
class="org.cytoscape.io.internal.write.graphics.BitmapWriterFactory">
+               <constructor-arg ref="jpegFilter" />
+       </bean>
 
        <!-- Utilities for XGMML Reader -->
        
@@ -132,19 +183,17 @@
                <constructor-arg ref="cyPropertyServiceRef" />
        </bean>
 
-       <!-- Manager for all network readers -->
+       <!-- All Reader Managers -->
        <bean id="cyNetworkViewReaderManager" 
              
class="org.cytoscape.io.internal.read.CyNetworkViewReaderManagerImpl" />
 
-       <!-- Manager for all datatable readers -->
        <bean id="cyDataTableReaderManager" 
              class="org.cytoscape.io.internal.read.CyTableReaderManagerImpl" />
 
-       <!-- Utility for Stream/Proxy management -->
-       <bean id="readUtil" class="org.cytoscape.io.internal.util.ReadUtils">
-               <constructor-arg ref="streamUtil" />
-       </bean>
+       <!-- All Writer Managers -->
 
-       <bean id="streamUtil" 
class="org.cytoscape.io.internal.util.StreamUtilImpl" />
+       <bean id="viewWriterManager" 
+             class="org.cytoscape.io.internal.write.ViewWriterManagerImpl" />
 
+
 </beans>

-- 
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