Revision: 4193
Author:   solomax666
Date:     Sun Sep  4 11:34:15 2011
Log:      - svn revision is added to openmeetings.jar
- sun proprietary JPEGCodec is replaced with javax.imageio
http://code.google.com/p/openmeetings/source/detail?r=4193

Added:
 /trunk/singlewebapp/lib/svntask-1.0.8
 /trunk/singlewebapp/lib/svntask-1.0.8/svnkit.jar
 /trunk/singlewebapp/lib/svntask-1.0.8/svntask.jar
Modified:
 /trunk/singlewebapp/build.xml
/trunk/singlewebapp/src/client/org/openmeetings/client/screen/ClientCaptureScreen.java /trunk/singlewebapp/src/client/org/openmeetings/client/util/ClientRaster.java /trunk/singlewebapp/src/client/org/openmeetings/client/util/ClientRasterByMode.java /trunk/singlewebapp/src/client/org/openmeetings/screen/codec/CaptureScreenByDelta.java /trunk/singlewebapp/src/client/org/openmeetings/screen/codec/CaptureScreenByMode.java /trunk/singlewebapp/src/screenviewer/org/openmeetings/webstart/screen/CaptureScreen.java /trunk/singlewebapp/src/test/org/openmeetings/test/server/TestGZipDeltaPackage.java /trunk/singlewebapp/src/test/org/openmeetings/test/server/TestGZipPackage.java /trunk/singlewebapp/src/test/org/openmeetings/test/server/TestJPEGZipPackage.java /trunk/singlewebapp/src/test/org/openmeetings/test/server/TestPNGZipPackage.java

=======================================
--- /dev/null   
+++ /trunk/singlewebapp/lib/svntask-1.0.8/svnkit.jar Sun Sep 4 11:34:15 2011
File is too large to display a diff.
=======================================
--- /dev/null   
+++ /trunk/singlewebapp/lib/svntask-1.0.8/svntask.jar Sun Sep 4 11:34:15 2011
Binary file, no diff available.
=======================================
--- /trunk/singlewebapp/build.xml       Sun Sep  4 02:15:43 2011
+++ /trunk/singlewebapp/build.xml       Sun Sep  4 11:34:15 2011
@@ -89,6 +89,8 @@
        <property name="java2swf.lib" value="${project.lib}/java2swf" />
        <!-- Junit -->
        <property name="junit.lib" value="${project.lib}/junit" />
+       <!-- Svn Task -->
+       <property name="svntask.lib" value="${project.lib}/svntask-1.0.8"/>

        <!-- screenshare.lib -->
<property name="screenshare.lib" value="${basedir}/WebContent/red5-screenshare" />
@@ -278,7 +280,7 @@
        </target>

        <!-- Compile JAR -->
-       <target name="jar" description="Make Archive" depends="enhance">
+ <target name="jar" description="Make Archive" depends="enhance, current_revision">
                <tstamp prefix="build">
                        <format property="TODAY" pattern="d-MMMM-yyyy" 
locale="en"/>
                </tstamp>
@@ -303,6 +305,7 @@
<attribute name="Built-By" value="OpenMeetings - http://openmeetings.googlecode.com"/>
                                <attribute name="Built-On" 
value="${build.TODAY}"/>
                                <attribute name="Class-Path" value="conf/ 
${jar.classpath}"/>
+                               <attribute name="Svn-Revision" 
value="${svn.version}" />
                        </manifest>
                </jar>
<jar destfile="${dist.dir}/red5/webapps/${project.distname}/screen/screenviewer.jar">
@@ -543,6 +546,19 @@
                <echo message="Enhancing complete."/>
        </target>

+       <target name="current_revision">
+               <typedef resource="com/googlecode/svntask/svntask.xml">
+                       <classpath>
+                               <fileset dir="${svntask.lib}" includes="*.jar"/>
+                       </classpath>
+               </typedef>
+
+               <svn><info path="." revisionProperty="svn.version" /></svn>
+
+               <!-- Display svn revision number -->
+               <echo>Current revision: ${svn.version}</echo>
+       </target>
+
        <!-- Build entire project -->
        <target name="build project" depends="clean, prepare, compile"/>

=======================================
--- /trunk/singlewebapp/src/client/org/openmeetings/client/screen/ClientCaptureScreen.java Sat Nov 21 06:34:35 2009 +++ /trunk/singlewebapp/src/client/org/openmeetings/client/screen/ClientCaptureScreen.java Sun Sep 4 11:34:15 2011
@@ -1,31 +1,17 @@
 package org.openmeetings.client.screen;

-import java.awt.*;
-import java.io.*;
+import java.awt.MouseInfo;
+import java.awt.Point;
+import java.awt.PointerInfo;
 import java.util.Date;
 import java.util.List;

-import java.net.DatagramPacket;
-import java.net.DatagramSocket;
-import java.net.InetAddress;
-import java.net.URLConnection;
-import java.net.URL;
-import java.awt.image.BufferedImage;
-
-import com.sun.image.codec.jpeg.JPEGEncodeParam;
-import com.sun.image.codec.jpeg.JPEGImageEncoder;
-import com.sun.image.codec.jpeg.JPEGCodec;
-import com.sun.media.Log;
-
 import org.apache.log4j.Logger;
 import org.openmeetings.client.beans.ClientConnectionBean;
 import org.openmeetings.client.beans.ClientCursorStatus;
 import org.openmeetings.client.beans.ClientFrameBean;
 import org.openmeetings.client.beans.ClientImageFrame;
-import org.openmeetings.client.beans.ClientVirtualScreenBean;
-import org.openmeetings.client.gui.ClientStartScreen;
 import org.openmeetings.client.transport.ClientTransportMinaPool;
-import org.openmeetings.client.util.ClientPacketizer;
 import org.openmeetings.client.util.ClientRaster;
 import org.openmeetings.client.util.ClientRasterList;

@@ -290,11 +276,21 @@
 //
// log.debug("1 buffer start , end , delta "+this.startDate+" "+endTime+" :timeInSeconds: "+timeInSeconds);
 //
-//                     JPEGImageEncoder encoder = 
JPEGCodec.createJPEGEncoder(out);
-// JPEGEncodeParam encpar = encoder.getDefaultJPEGEncodeParam(imageScreen);
-//                     encpar.setQuality(ClientConnectionBean.imgQuality, 
false);
-//                     encoder.setJPEGEncodeParam(encpar);
-//                     encoder.encode(imageScreen);
+//     // Find a jpeg writer
+//     ImageWriter writer = null;
+//     Iterator<ImageWriter> iter = ImageIO
+//                     .getImageWritersByFormatName("jpg");
+//     if (iter.hasNext()) {
+//             writer = iter.next();
+//     }
+//     writer.setOutput(out);
+//     ImageWriteParam iwparam = new JPEGImageWriteParam(
+//                     Locale.getDefault());
+//     iwparam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
+//     iwparam.setCompressionQuality(imgQuality);
+//
+//     writer.write(null, new IIOImage(imageScreen, null, null),
+//                     iwparam);
 //
 //                     imageScreen.flush();
 //
=======================================
--- /trunk/singlewebapp/src/client/org/openmeetings/client/util/ClientRaster.java Mon Oct 12 02:56:03 2009 +++ /trunk/singlewebapp/src/client/org/openmeetings/client/util/ClientRaster.java Sun Sep 4 11:34:15 2011
@@ -24,13 +24,6 @@
 import org.openmeetings.client.beans.ClientImageFrame;
 import org.openmeetings.client.beans.ClientVirtualScreenBean;

-//import com.sun.imageio.plugins.png.
-
-import com.sun.image.codec.jpeg.JPEGCodec;
-import com.sun.image.codec.jpeg.JPEGEncodeParam;
-import com.sun.image.codec.jpeg.JPEGImageEncoder;
-import com.sun.imageio.plugins.gif.GIFImageWriter;
-
 /**
  * @author sebastianwagner
  *
@@ -111,12 +104,21 @@

 //                                     ByteArrayOutputStream out = new 
ByteArrayOutputStream();
 //
-//                                     JPEGImageEncoder encoder = 
JPEGCodec.createJPEGEncoder(out);
-//                                     JPEGEncodeParam encpar = 
encoder.getDefaultJPEGEncodeParam(image);
-//
-//                                     
encpar.setQuality(ClientConnectionBean.imgQualityDefault, false);
-//                                     encoder.setJPEGEncodeParam(encpar);
-//                                     encoder.encode(image);
+//                                     // Find a jpeg writer
+//                                     ImageWriter writer = null;
+//                                     Iterator<ImageWriter> iter = ImageIO
+//                                                     
.getImageWritersByFormatName("jpg");
+//                                     if (iter.hasNext()) {
+//                                             writer = iter.next();
+//                                     }
+//                                     writer.setOutput(out);
+//                                     ImageWriteParam iwparam = new 
JPEGImageWriteParam(
+//                                                     Locale.getDefault());
+//                                     
iwparam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
+//                                     
iwparam.setCompressionQuality(imgQuality);
+//
+//                                     writer.write(null, new IIOImage(image, 
null, null),
+//                                                     iwparam);

                                        ByteArrayOutputStream out = new 
ByteArrayOutputStream();

=======================================
--- /trunk/singlewebapp/src/client/org/openmeetings/client/util/ClientRasterByMode.java Mon Oct 12 02:56:03 2009 +++ /trunk/singlewebapp/src/client/org/openmeetings/client/util/ClientRasterByMode.java Sun Sep 4 11:34:15 2011
@@ -7,8 +7,10 @@
 import java.awt.Robot;
 import java.awt.image.BufferedImage;
 import java.io.ByteArrayOutputStream;
+import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
+import java.util.Locale;
 import java.util.zip.GZIPOutputStream;

 import org.apache.log4j.Logger;
@@ -16,129 +18,163 @@
 import org.openmeetings.client.beans.ClientImageFrame;
 import org.openmeetings.client.beans.ClientVirtualScreenBean;

-import com.sun.image.codec.jpeg.JPEGCodec;
-import com.sun.image.codec.jpeg.JPEGEncodeParam;
-import com.sun.image.codec.jpeg.JPEGImageEncoder;
+import javax.imageio.*;
+import javax.imageio.plugins.jpeg.JPEGImageWriteParam;
+import static org.openmeetings.client.beans.ClientConnectionBean.imgQuality;

 /**
  * @author sebastianwagner
  *
  *
  *
- * This Raster does additionally check the Screen for updates
- * Plus based on the Mode does only send certain Tiles of the
- * Raster to have a higher grade of
+ * This Raster does additionally check the Screen for updates Plus based
+ *         on the Mode does only send certain Tiles of the Raster to have a
+ *         higher grade of
  *
- *
+ *
  */
 public class ClientRasterByMode {
-
+
        private static Logger log = Logger.getLogger(ClientRasterByMode.class);
-
+
        private static final int tileWidth = 512;
        private static final int tileHeight = 512;
-
+
        public static synchronized List<ClientImageFrame> tileScreen(int mode) {
                try {
-
+
                        int counter = mode;
-
+
List<ClientImageFrame> clientImageFrames = new LinkedList<ClientImageFrame>();
-
- int tileNumberWidth = Double.valueOf(Math.floor(ClientVirtualScreenBean.vScreenSpinnerWidth / tileWidth)).intValue(); - int tileNumberHeight = Double.valueOf(Math.floor(ClientVirtualScreenBean.vScreenSpinnerHeight / tileHeight)).intValue();
-
+
+                       int tileNumberWidth = Double.valueOf(
+                                       
Math.floor(ClientVirtualScreenBean.vScreenSpinnerWidth
+                                                       / 
tileWidth)).intValue();
+                       int tileNumberHeight = Double.valueOf(
+                                       
Math.floor(ClientVirtualScreenBean.vScreenSpinnerHeight
+                                                       / 
tileHeight)).intValue();
+
                        int xOffset = ClientVirtualScreenBean.vScreenSpinnerX;
                        int yOffset = ClientVirtualScreenBean.vScreenSpinnerY;
-
- log.debug("tileNumberWidth,tileNumberHeight "+tileNumberWidth+","+tileNumberHeight);
-                       log.debug("xOffset,yOffset "+xOffset+","+yOffset);
-
+
+                       log.debug("tileNumberWidth,tileNumberHeight " + 
tileNumberWidth
+                                       + "," + tileNumberHeight);
+                       log.debug("xOffset,yOffset " + xOffset + "," + yOffset);
+
                        Robot robot = ClientVirtualScreenBean.robot;
-                       if (robot==null) robot = new Robot();
- Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
-
-                       for (int x=0;x<=tileNumberWidth;x++) {
-
-                               for (int y=0;y<=tileNumberHeight;y++) {
-
-                                       //We send only every 4th item
+                       if (robot == null)
+                               robot = new Robot();
+                       Dimension screenSize = 
java.awt.Toolkit.getDefaultToolkit()
+                                       .getScreenSize();
+
+                       for (int x = 0; x <= tileNumberWidth; x++) {
+
+                               for (int y = 0; y <= tileNumberHeight; y++) {
+
+                                       // We send only every 4th item
                                        int modulo = counter % 4;
-
+
                                        if (modulo == 0) {
-
-                                               int rect_x = xOffset + ( x * 
tileWidth );
-                                               int rect_y = yOffset + ( y * 
tileHeight );
-
- log.debug("rect_x,rect_y,tileWidth,tileHeight "+rect_x+","+rect_y+","+tileWidth+","+tileHeight);
-
+
+                                               int rect_x = xOffset + (x * 
tileWidth);
+                                               int rect_y = yOffset + (y * 
tileHeight);
+
+                                               
log.debug("rect_x,rect_y,tileWidth,tileHeight "
+                                                               + rect_x + "," + rect_y + 
"," + tileWidth + ","
+                                                               + tileHeight);
+
                                                int rectWidth = tileWidth;
                                                int rectHeight = tileHeight;
-
+
                                                if (rect_x + rectWidth > 
screenSize.width) {
                                                        rectWidth = 
screenSize.width - rect_x;
                                                }
                                                if (rect_y + rectHeight > 
screenSize.height) {
                                                        rectHeight = 
screenSize.height - rect_y;
                                                }
-
- Rectangle screenRectangle = new Rectangle(rect_x,rect_y,rectWidth,rectHeight);
-
- Rectangle shrinkedRectAngle = new Rectangle(Math.round(rect_x * ClientConnectionBean.imgQuality) , Math.round(rect_y * ClientConnectionBean.imgQuality), - Math.round(rectWidth * ClientConnectionBean.imgQuality), Math.round(rectHeight * ClientConnectionBean.imgQuality));
-
- BufferedImage imageScreen = robot.createScreenCapture(screenRectangle);
-
- Image img = imageScreen.getScaledInstance(Double.valueOf(tileWidth * ClientConnectionBean.imgQuality).intValue(), Double.valueOf(tileHeight * ClientConnectionBean.imgQuality).intValue() ,Image.SCALE_SMOOTH); - BufferedImage image = new BufferedImage(Double.valueOf(tileWidth * ClientConnectionBean.imgQuality).intValue(), Double.valueOf(tileHeight * ClientConnectionBean.imgQuality).intValue(),BufferedImage.TYPE_INT_RGB);
+
+                                               Rectangle screenRectangle = new 
Rectangle(rect_x,
+                                                               rect_y, 
rectWidth, rectHeight);
+
+                                               Rectangle shrinkedRectAngle = 
new Rectangle(
+                                                               
Math.round(rect_x * imgQuality),
+                                                               
Math.round(rect_y * imgQuality),
+                                                               
Math.round(rectWidth * imgQuality),
+                                                               
Math.round(rectHeight * imgQuality));
+
+                                               BufferedImage imageScreen = 
robot
+                                                               
.createScreenCapture(screenRectangle);
+
+                                               Image img = 
imageScreen.getScaledInstance(Double
+                                                               
.valueOf(tileWidth * imgQuality).intValue(),
+                                                               
Double.valueOf(tileHeight * imgQuality)
+                                                                               
.intValue(), Image.SCALE_SMOOTH);
+                                               BufferedImage image = new 
BufferedImage(Double.valueOf(
+                                                               tileWidth * 
imgQuality).intValue(), Double
+                                                               
.valueOf(tileHeight * imgQuality).intValue(),
+                                                               
BufferedImage.TYPE_INT_RGB);
                                                Graphics2D biContext = 
image.createGraphics();
                                                biContext.drawImage(img, 0, 0, 
null);
-
+
                                                ByteArrayOutputStream out = new 
ByteArrayOutputStream();
-
-                                               JPEGImageEncoder encoder = 
JPEGCodec.createJPEGEncoder(out);
-                                               JPEGEncodeParam encpar = 
encoder.getDefaultJPEGEncodeParam(image);
-                                               
encpar.setQuality(ClientConnectionBean.imgQuality, false);
-                                               
encoder.setJPEGEncodeParam(encpar);
-                                               encoder.encode(image);
-
+
+                                               // Find a jpeg writer
+                                               ImageWriter writer = null;
+                                               Iterator<ImageWriter> iter = 
ImageIO
+                                                               
.getImageWritersByFormatName("jpg");
+                                               if (iter.hasNext()) {
+                                                       writer = iter.next();
+                                               }
+                                               writer.setOutput(out);
+                                               ImageWriteParam iwparam = new 
JPEGImageWriteParam(
+                                                               
Locale.getDefault());
+                                               
iwparam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
+                                               
iwparam.setCompressionQuality(imgQuality);
+
+                                               writer.write(null, new 
IIOImage(image, null, null),
+                                                               iwparam);
+
                                                imageScreen.flush();
-
+
                                                byte[] payload = 
out.toByteArray();
-
-                                               //GZip
+
+                                               // GZip
                                                ByteArrayOutputStream 
byteGzipOut = new ByteArrayOutputStream();
-                                       GZIPOutputStream gZipOut = new 
GZIPOutputStream(byteGzipOut);
-
-                                       gZipOut.write(payload);
-                                       gZipOut.close();
-
-                                       log.debug("byteGzipOut LENGTH 
"+byteGzipOut.toByteArray().length);
-                                               log.debug("payload LENGTH 
"+payload.length);
-
-                                               log.debug("TILE x,y 
"+shrinkedRectAngle.x+" "+shrinkedRectAngle.y);
-
- clientImageFrames.add(new ClientImageFrame(shrinkedRectAngle,byteGzipOut.toByteArray()));
-
+                                               GZIPOutputStream gZipOut = new 
GZIPOutputStream(
+                                                               byteGzipOut);
+
+                                               gZipOut.write(payload);
+                                               gZipOut.close();
+
+                                               log.debug("byteGzipOut LENGTH "
+                                                               + 
byteGzipOut.toByteArray().length);
+                                               log.debug("payload LENGTH " + 
payload.length);
+
+                                               log.debug("TILE x,y " + 
shrinkedRectAngle.x + " "
+                                                               + 
shrinkedRectAngle.y);
+
+                                               clientImageFrames.add(new 
ClientImageFrame(
+                                                               
shrinkedRectAngle, byteGzipOut.toByteArray()));
+
                                                image.flush();
-                                       img.flush();
+                                               img.flush();
                                                byteGzipOut.flush();
                                                gZipOut.flush();
-
-                                       }
-
+
+                                       }
+
                                        counter++;
-
-                               }
-
-                       }
-
+
+                               }
+
+                       }
+
                        return clientImageFrames;
-
+
                } catch (Exception err) {
-                       log.error("[checkFrame]",err);
+                       log.error("[checkFrame]", err);
                }
                return null;
        }
-
-}
+
+}
=======================================
--- /trunk/singlewebapp/src/client/org/openmeetings/screen/codec/CaptureScreenByDelta.java Mon Oct 12 02:56:03 2009 +++ /trunk/singlewebapp/src/client/org/openmeetings/screen/codec/CaptureScreenByDelta.java Sun Sep 4 11:34:15 2011
@@ -1,24 +1,13 @@
 package org.openmeetings.screen.codec;

-import java.awt.Graphics;
-import java.awt.Graphics2D;
 import java.awt.image.BufferedImage;
-import java.io.ByteArrayOutputStream;
 import java.util.LinkedList;
 import java.util.List;
-import java.util.zip.GZIPOutputStream;

 import org.apache.log4j.Logger;
-import org.openmeetings.client.beans.ClientConnectionBean;
-import org.openmeetings.client.beans.ClientFrameBean;
-import org.openmeetings.client.transport.ClientTransportMinaPool;
 import org.openmeetings.screen.codec.beans.ClientFrameBuffer;
 import org.openmeetings.screen.codec.beans.ClientImageFrameModus;

-import com.sun.image.codec.jpeg.JPEGCodec;
-import com.sun.image.codec.jpeg.JPEGEncodeParam;
-import com.sun.image.codec.jpeg.JPEGImageEncoder;
-
 public class CaptureScreenByDelta {

        private static Logger log = 
Logger.getLogger(CaptureScreenByDelta.class);
@@ -211,12 +200,21 @@
 //             try {
 //                     ByteArrayOutputStream out = new ByteArrayOutputStream();
 //
-//                     JPEGImageEncoder encoder = 
JPEGCodec.createJPEGEncoder(out);
-// JPEGEncodeParam encpar = encoder.getDefaultJPEGEncodeParam(clientImageFrameModus.getImage());
-//
-//                     encpar.setQuality(quality, false);
-//                     encoder.setJPEGEncodeParam(encpar);
-//                     encoder.encode(clientImageFrameModus.getImage());
+//     // Find a jpeg writer
+//     ImageWriter writer = null;
+//     Iterator<ImageWriter> iter = ImageIO
+//                     .getImageWritersByFormatName("jpg");
+//     if (iter.hasNext()) {
+//             writer = iter.next();
+//     }
+//     writer.setOutput(out);
+//     ImageWriteParam iwparam = new JPEGImageWriteParam(
+//                     Locale.getDefault());
+//     iwparam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
+//     iwparam.setCompressionQuality(imgQuality);
+//
+// writer.write(null, new IIOImage(clientImageFrameModus.getImage(), null, null),
+//                     iwparam);
 //
 //                     byte[] payload = out.toByteArray();
 //
=======================================
--- /trunk/singlewebapp/src/client/org/openmeetings/screen/codec/CaptureScreenByMode.java Mon Oct 12 02:56:03 2009 +++ /trunk/singlewebapp/src/client/org/openmeetings/screen/codec/CaptureScreenByMode.java Sun Sep 4 11:34:15 2011
@@ -1,22 +1,11 @@
 package org.openmeetings.screen.codec;

-import java.awt.Graphics;
-import java.awt.Graphics2D;
-import java.awt.Image;
 import java.awt.image.BufferedImage;
 import java.io.ByteArrayOutputStream;
 import java.util.LinkedList;
 import java.util.List;
-import java.util.Locale;
 import java.util.zip.GZIPOutputStream;

-import javax.imageio.IIOImage;
-import javax.imageio.ImageIO;
-import javax.imageio.ImageWriteParam;
-import javax.imageio.ImageWriter;
-import javax.imageio.plugins.jpeg.JPEGImageWriteParam;
-import javax.imageio.stream.ImageOutputStream;
-
 import org.apache.log4j.Logger;
 import org.openmeetings.client.beans.ClientConnectionBean;
 import org.openmeetings.client.beans.ClientFrameBean;
@@ -24,10 +13,6 @@
 import org.openmeetings.screen.codec.beans.ClientFrameBuffer;
 import org.openmeetings.screen.codec.beans.ClientImageFrameModus;

-import com.sun.image.codec.jpeg.JPEGCodec;
-import com.sun.image.codec.jpeg.JPEGEncodeParam;
-import com.sun.image.codec.jpeg.JPEGImageEncoder;
-
 public class CaptureScreenByMode {

        private static Logger log = Logger.getLogger(CaptureScreenByMode.class);
=======================================
--- /trunk/singlewebapp/src/screenviewer/org/openmeetings/webstart/screen/CaptureScreen.java Mon Oct 12 02:56:03 2009 +++ /trunk/singlewebapp/src/screenviewer/org/openmeetings/webstart/screen/CaptureScreen.java Sun Sep 4 11:34:15 2011
@@ -1,36 +1,53 @@
 package org.openmeetings.webstart.screen;

-import java.awt.*;
-import java.io.*;
-import java.util.Date;
-
-import java.net.URLConnection;
-import java.net.URL;
+import static org.openmeetings.webstart.beans.ConnectionBean.imgQuality;
+
+import java.awt.Graphics2D;
+import java.awt.Image;
+import java.awt.Rectangle;
+import java.awt.Robot;
 import java.awt.image.BufferedImage;
-
-import com.sun.image.codec.jpeg.JPEGEncodeParam;
-import com.sun.image.codec.jpeg.JPEGImageEncoder;
-import com.sun.image.codec.jpeg.JPEGCodec;
+import java.io.BufferedReader;
+import java.io.ByteArrayOutputStream;
+import java.io.DataOutputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.URL;
+import java.net.URLConnection;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.Locale;
+
+import javax.imageio.IIOImage;
+import javax.imageio.ImageIO;
+import javax.imageio.ImageWriteParam;
+import javax.imageio.ImageWriter;
+import javax.imageio.plugins.jpeg.JPEGImageWriteParam;

 import org.openmeetings.webstart.beans.ConnectionBean;
 import org.openmeetings.webstart.beans.VirtualScreenBean;
 import org.openmeetings.webstart.gui.StartScreen;

 public class CaptureScreen {
-
+
        private Date startDate;

        public static void main(String[] args) {
- new CaptureScreen("http://192.168.2.103:5080/xmlcrm/ScreenServlet","2010","1","public","","";);
+               new 
CaptureScreen("http://192.168.2.103:5080/xmlcrm/ScreenServlet";,
+                               "2010", "1", "public", "", "");
        }

- public CaptureScreen(String url, String SID, String room, String domain, String publicSID, String record) {
+       public CaptureScreen(String url, String SID, String room, String domain,
+                       String publicSID, String record) {
                try {
                        System.err.println("captureScreenStart");
                        this.startDate = new Date();
- //StartScreen.instance.showBandwidthWarning("capture publicSID: "+publicSID); + // StartScreen.instance.showBandwidthWarning("capture publicSID: "+publicSID);
                        ConnectionBean.isloading = true;
- this.captureScreen(url+"?sid="+SID+"&room="+room+"&domain="+domain+"&publicSID="+publicSID+"&record="+record,"myscreenRemote.jpg");
+                       this.captureScreen(url + "?sid=" + SID + "&room=" + room
+                                       + "&domain=" + domain + "&publicSID=" + 
publicSID
+                                       + "&record=" + record, 
"myscreenRemote.jpg");
                } catch (Exception io) {
                        System.err.println(io);
                        System.out.println(io);
@@ -39,7 +56,7 @@
        }

        public void captureScreen(String url, String fileName) throws Exception 
{
-
+
                this.sendJpegToUrl(this.bufferImage(), url, fileName);

        }
@@ -48,64 +65,84 @@
                try {

                        ByteArrayOutputStream out = new ByteArrayOutputStream();
-
+
                        Rectangle screenRectangle = new Rectangle(
-                                       
VirtualScreenBean.vScreenSpinnerX,VirtualScreenBean.vScreenSpinnerY,
- VirtualScreenBean.vScreenSpinnerWidth,VirtualScreenBean.vScreenSpinnerHeight);
+                                       VirtualScreenBean.vScreenSpinnerX,
+                                       VirtualScreenBean.vScreenSpinnerY,
+                                       VirtualScreenBean.vScreenSpinnerWidth,
+                                       VirtualScreenBean.vScreenSpinnerHeight);
                        Robot robot = VirtualScreenBean.robot;
-                       if (robot==null) robot = new Robot();
- //StartScreen.instance.showBandwidthWarning("capture "+(new java.util.Date())+" and "+screenRectangle);
-
-                       BufferedImage imageScreen = 
robot.createScreenCapture(screenRectangle);
-
-                       //Scale the image ro reduce size
-
+                       if (robot == null)
+                               robot = new Robot();
+                       // StartScreen.instance.showBandwidthWarning("capture  
"+(new
+                       // java.util.Date())+" and "+screenRectangle);
+
+                       BufferedImage imageScreen = robot
+                                       .createScreenCapture(screenRectangle);
+
+                       // Scale the image ro reduce size
+
                        double width = imageScreen.getWidth();
                        double height = imageScreen.getHeight();
-
+
                        Date endTime = new Date();
-                       long timeInSeconds = 
(endTime.getTime()-this.startDate.getTime())/1000;
-
- System.out.println("1 buffer start , end , delta "+this.startDate+" "+endTime+" :timeInSeconds: "+timeInSeconds);
-
+ long timeInSeconds = (endTime.getTime() - this.startDate.getTime()) / 1000;
+
+                       System.out.println("1 buffer start , end , delta " + 
this.startDate
+                                       + " " + endTime + " :timeInSeconds: " + 
timeInSeconds);

                        double thumbWidth = 600;
                        double thumbHeight = 600;
                        BufferedImage image = null;
                        Image img = null;

-                               double div = width / thumbWidth;
-
-                               System.out.println(" height:"+height+" width: 
"+width);
-                               height = height / div;
-                               System.out.println("div: "+div+" 
newheight:"+height);
-
-                               if (height>thumbHeight){
-                                       double divHeight = height / thumbHeight;
-                                       thumbWidth = thumbWidth/divHeight;
-                                       height = thumbHeight;
-                               }
-
-                               System.out.println("final height:"+height+" width: 
"+thumbWidth);
-
- img = imageScreen.getScaledInstance(Double.valueOf(thumbWidth).intValue(), Double.valueOf(height).intValue() ,Image.SCALE_SMOOTH); - image = new BufferedImage(Double.valueOf(thumbWidth).intValue(), Double.valueOf(height).intValue(),BufferedImage.TYPE_INT_RGB);
-                               Graphics2D biContext = image.createGraphics();
-                               biContext.drawImage(img, 0, 0, null);
-
-
-                       JPEGImageEncoder encoder = 
JPEGCodec.createJPEGEncoder(out);
-                       JPEGEncodeParam encpar = 
encoder.getDefaultJPEGEncodeParam(image);
-                       encpar.setQuality(ConnectionBean.imgQuality, false);
-                       encoder.setJPEGEncodeParam(encpar);
-                       encoder.encode(image);
-
+                       double div = width / thumbWidth;
+
+                       System.out.println(" height:" + height + " width: " + 
width);
+                       height = height / div;
+                       System.out.println("div: " + div + " newheight:" + 
height);
+
+                       if (height > thumbHeight) {
+                               double divHeight = height / thumbHeight;
+                               thumbWidth = thumbWidth / divHeight;
+                               height = thumbHeight;
+                       }
+
+                       System.out.println("final height:" + height + " width: "
+                                       + thumbWidth);
+
+                       img = 
imageScreen.getScaledInstance(Double.valueOf(thumbWidth)
+                                       .intValue(), 
Double.valueOf(height).intValue(),
+                                       Image.SCALE_SMOOTH);
+                       image = new 
BufferedImage(Double.valueOf(thumbWidth).intValue(),
+                                       Double.valueOf(height).intValue(),
+                                       BufferedImage.TYPE_INT_RGB);
+                       Graphics2D biContext = image.createGraphics();
+                       biContext.drawImage(img, 0, 0, null);
+
+                       // Find a jpeg writer
+                       ImageWriter writer = null;
+                       Iterator<ImageWriter> iter = ImageIO
+                                       .getImageWritersByFormatName("jpg");
+                       if (iter.hasNext()) {
+                               writer = iter.next();
+                       }
+                       writer.setOutput(out);
+                       ImageWriteParam iwparam = new JPEGImageWriteParam(
+                                       Locale.getDefault());
+                       
iwparam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
+                       iwparam.setCompressionQuality(imgQuality);
+
+                       writer.write(null, new IIOImage(image, null, null), 
iwparam);
+
                        imageScreen.flush();
                        image.flush();
-                       if (img!=null)img.flush();
-
- //StartScreen.instance.showBandwidthWarning("capture Date and Size: "+(new java.util.Date())+" and "+out.size());
-
+                       if (img != null)
+                               img.flush();
+
+ // StartScreen.instance.showBandwidthWarning("capture Date and Size: "+(new
+                       // java.util.Date())+" and "+out.size());
+
                        return out.toByteArray();

                } catch (FileNotFoundException e) {
@@ -120,17 +157,17 @@
                }
                return null;
        }
-
+
public void sendJpegToUrl(byte[] imageAsBytes, String url, String fileName) {
                try {
-
-                       System.out.println("sendJpegToUrl url  "+url);
+
+                       System.out.println("sendJpegToUrl url  " + url);
                        Date endTime = new Date();
-                       long timeInSeconds = 
(endTime.getTime()-this.startDate.getTime())/1000;
-
- System.out.println("2 scaled , end , delta "+this.startDate+" "+endTime+" :timeInSeconds: "+timeInSeconds);
-
-
+ long timeInSeconds = (endTime.getTime() - this.startDate.getTime()) / 1000;
+
+                       System.out.println("2  scaled , end , delta " + 
this.startDate
+                                       + " " + endTime + " :timeInSeconds: " + 
timeInSeconds);
+
                        URL u = new URL(url);
                        URLConnection c = u.openConnection();

@@ -140,30 +177,34 @@
                        c.setUseCaches(false);

                        // set request headers
- c.setRequestProperty("Content-Type","multipart/form-data; boundary=AXi93A");
+                       c.setRequestProperty("Content-Type",
+                                       "multipart/form-data; boundary=AXi93A");

                        // open a stream which can write to the url
                        DataOutputStream dstream = new 
DataOutputStream(c.getOutputStream());

- // write content to the server, begin with the tag that says a content element is comming
+                       // write content to the server, begin with the tag that 
says a
+                       // content element is comming
                        dstream.writeBytes("--AXi93A\r\n");

                        // discribe the content
- dstream.writeBytes("Content-Disposition: form-data; name=\"Filedata\"; filename=\""+fileName+"\" \r\nContent-Type: image/jpeg\r\nContent-Transfer-Encoding: binary\r\n"); + dstream.writeBytes("Content-Disposition: form-data; name=\"Filedata\"; filename=\""
+                                       + fileName
+ + "\" \r\nContent-Type: image/jpeg\r\nContent-Transfer-Encoding: binary\r\n");
                        dstream.write(imageAsBytes, 0, imageAsBytes.length);

                        // close the multipart form request
                        dstream.writeBytes("\r\n--AXi93A--\r\n\r\n");
                        dstream.flush();
                        dstream.close();
-
+
                        System.out.println("sendJpegToUrl complete ");
-
+
                        StartScreen.instance.showBandwidthWarning("send complete 
");
-
-                   // read the output from the URL
-                       DataInputStream in = new DataInputStream(
-                                       new 
BufferedInputStream(c.getInputStream()));
+
+                       // read the output from the URL
+                       BufferedReader in = new BufferedReader(new 
InputStreamReader(
+                                       c.getInputStream()));
                        String sIn = in.readLine();
                        while (sIn != null) {
                                if (sIn != null) {
@@ -171,18 +212,21 @@
                                }
                                sIn += in.readLine();
                        }
-
-                       StartScreen.instance.showBandwidthWarning("Input Stream: 
"+sIn);
+
+                       StartScreen.instance.showBandwidthWarning("Input Stream: 
" + sIn);

                        Date endTime2 = new Date();
- long timeInSeconds2 = (endTime2.getTime()-this.startDate.getTime())/1000;
-
- System.out.println("3 send start , end , delta "+this.startDate+" "+endTime2+" :timeInSeconds: "+timeInSeconds2);
-
+                       long timeInSeconds2 = (endTime2.getTime() - 
this.startDate
+                                       .getTime()) / 1000;
+
+                       System.out.println("3 send start , end , delta " + 
this.startDate
+                                       + " " + endTime2 + " :timeInSeconds: " 
+ timeInSeconds2);
+
                        ConnectionBean.isloading = false;

                } catch (Exception e) {
-                       StartScreen.instance.showBandwidthWarning("Exception: 
"+e.getMessage());
+                       StartScreen.instance.showBandwidthWarning("Exception: "
+                                       + e.getMessage());
                        e.printStackTrace();
                }
        }
=======================================
--- /trunk/singlewebapp/src/test/org/openmeetings/test/server/TestGZipDeltaPackage.java Mon Aug 15 11:47:14 2011 +++ /trunk/singlewebapp/src/test/org/openmeetings/test/server/TestGZipDeltaPackage.java Sun Sep 4 11:34:15 2011
@@ -1,5 +1,7 @@
 package org.openmeetings.test.server;

+import static org.openmeetings.client.beans.ClientConnectionBean.imgQuality;
+
 import java.awt.Graphics2D;
 import java.awt.Image;
 import java.awt.Rectangle;
@@ -7,6 +9,14 @@
 import java.awt.image.BufferedImage;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
+import java.util.Iterator;
+import java.util.Locale;
+
+import javax.imageio.IIOImage;
+import javax.imageio.ImageIO;
+import javax.imageio.ImageWriteParam;
+import javax.imageio.ImageWriter;
+import javax.imageio.plugins.jpeg.JPEGImageWriteParam;

 import junit.framework.TestCase;

@@ -15,9 +25,7 @@
 import org.openmeetings.client.beans.ClientConnectionBean;

 import com.sun.image.codec.jpeg.JPEGCodec;
-import com.sun.image.codec.jpeg.JPEGEncodeParam;
 import com.sun.image.codec.jpeg.JPEGImageDecoder;
-import com.sun.image.codec.jpeg.JPEGImageEncoder;

 /**
  * @author sebastianwagner
@@ -56,12 +64,21 @@

                        ByteArrayOutputStream out = new ByteArrayOutputStream();

-                       JPEGImageEncoder encoder = 
JPEGCodec.createJPEGEncoder(out);
-                       JPEGEncodeParam encpar = 
encoder.getDefaultJPEGEncodeParam(image);
-
-                       encpar.setQuality(ClientConnectionBean.imgQuality, 
false);
-                       encoder.setJPEGEncodeParam(encpar);
-                       encoder.encode(image);
+                       // Find a jpeg writer
+                       ImageWriter writer = null;
+                       Iterator<ImageWriter> iter = ImageIO
+                                       .getImageWritersByFormatName("jpg");
+                       if (iter.hasNext()) {
+                               writer = iter.next();
+                       }
+                       writer.setOutput(out);
+                       ImageWriteParam iwparam = new JPEGImageWriteParam(
+                                       Locale.getDefault());
+                       
iwparam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
+                       iwparam.setCompressionQuality(imgQuality);
+
+                       writer.write(null, new IIOImage(image, null, null),
+                                       iwparam);

                        imageScreen.flush();

=======================================
--- /trunk/singlewebapp/src/test/org/openmeetings/test/server/TestGZipPackage.java Mon Aug 15 11:47:14 2011 +++ /trunk/singlewebapp/src/test/org/openmeetings/test/server/TestGZipPackage.java Sun Sep 4 11:34:15 2011
@@ -1,5 +1,7 @@
 package org.openmeetings.test.server;

+import static org.openmeetings.client.beans.ClientConnectionBean.imgQuality;
+
 import java.awt.Graphics2D;
 import java.awt.Image;
 import java.awt.Rectangle;
@@ -8,19 +10,23 @@
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.FileOutputStream;
+import java.util.Iterator;
+import java.util.Locale;
 import java.util.zip.GZIPInputStream;
 import java.util.zip.GZIPOutputStream;

+import javax.imageio.IIOImage;
+import javax.imageio.ImageIO;
+import javax.imageio.ImageWriteParam;
+import javax.imageio.ImageWriter;
+import javax.imageio.plugins.jpeg.JPEGImageWriteParam;
+
 import junit.framework.TestCase;

 import org.apache.log4j.Logger;
 import org.junit.Test;
 import org.openmeetings.client.beans.ClientConnectionBean;

-import com.sun.image.codec.jpeg.JPEGCodec;
-import com.sun.image.codec.jpeg.JPEGEncodeParam;
-import com.sun.image.codec.jpeg.JPEGImageEncoder;
-
 /**
  * @author sebastianwagner
  *
@@ -58,12 +64,21 @@

                        ByteArrayOutputStream out = new ByteArrayOutputStream();

-                       JPEGImageEncoder encoder = 
JPEGCodec.createJPEGEncoder(out);
-                       JPEGEncodeParam encpar = 
encoder.getDefaultJPEGEncodeParam(image);
-
-                       encpar.setQuality(ClientConnectionBean.imgQuality, 
false);
-                       encoder.setJPEGEncodeParam(encpar);
-                       encoder.encode(image);
+                       // Find a jpeg writer
+                       ImageWriter writer = null;
+                       Iterator<ImageWriter> iter = ImageIO
+                                       .getImageWritersByFormatName("jpg");
+                       if (iter.hasNext()) {
+                               writer = iter.next();
+                       }
+                       writer.setOutput(out);
+                       ImageWriteParam iwparam = new JPEGImageWriteParam(
+                                       Locale.getDefault());
+                       
iwparam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
+                       iwparam.setCompressionQuality(imgQuality);
+
+                       writer.write(null, new IIOImage(image, null, null),
+                                       iwparam);

                        imageScreen.flush();

=======================================
--- /trunk/singlewebapp/src/test/org/openmeetings/test/server/TestJPEGZipPackage.java Mon Aug 15 11:47:14 2011 +++ /trunk/singlewebapp/src/test/org/openmeetings/test/server/TestJPEGZipPackage.java Sun Sep 4 11:34:15 2011
@@ -1,23 +1,28 @@
 package org.openmeetings.test.server;

+import static org.openmeetings.client.beans.ClientConnectionBean.imgQuality;
+
 import java.awt.Rectangle;
 import java.awt.Robot;
 import java.awt.image.BufferedImage;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.FileOutputStream;
+import java.util.Iterator;
+import java.util.Locale;
 import java.util.zip.GZIPInputStream;
 import java.util.zip.GZIPOutputStream;

+import javax.imageio.IIOImage;
+import javax.imageio.ImageIO;
+import javax.imageio.ImageWriteParam;
+import javax.imageio.ImageWriter;
+import javax.imageio.plugins.jpeg.JPEGImageWriteParam;
+
 import junit.framework.TestCase;

 import org.apache.log4j.Logger;
 import org.junit.Test;
-import org.openmeetings.client.beans.ClientConnectionBean;
-
-import com.sun.image.codec.jpeg.JPEGCodec;
-import com.sun.image.codec.jpeg.JPEGEncodeParam;
-import com.sun.image.codec.jpeg.JPEGImageEncoder;

 /**
  * @author sebastianwagner
@@ -42,11 +47,21 @@

                        //PNGEncoder

-                       JPEGImageEncoder encoder = 
JPEGCodec.createJPEGEncoder(out);
-                       JPEGEncodeParam encpar = 
encoder.getDefaultJPEGEncodeParam(imageScreen);
-                       encpar.setQuality(ClientConnectionBean.imgQuality, 
false);
-                       encoder.setJPEGEncodeParam(encpar);
-                       encoder.encode(imageScreen);
+                       // Find a jpeg writer
+                       ImageWriter writer = null;
+                       Iterator<ImageWriter> iter = ImageIO
+                                       .getImageWritersByFormatName("jpg");
+                       if (iter.hasNext()) {
+                               writer = iter.next();
+                       }
+                       writer.setOutput(out);
+                       ImageWriteParam iwparam = new JPEGImageWriteParam(
+                                       Locale.getDefault());
+                       
iwparam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
+                       iwparam.setCompressionQuality(imgQuality);
+
+                       writer.write(null, new IIOImage(imageScreen, null, 
null),
+                                       iwparam);

                        imageScreen.flush();

=======================================
--- /trunk/singlewebapp/src/test/org/openmeetings/test/server/TestPNGZipPackage.java Mon Aug 15 11:47:14 2011 +++ /trunk/singlewebapp/src/test/org/openmeetings/test/server/TestPNGZipPackage.java Sun Sep 4 11:34:15 2011
@@ -1,23 +1,28 @@
 package org.openmeetings.test.server;

+import static org.openmeetings.client.beans.ClientConnectionBean.imgQuality;
+
 import java.awt.Rectangle;
 import java.awt.Robot;
 import java.awt.image.BufferedImage;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.FileOutputStream;
+import java.util.Iterator;
+import java.util.Locale;
 import java.util.zip.GZIPInputStream;
 import java.util.zip.GZIPOutputStream;

+import javax.imageio.IIOImage;
+import javax.imageio.ImageIO;
+import javax.imageio.ImageWriteParam;
+import javax.imageio.ImageWriter;
+import javax.imageio.plugins.jpeg.JPEGImageWriteParam;
+
 import junit.framework.TestCase;

 import org.apache.log4j.Logger;
 import org.junit.Test;
-import org.openmeetings.client.beans.ClientConnectionBean;
-
-import com.sun.image.codec.jpeg.JPEGCodec;
-import com.sun.image.codec.jpeg.JPEGEncodeParam;
-import com.sun.image.codec.jpeg.JPEGImageEncoder;

 /**
  * @author sebastianwagner
@@ -42,11 +47,21 @@

                        //PNGEncoder

-                       JPEGImageEncoder encoder = 
JPEGCodec.createJPEGEncoder(out);
-                       JPEGEncodeParam encpar = 
encoder.getDefaultJPEGEncodeParam(imageScreen);
-                       encpar.setQuality(ClientConnectionBean.imgQuality, 
false);
-                       encoder.setJPEGEncodeParam(encpar);
-                       encoder.encode(imageScreen);
+                       // Find a jpeg writer
+                       ImageWriter writer = null;
+                       Iterator<ImageWriter> iter = ImageIO
+                                       .getImageWritersByFormatName("jpg");
+                       if (iter.hasNext()) {
+                               writer = iter.next();
+                       }
+                       writer.setOutput(out);
+                       ImageWriteParam iwparam = new JPEGImageWriteParam(
+                                       Locale.getDefault());
+                       
iwparam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
+                       iwparam.setCompressionQuality(imgQuality);
+
+                       writer.write(null, new IIOImage(imageScreen, null, 
null),
+                                       iwparam);

                        imageScreen.flush();

--
You received this message because you are subscribed to the Google Groups 
"OpenMeetings developers" 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/openmeetings-dev?hl=en.

Reply via email to