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.